-/* Modified by: xChaos, 20130115 */\r
+/* Modified by: xChaos, 20131208 */\r
\r
#include "cll1-0.6.2.h"\r
#include "ipstruct.h"\r
\r
-#define STRLEN 512\r
+#define STRLEN 256\r
\r
/* globals declared in prometheus.c */\r
extern struct IP *ips, *ip, *sharedip;\r
extern char *mark;\r
-extern char *proxy_ip;\r
+/* extern char *proxy_ip; */\r
extern int free_min;\r
extern int free_max;\r
extern int include_upload;\r
\r
+int traffic_detected = 0;\r
+extern char *iptablesdump;\r
+\r
/* ===================== traffic analyser - uses iptables ================ */ \r
\r
void get_traffic_statistics(const char *whichiptables, int ipv6)\r
{\r
char *str,*cmd;\r
- int downloadflag=0;\r
-\r
- textfile(Pipe,str) *line,*lines=NULL;\r
- string(str,STRLEN);\r
+ int downloadflag = 0;\r
+ FILE *f;\r
string(cmd,STRLEN);\r
\r
- sprintf(cmd,"%s -L -v -x -n -t mangle", whichiptables);\r
- shell(cmd);\r
- input(str,STRLEN)\r
- {\r
- create(line,Pipe);\r
- line->str=str;\r
- string(str,STRLEN);\r
- append(line,lines);\r
- }\r
+ sprintf(cmd, "%s -L -v -x -n -t mangle>%s", whichiptables, iptablesdump);\r
+ /*-----------------------------------------------------------------*/\r
+ printf("Running %s ...\n", cmd);\r
+ /*-----------------------------------------------------------------*/\r
+ system(cmd);\r
+ /*-----------------------------------------------------------------*/\r
+ printf("Processing %s ...\n", iptablesdump);\r
+ /*-----------------------------------------------------------------*/\r
+ f = fopen(iptablesdump,"r");\r
+ if(!f)\r
+ perror(iptablesdump);\r
\r
- for_each(line,lines)\r
+ while(!feof(f))\r
{\r
- int col, accept = 0, proxyflag = 0, valid = 1, setchainname = 0, commonflag = 0; \r
+ int col, accept = 0, /*proxyflag = 0, */valid = 1, setchainname = 0, commonflag = 0; \r
unsigned long long traffic = 0;\r
unsigned long pkts = 0;\r
char *ipaddr = NULL,*ptr;\r
\r
- valid_columns(ptr, line->str, ' ', col) \r
+ string(str, STRLEN);\r
+ fgets(str, STRLEN, f);\r
+ valid_columns(ptr, str, ' ', col)\r
if(valid) switch(col)\r
{ \r
case 1: if(eq(ptr,"Chain"))\r
}\r
else if(!ipv6)\r
{\r
- if(downloadflag)\r
+/* if(downloadflag)\r
{ \r
if(strstr(proxy_ip,ptr))\r
{\r
proxyflag = 1;\r
}\r
- }\r
- else\r
+\r
+ } \r
+ else \r
+ { */\r
+ if(!downloadflag)\r
{\r
ipaddr = ptr;\r
}\r
if(ipv6 && isipv6)\r
{\r
*isipv6=0;\r
- printf("(IPv6) "); \r
+ printf("(IPv6) ");\r
}\r
- \r
+ else\r
+ {\r
+ printf("(IPv4) ");\r
+ }\r
+/* \r
if(proxyflag)\r
{\r
printf("(proxy) ");\r
}\r
- else if(!downloadflag)\r
+ else\r
+*/ \r
+ if(!downloadflag)\r
{\r
printf("(up) ");\r
}\r
printf("(down) ");\r
}\r
\r
- printf("IP %s: %Lu MB (%ld pkts)\n", ipaddr, traffic, pkts);\r
+ traffic_detected = 1;\r
+ printf("%s %Lu MB (%ld pkts)\n", ipaddr, traffic, pkts);\r
\r
if_exists(ip, ips, eqi(ip->addr,ipaddr)); \r
else \r
{\r
- TheIP(ipaddr);\r
+ TheIP(ipaddr, FALSE);\r
if(eq(ip->addr,"0.0.0.0/0"))\r
{\r
ip->name = "(unregistered)";\r
\r
if(downloadflag)\r
{\r
+/*\r
if(proxyflag)\r
{\r
ip->proxy = traffic;\r
}\r
else\r
- {\r
- ip->traffic += traffic;\r
- }\r
- ip->direct = ip->traffic-ip->upload-ip->proxy;\r
- ip->pktsdown = pkts;\r
+ {*/\r
+ ip->traffic += traffic;\r
+ ip->traffic_down += traffic;\r
+/* } */\r
+ ip->direct += traffic; /*-ip->proxy;*/\r
+ ip->pktsdown += pkts;\r
}\r
else\r
{\r
- ip->upload = traffic;\r
- ip->pktsup = pkts;\r
+ ip->upload += traffic;\r
+ ip->traffic_up += traffic;\r
+ ip->pktsup += pkts;\r
if(include_upload)\r
{\r
ip->traffic += traffic;\r
}\r
else \r
{\r
- if(traffic > ip->traffic)\r
+ if(ip->upload > ip->traffic)\r
{\r
- ip->traffic = traffic; \r
+ ip->traffic = ip->upload;\r
}\r
}\r
}\r