def listconf(self): def __print__(string): print string pr = lambda x: __print__('|%-78s|' % (" [%-10s]: [%s]" % tuple(x))) print '+' + ('=' * 78) + '+' pr([_('lenguaje', lang), i18n.LC_ALL[lang]]) pr([_('prefijo', lang), core.obtconfig('prefix')]) pr(['mps', core.obtconfig('mps')]) pr(['plaintext', core.obtconfig('plaintext')]) try: for server in core.obtconfig('ircbase'): pr(['server', server.name]) pr([(' ' * 14) + "%-8s" % 'host', server.host]) pr([(' ' * 14) + "%-8s" % 'port', server.port]) pr([(' ' * 14) + "%-8s" % 'ssl', server.ssl]) pr([(' ' * 14) + "%-8s" % 'passwd', server.passwd]) pr([(' ' * 14) + "%-8s" % 'sasl', server.sasl]) pr([(' ' * 14) + "%-8s" % 'nick', server.nick]) pr([(' ' * 14) + "%-8s" % 'user', server.user]) pr([(' ' * 14) + "%-8s" % 'auto', server.connect_to_beginning]) #import sysb.katheryn as katheryn #pr([(' ' * 14) + "%-8s" % 'auto', #len(katheryn.tona(server.name).userlist())]) except TypeError: pr(['server', _('no hay servidores agregados', lang)]) print '+' + ('=' * 78) + '+'
def __init__(self): lang = core.obtconfig('lang') if lang is None: core.addconfig('package_translate', 'db/userbot.json') else: global lang locale = i18n.turn('es', core.obtconfig('package_translate', cache=True), i18n.parsename(__name__)) _ = locale.turn_tr_str def sn(string): string = unicode(string) raw = raw_input('%s %s ?>' % (string.decode('utf-8'), _('s/N', lang))) return raw.lower() in ['s', 'y'] i = lambda x: raw_input(x + ' ?> ') global locale global _ global sn global i if lang is None: self.lang() self.clear() vrn = core.obtconfig('VERSION', cache=True) vrn = (vrn[0] + ' ' + '.'.join(str(num) for num in vrn[1:])) print _('Bienvenido al sistema de configuracion de ', lang) + vrn print _('ingrese "help" o "license" para mas informacion', lang) while True: try: name = i('') if name is '': continue for func in make_handlers: if func.__name__ == name: func(self) raise GeneratorExit raise AttributeError except AttributeError: print _('orden "%s" desconocida', lang) % name except (KeyboardInterrupt, OSError, EOFError, GeneratorExit): pass except SystemExit: exit() except: for line in traceback.format_exc().splitlines(): print line
def __init__(self, ircobject, name, extra=None): self.irc = ircobject self.name = name self.lang = core.obtconfig('lang', cache=True) self.__core__ = core.obtconfig(name + '_' + self.irc.base.name) if not self.__core__: self.__core__ = {} core.addconfig(name + '_' + self.irc.base.name, self.__core__) if isinstance(extra, dict): for name, item in extra.items(): setattr(self, name, item)
def __init__(self, db_name): self.db_name = db_name self.jobs = core.obtconfig(self.db_name) if not self.jobs: self.jobs = {} core.addconfig(db_name, self.jobs) self.start = False
def mps(self): if not core.obtconfig('mps'): core.addconfig('mps', 0.4) r = float(i(_('mensajes por segundos', lang))) if r > 0: core.upconfig('mps', r)
def addoper(self): opers = core.obtconfig('opers') if not opers: core.addconfig('opers', []) opers = [] user = i(_('usuario', lang)) print _('NOTA: La contraseña debe ser ingresada bajo sha256', lang) passwd = i(_('contraseña', lang)) print _('niveles disponibles: ', lang) + 'global local noob' level = i(_('nivel', lang)) if level is 'global': level = (level,) elif level in ('local', 'noob'): print _('ingrese el nombre del servidor para el operador', lang) ircbase = core.obtconfig('ircbase') if not ircbase: print _('no hay servidores agregados', lang) return name = i('') for server in ircbase: if name == server.name: level = (level, server.name) break if not isinstance(level, tuple): print _('el servidor no existe', lang) return kwargs = vars() del kwargs['self'] del kwargs['opers'] try: del kwargs['ircbase'] del kwargs['name'] del kwargs['server'] except KeyError: pass opers.append(kwargs) core.upconfig('opers', opers)
def prefix(self): prefix = core.obtconfig('prefix') if prefix: print _('el prefijo actual es: ', lang) + prefix r = i(_('prefijo', lang))[0] if r.isalpha(): print _('prefijo invalido el caracter no debe ser alfabetico', lang) else: if not prefix: core.addconfig('prefix', r) else: core.upconfig('prefix', r)
def delserver(self): ircbase = core.obtconfig('ircbase') if not ircbase: print _('no hay servidores agregados', lang) return print _('ingrese el nombre del servidor a eliminar.', lang) print _('servidores: ', lang) + ', '.join(sv.name for sv in ircbase) while True: name = i(':::') for server in ircbase: if name == server.name: del ircbase[ircbase.index(server)] core.upconfig('ircbase', ircbase) return print _('el servidor no existe, vuelva a intentarlo', lang)
def deloper(self): opers = core.obtconfig('opers') if not opers: return for oper in opers: print '=' * 80 print _('usuario', lang) + ': ' + oper['user'] print _('nivel', lang) + ': ' + oper['level'][0] try: print _('servidores: ', lang) + oper['level'][1] except IndexError: pass if sn(_('es este el operador a eliminar?', lang)): opers.remove(oper) core.upconfig('opers', opers) print '=' * 80
def addserver(self): name = i(_('nombre de la red', lang)) host = i(_('direccion del servidor', lang)) port = int(i(_('numero de puerto', lang))) ssl = sn(_('usar ssl?', lang)) if sn(_('usar contrasena?', lang)): passwd = (True, i(_('contraseña del servidor', lang))) else: passwd = (False,) nick = i(_('nombre para userbot', lang)) user = i(_('nombre de usuario', lang)) if sn(_('usar sasl?', lang)): sasl = (True, (i(_('nombre de la cuenta', lang)), i(_('contraseña', lang)))) else: sasl = (False,) connect_to_beginning = sn(_('conectar al inicio?', lang)) ircbase = core.obtconfig('ircbase') if not ircbase: core.addconfig('ircbase', []) ircbase = [] for base in ircbase: if base.name.lower() is name.lower(): print ((_('el nombre "%s" ya esta en uso,', lang) % name) + _('por favor utilice otro nombre', lang)) return kwargs = vars() del kwargs['self'] del kwargs['ircbase'] try: del kwargs['base'] except KeyError: pass ircbase.append(IRCBase(**kwargs)) core.upconfig('ircbase', ircbase)
def lang(self): print _('Por favor ingrese su codigo de lenguaje:', 'en') num = 1 print '+' + ('=' * 78) + '+' for langcode in locale._tr_aval(): print '|%-78s|' % (' [ %s ] %s: %s' % (num, langcode, i18n.LC_ALL[langcode].decode('utf-8'))) num += 1 print '+' + ('=' * 78) + '+' while True: lang = i('langcode').lower() if not lang in locale._tr_aval(): print _('codigo de lenguaje invalido.', 'en') continue else: if core.obtconfig('lang'): core.upconfig('lang', lang) else: core.addconfig('lang', lang) print _('idioma actualizado', lang) global lang break
def operid(self, name, passwd, rpl_whois): for oper in core.obtconfig('opers'): if oper['user'] == name and oper['passwd'] == util.hash(passwd): if isinstance(oper['level'], tuple): lvl = oper['level'][0] server = oper['level'][1] else: lvl = oper['level'] server = self.irc.base.name ok = False if lvl in ('local', 'noob') and server == self.irc.base.name: ok = True elif lvl == 'global': ok = True if ok: self[rpl_whois['is logged']]['status'] = lvl return OPERATION_SUCCESSFULL else: return OPERATION_FAILED return INVALID_PARAMETER
def plaintext(self): if not isinstance(core.obtconfig('plaintext'), bool): core.addconfig('plaintext', False) if sn(_('guardar texto plano?', lang)): core.upconfig('plaintext', True)
def __init__(self): self.modules = {} self.endless_process() self.lang = core.obtconfig('lang', cache=True)
def endless_process(self): import time time.sleep(1) global_prefix = core.obtconfig('prefix', cache=True) time.sleep(1) global_lang = self.lang while True: irc, group = buffer_input.get() try: nickbot = irc.base.nick nick = group('nick') if nickbot.lower() in (nick.lower(), 'nickserv', 'chanserv'): continue target = group('target') if target[0] in '#': channel = target else: channel = None except AttributeError: continue except IndexError: continue for mod, dict in self: if_break = False for handler in dict['handlers']: try: if not handler['no_prefix']: prefix = ('^({}([:;, ] ?)|{})'.format(re.escape(nickbot), re.escape(global_prefix)) if target != nickbot else '') else: prefix = '' if target != nickbot: if not re.match(prefix + '.*', group('message'), 2): if_break = True break result = re.match(prefix + handler['regex'], group('message'), 2) if not result: continue except: log.error('expresion regular invalida, handler %s' % handler['func'].__name__) for err in traceback.format_exc().splitlines(): log.error(err) continue if not channel and handler['chan_reqs']: channel = result.group(handler['chan_reqs']) if target == nickbot: target = nick rpl_whois = self.security(handler, irc, nick, channel) if not rpl_whois: if_break = False break else: #print '%s %s %s %s' % (nick, target, channel, group('message')) try: handler['func'](irc, result.group, group, vars()) except: for line in traceback.format_exc().splitlines(): irc.err(target, line) finally: if_break = True break if if_break: re.purge() break
UserBot module Copyright 2015, Ismael R. Lugo G. """ import re, os, imp, logg, types, Thread, traceback, i18n from config import core from config import conf from irc.client import buffer_input from irc.request import whois from irc.connection import servers log = logg.getLogger(__name__) locale = i18n.turn( 'es', core.obtconfig('package_translate', cache=True), 'commands') _ = locale.turn_tr_str class commands(object): def __init__(self): self.modules = {} self.endless_process() self.lang = core.obtconfig('lang', cache=True) def __getitem__(self, key): try: return self.modules[key] except KeyError: