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;
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
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);
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!");
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)
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!")
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))
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;
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));