diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html index e592a6e8..6237444d 100644 --- a/data/interfaces/default/config.html +++ b/data/interfaces/default/config.html @@ -859,7 +859,8 @@ $("#pms-verify-status").html(' Verifying server...'); $('#pms-verify-status').fadeIn('fast'); $.ajax({ - url: 'http://' + pms_ip + ':' + pms_port + '/identity', + url: 'get_server_id', + data : { hostname: pms_ip, port: pms_port }, cache: true, async: true, timeout: 5000, @@ -868,7 +869,7 @@ $('#pms-verify-status').fadeIn('fast'); }, success: function (xml) { - if ( $(xml).find('MediaContainer').attr('machineIdentifier') ) { + if ($(xml).find('MediaContainer').attr('machineIdentifier')) { $("#pms_identifier").val($(xml).find('MediaContainer').attr('machineIdentifier')); $("#pms-verify-status").html(' Server verified!'); $('#pms-verify-status').fadeIn('fast'); diff --git a/data/interfaces/default/welcome.html b/data/interfaces/default/welcome.html index 571c4c6d..c7d118ad 100644 --- a/data/interfaces/default/welcome.html +++ b/data/interfaces/default/welcome.html @@ -299,12 +299,12 @@ from plexpy import version $("#pms-verify-status").html(' Validating server...'); $('#pms-verify-status').fadeIn('fast'); $.ajax({ - url: 'http://' + pms_ip + ':' + pms_port + '/identity', + url: 'get_server_id', + data : { hostname: pms_ip, port: pms_port }, cache: true, async: true, timeout: 5000, error: function(jqXHR, textStatus, errorThrown) { - console.log('we dont have a plex server'); $("#pms-verify-status").html(' This is not a Plex Server!'); $('#pms-verify-status').fadeIn('fast'); }, diff --git a/plexpy/http_handler.py b/plexpy/http_handler.py index a03db388..98416c9b 100644 --- a/plexpy/http_handler.py +++ b/plexpy/http_handler.py @@ -39,7 +39,8 @@ class HTTPHandler(object): request_type='GET', headers=None, output_format='raw', - return_type=False): + return_type=False, + no_token=False): valid_request_types = ['GET', 'POST', 'PUT', 'DELETE'] @@ -53,10 +54,12 @@ class HTTPHandler(object): else: handler = HTTPConnection(self.host, self.port, timeout=10) - if uri.find('?') > 0: - token_string = '&X-Plex-Token=' + self.token - else: - token_string = '?X-Plex-Token=' + self.token + token_string = '' + if not no_token: + if uri.find('?') > 0: + token_string = '&X-Plex-Token=' + self.token + else: + token_string = '?X-Plex-Token=' + self.token try: if headers: diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 964493e5..ff9ba0ba 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -1000,3 +1000,26 @@ class WebInterface(object): @cherrypy.expose def plexwatch_import(self, **kwargs): return serve_template(templatename="plexwatch_import.html", title="Import PlexWatch Database") + + @cherrypy.expose + def get_server_id(self, hostname=None, port=None, **kwargs): + from plexpy import http_handler + + if hostname and port: + request_handler = http_handler.HTTPHandler(host=hostname, + port=port, + token=None) + uri = '/identity' + request = request_handler.make_request(uri=uri, + proto='http', + request_type='GET', + output_format='', + no_token=True) + if request: + cherrypy.response.headers['Content-type'] = 'application/xml' + return request + else: + logger.warn('Unable to retrieve data.') + return None + else: + return None \ No newline at end of file