short : Amiga 68k BitTorrent client author : David Zvekic uploader : David Zvekic type : comm/tcp version : 1.04 replaces : comm/tcp/dizzytorrent1.03.lha requires : 16MB ram, 68020+/Vampire architecture : m68k-amigaos >= 2.0.4 Filetype : application/x-lzh-compressed Size : 451.61K Date : 6-Apr-18 Download : 💾
DizzyTorrent is a functional BitTorrent client implemented for the Amiga that operates on real classic hardware. DizzyTorrent was implemented from scratch from the BitTorrent protocal specification alone and does not derive from any bittorrent code from other sources. Implemented protocols are: BEP-3 The BitTorrent Protocol Specification BEP-6 Fast Extension BEP-10 Extension Protocol BEP-12 Multitracker Metadata Extension BEP-15 UDP Tracker Protocol BEP-23 Tracker Returns Compact Peer Lists BEP-24 Tracker Returns External IP Your feedback about which features you'd like to see are valuable to me. Please do not use this program for copyright infringement or the distribution of any data which may be prohibited or unlawful. DizzyTorrent is intended for the distribution/downloading of legal content archives such as public domain classic movies, software distributions, or materials specifically allowed by copyright holders. =============================================================================== DISCLAIMER =============================================================================== THIS SOFTWARE IS PROVIDED AS IS. NO WARANTEE IS MADE AS TO THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE AND THE AUTHOR ASSUMES NO RESPONSIBILITY FOR ANY DAMAGE IT MAY CAUSE. IF YOU USE THIS SOFTWARE YOU AGREE THAT YOU UNDERSTAND AND ACCEPT ALL RISKS. =============================================================================== COPYING =============================================================================== DizzyTorrent is copyright (c) David Zvekic 2016-2018. Permission is granted to copy and distribute this entire archive provided that it is not modified, no fee is charged beyond the reasonable cost of distribution, no misrepresentation is made regarding authorship, and this copyright notice remains intact. The source code of DizzyTorrent is not provided in this archive and all rights are reserved to the Author, David Zvekic. DizzyTorrent is based on the BitTorrent protocol specification but no part is derived from any BitTorrent software, object or source code. =============================================================================== COLLECTION OF PERSONAL INFORMATION =============================================================================== Please be aware that this program follows the BitTorrent protocol and your IP address will be shared with Trackers and other BitTorrent peers as per the BitTorrent protocol. Use of BitTorrent to download or share a file makes your IP address publically visible and the SHA1 Hash of any files you are sharing or downloading. The Author (David Zvekic) does not collect any information from you by the use of this software and this software does not collect or transmit any information that is not part of the BitTorrent protocol. =============================================================================== Requirements: =============================================================================== OS 2.04+, 68020-060, or Vampire and 16MB of ram (32 to 64 MB preferred), AmiTCP 3, EASYNET, MiamiDX, Roadshow or compatible network connection. Lots of disk space. DizzyTorrent has been tested on OS4.1 under emulation, and is reported to work under MorphOS. =============================================================================== INSTALLATION: =============================================================================== * Copy dz.config to Envarc:dizzytorrent/ * Copy DizzyTorrent, and the associated .info file anywhere you want to put it, ideally on a large partition. * Edit dz.config if you want to change any settings. NOTE: You may need to increase TCP STACK memory buffers, In AmiTCP (I use 2 to 4 meg); With Roadshow I didn't need to adjust anything. In AmiTCP 3 : Membuffers are set in Amitcp:db/amitcp.config. Add or set the line: MEMBUF_CONF MaxMem=4096 =============================================================================== USAGE =============================================================================== ****** (Also See Configuration File:) ****** USAGE-CLI: Type dizzytorrent and pick a torrent file from the file requestor. You can also specify the torrent file as a command line argument when launched from a shell or CLI. ****** USAGE-WORKBENCH: Double click the DizzyTorrent icon and you will be presented with a file requestor. Select a torrent file from the file requestor. You can also hold the shift key when you click on a torrent, and then while continueing to hold shift, double click the DizzyTorrent icon. This will automatically launch DizzyTorrent with the select torrent preloaded. If DizzyTorrent suddenly vanishes, try running from a CLI. It probably would have printed an error message. (See Known Bugs). ****** Menu Options Announce Immediately - Forces all trackers to immediately re-announce. This is useful if your internet connection went away, and you don't want to wait until the next scheduled announcement which could be 20 or 30 minutes away. Add Peers - Opens a window and lets you type the IP and Port number of a peer. Could be used to force connection to a peer you know exists, but can't find on a tracker. For instance if the torrent file only has dead or non-supported trackers. Iconify - turns Dizzytorrent into a Workbench Appicon. Double click the icon to restore the GUI. View - Torrent - Switches DizzyTorrent to the torrent status page. Drag the window taller to see the trackers. View - Peers - Switches DizzyTorrent to the Peer view. Individual progress of each connected peer is shown. View - Files - Switches DizzyTorrent to the File View. Individual progress of each file in the torrent is shown. When an individual file is complete you can use it immediately. DizzyTorrent will not write to it again. ***** Multiple Torrents: You can run multiple copies of dizzytorrent using different torrents simultaneously if you have enough RAM. All instances share a single SHA1 hasher task that queues requests for SHA1 checksums. NOTE: Don't run multiple copies to download the same torrent to the same location as this will result in undefined behavior - I believe it will simply waste bandwidth and report IO errors, but I haven't tested it because there is no good reason to try to use the program this way. HALT and RESUME: You can close DizzyTorrent and resume your download later. A file is created that tracks progress in the bitmaps directory. ***** Priority: I have found setting task priority to -10 generally leaves AmigaOS fully responsive, and with no significant performance penalty. =============================================================================== CONFIGURATION TOOLTYPES and dz.config: =============================================================================== Configuration parameters can be controlled via tool types in Each setting can be overridden by the dz.config configuration file, and the configuration file will take precedence if it is found in ENV:dizzytorrent/. The most important setting is program.bitmappath and program.downloadpath (or [program] bitmappath and downloadpath in dz.config), as these control where DizzyTorrent will store potentially very large amounts of downloaded data. The rest can generally be left at default values. Tooltype Keys and their equivalent in dz.config are shown here. The setting meanings are described in the distributed dz.config. In Tooltype the tooltype of: section.settingname=value corresponds in dz.config with: [section] settingname=value The configuration file is not required except for CLI usage, as all setting can be controlled with with the tool types in The permanent location of the configuration file should generally be: ENVARC:dizzytorrent/dz.config. ENVARC:dizzytorrent/dz.config is copied to ENV:dizzytorrent/dz.config automatically when the Amiga reboots (part of the normal Startup-Sequence of a standard Workbench install). At runtime the copy in ENV:dizzytorrent/ is used. dz.config is organized in sections, with variable assignments in each sections. Please see the comments in the included dz.config file for an explanation. If both configuration methods are used then dz.config takes priority. =============================================================================== LIMITATIONS =============================================================================== Filenames: FFS is limited to 30 characters and therefore torrents using longer names may fail or corrupted data because filenames will be truncated. If all the files have unique characters in the leading 30 places then it is possible to download the torrent even if the names are too long. FFS performance starts of very slow due to limitations in random access on large files which is essential to BitTorrent. DizzyTorrent works around this limitation, however it requires building up a cache of file handles. FFS performance increasing as the download progresses due to this caching. FFS performance is improved with a larger pagesize. Filenames up to the limit supported by your filing system should be safe. SFS: supports 107 length filenames. Maglinks - are not yet supported. HTTPS Trackers - are not yet supported File Size: Torrents of any size are supported however no individual file may exceed 2 GB. =============================================================================== TEST PLATFORMS =============================================================================== The software has been tested and appears to work well on: * Amiga 1000 using an Individual ACA500plus and Blizzard 1230 MK IV with 128 Mb of ram, under OS 3.1 with AmiTCP 2.98b2, and Roadshow and a PlipBox using firmware version 0.6. SFS on a 28 GB partition, FFS on a 4 GB partition, and FAT32 on a 16GB partition. * Amiga 1200 with Microbotics M1230 XA, with 128MB ram, OS 3.1 with Cloanto 3.x roms, PCMCIA wifi adaptor, as well as Plipbox 0.6. FAT32 32 GB partition. SFS 4 GB partition. AmiTCP 4.1 Pro (aka EasyNet). * AmigaForever 2016, on the included AmigaSYS machine with with and without using JIT emulation. FFS 2 GB. and passthrough to host OS filesystem (Windows 10 NTFS). * AmigaForever 2016, PPC AmigaOS 4.1 FE with and without JIT emulation. Native SFS partition, Roadshow TCP and RTL8029 networking. * MorphOS 3.9 on Ibook G4, demo mode. * I've recieved a report that DizzyTorrent works on a Vampire under FFS but possibly corrupted a FAT32 partition on Vampire. Used with MiamiDX, and SDNet. =============================================================================== Future Plans =============================================================================== Magnet Links, Peer Exchange, DHT. uTP protocol to throttle bandwidth. nat-pmp Gui Improvements Interprocess Control via AREXX Port, or Socket control. Unified mode with all torrents in a single interface. Morphos, AROS and OS4 native ports if enough people ask. (The JIT emulated 68k is so fast maybe noone cares if it is native?) =============================================================================== KNOWN BUGS: =============================================================================== * I haven't found any trackers that support BEP-24 so I can't test it. * DizzyTorrent contacts all Trackers in a sequence whether or not more peers are needed. BEP-12 specifies Bittorrent should only ask for more peers if they are needed, and the announce list is to be prioritized depending on which trackers are responsive. DizzyTorrent is technically not compliant. * Nonresponsive UDP trackers stay 'announcing' for a very long time. If a torrent has many non responsive UDP trackers, it may take a long time before DizzyTorrent finds a responsive tracker because it will only keep a limited number of open announcements pending as per the concurrent_announce [throttle] setting. * Throttling bandwidth specifies an upper cap, but the system tries to stay under it, and generally only runs from 50 to 75% of the cap. Users would expect DizzyTorrent to run at closer to 100% of the cap. Actual bandwidth use also fluctuates between 0 and max capacity rather than staying close to the average. * Changing system clock while DizzyTorrent is running will confuse it and result in performance metrics being incorrect and the program will try compensate by adding or closing peers. =============================================================================== Dizzy Torrent Version HISTORY =============================================================================== 1.04 April 5 2018 * OS4.1 FE when the last byte in a file lines up with the piece boundary, program could not complete the download. 1.03 showed error. Earlier versions become slower and appeared to stop downloading. Fixed. * GUI - Torrent comments now adjust wrap width when window it resized. * Hitting cancel on file requestor would cause program to exit without closing shared libraries - fixed. * Morphos 3.9+: SetSocketSignal caused undefined side effects on MorphOS. Replaced with SocketBaseTagList. MorphOS reported that graphics.library can't be opened. * Morphos: Proportional gadget didn't work due to different treatment of excessive PGA_Visible attributed. Fixed. * Minor improvements to GUI cpu efficiency. 1.03 March 30 2018 * Fixed Bug: Peers that didn't complete a handshake could stay alive permanently. * Fixed Bug: a number of illegal memory accesses - (caused grim reapers in OS4.1. Probably caused less frequent problems in OS2 and 3 as well). * Some rules regarding gadgets that OS4 enforces which I can't find documentation of in 3.x, are now followed, removing some grim reapers. * Main window now opens only after the torrent file is read and processed. * A 1-time memory allocation at program launch was missing an associated deallocation - losing as much ram as the filesize of the torrent file. * Peer info page was rendering information about 'suspended peers', which have no current TCP connection. Removed this information. * Improved handling of in-memory peer list. * CTRL-C was incorrectly interrupting sockets. * Trackers are polled less frequently, slightly reducing overhead in torrents with many trackers. * ixemul.library is no longer used or required - increasing stability in OS4 when 2 or more instances are running. * Automatically sets own stacksize to 32kb if necessary. * Errors generated when run from Workbench will automatically open a console window rather than be invisible. * Added sha_taskname configuration setting 1.02 Amiga OS 4 Improved Compatability (Feb 28 2018) * Fixed bug that caused crash in OS4 if menu was activated but no item was selected. * Fixed a bug that cause crash in OS4 if About Window, or Add Peer window was closed with close gadget. * Fixed graphical bug in menus that caused menu to appear grayed out invisible (especially in OS4). * Increased Stack size in .info file to 32000 bytes. * Change default task priority in info file to -10 * dz_FS and dz_SHA1 tasks now copy the parent priority. * DizzyTorrent now appears Amiga OS4.1 compatible (requires Ixemul). 1.01 (hotfix) (February 4 2018) * 1.0 added a bug that when when launched from CLI, DizzyTorrent could unlock the current directory, this can cause the shell to freeze or act abnormally after DizzyTorrent terminates. fixed * When launched from Icon, DizzyTorrent would leak a lock on the starting directory. This would prevent you from deleting that directory without rebooting. fixed. 1.0 First Official Release (February 3 2018) * DizzyTorrent now has a tool icon. * All configuration settings can be set as Tooltypes. * Select a torrent and double click tool to launch DizzyTorrent directly from workbench and start torrenting. * Uncommon crash on exiting DizzyTorrent introduced in 1.0b7-fixed. * "About" window with copyright info. * AppIcon uses DizzyTorrent logo. * Improved protothread control to make GUI more responsive to user. * GUI fixed to work with non-proportional fonts. * Some optimizations. * font configuration can now be set to "default" to use default screen font. * font sizes can be set to -1 to use default screen font size. * "Add Peer" window now opens centered on screen. * GUI scroller gadget now reacts continuously in realtime. * Improved layout of files info page. 1.0 Beta 9 (hotfix) (January 25 2018) * Slightly tweaked load balancing for better performance across wider range of systems. 1.0 Beta 8 (January 24 2018) * DizzyTorrent would terminate immediately with a bencoding error if loading a torrent that had 0 trackers. Fixed. * Show count of Trackers on torrent view page. * A bug in parsing of torrent announce-lists, caused lists to be reloaded repeatedly leading to slow load times and memory waste when loading a torrent with a very long announce-list. Fixed. * Performance improvements. * Passing invalid torrent specification on command line returns with more sensible error message "Could not find torrent". * Beta 7 would output random number seed on start. Removed. 1.0 Beta 7 (January 16 2018) * removed all linkage to pthread library. Smaller binary. Less memory usage. Faster. No dependancy on any LGPL software. * DizzyTorrent now uses non-blocking sockets for UDP. DizzyTorrent can abort while awaiting response. Unresponsive UDP Trackers caused DizzyTorrent to become unresponsive while waiting for UDP to timeout. * Better gui response during Announce. * A torrent with many trackers (dozens), will cause DizzyTorrent to use too many sockets and lead to system instability. Now DizzyTorrent only works on [throttle]concurrent_announce trackers simultaneously, and works its way through the list sequentially. * create new [throttle]concurrent_announce setting in dz.config. Default is 5. * Now seems to work on OS 4.0 JIT emulation. 1.0 Beta 6 (January 6 2018) * optimization reduces protocol overhead and slightly reduces cpu usage. * Dizzytorrent was not properly indicating when an unsupported tracker URL protocol was detected. (https tracker specifically) * Handles trackers returning a failure with a non bencoded "Invalid Request" html page. * Implemented BEP-24 to discover external IP - but unverified. * Implemented BEP-10 Extension protocol. * Displays peer client version, if peer used extension handshake. * Improve calculation for the proportional gadget and minor layout change. 1.0 Beta 5 (Dec 27 2017) * More SHA1 optimization, about 44% faster SHA1 than beta 4. (SHA1 on 512KB block takes 1.43 seconds vs 2.59 seconds on 50mhz 68030.) * End game strategy improved to reduce redundant download blocks. * Improvements to automatic load moderating to have a better balance of concurrent peers matched to cpu utilization. * Improvement to bandwidth throttling. * Improvements to block request scheduling to reduce protocol overhead. * Fixed bug where throttling would result in closure of peers. * optimized throughput metering code. * Overall downloading with beta5 on a 50mhz 030 using plipbox and AmiTCP 3 is about 12% faster than Beta4. 1.0 Beta 4 (Dec 18 2017) * Performance improvements connecting to HTTP Trackers * Minor SHA1 optimization * graphics text rendering bug on Torrent Details page 1.0 Beta 3 (Dec 13 2017) * Improved operation with torrents with many Trackers. * Improved operation with trackers with many unreachable peers * File progress display bug fixed * aminet back up so hopefully this version can be listed. 1.0 Beta 2 (Dec 12 2017) * DZ would hang when accessing a UDP tracker * Interval timer wrong for UDP tracker 1.0 Beta 1 (December 10 2017) Presented at World of Commodore Toronto 2017
Zum Live Linux: