def post(self, *args, **kwargs): ''' Creates a new weapon system, and yes the form validation is shit ''' form = Form( name="Please enter a name", ssh_user="******", ssh_key="Please enter an ssh key", ip_address="Please enter a ip address", ssh_port="Please enter an ssh port", service_port="Please enter a service port", ) if form.validate(self.request.arguments): if WeaponSystem.by_name(self.get_argument('name')) is not None: self.render("admin/weaponsystem/create.html", errors=['That name already exists'] ) elif WeaponSystem.by_ip_address(self.get_argument('ip_address')) is not None: self.render("admin/weaponsystem/create.html", errors=['IP Address already in use'] ) else: try: if not 1 <= int(self.get_argument('ssh_port', -1)) < 65535: raise ValueError("SSh port not in range") if not 1 <= int(self.get_argument('service_port', -1)) < 65535: raise ValueError("Service port not in range") weapon_system = self.create_weapon() self.render("admin/weaponsystem/created.html", errors=None) except ValueError: self.render("admin/weaponsystem/create.html", errors=["Invalid port number; must be 1-65535"] ) else: self.render("admin/weaponsystem/create.html", errors=form.errors)
def post(self, *args, **kwargs): ''' Creates a new weapon system, and yes the form validation is shit ''' form = Form( name="Please enter a name", ssh_user="******", ssh_key="Please enter an ssh key", ip_address="Please enter a ip address", ssh_port="Please enter an ssh port", service_port="Please enter a service port", ) if form.validate(self.request.arguments): if WeaponSystem.by_name(self.get_argument('name')) is not None: self.render("admin/weaponsystem/create.html", errors=['That name already exists']) elif WeaponSystem.by_ip_address( self.get_argument('ip_address')) is not None: self.render("admin/weaponsystem/create.html", errors=['IP Address already in use']) else: try: if not 1 <= int(self.get_argument('ssh_port', -1)) < 65535: raise ValueError("SSh port not in range") if not 1 <= int(self.get_argument('service_port', -1)) < 65535: raise ValueError("Service port not in range") weapon_system = self.create_weapon() self.render("admin/weaponsystem/created.html", errors=None) except ValueError: self.render( "admin/weaponsystem/create.html", errors=["Invalid port number; must be 1-65535"]) else: self.render("admin/weaponsystem/create.html", errors=form.errors)
def validate_form(self): ''' Shitty form validation ''' # Name try: self.name = self.filter_string(self.get_argument("name")) if WeaponSystem.by_name(self.name) != None: raise ValueError("Name already exits") except: self.render( "admin/create_weaponsystem.html", message="Invalid Name") return False # IP Address try: self.ip_address = self.filter_string( self.get_argument("ipaddress"), extra_chars=".") if WeaponSystem.by_ip_address(self.ip_address) != None: raise ValueError("IP Address already in use") except: self.render("admin/create_weaponsystem.html", message="Missing IP Address") return False # Service Port try: self.listen_port = int(self.get_argument("srvport")) if not 1 < self.listen_port < 65535: raise ValueError("Invalid port range, or not a number") except: self.render("admin/create_weaponsystem.html", message="Invalid Listen Port") return False # SSH User try: self.ssh_user = self.filter_string(self.get_argument("sshuser")) if self.ssh_user.lower() == 'root': raise ValueError("SSH User cannot be 'root'") except: self.render("admin/create_weaponsystem.html", message="Missing SSH User") return False # SSH Key try: self.ssh_key = self.filter_string( self.get_argument("sshkey"), extra_chars="+/=- \n") except: self.render("admin/create_weaponsystem.html", message="Missing SSH Private Key") return False # SSH Port try: self.ssh_port = int(self.get_argument("sshport")) if not 1 < self.ssh_port < 65535: raise ValueError("Invalid port range, or not a number") except: self.render("admin/create_weaponsystem.html", message="Missing SSH Port") return False return True