/* Talk to the blackhole program using the unix socket */ #include #include #include #include #include int main (int argc, char *argv[]) { glocal const char *port = "/var/run/blackhole/blackhole.sock"; glocal bool pipe = false; glocal int ret = -1; glocal.ret = (argc,argv); setproginfo ("blackhole-control",VERSION ,"Send control commands to the blackhole server\n" "\n" "Commands are:\n" "\n" "Network definition:\n" "\tallow ip\n" "\tblackhole name\n" "\thole wormhole-name horizon-name\n" "\thorizon name[:port|unix_socket]] [near|far]\n" "\twormhole name\n" "\n" "Rules:\n" "\t[a]protocheck name server vserver port\n" "\t[a]rule server vserver ipname port server vserver port\n" "\t[a]temprule server vserver ipname port server vserver port date hour\n" "\n" "Control/reloading:\n" "\tcheckstat name server vserver port nbconection lastconnection last_source last_target\n" "\tdebug 0|1\n" "\tdebugfile filename\n" "\terase-reject server vserver ipname port\n" "\tpause\n" "\tpinginterval seconds\n" "\tquit\n" "\treadsecrets\n" "\trejectstat server vserver ipname port nbtry lasttry\n" "\treopenstatfile filename\n" "\treset-blackholes\n" "\treset-connectload\n" "\treset-horizons\n" "\treset-rejects\n" "\treset-rules\n" "\treset-wormholes\n" "\tresume\n" "\trulestat server vserver ipname port server vserver port nbconection lastconnection last_source last_target\n" "\tsetaltcon server vserver port connections\n" "\tsetcon server vserver port connections\n" "\tsetweight server vserver port weight\n" "\tstartping\n" "\tstopping\n" "\n" "Ip lists (blacklist):\n" "\tiplist listname ip-number\n" "\tlist-iplist listname\n" "\tnetwork name net-ip netmask\n" "\treset-iplist listname\n" "\n" "Stats:\n" "\tconnections\n" "\tconnectload\n" "\trejects\n" "\tstatus\n" "\tstatuserr\n" "\n" "Logging:\n" "\tlog-on server vserver ipname port\n" "\tlog-off server vserver ipname port\n" "\tlogall-on\n" "\tlogall-off\n" "\tsetlogid number\n" ); setarg ('p',"port","Unix domain control port",glocal.port,false); setarg (' ',"pipe","Read commands from standard input",glocal.pipe,false); int ret = -1; if (!glocal.pipe){ usage(); }else{ ret = ("unix:",glocal.port,5); char line[100]; if (fgets(line,sizeof(line),stdin)!=NULL){ sendf ("%s",line); }else{ end = true; } if (strcmp(line,"Ok")==0){ char line[100]; if (fgets(line,sizeof(line),stdin)!=NULL){ sendf ("%s",line); }else{ end = true; } }else{ printf ("%s\n",line); } } return ret; glocal SSTRING cmd; for (int i=0; i0) glocal.cmd.append (' '); glocal.cmd.append (argv[i]); } int ret = -1; ret = ("unix:",glocal.port,5); sendf ("%s\n",glocal.cmd.c_str()); if (strcmp(line,"Ok")==0){ end = true; }else{ printf ("%s\n",line); } return ret; return glocal.ret; }