def domain_update(self, request, request_ip=None): validator = Validator(request) token = validator.token() ip = validator.ip(request_ip) local_ip = validator.local_ip() map_local_address = validator.boolean('map_local_address', required=False) platform_version = validator.string('platform_version', required=False) web_protocol = validator.web_protocol(required=True) web_local_port = validator.port('web_local_port', required=True) web_port = validator.port('web_port', required=False) check_validator(validator) if map_local_address is None: map_local_address = False with self.create_storage() as storage: domain = storage.get_domain_by_update_token(token) if not domain or not domain.user.active: raise servicesexceptions.bad_request('Unknown domain update token') update_ip = (domain.map_local_address != map_local_address) or (domain.ip != ip) or (domain.local_ip != local_ip) domain.ip = ip domain.local_ip = local_ip domain.map_local_address = map_local_address domain.platform_version = platform_version domain.web_protocol = web_protocol domain.web_local_port = web_local_port domain.web_port = web_port if update_ip: self.dns.update_domain(self.main_domain, domain) domain.last_update = datetime.now() return domain
def port_probe(self, request, request_ip): validator = Validator(request) token = validator.token() port = validator.port('port', True) protocol = validator.string('protocol', False) ip = validator.string('ip', False) check_validator(validator) domain = None with self.create_storage() as storage: domain = storage.get_domain_by_update_token(token) if not domain or not domain.user.active: raise servicesexceptions.bad_request('Unknown domain update token') try: if ip: request_ip = ip response = requests.get('{0}://{1}:{2}/ping'.format( protocol, request_ip, port), timeout=1, verify=False, allow_redirects=False) if response.status_code == 200: return {'message': response.text, 'device_ip': request_ip}, 200 # TODO: Remove after release 18.07 reaches wider adoption elif response.status_code == 301 and protocol == 'http': return {'message': "OK", 'device_ip': request_ip}, 200 except Exception, e: pass
def port_probe(self, request, request_ip): validator = Validator(request) token = validator.token() port = validator.port('port', True) protocol = validator.string('protocol', False) ip = validator.string('ip', False) check_validator(validator) domain = None with self.create_storage() as storage: domain = storage.get_domain_by_update_token(token) if not domain or not domain.user.active: raise servicesexceptions.bad_request('Unknown domain update token') try: if ip: request_ip = ip response = requests.get('{0}://{1}:{2}/ping'.format(protocol, request_ip, port), timeout=1, verify=False, allow_redirects=False) if response.status_code == 200: return {'message': response.text, 'device_ip': request_ip}, 200 # TODO: Remove after release 18.07 reaches wider adoption elif response.status_code == 301 and protocol == 'http': return {'message': "OK", 'device_ip': request_ip}, 200 except Exception, e: pass
def domain_update(self, request, request_ip=None): validator = Validator(request) token = validator.token() ip = validator.ip(request_ip) local_ip = validator.local_ip() map_local_address = validator.boolean('map_local_address', required=False) platform_version = validator.string('platform_version', required=False) web_protocol = validator.web_protocol(required=True) web_local_port = validator.port('web_local_port', required=True) web_port = validator.port('web_port', required=False) check_validator(validator) if map_local_address is None: map_local_address = False with self.create_storage() as storage: domain = storage.get_domain_by_update_token(token) if not domain or not domain.user.active: raise servicesexceptions.bad_request( 'Unknown domain update token') update_ip = (domain.map_local_address != map_local_address) or ( domain.ip != ip) or (domain.local_ip != local_ip) domain.ip = ip domain.local_ip = local_ip domain.map_local_address = map_local_address domain.platform_version = platform_version domain.web_protocol = web_protocol domain.web_local_port = web_local_port domain.web_port = web_port if update_ip: self.dns.update_domain(self.main_domain, domain) domain.last_update = datetime.now() return domain
def validate_service(self, data): validator = Validator(data) validator.port('port', required=False) validator.port('local_port') check_validator(validator)
def validate_service(self, data): validator = Validator(data) validator.port() if validator.errors: message = ", ".join(validator.errors) raise servicesexceptions.bad_request(message)