mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 15:56:07 -07:00
Add configuration and scheduler info to settings page
This commit is contained in:
parent
c90dd147bb
commit
38c9c5a6ea
8 changed files with 205 additions and 18 deletions
|
@ -2722,4 +2722,33 @@ table[id^='media_info_child'] table[id^='media_info_child'] thead th {
|
||||||
.small-muted {
|
.small-muted {
|
||||||
font-size: small;
|
font-size: small;
|
||||||
color: #777;
|
color: #777;
|
||||||
|
}
|
||||||
|
.config-info-table,
|
||||||
|
.config-scheduler-table {
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
|
.config-info-table td,
|
||||||
|
.config-info-table th,
|
||||||
|
.config-scheduler-table td,
|
||||||
|
.config-scheduler-table th {
|
||||||
|
padding-bottom: 5px;
|
||||||
|
}
|
||||||
|
.config-info-table td:first-child {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
.config-scheduler-table td:first-child {
|
||||||
|
width: 225px;
|
||||||
|
}
|
||||||
|
.config-scheduler-table th {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a.no-highlight {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
a.no-highlight:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.top-line {
|
||||||
|
border-top: 1px dotted #777;
|
||||||
|
padding-top: 5px;
|
||||||
}
|
}
|
|
@ -1,9 +1,14 @@
|
||||||
<%inherit file="base.html"/>
|
<%inherit file="base.html"/>
|
||||||
<%!
|
<%!
|
||||||
|
import arrow
|
||||||
|
import sys
|
||||||
import plexpy
|
import plexpy
|
||||||
from plexpy import notifiers, common, versioncheck
|
from plexpy import notifiers, common, versioncheck
|
||||||
|
from plexpy.helpers import anon_url
|
||||||
|
|
||||||
available_notification_agents = sorted(notifiers.available_notification_agents(), key=lambda k: k['name'])
|
available_notification_agents = sorted(notifiers.available_notification_agents(), key=lambda k: k['name'])
|
||||||
|
|
||||||
|
scheduled_jobs = [j.id for j in plexpy.SCHED.get_jobs()]
|
||||||
%>
|
%>
|
||||||
<%def name="headIncludes()">
|
<%def name="headIncludes()">
|
||||||
</%def>
|
</%def>
|
||||||
|
@ -33,7 +38,8 @@ available_notification_agents = sorted(notifiers.available_notification_agents()
|
||||||
<!-- Nav tabs -->
|
<!-- Nav tabs -->
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<ul class="nav-settings list-unstyled" role="tablist">
|
<ul class="nav-settings list-unstyled" role="tablist">
|
||||||
<li role="presentation" class="active"><a href="#tabs-1" aria-controls="tabs-1" role="tab" data-toggle="tab">General</a></li>
|
<li role="presentation" class="active"><a href="#tabs-0" aria-controls="tabs-0" role="tab" data-toggle="tab">Help & Info</a></li>
|
||||||
|
<li role="presentation"><a href="#tabs-1" aria-controls="tabs-1" role="tab" data-toggle="tab">General</a></li>
|
||||||
<li role="presentation"><a href="#tabs-2" aria-controls="tabs-2" role="tab" data-toggle="tab">Homepage Statistics</a></li>
|
<li role="presentation"><a href="#tabs-2" aria-controls="tabs-2" role="tab" data-toggle="tab">Homepage Statistics</a></li>
|
||||||
<li role="presentation"><a href="#tabs-3" aria-controls="tabs-3" role="tab" data-toggle="tab">Web Interface</a></li>
|
<li role="presentation"><a href="#tabs-3" aria-controls="tabs-3" role="tab" data-toggle="tab">Web Interface</a></li>
|
||||||
<li role="presentation"><a href="#tabs-4" aria-controls="tabs-4" role="tab" data-toggle="tab">Access Control</a></li>
|
<li role="presentation"><a href="#tabs-4" aria-controls="tabs-4" role="tab" data-toggle="tab">Access Control</a></li>
|
||||||
|
@ -48,21 +54,138 @@ available_notification_agents = sorted(notifiers.available_notification_agents()
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<form action="configUpdate" method="post" class="form" id="configUpdate" data-parsley-validate>
|
<form action="configUpdate" method="post" class="form" id="configUpdate" data-parsley-validate>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<div role="tabpanel" class="tab-pane active" id="tabs-1">
|
<div role="tabpanel" class="tab-pane active" id="tabs-0">
|
||||||
% if common.VERSION_NUMBER:
|
% if common.VERSION_NUMBER:
|
||||||
<div class="padded-header">
|
<div class="padded-header">
|
||||||
<h3>Version ${common.VERSION_NUMBER} <small><a href="#changelog-modal" data-toggle="modal"><i class="fa fa-info-circle"></i> Changelog</a></small></h3>
|
<h3>Version ${common.VERSION_NUMBER} <small><a href="#changelog-modal" data-toggle="modal"><i class="fa fa-info-circle"></i> Changelog</a></small></h3>
|
||||||
</div>
|
</div>
|
||||||
% endif
|
% endif
|
||||||
|
<div class="padded-header">
|
||||||
|
<h3>PlexPy Configuration</h3>
|
||||||
|
</div>
|
||||||
|
<table class="config-info-table small-muted">
|
||||||
|
<tbody>
|
||||||
|
% if plexpy.CURRENT_VERSION:
|
||||||
|
<tr>
|
||||||
|
<td>Git Branch:</td>
|
||||||
|
<td><a class="no-highlight" href="${anon_url('https://github.com/drzoidberg33/plexpy/tree/%s' % plexpy.CONFIG.GIT_BRANCH)}">${plexpy.CONFIG.GIT_BRANCH}</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Git Hash:</td>
|
||||||
|
<td><a class="no-highlight" href="${anon_url('https://github.com/drzoidberg33/plexpy/commit/%s' % plexpy.CURRENT_VERSION)}">${plexpy.CURRENT_VERSION}</a></td>
|
||||||
|
</tr>
|
||||||
|
% endif
|
||||||
|
<tr>
|
||||||
|
<td>Configuration File:</td>
|
||||||
|
<td>${plexpy.CONFIG_FILE}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Database File:</td>
|
||||||
|
<td>${plexpy.DB_FILE}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Backup Directory:</td>
|
||||||
|
<td>${plexpy.CONFIG.BACKUP_DIR}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Cache Directory:</td>
|
||||||
|
<td>${plexpy.CONFIG.CACHE_DIR}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Log Directory:</td>
|
||||||
|
<td>${plexpy.CONFIG.LOG_DIR}</td>
|
||||||
|
</tr>
|
||||||
|
% if plexpy.ARGS:
|
||||||
|
<tr>
|
||||||
|
<td>Arguments:</td>
|
||||||
|
<td>${plexpy.ARGS}</td>
|
||||||
|
</tr>
|
||||||
|
% endif
|
||||||
|
<tr>
|
||||||
|
<td>Platform:</td>
|
||||||
|
<td>${common.PLATFORM} ${common.PLATFORM_VERSION}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Python Version:</td>
|
||||||
|
<td>${sys.version}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="top-line">Plex Forums:</td>
|
||||||
|
<td class="top-line"><a class="no-highlight" href="${anon_url('https://forums.plex.tv/discussion/169591/plexpy-another-plex-monitoring-program')}">https://forums.plex.tv/discussion/169591/plexpy-another-plex-monitoring-program</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Wiki:</td>
|
||||||
|
<td><a class="no-highlight" href="${anon_url('https://github.com/drzoidberg33/plexpy/wiki')}">https://github.com/drzoidberg33/plexpy/wiki</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Source:</td>
|
||||||
|
<td><a class="no-highlight" href="${anon_url('https://github.com/drzoidberg33/plexpy')}">https://github.com/drzoidberg33/plexpy</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Gitter Chat:</td>
|
||||||
|
<td><a class="no-highlight" href="${anon_url('https://gitter.im/drzoidberg33/plexpy')}">https://gitter.im/drzoidberg33/plexpy</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="padded-header">
|
||||||
|
<h3>PlexPy Scheduler</h3>
|
||||||
|
</div>
|
||||||
|
<table class="config-scheduler-table small-muted">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Scheduled Task</th>
|
||||||
|
<th>State</th>
|
||||||
|
<th>Interval</th>
|
||||||
|
<th>Next Run In</th>
|
||||||
|
<th>Next Run Time</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
% for job in plexpy.common.SCHEDULER_LIST:
|
||||||
|
% if job in scheduled_jobs:
|
||||||
|
<%
|
||||||
|
sched_job = plexpy.SCHED.get_job(job)
|
||||||
|
run_interval = arrow.get(str(sched_job.trigger.interval), ['H:mm:ss', 'HH:mm:ss'])
|
||||||
|
next_run_interval = arrow.get(sched_job.next_run_time).timestamp - arrow.now().timestamp
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<td>${sched_job.id}</td>
|
||||||
|
<td>Active</td>
|
||||||
|
<td>${arrow.get(run_interval).format('HH:mm:ss')}</td>
|
||||||
|
<td>${arrow.get(next_run_interval).format('HH:mm:ss')}</td>
|
||||||
|
<td>${arrow.get(sched_job.next_run_time).format('YYYY-MM-DD HH:mm:ss')}</td>
|
||||||
|
</tr>
|
||||||
|
% elif job == 'Check for active sessions' and plexpy.CONFIG.MONITORING_USE_WEBSOCKET:
|
||||||
|
<tr>
|
||||||
|
<td>${job}</td>
|
||||||
|
<td>Using Websockets</td>
|
||||||
|
<td>N/A</td>
|
||||||
|
<td>N/A</td>
|
||||||
|
<td>N/A</td>
|
||||||
|
</tr>
|
||||||
|
% else:
|
||||||
|
<tr>
|
||||||
|
<td>${job}</td>
|
||||||
|
<td>Inactive</td>
|
||||||
|
<td>N/A</td>
|
||||||
|
<td>N/A</td>
|
||||||
|
<td>N/A</td>
|
||||||
|
</tr>
|
||||||
|
% endif
|
||||||
|
% endfor
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div role="tabpanel" class="tab-pane" id="tabs-1">
|
||||||
|
<div class="padded-header">
|
||||||
|
<h3>Updates</h3>
|
||||||
|
</div>
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" id="check_github" name="check_github" value="1" ${config['check_github']}> Enable Updates
|
<input type="checkbox" id="check_github" name="check_github" value="1" ${config['check_github']}> Enable Updates
|
||||||
</label>
|
</label>
|
||||||
<p class="help-block">If you have Git installed, allow periodic checks for updates.</p>
|
<p class="help-block">If you have Git installed, allow periodic checks for updates.</p>
|
||||||
</div>
|
</div>
|
||||||
% if plexpy.CURRENT_VERSION:
|
|
||||||
<p class="help-block">Git hash: ${plexpy.CURRENT_VERSION}</p>
|
|
||||||
% endif
|
|
||||||
<div class="padded-header">
|
<div class="padded-header">
|
||||||
<h3>Display Settings</h3>
|
<h3>Display Settings</h3>
|
||||||
</div>
|
</div>
|
||||||
|
@ -462,6 +585,15 @@ available_notification_agents = sorted(notifiers.available_notification_agents()
|
||||||
<p class="help-block">Enable if you want PlexPy to calculate the total file size for TV Shows/Seasons and Artists/Albums on the media info tables.<br />
|
<p class="help-block">Enable if you want PlexPy to calculate the total file size for TV Shows/Seasons and Artists/Albums on the media info tables.<br />
|
||||||
This is currently experimental.</p>
|
This is currently experimental.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="anon_redirect">Anonymous Redirect</label>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input type="text" class="form-control" id="anon_redirect" name="anon_redirect" value="${config['anon_redirect']}" size="30">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="help-block">Backlink protection via anonymizer service, must end in "?".</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="padded-header">
|
<div class="padded-header">
|
||||||
<h3>PlexWatch Import Tool</h3>
|
<h3>PlexWatch Import Tool</h3>
|
||||||
|
@ -1497,6 +1629,7 @@ available_notification_agents = sorted(notifiers.available_notification_agents()
|
||||||
<%def name="javascriptIncludes()">
|
<%def name="javascriptIncludes()">
|
||||||
<script src="interfaces/default/js/parsley.min.js"></script>
|
<script src="interfaces/default/js/parsley.min.js"></script>
|
||||||
<script src="interfaces/default/js/Sortable.min.js"></script>
|
<script src="interfaces/default/js/Sortable.min.js"></script>
|
||||||
|
<script src="interfaces/default/js/moment-with-locale.js"></script>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
|
|
@ -57,9 +57,9 @@ _INITIALIZED = False
|
||||||
started = False
|
started = False
|
||||||
|
|
||||||
DATA_DIR = None
|
DATA_DIR = None
|
||||||
BACKUP_DIR = None
|
|
||||||
|
|
||||||
CONFIG = None
|
CONFIG = None
|
||||||
|
CONFIG_FILE = None
|
||||||
|
|
||||||
DB_FILE = None
|
DB_FILE = None
|
||||||
|
|
||||||
|
@ -79,12 +79,14 @@ def initialize(config_file):
|
||||||
with INIT_LOCK:
|
with INIT_LOCK:
|
||||||
|
|
||||||
global CONFIG
|
global CONFIG
|
||||||
|
global CONFIG_FILE
|
||||||
global _INITIALIZED
|
global _INITIALIZED
|
||||||
global CURRENT_VERSION
|
global CURRENT_VERSION
|
||||||
global LATEST_VERSION
|
global LATEST_VERSION
|
||||||
global UMASK
|
global UMASK
|
||||||
global POLLING_FAILOVER
|
global POLLING_FAILOVER
|
||||||
CONFIG = plexpy.config.Config(config_file)
|
CONFIG = plexpy.config.Config(config_file)
|
||||||
|
CONFIG_FILE = config_file
|
||||||
|
|
||||||
assert CONFIG is not None
|
assert CONFIG is not None
|
||||||
|
|
||||||
|
@ -118,6 +120,15 @@ def initialize(config_file):
|
||||||
logger.initLogger(console=not QUIET, log_dir=CONFIG.LOG_DIR,
|
logger.initLogger(console=not QUIET, log_dir=CONFIG.LOG_DIR,
|
||||||
verbose=VERBOSE)
|
verbose=VERBOSE)
|
||||||
|
|
||||||
|
if not CONFIG.BACKUP_DIR.startswith(os.path.abspath(DATA_DIR)):
|
||||||
|
# Put the backup dir in the data dir for now
|
||||||
|
CONFIG.BACKUP_DIR = os.path.join(DATA_DIR, 'backups')
|
||||||
|
if not os.path.exists(CONFIG.BACKUP_DIR):
|
||||||
|
try:
|
||||||
|
os.makedirs(CONFIG.BACKUP_DIR)
|
||||||
|
except OSError as e:
|
||||||
|
logger.error("Could not create backup dir '%s': %s", BACKUP_DIR, e)
|
||||||
|
|
||||||
if not CONFIG.CACHE_DIR.startswith(os.path.abspath(DATA_DIR)):
|
if not CONFIG.CACHE_DIR.startswith(os.path.abspath(DATA_DIR)):
|
||||||
# Put the cache dir in the data dir for now
|
# Put the cache dir in the data dir for now
|
||||||
CONFIG.CACHE_DIR = os.path.join(DATA_DIR, 'cache')
|
CONFIG.CACHE_DIR = os.path.join(DATA_DIR, 'cache')
|
||||||
|
@ -127,12 +138,6 @@ def initialize(config_file):
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
logger.error("Could not create cache dir '%s': %s", DATA_DIR, e)
|
logger.error("Could not create cache dir '%s': %s", DATA_DIR, e)
|
||||||
|
|
||||||
plexpy.BACKUP_DIR = os.path.join(plexpy.PROG_DIR, 'backups')
|
|
||||||
try:
|
|
||||||
os.makedirs(plexpy.BACKUP_DIR)
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Initialize the database
|
# Initialize the database
|
||||||
logger.info('Checking to see if the database has all tables....')
|
logger.info('Checking to see if the database has all tables....')
|
||||||
try:
|
try:
|
||||||
|
@ -289,9 +294,9 @@ def initialize_scheduler():
|
||||||
seconds = 0
|
seconds = 0
|
||||||
|
|
||||||
if CONFIG.PMS_IP and CONFIG.PMS_TOKEN:
|
if CONFIG.PMS_IP and CONFIG.PMS_TOKEN:
|
||||||
schedule_job(plextv.get_real_pms_url, 'Refresh Plex Server URLs',
|
schedule_job(plextv.get_real_pms_url, 'Refresh Plex server URLs',
|
||||||
hours=12, minutes=0, seconds=0)
|
hours=12, minutes=0, seconds=0)
|
||||||
schedule_job(pmsconnect.get_server_friendly_name, 'Refresh Plex Server Name',
|
schedule_job(pmsconnect.get_server_friendly_name, 'Refresh Plex server name',
|
||||||
hours=12, minutes=0, seconds=0)
|
hours=12, minutes=0, seconds=0)
|
||||||
|
|
||||||
if CONFIG.NOTIFY_RECENTLY_ADDED:
|
if CONFIG.NOTIFY_RECENTLY_ADDED:
|
||||||
|
@ -302,10 +307,10 @@ def initialize_scheduler():
|
||||||
hours=0, minutes=0, seconds=0)
|
hours=0, minutes=0, seconds=0)
|
||||||
|
|
||||||
if CONFIG.MONITOR_REMOTE_ACCESS:
|
if CONFIG.MONITOR_REMOTE_ACCESS:
|
||||||
schedule_job(activity_pinger.check_server_response, 'Check for server response',
|
schedule_job(activity_pinger.check_server_response, 'Check for Plex remote access',
|
||||||
hours=0, minutes=0, seconds=seconds)
|
hours=0, minutes=0, seconds=seconds)
|
||||||
else:
|
else:
|
||||||
schedule_job(activity_pinger.check_server_response, 'Check for server response',
|
schedule_job(activity_pinger.check_server_response, 'Check for Plex remote access',
|
||||||
hours=0, minutes=0, seconds=0)
|
hours=0, minutes=0, seconds=0)
|
||||||
|
|
||||||
# If we're not using websockets then fall back to polling
|
# If we're not using websockets then fall back to polling
|
||||||
|
|
|
@ -57,4 +57,14 @@ MEDIA_FLAGS_AUDIO = {'ac.?3': 'dolby_digital',
|
||||||
MEDIA_FLAGS_VIDEO = {'avc1': 'h264',
|
MEDIA_FLAGS_VIDEO = {'avc1': 'h264',
|
||||||
'wmv(1|2)': 'wmv',
|
'wmv(1|2)': 'wmv',
|
||||||
'wmv3': 'wmvhd'
|
'wmv3': 'wmvhd'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCHEDULER_LIST = ['Check GitHub for updates',
|
||||||
|
'Check for active sessions',
|
||||||
|
'Check for recently added items',
|
||||||
|
'Check for Plex remote access',
|
||||||
|
'Refresh users list',
|
||||||
|
'Refresh libraries list'
|
||||||
|
'Refresh Plex server URLs',
|
||||||
|
'Refresh Plex server name',
|
||||||
|
]
|
|
@ -30,6 +30,7 @@ _CONFIG_DEFINITIONS = {
|
||||||
'PMS_USE_BIF': (int, 'PMS', 0),
|
'PMS_USE_BIF': (int, 'PMS', 0),
|
||||||
'PMS_UUID': (str, 'PMS', ''),
|
'PMS_UUID': (str, 'PMS', ''),
|
||||||
'TIME_FORMAT': (str, 'General', 'HH:mm'),
|
'TIME_FORMAT': (str, 'General', 'HH:mm'),
|
||||||
|
'ANON_REDIRECT': (str, 'General', 'http://dereferer.org/?'),
|
||||||
'API_ENABLED': (int, 'General', 0),
|
'API_ENABLED': (int, 'General', 0),
|
||||||
'API_KEY': (str, 'General', ''),
|
'API_KEY': (str, 'General', ''),
|
||||||
'API_SQL': (int, 'General', 0),
|
'API_SQL': (int, 'General', 0),
|
||||||
|
@ -49,6 +50,7 @@ _CONFIG_DEFINITIONS = {
|
||||||
'BOXCAR_ON_INTUP': (int, 'Boxcar', 0),
|
'BOXCAR_ON_INTUP': (int, 'Boxcar', 0),
|
||||||
'BUFFER_THRESHOLD': (int, 'Monitoring', 3),
|
'BUFFER_THRESHOLD': (int, 'Monitoring', 3),
|
||||||
'BUFFER_WAIT': (int, 'Monitoring', 900),
|
'BUFFER_WAIT': (int, 'Monitoring', 900),
|
||||||
|
'BACKUP_DIR': (str, 'General', ''),
|
||||||
'CACHE_DIR': (str, 'General', ''),
|
'CACHE_DIR': (str, 'General', ''),
|
||||||
'CACHE_SIZEMB': (int, 'Advanced', 32),
|
'CACHE_SIZEMB': (int, 'Advanced', 32),
|
||||||
'CHECK_GITHUB': (int, 'General', 1),
|
'CHECK_GITHUB': (int, 'General', 1),
|
||||||
|
|
|
@ -49,7 +49,7 @@ def db_filename(filename="plexpy.db"):
|
||||||
def make_backup(cleanup=False):
|
def make_backup(cleanup=False):
|
||||||
""" Makes a backup of db, removes all but the last 3 backups """
|
""" Makes a backup of db, removes all but the last 3 backups """
|
||||||
|
|
||||||
backupfolder = plexpy.BACKUP_DIR
|
backupfolder = plexpy.CONFIG.BACKUP_DIR
|
||||||
backup_file = 'plexpy.backup-%s.db' % int(time.time())
|
backup_file = 'plexpy.backup-%s.db' % int(time.time())
|
||||||
backup_file_fp = os.path.join(backupfolder, backup_file)
|
backup_file_fp = os.path.join(backupfolder, backup_file)
|
||||||
|
|
||||||
|
|
|
@ -516,3 +516,10 @@ def get_ip(host):
|
||||||
logger.error(u"IP Checker :: Bad IP or hostname provided.")
|
logger.error(u"IP Checker :: Bad IP or hostname provided.")
|
||||||
|
|
||||||
return ip_address
|
return ip_address
|
||||||
|
|
||||||
|
# Taken from SickRage
|
||||||
|
def anon_url(*url):
|
||||||
|
"""
|
||||||
|
Return a URL string consisting of the Anonymous redirect URL and an arbitrary number of values appended.
|
||||||
|
"""
|
||||||
|
return '' if None in url else '%s%s' % (plexpy.CONFIG.ANON_REDIRECT, ''.join(str(s) for s in url))
|
||||||
|
|
|
@ -1114,6 +1114,7 @@ class WebInterface(object):
|
||||||
"enable_https": checked(plexpy.CONFIG.ENABLE_HTTPS),
|
"enable_https": checked(plexpy.CONFIG.ENABLE_HTTPS),
|
||||||
"https_cert": plexpy.CONFIG.HTTPS_CERT,
|
"https_cert": plexpy.CONFIG.HTTPS_CERT,
|
||||||
"https_key": plexpy.CONFIG.HTTPS_KEY,
|
"https_key": plexpy.CONFIG.HTTPS_KEY,
|
||||||
|
"anon_redirect": plexpy.CONFIG.ANON_REDIRECT,
|
||||||
"api_enabled": checked(plexpy.CONFIG.API_ENABLED),
|
"api_enabled": checked(plexpy.CONFIG.API_ENABLED),
|
||||||
"api_key": plexpy.CONFIG.API_KEY,
|
"api_key": plexpy.CONFIG.API_KEY,
|
||||||
"update_db_interval": plexpy.CONFIG.UPDATE_DB_INTERVAL,
|
"update_db_interval": plexpy.CONFIG.UPDATE_DB_INTERVAL,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue