class Auth(BasePlugin): def __init__(self, bot, options): BasePlugin.__init__(self, bot, options) self.users = {} self.conf = ConfigObj("users.ini") print options try: if options["authtype"] == "nickserv": self.authtype = "nickserv" else: self.authtype = "pygbot" except: self.authtype = "pygbot" def get_userlevel(self, user): if self.users.has_key(user): return self.users[user].level else: newuser = User(user) self.users[user] = newuser return newuser.level def set_userlevel(self, user, level): if self.users.has_key(user): self.users[user].level = level else: newuser = User(user) newuser.level = level self.users[user] = newuser # Event handlers for other users def user_join(self, channel, username): pass def user_part(self, channel, username): pass def user_quit(self, user, reason=""): if self.users.has_key(user): del self.users[user] def user_nickchange(self, username, newname): if self.users.has_key(username): self.users[newname] = self.users[username] del self.users[username] pass # Event handlers for this bot def bot_connect(self): pass def bot_join(self, channel): pass def bot_kicked(self, channel, kicker="", reason=""): pass def bot_disconnect(self): pass # Event handlers for incoming messages def msg_channel(self, channel, user, message): pass def msg_action(self, channel, user, message): pass def msg_private(self, user, message): if message.lower().startswith('auth'): if self.authtype == "nickserv": self.bot.privout("nickserv", "status %s" % user) if self.authtype == "pygbot": cmd, uname, password = message.rsplit(' ',2) if self.get_passhash(uname) == hashlib.sha1(password + 'pygb0t').hexdigest(): authlevel = self.get_authlevel(uname) if authlevel != None: self.set_userlevel(user, self.get_authlevel(uname)) self.bot.noteout(user, 'Successfully authed.') log.logger.info('Auth: Authorised user %s at level %d.' % (user, authlevel)) else: self.bot.noteout(user, 'Invalid user level.') log.logger.info('Auth: Invalid user level for user %s' % user) else: self.bot.noteout(user, 'Incorrect user name or password.') def msg_notice(self, user, message): if self.authtype == "nickserv": if user == "NickServ": if message.startswith("STATUS"): uname = message.split(" ")[1] if int(message.split(" ")[2]) == 3: authlevel = self.get_authlevel(uname) if authlevel != None: self.set_userlevel(uname, self.get_authlevel(uname)) self.bot.noteout(uname, 'Successfully authorized via NickServ.') log.logger.info('Auth: Authorized user %s at level %d throug NickServ.' % (uname, authlevel)) else: self.set_userlevel(uname, 50) self.bot.noteout(uname, 'You do not have an account. Successfully authorized as a guest user.') log.logger.info('Auth: Invalid user level for user %s. Set to default.' % uname) else: self.bot.noteout('Authorization unsuccessful. Please log in to NickServ and try again.') def channel_names(self, channel, nameslist): log.logger.info("Users on #" + channel + ": " + ', '.join(nameslist)) def get_passhash(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('passhash'): return self.conf[uname]['passhash'] def get_authlevel(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('userlevel'): if hasattr(AuthLevels, self.conf[uname]['userlevel']): return getattr(AuthLevels, self.conf[uname]['userlevel']) else: return None else: return None
class Auth(BasePlugin): def __init__(self, bot, options): BasePlugin.__init__(self, bot, options) self.users = {} self.conf = ConfigObj("users.ini") try: if options["authtype"] == "nickserv": self.authtype = "nickserv" else: self.authtype = "pygbot" except: self.authtype = "pygbot" def get_userlevel(self, user): if self.users.has_key(user): return self.users[user].level else: newuser = User(user) self.users[user] = newuser return newuser.level def set_userlevel(self, user, level): if self.users.has_key(user): self.users[user].level = level else: newuser = User(user) newuser.level = level self.users[user] = newuser # Event handlers for other users def user_join(self, channel, username): pass def user_part(self, channel, username): pass def user_quit(self, user, reason=""): if self.users.has_key(user): del self.users[user] def user_nickchange(self, username, newname): if self.users.has_key(username): self.users[newname] = self.users[username] del self.users[username] pass # Event handlers for this bot def bot_connect(self): pass def bot_join(self, channel): pass def bot_kicked(self, channel, kicker="", reason=""): pass def bot_disconnect(self): pass # Event handlers for incoming messages def msg_channel(self, channel, user, message): pass def msg_action(self, channel, user, message): pass def msg_private(self, user, message): if message.lower().startswith('auth'): if self.authtype == "nickserv": self.bot.privout("nickserv", "acc %s *" % user) log.logger.info('Auth: Attempting to auth %s' % user) if self.authtype == "pygbot": if len(message.rsplit(' ', 2)) == 3: cmd, uname, password = message.rsplit(' ', 2) if self.get_passhash(uname) == hashlib.sha1( (password + u'pygb0t').encode('utf-8', 'replace')).hexdigest(): authlevel = self.get_authlevel(uname) if authlevel != None: self.set_userlevel(user, self.get_authlevel(uname)) self.bot.noteout(user, 'Successfully authed.') log.logger.info( 'Auth: Authorized user %s at level %d.' % (user, authlevel)) else: self.bot.noteout(user, 'Invalid user level.') log.logger.info( 'Auth: Invalid user level for user %s' % user) else: self.bot.noteout(user, 'Incorrect user name or password.') else: self.bot.noteout( user, "Incorrect syntax. Usage: auth <username> <password>") def msg_notice(self, user, message): if self.authtype == "nickserv": if user == "NickServ": if message.lower().find("acc") != -1: uname = message.split(" ")[0] account = message.split(" ")[2] if int(message.split(" ")[4]) == 3: authlevel = self.get_authlevel(account) if authlevel != None: self.set_userlevel(uname, self.get_authlevel(account)) self.bot.noteout( uname, 'Successfully authorized via NickServ.') log.logger.info( 'Auth: Authorized user %s to account %s at level %d through NickServ.' % (uname, account, authlevel)) else: self.set_userlevel(user, 50) self.bot.noteout( uname, 'You do not have an account. Successfully authorized as a guest user.' ) log.logger.info( 'Auth: Invalid user level for user %s. Set to default.' % uname) else: self.bot.noteout( 'Authorization unsuccessful. Please log in to NickServ and try again.' ) def channel_names(self, channel, nameslist): log.logger.info("Users on #" + channel + ": " + ', '.join(nameslist)) def get_passhash(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('passhash'): return self.conf[uname]['passhash'] def get_authlevel(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('userlevel'): if hasattr(AuthLevels, self.conf[uname]['userlevel']): return getattr(AuthLevels, self.conf[uname]['userlevel']) else: return None else: return None
class Auth(BasePlugin): def __init__(self, bot, options): BasePlugin.__init__(self, bot, options) self.users = {} self.conf = ConfigObj("users.ini") def get_userlevel(self, user): if self.users.has_key(user): return self.users[user].level else: newuser = User(user) self.users[user] = newuser return newuser.level def set_userlevel(self, user, level): if self.users.has_key(user): self.users[user].level = level else: newuser = User(user) newuser.level = level self.users[user] = newuser # Event handlers for other users def user_join(self, channel, username): pass def user_part(self, channel, username): pass def user_quit(self, user, reason=""): if self.users.has_key(user): del self.users[user] def user_nickchange(self, username, newname): if self.users.has_key(username): self.users[newname] = self.users[username] del self.users[username] pass # Event handlers for this bot def bot_connect(self): pass def bot_join(self, channel): pass def bot_kicked(self, channel, kicker="", reason=""): pass def bot_disconnect(self): pass # Event handlers for incoming messages def msg_channel(self, channel, user, message): pass def msg_action(self, channel, user, message): pass def msg_private(self, user, message): if message.lower().startswith('auth'): cmd, uname, password = message.rsplit(' ',2) if self.get_passhash(uname) == hashlib.sha1(password + 'pygb0t').hexdigest(): authlevel = self.get_authlevel(uname) if authlevel != None: self.set_userlevel(user, self.get_authlevel(uname)) self.bot.noteout(user, 'Successfully authed.') log.logger.info('Auth: Authorised user %s at level %d.' % (user, authlevel)) else: self.bot.noteout(user, 'Invalid user level.') log.logger.info('Auth: Invalid user level for user %s' % user) else: self.bot.noteout(user, 'Incorrect user name or password.') def msg_notice(self, user, message): pass def channel_names(self, channel, nameslist): log.logger.info("Users on #" + channel + ": " + ', '.join(nameslist)) def get_passhash(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('passhash'): return self.conf[uname]['passhash'] def get_authlevel(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('userlevel'): if hasattr(AuthLevels, self.conf[uname]['userlevel']): return getattr(AuthLevels, self.conf[uname]['userlevel']) else: return None else: return None
class Auth(BasePlugin): def __init__(self, bot, options): BasePlugin.__init__(self, bot, options) self.users = {} self.conf = ConfigObj("users.ini") def get_userlevel(self, user): if self.users.has_key(user): return self.users[user].level else: newuser = User(user) self.users[user] = newuser return newuser.level def set_userlevel(self, user, level): if self.users.has_key(user): self.users[user].level = level else: newuser = User(user) newuser.level = level self.users[user] = newuser # Event handlers for other users def user_join(self, channel, username): pass def user_part(self, channel, username): pass def user_quit(self, user, reason=""): if self.users.has_key(user): del self.users[user] def user_nickchange(self, username, newname): if self.users.has_key(username): self.users[newname] = self.users[username] del self.users[username] pass # Event handlers for this bot def bot_connect(self): pass def bot_join(self, channel): pass def bot_kicked(self, channel, kicker="", reason=""): pass def bot_disconnect(self): pass # Event handlers for incoming messages def msg_channel(self, channel, user, message): pass def msg_action(self, channel, user, message): pass def msg_private(self, user, message): if message.lower().startswith('auth'): cmd, uname, password = message.rsplit(' ', 2) if self.get_passhash(uname) == hashlib.sha1(password + 'pygb0t').hexdigest(): authlevel = self.get_authlevel(uname) if authlevel != None: self.set_userlevel(user, self.get_authlevel(uname)) self.bot.noteout(user, 'Successfully authed.') log.logger.info('Auth: Authorised user %s at level %d.' % (user, authlevel)) else: self.bot.noteout(user, 'Invalid user level.') log.logger.info('Auth: Invalid user level for user %s' % user) else: self.bot.noteout(user, 'Incorrect user name or password.') def msg_notice(self, user, message): pass def channel_names(self, channel, nameslist): log.logger.info("Users on #" + channel + ": " + ', '.join(nameslist)) def get_passhash(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('passhash'): return self.conf[uname]['passhash'] def get_authlevel(self, uname): if self.conf.has_key(uname) and self.conf[uname].has_key('userlevel'): if hasattr(AuthLevels, self.conf[uname]['userlevel']): return getattr(AuthLevels, self.conf[uname]['userlevel']) else: return None else: return None