X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=prometheus.c;h=b290bf70d5977f521a8fb19fb5465c2f13c55b4a;hb=32c1649d2a23c7838890b2eb9f46b21295b56f04;hp=f158e3257dd5a9a8bbdf084f93ef80449d8971ca;hpb=60a8251d24edd7db28a2490a5cbc8bc98d305eed;p=svn%2FPrometheus-QoS%2F.git diff --git a/prometheus.c b/prometheus.c index f158e32..b290bf7 100644 --- a/prometheus.c +++ b/prometheus.c @@ -7,7 +7,7 @@ /* Credit: CZFree.Net,Martin Devera,Netdave,Aquarius,Gandalf */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -/* Modified by: xChaos, 20110428 +/* Modified by: xChaos, 20111130 ludva, 20080415 Prometheus QoS is free software; you can redistribute it and/or @@ -33,7 +33,7 @@ #include "cll1-0.6.2.h" -const char *version = "0.8.3"; +const char *version = "0.8.3-b"; /* Version numbers: 0.8.3 is development releases ("beta"), 0.8.4 will be "stable" */ /* Debian(RPM) package versions/patchlevels: 0.7.9-2, 0.8.0-1, 0.8.0-2, etc. */ @@ -620,7 +620,7 @@ void save_line(char *line) void run_restore(void) { - char *restor, *str; + char *restor; string(restor,STRLEN); /*-----------------------------------------------------------------*/ @@ -867,7 +867,7 @@ void parse_ip_log(int argc, char **argv) if(i>10) { - fputs("

\n",f); + fputs("

Enterprise Research and Planning (ERP)
\n",f); fputs("\n",f); fputs("\n",f); @@ -947,6 +947,7 @@ program int just_preview=FALSE; /* preview - generate just stats */ int just_logs=FALSE; /* just parse logs */ int run=FALSE; + int total=0; char *chain_forward, *chain_postrouting; char *althosts=NULL; @@ -1502,7 +1503,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); if(f) { - int total=0; + int count=1; i=0; @@ -1510,6 +1511,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); printf("Sorting data and generating statistics page %s ...\n",ptr); /*-----------------------------------------------------------------*/ + fputs("\n",f); fputs("
Enterprise Resource Planning (ERP)
Analytic categoryActive ClassesData transfers
\n\n",f); fprintf(f,"\n",keywordcount); fputs("\n",f); @@ -1524,7 +1526,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); for_each(keyword,keywords) { - fprintf(f,"",keyword->html_color,group->min*keyword->data_limit); + fprintf(f,"",keyword->html_color,group->min*keyword->data_limit); } i+=group->desired; total+=group->count; @@ -1551,13 +1553,14 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); i=1; if(f) { - unsigned long long total=0, total_direct=0, total_proxy=0, total_upload=0, tmp_sum=0; + unsigned long long total_traffic=0, total_direct=0, total_proxy=0, total_upload=0, tmp_sum=0; int active_classes=0; - int colspan; + int colspan=11; FILE *iplog; struct Sum {unsigned long long l; int i; list(Sum);} *sum,*sums=NULL; + int limit_count=0, prio_count=0; + int popup_button=0; - colspan=11; if(qos_proxy) { colspan++; @@ -1593,19 +1596,38 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); char *f1="", *f2=""; if(ip->maxdesired) { - f1=""; - f2=""; + f1=""; + f2=""; + limit_count++; } else if(ip->prio>highest_priority+1) { - f1=""; - f2=""; + f1=""; + f2=""; + prio_count++; } #ifdef DEBUG printf("%03d. %-22s %10Lu (%d/%d)\n",i ,ip->name, ip->traffic, ip->min, ip->max); #endif - fprintf(f,"\n", ip->name, i, log_url, ip->name, ip->name); + /* hostnames -------------------------------------- */ + fprintf(f,"\n",f); + /* ----------------------------------------------- */ + if(found_lmsid) { fputs("\n",f); + fputs("\n",f); } fprintf(f,"\n", ip->credit); - fprintf(f,"", - ip->keyword->html_color, ip->credit+(ip->min*ip->keyword->data_limit+(ip->keyword->fixed_limit<<20))); - fprintf(f,"\n", f1, ip->traffic, f2, ip->direct); + fprintf(f,"", + ip->keyword->html_color, + ip->credit+(ip->min*ip->keyword->data_limit+(ip->keyword->fixed_limit<<20))); + fprintf(f,"\n",f); + /* ----------------------------------------------- */ + if(qos_proxy) { fprintf(f,"\n", ip->proxy); } - fprintf(f,"\n", ip->upload); + /* upload ---------------------------------------- */ + fprintf(f,"\n",f); + /* ----------------------------------------------- */ + fprintf(f,"\n", ip->min,ip->desired,f1,ip->max,f2,f1,ip->prio,f2); - total+=ip->traffic; + total_traffic+=ip->traffic; total_direct+=ip->direct; total_proxy+=ip->proxy; total_upload+=ip->upload; @@ -1658,17 +1701,15 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); fclose(iplog); } } - } fprintf(f,"\ - \n", total, total_direct); + fprintf(f,"\n", total_traffic, total_direct); if(qos_proxy) { fprintf(f,"\n", total_proxy); } fprintf(f,"", total_upload); - fputs("\n
#groupIPsrequesteddata limits
%d M%d M
%d%s
%d%s\n", ip->name, i, log_url, ip->name, ip->name); + fprintf(f,"",i); + popup_button=0; + for_selected(sharedip,ips,eq(ip->name,sharedip->sharing)) + { + fprintf(f,"
%s\n", log_url, sharedip->name, sharedip->name); + popup_button=1; + } + fputs("
\n",f); + if(popup_button) + { + fprintf(f,"[+]", + i, i, i); + } + fputs("
",f); @@ -1618,20 +1640,41 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); { fputs("-------",f); } - fputs("%Lu M%Lu M%s%Lu M%s%Lu M%Lu M%s%Lu M%s",f1, ip->traffic, f2); + + /* download --------------------------------------- */ + fprintf(f,"%Lu M", ip->direct); + fprintf(f,"",i); + for_selected(sharedip,ips,eq(ip->name,sharedip->sharing)) + { + fprintf(f,"
%Lu M", sharedip->direct); + } + fputs("
%Lu M%Lu M%Lu M", ip->upload); + fprintf(f,"",i); + for_selected(sharedip,ips,eq(ip->name,sharedip->sharing)) + { + fprintf(f,"
%Lu M", sharedip->upload); + } + fputs("
%d k%d k%s%d k%s%s%d%s
SUMMARY:",colspan-7); - fprintf(f,"%Lu M%Lu M%Lu M%Lu M%Lu M%Lu M
\n",f); + fprintf(f,"FUP-LIMIT %dx LOW-PRIO %dx\n\n",limit_count,prio_count); if(active_classes>10) { @@ -1676,32 +1717,32 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); long long top20_perc2=0; unsigned long long top20_sum=0l; - fputs("

\n",f); + fputs("

Enterprise Research and Planning (ERP)
\n",f); fputs("\n",f); fputs("\n",f); - if_exists(sum,sums,sum->l>=total/4) + if_exists(sum,sums,sum->l>=total_traffic/4) { fprintf(f,"\n"); - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } if_exists(sum,sums,sum->i==10) { fprintf(f,"\n"); - fprintf(f,"\n",(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } - if_exists(sum,sums,sum->l>=total/2) + if_exists(sum,sums,sum->l>=total_traffic/2) { fprintf(f,"\n"); - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } - if_exists(sum,sums,sum->l>=4*total/5) + if_exists(sum,sums,sum->l>=4*total_traffic/5) { fprintf(f,"\n"); - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } if_exists(sum,sums,sum->i>=(active_classes+1)/5) @@ -1710,41 +1751,42 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); top20_count=sum->i; top20_perc1=(100*sum->i+50)/active_classes; top20_sum=sum->l; - top20_perc2=(100*sum->l+50)/total; + top20_perc2=(100*sum->l+50)/total_traffic; fprintf(f,"\n",top20_count,top20_perc1,top20_sum,top20_perc2); } if_exists(sum,sums,sum->i>=(active_classes+1)/4) { fprintf(f,"\n"); - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } if_exists(sum,sums,sum->i>=(active_classes+1)/2) { fprintf(f,"\n"); - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } if_exists(sum,sums,sum->i>=4*(active_classes+1)/5) { fprintf(f,"\n"); - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total_traffic); } - fprintf(f,"\n"); - fprintf(f,"\n",active_classes,total); + fprintf(f,"\n", log_url); + fprintf(f,"\n",active_classes,total_traffic); fputs("
Enterprise Resource Planning (ERP)
Analytic categoryActive ClassesData transfers
Top 25%% of traffic%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
Top 10 downloaders10%d %%%Lu M%Ld %%
10%d %%%Lu M%Ld %%
Top 50%% of traffic%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
Top 80%% of traffic%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
Top 25%% downloaders%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
Top 50%% downloaders%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
Top 80%% downloaders%d%d %%%Lu M%Ld %%
%d%d %%%Lu M%Ld %%
All users, all traffic%d100 %%%Lu M100 %%
All users, all traffic%d100 %%%Lu M100 %%
\n", f); - /*write basic ERP data to log directory*/ + /* write basic ERP data to log directory */ if(!just_preview) { sprintf(str,"%s/ERP.log",log_dir); iplog=fopen(str,"a"); if(iplog) { - fprintf(iplog,"%ld\t%d\t%d %%\t%Lu\t%Ld %%\t%d\t%Lu\t%s", - time(NULL), top20_count, top20_perc1, top20_sum, top20_perc2, active_classes, total, d); /* d = date*/ + fprintf(iplog,"%ld\t%d\t%d %%\t%Lu M\t%Ld %%\tACTIVE %d\tTRAFFIC %Lu M\tCLASSES %d\tFUP-LIMIT %d\tLOW-PRIO %d\t%s", + time(NULL), top20_count, top20_perc1, top20_sum, top20_perc2, + active_classes, total_traffic, total, limit_count, prio_count, d); /* d = date*/ fclose(iplog); } }