Пример #1
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
Пример #2
0
    def domain_acquire(self, request):
        user = self.authenticate(request)

        validator = Validator(request)
        user_domain = validator.new_user_domain()
        device_mac_address = validator.device_mac_address()
        device_name = validator.string('device_name', required=True)
        device_title = validator.string('device_title', required=True)
        check_validator(validator)

        with self.create_storage() as storage:
            domain = storage.get_domain_by_name(user_domain)
            if domain and domain.user_id != user.id:
                raise servicesexceptions.parameter_error(
                    'user_domain', 'User domain name is already in use')

            update_token = util.create_token()
            if not domain:
                domain = Domain(user_domain,
                                device_mac_address,
                                device_name,
                                device_title,
                                update_token=update_token)
                domain.user = user
                storage.add(domain)
            else:
                domain.update_token = update_token
                domain.device_mac_address = device_mac_address
                domain.device_name = device_name
                domain.device_title = device_title

            return domain
Пример #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_acquire(self, request):
        user = self.authenticate(request)

        validator = Validator(request)
        user_domain = validator.new_user_domain()
        device_mac_address = validator.device_mac_address()
        device_name = validator.string('device_name', required=True)
        device_title = validator.string('device_title', required=True)
        check_validator(validator)

        with self.create_storage() as storage:
            domain = storage.get_domain_by_name(user_domain)
            if domain and domain.user_id != user.id:
                raise servicesexceptions.parameter_error('user_domain', 'User domain name is already in use')

            update_token = util.create_token()
            if not domain:
                domain = Domain(user_domain, device_mac_address, device_name, device_title, update_token=update_token)
                domain.user = user
                storage.add(domain)
            else:
                domain.update_token = update_token
                domain.device_mac_address = device_mac_address
                domain.device_name = device_name
                domain.device_title = device_title

            return domain
Пример #5
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
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
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