Commit 4807dbc8 authored by SVN-Git Migration's avatar SVN-Git Migration

Imported Upstream version 0.5.4

parent 54fe95d2
-------------------------------------------------------------------------------
0.5.4Final by The SABnzbd-Team
-------------------------------------------------------------------------------
- Ensure that sabnzbd.ini has no group/world access (Unix, OSX)
-------------------------------------------------------------------------------
0.5.4RC1 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Support unpacking of rar-files embedded in zip-files
- Compensate for IPV6 issues of Chrome on OSX
- Changes in dirscan-speed are now immediately effective
- Reduce amount of logging
- On Windows, detect whether sqlite3.dll is missing. If so, panic and
complain about lame virus scanner.
- Add hidden option "queue_complete_pers" to select non-persistence of
non-script end-of-queue actions.
- Restrict square bracket substitution to server names
- Add hidden option "allow_64bit_tools" to allow or prevent use of 64bit par2 and unrar.
-------------------------------------------------------------------------------
0.5.3Final by The SABnzbd-Team
-------------------------------------------------------------------------------
......
SABnzbd+ v0.5.3
SABnzbd+ v0.5.4
-------------------------------------------------------------------------------
0) LICENSE
......
......@@ -29,6 +29,9 @@
SABnzbd will take care of overlapping names.
See: http://wiki.sabnzbd.org/configure-special
- Some 64bit Windows systems have probelms with the 64bit versions of par2 and unrar.
Setting "allow_64bit_tools" to 0 in sabnzbd.ini, will force the use of 32bit versions.
- Some Usenet servers have intermittent login (or other) problems.
For these the server blocking method is not very favourable.
There is an INI-only option that will limit blocks to 1 minute.
......
Metadata-Version: 1.0
Name: SABnzbd
Version: 0.5.3
Summary: SABnzbd-0.5.3
Version: 0.5.4
Summary: SABnzbd-0.5.4
Home-page: http://sourceforge.net/projects/sabnzbdplus
Author: The SABnzbd Team
Author-email: team@sabnzbd.org
......
*******************************************
*** This is SABnzbd 0.5.3 ***
*** This is SABnzbd 0.5.4 ***
*******************************************
SABnzbd is an open-source cross-platform binary newsreader.
It simplifies the process of downloading from Usenet dramatically,
......
......@@ -49,23 +49,26 @@ if not cherrypy.__version__.startswith("3.2"):
from cherrypy import _cpserver
from cherrypy import _cpwsgi_server
SQLITE_DLL = True
try:
from sqlite3 import version as sqlite3_version
except:
try:
from pysqlite2.dbapi2 import version as sqlite3_version
except:
print "Sorry, requires Python module sqlite3 (pysqlite2 in python2.4)"
if os.name != 'nt':
print "Sorry, requires Python module sqlite3 (pysqlite2 in python2.4)"
print "Try: apt-get install python-pysqlite2"
sys.exit(1)
sys.exit(1)
else:
SQLITE_DLL = False
import sabnzbd
import sabnzbd.interface
from sabnzbd.constants import *
import sabnzbd.newsunpack
from sabnzbd.misc import get_user_shellfolders, launch_a_browser, real_path, \
check_latest_version, panic_tmpl, panic_port, panic_fwall, panic, exit_sab, \
check_latest_version, panic_tmpl, panic_port, panic_fwall, panic_sqlite, panic, exit_sab, \
panic_xport, notify, split_host, convert_version, get_ext, create_https_certificates, \
windows_variant, ip_extract
import sabnzbd.scheduler as scheduler
......@@ -190,6 +193,7 @@ def print_help():
print " -c --clean Remove queue, cache and logs"
print " -p --pause Start in paused mode"
print " --https <port> Port to use for HTTPS server"
print " --log-all Log all article handling (for developers)"
def print_version():
print """
......@@ -497,10 +501,13 @@ def get_webhost(cherryhost, cherryport, https_port):
# Some systems don't like brackets in numerical ipv6
if '[' in cherryhost:
try:
info = socket.getaddrinfo(cherryhost, None)
except:
if sabnzbd.DARWIN:
cherryhost = cherryhost.strip('[]')
else:
try:
info = socket.getaddrinfo(cherryhost, None)
except:
cherryhost = cherryhost.strip('[]')
if ipv6 and ipv4 and \
(browserhost not in ('localhost', '127.0.0.1', '[::1]', '::1')):
......@@ -518,6 +525,10 @@ def get_webhost(cherryhost, cherryport, https_port):
if ips[0] != '127.0.0.1':
browserhost = '127.0.0.1'
if cherryhost == 'localhost' and sabnzbd.DARWIN:
cherryhost = '127.0.0.1'
browserhost = 'localhost'
if cherryport is None:
cherryport = sabnzbd.cfg.CHERRYPORT.get_int()
else:
......@@ -707,7 +718,7 @@ def main():
slice = 1
opts, args = getopt.getopt(sys.argv[slice:], "phdvncw:l:s:f:t:b:2:",
['pause', 'help', 'daemon', 'nobrowser', 'clean', 'logging=',
'weblogging=', 'server=', 'templates',
'weblogging=', 'server=', 'templates', 'log-all',
'template2', 'browser=', 'config-file=', 'delay=', 'force',
'version', 'https=', 'autorestarted'])
except getopt.GetoptError:
......@@ -797,11 +808,17 @@ def main():
https_port = int(arg)
re_argv.append(opt)
re_argv.append(arg)
elif opt in ('--log-all',):
sabnzbd.LOG_ALL = True
# Detect Windows variant
if sabnzbd.WIN32:
vista_plus, vista64 = windows_variant()
if not SQLITE_DLL:
panic_sqlite(sabnzbd.MY_FULLNAME)
exit_sab(2)
if inifile:
# INI file given, simplest case
inifile = evaluate_inipath(inifile)
......
......@@ -111,6 +111,7 @@ LOGFILE = None
WEBLOGFILE = None
LOGHANDLER = None
GUIHANDLER = None
LOG_ALL = False
AMBI_LOCALHOST = False
WEB_DIR = None
......@@ -213,7 +214,7 @@ def initialize(pause_downloader = False, clean_up = False, evalSched=False):
if not os.path.exists(os.path.join(cfg.CACHE_DIR.get_path(), QUEUE_FILE_NAME)):
OLD_QUEUE = bool(glob.glob(os.path.join(cfg.CACHE_DIR.get_path(), QUEUE_FILE_TMPL % '?')))
sabnzbd.change_queue_complete_action(cfg.queue_complete.get())
sabnzbd.change_queue_complete_action(cfg.queue_complete.get(), new=False)
###
### Initialize threads
......@@ -437,7 +438,7 @@ def backup_nzb(filename, data):
_f.close()
except:
logging.error("Saving %s to %s failed", backup_name, cfg.NZB_BACKUP_DIR.get_path())
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
os.chdir(here)
......@@ -471,7 +472,7 @@ def add_nzbfile(nzbfile, pp=None, script=None, cat=None, priority=NORMAL_PRIORIT
os.close(f)
except:
logging.error(Ta('error-tempFile@1'), filename)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
if ext.lower() in ('.zip', '.rar'):
dirscanner.ProcessArchiveFile(filename, path, pp, script, cat, priority=priority)
......@@ -555,10 +556,11 @@ def restart_program():
cherrypy.engine.restart()
def change_queue_complete_action(action):
def change_queue_complete_action(action, new=True):
"""
Action or script to be performed once the queue has been completed
Scripts are prefixed with 'script_'
When "new" is False, check wether non-script actions are acceptable
"""
global QUEUECOMPLETE, QUEUECOMPLETEACTION, QUEUECOMPLETEARG
......@@ -568,14 +570,19 @@ def change_queue_complete_action(action):
#all scripts are labeled script_xxx
_action = run_script
_argument = action.replace('script_', '')
elif action == 'shutdown_pc':
_action = system_shutdown
elif action == 'hibernate_pc':
_action = system_hibernate
elif action == 'standby_pc':
_action = system_standby
elif action == 'shutdown_program':
_action = shutdown_program
elif new or cfg.queue_complete_pers.get():
if action == 'shutdown_pc':
_action = system_shutdown
elif action == 'hibernate_pc':
_action = system_hibernate
elif action == 'standby_pc':
_action = system_standby
elif action == 'shutdown_program':
_action = shutdown_program
else:
action = None
else:
action = None
#keep the name of the action for matching the current select in queue.tmpl
QUEUECOMPLETE = action
......@@ -632,13 +639,14 @@ def get_new_id(prefix):
return tail
except:
logging.error(Ta('error-failMkstemp'))
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
@synchronized(IO_LOCK)
def save_data(data, _id, do_pickle = True, doze=0):
def save_data(data, _id, do_pickle = True, doze=0, silent=False):
path = os.path.join(cfg.CACHE_DIR.get_path(), _id)
logging.info("Saving data for %s in %s", _id, path)
if not silent:
logging.debug("Saving data for %s in %s", _id, path)
try:
_f = open(path, 'wb')
......@@ -653,13 +661,14 @@ def save_data(data, _id, do_pickle = True, doze=0):
_f.close()
except:
logging.error(Ta('error-saveX@1'), path)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
@synchronized(IO_LOCK)
def load_data(_id, remove = True, do_pickle = True):
def load_data(_id, remove = True, do_pickle = True, silent=False):
path = os.path.join(cfg.CACHE_DIR.get_path(), _id)
logging.info("Loading data for %s from %s", _id, path)
if not silent:
logging.debug("Loading data for %s from %s", _id, path)
if not os.path.exists(path):
logging.info("%s missing", path)
......@@ -679,7 +688,7 @@ def load_data(_id, remove = True, do_pickle = True):
remove_data(_id)
except:
logging.error(Ta('error-loading@1'), path)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
return None
return data
......
......@@ -55,7 +55,8 @@ class ArticleCache:
if nzf.deleted or nzo.deleted:
# Do not discard this article because the
# file might still be processed at this moment!!
logging.info("%s would be discarded", article)
if sabnzbd.LOG_ALL:
logging.debug("%s would be discarded", article)
# return
saved_articles = article.nzf.nzo.saved_articles
......@@ -97,11 +98,11 @@ class ArticleCache:
data = self.__article_table.pop(article)
self.__article_list.remove(article)
self.__cache_size -= len(data)
logging.info("Loaded %s from cache", article)
logging.debug("cache_size -> %s", self.__cache_size)
if sabnzbd.LOG_ALL:
logging.debug("Loaded %s from cache", article)
elif article.art_id:
data = sabnzbd.load_data(article.art_id, remove = True,
do_pickle = False)
do_pickle = False, silent=True)
nzo = article.nzf.nzo
if article in nzo.saved_articles:
......@@ -119,7 +120,8 @@ class ArticleCache:
@synchronized(ARTICLE_LOCK)
def purge_articles(self, articles):
logging.debug("Purgable articles -> %s", articles)
if sabnzbd.LOG_ALL:
logging.debug("Purgable articles -> %s", articles)
for article in articles:
if article in self.__article_list:
self.__article_list.remove(article)
......@@ -135,14 +137,15 @@ class ArticleCache:
if nzf.deleted or nzo.deleted:
# Do not discard this article because the
# file might still be processed at this moment!!
logging.info("%s would be discarded", article)
if sabnzbd.LOG_ALL:
logging.debug("%s would be discarded", article)
# return
art_id = article.get_art_id()
if art_id:
logging.info("Flushing %s to disk", article)
logging.debug("cache_size -> %s", self.__cache_size)
sabnzbd.save_data(data, art_id, do_pickle = False, doze=self.__doze)
if sabnzbd.LOG_ALL:
logging.debug("Flushing %s to disk", article)
sabnzbd.save_data(data, art_id, do_pickle = False, doze=self.__doze, silent=True)
else:
logging.warning("Flushing %s failed -> no art_id", article)
......@@ -154,8 +157,8 @@ class ArticleCache:
self.__article_table[article] = data
self.__cache_size += len(data)
logging.info("Added %s to cache", article)
logging.debug("cache_size -> %s", self.__cache_size)
if sabnzbd.LOG_ALL:
logging.debug("Added %s to cache", article)
### Global access point for article cache
......
......@@ -231,8 +231,8 @@ def GetMD5Hashes(fname):
logging.info('Cannot use corrupt par2 file for QuickCheck, "%s"', fname)
table = {}
except:
logging.debug('QuickCheck parser crashed in file %s', fname)
logging.debug('Traceback: ', exc_info = True)
logging.info('QuickCheck parser crashed in file %s', fname)
logging.info('Traceback: ', exc_info = True)
table = {}
f.close()
......
......@@ -92,16 +92,19 @@ nice = OptionStr('misc', 'nice', '', validation=no_nonsense)
ionice = OptionStr('misc', 'ionice', '', validation=no_nonsense)
ignore_wrong_unrar = OptionBool('misc', 'ignore_wrong_unrar', False)
par2_multicore = OptionBool('misc', 'par2_multicore', True)
allow_64bit_tools = OptionBool('misc', 'allow_64bit_tools', True)
USERNAME_NEWZBIN = OptionStr('newzbin', 'username')
PASSWORD_NEWZBIN = OptionPassword('newzbin', 'password')
NEWZBIN_BOOKMARKS = OptionBool('newzbin', 'bookmarks', False)
NEWZBIN_UNBOOKMARK = OptionBool('newzbin', 'unbookmark', True)
BOOKMARK_RATE = OptionNumber('newzbin', 'bookmark_rate', 60, minval=15, maxval=24*60)
NEWZBIN_HTTPS = OptionBool('newzbin', 'https', True)
TOP_ONLY = OptionBool('misc', 'top_only', True)
AUTODISCONNECT = OptionBool('misc', 'auto_disconnect', True)
queue_complete = OptionStr('misc', 'queue_complete')
queue_complete_pers = OptionBool('misc', 'queue_complete_pers', True)
REPLACE_SPACES = OptionBool('misc', 'replace_spaces', False)
REPLACE_DOTS = OptionBool('misc', 'replace_dots', False)
......
......@@ -585,7 +585,7 @@ def get_config(section, keyword):
try:
return database[section][keyword]
except KeyError:
logging.info('Missing configuration item %s,%s', section, keyword)
logging.debug('Missing configuration item %s,%s', section, keyword)
return None
......@@ -626,9 +626,13 @@ def read_config(path):
if not os.path.exists(path):
# No file found, create default INI file
try:
if not sabnzbd.WIN32:
prev= os.umask(077)
fp = open(path, "w")
fp.write("__version__=%s\n[misc]\n[logging]\n" % __CONFIG_VERSION)
fp.close()
if not sabnzbd.WIN32:
os.umask(prev)
except IOError:
return False, 'Cannot create INI file %s' % path
......@@ -682,7 +686,10 @@ def save_config(force=False):
except:
CFG[section] = {}
for subsec in database[section]:
subsec_mod = subsec.replace('[', '{').replace(']','}')
if section == 'servers':
subsec_mod = subsec.replace('[', '{').replace(']','}')
else:
subsec_mod = subsec
try:
CFG[section][subsec_mod]
except:
......
......@@ -88,12 +88,12 @@ class HistoryDB:
return True
except:
logging.error(Ta('error-sqlCmd'))
logging.debug("SQL: %s" , command)
logging.debug("Traceback: ", exc_info = True)
logging.info("SQL: %s" , command)
logging.info("Traceback: ", exc_info = True)
try:
self.con.rollback()
except:
logging.debug("Rollback Failed:", exc_info = True)
logging.info("Rollback Failed:", exc_info = True)
return False
def create_history_db(self):
......
......@@ -89,7 +89,7 @@ class Decoder(Thread):
if lines:
try:
logging.info("Decoding %s", article)
logging.debug("Decoding %s", article)
data = decode(article, lines)
nzf.increase_article_count()
......@@ -163,7 +163,8 @@ class Decoder(Thread):
## Allow all servers to iterate over this nzo and nzf again ##
sabnzbd.nzbqueue.reset_try_lists(nzf, nzo)
logging.info('%s => found at least one untested server', article)
if sabnzbd.LOG_ALL:
logging.debug('%s => found at least one untested server', article)
else:
logging.warning(Ta('warn-artAllMissing@1'), article)
......
......@@ -194,7 +194,7 @@ def ProcessSingleFile(filename, path, pp=None, script=None, cat=None, catdir=Non
f.close()
except:
logging.warning(Ta('warn-noRead@1'), path)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
return -2
......@@ -221,7 +221,7 @@ def ProcessSingleFile(filename, path, pp=None, script=None, cat=None, catdir=Non
if not keep: os.remove(path)
except:
logging.error(Ta('error-remove@1'), path)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
return 1
return 0
......@@ -265,9 +265,11 @@ class DirScanner(threading.Thread):
self.shutdown = False
self.error_reported = False # Prevents mulitple reporting of missing watched folder
self.trigger = False
self.dirscan_dir = cfg.DIRSCAN_DIR.get_path()
self.dirscan_speed = cfg.DIRSCAN_SPEED.get()
cfg.DIRSCAN_DIR.callback(self.newdir)
cfg.DIRSCAN_SPEED.callback(self.newspeed)
def newdir(self):
""" We're notified of a dir change """
......@@ -276,6 +278,11 @@ class DirScanner(threading.Thread):
self.dirscan_dir = cfg.DIRSCAN_DIR.get_path()
self.dirscan_speed = cfg.DIRSCAN_SPEED.get()
def newspeed(self):
""" We're notified of a dir change """
self.dirscan_speed = cfg.DIRSCAN_SPEED.get()
self.trigger = True
def stop(self):
self.save()
logging.info('Dirscanner shutting down')
......@@ -371,11 +378,12 @@ class DirScanner(threading.Thread):
# Use variable scan delay
dirscan_dir = self.dirscan_dir
x = self.dirscan_speed
while (x > 0) and not self.shutdown:
while (x > 0) and not self.shutdown and not self.trigger:
time.sleep(1.0)
x = x - 1
if dirscan_dir and not self.shutdown and not sabnzbd.PAUSED_ALL:
self.trigger = False
run_dir(dirscan_dir, None)
try:
......
......@@ -342,11 +342,11 @@ class Downloader(Thread):
bpsmeter.method.reset()
def delay(self):
logging.info("Delaying")
logging.debug("Delaying")
self.delayed = True
def undelay(self):
logging.info("Undelaying")
logging.debug("Undelaying")
self.delayed = False
def wait_postproc(self):
......@@ -469,7 +469,7 @@ class Downloader(Thread):
logging.error(Ta('error-noInit@3'),
nw.thrdnum, server.host,
server.port)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
self.__reset_nw(nw, "failed to initialize")
# Exit-point
......@@ -580,9 +580,9 @@ class Downloader(Thread):
try:
nw.finish_connect()
logging.debug("%s@%s:%s last message -> %s",
nw.thrdnum, nw.server.host,
nw.server.port, nw.lines[0])
if sabnzbd.LOG_ALL:
logging.debug("%s@%s:%s last message -> %s", nw.thrdnum, nw.server.host,
nw.server.port, nw.lines[0])
nw.lines = []
nw.data = ''
except NNTPPermanentError, error:
......@@ -683,9 +683,9 @@ class Downloader(Thread):
self.__reset_nw(nw, msg, quit=True)
if done:
logging.info('Thread %s@%s:%s: %s done',
nw.thrdnum, server.host,
server.port, article.article)
if sabnzbd.LOG_ALL:
logging.debug('Thread %s@%s:%s: %s done', nw.thrdnum, server.host,
server.port, article.article)
self.decoder.decode(article, nw.lines)
nw.soft_reset()
......@@ -752,14 +752,14 @@ class Downloader(Thread):
try:
if cfg.SEND_GROUP.get() and nw.article.nzf.nzo.get_group() != nw.group:
group = nw.article.nzf.nzo.get_group()
logging.info('Thread %s@%s:%s: GROUP <%s>',
nw.thrdnum, nw.server.host,
nw.server.port, group)
if sabnzbd.LOG_ALL:
logging.info('Thread %s@%s:%s: GROUP <%s>', nw.thrdnum, nw.server.host,
nw.server.port, group)
nw.send_group(group)
else:
logging.info('Thread %s@%s:%s: BODY %s',
nw.thrdnum, nw.server.host,
nw.server.port, nw.article.article)
if sabnzbd.LOG_ALL:
logging.info('Thread %s@%s:%s: BODY %s', nw.thrdnum, nw.server.host,
nw.server.port, nw.article.article)
nw.body()
fileno = nw.nntp.sock.fileno()
......@@ -770,7 +770,7 @@ class Downloader(Thread):
self.__reset_nw(nw, "server broke off connection", quit=False)
except:
logging.error('Suspect error in downloader')
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
self.__reset_nw(nw, "server broke off connection", quit=False)
#------------------------------------------------------------------------------
......
......@@ -54,13 +54,13 @@ def send(message):
if not port:
port = 25
logging.info("Connecting to server %s:%s", server, port)
logging.debug("Connecting to server %s:%s", server, port)
try:
mailconn = ssmtplib.SMTP_SSL(server, port)
mailconn.ehlo()
logging.info("Connected to server %s:%s", server, port)
logging.debug("Connected to server %s:%s", server, port)
except Exception, errorcode:
if errorcode[0]:
......
......@@ -2014,7 +2014,7 @@ class ConfigRss:
def add_rss_feed(self, **kwargs):
msg = check_session(kwargs)
if msg: return msg
feed= Strip(kwargs.get('feed'))
feed= Strip(kwargs.get('feed')).strip('[]')
uri = Strip(kwargs.get('uri'))
try:
cfg = config.get_rss()[feed]
......@@ -2390,7 +2390,7 @@ class ConfigCats:
msg = check_session(kwargs)
if msg: return msg
newname = kwargs.get('newname', '').strip()
newname = kwargs.get('newname', '').strip(' []')
name = kwargs.get('name')
if newname:
if name:
......
......@@ -55,6 +55,7 @@ PANIC_QUEUE = 3
PANIC_FWALL = 4
PANIC_OTHER = 5
PANIC_XPORT = 6
PANIC_SQLITE = 7
def safe_lower(txt):
if txt:
......@@ -478,6 +479,13 @@ MSG_OLD_QUEUE = r'''
<FORM><input type="button" onclick="this.form.action='/.'; this.form.submit(); return false;" value="OK"/></FORM>
'''
MSG_SQLITE = r'''
SABnzbd detected that the file sqlite3.dll is missing.<br><br>
Some poorly designed virus-scanners remove this file.<br>
Please check your virus-scanner, try to re-install SABnzbd and complain to your virus-scanner vendor.<br>
<br>
'''
def panic_message(panic, a=None, b=None):
"""Create the panic message from templates
"""
......@@ -511,6 +519,8 @@ def panic_message(panic, a=None, b=None):
msg = MSG_BAD_FWALL % "It is likely that you are using ZoneAlarm on Vista.<br>"
else:
msg = MSG_BAD_FWALL % "<br>"
elif panic == PANIC_SQLITE:
msg = MSG_SQLITE
else:
msg = MSG_OTHER % (a, b)
......@@ -539,6 +549,9 @@ def panic_queue(name):
def panic_tmpl(name):
launch_a_browser(panic_message(PANIC_TEMPL, name, 0))
def panic_sqlite(name):
launch_a_browser(panic_message(PANIC_SQLITE, name, 0))
def panic_old_queue():
msg = MSG_OLD_QUEUE
return MSG_BAD_NEWS % (sabnzbd.MY_NAME, sabnzbd.__version__, sabnzbd.MY_NAME, sabnzbd.__version__, msg, '')
......@@ -809,7 +822,7 @@ def create_dirs(dirpath):
logging.info('Creating directories: %s', dirpath)
if not create_all_dirs(dirpath, True):
logging.error(Ta('error-makeFile@1'), dirpath)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
return None
return dirpath
......@@ -834,7 +847,7 @@ def move_to_path(path, new_path, unique=True):
os.remove(path)
except:
logging.error(Ta('error-moveFile@2'), path, new_path)
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
return new_path
......@@ -1084,7 +1097,7 @@ def create_https_certificates(ssl_cert, ssl_key):
open(ssl_cert, 'w').write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
except:
logging.error(Ta('error-sslFiles'))
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
return False
return True
......@@ -1154,7 +1167,7 @@ def win_hibernate():
time.sleep(10)
except:
logging.error(Ta('error-hibernate'))
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
def win_standby():
......@@ -1163,7 +1176,7 @@ def win_standby():
time.sleep(10)
except:
logging.error(Ta('error-standby'))
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
def win_shutdown():
......@@ -1190,7 +1203,7 @@ def osx_shutdown():
subprocess.call(['osascript', '-e', 'tell app "System Events" to shut down'])
except:
logging.error(Ta('error-shutdown'))
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
os._exit(0)
......@@ -1200,7 +1213,7 @@ def osx_standby():
time.sleep(10)
except:
logging.error(Ta('error-standby'))
logging.debug("Traceback: ", exc_info = True)
logging.info("Traceback: ", exc_info = True)
def osx_hibernate():
......@@ -1318,7 +1331,7 @@ def renamer(old, new):
return
except WindowsError, err:
if err[0] == 32:
logging.info('Retry rename %s to %s', old, new)
logging.debug('Retry rename %s to %s', old, new)
retries -= 1
else:
raise WindowsError(err)
......@@ -1338,7 +1351,7 @@ def remove_dir(path):
return
except WindowsError, err:
if err[0] == 32:
logging.info('Retry delete %s', path)
logging.debug('Retry delete %s', path)
retries -= 1
else:
raise WindowsError(err)
......
......@@ -93,7 +93,7 @@ def find_programs(curdir):
sabnzbd.newsunpack.RAR_COMMAND = check(curdir, 'osx/unrar/unrar')
if sabnzbd.WIN32:
if sabnzbd.WIN64:
if sabnzbd.WIN64 and cfg.allow_64bit_tools.get():