Example #1
0
 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"
Example #2
0
 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"
Example #3
0
    def __init__(self, channel, filename):
        self.channel = channel
        self.filename = filename
        conf = ConfigObj('pyGBot.ini')

        try:
            print "Opening log file..."
            log.addScreenHandler(log.logger, log.formatter)
            log.addLogFileHandler(log.logger, conf['IRC']['logfile'],
                                  log.formatter)
        except IOError, msg:
            print "Unable to open log file: ", msg
            print "Defaulting to local."
            log.addLogFileHandler(log.logger, 'pyGBot.log', log.formatter)
Example #4
0
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
Example #5
0
 def __init__(self, bot, options):
     BasePlugin.__init__(self, bot, options)
     self.users = {}
     self.conf = ConfigObj("users.ini")
Example #6
0
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
Example #7
0
##    Copyright (C) 2008 Morgan Lokhorst-Blight
##
##    This program is free software: you can redistribute it and/or modify
##    it under the terms of the GNU General Public License as published by
##    the Free Software Foundation, either version 3 of the License, or
##    (at your option) any later version.
##
##    This program is distributed in the hope that it will be useful,
##    but WITHOUT ANY WARRANTY; without even the implied warranty of
##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##    GNU General Public License for more details.
##
##    You should have received a copy of the GNU General Public License
##    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##

import os
import sys
import hashlib
from contrib.configobj import ConfigObj, ConfigObjError


if __name__ == "__main__":
    uname = raw_input("Enter username: "******"Enter pw: ") + "pygb0t").hexdigest()
    ulevel = raw_input("Enter userlevel (User, Mod or Admin): ")

    conf = ConfigObj("users.ini")
    conf[uname] = {"passhash": pwhash, "userlevel": ulevel}
    conf.write()
Example #8
0
def run():
    try:
        conf = ConfigObj('pyGBot.ini')
    except IOError, msg:
        print "Can't open config file: ", msg
        sys.exit(1)
Example #9
0
 def __init__(self):
     try:
         conf = ConfigObj('pyGBot.ini')
     except IOError, msg:
         print "Cant open config file: ", msg
         sys.exit(1)
Example #10
0
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
Example #11
0
 def __init__(self, bot, options):
     BasePlugin.__init__(self, bot, options)
     self.users = {}
     self.conf = ConfigObj("users.ini")
Example #12
0
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
Example #13
0
##             pyGBot.
##    Copyright (C) 2008 Morgan Lokhorst-Blight
##
##    This program is free software: you can redistribute it and/or modify
##    it under the terms of the GNU General Public License as published by
##    the Free Software Foundation, either version 3 of the License, or
##    (at your option) any later version.
##
##    This program is distributed in the hope that it will be useful,
##    but WITHOUT ANY WARRANTY; without even the implied warranty of
##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##    GNU General Public License for more details.
##
##    You should have received a copy of the GNU General Public License
##    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##

import os
import sys
import hashlib
from contrib.configobj import ConfigObj, ConfigObjError

if __name__ == "__main__":
    uname = raw_input("Enter username: "******"Enter pw: ") + 'pygb0t').hexdigest()
    ulevel = raw_input("Enter userlevel (User, Mod or Admin): ")

    conf = ConfigObj('users.ini')
    conf[uname] = {'passhash': pwhash, 'userlevel': ulevel}
    conf.write()