Server IP : 85.214.239.14 / Your IP : 18.191.14.62 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/cwd/proc/3/root/lib/python3/dist-packages/libcloud/common/ |
Upload File : |
# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import re from libcloud.common.base import ConnectionUserAndKey from libcloud.common.base import Response from libcloud.common.types import ProviderError OK_CODES = ['200', '211', '212', '213'] ERROR_CODES = ['401', '403', '405', '406', '407', '408', '409', '410', '411', '412', '413', '414', '450', '451'] class WorldWideDNSException(ProviderError): def __init__(self, value, http_code, code, driver=None): self.code = code super(WorldWideDNSException, self).__init__(value, http_code, driver) class SuspendedAccount(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Login ID you supplied is SUSPENDED, you need to renew" + \ " your account" super(SuspendedAccount, self).__init__(value, http_code, 401, driver) class LoginOrPasswordNotMatch(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Login ID and/or Password you supplied is not on file or" + \ " does not match" super(LoginOrPasswordNotMatch, self).__init__(value, http_code, 403, driver) class NonExistentDomain(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Domain name supplied is not in your account" super(NonExistentDomain, self).__init__(value, http_code, 405, driver) class CouldntRemoveDomain(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Error occured removing domain from name server, try again" super(CouldntRemoveDomain, self).__init__(value, http_code, 406, driver) class LimitExceeded(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Your limit was exceeded, you need to upgrade your account" super(LimitExceeded, self).__init__(value, http_code, 407, driver) class ExistentDomain(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Domain already exists on our servers" super(ExistentDomain, self).__init__(value, http_code, 408, driver) class DomainBanned(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Domain is listed in DNSBL and is banned from our servers" super(DomainBanned, self).__init__(value, http_code, 409, driver) class InvalidDomainName(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Invalid domain name" super(InvalidDomainName, self).__init__(value, http_code, 410, driver) class ErrorOnReloadInNameServer(WorldWideDNSException): def __init__(self, server, http_code, driver=None): if server == 1: value = "Name server #1 kicked an error on reload, contact support" code = 411 elif server == 2: value = "Name server #2 kicked an error on reload, contact support" code = 412 elif server == 3: value = "Name server #3 kicked an error on reload, contact support" code = 413 super(ErrorOnReloadInNameServer, self).__init__(value, http_code, code, driver) class NewUserNotValid(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "New userid is not valid" super(NewUserNotValid, self).__init__(value, http_code, 414, driver) class CouldntReachNameServer(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "Couldn't reach the name server, try again later" super(CouldntReachNameServer, self).__init__(value, http_code, 450, driver) class NoZoneFile(WorldWideDNSException): def __init__(self, http_code, driver=None): value = "No zone file in the name server queried" super(NoZoneFile, self).__init__(value, http_code, 451, driver) ERROR_CODE_TO_EXCEPTION_CLS = { '401': SuspendedAccount, '403': LoginOrPasswordNotMatch, '405': NonExistentDomain, '406': CouldntRemoveDomain, '407': LimitExceeded, '408': ExistentDomain, '409': DomainBanned, '410': InvalidDomainName, '411': ErrorOnReloadInNameServer, '412': ErrorOnReloadInNameServer, '413': ErrorOnReloadInNameServer, '414': NewUserNotValid, '450': CouldntReachNameServer, '451': NoZoneFile, } class WorldWideDNSResponse(Response): def parse_body(self): """ Parse response body. :return: Parsed body. :rtype: ``str`` """ if self._code_response(self.body): codes = re.split('\r?\n', self.body) for code in codes: if code in OK_CODES: continue elif code in ERROR_CODES: exception = ERROR_CODE_TO_EXCEPTION_CLS.get(code) if code in ['411', '412', '413']: server = int(code[2]) raise exception(server, self.status) raise exception(self.status) return self.body def _code_response(self, body): """ Checks if the response body contains code status. :rtype: ``bool`` """ available_response_codes = OK_CODES + ERROR_CODES codes = re.split('\r?\n', body) if codes[0] in available_response_codes: return True return False class WorldWideDNSConnection(ConnectionUserAndKey): host = 'www.worldwidedns.net' responseCls = WorldWideDNSResponse def add_default_params(self, params): """ Add parameters that are necessary for every request This method adds ``NAME`` and ``PASSWORD`` to the request. """ params["NAME"] = self.user_id params["PASSWORD"] = self.key reseller_id = getattr(self, 'reseller_id', None) if reseller_id: params["ID"] = reseller_id return params