home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / index.c < prev    next >
Text File  |  2002-10-11  |  5KB  |  137 lines

  1. /*
  2.  * sarg - Squid user management log
  3.  * Mar/98 - Pedro L Orso - orso@onda.com.br
  4.  */
  5.  
  6. #include "include/conf.h"
  7.  
  8. #if !defined(__OS2__)
  9.   #define SORTINDEX
  10. #endif
  11.  
  12. #ifdef SORTINDEX
  13. #include <dirent.h>
  14. #include <sys/stat.h>
  15. static char dir[PATH_MAX];
  16. int timesort(const struct dirent **d1, const struct dirent **d2)
  17. {
  18.    struct stat f1, f2 ;
  19.    char fp1[PATH_MAX], fp2[PATH_MAX];
  20.    strcpy(fp1, dir) ; strcat( fp1, "/" ) ; strcat( fp1, (*d1)->d_name ) ;
  21.    strcpy(fp2, dir) ; strcat( fp2, "/" ) ; strcat( fp2, (*d2)->d_name ) ;
  22.    stat( fp1, &f1 ) ;
  23.    stat( fp2, &f2 ) ;
  24. // printf( "%s %d    %s %d\n",
  25. //    (*d1)->d_name,f1.st_mtime,
  26. //    (*d2)->d_name,f2.st_mtime ) ;
  27.    if ( f1.st_mtime == f2.st_mtime ) return 0 ;
  28.    if ( f1.st_mtime <  f2.st_mtime ) return -1 ;
  29.    return 1 ;
  30. }
  31. #endif // SORTINDEX
  32.  
  33.  
  34. void geraindex(char *dirname, int debug, char *BgColor, char *TxColor, char *TxBgColor, char *TiColor, char *LogoImage, char *LogoText, char *LogoTextColor, char *Width, char *Height, char *Title, char *BgImage, char *FontFace, char *HeaderColor, char *HeaderBgColor, char *FontSize, char *TempDir, char *DateFormat, const char *periodo)
  35. {
  36.  
  37.    FILE *fp_ou;
  38.    DIR *dirp;
  39. #ifdef SORTINDEX
  40.    struct dirent **namelist;
  41.    int ne,i ;
  42. #endif
  43.    struct dirent *direntp;
  44.    char html[MAXLEN];
  45.    char wdir[MAXLEN];
  46.    char data[80];
  47.    char tuser[20];
  48.    char tbytes[20];
  49.    char media[20];
  50.    char ftime[128];
  51.  
  52.    if(LastLog[0] != '\0')
  53.       mklastlog(dirname,debug);
  54.  
  55.    sprintf(wdir,"%sindex.html",dirname);
  56.  
  57.    if(strcmp(Index,"no") == 0) {
  58.       if(access(wdir, R_OK) == 0)
  59.          unlink(wdir);
  60.       return;
  61.    }
  62.  
  63.    if(debug)
  64.       debuga(text[53]);
  65.  
  66.    if((fp_ou=fopen(wdir,"w"))==NULL) {
  67.       fprintf(stderr, "SARG: (index) %s: %s\n",text[45],wdir);
  68.       exit(1);
  69.    }
  70.  
  71.    fputs("<html>\n",fp_ou);
  72.    fputs("<head>\n",fp_ou);
  73.    sprintf(html,"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
  74.    fputs(html,fp_ou);
  75.    fputs("</head>\n",fp_ou);
  76.  
  77.    // DAS: Using style=font-family more corresponds to standards. 
  78.    sprintf(html,"<body bgcolor=%s text=%s background='%s' style='font-family:%s;'>\n",BgColor,TxColor,BgImage,FontFace);
  79.    fputs(html,fp_ou);
  80.    fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
  81.  
  82.    if(strlen(LogoImage) > 0) {
  83.       sprintf(html,"<tr><th align=left><img src='%s' border=0 align=absmiddle width=%s height=%s><font color=%s>%s</font>\n",LogoImage,Width,Height,LogoTextColor,LogoText);
  84.       fputs(html,fp_ou);
  85.    }
  86.  
  87.    sprintf(html,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
  88.    fputs(html,fp_ou);
  89.  
  90.    fputs("</table></center>\n",fp_ou);
  91.    fputs("<center><table cellpadding=1 cellspacing=1>\n",fp_ou);
  92.    fputs("<tr><td></td><td></td></tr>",fp_ou);
  93.  
  94.  
  95.    sprintf(html,"<tr><th bgcolor=%s><font size=%s color=%s>%s</font></th><th bgcolor=%s><font size=%s color=%s>%s</font></th><th bgcolor=%s><font size=%s color=%s>%s</font></th><th bgcolor=%s><font size=%s color=%s>%s</font></th><th bgcolor=%s><font size=%s color=%s>%s</font></th></tr>\n",HeaderBgColor,FontSize,HeaderColor,text[101],HeaderBgColor,FontSize,HeaderColor,text[102],HeaderBgColor,FontSize,HeaderColor,text[103],HeaderBgColor,FontSize,HeaderColor,text[93],HeaderBgColor,FontSize,HeaderColor,text[96]);
  96.    fputs(html,fp_ou);
  97.  
  98. #ifdef SORTINDEX
  99.    strcpy(dir, dirname);
  100.    ne = scandir(dirname, &namelist, 0, (int)timesort);
  101.    i = 0 ;
  102.    while(i<ne) {
  103.       direntp = namelist[i++] ;
  104. #else
  105.    dirp = opendir(dirname);
  106.  
  107.    while ( (direntp = readdir( dirp )) != NULL ){
  108. #endif
  109.       if(strstr(direntp->d_name,"-") == 0)
  110.          continue;
  111.  
  112.       obtdate(dirname,direntp->d_name,data);
  113.       obtuser(dirname,direntp->d_name,tuser);
  114.       obttotal(dirname,direntp->d_name,tbytes,tuser,media);
  115.  
  116.       sprintf(html,"<tr><td bgcolor=%s><font size=%s><a href='%s/%s'>%s</a></font></a></td><td bgcolor=%s><font size=%s>%s</font></td><td align=right bgcolor=%s><font size=%s>%s</font></td><td align=right bgcolor=%s><font size=%s>%s</font></td><td align=right bgcolor=%s><font size=%s>%s</font></td></tr>\n",TxBgColor,FontSize,direntp->d_name,ReplaceIndex,direntp->d_name,TxBgColor,FontSize,data,TxBgColor,FontSize,tuser,TxBgColor,FontSize,tbytes,TxBgColor,FontSize,media);
  117.       fputs(html,fp_ou);
  118.    }
  119.  
  120. #ifndef SORTINDEX
  121.    (void)closedir( dirp );
  122. #endif
  123.  
  124.    strcpy(html,"</table></center>");
  125.    fputs(html,fp_ou);
  126.  
  127.    zdate(ftime, DateFormat);
  128.  
  129.    sprintf(html,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",text[108],URL,PGM,VERSION,text[109],ftime);
  130.    fputs(html,fp_ou);
  131.  
  132.    strcpy(html,"</html>\n");
  133.    fputs(html,fp_ou);
  134.  
  135.    return;
  136. }
  137.