mirror of
https://git.wownero.com/wownero/tippero.git
synced 2024-08-15 00:33:14 +00:00
Starting networks is now via command line, and parameterized
This commit is contained in:
parent
50455a0d08
commit
1d3f650bba
5 changed files with 86 additions and 21 deletions
|
@ -18,9 +18,6 @@ irc_send_delay = 0.4
|
|||
irc_welcome_line = 'Welcome to the freenode Internet Relay Chat Network'
|
||||
irc_channels = ['#txtptest000']
|
||||
irc_timeout_seconds = 600
|
||||
irc_use_ssl = True
|
||||
irc_use_sasl = True
|
||||
irc_sasl_name = "monero-tipbot"
|
||||
|
||||
redis_host="127.0.0.1"
|
||||
redis_port=7777
|
||||
|
@ -47,6 +44,18 @@ silent_invalid_commands = {
|
|||
'freenode': ['price','worth','net','pools','calc']
|
||||
}
|
||||
|
||||
network_config = {
|
||||
'freenode': {
|
||||
'host': 'irc.freenode.net',
|
||||
'port': 6697,
|
||||
'login': tipbot_name,
|
||||
'delay': irc_send_delay,
|
||||
'ssl': True,
|
||||
'sasl': True,
|
||||
'sasl_name': 'monero-tipbot',
|
||||
},
|
||||
}
|
||||
|
||||
dice_min_multiplier=1.1
|
||||
dice_max_multiplier=10
|
||||
dice_edge = 0.01
|
||||
|
|
|
@ -18,8 +18,8 @@ from tipbot.command_manager import *
|
|||
from irc import *
|
||||
|
||||
class FreenodeNetwork(IRCNetwork):
|
||||
def __init__(self):
|
||||
IRCNetwork.__init__(self,"freenode")
|
||||
def __init__(self,name):
|
||||
IRCNetwork.__init__(self,name)
|
||||
|
||||
def login(self):
|
||||
self.send_to("nickserv", "IDENTIFY %s" % self.password)
|
||||
|
@ -52,3 +52,4 @@ class FreenodeNetwork(IRCNetwork):
|
|||
log_error('ACC line not as expected...')
|
||||
return True
|
||||
|
||||
RegisterNetwork("freenode",FreenodeNetwork)
|
||||
|
|
|
@ -44,7 +44,21 @@ class IRCNetwork(Network):
|
|||
self.quitting = False
|
||||
self.buffered_data = ""
|
||||
|
||||
def connect(self,host,port,login,password,delay):
|
||||
def connect(self):
|
||||
try:
|
||||
cfg=config.network_config[self.name]
|
||||
host=cfg['host']
|
||||
port=cfg['port']
|
||||
login=cfg['login']
|
||||
password=GetPassword(self.name)
|
||||
delay=cfg['delay']
|
||||
self.use_ssl=cfg['ssl']
|
||||
self.use_sasl=cfg['sasl']
|
||||
if self.use_sasl:
|
||||
self.sasl_name=cfg['sasl_name']
|
||||
except Exception,e:
|
||||
log_error('Configuration not found for %s: %s' % (self.name, str(e)))
|
||||
return False
|
||||
return self._connect(host,port,login,password,delay)
|
||||
|
||||
def disconnect(self):
|
||||
|
@ -170,7 +184,7 @@ class IRCNetwork(Network):
|
|||
if data.find ( config.irc_welcome_line ) != -1:
|
||||
self.userstable = dict()
|
||||
self.registered_users.clear()
|
||||
if not config.irc_use_sasl:
|
||||
if not self.use_sasl:
|
||||
self.login()
|
||||
for chan in config.irc_channels:
|
||||
self.join(chan)
|
||||
|
@ -182,8 +196,8 @@ class IRCNetwork(Network):
|
|||
return True
|
||||
|
||||
if data.startswith('AUTHENTICATE +'):
|
||||
if config.irc_use_sasl:
|
||||
authstring = config.irc_sasl_name + chr(0) + config.irc_sasl_name + chr(0) + self.password
|
||||
if self.use_sasl:
|
||||
authstring = self.sasl_name + chr(0) + self.sasl_name + chr(0) + self.password
|
||||
self._irc_sendmsg('AUTHENTICATE %s' % base64.b64encode(authstring))
|
||||
else:
|
||||
log_warn('Got AUTHENTICATE while not using SASL')
|
||||
|
@ -370,13 +384,13 @@ class IRCNetwork(Network):
|
|||
log("IRCSEND",msg)
|
||||
|
||||
def _irc_recv(self,size,flags=None):
|
||||
if config.irc_use_ssl:
|
||||
if self.use_ssl:
|
||||
return self.sslirc.read(size)
|
||||
else:
|
||||
return self.irc.recv(size,flags)
|
||||
|
||||
def _irc_send(self,data):
|
||||
if config.irc_use_ssl:
|
||||
if self.use_ssl:
|
||||
return self.sslirc.write(data)
|
||||
else:
|
||||
return self.irc.send(data)
|
||||
|
@ -447,7 +461,7 @@ class IRCNetwork(Network):
|
|||
self.registered_users=set()
|
||||
try:
|
||||
self.irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
|
||||
if config.irc_use_ssl:
|
||||
if self.use_ssl:
|
||||
try:
|
||||
raise RuntimeError('')
|
||||
self.irc_ssl_context = ssl.create_default_context()
|
||||
|
@ -461,7 +475,7 @@ class IRCNetwork(Network):
|
|||
log_error( 'Error initializing IRC: %s' % str(e))
|
||||
return False
|
||||
self._log_IRCRECV(self._irc_recv(4096))
|
||||
if config.irc_use_sasl:
|
||||
if self.use_sasl:
|
||||
self._irc_sendmsg('CAP REQ :sasl')
|
||||
else:
|
||||
self._irc_sendmsg ( 'PASS *********')
|
||||
|
@ -518,3 +532,4 @@ RegisterCommand({
|
|||
'admin': True,
|
||||
'help': "Makes %s part from a channel" % (config.tipbot_name)
|
||||
})
|
||||
RegisterNetwork("irc",IRCNetwork)
|
||||
|
|
|
@ -19,22 +19,26 @@ import tipbot.coinspecs as coinspecs
|
|||
from tipbot.log import log_error, log_warn, log_info, log_log
|
||||
from tipbot.redisdb import *
|
||||
|
||||
registered_networks=dict()
|
||||
networks=[]
|
||||
cached_tipbot_balance=None
|
||||
cached_tipbot_unlocked_balance=None
|
||||
cached_tipbot_balance_timestamp=None
|
||||
|
||||
def GetPassword():
|
||||
def GetPassword(name):
|
||||
try:
|
||||
f = open('tipbot-password.txt', 'r')
|
||||
for p in f:
|
||||
p = p.strip("\r\n")
|
||||
f.close()
|
||||
return p
|
||||
parts=p.split(':')
|
||||
if parts[0]==name:
|
||||
return parts[1]
|
||||
except Exception,e:
|
||||
log_error('could not fetch password: %s' % str(e))
|
||||
raise
|
||||
return "xxx"
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
def IsParamPresent(parms,idx):
|
||||
return len(parms) > idx
|
||||
|
@ -243,6 +247,9 @@ def IdentityFromString(link,s):
|
|||
def NickFromIdentity(identity):
|
||||
return identity.split(':')[1]
|
||||
|
||||
def RegisterNetwork(name,type):
|
||||
registered_networks[name]=type
|
||||
|
||||
def AddNetwork(network):
|
||||
networks.append(network)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue