0% found this document useful (0 votes)
10 views8 pages

SABnzbd Server Priority Configuration

The document outlines changes made to the SABnzbd software, specifically adding a 'priority' field to various configuration templates and scripts. This includes updates to HTML templates, JavaScript validation, and Python configuration handling to accommodate the new priority setting for servers. The modifications enhance server management by allowing users to specify the priority level for each server in the configuration settings.

Uploaded by

elijahgould10
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views8 pages

SABnzbd Server Priority Configuration

The document outlines changes made to the SABnzbd software, specifically adding a 'priority' field to various configuration templates and scripts. This includes updates to HTML templates, JavaScript validation, and Python configuration handling to accommodate the new priority setting for servers. The modifications enhance server management by allowing users to specify the priority level for each server in the configuration settings.

Uploaded by

elijahgould10
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

diff -ur [Link]/interfaces/Classic/templates/config_server.

tmpl
[Link]/interfaces/Classic/templates/config_server.tmpl
--- [Link]/interfaces/Classic/templates/config_server.tmpl 2014-
11-21 21:41:53.000000000 +0200
+++ [Link]/interfaces/Classic/templates/config_server.tmpl
2014-12-16 19:51:56.196791380 +0200
@@ -17,6 +17,7 @@
$T('srv-password'):<br><input type="password" size="25" name="password"><br>
$T('srv-timeout'):<br><input type="text" size="25" name="timeout"
value="120"><br>
$T('srv-connections'):<br><input type="text" size="25"
name="connections"><br>
+ $T('srv-priority'):<br><input type="text" size="25" name="priority"><br>
$T('srv-retention') ($T('days')):<br><input type="text" size="25"
name="retention"><br>
<!--#if int($have_ssl) == 0#-->
$T('srv-ssl') $T('opt-notInstalled')
@@ -42,6 +43,7 @@
$T('srv-password'):<br><input type="password" size="25" name="password"
value="$servers[$server]['password']"><br>
$T('srv-timeout'):<br><input type="text" size="25" name="timeout"
value="$servers[$server]['timeout']"><br>
$T('srv-connections'):<br><input type="text" size="25" name="connections"
value="$servers[$server]['connections']"><br>
+ $T('srv-priorty'):<br><input type="text" size="25" name="priorty"
value="$servers[$server]['priorty']"><br>
$T('srv-retention'):<br><input type="text" size="25" name="retention"
value="$servers[$server]['retention']"><br>
<!--#if int($have_ssl) == 0#-->
$T('srv-ssl') $T('opt-notInstalled')
diff -ur [Link]/interfaces/Config/templates/config_server.tmpl
[Link]/interfaces/Config/templates/config_server.tmpl
--- [Link]/interfaces/Config/templates/config_server.tmpl 2014-
11-21 21:41:54.000000000 +0200
+++ [Link]/interfaces/Config/templates/config_server.tmpl 2014-
12-16 19:51:56.196791380 +0200
@@ -41,6 +41,10 @@
<label class="config" for="connections">$T('srv-
connections')</label>
<input type="number" name="connections" id="connections"
size="8" min="0" max="100" />
</div>
+ <div class="field-pair">
+ <label class="config"
for="priority">$T('srv-priority')</label>
+ <input type="number" name="priority" id="priority" size="8"
min="0" max="100" />
+ </div>
<div class="field-pair alt">
<label class="config"
for="retention">$T('srv-retention')</label>
<input type="number" name="retention" id="retention" size="8"
min="0" /> <i>$T('days')</i>
@@ -122,6 +126,10 @@
<label class="config" for="connections$cur">$T('srv-
connections')</label>
<input type="number" name="connections" id="connections$cur"
value="$servers[$server]['connections']" size="8" min="0" max="100" />
</div>
+ <div class="field-pair">
+ <label class="config"
for="priority$cur">$T('srv-priority')</label>
+ <input type="number" name="priority" id="priority$cur"
value="$servers[$server]['priority']" size="8" min="0" max="100" />
+ </div>
<div class="field-pair alt">
<label class="config" for="retention$cur">$T('srv-
retention')</label>
<input type="number" name="retention" id="retention$cur"
value="$servers[$server]['retention']" size="8" min="0" /> <i>$T('days')</i>
diff -ur [Link]/interfaces/Plush/templates/config_server.tmpl
[Link]/interfaces/Plush/templates/config_server.tmpl
--- [Link]/interfaces/Plush/templates/config_server.tmpl 2014-11-21
21:41:53.000000000 +0200
+++ [Link]/interfaces/Plush/templates/config_server.tmpl 2014-
12-16 19:51:56.196791380 +0200
@@ -55,6 +55,12 @@
<input type="text" size="10" name="connections"/>
</label>
</div>
+ <div class="field-pair">
+ <label class="nocheck clearfix" for="priority">
+ <span class="component-title"># $T('srv-priority')</span>
+ <input type="text" size="10" name="priority"/>
+ </label>
+ </div>
<div class="field-pair alt">
<label class="nocheck clearfix" for="retention">
<span class="component-title">$T('srv-retention')</span>
@@ -165,6 +171,12 @@
<input type="text" size="10" name="connections" value="$servers[$server]
['connections']" />
</label>
</div>
+ <div class="field-pair">
+ <label class="nocheck clearfix" for="priority">
+ <span class="component-title">$T('srv-priority')</span>
+ <input type="text" size="10" name="priority" value="$servers[$server]
['priority']" />
+ </label>
+ </div>
<div class="field-pair alt">
<label class="nocheck clearfix" for="retention">
<span class="component-title">$T('srv-retention')</span>
diff -ur [Link]/interfaces/smpl/templates/config_server.tmpl SABnzbd-
[Link]/interfaces/smpl/templates/config_server.tmpl
--- [Link]/interfaces/smpl/templates/config_server.tmpl 2014-11-21
21:41:53.000000000 +0200
+++ [Link]/interfaces/smpl/templates/config_server.tmpl 2014-
12-16 19:51:56.196791380 +0200
@@ -22,6 +22,8 @@
<br class="clear" />
<label class="label">$T('srv-connections'):</label><input type="text"
size="25" name="connections" value="$servers[$server]['connections']">
<br class="clear" />
+ <label class="label">$T('srv-priority'):</label><input type="text" size="25"
name="priority" value="$servers[$server]['priority']">
+ <br class="clear" />
<label class="label">$T('srv-retention') ($T('days')):</label><input
type="text" size="25" name="retention" value="$servers[$server]['retention']">
<br class="clear" />

@@ -87,6 +89,9 @@
<label class="label">$T('srv-connections'):</label><input type="text" size="25"
name="connections">
<br class="clear" />

+ <label class="label">$T('srv-priority'):</label><input type="text" size="25"


name="priority">
+<br class="clear" />
+
<label class="label">$T('srv-retention') ($T('days')):</label><input type="text"
size="25" name="retention">
<br class="clear" />

@@ -113,4 +118,4 @@
</fieldset>
</form><br class="clear"/>

-</div>
\ No newline at end of file
+</div>
diff -ur [Link]/interfaces/wizard/[Link] SABnzbd-
[Link]/interfaces/wizard/[Link]
--- [Link]/interfaces/wizard/[Link] 2014-11-21 21:41:30.000000000
+0200
+++ [Link]/interfaces/wizard/[Link] 2014-12-16
19:51:56.196791380 +0200
@@ -31,6 +31,10 @@
<div id="connections-tip" class="tips">$T('wizard-server-con-explain')
$T('wizard-server-con-eg')</div>
<div id="connections-error" class="error-text hidden">$T('wizard-server-
number')</div>
<br class="clear" />
+ <label class="label">$T('srv-priority')<span
class="required-star">*</span></label><input id="priority" class="text-input-thin"
type="text" size="2" name="priority" value="$priority">
+ <div id="priority-tip" class="tips">$T('wizard-server-pri-explain') $T('wizard-
server-pri-eg')</div>
+ <div id="priority-error" class="error-text
hidden">$T('wizard-server-number')</div>
+ <br class="clear" />
<label for="srv-ssl"><!--#if $have_ssl then $T('srv-ssl') else '<span
class="disabled-text">'+$T('srv-ssl')+'</span> (pyopenssl (python-ssl) '+$T('opt-
notInstalled')+')'#-->
<input class="validate-text" class="radio" type="checkbox" name="ssl" value="1"
<!--#if $have_ssl then '' else 'disabled'#--><!--#if $ssl == 1 then 'checked' else
''#-->></label>
<div class="tips">$T('wizard-server-ssl-explain')</div>
@@ -58,4 +62,4 @@
</table>
</div>
</form>
-<!--#include $webdir + "/inc_bottom.tmpl"#-->
\ No newline at end of file
+<!--#include $webdir + "/inc_bottom.tmpl"#-->
diff -ur [Link]/interfaces/wizard/static/javascript/[Link]
[Link]/interfaces/wizard/static/javascript/[Link]
--- [Link]/interfaces/wizard/static/javascript/[Link] 2014-
11-21 21:41:54.000000000 +0200
+++ [Link]/interfaces/wizard/static/javascript/[Link]
2014-12-16 19:51:56.196791380 +0200
@@ -77,6 +77,22 @@
}
});

+ $("#priority").bind('keyup blur',function(){
+ if ([Link] && isFinite([Link])){
+ $(this).removeClass("incorrect");
+ $(this).addClass("correct");
+ $("#priority-tip").removeClass("hidden");
+ $("#priority-error").addClass("hidden");
+ checkRequired();
+ } else {
+ $(this).removeClass("correct");
+ $(this).addClass("incorrect");
+ $("#priority-tip").addClass("hidden");
+ $("#priority-error").removeClass("hidden");
+ checkRequired();
+ }
+ });
+
$("#port").bind('keyup blur',function(){
if (![Link] || isFinite([Link])){
$(this).removeClass("incorrect");
@@ -106,4 +122,4 @@
checkRequired();
}
});
-});
\ No newline at end of file
+});
diff -ur [Link]/sabnzbd/[Link]
[Link]/sabnzbd/[Link]
--- [Link]/sabnzbd/[Link] 2014-11-21 21:41:54.000000000 +0200
+++ [Link]/sabnzbd/[Link] 2014-12-16 19:51:56.196791380 +0200
@@ -360,6 +360,7 @@
[Link] = OptionBool(name, 'enable', True, add=False)
[Link] = OptionBool(name, 'optional', False, add=False)
[Link] = OptionNumber(name, 'retention', add=False)
+ [Link] = OptionNumber(name, 'priority', 0, 0, 100, add=False)

