X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=prometheus.c;h=282e0db069f0d2c2a60ab29db60fc985d7244802;hb=ab85aff7bf367a49bb28e3e2be0abfbc7c7a0363;hp=96ce79705ebeaa45515dc191dab14a6399832f03;hpb=5def4ce39f6eec34acb8c333068da837bb28311b;p=svn%2FPrometheus-QoS%2F.git diff --git a/prometheus.c b/prometheus.c index 96ce797..282e0db 100644 --- a/prometheus.c +++ b/prometheus.c @@ -3,11 +3,11 @@ /* === Prometheus QoS - you can "steal fire" from your ISP === */ /* === "fair-per-IP" quality of service (QoS) utility === */ /* === requires Linux 2.4.x or 2.6.x with HTB support === */ -/* === Copyright(C) 2005-2007 Michael Polak (xChaos) === */ +/* === Copyright(C) 2005-2008 Michael Polak (xChaos) === */ /* === Credits: CZFree.Net, Martin Devera, Netdave, Aquarius === */ /* ============================================================= */ -/* Modified: xChaos, 20070502 +/* Modified: xChaos, 20080119 ludva, 20071227 Prometheus QoS is free software; you can redistribute it and/or @@ -20,9 +20,11 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with the Linux kernel source code; if not, write to - Michael Polak, Svojsikova 7, 169 00 Praha 6 Czech Republic */ + You should have received a copy of the GNU General Public License + along with Prometheus Qos; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + GNU General Public License is located in file COPYING */ #define STRLEN 256 #define FIRSTGROUPID 1024 @@ -31,7 +33,7 @@ #include "cll1.h" -const char *version="0.7.7"; /*0.7.9 will be last development, 0.8.0 first stable */ +const char *version="0.7.7-1"; /*0.7.9 will be last development, 0.8.0 first stable */ /* ======= Help screen is hopefuly self-documenting part of code :-) ======= */ @@ -60,9 +62,9 @@ int dry_run=0; /* preview - use puts() instead of system char *config="/etc/prometheus/prometheus.conf"; /* main configuration file */ char *hosts="/etc/prometheus/hosts"; /* line bandwidth definition file */ char *tc="/sbin/tc"; /* requires tc with HTB support */ -char *iptables="/usr/sbin/iptables"; /* requires iptables utility */ -char *iptablessave="/usr/sbin/iptables-save"; /* new */ -char *iptablesrestore="/usr/sbin/iptables-restore"; /* new */ +char *iptables="/sbin/iptables"; /* requires iptables utility */ +char *iptablessave="/sbin/iptables-save"; /* new */ +char *iptablesrestore="/sbin/iptables-restore"; /* new */ char *iptablesfile="/var/spool/prometheus.iptables"; /* new; file for iptables-restore*/ char *iptablespreamble="*mangle\n:PREROUTING ACCEPT [0:0]\n:POSTROUTING ACCEPT [0:0]\n:INPUT ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n:FORWARD ACCEPT [0:0]"; FILE *iptables_file=NULL; @@ -72,7 +74,7 @@ char *cmdlog="/var/log/prometheus"; /* command log filename */ char *credit="/var/run/prometheus.credit"; /* credit log file */ int enable_credit=1; /* enable credit file */ int use_credit=0; /* use credit file (if enabled)*/ -char *log_dir="/var/www/html/logs/"; /* log directory pathname */ +char *log_dir="/var/www/logs/"; /* log directory pathname */ char *log_url="logs/"; /* log directory URL prefix */ char *title="Hall of Fame - Greatest Suckers"; /* hall of fame title */ int hall_of_fame=1; /* enable hall of fame */ @@ -637,7 +639,7 @@ program printf("\n\ Prometheus QoS - \"fair-per-IP\" Quality of Service setup utility.\n\ -Version %s - Copyright (C)2005-2007 Michael Polak (xChaos)\n\ +Version %s - Copyright (C)2005-2008 Michael Polak (xChaos)\n\ iptables-restore & burst tunning & classify modification 0.7d by Ludva\n\ Credits: CZFree.Net, Martin Devera, Netdave, Aquarius\n\n",version); @@ -1255,23 +1257,64 @@ Credits: CZFree.Net, Martin Devera, Netdave, Aquarius\n\n",version); fputs("\n\n",f); if(active_classes>10) - { - fputs("

\n",f); - fputs("\n",f); - find (sum,sums,sum->l>=total/4) - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); - find (sum,sums,sum->i==10) - fprintf(f,"\n",(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); - find (sum,sums,sum->l>=total/2) - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); - find (sum,sums,sum->i>=(active_classes+3)/4) - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); - find (sum,sums,sum->i>=(active_classes+1)/2) - fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); - fprintf(f,"\n",active_classes,total); - fputs("
Enterprise Research and Planning (ERP)
Active ClassesData transfers
Top %d%d %%%Lu M%Ld %%
Top 10%d %%%Lu M%Ld %%
Top %d%d %%%Lu M%Ld %%
Top %d%d %%%Lu M%Ld %%
Top %d%d %%%Lu M%Ld %%
All %d100 %%%Lu M100 %%
\n",f); - } - fprintf(f,"Statistics generated by Prometheus QoS version %s
GPL+Copyright(C)2005 Michael Polak, Arachne Labs
\n",version); + { + fputs("

\n",f); + fputs("\n",f); + fputs("\n",f); + + find(sum,sums,sum->l>=total/4) + { + fprintf(f,"\n"); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + } + + find(sum,sums,sum->i==10) + { + fprintf(f,"\n"); + fprintf(f,"\n",(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + } + + find(sum,sums,sum->l>=total/2) + { + fprintf(f,"\n"); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + } + + find(sum,sums,sum->l>=4*total/5) + { + fprintf(f,"\n"); + fprintf(f,"\n",sum->i,(100*sum->i+50)/active_classes,sum->l,(100*sum->l+50)/total); + } + + find (sum,sums,sum->i>=(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); + } + + find(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); + } + + find(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); + } + + find(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"); + fprintf(f,"\n",active_classes,total); + fputs("
Enterprise Research and Planning (ERP)
Analytic categoryActive ClassesData transfers
Top 25%% of traffic%d%d %%%Lu M%Ld %%
Top 10 downloaders10%d %%%Lu M%Ld %%
Top 50%% of traffic%d%d %%%Lu M%Ld %%
Top 80%% of traffic%d%d %%%Lu M%Ld %%
Top 20%% downloaders%d%d %%%Lu M%Ld %%
Top 25%% downloaders%d%d %%%Lu M%Ld %%
Top 50%% downloaders%d%d %%%Lu M%Ld %%
Top 80%% downloaders%d%d %%%Lu M%Ld %%
All users, all traffic%d100 %%%Lu M100 %%
\n",f); + } + fprintf(f,"Statistics generated by Prometheus QoS version %s
GPL+Copyright(C)2005-2008 Michael Polak, Arachne Labs
\n",version); fclose(f); }