]> git.ipfire.org Git - thirdparty/sarg.git/blobdiff - auth.c
Remove the line number from a message
[thirdparty/sarg.git] / auth.c
diff --git a/auth.c b/auth.c
index ab16a40e2da8a011cd11ef82b95318f347741b9d..5a5481415ff159caf1efafb24961e385a63e16c4 100644 (file)
--- a/auth.c
+++ b/auth.c
@@ -1,10 +1,11 @@
 /*
- * AUTHOR: Pedro Lineu Orso                         pedro.orso@gmail.com
- *                                                            1998, 2008
  * SARG Squid Analysis Report Generator      http://sarg.sourceforge.net
+ *                                                            1998, 2010
  *
  * SARG donations:
  *      please look at http://sarg.sourceforge.net/donations.php
+ * Support:
+ *     http://sourceforge.net/projects/sarg/forums/forum/363374
  * ---------------------------------------------------------------------
  *
  *  This program is free software; you can redistribute it and/or modify
 #include "include/conf.h"
 #include "include/defs.h"
 
-void htaccess(const char *name)
+void htaccess(const struct userinfostruct *uinfo)
 {
    char htname[MAXLEN];
+   char line[MAXLEN];
+   FILE *fp_in;
    FILE *fp_auth;
-   struct getwordstruct gwarea;
+   size_t i,nread;
 
    if(!UserAuthentication)
       return;
 
-   sprintf(htname,"%s/%s/.htaccess",dirname,name);
+   if (snprintf(htname,sizeof(htname),"%s/%s/.htaccess",outdirname,uinfo->filename)>=sizeof(htname)) {
+      debuga(_("File name too long: %s/%s/.htaccess\n"),outdirname,uinfo->filename);
+      exit(EXIT_FAILURE);
+   }
    if((fp_auth=fopen(htname,"w"))==NULL) {
-      fprintf(stderr, "SARG: (auth) %s: %s\n",text[45],htname);
-      exit(1);
+      debuga(_("(auth) Cannot open file: %s - %s\n"),htname,strerror(errno));
+      exit(EXIT_FAILURE);
    }
 
-   getword_start(&gwarea,Require);
-   if (getword(buf,sizeof(buf),&gwarea,'%')<0) {
-      printf("SARG: The \"Require\" entry of your sarg.conf file is too long for your %s file.\n",htname);
-      exit(1);
+   if ((fp_in=fopen(AuthUserTemplateFile,"r"))==NULL) {
+      debuga(_("(auth) Cannot open template file: %s - %s\n"),AuthUserTemplateFile,strerror(errno));
+      exit(EXIT_FAILURE);
    }
-   fputs("AuthUserFile ",fp_auth);
-   fputs(AuthUserFile,fp_auth);
-   fputs("\n",fp_auth);
-   fputs("AuthName ",fp_auth);
-   if(strchr(AuthName,'\"') == 0)
-      fputs("\"",fp_auth);
-   fputs(AuthName,fp_auth);
-   if(strchr(AuthName,'\"') == 0)
-      fputs("\"",fp_auth);
-   fputs("\n",fp_auth);
-   fputs("AuthType ",fp_auth);
-   fputs(AuthType,fp_auth);
-   fputs("\n<Limit GET POST>\n",fp_auth);
-   fputs(buf,fp_auth);
-   fputs(name,fp_auth);
-   fputs("\n</LIMIT>\n",fp_auth);
 
+   while((nread=fread(line,1,sizeof(line),fp_in))!=0) {
+      for (i=0 ; i<nread ; i++)
+         if (line[i]=='%' && i+2<nread && line[i+1]=='u' && !isalpha(line[i+2])) {
+            fputs(uinfo->id,fp_auth);
+            i++;
+         } else {
+            fputc(line[i],fp_auth);
+      }
+   }
    fclose(fp_auth);
+   fclose(fp_in);
 
    return;
 }