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 get_domain(self, request): validator = Validator(request) token = validator.token() 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') return domain
def get_domain(self, request): validator = Validator(request) token = validator.token() 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') return domain
def user_log(self, request): validator = Validator(request) token = validator.token() data = validator.string('data') include_support = validator.boolean('include_support', False, True) with self.create_storage() as storage: user = storage.get_user_by_update_token(token) if not user: raise servicesexceptions.bad_request('Invalid update token') self.mail.send_logs(user.email, data, include_support)
def activate(self, request): validator = Validator(request) token = validator.token() check_validator(validator) with self.create_storage() as storage: user = storage.get_user_by_activate_token(token) if not user: raise servicesexceptions.bad_request('Invalid activation token') if user.active: raise servicesexceptions.bad_request('User is active already') user.active = True return True
def activate(self, request): validator = Validator(request) token = validator.token() check_validator(validator) with self.create_storage() as storage: user = storage.get_user_by_activate_token(token) if not user: raise servicesexceptions.bad_request( 'Invalid activation token') if user.active: raise servicesexceptions.bad_request('User is active already') user.active = True return True
def user_set_password(self, request): validator = Validator(request) token = validator.token() password = validator.new_password() check_validator(validator) with self.create_storage() as storage: user = storage.get_user_by_token(ActionType.PASSWORD, token) if not user: raise servicesexceptions.bad_request('Invalid password token') user.password_hash = util.hash(password) self.mail.send_set_password(user.email) action = storage.get_action(token) storage.delete(action)
def activate(self, request): validator = Validator(request) token = validator.token() errors = validator.errors if errors: message = ", ".join(errors) raise servicesexceptions.bad_request(message) with self.create_storage() as storage: user = storage.get_user_by_activate_token(token) if not user: raise servicesexceptions.bad_request('Invalid activation token') if user.active: raise servicesexceptions.conflict('User is active already') user.active = True return True
def domain_update(self, request, request_ip=None): validator = Validator(request) token = validator.token() ip = validator.ip(request_ip) errors = validator.errors if errors: message = ", ".join(errors) raise servicesexceptions.bad_request(message) 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') map(self.validate_service, request['services']) request_services = [new_service_from_dict(s) for s in request['services']] added_services = self.get_missing(request_services, domain.services) removed_services = self.get_missing(domain.services, request_services) storage.delete(removed_services) for s in added_services: s.domain = domain domain.services.append(s) storage.add(added_services) is_new_dmain = domain.ip is None update_ip = domain.ip != ip domain.ip = ip if is_new_dmain: self.dns.new_domain(self.main_domain, domain) else: self.dns.update_domain(self.main_domain, domain, update_ip=update_ip, added=added_services, removed=removed_services) domain.last_update = datetime.now() return domain
def user_set_password(self, request): validator = Validator(request) token = validator.token() password = validator.new_password() errors = validator.errors if errors: message = ", ".join(errors) raise servicesexceptions.bad_request(message) with self.create_storage() as storage: user = storage.get_user_by_token(ActionType.PASSWORD, token) if not user: raise servicesexceptions.forbidden('Invalid password token') user.password_hash = util.hash(password) self.mail.send_set_password(user.email) action = storage.get_action(token) storage.delete(action)
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