================================================================================ $Id: changelog-torrentflux_2.1-b4rt.txt 2073 2006-12-31 16:07:01Z b4rt $ ================================================================================ 2.1-b4rt-98 ***** changes ***** - do not use gethostbyaddr in AuditAction + resetOwner - validate searchEngine-param in torrentSearch.php - added checks to operations and pages to check if a feature is activated. show error page (and log an error) if a feature is disabled and accessed. ***** fixes ***** - bug in clienthandler (could cause wrong inserted totals + xfer and wrong calculated sharekill (when a start is skipped)) - various minors. ***** updates ***** - BitTornado 0.3.18 - Transmission : * tfCLI-version : 1995 * Transmission-version : 0.7-svn-1302 - added update-SQL-files for upgrades from TF 2.3 - Search-Engines : * Demonoid 1.06 -------------------------------------------------------------------------------- 2.1-b4rt-972 There is a local file disclosure vulnerability in the nfo-viewer (viewnfo.php) of TorrentFlux 2.1(-b4rt) in all versions up to 2.1-b4rt-971 which is fixed in this version. the vuln can only be exploited by someone having a valid user- account from a TorrentFlux-2.1(-b4rt)-installation. details : http://svn.berlios.de/wsvn/tf-b4rt/branches/torrentflux_2.1-b4rt/?op=log&rev=1870 ***** changes ***** - minor optimizations. (avoid use of preg_match) ***** fixes ***** - fix for the local file disclosure vulnerability in the nfo-viewer. (viewnfo.php) - extended checks to prevent invocation from web in all "PHP-bins". (hopefully now catching all the php-config-permutations) - superadmin-file-backup : backup flux-docroot and not server-docroot. -------------------------------------------------------------------------------- 2.1-b4rt-971 Note : when upgrading via superadmin-web-upgrade only part of the files are updated ! (superadmin-upgrade of 2.1-branch can only update the files in the docroot (and only docroot, not even subdirs of docroot)) details : http://svn.berlios.de/wsvn/tf-b4rt/branches/torrentflux_2.1-b4rt/?op=log&rev=1788 ***** changes ***** - mrtg.php : print a message when no graphs are found. - aliasfile-security-checks : do not print aliasfile-name on invalid aliasfile-requests as it contains path-info. just print a error-message. - optimizations : use "strpos" instead of "ereg" where possible - maketorrent : * better security-check in download-request * in download set the mime-type to "application/x-bittorrent" if file is a torrent-file and to "application/octet-stream" if not. - db-error-function : * added cli-mode-switch * additional error-message in db-error-page (should hopefully recognize the "corrupted tables"-problem and print out a proper message.) - sharekill-calculation : * change in fallback-behaviour : new : when restarting a torrent and seeding-ratio of set sharekill-value is already reached the torrent will not be started. (entry is logged to activity / debug if this applies) old : when restarting a torrent and seeding-ratio of set sharekill-value is already reached the torrent will be started with sharekill 0 (= seed forever). * new sanity-check for "torrentdata-size = 0" : if this case applies the sharekill-recalculation can not be done as size is a required value for the maths. when this case applies the torrent is now started with an unaltered sharekill-setting (so what is set will be passed 1:1 to the client) and additionally the event is logged. (activity - ERROR) - added cfg-constant for debug (activity-log) - Updated maketorrent to allow changing of chunk size. (ported from TF 2.2) - alias-file-sanity-check : allow - - various minors. ***** fixes ***** - sharekill-calculation : some fixes in code - Fixed Qmanager looping issue. (from TF 2.2) - fixed a bug in dir-stats - various minors. ***** updates ***** - Added Turkish and Russian language files. (from TF 2.2) - updated SQL-files for TF 2.2 (renamed to v98 to prevent confusion) - Transmission : * tfCLI-version : 1775 * Transmission-version : 0.7-svn-1152 -------------------------------------------------------------------------------- 2.1-b4rt-97 ***** changes ***** - added code to catch problems when main-path is invalid (eg not readable). - various security-related changes (nothing functional). - tornado : time-delta-format-code. - added a warning to "remember me"-setting. - integrated posix-functions provided by osearth. - backport of fluxpoller.pl and new mrtg-target. - added version-files to tornado + adodb. ***** fixes ***** - various security-related fixes and rewrites. these include fixes for : * http://secunia.com/advisories/22880/ * http://secunia.com/advisories/22933/ - various PHP5-problems fixed. - various SQL-statement-problems fixed. - fix for "TorrentFlux Dir.PHP Directory Traversal Vulnerability." * http://www.securityfocus.com/bid/20771/ - various fixes in fluxpoller.pl. - fixed problem in method http_query_builder in class SearchEngineBase. ***** updates ***** - Transmission : * tfCLI-version : 1565 * Transmission-version : 0.7-svn-1124 - Search-Engines : * BitMe 1.01 - ADOdb V4.93a -------------------------------------------------------------------------------- 2.1-b4rt-96 ***** changes ***** - db.php : * function initializeDatabase() : no html-page on error in cli-mode bust just die. * function getdb() : try once to initialize Database if $db not set. ***** updates ***** - Search-Engines * TorrentBox 1.04 * Filemp3 1.02 * The Pirate Bay Search Module v1.04 - BitTornado 0.3.17 - Transmission 0.7-svn -------------------------------------------------------------------------------- 2.1-b4rt-953 details : http://svn.berlios.de/wsvn/tf-b4rt/branches/torrentflux_2.1-b4rt/?op=log&rev=1280&sc=0&isdir=1 ***** changes ***** - transmission-handler : bsd-workaround : use PHP-function "touch" and not shell-call to "touch" - refactoring db : * dont return adodb-connection-object but just initialize global var in new function initializeDatabase() * function getdb() returns global instance of $db (method should not be used anymore and is not used anymore, just in case it is needed / compat-reasons) - superadmin : ported new db-connect-code - db.php : dont use DSN to connect, use Connect/PConnect and extra error-check - added "max-recursion-depth" (10) to function "checkDirectory". - superadmin : function backupCreate : use function checkDirectory from functions-lib and not extra local one ***** fixes ***** - bug when writing messages with accents or special characters. fix provided by Shadow aok, thanks for this. http://tf-b4rt.berlios.de/forum/index.php/topic,216.0.html - use a useless var in all PHP-classes ctors to prevent this error on flawed PHPs : "Fatal error: Only variables can be passed by reference in ..." - notice in xfer-hack -------------------------------------------------------------------------------- 2.1-b4rt-952 details : http://svn.berlios.de/wsvn/tf-b4rt/branches/torrentflux_2.1-b4rt/?op=log&rev=1226&sc=0&isdir=1 ***** changes ***** - dont print out any var-info on db-error - fluxcli.php : prevent invocation from web with help of "$argv" - removed unused defines from stats.php - client-handlers : escapeshellarg @ all strings in commandline-string possibly unsafe - superadmin : use proxy to get current version ***** fixes ***** - fixed some notices in xfer-hack - stats.php : fixed some notices - pid-file-fix-bug (fixed the bug in the workaround) - "maxcons"-bug (thanks again to nw for the hint on this) : changed "--max_initiate" to "--max_connections" - "TorrentFlux ip Script Insertion" - "TorrentFlux user_id Script Insertion" http://www.stevenroddis.com.au/2006/10/17/torrentflux-user_id-script-insertion/ - "TorrentFlux action Script Insertion" http://www.stevenroddis.com.au/2006/10/17/torrentflux-action-script-insertion/ - "TorrentFlux file Script Insertion" http://www.stevenroddis.com.au/2006/10/17/torrentflux-file-script-insertion/ -------------------------------------------------------------------------------- 2.1-b4rt-951 ***** fixes ***** - dont print DSN on db-error -------------------------------------------------------------------------------- 2.1-b4rt-95 Note : maintenance release of v9x-branch and not based on the codebase of the next version. this version does not add any real new features but only contains things ported back from svn-codebase plus fixes and updates. ***** changes ***** - removed dependency on call-time pass-by-reference allow_call_time_pass_reference can now be off or on in php.ini -> v95 has the same PHP-requirements as TorrentFlux 2.1 Final - added support for PostgreSQL. (including backup in admin + superadmin) - backported "db-core" (db.php / function getdb). + use DSN for connection + "nice" error-screen on connection-errors + support for persistent connection - superadmin : minor updates and backports - backported changes in repair-function (repairTorrentflux) ***** fixes ***** - ClientHandler and QueueManager base-classes : in error-case "no config passed" error-message was not set - problem at files >2GB in dir/filemanager : Warning: is_file() [function.is-file]: Stat failed for /foo/very.big (errno=75 - Value too large for defined data type) - bug in function deleteTorrent, xfer-setting was not taken into account - maketorrent : filedownload : screwed filenames in IE - bug in transmission-clienthandler-class : transmission expects -1 for "no seeding" - "TorrentFlux startpop.php torrent Script Insertion" http://www.torrentflux.com/forum/index.php/topic,2061.0.html http://www.stevenroddis.com.au/2006/10/13/torrentflux-startpopphp-torrent-script-insertion/ - errors to /dev/null in function "file_size" - bug in maketorrent.php http://tf-b4rt.berlios.de/forum/index.php/topic,129.0.html - PHP-notices throughout the code - problems when getting a torrent via function "FetchTorrent" - "touch-pid-fix" in transmission-clienthandler-class - "TorrentFlux User-Agent XSS Vulnerability" http://www.torrentflux.com/forum/index.php/topic,2035.0.html http://www.stevenroddis.com.au/2006/10/06/torrentflux-user-agent-xss-vulnerability/ ***** updates ***** - tfCLI for Transmission 0.6.1 and 0.7-svn - fluxpoller.pl - Search-Engines - BitTornado 0.3.16 - ADOdb V4.93 -------------------------------------------------------------------------------- 2.1-b4rt-94 note : this is the last of the "old" releases. this is not yet one of the "new" berliOS releases (so no tag/branch in svn for this also) primary meant to "make the move to berliOS" and have your superadmin- pages access the new server. codebase is a svn-export of svn-changeset 18 of berliOS-svn-repository changes since initial svn-import : - superadmin-update move to berliOS. proxy-script on berliOS-homepage serves update-content. - changes in version-check code. it now is checked if local version is a svn-version and if its the case version-page prints out so. - changed UpdateRefresh() in inc.index.head.b4rt.php / inc.index.head.tf.php to conform to W3C standards. - transmission updated to svn609. some minor changes in cli. - new function "News" in superadmin-page shows latest news. - cleaned up perl-code. added var for webserver-user in fluxpoller.pl (code on bsd for connections needs that, "www" was hardcoded in sub before) -------------------------------------------------------------------------------- changes from 2.1-b4rt-93 to initial svn-import @ berliOS - minor changes in admin.php (msn_exploder) - synced transmission with transmission 0.7-svn575 (b4rt) - changes in keywords due to move to svn. (b4rt) - changes in transmission due to move to svn (b4rt) - updated adodb to 4.90. (msn_exploder) ~ should work as excepted but not guaranteed (found no errors so far). - fix to prevent undefined var (->notice) on page-request without credentials (first load in form-based auth) (b4rt) - added link to rss-feed to html-head (tf-index + b4rt-index) (b4rt) - cleaned code in login.php (msn_exploder) - changed version in version-file to "svn" (b4rt). - fluxcli.php has new operations. (b4rt) ~ resume-all : resume all torrents. ~ start-all : start all torrents. - fixes + codechanges (b4rt) ~ stats.php does no print DTD-line in output-format "rss". (IE7 does not like DTDs in rss-feeds) ~ bug fixed which may have lead to "delete torrents+data" or "wipe torrents" not deleting data. (wrong paths were inserted into database for savepath- field of torrent in some cases) ~ transmission-resume-files now in dir "cache". changed delete-code in handler and cleanup-code in superadmin. -------------------------------------------------------------------------------- 2.1-b4rt-93 - Transmission 0.6.1 + 0.7-svn543 with tflux-transmissioncli 1.6 included. transmission-archives have only included what is needed to build transmissioncli for tflux. (only cli and libtransmission). to build and install, extract archive and exec in transmission-top-level-dir : ./configure --disable-gtk && make && make install if your system uses gmake... replace make with gmake. - fluxcli.php has new operations. ~ inject : inject a torrent into flux from commandline. ~ watch : inject (with move) + start torrents in a dir. this may be used to monitor a directory for dropped torrent-metafiles. to set this up call fluxcli.php with watch-operation from a scheduler like cron : */2 * * * * www-data cd /var/www && /usr/bin/php fluxcli.php watch /usr/local/torrent/.watch admin &> /dev/null - torrent-hashes are cached in db. implementation uses an "on demand" lookup + insert. lookup is done with a subshell-call to the metainfoclient (this was done always in function getTorrentHash before) when a hash for a torrent could not be found in db. after that it will be stored in the database for future lookups. this optimization leads to much faster index-page-generation in the "critical" (speed-wise) configs as for totals-processing the hash is needed for all torrents in the list. (so there was a subshell-call to get the hash for every torrent in the list on index-page-generation) i wrote it in this way so it will work also with present torrents, no re- inject is needed. getTorrentHash is also changed for output-format of transmissioncli Rev 1.4 or higer. (old transmissionclis wont work any longer as metainfoclient !) - clientside-table-sort. its possible to sort on columns on the client. "works" on all columns in b4rt- index-page and "most" columns on tf-index (all except "tf-status"-column) not all columns are in correct order yet, especially with mixed clients (eg seeds-column) exception : first column (inject-date) still uses server-side-sorting as it sorts on timestamps of files on server. client-side sorting can be enabled/disabled in admin-ui-settings or profile. javascript-code used (MIT-License) : http://www.kryogenix.org/code/browser/sorttable/ also some copy-pasted code of sorttable.js from azureus-webui is used. (code to sort on size, speed + percentage) - OneClick-QuickStart is back. Advanced Start Dialog can be turned off in admin-settings. if it is disabled the client will be started at once with last saved settings or default settings if it is a new torrent. - Drivespace-Bar style is now selectable (index-page-settings @ ui and profile) ~ tf : standard tf 2.1 style drivespace-bar. ~ xfer : xfer-hack style drivespace-bar. - fixes + codechanges ~ formatBytesToKBMGGB uses "kB" for kilobyte and not "KB". ~ some changes in code which gets and assigns port on client-start. code is not fail-safe but may help some ppl. (pom_nz) ~ changes in netstat-functions in bsd-cases. (code from khr0n0s) ~ style-fixes in index-page (CrazyCanuck) ~ suppressed problems on php file + date functions. (pointer from CrazyCanuck) ~ bug in savepath-load in functions "deleteTorrentData" and "getTorrentDataSize" fixed. this bug results in : + "delete torrents + data" operation does not delete data if data is in a specific savepath (not homedir) or data is "owned" by another user. + new tornado-workaround behaves buggy. checkbox is disabled although files are present. (thats because data cant be found because of wrong path) -------------------------------------------------------------------------------- 2.1-b4rt-92 - added multi-queue-operations (enqueue + dequeue) to dropdown-menu on index-page. slightly altered some colors of optgroup-headers to fit the ops. - enhanced "stats.php" stats.php has now 2 output-formats. format "rss" is now a valid rss-format (rss 0.91) and has standard external rss-dtd in the xml-document. format "xml" uses the dtd "tf_xml.dtd" from IHateMyISP as xml-schema. (this is the format known from old hacks) usage : ~ http://www.example.com/stats.php : send stats in default-format. (xml) ~ http://www.example.com/stats.php?f=xml : send stats in xml-format. schema (dtd "tf_xml.dtd") is from IHateMyISP. ~ http://www.example.com/stats.php?f=rss : send rss-feed. xml-format and php-code to generate xml-output from khr0n0s. rss-version is 0.91. ~ http://www.example.com/stats.php?f=xml&a=1 : send stats.xml as "file- attachment". can be used with any format. - index-page only includes xfer-elements (bars + bottom-stats) if xfer-realtime is activated. (else there are notices + "incorrect" values) - dir.php : ~ enable viewing of log-files with the nfo-viewer. (thanks to pat-e for pointer and code-snip) ~ dir "lost+found" is excluded from directory-views. (CrazyCanuck) ~ fixed : "When you view a directory and files (dir.php) the dates shown are all the last accessed dates, not the last modified dates, though the code itself is actually correct, it doesn't work." (thanks for pointer + codefix for this to CrazyCanuck) - added GPL-header to some php-files which didnt have it. (and were not already "license-flagged" of course) - permissions of files + dirs changed. files are 660, dirs and "executables" are 770. (exception : content of adodb-dir is mostly "untouched") - workaround-fix for BitTornado-hash-check-problem. (BitTornado dies when hash- check-param is passed and there is not yet written data to the disk.) function "getTorrentDataSize" gets size of data of torrent written to disk. (thanks to smooth for reporting the BitTornado-Problem.) if torrentDataSize > 0 its ok to use skip-hash-check (checkbox active in interactive start and non- interactive start uses the default-value in global settings) else dont use it (disabled checkbox in interactive start and param not used at all in non-interactive starts) - bug fixed which counted rsscaches as a running torrent. (thanks to lord_nor for the pointer to this bug.) -------------------------------------------------------------------------------- 2.1-b4rt-91 - used idea from "lord_nor's port fix" and added a method in handler-baseclass to set client-port on start. it is used by all clients and so now working for tornado like for transmission and is error-proof i hope: just use one range for all your clients (no matter what type) and start... a free port will be searched and assigned.. and if there is no port left an error "Error: All ports in use" is printed. - its now possible to run stats.php in "public mode" so that rss-feeds can be served without authentication. !!! this is disabled by default as it exposes maybe sensitive information !!! to activate find in your config.php : define('_PUBLIC_STATS',0); to enable public stats : define('_PUBLIC_STATS',1); to disable public stats : define('_PUBLIC_STATS',0); no db-config for this because i need this value before including certain files (without forcing me to rewrite not involved code for this feature) at a point where i have only "config.php". - new column "Client" (C) in b4rt-index-page. "B" : torrent has BitTornado selected. "T" : torrent has Transmission selected. "W" : wget-download "U" : unknown (?) - flagged bt-config-settings in admin-page with : "B" : supported by BitTornado "T" : supported by Transmission - made it possible to start transfer-clients (tornado+transmission+wget) "nice". used adjustment can be specified in index-page-settings. (admin-settings-misc) - made umask a configurable setting. (admin-settings-misc) - skip hash-check as configurable default-setting. (admin-settings-bt) - optimizations to speed up index-page-generation ~ xfer has new setting "realtime". when it is activated xfer-stats are updated on ever reload of index.php. when it is deactivated xfer-stats are only updated when opening "xfer.php" and "per torrent" when a torrent is started or deleted. this is useful if you want to have xfer but dont need stats on the index- page (bottom stats disabled) and prefer a snappier index-page-generation. ~ optimized versions of current-totals and totals-totals functions for index- page-generation. new meths avoid all "double-workload" (stat-file + db-accesses) and do the minimal of what is needed to "have it implemented working correct". ~ if you want a snappy index you have these choices atm : 1. + disable xfer or disable xfer-realtime + use b4rt-index-page but _dont_ use any of these columns : "Total Down" "Total Up" "Progress" 2. + disable xfer or disable xfer-realtime + use tf-index-page - fixed more messes of wget-hack in transfer-list-generation... this thing is still a evil hack and really should have a Handler. (but handler-design is still for "torrrent"-clients and not generic enough to integrate it clean) - bug in unrar-hack fixed. (thanks to nu_pagadi for reporting this) - bug in the move-hack fixed. (thanks to nu_pagadi for reporting this) - bug users-torrents / fluxcli.php fixed. (thanks to pom_nz for reporting this and keepin me searchin for the source. this bug was a bitch to find ;)) - bug rss/stats fixed. (thanks to khr0n0s for reporting this) rss-output has tag-content in CDATA. html-entity for infinite-sign is replaced with a hiven in xml. -------------------------------------------------------------------------------- 2.1-b4rt-9 - changes from v9-test to v9-rc # new # ~ superadmin.php : repair can now be done from within superadmin-page in sub-page maintenance. # changed # ~ functions.b4rt.php + admin.php + database-update updated all "netstat-functions" with "bsd-implementations". all bsd-code provided by lord_nor admin-settings-page updated : "netstat" moved to linux settings and bsd has new setting for "sockstat" ~ fluxcli.php : changed shebang from "#!/usr/bin/php" to "#!/usr/bin/env php" (lord_nor) ~ inc.index.main.php minor layout things ~ admin.php + profile.php typo in ui-settings / profile-page fixed (smooth) # bugs # ~ admin.php : bug which prevents enabling of move-hack fixed. (smooth) - changes in index-page(s) ~ new index-page with new transfer-list. new index-page does not use any subshell-calls in generation, does not use extra-sql-states, does not use overlib but has all (all that user wants) stats in list-view. users can choose in their profile which page they want (tf or b4rt). the row-settings of the transfer-list can be configured in ui-settings (default, users can configure their personal settings in their profile-page) ~ old (tf) index-page is modified as well. (style,sort-integration,...) ~ sortable columns (only date and name) based on idea from CrazyCanuck. default-sorting can be configured in admin/profile and additional it is possible to resort the transfer-list by clicking links in the lists head-cells. head of first column sorts by date (ascending/descending) and head of name-column sorts by name (ascending/descending). the images i made for the list-head are simple transparent gifs with white arrows. (wee my grafix-skills ~) ~ more possible layout-changes through new config-settings. (ui-settings + profile-settings) ~ "index.php" now has no "output-code" and "implementation-code" anymore and is only a "dispatcher". - new stats-page "stats.php" showing tflux-statistics. the default-output-format is rss ("stats.php" does not get any params), to get rss explicit call it with "stats.php?f=rss". (feed-link in navi has this format. (bad place for the feed-link imho but i didnt know where to put it) content can be delivered direct or with attachment-header. if you want an attachment-header add the param "a=1" to the url. eg "stats.php?a=1" for stats in default-format as xml-file-attachment or (with same result) use "stats.php?f=rss&a=1" to explicit get "stats.xml" as "attachment". sort-order of transfer-list in stats-output is default-sort-order as defined in index-page-settings. xml-schema (dtd) and idea for this is from IHateMyISP, i also used the file from darknite (http://www.torrentflux.com/forum/index.php/topic,1346.0.html) when writing "stats.php". as xml-schema and content didnt change you can use your systems/readers in same form like you did before with IHateMyISPs hack. note: transfer-totals and sharing-percentage are "real totals-values" and not "session-values". - Authentication you can choose which authentication-type you want to use. the old hacks "basic auth" (enable_basicauth) and "Remember me" (enable_rememberme) are merged into this more generic and extended implementation of credentials- handling. Auth-Types available : 0 : Form-Auth Standard TF 2.1 Form-Based Auth 1 : Form-Auth + Cookie Form-Based Auth with "Remember Me"-Cookie 2 : Basic-Auth Basic-Auth with Realm "TorrentFlux" (can be set in config-define) 3 : Basic-Passthru Basic-Passthru gets the credentials of an already authenticated user and passes them to the flux-auth. use this if you have your own external auth- system deployed which you use via basic-auth-supplied credentials. (eg if you use "auth_ldap" for webapp-authentications) use this only if you know and understand what this auth-type is doing ! Basic-Passthru has Basic-Auth as fallback if no credentials are provided. - multi-delete-implementation for dir-view to delete multiple entries. (files + dirs, recursive process) code is based on ryaners hack "Checkboxes for Dirview" (http://www.torrentflux.com/forum/index.php/topic,811.0.html) - "Move and Rename files/folders Hack and unRAR Hack Password extension"-hacks from nu_pagadi (http://www.torrentflux.com/forum/index.php/topic,1605.0.html) rewritten/modified : ~ changed the design of the move hack : old : one move-hack basedir and n subdirs (= categories). target-dir is "basedir + category-dir". new : n move-hack target-dirs. (abolute paths and can be any path) additional a custom-dir may be choosen in the move-dialog. ~ per-user settings and not per-install for move-hack. move-hack settings in admin-page are the users defaults. users can set their move-settings in their profile-page if admin enabled the move-hack. ~ target-dirs are not created on "form-submit" when configuring move-hack settings. target-dirs are created on demand in "move.php" when a move operation is processed. also the mkdir subshell-call is replaced with php-code emulating "mkdir -p". ~ bugs, warnings and notices fixed. ;) !!! caution !!! be aware that users can specify any target-path and can move files outside their homedirs with this hack. if you dont want that disable the move-hack. (the move-hack is disabled per default.) i didnt want to jail users into their homedirs hardcoded... specific safe-path has the same behaviour so imho its ok for now how things are atm in tflux (no ownerships and no acls), at least this more flexible implementation is how i want this hack to be. selfish me ;) - new in QueueSystem ~ QueueManager-admin-page tells if daemon needs a restart. if it doesnt print so the settings were reconfigured already in the running daemon. (not all,eg you cant reset QueueManager-path while it is running. also runtime-reconf is only supported by tfqmgr and Qmgr, tfQmanager always needs a restart) ~ new QueueManager "Qmgr" from lord_nor is included and integrated. lord_nors QueueManager is a rewrite of my QueueManager tfqmgr without using shared mem/semaphores (it is using socket-communication) and it is also working in jailed bsd-environments. the queue-manager-implementation as well as the class for integration into tflux-b4rt is all lord_nors code so kudos to him. note: Qmgr requires that "fluxcli.php" is executable by the user running the webserver. ~ changes in QueueManager-interface (+ implementations) // abstract method : setConfig function setConfig($key,$val) { return; } ~ new version (Revision 1.28) of "tfqmgr.pl" included. new features : + it is now possible to change queue-settings at daemons runtime. no need to restart the daemon if you just adjust the limit-values. + "fluxcli.php" is now executed with "/path/to/php fluxcli.php ..." and not anymore with "./fluxcli.php ..." -> it is not required any longer for "tfqmgr.pl" that "fluxcli.php" is executable. also the shebang (which breaks the pattern bin-path-defines are held central in the database) in fluxcli.php is not nec. anymore. daemon gets path to php on startup from the tflux-handler from tflux- database-settings. - all settings are reviewed to see what makes sense and is suitable for a per-user-setting. (per-user-hack-settings where nec. for the per-user-version of the "move-hack".) -> more settings are now per-user-configurable via the profile-page. also i resorted all settings present if they make sense where they are placed and modified where i thought it makes sense. (a good example is moving the "Show Server Load" from the common-settings-adminpage to the ui-settings-page) - fixed bug in instant-action-operations. default-values were not loaded when using "Upload+Start". - found and fixed more code of xfer-hack accessing transfer-totals in stat-files direct. (-> wrong xfer-stats when restarting transmissions) affected parts of xfer are rewritten to use ClientHandler-methods. -------------------------------------------------------------------------------- 2.1-b4rt-85 - fixed transmission-transfer-values problem. http://www.torrentflux.com/forum/index.php/topic,1265.msg11508.html#msg11508 - checked most code on a ultra-talky (printing out notices) and unbuffered php and modified all code i found to be "clean" or suppressed the notices in some cases where its "safe and ok" to ignore them. - dereferrer-hack. if hack is enabled links in links-list and private messages are proxied over new page dereferrer.php to remove referrers. - hyperlinks for http-link-strings in private messages. - "Start"-checkbox enhanced to "instant-action" dropdown. its now possible to choose if new torrent(s) should be started or queued automatic after upload/ download. - order of dropdown and bulk-operations changed. additional entry which is the default-selection is a dummy. (no "accident-operations" any more ~) -------------------------------------------------------------------------------- 2.1-b4rt-84 - bulk-operations bulk-operations in drop-down are now available for "normal" users and only operate on the torrents from the user. admin-bulk-operations operating on all torrents of the TorrentFlux-system moved to superadmin-page. (to new section "Torrents") - os-switch code determing os is in php without exec and regexp and processed only "once". actual code-switches are php-switches on integer-constants and "should" be fast + efficient and with minimal overhead. * oses defined so far : 1 : linux 2 : bsd * code-switches implemented so far : ~ loadavg : bsd-snip is from the tf-forum and is using a "uptime"-call ~ connections : this is done only in those parts i had working+tested bsd-code at hand. (fstat-line from lord_nor to count global connections.) "connections per client" and "host-list-per client" and "port-list" has no special bsd-code so far and uses linux-netstat-implementation. ~ admin-page-settings : new os-specific section. it only show settings that are availabe for the os flux is running on. -------------------------------------------------------------------------------- 2.1-b4rt-83 - added "bulk"-operations for admins. as this function operates on all clients of the torrentflux-installation its a admin-only function. (if not this code would still operate on all torrents, even those you cant see if you are "only a user" and setup has "Only Admin can See other users Torrents" hack enabled.) as i am bad at web-presentation-things i simply added it to the dropdown-menu. can be enabled/disabled in the admin-page with setting "bulk-operations". ~ Stop All : Stop all torrent-clients running on the TorrentFlux-installation. ~ Resume All : this will re-start all torrent-clients that were already started/queued at least once before. ~ Start All : this will resume "old" torrent-clients and start all "New" torrents with default-settings. - rewrote parts of getDirList and parts of wget.php. a wget-client will start at once after you submit the url and you cannot stop it. also after its done only use "delete torrent" on it to delete its meta- file and its stat-file. you cant use delete data or wipe on em and there are no sanity checks to prevent you doing that. (delete torrent may sound misleading but its the "same job" : delete meta-data of a client) integration of wget is a bit messy as there is no generic mechanism to diff a torrent-client from a non-torrent client (".url" (= meta-data-file of a wget-download) is hardcoded in getDirList as a special case with different file-format (regexp needs to replace ".url" in this case to get statfilename and not ".torrent")) - enhanced multi-upload. it now has an option to auto-start the torrents after upload. additional the count of rows in the form on the multi-upload page can now be set in the admin-settings. - rewrote parts of index-page. upload torrent and fetch remote torrent now have an option to auto-start the torrent after it is uploaded/downloaded. param for wget hack has changed and is not the same as the fetch-torrent any longer. slightly modified presentation of "box" in upper left corner. - moved xfer-hacks settings week_start and month_start from config.php into database. all xfer-hack variables are now configurable in the admin-settings. - enhanced the "Good looking statistics"-hack. now every option of it can be changed in the admin-settings. - meta-refresh of index-page can be enabled/disabled in ui-settings. users can have their personal setting for this. (to change in profile) - added "umask 0000" to torrent-client-start-line to "solve" permission-problems and make the need for a chmod-hack obsolete. (needed to access data with different user as user running torrent-clients (eg via ftp or samba)) - function "delete data+torrent" brings warning if data already deleted. -> @ in front of chmod-function-call in avddelete. (source of warning) - fluxcli.php has a new argument "repair" to fix a "screwed up" torrentflux. ~ deletes all existing pid-files of torrent-clients. ~ rewrites stat-files of all torrents. (to the same form as if the torrent was stopped regular) ~ sets "running"-flags of all torrents to 0 in database. ~ deletes leftovers (pid-file + FIFOs) of tfqmgr.pl (only done if daemon is not running) dont use this on a "ok-running" torrentflux or you will screw up things. this is only meant for "repair-purposes" eg after a power-failure or your torrent-clients were killed for some other reason. -------------------------------------------------------------------------------- 2.1-b4rt-82 - newest available patched transmissioncli included in the tarball. - tfqmgr.pl is included in this tarball ;) - searchengine-modules updated. (only in tarball, update-assistant cannot patch files not in docroot) - some minor things not visible in userland and not worth to mention. (like caching some vars to reduce workload in index-page-generation) - some minor presentation-things here and there. - rewrote stack-ops in client-handler-ctors to use extra-vars and be compatible with flawed phps (eg 5.0.5(+)) You need this if you get something like this on your installation : Fatal error: Only variables can be passed by reference in /var/www/ClientHandler.tornado.php on line 41 - modified some bits in code to fix some notices. (notices reported on php 5.0.4) You need this if you get something like this on your installation : PHP Notice: Undefined variable: data in /var/www/config.php on line 145 PHP Notice: Undefined variable: data in /var/www/QueueManager.tfqmgr.php on line 96 PHP Notice: Undefined variable: data in /var/www/QueueManager.tfqmgr.php on line 265 -------------------------------------------------------------------------------- 2.1-b4rt-81 - introduced per-user-settings. users can set their personal settings (these override admins default-settings) in their profile. - bug in maketorrent.php fixed. (thx to agentsmith for pointing this out) ** additional hacks ** - "Good looking statistics" from FLX (modified) http://www.torrentflux.com/forum/index.php/topic,1427.0.html - "Big bold drivespace warning. no popup!" from FLX (modified) http://www.torrentflux.com/forum/index.php/topic,1426.0.html - moved config-settings of blackwidows XFER-hack into the database. admin can set these in the admin-settings. - modified bits of blackwidows XFER-hack to have suitable (means readable ~) fallback for the black-on-black cases. (0% or 100%) -------------------------------------------------------------------------------- 2.1-b4rt-802 - rewrote parts of admin-page ~ splitted settings-safe functions. ~ changing settings causing auto-restart of queue-manager was very annoying. -> removed in save-settings-function of main-admin. -> removed in save-settings-function of queue-admin. ~ additional the queue-admin-page is rewritten to be convenient and more fail-safe. the daemon-restart was so annoying i had to change this asap ;) -------------------------------------------------------------------------------- 2.1-b4rt-801 - bug fixed which prevented non-admin-users to delete their files in dir-view. -------------------------------------------------------------------------------- 2.1-b4rt-8 smaller things -------------- - new subpage "ui" in admin-settings. tweak some basic presentation-settings. (only global, nothing personalized per user) - new functionality in superadmin-page : ~ Maintenance - clean * pid-clean : cleans pid-file-leftovers of deleted torrents. * transmission-clean : cleans cache-leftovers of transmission-torrents. ~ Maintenance - kill (only for emergency-break. this will screw up things !) * python-kill : kill all python-processes. * transmissioncli-kill : kill all transmissioncli-processes. ~ tfqmgr * show tfqmgr-log. * show tfqmgr-ps. * show tfqmgr-status (only when tfqmgr is running). - function getAliasName has new regexp. reason : one "id" for one "object" and not two. as extra-addin the new regexp (regexp is from ryaner) is more fail-safe than the tf-2.1-final one) you have to clean your flux (remove all torrents) because of this or you have to do by hand : (be aware of you will run into problems if you dont do this !) ~ stop all torrents ~ rename all stat-files ("old" stat-files have only lower-case chars. "new" have the _same_ name as the torrent but just with the file-extension ".stat" and not ".torrent") so : old: "aTorrentWithUPPERCase.torrent" / "atorrentwithuppercase.stat" --> new: "aTorrentWithUPPERCase.torrent" / "aTorrentWithUPPERCase.stat" the renaming of all stat-files can be done by a one-liner (in torrent-dir) : ls -1 *.torrent | perl -e 'while(){$n=((substr($_,0,(length($_))-8)))."stat";$o=lc($n);print $o."->".$n;print`mv $o $n;echo`;}' - sqlite this "release" includes sql-files for sqlite. also all non-SQL-conform statements have been modified to be SQL-conform. thanks to carlo1234 for his sqlite sql-file and the pointer to the non- conform statements (and for providing the conform statements). also the content-proxy is updated to have "sqlite" as special case, so it will serve sqlite-statements in an update. - issues found so far fixed. rewritten queue-system-integration ---------------------------------- queue-system has now an abstraction-layer to support different QueueManagers. so in current version you can use the QueueManager from tf 2.1 "tfQManager" or my new QueueManager "tfqmgr". setup/config is completely done within admin-page ("queue"-subpage) and "should" work out of the box. inside torrentflux its completely transparent what QueueManager you are using. (applies to the frontend. as tfqmgr has more features there are more things to see in the admin-pages. also tfQManager only supports tornado-clients) - Classes : + QueueManager (QueueManager.php) the interface (or better "base-class" in php) for generic integration/use of a QueueManager-Implementation. + QueueManager_tfqmgr (QueueManager.tfqmgr.php) class implementing integration of "tfqmgr" (tfqmgr.pl) + QueueManager_tfQManager (QueueManager.tfQManager.php) class implementing integration of "tfQManager" (tfQManager.py) - interface-methods ("base-class" QueueManager and extending classes) function prepareQueueManager() {} function startQueueManager() {} function stopQueueManager() {} function getQueueManagerPid() {} function statusQueueManager() {} function isQueueManagerRunning() {} function getQueuedTorrents($user = "") {} function countQueuedTorrents($user = "") {} function enqueueTorrent($torrent) {} function dequeueTorrent($torrent) {} function formattedQueueList() {} QueueManager-Implementation "tfqmgr" ------------------------------------ ** requirements ** - *nix-OS (System V-IPC is must) - Perl (any version => 5.00503 should do) ** features ** - supports all clients supported by clienthandler-API. so atm it supports both tornado and transmission at once fully transparent (mixed clients). - direct communication with TorrentFlux-QueueManager via FIFOs. no polling on temporary queue-files needed. QueueManager-subclass for tfqmgr "talks direct" to the daemon. to be exact there are no temp-queue-files at all in this implementation. (except the "queue-save-file" written/read on restarts of daemon) note : reading commands and processing queue is done in different processes. - no system-calls (subshell-calls) in daemon-loops. everything is done in pure perl and there is no ps-parsing in subshells in this daemon. (starting a queued client of course is a subshell-call ~) exceptions for non-pure perl : * creation of pipes is done with "mkfifo". * after shutdown shared mem is cleaned with "ipcs","ipcrm" and "whoami". note : these exceptions are only done at startup/shutdown. they are never ever used in a time-critical situation (or even a loop). so the main-code is complete "subshell-call-free" (except torrent-start~). - reasonable ressource-use : when daemon is not processing heavy stuff (starting torrent-clients) and is only in normal operation (updating jobs, processing queue, reading + processing external commands) ressource-use should be reasonable low. - tfqmgr.pl itself can work as a frontend to operate with the daemon from command-line. invoke tfqmgr.pl without arguments to get usage-screen. when used on command-line tfqmgr.pl will write the command to the command-fifo, read the result from the transport-fifo and then write it to stdout. (so it looks like the result is coming from the invoked script itself but actually the called script "communicates with" 2 different processes (of itself) in that case) Note: invoke tfqmgr.pl with the argument "check" to check if requirements for running the daemon are met on your system. Note: "Programs" should not use this proxy-method. They should read/write directly from/to the FIFOs. (code in QueueManager.tfqmgr.php does that) - some more smaller things of the daemon : * status-screen. (with daemon-uptime ;D) * startup-limits so bogus torrents wont jam the queue. * 3 different (0|1|2) loglevels. daemon is very talky for debugging (level 2) * clean shutdowns with signals possible. (SIGINT or SIGQUIT) ** notes ** - tfqmgr dies not "on-click" (inside flux). when you stop tfqmgr you only send a (non-blocking) "stop-request" to the daemon. that means when you issue a stop- command the flux-manager-call will instant return and it looks like there was nothing done. (after form-submit-roundtrip you will see tfqmgr still running) so : _wait_ after sending a stop-command to tfqmgr, it _will_ shutdown asap, _dont_ submit with changed settings again in shut-down-sequence. reload the tfqmgr-log to observe things. (daemon talks in shutdown-sequence) note : this does not apply if you stop it via command-line or write the stop- command directly to the FIFO-pipe. for some reason if its done in php the parent-process does not get the SIGQUIT. (or reader-child doesnt fire it properly... didnt debug that in depth) anyway, when entering next main-cycle the parent will die, just be patient ;) - ensure fluxcli.php is executable by the user running tfqmgr.pl (its the user running the webserver). tfqmgr uses fluxcli.php to start the torrent-clients. -------------------------------------------------------------------------------- 2.1-b4rt-7 - torrent-details-page show scrape-info of the torrent. (only available when transmissioncli is selected as meta-info-client) note: new transmissioncli (the v0.6-svn release (svn-254)) delivers weird high seeder + leecher numbers. - in theory if you only use transmission as torrent-clients, use transmissioncli as meta-info-client and dont use queuemanager/maketorrent this version "should" run without python. (in theory as i didnt test it so far and there still "may" be some (hidden) requirements on python inside torrentflux codebase.) - possible to choose the client used to decode torrent-meta-info. supported are "btshowmetainfo.py" and "transmissioncli". - command-line-tool "fluxcli.php". admin-tool for operations on torrentflux from the console. ~ this script does not use the webserver (no requests on php-scripts via webserver), it uses tf + client-handler API direct. (so it also works when webserver is down.) ~ this is an "admin-tool" only as it bypasses tf-authentication and offers ability to operate on all torrents of all users. (operations are done as the user owning the torrent) ~ because it doesnt use the webserver it must be used as the user running your webserver. (not in all operations a must but in most, "start" eg. starts the torrent-client as the user running fluxcli.php) ~ if you dont want the script lying in flux-docroot ensure by hand that it can find "torrentflux-lib" (include-path must include flux-docroot) note : i hacked a sanity-check into fluxcli.php to prevent usage from web. note : you can easy diff the operations done via fluxcli.php from those done via webfrontend as fluxcli.php uses "fluxcli.php" as user-agent and 127.0.0.1 as ip in flux-database-logs. - "superadmin-page". the link to this is in the admin-menu. note : only SuperAdmin can open this page ! note : link at arrow-pic on bottom of index/admin opens superadmin-page on the version-sub-page. + perform backups of your torrenflux. (complete backups, docroot + database) choose from: ~ backup on server : backup will be stored on server. ~ backup to client : backup will be sent to browser. its possible to have multiple backups stored on the server, superadmin-page shows a list of available backups and offers possibility to download or delete a specific backup. you can choose if you want to have gzip or bzip2 compression or none at all. supported databases are mysql and sqlite. the command-line for sqlite is taken from the hack "Backup Database SQLITE HACK" from carlo1234 and is not tested. + access current changelog from within torrentflux. + access current issues from within torrentflux. + check if your version is latest available or if there is a newer one. note : version-check is _only_ done on demand (if you click one of the links "Version" or "Update" on the page) and nowhere are "auto-checks". + update-"assistant" to update torrentflux-installation to newest release with only a few clicks. no need to copy stuff, update database or edit files. requirements : ~ allow url fopen (some tf-code needs that as well so it should be set) ~ database-user of torrentflux must have the rights to modify the torrentflux-database. (create,drop and alter tables. insert, update, etc) ~ user running your webserver must have write-permissions to torrentflux dir and files. (this is "really" only needed in last step of update so it can be changed for the time of an update if admin doesnt want perma-w) the Update-System is semi-intelligent and performs "cumulative" updates. in case the client-version cant be updated to the newest release it will tell the user that there is no update-set available for his version. the "assistant" is very talky about what it does and prints exactly which statements are used and what files are updated. the benefits from this "webapp-patcher" are : ~ tf-admins can be up2date and have current bugfixes without any stress. some clicks are enough. ~ i can provide quick-patches very fast and dont need to provide tarballs for every little fix / update. ~ only needed files are updated on update. no need to download whole package and replace files not affected by an update. same applies to database updates. only needed statements are executed. it is only done what needs to be done. ~ content delivered on updates is sent in deflated (9) form so an update consumes only few kb traffic. note : update-system is "database-generic". means that if your torrentflux runs on a mysql-database the content-proxy will serve mysql-states in the database-update-step. if your flux is non-mysql it will serve "standard"-sql-code. same as for manual updates applies here : i only test non-mysql-statements on a mysql-4-database to ensure they are basically "correct". note : the Update-Process is no transaction. so if you run into errors at an advanced step (for what reason ever may it be you close the browser ~) it *might* be your installation is in a messy state. (advanced step eg is after database was updated but files are not fully updated) if that should ever happen restore your backup (docroot+db) and try again or do a manual update from a tarball. note: if you are interested in how the update-process works all code used on client-side is in the file "superadmin.php". it only uses isSuperAdmin() for authentication and the values in cfg-array from torrentflux. it uses _no_ worker-functions from anywhere and has all functionality for all operations it does included. when the update-process is in a step where stuff is patched it switches to a simple look. (i use manual buffer-flushes here to make the update look more "responsive" and show the user what is done "at the moment"). if you are further interested and want to take a look into the server- side code (the code that handles the "versioning-logic" and content- delivery) drop me a pm as its not included in any package. - rearrangements in files: * functions * reason : original torrentflux functions.php consists of more than functions and has code in the main body of the php file. -> not suitable to be included in generic scripts. + functions.php : thats what still is used inside flux-webpages. some calls and includes for the function-files + functions.tf.php : in this file are all functions from torrentflux 2.1 + functions.hacks.php : in this file are all the functions from the additional applied hacks + functions.b4rt.php : in this file are all my functions * config * reason : no need to edit config.php to change database-settings after deploying a torrentflux update. + config.php : main-config-file for torrentflux. + config.db.php : config-file with only the database-settings. note: "releases" have the db-settings file included as "config.db.php.dist". -> you dont overwrite your settings when replacing html-dir-content on an update. your db-settings stay as they are. -> you have to change the name of the file to "config.db.php" by hand after a fresh install. (it has to be edited in that case so rename should be no big extra-deal. stressless updates win this case) - additional hacks : ~ "Backup Database SQLITE HACK" from carlo1234 (untested) http://www.torrentflux.com/forum/index.php/topic,1399.0.html ~ "Only Admin can see other user torrents" from DD32 http://www.torrentflux.com/forum/index.php/topic,1270.0.html modified to support enable/disable and integrated into admin-settings. -------------------------------------------------------------------------------- 2.1-b4rt-61 - about queue-manager-support in this version : http://www.torrentflux.com/forum/index.php/topic,1265.msg9986.html#msg9986 - problems of v6-issues fixed - fluxpoller.pl Revision 1.9 ~ counts tcp-connections of tornado (python) and transmission. (each can be deactivated in scripts config) ~ should work on bsd without modification. (using fstat-call from lord_nor in connection-sub) replace your old fluxpoller.pl with the new 1.9 included in v61. - additional hacks : ~ on request the "Link Mod 3.0" from DemonSpawn is now integrated. http://www.torrentflux.com/forum/index.php/topic,1114.0.html] -------------------------------------------------------------------------------- 2.1-b4rt-6 - multi-multi-clients / client-handler v 0.2 ~ client-handler v 0.2 v6 is refactored to use/support client-handler v 0.2. "client-handler" is some design to allow the use of different bittorrent-clients within torrentflux. (without need to hardcode-hack stuff into flux-code) ~ client-handlers integrated in v6 : + tornado : handler for BitTornado : fully working with all options + transmission : handler for transmission (_only_ tested with v 0.5) : "fully working" with all options transmission (0.5) supports (handler is ignoring all values it does not "understand") as tfQManager has hardcoded tornado-client the use with transmission is not supported (at least not with tfQManager 2.1 final. also tfQManager cannot handle different torrent-clients (at once) in its current form) - transparent multi-multi-client use since client-handler v 0.2 its possible to have multiple (different) clients running at the same time. the operation of clients is fully transparent. it is possible to make multi-operations on different torrent-clients. (eg stop 2 tornados + 3 transmissions in 1 operation) it is possible to change the client when restarting a torrent...but... this of course may cause troubles if "used wrong". eg it would imho not be a problem to resume a tornado-seed with transmission and vice versa as the data is 100% present. but i assume there may be problems if a tornado-leech is resumed with transmission and vice versa. (especially when tornado is using sparse files for the data-files like mine does) when resuming a torrent with multi-dropdown the same client the torrent last time was running with is used. (when resuming with interactive startup-dialog the last used client will be preselected) - persistent totals and ratio-calculations per torrent. ~ further details : http://www.torrentflux.com/forum/index.php/topic,1365.0.html. ~ acts like a "heavy" client (eg azureus) on "sharekill". -> ratio-calculations over client-starts. ~ scenario: + you start a torrent with 200% sharekill. + you stop it after n (<200) %. + you resume it. -> torrent will seed until "real upload" reaches 200%, not until the upload of the current "session" (the client) reaches 200%. ~ additional it is possible to re-set the sharekill value on a torrent-restart if you decide to change it. (just change value in interactive start-dialog) ~ sharing-percentage in downloaddetails is calculated from "real" upload, not only from "current" upload. ~ the value seen as sharekill (seed until) in userland is the value the user has set for a torrent. ("global" and persistent. -> over client-restarts) the actual real value the client(s) are started with are not visible in userland and may have not the same value as the sharekill-value. ~ tested with tornado- and transmission-client-handler. - more... much more things that i forgot atm or not worth to mention. - additional hacks : ~ blackwidows xfer-hack patched to version 2.1.1 - about transmission: the only version i used and tested was transmission v 0.5 with sylvers patch from http://www.torrentflux.com/forum/index.php/topic,809.msg6887.html#msg6887 the patch-file for 0.5 from that post is included in the package. (hope that is ok for sylver). kudos for that patch to sylver !) transmission can be found at http://transmission.m0k.org/ note: if someone tests transmission-cvs please let me know if/how it works note: fluxpoller.pl Rev 1.06 does not count transmission-tcp-connections. - about client-handler v 0.2: this required some refactoring in the clienthandler-class-design and implementation and in flux itself. (fatal error when trying to redeclare a class at scripts runtime) -> the design from my first post about the handler-design is obsolete in parts. new design uses specialized classes for the subclasses. to have this and still be able to write generic code all instances are only created via factories. these are defined in the base classes and handle the "client-select-logic". -> all code in tf "creating" instances of involved classes only uses factories. the integration of handlers into torrentflux is not (yet) modular as i dont know so far how to use reflection or something like class-by-name within php. (i dont even know atm if php (<= 5) does support a concept like that) this means new client-handlers cant be "installed" like a mod (yet) (eg by only throwing class-files in flux-dir). so the integration is in places still somehow dirty atm. (nothing you will notice in userland) -------------------------------------------------------------------------------- 2.1-b4rt-5 - basic-auth hack. read the thread http://www.torrentflux.com/forum/index.php/topic,1295.0.html first and enable only if you know what you are doing. - updated hacks (only suitable + "standalone" hacks) to allow enable/disable. integration into admin-settings. - moved bin-definitions from config-defines to cfg-settings (db) and updated hacks using them. integration into admin-settings. - minor things here and there. - little tornado-modification to prevent auto-delete of "do not download" files. see http://www.torrentflux.com/forum/index.php/topic,1317.0.html for details - additional hacks : ~ "Remember me" by ihackstuff/darknite (modified) http://www.torrentflux.com/forum/index.php/topic,1079.0.html ~ "SFV Check" by jav/Bandi (modified) http://www.torrentflux.com/forum/index.php/topic,1116.0.html ~ "Skip hashcheck" by D_V (modified) http://www.torrentflux.com/forum/index.php/topic,1216.0.html -------------------------------------------------------------------------------- 2.1-b4rt-4 - MRTG-integration if mrtg should be used additional setup is needed. read the thread http://www.torrentflux.com/forum/index.php/topic,1284.0.html for further info. only part 1 + 2 are needed, part 3 (integration) is already done in this package. note: MRTG is optional, package works fine without. - torrent-start : "advanced_start" is no longer an option. the current implementation makes that obsolete because it provides both cases. 1. start with "normal button click" : interactive startup : (try to) load last settings, pre-fill form, show advanced startup-dialog. 2. start with "dropdown-form-start-torrents-submit" (-> via my multi.php) : non-interactive startup: (try to) load last settings and start torrent. - torrent-multi-start. when starting (multiple) torrents via "start-torrents-submit" last settings are used to start the client(s). (nice to "resume" a group of torrents) - full support (persistent settings, multi-operations) for individual target- dir-case. (Specific save path) - messed-up php-files issues fixed. - additional hacks : ~ "wget Support V0.1" by DD32 http://www.torrentflux.com/forum/index.php/topic,1280.0.html ~ "Specific save path" by coldfire. http://www.torrentflux.com/forum/index.php/topic,1060.0.html ~ "Some Stats dir hack" by coldfire. http://www.torrentflux.com/forum/index.php/topic,1158.0.html ~ "Robust UnRAR/UnZip hack" by lysip http://www.torrentflux.com/forum/index.php/topic,603.0.html -------------------------------------------------------------------------------- 2.1-b4rt-3 - functionality/usability. ~ persistent torrent-settings. start-form is prefilled when restarting a torrent. ~ multi-hack. supports stop, delete, delete-with-data. ~ new torrent-setting "maxcons" to define max connections a torrent may use (uses tornados --max_initiate arg) ~ new page showing host-details of a torrent. (ip+port of hosts the torrent is connected to) this page is accessible via links on the leds on the main-page and the torrent-details-page - new infos on main-page: ~ max upload speed all running torrents may use ~ max download speed all running torrents may use ~ sum of max upload+download speed all running torrents may use ~ max connections all running torrents may use - new infos on torrentdetails-page: ~ the port the torrent uses ~ number of tcp-connections of the torrent ~ max upload speed the torrent may use ~ max download speed the torrent may use ~ max connections the torrent may use - new infos on all-services-page: ~ list of all ports all running torrents are listening on. ~ sum of tcp-connections of all running torrents. the multi-hack is based on code from Cubby. multi.php is rewritten to be a bit more flexible. while implementing this i also refactored some TF-code to be a bit more modular. startTorrent, stopTorrent, deleteTorrent and deleteTorrentData are now functions used in index.php and multi.php. this multi-hack-implementation supports deleting (with or without data) of running torrents, so use with caution. the persistent-settings-code is based on code from ryaner. - additional hacks : ~ xfer bandwidth/transfer statistics hack from blackwidow ~ multi-upload from 3dfx/IhatemyISP/manuelcavalh (?) (slightly modified to return to index after successfull upload) ~ Page Refresh Countdown Timer from steveholt -------------------------------------------------------------------------------- ?