Пример #1
0
 def CreateAccount(self, username, password, email, current=None):
     """
     Allow the user to attempt to create a new account on the server.
     """
     # Validate.
     p = re.compile("[^A-Za-z0-9]");
     if p.search(username):
         # Invalid character.
         raise BadInformationException("Username contains invalid characters.");
     
     # Validating e-mails are hard to do, so let's keep it simple.
     if '@' not in email or '.' not in email:
         # Invalid e-mail.
         raise BadInformationException("Invalid e-mail address."); 
     
     # Hash the password.
     password = hash_password(password);
     
     results = self.database.do_query(Procedures.account_exists(), username);
     if len(results) != 0:
         self.report("Sorry %s, but that account already exists." % username);
         return False;
     
     results = self.database.do_insert(Procedures.new_account(), username, password, 
                                       Utils.get_timestamp(), Utils.get_timestamp(), 
                                       0, 0, email);
     
     if results != 1:
         # No rows updated.
         self.report("Account creation failed! Reason: %s." % self.database.get_last_error());
         raise VTankException("Internal database error -- please report this!");
     
     self.report("Account created: %s (email: %s)." % (username, email));
     
     return True;
Пример #2
0
    def EditAccountByName(self, accountName, newInformation, current=None):
        self.refresh_action()

        # Validate.
        p = re.compile("[^A-Za-z0-9]")
        if p.search(accountName):
            # Invalid character.
            raise BadInformationException(
                "Old account name cannot exist (has invalid characters).")

        if p.search(newInformation.accountName):
            # Invalid character in new account name.
            raise BadInformationException(
                "New account name has invalid characters.")

        # Validating e-mails is hard to do, so let's keep it simple.
        if '@' not in newInformation.email or '.' not in newInformation.email:
            # Invalid e-mail.
            raise BadInformationException("Invalid e-mail address.")

        results = self.database.do_query(Procedures.account_exists(),
                                         accountName)
        if len(results) != 1:
            self.report("Account edit failed: %s doesn't exist." % username)
            raise BadInformationException("That account name does not exist.")

        pass
Пример #3
0
 def BanUserByAccountName(self, accountName, reason, current=None):
     self.refresh_action();
     
     results = self.database.do_query(Procedures.account_exists(), accountName);
     if len(results) != 1:
         self.report("Account ban failed: %s doesn't exist." % accountName);
         raise BadInformationException("That account name does not exist.");
     
     result = self.database.do_insert(Procedures.set_user_level(), -99, accountName);
     
     if result == -1:
         self.report("Failed to ban account %s" % accountName);
Пример #4
0
 def UnbanUserByAccountName(self, accountName, current=None):
     self.refresh_action();
     
     results = self.database.do_query(Procedures.account_exists(), accountName);
     if len(results) != 1:
         self.report("Account unbanning failed: %s doesn't exist." % accountName);
         raise BadInformationException("That account name does not exist.");
     
     result = self.database.do_insert(Procedures.set_user_level(), 0, accountName);
     
     if result == -1:
         self.report("Failed to unban account %s" % accountName);
         raise VTankException("Internal database error -- please report this!");
Пример #5
0
    def BanUserByAccountName(self, accountName, reason, current=None):
        self.refresh_action()

        results = self.database.do_query(Procedures.account_exists(),
                                         accountName)
        if len(results) != 1:
            self.report("Account ban failed: %s doesn't exist." % accountName)
            raise BadInformationException("That account name does not exist.")

        result = self.database.do_insert(Procedures.set_user_level(), -99,
                                         accountName)

        if result == -1:
            self.report("Failed to ban account %s" % accountName)
Пример #6
0
    def UnbanUserByAccountName(self, accountName, current=None):
        self.refresh_action()

        results = self.database.do_query(Procedures.account_exists(),
                                         accountName)
        if len(results) != 1:
            self.report("Account unbanning failed: %s doesn't exist." %
                        accountName)
            raise BadInformationException("That account name does not exist.")

        result = self.database.do_insert(Procedures.set_user_level(), 0,
                                         accountName)

        if result == -1:
            self.report("Failed to unban account %s" % accountName)
            raise VTankException(
                "Internal database error -- please report this!")
Пример #7
0
    def CreateAccount(self,
                      username,
                      password,
                      email,
                      userlevel,
                      current=None):
        self.refresh_action()

        # Validate.
        p = re.compile("[^A-Za-z0-9]")
        if p.search(username):
            # Invalid character.
            raise BadInformationException(
                "Username contains invalid characters.")

        # Validating e-mails is hard to do, so let's keep it simple.
        if '@' not in email or '.' not in email:
            # Invalid e-mail.
            raise BadInformationException("Invalid e-mail address.")

        # Make sure password is filled in.
        if not password:
            raise BadInformationException("Password cannot be empty.")

        # Hash the password.
        password = sha1(password).hexdigest()

        results = self.database.do_query(Procedures.account_exists(), username)
        if len(results) != 0:
            self.report("Account creation failed: %s exists." % username)
            raise BadInformationException("That account name already exists.")

        results = self.database.do_insert(Procedures.new_account(), username,
                                          password, Utils.get_timestamp(),
                                          Utils.get_timestamp(), 0, userlevel,
                                          email)

        if results != 1:
            # No rows updated.
            self.report("Account creation failed! Reason: %s." %
                        self.database.get_last_error())
            raise BadInformationException(
                "Internal database error -- please report this!")

        self.report("Account created: %s (email: %s)." % (username, email))
Пример #8
0
 def EditAccountByName(self, accountName, newInformation, current=None):
     self.refresh_action();
     
     # Validate.
     p = re.compile("[^A-Za-z0-9]");
     if p.search(accountName):
         # Invalid character.
         raise BadInformationException("Old account name cannot exist (has invalid characters).");
     
     if p.search(newInformation.accountName):
         # Invalid character in new account name.
         raise BadInformationException("New account name has invalid characters.");
     
     # Validating e-mails is hard to do, so let's keep it simple.
     if '@' not in newInformation.email or '.' not in newInformation.email:
         # Invalid e-mail.
         raise BadInformationException("Invalid e-mail address."); 
     
     results = self.database.do_query(Procedures.account_exists(), accountName);
     if len(results) != 1:
         self.report("Account edit failed: %s doesn't exist." % username);
         raise BadInformationException("That account name does not exist.");
     
     pass;
Пример #9
0
 def CreateAccount(self, username, password, email, userlevel, current=None):
     self.refresh_action();
     
     # Validate.
     p = re.compile("[^A-Za-z0-9]");
     if p.search(username):
         # Invalid character.
         raise BadInformationException("Username contains invalid characters.");
     
     # Validating e-mails is hard to do, so let's keep it simple.
     if '@' not in email or '.' not in email:
         # Invalid e-mail.
         raise BadInformationException("Invalid e-mail address."); 
     
     # Make sure password is filled in.
     if not password:
         raise BadInformationException("Password cannot be empty.");
     
     # Hash the password.
     password = sha1(password).hexdigest();
     
     results = self.database.do_query(Procedures.account_exists(), username);
     if len(results) != 0:
         self.report("Account creation failed: %s exists." % username);
         raise BadInformationException("That account name already exists.");
     
     results = self.database.do_insert(Procedures.new_account(), username, password, 
                                       Utils.get_timestamp(), Utils.get_timestamp(), 
                                       0, userlevel, email);
     
     if results != 1:
         # No rows updated.
         self.report("Account creation failed! Reason: %s." % self.database.get_last_error());
         raise BadInformationException("Internal database error -- please report this!");
     
     self.report("Account created: %s (email: %s)." % (username, email));