98 lines
3.8 KiB
Python
98 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import, division, unicode_literals
|
|
from logging import getLogger
|
|
|
|
from .. import utils, json_rpc as js, variables as v
|
|
|
|
LOG = getLogger('PLEX.connection')
|
|
|
|
|
|
class Connection(object):
|
|
def __init__(self, entrypoint=False):
|
|
self.verify_ssl_cert = None
|
|
self.ssl_cert_path = None
|
|
self.machine_identifier = None
|
|
self.server_name = None
|
|
self.https = None
|
|
self.host = None
|
|
self.port = None
|
|
self.server = None
|
|
self.online = False
|
|
self.webserver_host = None
|
|
self.webserver_port = None
|
|
self.webserver_username = None
|
|
self.webserver_password = None
|
|
|
|
if entrypoint:
|
|
self.load_entrypoint()
|
|
else:
|
|
self.load_webserver()
|
|
self.load()
|
|
# Token passed along, e.g. if playback initiated by Plex Companion. Might be
|
|
# another user playing something! Token identifies user
|
|
self.plex_transient_token = None
|
|
|
|
def load_webserver(self):
|
|
"""
|
|
PKC needs Kodi webserver to work correctly
|
|
"""
|
|
LOG.debug('Loading Kodi webserver details')
|
|
# Kodi webserver details
|
|
if js.get_setting('services.webserver') in (None, False):
|
|
# Enable the webserver, it is disabled
|
|
js.set_setting('services.webserver', True)
|
|
self.webserver_host = 'localhost'
|
|
self.webserver_port = js.get_setting('services.webserverport')
|
|
self.webserver_username = js.get_setting('services.webserverusername')
|
|
self.webserver_password = js.get_setting('services.webserverpassword')
|
|
|
|
def load(self):
|
|
LOG.debug('Loading connection settings')
|
|
# Shall we verify SSL certificates? "None" will leave SSL enabled
|
|
# Ignore this setting for Kodi >= 18 as Kodi 18 is much stricter
|
|
# with checking SSL certs
|
|
self.verify_ssl_cert = None if v.KODIVERSION >= 18 or utils.settings('sslverify') == 'true' \
|
|
else False
|
|
# Do we have an ssl certificate for PKC we need to use?
|
|
self.ssl_cert_path = utils.settings('sslcert') \
|
|
if utils.settings('sslcert') != 'None' else None
|
|
|
|
self.machine_identifier = utils.settings('plex_machineIdentifier') or None
|
|
self.server_name = utils.settings('plex_servername') or None
|
|
self.https = utils.settings('https') == 'true'
|
|
self.host = utils.settings('ipaddress') or None
|
|
self.port = int(utils.settings('port')) if utils.settings('port') else None
|
|
if not self.host:
|
|
self.server = None
|
|
elif self.https:
|
|
self.server = 'https://%s:%s' % (self.host, self.port)
|
|
else:
|
|
self.server = 'http://%s:%s' % (self.host, self.port)
|
|
self.online = False
|
|
LOG.debug('Set server %s (%s) to %s',
|
|
self.server_name, self.machine_identifier, self.server)
|
|
|
|
def load_entrypoint(self):
|
|
self.verify_ssl_cert = None if v.KODIVERSION >= 18 or utils.settings('sslverify') == 'true' \
|
|
else False
|
|
self.ssl_cert_path = utils.settings('sslcert') \
|
|
if utils.settings('sslcert') != 'None' else None
|
|
self.https = utils.settings('https') == 'true'
|
|
self.host = utils.settings('ipaddress') or None
|
|
self.port = int(utils.settings('port')) if utils.settings('port') else None
|
|
if not self.host:
|
|
self.server = None
|
|
elif self.https:
|
|
self.server = 'https://%s:%s' % (self.host, self.port)
|
|
else:
|
|
self.server = 'http://%s:%s' % (self.host, self.port)
|
|
|
|
def clear(self):
|
|
LOG.debug('Clearing connection settings')
|
|
self.machine_identifier = None
|
|
self.server_name = None
|
|
self.https = None
|
|
self.host = None
|
|
self.port = None
|
|
self.server = None
|