Example #1
0
 def __init__(self, user, password):
     self.username = user
     self.server = xmlrpc_client.Server(WEBFACTION_API_ENDPOINT)
     try:
         self.session_id, _ = self.server.login(self.username, password)
     except xmlrpc_client.Fault as e:
         raise WebFactionFault(e)
Example #2
0
def connect(hostPort=None,
            useSSL=None,
            tsPath=None,
            TransportClass=sslutils.VerifyingSafeTransport,
            timeout=sslutils.SOCKET_DEFAULT_TIMEOUT):

    hostPort = cannonizeHostPort(hostPort)
    if useSSL is None:
        useSSL = _USE_SSL
    if tsPath is None:
        tsPath = _TRUSTED_STORE_PATH
    if useSSL:
        KEYFILE = tsPath + '/keys/vdsmkey.pem'
        CERTFILE = tsPath + '/certs/vdsmcert.pem'
        CACERT = tsPath + '/certs/cacert.pem'

        for f in (KEYFILE, CERTFILE, CACERT):
            if not os.access(f, os.R_OK):
                raise Exception("No permission to read file: %s" % f)

        transport = TransportClass(key_file=KEYFILE,
                                   cert_file=CERTFILE,
                                   ca_certs=CACERT,
                                   timeout=timeout)
        server = xmlrpclib.ServerProxy('https://%s' % hostPort,
                                       wrap_transport(transport))
    else:
        transport = wrap_transport(SingleRequestTransport(timeout=timeout))
        server = xmlrpclib.Server('http://%s' % hostPort, transport)
    return server
Example #3
0
def dd_environment():
    with docker_run(compose_file=os.path.join(HERE, 'compose',
                                              'supervisord.yaml'),
                    endpoints=URL):
        server = xmlrpclib.Server('{}/RPC2'.format(URL))
        server.supervisor.startAllProcesses()
        yield SUPERVISORD_CONFIG
Example #4
0
    def open_session(self):
        # type: () -> Dict[str, str]
        try:
            self.xenserver = xmlrpclib.Server(self._base_url)
        except Exception as e:
            self.log.warning(str(e))
            return {}

        # See reference https://xapi-project.github.io/xen-api/classes/session.html
        session = self._session_login(self.xenserver)

        if session.get('Status') == 'Failure':
            if 'SESSION_AUTHENTICATION_FAILED' in session.get(
                    'ErrorDescription', []):
                self.log.warning('Connection failed with xmlrpc: %s',
                                 str(session['ErrorDescription']))
                return {}
            if 'HOST_IS_SLAVE' in session.get('ErrorDescription', []):
                # If xenserver host is a slave, open a connection with the pool master
                # {'Status': 'Failure', 'ErrorDescription': ['HOST_IS_SLAVE', '192.168.101.102']}
                self.log.debug(
                    'Host is a slave, trying to connect to the pool master')
                self._additional_tags.append('server_type:slave')
                return self._get_master_session(session)

            self.log.warning('Unknown xmlrpc error: %s', str(session))
            return {}
        elif session.get('Status') == 'Success':
            self._additional_tags.append('server_type:master')

            return session
        return {}
Example #5
0
 def __init__(self, url, user, password):
     self.user = user
     self.password = password
     if not url.startswith('http://') and not url.startswith('https://'):
         url = 'http://' + url
     if not url.endswith(XMLRPC_PATH):
         if not url.endswith('/'):
             url += '/'
         url += XMLRPC_PATH
     self.service_url = url
     self.server = xmlrpc_client.Server(self.service_url)
     self.base_url = self.service_url.replace(XMLRPC_PATH, '')
Example #6
0
 def _connect(instance):
     sock = instance.get('socket')
     if sock is not None:
         host = instance.get('host', DEFAULT_SOCKET_IP)
         transport = supervisor.xmlrpc.SupervisorTransport(None, None, sock)
         server = xmlrpclib.ServerProxy(host, transport=transport)
     else:
         host = instance.get('host', DEFAULT_HOST)
         port = instance.get('port', DEFAULT_PORT)
         user = instance.get('user')
         password = instance.get('pass')
         auth = '{}:{}@'.format(user, password) if user and password else ''
         server = xmlrpclib.Server('http://{}{}:{}/RPC2'.format(auth, host, port))
     return server.supervisor
