~spm/awffull/awffull-trunk

« back to all changes in this revision

Viewing changes to src/awffull.c

  • Committer: Steve McInerney
  • Date: 2009-08-18 11:07:55 UTC
  • mfrom: (419.2.6 AWFFull_3.10.2)
  • Revision ID: steve@stedee.id.au-20090818110755-awwn1swbeebxcdqa
o Resolve minor conflict in awffull.c
o Revert change to webalizer.README
  - that's the original, deliberately left as is

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
char *get_domain(char *);                       /* return domain name  */
51
51
char *our_gzgets(gzFile, char *, int);          /* our gzgets          */
52
52
int do_agent_mangling(char *);
 
53
int do_referrer_mangling(char *);
53
54
void option_checks(void);                       /* Various early checks */
54
55
void *process_log_line(void *);
55
56
bool isaffirmitive(char *);                     /* Is the passed in string == to Y | y | N | n | Yes or No
956
957
        "segcountry",                           /* Segmenting by Country      136 */
957
958
        "segreferer",                           /* Segmenting by Referer      137 */
958
959
        "ignoreindexalias"                      /* Ignore Index Alias Settings 138 */
 
960
        "manglereferrers",                      /* Mangle Referrers         139   */
959
961
    };
960
962
    FILE *fp;
961
963
 
1488
1490
        case 138:
1489
1491
            g_settings.flags.ignore_index_alias = isaffirmitive(value);
1490
1492
            break;                              /* IgnoreIndexAlias      */
 
1493
        case 139:
 
1494
            g_settings.settings.mangle_referrer = atoi(value);
 
1495
            break;                              /* MangleReferrers       */
1491
1496
        }
1492
1497
    }
1493
1498
    if ((page_type != NULL) && (not_page_type != NULL)) {
2113
2118
}
2114
2119
 
2115
2120
 
 
2121
/******************************************************************************
 
2122
 * do_referrer_mangling                                                       *
 
2123
 *                                                                            *
 
2124
 * Tries to reduce a complex Referrer string down to a simpler level.         *
 
2125
 *                                                                            *
 
2126
 * Arguments:                                                                 *
 
2127
 * char *referrer The Referrer to reduce. This function will "mangle" this!   *
 
2128
 *                                                                            *
 
2129
 * Returns:                                                                   *
 
2130
 * int. 0 on Success.                                                         *
 
2131
 *                                                                            *
 
2132
 * TODO: Return something else if fails!                                      *
 
2133
 * TODO: Do this nicer in PCRE or equiv.                                      *
 
2134
 ******************************************************************************/
 
2135
int
 
2136
do_referrer_mangling(char *referrer)
 
2137
{
 
2138
    char *cp1, *cp2;                            /* generic char pointers       */
 
2139
    int count = 0;
 
2140
 
 
2141
                cp1 = strchr(referrer,'/');
 
2142
                if (cp1 != NULL) {
 
2143
                        while (*cp1) {
 
2144
                                if (*cp1 == '/') {
 
2145
                                        count++;
 
2146
                                        cp2 = cp1;
 
2147
                                        if (count == (g_settings.settings.mangle_referrer + 2)) break;
 
2148
                                } /* if */
 
2149
                                cp1++;
 
2150
                        } /* while */
 
2151
                } /* if */
 
2152
 
 
2153
                if (count && count >= (g_settings.settings.mangle_referrer + 2)) {
 
2154
                        referrer[strlen(referrer) - strlen(cp2)] = '\0';
 
2155
                } /* if */
 
2156
 
 
2157
                return (0);
 
2158
}
 
2159
 
 
2160
 
2116
2161
/************************************************************************
2117
2162
 * response_code_index                                                  *
2118
2163
 *                                                                      *
2396
2441
 
2397
2442
    *refer_query = '\0';
2398
2443
 
 
2444
    /* Do we need to mangle? */
 
2445
    if (g_settings.settings.mangle_referrer) {
 
2446
        do_referrer_mangling(refer);
 
2447
    }
 
2448
 
2399
2449
    /* fix referrer field */
2400
2450
    cp1 = refer;
2401
2451
    cp2 = refer;