--- output.c.orig 2013-02-26 05:37:27 UTC +++ output.c @@ -54,7 +54,7 @@ #endif #ifdef USE_GEOIP -#include +#include #endif #include "webalizer.h" /* main header */ @@ -992,6 +992,20 @@ int all_sites_page(u_int64_t h_reg, u_in hptr=*pointer++; if (hptr->flag == OBJ_REG) { +#ifdef USE_CLICKABLE_REFERER + if (strstr(hptr->string,"://")!=NULL) + fprintf(out_fp, + "%-8llu %6.02f%% %8llu %6.02f%% %8.0f %6.02f%% " \ + "%8llu %6.02f%% %s\n", + hptr->count, + (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files, + (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024, + (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit, + (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0, + hptr->string, + hptr->string); + else +#endif fprintf(out_fp, "%-8llu %6.02f%% %8llu %6.02f%% %8.0f %6.02f%% " \ "%8llu %6.02f%% %s\n", @@ -1948,7 +1962,7 @@ void top_ctry_table() #ifdef USE_GEOIP extern int geoip; - extern GeoIP *geo_fp; + extern MMDB_s mmdb; const char *geo_rc=NULL; #endif char geo_ctry[3]="--"; @@ -1981,19 +1995,26 @@ void top_ctry_table() if (geoip) { /* Lookup IP address here, turn into idx */ - geo_rc=GeoIP_country_code_by_addr(geo_fp, hptr->string); - if (geo_rc==NULL||geo_rc[0]=='\0'||geo_rc[0]=='-') + MMDB_lookup_result_s result; + MMDB_entry_data_s entry_data; + int gai_error, mmdb_error, rc; + result=MMDB_lookup_string(&mmdb, hptr->string, &gai_error, &mmdb_error); + if (gai_error!=0||mmdb_error!=MMDB_SUCCESS||!result.found_entry) { if (debug_mode) fprintf(stderr,"GeoIP: %s unknown (returns '%s')\n", - hptr->string,(geo_rc==NULL)?"null":geo_rc); + hptr->string,MMDB_strerror(mmdb_error)); } else { - /* index returned geo_ctry */ - geo_ctry[0]=tolower(geo_rc[0]); - geo_ctry[1]=tolower(geo_rc[1]); - idx=ctry_idx(geo_ctry); + rc = MMDB_get_value(&result.entry, &entry_data, "country", "iso_code", NULL); + if (rc==MMDB_SUCCESS&&entry_data.has_data) + { + /* index returned geo_ctry */ + geo_ctry[0]=tolower(entry_data.utf8_string[0]); + geo_ctry[1]=tolower(entry_data.utf8_string[1]); + idx=ctry_idx(geo_ctry); + } } } #endif /* USE_GEOIP */