- if_exists(iplog,iplogs,iplog->l>=total/4)\r
- {\r
- fprintf(f,"%s<td>Top 25%% of traffic</td>\n", tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><td align=\"right\">%d %%</td><td align=\"right\">%ld G</td><td align=\"right\">%d %%</td></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
- \r
- if_exists(iplog,iplogs,iplog->i==10)\r
- {\r
- fprintf(f,"%s<td>Top 10 downloaders</td>\n", tr_odd_even());\r
- fprintf(f,"<th align=\"right\">10</th><td align=\"right\">%d %%</td><td align=\"right\">%ld G</td><td align=\"right\">%d %%</td></tr>\n",(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- if_exists(iplog,iplogs,iplog->l>=total/2)\r
- {\r
- fprintf(f,"%s<td>Top 50%% of traffic</td>\n", tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><td align=\"right\">%d %%</td><td align=\"right\">%ld G</td><th align=\"right\">%d %%</th></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- if_exists(iplog,iplogs,iplog->l>=4*total/5)\r
- {\r
- fprintf(f,"%s<td>Top 80%% of traffic</td>\n",tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><td align=\"right\">%d %%</td><td align=\"right\">%ld G</td><th align=\"right\">%d %%</th></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- if_exists (iplog,iplogs,iplog->i>=i/5)\r
- {\r
- fprintf(f,"%s<td>Top 20%% downloaders</td>\n",tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><th align=\"right\">%d %%</th><td align=\"right\">%ld G</td><td align=\"right\">%d %%</td></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- if_exists(iplog,iplogs,iplog->i>=i/4)\r
- {\r
- fprintf(f,"%s<td>Top 25%% downloaders</td>\n", tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><td align=\"right\">%d %%</td><td align=\"right\">%ld G</td><td align=\"right\">%d %%</td></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- if_exists(iplog,iplogs,iplog->i>=i/2)\r
- {\r
- fprintf(f,"%s<td>Top 50%% downloaders</td>\n",tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><th align=\"right\">%d %%</th><td align=\"right\">%ld G</td><td align=\"right\">%d %%</td></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- if_exists(iplog,iplogs,iplog->i>=4*i/5)\r
- {\r
- fprintf(f,"%s<td>Top 80%% downloaders</td>\n",tr_odd_even());\r
- fprintf(f,"<td align=\"right\">%d</td><td align=\"right\">%d %%</td><td align=\"right\">%ld G</td><td align=\"right\">%d %%</td></tr>\n",iplog->i,(100*iplog->i+50)/i,iplog->l,(int)((100*iplog->l+50)/total));\r
- }\r
-\r
- fprintf(f,"<tr class=\"bgGrey\"><td>All users, all traffic</td>\n");\r
- fprintf(f,"<th align=\"right\">%d</th><th align=\"right\">100 %%</th><th align=\"right\">%ld G</th><th align=\"right\">100 %%</th></tr>\n",i-1,total);\r
- fputs("</tbody></table>\n", f);\r
- }\r
-\r
- fprintf(f, stats_html_signature, version);\r
- fclose(f);\r
- puts(" done.");\r
- }\r
-}\r
-\r
-/*-----------------------------------------------------------------*/\r
-/* Are you looking for int main(int argc, char **argv) ? :-)) */\r
-/*-----------------------------------------------------------------*/\r
-\r
-program\r
-{\r
- int i=0;\r
- FILE *f=NULL;\r
- char *str, *ptr, *d;\r
- char *substring;\r
- int class_count=0,ip_count=0;\r
- int parent=1;\r
- int just_flush=FALSE;\r
- int nodelay=FALSE;\r
- int just_preview=FALSE; /* preview - generate just stats */\r
- int just_logs=FALSE; /* just parse logs */\r
- int run=FALSE;\r
- int total=0;\r
- \r
- char *chain_forward, *chain_postrouting;\r
- char *althosts=NULL;\r
- \r
- printf("\n\\r
-Prometheus QoS - \"fair-per-IP\" Quality of Service setup utility.\n\\r
-Version %s - Copyright (C)2005-2012 Michael Polak (xChaos)\n\\r
-iptables-restore & burst tunning & classify modification by Ludva\n\\r
-Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);\r
-\r
- /*----- Boring... we have to check command line options first: ----*/\r
- \r
- arguments\r
- {\r
- argument("-c") { nextargument(config); }\r
- argument("-h") { nextargument(althosts);}\r
- argument("-d") { run=TRUE; dry_run=TRUE; }\r
- argument("-f") { run=TRUE; just_flush=TRUE; }\r
- argument("-9") { run=TRUE; just_flush=9; }\r
- argument("-p") { run=TRUE; just_preview=TRUE; }\r
- argument("-r") { run=TRUE; }\r
- argument("-n") { run=TRUE; nodelay=TRUE; }\r
- argument("-l") { just_logs=TRUE; }\r
- argument("-m") { just_logs=TRUE; }\r
- argument("-y") { just_logs=TRUE; }\r
- argument("-?") { help(); exit(0); }\r
- argument("--help") { help(); exit(0); }\r
- argument("-v") { exit(0); } \r
- argument("--version") { exit(0); } \r
- }\r
- \r
- if(dry_run)\r
- {\r
- puts("*** THIS IS JUST DRY RUN ! ***\n");\r
- }\r
-\r
- date(d); /* this is typical cll1.h macro - prints current date */\r