Changeset 1768
- Timestamp:
- 11/13/08 22:29:28 (1 year ago)
- Files:
-
- trunk/main/interfaces/Default/templates/config_scheduling.tmpl (modified) (1 diff)
- trunk/main/interfaces/Default/templates/config_server.tmpl (modified) (2 diffs)
- trunk/main/interfaces/Plush/templates/config_scheduling.tmpl (modified) (1 diff)
- trunk/main/interfaces/Plush/templates/config_server.tmpl (modified) (2 diffs)
- trunk/main/interfaces/iphone/templates/config_scheduling.tmpl (modified) (1 diff)
- trunk/main/interfaces/iphone/templates/config_server.tmpl (modified) (1 diff)
- trunk/main/interfaces/prototype/templates/config_scheduling.tmpl (modified) (1 diff)
- trunk/main/interfaces/prototype/templates/config_server.tmpl (modified) (2 diffs)
- trunk/main/interfaces/smpl/templates/config_scheduling.tmpl (modified) (1 diff)
- trunk/main/interfaces/smpl/templates/config_server.tmpl (modified) (2 diffs)
- trunk/main/sabnzbd/__init__.py (modified) (5 diffs)
- trunk/main/sabnzbd/downloader.py (modified) (10 diffs)
- trunk/main/sabnzbd/interface.py (modified) (9 diffs)
- trunk/main/sabnzbd/newswrapper.py (modified) (1 diff)
- trunk/main/sabnzbd/scheduler.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/main/interfaces/Default/templates/config_scheduling.tmpl
r1734 r1768 44 44 <br>Action:<br> 45 45 <select name="action"> 46 <option value="resume">resume 47 <option value="pause">pause 48 <option value="shutdown">shutdown 49 <option value="speedlimit">speedlimit 46 <!--#for $action in $actions#--> 47 <option value="$action">$action 48 <!--#end for#--> 50 49 </select> 51 50 <br>Arguments:<br> trunk/main/interfaces/Default/templates/config_server.tmpl
r1641 r1768 18 18 Timeout:<br><input type="text" size="25" name="timeout" value="120"><br> 19 19 Connections:<br><input type="text" size="25" name="connections"><br> 20 SSL<!--#if int($have_ssl) == 0 then "(disabled)" else ""#-->:<br> 21 <input type="checkbox" name="ssl" value="1" <!--#if int($have_ssl) == 0 then "disabled" else ""#-->> 22 <br> 23 Backup server:<br> 24 <input type="checkbox" name="fillserver" value="1"> 25 <br> 20 <!--#if int($have_ssl) == 0#--> 21 SSL (disabled) 22 <!--#else#--> 23 <input type="checkbox" name="ssl" value="1" <!--#if int($have_ssl) == 0 then "disabled" else ""#-->> SSL<br/> 24 <!--#end if#--> 25 <input type="checkbox" name="fillserver" value="1"> Backup server<br> 26 <input type="checkbox" name="enable" value="1" checked=1> Enable<br> 26 27 <p><input type="submit" value="Add Server"></p> 27 28 </fieldset> … … 39 40 Timeout:<br><input type="text" size="25" name="timeout" value="$servers[$server]['timeout']"><br> 40 41 Connections:<br><input type="text" size="25" name="connections" value="$servers[$server]['connections']"><br> 41 SSL<!--#if int($have_ssl) == 0 then "(disabled)" else ""#-->:<br> 42 <input type="checkbox" name="ssl" value="1" <!--#if int($servers[$server]['ssl']) != 0 and int($have_ssl) == 1 then "checked=1" else ""#--> <!--#if int($have_ssl) == 0 then "disabled" else ""#--> /> 43 <br> 44 Backup server:<br> 45 <input type="checkbox" name="fillserver" value="1" <!--#if int($servers[$server]['fillserver']) != 0 then "checked=1" else ""#--> /> 46 <br> 42 <!--#if int($have_ssl) == 0#--> 43 SSL (disabled) 44 <!--#else#--> 45 <input type="checkbox" name="ssl" value="1" <!--#if int($servers[$server]['ssl']) != 0 then "checked=1" else ""#-->/> SSL<br/> 46 <!--#end if#--> 47 <input type="checkbox" name="fillserver" value="1" <!--#if int($servers[$server]['fillserver']) != 0 then "checked=1" else ""#--> /> Backup server<br/> 48 <input type="checkbox" name="enable" value="1" <!--#if int($servers[$server]['enable']) != 0 then "checked=1" else ""#--> /> Enable<br/> 47 49 <input type="hidden" name="server" value="$server"> 48 50 <p><input type="submit" value="Save Changes"></p> trunk/main/interfaces/Plush/templates/config_scheduling.tmpl
r1734 r1768 50 50 </td><td> 51 51 <select name="action"> 52 <option value="resume">Resume</option> 53 <option value="pause">Pause</option> 54 <option value="shutdown">Shutdown SAB</option> 55 <option value="speedlimit">Speed Limit</option> 52 <!--#for $action in $actions#--> 53 <option value="$action">$action 54 <!--#end for#--> 56 55 </select> 57 56 </td></tr> trunk/main/interfaces/Plush/templates/config_server.tmpl
r1641 r1768 28 28 <tr><td align=right><div class="sucker">Backup Server?</div></td><td> 29 29 <input type="checkbox" name="fillserver" value="1"/> 30 </td></tr> 31 <tr><td align=right><div class="sucker">Enable?</div></td><td> 32 <input type="checkbox" name="enable" value="1"/> 30 33 </td></tr> 31 34 … … 79 82 </td> 80 83 </tr> 84 <tr> 85 <td align=right><div class="sucker">Enable?</div></td> 86 <td> 87 <input type="checkbox" name="enable" value="1" <!--#if int($servers[$server]['enable']) != 0 then "checked=1" else ""#--> /> 88 </td> 89 </tr> 81 90 </table> 82 91 trunk/main/interfaces/iphone/templates/config_scheduling.tmpl
r924 r1768 50 50 <label>Action:</label><br/><br/> 51 51 <select name="action"> 52 <option value="resume">resume 53 <option value="pause">pause 54 <option value="shutdown">shutdown 55 <option value="speedlimit">speedlimit 52 <!--#for $action in $actions#--> 53 <option value="$action">$action 54 <!--#end for#--> 56 55 </select> 57 56 </div> trunk/main/interfaces/iphone/templates/config_server.tmpl
r1641 r1768 54 54 <input type="hidden" id="$server" name="fillserver" value="<!--#if int($servers[$server]['fillserver']) != 0 then '1' else '0'#-->"> 55 55 <div class="toggle" onclick="toggleValue('$server')" <!--#if int($servers[$server]['fillserver']) != 0 then 'toggled="true"' else ''#-->><span class="thumb"></span><span class="toggleOn">Yes</span><span class="toggleOff">No</span></div> 56 </div> 57 58 <div class="row"> 59 60 <label>Enable:</label><br/><br/> 61 <input type="hidden" id="$server" name="enable" value="<!--#if int($servers[$server]['enable']) != 0 then '1' else '0'#-->"> 62 <div class="toggle" onclick="toggleValue('$server')" <!--#if int($servers[$server]['enable']) != 0 then 'toggled="true"' else ''#-->><span class="thumb"></span><span class="toggleOn">Yes</span><span class="toggleOff">No</span></div> 56 63 <input type="hidden" name="server" value="$server"> 57 64 </div> trunk/main/interfaces/prototype/templates/config_scheduling.tmpl
r1734 r1768 41 41 <label class="label">Action:</label> 42 42 <select name="action"> 43 <option value="resume">resume 44 <option value="pause">pause 45 <option value="shutdown">shutdown 46 <option value="speedlimit">speedlimit 43 <!--#for $action in $actions#--> 44 <option value="$action">$action 45 <!--#end for#--> 47 46 </select> 48 47 <br class="clear" /> trunk/main/interfaces/prototype/templates/config_server.tmpl
r1641 r1768 31 31 <label><span class="label">Backup Server:</span> 32 32 <input class="radio" type="checkbox" name="fillserver" value="1" <!--#if int($servers[$server]['fillserver']) != 0 then "checked=1" else ""#--> /></label> 33 </label><br class="clear" /> 34 35 <label><span class="label">Enable:</span> 36 <input class="radio" type="checkbox" name="enable" value="1" <!--#if int($servers[$server]['enable']) != 0 then "checked=1" else ""#--> /></label> 33 37 <input type="hidden" name="server" value="$server"><br class="clear" /> 34 38 … … 74 78 <input class="radio" type="checkbox" name="fillserver" value="1"></label> 75 79 <br class="clear" /> 80 81 <label><span class="label">Enable:</span> 82 <input class="radio" type="checkbox" name="enable" value="1"></label> 83 <br class="clear" /> 76 84 77 85 <p><input type="button" class="submitindent" size="40" value="Add Server" onclick="javascript:submitconfig('config/server/addServer', 'submitstatus3','addserver','config/server','0')"> trunk/main/interfaces/smpl/templates/config_scheduling.tmpl
r1734 r1768 41 41 <label class="label">Action:</label> 42 42 <select name="action"> 43 <option value="resume">resume 44 <option value="pause">pause 45 <option value="shutdown">shutdown 46 <option value="speedlimit">speedlimit 43 <!--#for $action in $actions#--> 44 <option value="$action">$action 45 <!--#end for#--> 47 46 </select> 48 47 <br class="clear" /> trunk/main/interfaces/smpl/templates/config_server.tmpl
r1641 r1768 32 32 <label><span class="label">Backup Server:</span> 33 33 <input class="radio" type="checkbox" name="fillserver" value="1" <!--#if int($servers[$server]['fillserver']) != 0 then "checked=1" else ""#--> /></label> 34 </label><br class="clear" /> 35 36 <label><span class="label">Enable:</span> 37 <input class="radio" type="checkbox" name="enable" value="1" <!--#if int($servers[$server]['enable']) != 0 then "checked=1" else ""#--> /></label> 34 38 <input type="hidden" name="server" value="$server"><br class="clear" /> 35 39 … … 77 81 <br class="clear" /> 78 82 83 <label><span class="label">Enable:</span> 84 <input class="radio" type="checkbox" name="enable" value="1"></label> 85 <br class="clear" /> 86 79 87 <p><input type="button" class="submitindent" size="40" value="Add Server" onclick="javascript:submitconfig('config/server/addServer', 'submitstatus3','addserver','config/server','0')"> 80 88 <span class="submitstatus" id="submitstatus3"></span></p> trunk/main/sabnzbd/__init__.py
r1760 r1768 50 50 from sabnzbd.misc import DirScanner, real_path, \ 51 51 create_real_path, check_latest_version, from_units, SameFile, decodePassword, \ 52 ProcessArchiveFile, ProcessSingleFile 52 ProcessArchiveFile, ProcessSingleFile, save_configfile 53 53 from sabnzbd.urlgrabber import URLGrabber 54 54 from sabnzbd.nzbstuff import NzbObject … … 576 576 577 577 if DOWNLOADER: 578 DOWNLOADER.__init__( CFG['servers'],DOWNLOADER.paused)578 DOWNLOADER.__init__(DOWNLOADER.paused) 579 579 else: 580 DOWNLOADER = Downloader( CFG['servers'])580 DOWNLOADER = Downloader() 581 581 if pause_downloader: 582 582 DOWNLOADER.paused = True … … 595 595 596 596 if evalSched: 597 p, s = scheduler.analyse() 598 if not pause_downloader: 599 DOWNLOADER.paused = p 600 if s: 601 DOWNLOADER.limit_speed(s) 602 BANDWITH_LIMIT = s 597 scheduler.analyse(pause_downloader) 603 598 604 599 logging.info('All processes started') … … 1129 1124 ## Unsynchronized methods ## 1130 1125 ################################################################################ 1126 def enable_server(server): 1127 """ Enable server """ 1128 try: 1129 CFG['servers'][server]['enable'] = 1 1130 except: 1131 logging.warning('[%s] Trying to set status of non-existing server %s', __NAME__, server) 1132 return 1133 save_configfile(CFG) 1134 update_server(server, server) 1135 1136 def disable_server(server): 1137 """ Disable server """ 1138 try: 1139 CFG['servers'][server]['enable'] = 0 1140 except: 1141 logging.warning('[%s] Trying to set status of non-existing server %s', __NAME__, server) 1142 return 1143 save_configfile(CFG) 1144 update_server(server, server) 1145 1131 1146 def change_web_dir(web_dir): 1132 1147 LOGIN_PAGE.change_web_dir(web_dir) … … 1182 1197 try: 1183 1198 DOWNLOADER.disconnect() 1199 except: 1200 logging.exception("[%s] Error accessing DOWNLOADER?", __NAME__) 1201 1202 def update_server(oldserver, newserver): 1203 global DOWNLOADER, CV 1204 try: 1205 CV.acquire() 1206 try: 1207 DOWNLOADER.init_server(oldserver, newserver) 1208 finally: 1209 CV.notifyAll() 1210 CV.release() 1184 1211 except: 1185 1212 logging.exception("[%s] Error accessing DOWNLOADER?", __NAME__) trunk/main/sabnzbd/downloader.py
r1746 r1768 58 58 59 59 class Server: 60 def __init__(self, host, port, timeout, threads, fillserver, ssl, username = None,60 def __init__(self, id, host, port, timeout, threads, fillserver, ssl, username = None, 61 61 password = None): 62 self.id = id 63 self.newid = None 64 self.restart = False 62 65 self.host = host 63 66 self.port = port … … 69 72 self.username = username 70 73 self.password = password 71 74 72 75 self.busy_threads = [] 73 76 self.idle_threads = [] … … 75 78 for i in range(threads): 76 79 self.idle_threads.append(NewsWrapper(self, i+1)) 80 81 def stop(self, readers, writers): 82 for nw in self.idle_threads: 83 try: 84 fno = nw.nntp.sock.fileno() 85 except: 86 fno = None 87 if fno and fno in readers: 88 readers.pop(fno) 89 if fno and fno in writers: 90 writers.pop(fno) 91 nw.terminate() 92 self.idle_threads = [] 77 93 78 94 def __repr__(self): … … 129 145 130 146 class Downloader(Thread): 131 def __init__(self, servers,paused = False):147 def __init__(self, paused = False): 132 148 Thread.__init__(self) 149 150 logging.debug("[%s] Initializing downloader/decoder", __NAME__) 133 151 134 152 # Used for scheduled pausing … … 144 162 145 163 self.shutdown = False 164 self.__restart = 0 146 165 147 166 self.force_disconnect = False … … 152 171 self.servers = [] 153 172 173 servers = sabnzbd.CFG['servers'] 174 154 175 primary = False 155 176 for server in servers: 156 srv = servers[server] 157 enabled = True #bool(GetParmInt(srv, 'enable', 1)) 177 if self.init_server(None, server): 178 primary = True 179 180 if not primary: 181 logging.warning('[%s] No active primary servers defined, will not download!', __NAME__) 182 183 self.decoder = Decoder(self.servers) 184 185 186 def init_server(self, oldserver, newserver): 187 """ Setup or re-setup single server 188 When oldserver is defined and in use, delay startup. 189 Return True when newserver is primary 190 """ 191 192 primary = False 193 create = False 194 195 servers = sabnzbd.CFG['servers'] 196 if newserver in servers: 197 srv = servers[newserver] 198 enabled = bool(GetParmInt(srv, 'enable', 1)) 158 199 host = GetParm(srv, 'host') 159 200 port = GetParmInt(srv, 'port', 119) … … 165 206 fillserver = bool(GetParmInt(srv, 'fillserver', 0)) 166 207 primary = primary or (enabled and (not fillserver) and (threads > 0)) 167 ssl = bool(GetParmInt(srv, 'ssl', 0)) 208 ssl = bool(GetParmInt(srv, 'ssl', 0)) and sabnzbd.newswrapper.HAVE_SSL 168 209 username = GetParm(srv, 'username') 169 210 password = decodePassword(GetParm(srv, 'password'), 'server') 170 171 if enabled and host and port and threads: 172 self.servers.append(Server(host, port, timeout, threads, fillserver, ssl, 173 username, password)) 174 175 if (not primary): 176 logging.warning('[%s] No active primary servers defined, will not download!', __NAME__) 177 178 self.servers = tuple(self.servers) 179 180 self.decoder = Decoder(self.servers) 211 create = True 212 213 if oldserver: 214 for n in xrange(len(self.servers)): 215 if self.servers[n].id == oldserver: 216 # Server exists, do re-init later 217 create = False 218 self.servers[n].newid = newserver 219 self.servers[n].restart = True 220 self.__restart += 1 221 break 222 223 if create and enabled and host and port and threads: 224 self.servers.append(Server(newserver, host, port, timeout, threads, fillserver, ssl, 225 username, password)) 226 227 return primary 228 181 229 182 230 def stop(self): … … 225 273 self.__reset_nw(nw, "timed out") 226 274 227 if not server.idle_threads or self.paused or self.shutdown or self.delayed or self.postproc: 275 if server.restart: 276 if not server.busy_threads: 277 newid = server.newid 278 server.stop(self.read_fds, self.write_fds) 279 self.servers.remove(server) 280 if newid: 281 self.init_server(None, newid) 282 self.__restart -= 1 283 # Have to leave this loop, because we removed element 284 break 285 else: 286 # Restart pending, don't add new articles 287 continue 288 289 if not server.idle_threads or server.restart or self.paused or self.shutdown or self.delayed or self.postproc: 228 290 continue 229 291 … … 282 344 283 345 for server in self.servers: 284 for nw in server.idle_threads: 285 nw.hard_reset(wait=False) 346 server.stop(self.read_fds, self.write_fds) 286 347 287 348 logging.info("[%s] Shutting down", __NAME__) … … 313 374 sabnzbd.CV.acquire() 314 375 while (not sabnzbd.has_articles() or self.paused or self.delayed or self.postproc) and not \ 315 self.shutdown :376 self.shutdown and not self.__restart: 316 377 sabnzbd.CV.wait() 317 378 sabnzbd.CV.release() trunk/main/sabnzbd/interface.py
r1764 r1768 1412 1412 new[svr]['fillserver'] = org[svr]['fillserver'] 1413 1413 new[svr]['ssl'] = org[svr]['ssl'] 1414 new[svr]['enable'] = org[svr]['enable'] 1414 1415 config['servers'] = new 1415 1416 … … 1427 1428 @cherrypy.expose 1428 1429 def addServer(self, server = None, host = None, port = None, timeout = None, username = None, 1429 password = None, connections = None, ssl = None, fillserver = None, _dc = None):1430 password = None, connections = None, ssl = None, fillserver = None, enable=None, _dc = None): 1430 1431 1431 1432 timeout = check_timeout(timeout) … … 1441 1442 if not ssl: 1442 1443 ssl = '0' 1444 if enable == None: 1445 enable = '1' 1443 1446 if host and port and port.isdigit() \ 1444 1447 and connections.isdigit() and fillserver.isdigit() \ … … 1465 1468 sabnzbd.CFG['servers'][server]['fillserver'] = fillserver 1466 1469 sabnzbd.CFG['servers'][server]['ssl'] = ssl 1467 return saveAndRestart(self.__root, _dc) 1470 sabnzbd.CFG['servers'][server]['enable'] = enable 1471 1472 save_configfile(sabnzbd.CFG) 1473 sabnzbd.update_server(None, server) 1474 raise Raiser(self.__root, _dc=_dc) 1475 1468 1476 1469 1477 @cherrypy.expose 1470 1478 def saveServer(self, server = None, host = None, port = None, username = None, timeout = None, 1471 password = None, connections = None, fillserver = None, ssl = None, _dc = None):1479 password = None, connections = None, fillserver = None, ssl = None, enable=None, _dc = None): 1472 1480 1473 1481 timeout = check_timeout(timeout) 1474 1482 1475 server = Strip(server)1483 oldserver = Strip(server) 1476 1484 port = Strip(port) 1477 1485 … … 1484 1492 if not fillserver: 1485 1493 fillserver = '0' 1494 if not enable: 1495 enable = '0' 1486 1496 if host and port and port.isdigit() \ 1487 1497 and connections.isdigit() and fillserver and fillserver.isdigit() \ … … 1492 1502 1493 1503 if password and not password.strip('*'): 1494 password = sabnzbd.CFG['servers'][ server]['password']1495 1496 del sabnzbd.CFG['servers'][ server]1504 password = sabnzbd.CFG['servers'][oldserver]['password'] 1505 1506 del sabnzbd.CFG['servers'][oldserver] 1497 1507 1498 1508 # Allow IPV6 numerical addresses, '[]' is not compatible with … … 1512 1522 sabnzbd.CFG['servers'][server]['fillserver'] = fillserver 1513 1523 sabnzbd.CFG['servers'][server]['ssl'] = ssl 1514 return saveAndRestart(self.__root, _dc) 1524 sabnzbd.CFG['servers'][server]['enable'] = enable 1525 1526 save_configfile(sabnzbd.CFG) 1527 sabnzbd.update_server(oldserver, server) 1528 raise Raiser(self.__root, _dc=_dc) 1515 1529 1516 1530 @cherrypy.expose 1517 1531 def delServer(self, *args, **kwargs): 1518 1532 if 'server' in kwargs and kwargs['server'] in sabnzbd.CFG['servers']: 1519 del sabnzbd.CFG['servers'][kwargs['server']] 1520 1533 server = kwargs['server'] 1534 del sabnzbd.CFG['servers'][server] 1535 save_configfile(sabnzbd.CFG) 1536 sabnzbd.update_server(server, None) 1537 1521 1538 if '_dc' in kwargs: 1522 r eturn saveAndRestart(self.__root,kwargs['_dc'])1539 raise Raiser(self.__root, _dc=kwargs['_dc']) 1523 1540 else: 1524 r eturn saveAndRestart(self.__root,'')1541 raise Raiser(self.__root, _dc='') 1525 1542 1526 1543 #------------------------------------------------------------------------------ … … 1767 1784 config['schedlines'].append(ev[3]) 1768 1785 1786 actions = ['resume', 'pause', 'shutdown', 'speedlimit'] 1787 servers = sabnzbd.CFG['servers'] 1788 for server in servers: 1789 actions.append(server) 1790 config['actions'] = actions 1769 1791 1770 1792 template = Template(file=os.path.join(self.__web_dir, 'config_scheduling.tmpl'), … … 1778 1800 action = None, arguments = None, _dc = None): 1779 1801 schedules = sabnzbd.CFG['misc']['schedlines'] 1802 1803 arguments = arguments.strip().lower() 1804 if arguments in ('on', 'enable'): 1805 arguments = '1' 1806 elif arguments in ('off','disable'): 1807 arguments = '0' 1808 1780 1809 if minute and hour and dayofweek and action: 1781 try: 1782 if action == 'speedlimit': int(arguments) 1810 if (action == 'speedlimit') and arguments.isdigit(): 1811 pass 1812 elif action in ('resume', 'pause', 'shutdown'): 1813 arguments = '' 1814 elif action.find(':') > 0: 1815 if arguments == '1': 1816 arguments = action 1817 action = 'enable_server' 1818 else: 1819 arguments = action 1820 action = 'disable_server' 1821 else: 1822 action = None 1823 1824 if action: 1783 1825 schedules.append('%s %s %s %s %s' % 1784 1826 (minute, hour, dayofweek, action, arguments)) 1785 except:1786 pass1787 1827 save_configfile(sabnzbd.CFG) 1788 1828 scheduler.restart() trunk/main/sabnzbd/newswrapper.py
r1763 r1768 245 245 # Reset for internal reasons, just wait 5 sec 246 246 self.timeout = time() + 5 247 247 248 def terminate(self): 249 """ Close connection and remove nntp object """ 250 if self.nntp: 251 try: 252 self.nntp.sock.close() 253 except: 254 pass 255 del self.nntp 248 256 249 257 trunk/main/sabnzbd/scheduler.py
r1747 r1768 41 41 """ Create the scheduler and set all required events 42 42 """ 43 global __SCHED 43 global __SCHED, CFG 44 44 45 45 need_rsstask = True … … 79 79 elif action_name == 'speedlimit' and arguments != []: 80 80 action = sabnzbd.limit_speed 81 elif action_name == 'enable_server' and arguments != []: 82 action = sabnzbd.enable_server 83 elif action_name == 'disable_server' and arguments != []: 84 action = sabnzbd.disable_server 81 85 else: 82 86 logging.warning("[%s] Unknown action: %s", __NAME__, action_name) … … 140 144 stop() 141 145 142 p, s = analyse() 143 sabnzbd.DOWNLOADER.paused = p 144 if s: 145 sabnzbd.DOWNLOADER.limit_speed(s) 146 sabnzbd.BANDWITH_LIMIT = s 147 146 analyse() 147 148 148 init() 149 149 start() … … 204 204 205 205 206 def analyse( ):206 def analyse(was_paused=False): 207 207 """ Determine what pause/resume state we would have now. 208 208 Return True if paused mode would be active. … … 213 213 paused = None 214 214 speedlimit = None 215 servers = {} 215 216 216 217 for ev in sort_schedules(schedlines, forward=False): 217 218 logging.debug('[%s] Schedule check result = %s', __NAME__, ev) 218 219 action = ev[1] 220 try: 221 value = ev[2] 222 except: 223 value = None 219 224 if action == 'pause': 220 225 paused = True 221 226 elif action == 'resume': 222 227 paused = False 223 elif action == 'speedlimit' and ev[2]!=None:228 elif action == 'speedlimit' and value!=None: 224 229 speedlimit = int(ev[2]) 225 226 return paused, speedlimit 230 elif action == 'enable_server': 231 try: 232 servers[value] = 1 233 except: 234 logging.warning('[%s] Schedule for non-existing server %s', __NAME__, value) 235 elif action == 'disable_server': 236 try: 237 servers[value] = 0 238 except: 239 logging.warning('[%s] Schedule for non-existing server %s', __NAME__, value) 240 241 if not was_paused: 242 sabnzbd.DOWNLOADER.paused = paused 243 if speedlimit: 244 sabnzbd.DOWNLOADER.limit_speed(s) 245 sabnzbd.BANDWITH_LIMIT = speedlimit 246 for serv in servers: 247 try: 248 sabnzbd.CFG['servers'][serv]['enable'] = servers[serv] 249 except: 250 pass 251 sabnzbd.misc.save_configfile(sabnzbd.CFG)