示例#1
0
    def do_password(self, params=None):

        if len(params) < 1:
            name = cfg.read_param(
                None, "Please provide the username to change the password for")
            if not name:
                logger.error("empty username")
                return -1
        else:
            name = params[0]
        username, domain = self.user_get_domain(name)

        db, osips_ver = self.user_db_connect()
        if not db:
            return -1

        user_dict = {USER_NAME_COL: username, USER_DOMAIN_COL: domain}
        # check if the user already exists
        if not db.entry_exists(USER_TABLE, user_dict):
            logger.warning("User {}@{} does not exist".format(
                username, domain))
            return -1

        if len(params) > 1:
            password = params[1]
        else:
            password = self.user_get_password()
            if password is None:
                logger.error("Password not specified: " +
                             "cannot change passowrd for user {}@{}".format(
                                 user, domain))
                return -1
        plain_text_pw = cfg.getBool("plain_text_passwords")
        update_dict = {
            USER_HA1_COL: self.user_get_ha1(username, domain, password),
            USER_PASS_COL: password if plain_text_pw else ""
        }

        if osips_ver < '3.2':
            update_dict[USER_HA1B_COL] = self.user_get_ha1b(
                username, domain, password)

        db.update(USER_TABLE, update_dict, user_dict)
        logger.info("Successfully changed password for {}@{}".format(
            username, domain))
        db.destroy()
        return True
示例#2
0
    def do_add(self, params=None):

        if len(params) < 1:
            name = cfg.read_param(
                None, "Please provide the username you want to add")
            if not name:
                logger.warning("no username to add!")
                return -1
        else:
            name = params[0]
        username, domain = self.user_get_domain(name)

        db, osips_ver = self.user_db_connect()
        if not db:
            return -1

        insert_dict = {USER_NAME_COL: username, USER_DOMAIN_COL: domain}
        # check if the user already exists
        if db.entry_exists(USER_TABLE, insert_dict):
            logger.error("User {}@{} already exists".format(username, domain))
            return -1

        if len(params) > 1:
            password = params[1]
        else:
            password = self.user_get_password()
            if password is None:
                logger.error(
                    "password not specified: cannot add user {}@{}".format(
                        user, domain))
                return -1
        insert_dict[USER_HA1_COL] = \
                self.user_get_ha1(username, domain, password)

        # only populate the 'ha1b' column on 3.1 or older OpenSIPS DBs
        if osips_ver < '3.2':
            insert_dict[USER_HA1B_COL] = \
                    self.user_get_ha1b(username, domain, password)

        insert_dict[USER_PASS_COL] = \
                password if cfg.getBool("plain_text_passwords") else ""

        db.insert(USER_TABLE, insert_dict)
        logger.info("Successfully added {}@{}".format(username, domain))

        db.destroy()
        return True
示例#3
0
    def do_password(self, params=None):

        if len(params) < 1:
            name = cfg.read_param(
                None,
                "Please provide the username you want to change the password")
            if not name:
                logger.warning("no username to change password!")
                return -1
        else:
            name = params[0]
        username, domain = self.user_get_domain(name)

        db = self.user_db_connect()
        if not db:
            return -1

        user_dict = {USER_NAME_COL: username, USER_DOMAIN_COL: domain}
        # check if the user already exists
        if not db.entry_exists(USER_TABLE, user_dict):
            logger.warning("User {}@{} does not exist".format(
                username, domain))
            return -1

        if len(params) > 1:
            password = params[1]
        else:
            password = self.user_get_password()
            if password is None:
                logger.error("password not specified: " +
                             "cannot change passowrd for user {}@{}".format(
                                 user, domain))
                return -1
        plain_text_pw = cfg.getBool("plain_text_passwords")
        update_dict = {
            USER_HA1_COL: self.user_get_ha1(username, domain, password),
            USER_HA1B_COL: self.user_get_ha1b(username, domain, password),
            USER_PASS_COL: "" if not plain_text_pw else password
        }

        db.update(USER_TABLE, update_dict, user_dict)
        logger.debug(
            "User's {}@{} password has been been successfully changed".format(
                username, domain))
        db.destroy()
        return True
示例#4
0
    def do_add(self, params=None):

        if len(params) < 1:
            name = cfg.read_param(
                None, "Please provide the username you want to add")
            if not name:
                logger.warning("no username to add!")
                return -1
        else:
            name = params[0]
        username, domain = self.user_get_domain(name)

        db = self.user_db_connect()
        if not db:
            return -1

        insert_dict = {USER_NAME_COL: username, USER_DOMAIN_COL: domain}
        # check if the user already exists
        if db.entry_exists(USER_TABLE, insert_dict):
            logger.warning("User {}@{} already exists".format(
                username, domain))
            return -1

        if len(params) > 1:
            password = params[1]
        else:
            password = self.user_get_password()
            if password is None:
                logger.error(
                    "password not specified: cannot add user {}@{}".format(
                        user, domain))
                return -1
        insert_dict[USER_HA1_COL] = \
                self.user_get_ha1(username, domain, password)
        insert_dict[USER_HA1B_COL] = \
                self.user_get_ha1b(username, domain, password)
        plain_text_pw = cfg.getBool("plain_text_passwords")
        insert_dict[USER_PASS_COL] = \
                "" if not plain_text_pw else password

        db.insert(USER_TABLE, insert_dict)
        logger.debug("User {}@{} has been successfully added!".format(
            username, domain))
        db.destroy()
        return True
示例#5
0
 def emptyline(self):
     if cfg.getBool('prompt_emptyline_repeat_cmd'):
         super().emptyline()