#include <sys/poll.h>
#include <sys/types.h>
#include <sys/socket.h>
+#include <signal.h>
#include <netdb.h>
#include "../core/error.h"
#include "../core/events.h"
#include "../localuser/localuserchannel.h"
#include "../core/nsmalloc.h"
#include "../lib/irc_ipv6.h"
+#include "../glines/glines.h"
MODULE_VERSION("")
return 0;
}
+void ignorepipe(int signal_) {
+ signal(SIGPIPE, ignorepipe); /* HACK */
+}
+
void _init(void) {
sstring *cfgstr;
int ipbits[4];
+ signal(SIGPIPE, ignorepipe); /* HACK */
+
ps_start_ts = time(NULL);
ps_ready = 0;
ps_commands = NULL;
proxyscan_addscantype(STYPE_HTTP, 808);
proxyscan_addscantype(STYPE_HTTP, 3332);
proxyscan_addscantype(STYPE_HTTP, 2282);
+
+ proxyscan_addscantype(STYPE_HTTP, 1644);
+ proxyscan_addscantype(STYPE_HTTP, 8081);
+ proxyscan_addscantype(STYPE_HTTP, 443);
+ proxyscan_addscantype(STYPE_HTTP, 1337);
+ proxyscan_addscantype(STYPE_HTTP, 8888);
+ proxyscan_addscantype(STYPE_HTTP, 8008);
+ proxyscan_addscantype(STYPE_HTTP, 6515);
+ proxyscan_addscantype(STYPE_HTTP, 27977);
+
proxyscan_addscantype(STYPE_SOCKS4, 559);
proxyscan_addscantype(STYPE_SOCKS4, 1080);
proxyscan_addscantype(STYPE_SOCKS5, 1080);
cachehost *chp;
foundproxy *fpp;
time_t now;
+ char reason[200];
scansdone++;
scansbyclass[sp->class]++;
/* the purpose of this lastgline stuff is to stop gline spam from one scan */
if (!chp->glineid || (now>=chp->lastgline+SCANTIMEOUT)) {
char buf[512];
- const char *ip;
+ struct irc_in_addr *ip;
chp->lastgline=now;
glinedhosts++;
loggline(chp, sp->node);
- ip = IPtostr(((patricia_node_t *)sp->node)->prefix->sin);
- irc_send("%s GL * +*@%s 1800 %jd :Open Proxy, see http://www.quakenet.org/openproxies.html - ID: %d",
- mynumeric->content,ip,(intmax_t)getnettime(), chp->glineid);
- Error("proxyscan",ERR_DEBUG,"Found open proxy on host %s",ip);
+ ip = &(((patricia_node_t *)sp->node)->prefix->sin);
+ snprintf(reason, sizeof(reason), "Open Proxy, see http://www.quakenet.org/openproxies.html - ID: %d", chp->glineid);
+ glinebyip("*", ip, 128, 43200, reason, GLINE_IGNORE_TRUST, "proxyscan");
+ Error("proxyscan",ERR_DEBUG,"Found open proxy on host %s",IPtostr(*ip));
- snprintf(buf, sizeof(buf), "proxy-gline %lu %s %s %hu %s", time(NULL), ip, scantostr(sp->type), sp->port, "irc.quakenet.org");
+ snprintf(buf, sizeof(buf), "proxy-gline %lu %s %s %hu %s", time(NULL), IPtostr(*ip), scantostr(sp->type), sp->port, "irc.quakenet.org");
triggerhook(HOOK_SHADOW_SERVER, (void *)buf);
} else {
loggline(chp, sp->node); /* Update log only */
if (0 == ipmask_parse(cargv[0],&sin, &bits)) {
sendnoticetouser(proxyscannick,np,"Usage: scan <ip>");
} else {
+ if (bits != 128 || !irc_in_addr_is_ipv4(&sin) || irc_in_addr_is_loopback(&sin)) {
+ sendnoticetouser(proxyscannick,np,"You may only scan single IPv4 IP's");
+ return CMD_OK;
+ }
if (bits != 128 || irc_in_addr_is_loopback(&sin)) {
sendnoticetouser(proxyscannick,np,"You may only scan single IP's");
return CMD_OK;
}
}
+ fclose(fp);
+
sendnoticetouser(proxyscannick,np,"Started %d scans...", count);
return CMD_OK;
}