示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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
示例#5
0
 def validate_service(self, data):
     validator = Validator(data)
     validator.port('port', required=False)
     validator.port('local_port')
     check_validator(validator)
示例#6
0
 def validate_service(self, data):
     validator = Validator(data)
     validator.port()
     if validator.errors:
         message = ", ".join(validator.errors)
         raise servicesexceptions.bad_request(message)
示例#7
0
 def validate_service(self, data):
     validator = Validator(data)
     validator.port('port', required=False)
     validator.port('local_port')
     check_validator(validator)