mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-07 05:31:15 -07:00
Set different client ID when fetching a new Plex token
This commit is contained in:
parent
ef8557b50a
commit
e34e775f41
6 changed files with 16 additions and 14 deletions
|
@ -610,12 +610,12 @@ function uuidv4() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPlexHeaders() {
|
function getPlexHeaders(clientID) {
|
||||||
return {
|
return {
|
||||||
'Accept': 'application/json',
|
'Accept': 'application/json',
|
||||||
'X-Plex-Product': 'Tautulli',
|
'X-Plex-Product': 'Tautulli',
|
||||||
'X-Plex-Version': 'Plex OAuth',
|
'X-Plex-Version': 'Plex OAuth',
|
||||||
'X-Plex-Client-Identifier': getLocalStorage('Tautulli_ClientID', uuidv4(), false),
|
'X-Plex-Client-Identifier': clientID ? clientID : getLocalStorage('Tautulli_ClientID', uuidv4(), false),
|
||||||
'X-Plex-Platform': p.name,
|
'X-Plex-Platform': p.name,
|
||||||
'X-Plex-Platform-Version': p.version,
|
'X-Plex-Platform-Version': p.version,
|
||||||
'X-Plex-Model': 'Plex OAuth',
|
'X-Plex-Model': 'Plex OAuth',
|
||||||
|
@ -674,8 +674,8 @@ function closePlexOAuthWindow() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getPlexOAuthPin = function () {
|
getPlexOAuthPin = function (clientID) {
|
||||||
var x_plex_headers = getPlexHeaders();
|
var x_plex_headers = getPlexHeaders(clientID);
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -695,7 +695,7 @@ getPlexOAuthPin = function () {
|
||||||
|
|
||||||
var polling = null;
|
var polling = null;
|
||||||
|
|
||||||
function PlexOAuth(success, error, pre) {
|
function PlexOAuth(success, error, pre, clientID) {
|
||||||
if (typeof pre === "function") {
|
if (typeof pre === "function") {
|
||||||
pre()
|
pre()
|
||||||
}
|
}
|
||||||
|
@ -703,8 +703,8 @@ function PlexOAuth(success, error, pre) {
|
||||||
plex_oauth_window = PopupCenter('', 'Plex-OAuth', 600, 700);
|
plex_oauth_window = PopupCenter('', 'Plex-OAuth', 600, 700);
|
||||||
$(plex_oauth_window.document.body).html(plex_oauth_loader);
|
$(plex_oauth_window.document.body).html(plex_oauth_loader);
|
||||||
|
|
||||||
getPlexOAuthPin().then(function (data) {
|
getPlexOAuthPin(clientID).then(function (data) {
|
||||||
var x_plex_headers = getPlexHeaders();
|
var x_plex_headers = getPlexHeaders(clientID);
|
||||||
const pin = data.pin;
|
const pin = data.pin;
|
||||||
const code = data.code;
|
const code = data.code;
|
||||||
|
|
||||||
|
|
|
@ -973,7 +973,7 @@
|
||||||
</div>
|
</div>
|
||||||
<p class="help-block">Token for Plex.tv authentication.</p>
|
<p class="help-block">Token for Plex.tv authentication.</p>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" id="pms_uuid" name="pms_uuid" value="${config['pms_uuid']}">
|
<input type="hidden" id="pms_client_id" name="pms_client_id" value="${config['pms_client_id']}">
|
||||||
|
|
||||||
<p><input type="button" class="btn btn-bright save-button" value="Save" data-success="Changes saved successfully"></p>
|
<p><input type="button" class="btn btn-bright save-button" value="Save" data-success="Changes saved successfully"></p>
|
||||||
|
|
||||||
|
@ -2753,7 +2753,7 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#sign-in-plex').click(function() {
|
$('#sign-in-plex').click(function() {
|
||||||
PlexOAuth(OAuthSuccessCallback, OAuthErrorCallback, OAuthPreFunction);
|
PlexOAuth(OAuthSuccessCallback, OAuthErrorCallback, OAuthPreFunction, $('#pms_client_id').val(uuidv4()).val());
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load database import modal
|
// Load database import modal
|
||||||
|
|
|
@ -111,7 +111,8 @@
|
||||||
Tautulli requires a Plex.tv account. Click the button below to sign in on Plex.tv. You may need to allow popups in your browser.
|
Tautulli requires a Plex.tv account. Click the button below to sign in on Plex.tv. You may need to allow popups in your browser.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" class="form-control" name="pms_token" id="pms_token" value="" data-validate="validatePMStoken">
|
<input type="hidden" name="pms_token" id="pms_token" value="" data-validate="validatePMStoken">
|
||||||
|
<input type="hidden" name="pms_client_id" id="pms_client_id" value="${config['pms_client_id']}">
|
||||||
<a class="btn btn-dark" id="sign-in-plex" href="#" role="button">Sign In with Plex</a>
|
<a class="btn btn-dark" id="sign-in-plex" href="#" role="button">Sign In with Plex</a>
|
||||||
<span style="margin-left: 10px; display: none;" id="pms-token-status"></span>
|
<span style="margin-left: 10px; display: none;" id="pms-token-status"></span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -570,7 +571,7 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#sign-in-plex').click(function() {
|
$('#sign-in-plex').click(function() {
|
||||||
PlexOAuth(OAuthSuccessCallback, OAuthErrorCallback, OAuthPreFunction);
|
PlexOAuth(OAuthSuccessCallback, OAuthErrorCallback, OAuthPreFunction, $('#pms_client_id').val(uuidv4()).val());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -50,6 +50,7 @@ FILENAME = "config.ini"
|
||||||
_CONFIG_DEFINITIONS = {
|
_CONFIG_DEFINITIONS = {
|
||||||
'ALLOW_GUEST_ACCESS': (int, 'General', 0),
|
'ALLOW_GUEST_ACCESS': (int, 'General', 0),
|
||||||
'DATE_FORMAT': (str, 'General', 'YYYY-MM-DD'),
|
'DATE_FORMAT': (str, 'General', 'YYYY-MM-DD'),
|
||||||
|
'PMS_CLIENT_ID': (str, 'PMS', ''),
|
||||||
'PMS_IDENTIFIER': (str, 'PMS', ''),
|
'PMS_IDENTIFIER': (str, 'PMS', ''),
|
||||||
'PMS_IP': (str, 'PMS', '127.0.0.1'),
|
'PMS_IP': (str, 'PMS', '127.0.0.1'),
|
||||||
'PMS_IS_CLOUD': (int, 'PMS', 0),
|
'PMS_IS_CLOUD': (int, 'PMS', 0),
|
||||||
|
|
|
@ -55,7 +55,7 @@ class HTTPHandler(object):
|
||||||
self.headers = {
|
self.headers = {
|
||||||
'X-Plex-Product': plexpy.common.PRODUCT,
|
'X-Plex-Product': plexpy.common.PRODUCT,
|
||||||
'X-Plex-Version': plexpy.common.RELEASE,
|
'X-Plex-Version': plexpy.common.RELEASE,
|
||||||
'X-Plex-Client-Identifier': plexpy.CONFIG.PMS_UUID,
|
'X-Plex-Client-Identifier': plexpy.CONFIG.PMS_CLIENT_ID or plexpy.CONFIG.PMS_UUID,
|
||||||
'X-Plex-Platform': plexpy.common.PLATFORM,
|
'X-Plex-Platform': plexpy.common.PLATFORM,
|
||||||
'X-Plex-Platform-Version': plexpy.common.PLATFORM_RELEASE,
|
'X-Plex-Platform-Version': plexpy.common.PLATFORM_RELEASE,
|
||||||
'X-Plex-Device': '{} {}'.format(plexpy.common.PLATFORM,
|
'X-Plex-Device': '{} {}'.format(plexpy.common.PLATFORM,
|
||||||
|
|
|
@ -205,6 +205,7 @@ class WebInterface(object):
|
||||||
@requireAuth(member_of("admin"))
|
@requireAuth(member_of("admin"))
|
||||||
def welcome(self, **kwargs):
|
def welcome(self, **kwargs):
|
||||||
config = {
|
config = {
|
||||||
|
"pms_client_id": plexpy.CONFIG.PMS_CLIENT_ID,
|
||||||
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER,
|
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER,
|
||||||
"pms_ip": plexpy.CONFIG.PMS_IP,
|
"pms_ip": plexpy.CONFIG.PMS_IP,
|
||||||
"pms_port": plexpy.CONFIG.PMS_PORT,
|
"pms_port": plexpy.CONFIG.PMS_PORT,
|
||||||
|
@ -212,7 +213,6 @@ class WebInterface(object):
|
||||||
"pms_ssl": plexpy.CONFIG.PMS_SSL,
|
"pms_ssl": plexpy.CONFIG.PMS_SSL,
|
||||||
"pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD,
|
"pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD,
|
||||||
"pms_token": plexpy.CONFIG.PMS_TOKEN,
|
"pms_token": plexpy.CONFIG.PMS_TOKEN,
|
||||||
"pms_uuid": plexpy.CONFIG.PMS_UUID,
|
|
||||||
"pms_name": plexpy.CONFIG.PMS_NAME,
|
"pms_name": plexpy.CONFIG.PMS_NAME,
|
||||||
"logging_ignore_interval": plexpy.CONFIG.LOGGING_IGNORE_INTERVAL
|
"logging_ignore_interval": plexpy.CONFIG.LOGGING_IGNORE_INTERVAL
|
||||||
}
|
}
|
||||||
|
@ -3168,6 +3168,7 @@ class WebInterface(object):
|
||||||
"check_github_interval": plexpy.CONFIG.CHECK_GITHUB_INTERVAL,
|
"check_github_interval": plexpy.CONFIG.CHECK_GITHUB_INTERVAL,
|
||||||
"interface_list": interface_list,
|
"interface_list": interface_list,
|
||||||
"cache_sizemb": plexpy.CONFIG.CACHE_SIZEMB,
|
"cache_sizemb": plexpy.CONFIG.CACHE_SIZEMB,
|
||||||
|
"pms_client_id": plexpy.CONFIG.PMS_CLIENT_ID,
|
||||||
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER,
|
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER,
|
||||||
"pms_ip": plexpy.CONFIG.PMS_IP,
|
"pms_ip": plexpy.CONFIG.PMS_IP,
|
||||||
"pms_logs_folder": plexpy.CONFIG.PMS_LOGS_FOLDER,
|
"pms_logs_folder": plexpy.CONFIG.PMS_LOGS_FOLDER,
|
||||||
|
@ -3178,7 +3179,6 @@ class WebInterface(object):
|
||||||
"pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD,
|
"pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD,
|
||||||
"pms_url": plexpy.CONFIG.PMS_URL,
|
"pms_url": plexpy.CONFIG.PMS_URL,
|
||||||
"pms_url_manual": checked(plexpy.CONFIG.PMS_URL_MANUAL),
|
"pms_url_manual": checked(plexpy.CONFIG.PMS_URL_MANUAL),
|
||||||
"pms_uuid": plexpy.CONFIG.PMS_UUID,
|
|
||||||
"pms_web_url": plexpy.CONFIG.PMS_WEB_URL,
|
"pms_web_url": plexpy.CONFIG.PMS_WEB_URL,
|
||||||
"pms_name": plexpy.CONFIG.PMS_NAME,
|
"pms_name": plexpy.CONFIG.PMS_NAME,
|
||||||
"pms_update_check_interval": plexpy.CONFIG.PMS_UPDATE_CHECK_INTERVAL,
|
"pms_update_check_interval": plexpy.CONFIG.PMS_UPDATE_CHECK_INTERVAL,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue