AminetAminet
Search:
82169 packages online
About
Recent
Browse
Search
Upload
Setup
Services

comm/tcp/dizzytorrent1.01.lha

Mirror:Random
Showing:m68k-amigaosppc-amigaosppc-morphosi386-arosi386-amithlonppc-warpupppc-powerupgeneric
No screenshot available
Short:Amiga 68k BitTorrent client
Author:David Zvekic <david.zvekic at gmail.com>
Uploader:David Zvekic <david zvekic gmail com>
Type:comm/tcp
Version:1.01
Replaces:comm/tcp/dizzytorrent1.0.lha
Requires:util/libs/ixemul-48.0.lha, 16MB ram, 68020+/Vampire
Architecture:m68k-amigaos >= 2.0.4
Date:2018-02-04
Download:http://aminet.net/comm/tcp/dizzytorrent1.01.lha - View contents
Readme:http://aminet.net/comm/tcp/dizzytorrent1.01.readme
Downloads:220
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+, Ixemul v 48. 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 reported to work on PPC Morphos, PPC OS4 under emulation.

===============================================================================
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.

****** 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 -1 generally leaves AmigaOS fully 
responsive, and with no significant performance penalty. (on Plipbox it might 
even improve the performance).

===============================================================================
CONFIGURATION TOOLTYPES and dz.config:
===============================================================================
Configuration parameters can be controlled via tool types in DizzyTorrent.info.
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 DizzyTorrent.info 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 DizzyTorrent.info.

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).
	
*	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.
	
*   Reported to work on OS 4.0 amd Morphos.
	
===============================================================================
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.
  
* When launched from Workbench, some error conditions that might cause 
  DizzyTorrent to print an error on the CLI and exit, will simply cause 
  DizzyTorrent to exit silently. This should be replaced with a error message
  pop-up requestor.
  
  
===============================================================================
Dizzy Torrent Version HISTORY
===============================================================================
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



Contents of comm/tcp/dizzytorrent1.01.lha
PERMISSION  UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP     NAME
---------- ----------- ------- ------- ------ ---------- ------------ ----------
[unknown]               464765 1182700  39.3% -lh5- eb80 Feb  4 14:51 dizzytorrent1.01/DizzyTorrent
[unknown]                 5293    8090  65.4% -lh5- dd52 Feb  3 20:00 dizzytorrent1.01/DizzyTorrent.info
[unknown]                 7022   18118  38.8% -lh5- 39ba Feb  4 14:57 dizzytorrent1.01/dizzytorrent1.01.readme
[unknown]                 1481    4580  32.3% -lh5- a3bd Jan 29 00:13 dizzytorrent1.01/dz.config
[unknown]                  383     790  48.5% -lh5- ed42 Feb  3 18:23 dizzytorrent1.01/LICENSE.txt
---------- ----------- ------- ------- ------ ---------- ------------ ----------
 Total         5 files  478944 1214278  39.4%            Feb  4 22:30

Aminet © 1992-2018 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>