self.set_dict(values)
add_to_database('servers', self.__name, self)
@@ -367,7 +368,7 @@
def set_dict(self, values):
""" Set one or more fields, passed as dictionary """
for kw in ('host', 'port', 'timeout', 'username', 'password',
'connections',
- 'fillserver', 'ssl', 'enable', 'optional', 'retention'):
+ 'fillserver', 'ssl', 'enable', 'optional', 'retention',
'priority'):
try:
value = values[kw]
except KeyError:
@@ -393,6 +394,7 @@
dict['enable'] = [Link]()
dict['optional'] = [Link]()
dict['retention'] = [Link]()
+ dict['priority'] = [Link]()
return dict

def delete(self):
diff -ur [Link]/sabnzbd/[Link]
[Link]/sabnzbd/[Link]
--- [Link]/sabnzbd/[Link] 2014-11-21 21:41:54.000000000 +0200
+++ [Link]/sabnzbd/[Link] 2014-12-16 19:51:56.196791380
+0200
@@ -54,7 +54,7 @@

#------------------------------------------------------------------------------
class Server(object):
- def __init__(self, id, host, port, timeout, threads, fillserver, ssl, username
= None,
+ def __init__(self, id, host, port, timeout, threads, priority, fillserver,
ssl, username = None,
password = None, optional=False, retention=0):
[Link] = id
[Link] = None
@@ -63,6 +63,7 @@
[Link] = port
[Link] = timeout
[Link] = threads
+ [Link] = priority
[Link] = fillserver
[Link] = ssl
[Link] = optional
@@ -176,6 +177,7 @@
port = [Link]()
timeout = [Link]()
threads = [Link]()
+ priority = [Link]()
fillserver = [Link]()
primary = enabled and (not fillserver) and (threads > 0)
ssl = [Link]() and [Link].HAVE_SSL
@@ -196,8 +198,8 @@
break

if create and enabled and host and port and threads:


- [Link](Server(newserver, host, port, timeout, threads,
fillserver, ssl,
- username, password, optional,
retention))
+ [Link](Server(newserver, host, port, timeout, threads,
priority, fillserver,
+ ssl, username, password, optional,
retention))

return primary

@@ -356,7 +358,7 @@
request_server_info(server)
break

- article = [Link].get_article(server)
+ article = [Link].get_article(server, [Link])

if not article:
break
diff -ur [Link]/sabnzbd/[Link]
[Link]/sabnzbd/[Link]
--- [Link]/sabnzbd/[Link] 2014-11-21 21:41:54.000000000 +0200
+++ [Link]/sabnzbd/[Link] 2014-12-16 19:51:56.196791380
+0200
@@ -692,12 +692,12 @@
return False

@synchronized(NZBQUEUE_LOCK)
- def get_article(self, server):
+ def get_article(self, server, servers):
if self.__top_only:
if self.__nzo_list:
for nzo in self.__nzo_list:
if [Link] not in ([Link], [Link]):
- article = nzo.get_article(server)
+ article = nzo.get_article(server, servers)
if article:
return article

@@ -705,7 +705,7 @@
for nzo in self.__nzo_list:
# Don't try to get an article if server is in try_list of nzo
if not nzo.server_in_try_list(server) and [Link] not in
([Link], [Link]):
- article = nzo.get_article(server)
+ article = nzo.get_article(server, servers)
if article:
return article

diff -ur [Link]/sabnzbd/[Link]


[Link]/sabnzbd/[Link]
--- [Link]/sabnzbd/[Link] 2014-11-21 21:41:54.000000000 +0200
+++ [Link]/sabnzbd/[Link] 2014-12-16 20:33:42.534683697
+0200
@@ -42,6 +42,7 @@
get_unique_path, get_admin_path, remove_all,
format_source_url, \
sanitize_filename, globber, sanitize_foldername,
int_conv, \
set_permissions
+import [Link] as config
import [Link] as cfg
from [Link] import TryList
from [Link] import unicoder, platform_encode, latin1, name_fixer
@@ -77,6 +78,7 @@
TryList.__init__(self)

[Link] = None
+ self.fetcher_priority = 0
self.allow_fill_server = False

[Link] = article
@@ -89,13 +91,50 @@
def get_article(self, server):
""" Return article when appropriate for specified server """
if [Link] and (not self.allow_fill_server) and
sabnzbd.active_primaries():
+ [Link]('Article %s | Server: %s | Skipping as its a fill',
[Link], [Link])
return None

if not [Link] and not self.server_in_try_list(server):


- [Link] = server
- [Link] += 1
- if sabnzbd.LOG_ALL: [Link]('Article-try = %s', [Link])
- return self
+ [Link]('Article %s | Server: %s | in second if', [Link],
[Link])
+ # Is the current selected server of the same priority as this article?
+ [Link]('Article %s | Server: %s | Article priority: %s',
[Link], [Link], self.fetcher_priority)
+ [Link]('Article %s | Server: %s | Server priority: %s',
[Link], [Link], [Link])
+ if ([Link] == self.fetcher_priority):
+ [Link]('Article %s | Server: %s | same priority, use it',
[Link], [Link])
+ [Link] = server
+ [Link] += 1
+ if sabnzbd.LOG_ALL: [Link]('Article %s | Server: %s |
Article-try: %s', [Link], [Link], [Link])
+ [Link]('Article %s | Server: %s | Article-try: %s',
[Link], [Link], [Link])
+ return self
+ else:
+ [Link]('Article %s | Server: %s | not the same priorty',
[Link], [Link])
+ # No, so is it a lower priority?
+ if ([Link] > self.fetcher_priority):
+ [Link]('Article %s | Server: %s | lower priority',
[Link], [Link])
+ # Is there an available server that is a higher priority?
+ found_priority = 1000
+ #for server_check in config.get_servers():
+ for server_check in servers:
+ [Link]('Article %s | Server: %s | checking',
[Link], [Link])
+ #if (server_check.priority() < found_priority and
server_check.priority() < [Link] and not
self.server_in_try_list(server_check)):
+ if (server_check.priority < found_priority):
+ if (server_check.priority < [Link]):
+ if (not self.server_in_try_list(server_check)):
+ [Link]('Article %s | Server: %s |
setting found priority to %s', [Link], [Link], server_check.priority)
+ found_priority = server_check.priority
+ if found_priority == 1000:
+ # If no higher priority servers, use this server
+ self.fetcher_priority = [Link]
+ [Link] = server
+ [Link] += 1
+ if sabnzbd.LOG_ALL: [Link]('Article %s | Server: %s
| Article-try: %s', [Link], [Link], [Link])
+ [Link]('Article %s | Server: %s | Article-try: %s',
[Link], [Link], [Link])
+ return self
+ else:
+ # There is a higher priorty server, so set article
priority
+ [Link]('Article %s | Server: %s | setting self
priority', [Link], [Link])
+ self.fetcher_priority = found_priority
+ [Link]('Article %s | Server: %s | Returning None', [Link],
[Link])
return None

def get_art_id(self):
diff -ur [Link]/sabnzbd/[Link]
[Link]/sabnzbd/[Link]
--- [Link]/sabnzbd/[Link] 2014-11-21 21:41:54.000000000 +0200
+++ [Link]/sabnzbd/[Link] 2014-12-16 19:51:56.200791320
+0200
@@ -512,6 +512,7 @@
'srv-connections' : TT('Connections'), #: Server: amount of connections
'srv-retention' : TT('Retention time'), #: Server's retention time in days
'srv-ssl' : TT('SSL'), #: Server SSL tickbox
+ 'srv-priority' : TT('Priority'), #: Server priority
'srv-fillserver' : TT('Backup server'), #: Backup server tickbox
'srv-optional' : TT('Optional'), #: Server optional tickbox
'srv-enable' : TT('Enable'), #: Enable server tickbox
@@ -883,6 +884,8 @@
'wizard-server-help2' : TT('Don\'t have a usenet provider? We recommend
trying %s.'),
'wizard-server-con-explain' : TT('The number of connections allowed by your
provider'),
'wizard-server-con-eg' : TT('E.g. 8 or 20'), #: Wizard: examples of amount of
connections
+ 'wizard-server-pri-explain' : TT('The priority of your server, 0 being first,
100 being last.'),
+ 'wizard-server-pri-eg' : TT('E.g. 0, 2 or 3'), #: Wizard: examples of priority
'wizard-server-ssl-explain' : TT('Select only if your provider allows SSL
connections.'),
'wizard-server-text' : TT('Click to test the entered details.'),
'wizard-server-required' : TT('This field is required.'),

You might also like