Example #7
0
    def _get_master_session(self, session):
        # type: (Dict[str, str]) -> Dict[str, str]
        # {'Status': 'Failure', 'ErrorDescription': ['HOST_IS_SLAVE', '192.168.101.102']}
        if len(session.get('ErrorDescription', [])) < 1:
            return {}

        master_address = session['ErrorDescription'][1]
        if not master_address.startswith('http://'):
            master_address = 'http://' + master_address
        master_xenserver = xmlrpclib.Server(master_address)

        # Master credentials can be different, we could specify new `master_username` and
        # `master_password` options later if requested
        master_session = self._session_login(master_xenserver)

        if master_session.get('Status') == 'Success':
            self.xenserver = master_xenserver
            return master_session

        return {}
Example #8
0
 def Login(self):
     self.podserver = xmlrpc_client.Server('http://ssp.podnapisi.net:8000')
     init = self.podserver.initiate(USER_AGENT)
     hash = md5()
     hash.update(settings_provider.getSetting("PNpass"))
     self.password = sha256(str(hash.hexdigest()) +
                            str(init['nonce'])).hexdigest()
     self.user = settings_provider.getSetting("PNuser")
     if init['status'] == 200:
         self.pod_session = init['session']
         auth = self.podserver.authenticate(self.pod_session, self.user,
                                            self.password)
         if auth['status'] == 300:
             log(__name__, "Authenticate [%s]" % "InvalidCredentials")
             raise SubtitlesDownloadError(
                 SubtitlesErrors.INVALID_CREDENTIALS_ERROR,
                 "provided invalid credentials")
             self.connected = False
         else:
             log(__scriptid__, "Connected to Podnapisi server")
             self.connected = True
     else:
         self.connected = False
Example #9
0
    def get(self, name, imdb, season, episode):
        try:
            if not control.setting('subtitles') == 'true':
                raise Exception()

            langDict = {
                'Afrikaans': 'afr', 'Albanian': 'alb', 'Arabic': 'ara', 'Armenian': 'arm', 'Basque': 'baq',
                'Bengali': 'ben', 'Bosnian': 'bos', 'Breton': 'bre', 'Bulgarian': 'bul', 'Burmese': 'bur',
                'Catalan': 'cat', 'Chinese': 'chi', 'Croatian': 'hrv', 'Czech': 'cze', 'Danish': 'dan', 'Dutch': 'dut',
                'English': 'eng', 'Esperanto': 'epo', 'Estonian': 'est', 'Finnish': 'fin', 'French': 'fre',
                'Galician': 'glg', 'Georgian': 'geo', 'German': 'ger', 'Greek': 'ell', 'Hebrew': 'heb', 'Hindi': 'hin',
                'Hungarian': 'hun', 'Icelandic': 'ice', 'Indonesian': 'ind', 'Italian': 'ita', 'Japanese': 'jpn',
                'Kazakh': 'kaz', 'Khmer': 'khm', 'Korean': 'kor', 'Latvian': 'lav', 'Lithuanian': 'lit',
                'Luxembourgish': 'ltz', 'Macedonian': 'mac', 'Malay': 'may', 'Malayalam': 'mal', 'Manipuri': 'mni',
                'Mongolian': 'mon', 'Montenegrin': 'mne', 'Norwegian': 'nor', 'Occitan': 'oci', 'Persian': 'per',
                'Polish': 'pol', 'Portuguese': 'por,pob', 'Portuguese(Brazil)': 'pob,por', 'Romanian': 'rum',
                'Russian': 'rus', 'Serbian': 'scc', 'Sinhalese': 'sin', 'Slovak': 'slo', 'Slovenian': 'slv',
                'Spanish': 'spa', 'Swahili': 'swa', 'Swedish': 'swe', 'Syriac': 'syr', 'Tagalog': 'tgl', 'Tamil': 'tam',
                'Telugu': 'tel', 'Thai': 'tha', 'Turkish': 'tur', 'Ukrainian': 'ukr', 'Urdu': 'urd'}

            codePageDict = {'ara': 'cp1256', 'ar': 'cp1256', 'ell': 'cp1253', 'el': 'cp1253', 'heb': 'cp1255',
                            'he': 'cp1255', 'tur': 'cp1254', 'tr': 'cp1254', 'rus': 'cp1251', 'ru': 'cp1251'}

            quality = ['bluray', 'hdrip', 'brrip', 'bdrip', 'dvdrip', 'webrip', 'hdtv']

            langs = []
            try:
                try:
                    langs = langDict[control.setting('subtitles.lang.1')].split(',')
                except Exception:
                    langs.append(langDict[control.setting('subtitles.lang.1')])
            except Exception:
                pass
            try:
                try:
                    langs = langs + langDict[control.setting('subtitles.lang.2')].split(',')
                except Exception:
                    langs.append(langDict[control.setting('subtitles.lang.2')])
            except Exception:
                pass

            try:
                subLang = xbmc.Player().getSubtitles()
            except Exception:
                subLang = ''
            if subLang == langs[0]:
                raise Exception()

            server = xmlrpc_client.Server('https://api.opensubtitles.org/xml-rpc', verbose=0)
            token = server.LogIn('', '', 'en', 'XBMC_Subtitles_v1')['token']

            sublanguageid = ','.join(langs)
            imdbid = re.sub('[^0-9]', '', imdb)

            if not (season == None or episode == None):
                result = server.SearchSubtitles(
                    token, [{'sublanguageid': sublanguageid, 'imdbid': imdbid, 'season': season, 'episode': episode}])['data']
                fmt = ['hdtv']
            else:
                result = server.SearchSubtitles(token, [{'sublanguageid': sublanguageid, 'imdbid': imdbid}])['data']
                try:
                    vidPath = xbmc.Player().getPlayingFile()
                except Exception:
                    vidPath = ''
                fmt = re.split('\.|\(|\)|\[|\]|\s|\-', vidPath)
                fmt = [i.lower() for i in fmt]
                fmt = [i for i in fmt if i in quality]

            filter = []
            result = [i for i in result if i['SubSumCD'] == '1']

            for lang in langs:
                filter += [i for i in result if i['SubLanguageID'] ==
                           lang and any(x in i['MovieReleaseName'].lower() for x in fmt)]
                filter += [i for i in result if i['SubLanguageID'] ==
                           lang and any(x in i['MovieReleaseName'].lower() for x in quality)]
                filter += [i for i in result if i['SubLanguageID'] == lang]

            try:
                lang = xbmc.convertLanguage(filter[0]['SubLanguageID'], xbmc.ISO_639_1)
            except Exception:
                lang = filter[0]['SubLanguageID']

            content = [filter[0]['IDSubtitleFile'], ]
            content = server.DownloadSubtitles(token, content)
            content = base64.b64decode(content['data'][0]['data'])
            content = gzip.GzipFile(fileobj=six.BytesIO(content)).read()
            if six.PY3: content = six.ensure_text(content)

            subtitle = control.transPath('special://temp/')
            subtitle = os.path.join(subtitle, 'TemporarySubs.%s.srt' % lang)

            codepage = codePageDict.get(lang, '')
            if codepage and control.setting('subtitles.utf') == 'true':
                try:
                    content_encoded = codecs.decode(content, codepage)
                    content = codecs.encode(content_encoded, 'utf-8')
                except Exception:
                    pass

            file = control.openFile(subtitle, 'w')
            file.write(str(content))
            file.close()

            control.sleep(1000)
            xbmc.Player().setSubtitles(subtitle)
        except Exception:
            pass
Example #10
0
 def __init__(self, deployment, config):
     super(CobblerProvider, self).__init__(deployment, config)
     self.config = config
     self.cobbler = xmlrpclib.Server(uri="http://%s/cobbler_api" %
                                     config["host"])
Example #11
0
def xmlrpcmethod(uri, method):
    server = xmlrpc_client.Server(uri)
    try:
        return getattr(server, method)
    except Exception:
        raise AttributeError("Error occurred while getting server method")
Example #12
0
def xmlrpctoken(uri, login, password):
    server = xmlrpc_client.Server(uri)
    try:
        return server.login(login, password)
    except Exception:
        raise error.AuthenticationError("Error occurred while login process")
Example #13
0
 def __init__(self, user_agent=''):
     self.server = xmlrpc_client.Server(BASE_URL_XMLRPC, verbose=0)
     #login = self.server.LogIn("", "", "en", "%s_v%s" % (__scriptname__.replace(" ", "_"), __version__))
     login = self.server.LogIn('', '', 'en', user_agent)
     self.osdb_token = login["token"]