void htmlrel(void)
{
- DIR *dirp;
FILE *fp_in, *fp_ou, *fp_ip, *fp_ip2, *fp_usr;
- struct dirent *direntp;
long long int nnbytes=0, unbytes=0, tnbytes=0, totbytes=0, totbytes2=0;
long long int totelap=0, totelap2=0, nnelap=0, unelap=0, tnelap=0;
long long int incache=0, oucache=0, tnincache=0, tnoucache=0, twork=0;
char *buf;
char arqin[MAXLEN], arqou[MAXLEN], arqper[MAXLEN], arqip[MAXLEN];
char *url, tmsg[50], csort[MAXLEN];
- char user[MAXLEN], duser[MAXLEN];
+ char duser[MAXLEN];
char user_ip[MAXLEN], olduserip[MAXLEN], tmp2[MAXLEN], tmp3[MAXLEN];
- char denied_report[255];
- char *str;
char warea[MAXLEN];
char totuser[8];
char tmp6[MAXLEN];
double perc=0, perc2=0, ouperc=0, inperc=0;
int count;
int cstatus;
- const char txtext[]=".txt";
+ int have_denied_report;
const char *sort_field;
const char *sort_order;
- int dlen;
+ const char *user;
char siteind[MAX_TRUNCATED_URL];
struct getwordstruct gwarea;
longline line,line1;
struct generalitemstruct item;
const struct userinfostruct *uinfo;
+ userscan uscan;
if((ReportType & REPORT_TYPE_USERS_SITES) == 0) return;
sort_labels(&sort_field,&sort_order);
- if ((dirp = opendir(tmp)) == NULL) {
- debuga(_("Failed to open directory %s - %s\n"),tmp,strerror(errno));
+ uscan=userinfo_startscan();
+ if (uscan == NULL) {
+ debuga(_("Cannot enumerate the user list\n"));
exit(EXIT_FAILURE);
}
- while ( (direntp = readdir( dirp )) != NULL ) {
- dlen=strlen(direntp->d_name)-(sizeof(txtext)-1);
- if (dlen<0) continue;
- if(strcmp(direntp->d_name+dlen,txtext) != 0)
- continue;
-
- count=1;
- if (dlen>0) {
- if (dlen>=sizeof(user)) continue;
- strncpy(user,direntp->d_name,dlen);
- user[dlen]=0;
- } else {
- user[0]=0;
- }
-
- uinfo=userinfo_find_from_file(user);
- if (!uinfo) {
- debuga(_("Unknown user ID %s in directory %s\n"),user,tmp);
- exit(EXIT_FAILURE);
- }
- str=strrchr(user,'.');
- if (str)
- strcpy(denied_report,str+1);
- else
- strcpy(denied_report,user);
+ while ( (uinfo = userinfo_advancescan(uscan)) != NULL ) {
+ user=uinfo->filename;
if (snprintf(warea,sizeof(warea),"%s/%s",outdirname,user)>=sizeof(warea)) {
debuga(_("Destination directory too long: %s/%s\n"),outdirname,user);
report_day(uinfo);
greport_day(uinfo);
- if (snprintf(arqin,sizeof(arqin),"%s/%s",tmp,direntp->d_name)>=sizeof(arqin)) {
- debuga(_("Input file name too long: %s/%s\n"),tmp,direntp->d_name);
+ if (snprintf(arqin,sizeof(arqin),"%s/%s.txt",tmp,uinfo->filename)>=sizeof(arqin)) {
+ debuga(_("Input file name too long: %s/%s.txt\n"),tmp,uinfo->filename);
+ exit(EXIT_FAILURE);
+ }
+ if ((fp_in = fopen(arqin, "r")) == 0){
+ if (uinfo->no_report) continue;
+ debuga(_("(html3) Cannot open file %s\n"),arqin);
exit(EXIT_FAILURE);
}
+
if (snprintf(arqou,sizeof(arqou),"%s/%s/%s.html",outdirname,uinfo->filename,uinfo->filename)>=sizeof(arqou)) {
debuga(_("Output file name too long: %s/%s/%s.html\n"),outdirname,uinfo->filename,uinfo->filename);
exit(EXIT_FAILURE);
}
- if (snprintf(duser,sizeof(duser),"%s/%s/denied_%s.html",tmp,direntp->d_name,denied_report)>=sizeof(duser)) {
- debuga(_("File name too long: %s/%s/denied_%s.html\n"),tmp,direntp->d_name,denied_report);
+ if (snprintf(duser,sizeof(duser),"%s/%s/denied_%s.html",tmp,uinfo->filename,uinfo->filename)>=sizeof(duser)) {
+ debuga(_("File name too long: %s/%s/denied_%s.html\n"),tmp,uinfo->filename,uinfo->filename);
exit(EXIT_FAILURE);
}
if(access(duser, R_OK) != 0)
- denied_report[0]='\0';
-
- if ((fp_in = fopen(arqin, "r")) == 0){
- debuga(_("(html3) Cannot open file %s\n"),arqin);
- exit(EXIT_FAILURE);
- }
+ have_denied_report=0;
+ else
+ have_denied_report=1;
if ((line=longline_create())==NULL) {
debuga(_("Not enough memory to read file %s\n"),arqin);
/*! \bug This line lays before the header of the table and is therefore invalid
HTML. It will also break the sorttable script. Beside, I suspect it serves no purpose.
*/
- if(denied_report[0]!='\0') {
- fprintf(fp_ou,"<tr><td class=\"header_l\" colspan=\"11\"><a href=\"denied_%s.html\">%s</a> %s</td></tr>\n",denied_report,_("SmartFilter"),_("Report"));
+ if(have_denied_report) {
+ fprintf(fp_ou,"<tr><td class=\"header_l\" colspan=\"11\"><a href=\"denied_%s.html\">%s</a> %s</td></tr>\n",uinfo->filename,_("SmartFilter"),_("Report"));
}
fputs("<thead><tr><th class=\"sorttable_nosort\"></th><th class=\"header_l",fp_ou);
htaccess(uinfo);
}
- (void)closedir(dirp);
+ userinfo_stopscan(uscan);
greport_cleanup();
return;