Commit ae8ea82e authored by SVN-Git Migration's avatar SVN-Git Migration

Imported Upstream version 0.4.9

parents
This diff is collapsed.
(c) Copyright 2007-2009 by "The SABnzbd-team".
The SABnzbd-team is:
Current team:
ShyPike <shypike@sabnzbd.org>
sw1tch <switch@sabnzbd.org>
pairofdimes <pairofdimes@sabnzbd.org>
deam <deam@sabnzbd.org>
inpheaux <inpheaux@sabnzbd.org>
rAf <rAf@sabnzbd.org>
Honorary member (and original author)
Gregor Kaufmann <tdian@users.sourceforge.net>
SABnzbd comes with ABSOLUTELY NO WARRANTY.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
See GPL2.txt and GPL3.txt
This diff is collapsed.
This diff is collapsed.
SABnzbd+ v0.4.9
-------------------------------------------------------------------------------
0) LICENSE
-------------------------------------------------------------------------------
(c) Copyright 2008-2009 The SABnzbd-Team <team@sabnzbd.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-------------------------------------------------------------------------------
1) INSTALL with the Win32 installer
-------------------------------------------------------------------------------
Just run the downloaded EXE file and the installer will start.
It's just a simple standard installer.
After installaton, find the SABnzbd program in the Start menu and start it.
Within 5-10 seconds your web browser will start and show the user interface.
Use the "Help" button in the web-interface to be directed to the Help Wiki
on SourceForge.net
-------------------------------------------------------------------------------
2) INSTALL pre-built Win32 binaries
-------------------------------------------------------------------------------
Unzip pre-built version to any folder of your liking.
Start the SABnzbd.exe program.
Within 5-10 seconds your web browser will start and show the user interface.
Use the "Help" button in the web-interface to be directed to the Help Wiki
on SourceForge.net
-------------------------------------------------------------------------------
3) INSTALL with only sources
-------------------------------------------------------------------------------
You need to have Python installed and some modules.
Unix/Linux/OSX
Python-2.4.4 http://www.python.org
cElementTree-1.0.5 http://effbot.org/downloads/
OR
Python-2.5.2 http://www.python.org
Windows
Python-2.5.2 http://www.activestate.com
Essential modules
cheetah-2.0.1 http://www.cheetahtemplate.org/
yenc module >= 0.3 http://sabnzbd.sourceforge.net/yenc-0.3.tar.gz
http://sabnzbd.sourceforge.net/yenc-0.3-w32fixed.zip (Win32-only)
par2cmdline >= 0.4 http://parchive.sourceforge.net/
http://chuchusoft.com/par2_tbb/index.html (multi-core)
Optional modules
unrar >= 3.70 http://www.rarlab.com/rar_add.htm
unzip >= 5.52 http://www.info-zip.org/
feedparser >= 4.1 http://feedparser.org/
pyopenssl => 0.7 http://sourceforge.net/projects/pyopenssl/
Unix/Linux/OSX (source)
openssl => v0.9.8g http://www.openssl.org/
Windows (binaries)
openssl => v0.9.8g http://www.slproweb.com/products/Win32OpenSSL.html
(You only need libeay32.dll and ssleay32.dll)
Embedded modules (no need to install)
CherryPy-2.3.0 http://www.cherrypy.org
Unpack the ZIP-file containing the SABnzbd sources to any folder of your liking.
Start the program from the commandline:
python SABnzbd.py
Within 5-10 seconds your web browser will start and show the user interface.
Use the "Help" button in the web-interface to be directed to the Help Wiki
on SourceForge.net
-------------------------------------------------------------------------------
4) TROUBLESHOOTING
-------------------------------------------------------------------------------
Your browser may start up with just an error page.
This means that SABnzbd cannot use the default port 8080 to run its web-server on.
Try to use another port, you'll need to use the a command window:
SABnzbd.exe -s localhost:7777
or
python SABnzbd.py -s localhost:7777
You may of course try other port numbers too.
For troubleshooting you can use the program SABnzbd-console.exe.
This will show a black window where logging information will be shown. This
may help you solve problems easier.
-------------------------------------------------------------------------------
5) MORE INFORMATION
-------------------------------------------------------------------------------
Visit the WIKI site:
http://sabnzbdplus.wiki.sourceforge.net/
-------------------------------------------------------------------------------
6) CREDITS
-------------------------------------------------------------------------------
o) Plush alternative web interface
pairofdimes
o) Smpl alternative web interface
switch
o) SABnzbd uses various code from pynewsleecher, newsunpack and grabnzb by:
Freddie (freddie@madcowdisease.org) (http://www.madcowdisease.org/mcd)
o) SABnzbd interface is served by:
cherrypy (http://www.cherrypy.org/)
o) SABnzbd configfile is interpreted by:
pythonutils.configObj (http://www.voidspace.org.uk/python/pythonutils.html)
o) SABnzbd MS Windows .exe is generated by :
py2exe (http://starship.python.net/crew/theller/py2exe/)
o) SABnzbd Scheduler:
kronos (http://www.razorvine.net/downloads.html)
o) SABnzbd Authentication:
MultiAuth (http://projects.dowski.com/view/multiauth)
o) python yenc module:
http://golug.cc.uniud.it/yenc.html
o) json.py:
Patrick D. Logan
http://sourceforge.net/projects/json-py
List of known issues.
*** Known problems ***
- Blocking of the queue can occur in the combination of a missing
article and a non-responding (backup) server
- The "Watched Folder" sometimes fails to delete the NZB files it has
processed. This happens when other software still accesses these files.
Some third-party utilities supporting SABnzbd are known to do this.
SABnzbd will remember these files and ignore them.
- Jobs deleted from the queue will leave downloaded files behind
in the "incomplete" folder.
You will have to remove these files manually.
- Memory usage can sometimes have high peaks. This makes using SABnzbd on very low
memory systems (eg a SAN device) a challenge.
- On some NAS/SAN systems you may have to downgrade CherryPy to 2.2.1.
Remove the "cherrypy" directory inside SABnzbd and install an older
CherryPy as a Python module.
- SABnzbd is not compatible with some ZoneAlarm firewall versions.
Comodo and the Windows firewall work fine.
- Sometimes logging stops. This is a notorious bug in Python logging. SABnzbd will
function as normal. If you run from sources or use the --console option with the
Win32-binary, you will see that logging continues in the console window, but
nothing will be written to the log-files.
Copyright 2008-2009 The SABnzbd-Team <team@sabnzbd.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See accompanying files GPL2.txt and GPL3.txt.
Metadata-Version: 1.0
Name: SABnzbd
Version: 0.4.9
Summary: SABnzbd-0.4.9
Home-page: http://sourceforge.net/projects/sabnzbdplus
Author: The SABnzbd Team
Author-email: team@sabnzbd.org
License: GNU General Public License 2 (GPL2) or later
Description: Fully automated Usenet Binary Downloader
Platform: posix
*************************************
*** This is SABnzbd 0.4.9 ***
*************************************
SABnzbd is an open-source cross-platform binary newsreader.
It simplifies the process of downloading from Usenet dramatically,
thanks to its friendly web-based user interface and advanced
built-in post-processing options that automatically verify, repair,
extract and clean up posts downloaded from Usenet.
SABnzbd also has a fully customizable user interface,
and offers a complete API for third-party applications to hook into.
There is an extensive Wiki on the use of SABnzbd.
http://sabnzbd.wikidot.com/
**********************************************
*** Upgrading from 0.4.2/.../0.4.6 ***
**********************************************
Just install over the existing installation,
and you will be able to resume where you left off.
**************************************
*** Upgrading from 0.4.1 and older ***
**************************************
Do *not* install the new version over the old one.
Remove old one first or install seperately.
You can re-use your sabnzbd.ini file.
You cannot re-use an unfinished download queue or keep
the download history.
*******************************************
*** Changes since 0.4.8 ***
*******************************************
- Important security fix, preventing "Cross-Site Request Forgery" vulnerability
as reported by Secunia.
- All self-references to SABnzbd require a session key (invisible for the user).
- API requests now require an API-key (can be found in Config->General)
This will influence scripts and third-party utilities.
- Fixed false unrar error messages when using Linux wth a non-UTF filesystem
- Fixed another potential par2 problem for OSX
*******************************************
*** Changes since 0.4.7 ***
*******************************************
Fixed:
- Fixed various par2-repair problems for OSX
- Solved long queue display problem for OSX
- Fixed news-group and newzbin-category to SABnzbd-category conversion
*******************************************
*** Changes since 0.4.6 ***
*******************************************
New:
- Support end-of-queue standby/shutdown for OSX
- Unix/OSX: Do not change permissions of existing folders
- Sort RSS previews newest-job-first
Fixed:
- Reduce character filtering in filenames to absolute minumum
- Do not remove ';' from foldernames
- After file-joining, the .1 files are sometimes not removed
- Scheduled or end-of-queue Hibernate and Standby sometimes crash.
- When trimming newzbin titles do not add unique number (defeats duplicate detection)
- Repaired accented character problems on OSX
- Show correct free space for very large disks on Windows
*******************************************
*** Changes since 0.4.5 ***
*******************************************
New:
- "No duplicates" option
(Do not download an NZB whose name is already present in the backup folder)
- Option to choose between transposing or removing illegal filename characters
- Restore the "auto-disconnect" option
- Keep Windows awake while downloading/post-processing
- Updated par2 and unrar for OSX
- Add option/parameters for ionice, off by default (Linux)
Fixed:
- Properly close server connections
This should prevent servers from complaining about "too many connections" after
pauses and empty queues
- Removed warning for correct, but empty RSS feeds
- Restore support for rar's with .nnn extensions
- Problem with deleting nameless files from queue
- Solved logging problem for OSX
*******************************************
*** Changes since 0.4.4 ***
*******************************************
New:
- Allow override of the newzbin category in the RSS scanner
- No longer disable RSS schedule flag when changing filters
- Support RSS feeds from nzbindex.nl
- Support GZipped NZB files in RSS run (needed for some sites)
- Retry on incomplete NZB files in RSS run
- Use ionice (if present) to run external utilities (Linux)
- Current (scheduled) speed now shows in the speedbox
Speedbox no longer updates the INI file
Fixed:
- Proper handling of accented characters
- Removed several Category handling problems
- Several TV episode handler improvements
- Refuse UNC paths in Windows for "incomplete" (due to par2)
- API-addid did not accept "cat" parameter
- IE and Opera could not delete first schedule
- Encrypted and obfusticated RAR files were deleted from the Watched folder
instead of ignored.
- Hanging-unrar on Linux
- Retry malformed yEnc articles on other server(s)
*******************************************
*** Changes since 0.4.3 ***
*******************************************
Fixed:
- RSS feeds not staying enabled through restart
- Jobs could sometimes fail when cleanup-list is used
- Rename similar files in TV sorting
- Un-openable RAR files would crash the dirscanner
- File-upload did not accept RARred NZB files
- Clearing the download speed shows an error
- Missing incomplete folder for a download causes par2 errors
- Filtering files on extension in the queue can lead to failed jobs
- Rename similar files in TV sorting
- Better error reporting for problems with external programs
- SMPL: Status does not always display Downloading when it should
*******************************************
*** Changes since 0.4.2 ***
*******************************************
New:
- Watched folder and UI now accept RAR files containing NZB-files.
- Add API call to retrieve version
- Sort the category list
Fixed:
- Watched folder: changed files will now be re-examined
- Duplicate RSS jobs were not filtered out
- Delete history made safer
- Proper script was not set when fetching from newzbin bookmarks
- Strip white-space around server host name (preventing copy-paste errors)
- Par2 checking would fail if first article of a par2 file is missing
- No error report was giben when server authentication is missing
- On schedule change, evaluate pause/resume state properly
- Fixed %s.n bug in the TV Sorting Preview
- Fixed %s.n and %s_n bug in TV Sorting output
*******************************************
*** Major changes since 0.3.4 ***
*******************************************
- Secure NNTP (SSL)
- RSS is finally useful
- Better newzbin support
- Download based on Bookmarks
- Compatible with the new www.newzbin.com
- User-defined categories for precise storage and handling
- Intelligent handling of seasons of TV shows
- The Windows binary distribution now comes with a PAR2
program that supports a multi-core CPU.
You can tune the performance of PAR2 (Config->Switches)
- iPhone skin
- Optional secondary web-interface on http://host:port/sabnzbd/m
- Improved bandwidth control
- Highly improved Plush and Smpl skins
- General improvement of robustness and usability
==============================================================
This diff is collapsed.
@echo off
rem Example of a post processing script for SABnzbd
echo.
echo Running in directory "%~d0%~p0"
echo.
echo The first parameter (result-dir) = %1
echo The second parameter (nzb-name) = %2
echo The third parameter (nice name) = %3
echo The fourth parameter (newzbin #) = %4
echo The fifth parameter (category) = %5
echo The sixth parameter (group) = %6
echo.
#!/bin/sh
# Example of a post processing script for SABnzbd
echo
echo Started as $0
echo
echo "The first parameter (result-dir) =" "$1"
echo "The second parameter (nzb-name) =" "$2"
echo "The third parameter (nice name) =" "$3"
echo "The fourth parameter (newzbin-id) =" "$4"
echo "The fifth parameter (category) =" "$5"
echo "The sixth parameter (group) =" "$6"
echo
"""Global module that all modules developing with CherryPy should import."""
__version__ = '2.3.0'
import datetime
import sys
import types
from _cperror import *
import config
import _cptree
tree = _cptree.Tree()
# Legacy code may clobber this.
root = None
lowercase_api = False
import _cpserver
server = _cpserver.Server()
codecoverage = False
try:
from threading import local
except ImportError:
from cherrypy._cpthreadinglocal import local
# Create a threadlocal object to hold the request and response
# objects. In this way, we can easily dump those objects when
# we stop/start a new HTTP conversation, yet still refer to
# them as module-level globals in a thread-safe way.
serving = local()
class _ThreadLocalProxy:
def __init__(self, attrname):
self.__dict__["__attrname__"] = attrname
def __getattr__(self, name):
try:
childobject = getattr(serving, self.__attrname__)
except AttributeError:
raise AttributeError("cherrypy.%s has no properties outside of "
"an HTTP request." % self.__attrname__)
return getattr(childobject, name)
def __setattr__(self, name, value):
try:
childobject = getattr(serving, self.__attrname__)
except AttributeError:
raise AttributeError("cherrypy.%s has no properties outside of "
"an HTTP request." % self.__attrname__)
setattr(childobject, name, value)
def __delattr__(self, name):
try:
childobject = getattr(serving, self.__attrname__)
except AttributeError:
raise AttributeError("cherrypy.%s has no properties outside of "
"an HTTP request." % self.__attrname__)
delattr(childobject, name)
# Create request and response object (the same objects will be used
# throughout the entire life of the webserver, but will redirect
# to the "serving" object)
request = _ThreadLocalProxy('request')
response = _ThreadLocalProxy('response')
# Create thread_data object as a thread-specific all-purpose storage
thread_data = local()
threadData = thread_data # Backward compatibility
# Create variables needed for session (see lib/sessionfilter.py for more info)
from filters import sessionfilter
session = sessionfilter.SessionWrapper()
_session_data_holder = {} # Needed for RAM sessions only
_session_lock_dict = {} # Needed for RAM sessions only
_session_last_clean_up_time = datetime.datetime.now()
def expose(func=None, alias=None):
"""Expose the function, optionally providing an alias or set of aliases."""
def expose_(func):
func.exposed = True
if alias is not None:
if isinstance(alias, basestring):
parents[alias.replace(".", "_")] = func
else:
for a in alias:
parents[a.replace(".", "_")] = func
return func
parents = sys._getframe(1).f_locals
if isinstance(func, (types.FunctionType, types.MethodType)):
# expose is being called directly, before the method has been bound
return expose_(func)
else:
# expose is being called as a decorator
if alias is None:
alias = func
return expose_
def log(msg='', context='', severity=0, traceback=False):
"""Syntactic sugar for writing to the (error) log."""
# Load _cputil lazily to avoid circular references, and
# to allow profiler and coverage tools to work on it.
import _cputil
logfunc = _cputil.get_special_attribute('_cp_log_message', '_cpLogMessage')
if traceback:
msg += _cputil.formatExc()
logfunc(msg, context, severity)
import cgi
import cherrypy
class FieldStorage(cgi.FieldStorage):
def __init__(self, *args, **kwds):
try:
cgi.FieldStorage.__init__(self, *args, **kwds)
except ValueError, ex:
if str(ex) == 'Maximum content length exceeded':
raise cherrypy.HTTPError(status=413)
else:
raise ex
def read_lines_to_eof(self):