💾 Archived View for cugi.ie › aminet › 1721531784.gmi captured on 2024-08-18 at 19:22:23. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

BitTorrent client with MUI + AREXX

   Author:       David Zvekic <david.zvekic at gmail.com>
   Uploader:     David Zvekic <david zvekic gmail com>
   Type:         comm/tcp
   Version:      2.21
   Requires:     8MB fastram, 68020+/Vampire, MUI 3.9+
   Architecture: m68k-amigaos >= 2.0.4
   Date:         2024-07-20
   Readme:       http://aminet.net/comm/tcp/dizzytorrent2.readme
   Downloads:    1637

http://aminet.net/comm/tcp/dizzytorrent2.lha

DizzyTorrent is an efficient BitTorrent implemention, written for the Amiga

68k that operates on real classic hardware, or emulation and can be

controlled with a MUI based graphical interface or using AREXX.

DizzyTorrent is designed for AmigaOS 3.1 but is also tested to work on PPC

AmigaOS 4.1, and MorphOS 3.9+.

Registering DizzyTorrent will help the author finance his extensive coffee

bill.

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-20 PeerID Convention

BEP-23 Tracker Returns Compact Peer Lists

BEP-24 Tracker Returns External IP

Additional Features include :

File prioritization

Multiple concurrent torrents

Bandwidth, CPU and memory throttling

Customizable GUI using MUI.

Full Arexx scripting control and monitoring of all functions.

Load save multiple torrent settings together as a single project.

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.

Full Documentation in AmigaGuide format: DizzyTorrent.guide.

===============================================================================

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

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.

Portions of DizzyTorrent are derived from the TLSF Memory Allocation

Implementation by Matthew Conte and adapted for use with AmigaOS, Motorola

68020 and DizzyTorrent. This use is governed by a BSD style license which only

requires credit to the author, and no distribution of source code.

Please see LICENSE.txt for credit and license details.

===============================================================================

DizzyTorrent Version History

===============================================================================

2.21 July 20 2024

* HTTP tracker redirecting to an HTTPS url would cause DizzyTorrent to

terminate abnormally. This could cause a torrent to be unusable even if

others tracker in the torrent are supported. Redirects to HTTPS trackers

are still not supported but will not cause program to crash.

2.20 Jan 19 2019

* Performance enhancements, and assorted bug fixes, reduced memory and CPU

requirements when hash check disabled.

* Improved load balancing of available peer connections between multiple

torrents.

* ARexx does not need to be explicitly started before DizzyTorrent anymore.

* Significantly improved flow control between network, SHA1 and file

system.

* New Command line switch - EMPTYPROJECT

* Hash check can be disabled when downloading torrent (at launch or any

time). Significantly reduced memory and CPU requirements in this mode.

* Bitmap and Download Data path can be explicitly set independantly for

each

torrent when it is first opened.

* New LOADTORRENT Arexx command.

(Registered Users Only)

* Validate the SHA1 hash of any torrent as a co-process. (This is most

useful when disk SHA1 validation was turned off, or data corruption is

suspected).

2.11 Dec 20 2018

* German, Greek localization.

* memory efficiency, and other performance enhancements. Lower RAM

requirements (tested as low as 8MB fastram).

* Bug fixes.

* added maxOpenRequestsPerPeer throttle setting.

* Information dialog was wrongly titled with the word "Error".

2.10 November 26 2018

* Support for Localization. (Italian, Swedish, Serbian, French, Finnish,

English)

* Open torrents on close are now automatically resumed on launch.

* Typographical correction suggested by Samir Hawamdeh

* Program now refuses to start if stack is less than 16384 bytes.

* Launch argument PROJECT or TORRENTFILE may be provided.

* Bug fixes

2.0 October 19 2018

* DizzyTorrent is now Shareware.

* MUI 3.9/4.0/5.0 user interface.

* Replaced previous AREXX port with MUI based AREXX port to work like other

MUI programs. Default name is DZREXX.1 instead of DZREXX.01

* Multiple simultaneous torrents in 1 program instance.

* File Download Prioritization

* Performance Improvements

* Fix bug in iconfication. Depending on the launch method used Program could

always locate the .info file.

* Save/Load Project files. Multiple torrents in 1 file.

* Added TorrentCount,CloseTorrent ARexx function.

1.11 October 6 2018

* Reduced CPU usage - minor bug introduced a busy-wait not apparent on my

test systems.

1.10 September 30 2018

* Since v1.07 CHOKE messages were sent inappropriately, causing some peers

to not receive data from DizzyTorrent even though local client

is sending. fixed

* client may not recognize that a peer has needed pieces to share unless

peer has 100% of pieces (since 1.07) - fixed.

* Example dz.config file has Delay setting set too high for newer improved

throttling mechanism this would cause very slow performance on fast

machines. Internal default delay of 0 is now almost always the best.

1.09 September 16 2018

* Fixed buffer overrun bug that would cause application crash on torrents

with more than aproximately 60 trackers, or 110 files.

1.08 September 1 2018

* resource balancing, performance, and stability improvements.

* Fixed occasional crash when shutting down program while downloading.

* Improved support for BEP-20 PeerID Convention using -DZxxxx- PeerID.

* Improved support for BEP-10 Extension Protocol - now transmiting Client

Version 'v' as well as 'reqq' messages.

* dizzytorrent.guide file was accidentaly saved with CRLF text format. Not

correct AmigaOS LF format. This made it unreadable by Multiview.

* New AREXX command - SetThrottleDelay,SetMaxPeers

1.07 August 28 2018

* resource balancing, performance, and stability improvements.

* Significantly reduced OS memory fragmentation during process lifecycle.

* fixed 5 memory leaks.

* DizzyTorrent could try to connect to itself when behind a NAT. fixed.

* PeerID was not properly randomized. fixed.

* Bug preventing upload to other peers fixed.

* Program will now exit automatically if launched with NOGUI and ARexx is

not available. (without AREXX or GUI there is no way to control program)

* Added BanPeer,UnbanPeer,KillPeer,KillAllPeers, MemReport Arexx commands.

* Added more information to GetPeerStatus : ProcessCycles

* Added more information to GetTorrentStatus : InvocationTime

* Bug which let DizzyTorrent stay connected to an idle peer without

any KeepAlive messages fixed.

* Improved accuracy of bandwidth throttling mechanism.

1.06 August 2 2018

* AREXX GetTorrentStatus(), GetFileStatus(), GetTorrentFiles() was only

updating if the mainwindow is not hidden.

* 'About' window now displays ARexx port name.

* DizzyTorrent AREXX reference improvements, errata.

* Use ReadArgs( )to parse command line switches. Amiga User Interface Style

Guide compliant.

* New command line switch PORTNAME to set AREXX portname

* New command line switch NOGUI to start with no GUI active.

* New command line switch SETTINGS to override default settings file

* Changes in AREXX Api to use standard Amiga templates.

* Removed some some overlap in AREXX Api.

* Added AREXX HELP, DizzyTorrent command.

* AREXX API now returns error details in RC2 variable.

* Created /arexx/ subdirectory and ARexx program dz-status.rexx to allow

checking status of DizzyTorrent when there is no GUI

* DizzyTorrent AREXX can now be addressed with the ADDRESS command and no

longer automatically loads itself as a function library.

1.05 July 18 2018

* Virtually all functionality can be controlled via AREXX, including

hidden mode to remove GUI as run as a background resident process.

* Moved Documentation into AmigaGuide format dizzytorrent.guide.

* Readme file now only contains 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 February 28 2018 (AmigaOS 4 Improved Compatibility)

* 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 February 4 2018 (hotfix)

* 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 February 3 2018 (First Official Release)

* 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 AmigaOS 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/dizzytorrent2.lha

PERMISSION  UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP     NAME
---------- ----------- ------- ------- ------ ---------- ------------ ----------
[unknown]                 1320    3545  37.2% -lh5- 1c5b Jul 19 02:50 dizzytorrent2.21/arexx/dz-status.rexx
[unknown]                 7206   13074  55.1% -lh5- e1a8 Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/DizzyTorrent2_set1.info
[unknown]                 4686    4686 100.0% -lh0- de41 Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/DizzyTorrent2_set1/DizzyTorrent
_48x48.info
[unknown]                 6593    7444  88.6% -lh5- aa48 Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/DizzyTorrent2_set1/DizzyTorrent
_56x56.info
[unknown]                10624   14840  71.6% -lh5- 2565 Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/DizzyTorrent2_set2.info
[unknown]                 6677    7082  94.3% -lh5- 58ca Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/DizzyTorrent2_set2/DizzyTorrent
_48x48.info
[unknown]                 8511    9122  93.3% -lh5- dfff Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/DizzyTorrent2_set2/DizzyTorrent
_56x56.info
[unknown]                   91     100  91.0% -lh5- b1dd Jul 19 02:50 dizzytorrent2.21/contributions/IconSet/Iconset.readme
[unknown]               544873 1315952  41.4% -lh5- 23db Jul 19 02:52 dizzytorrent2.21/DizzyTorrent
[unknown]                26497   72914  36.3% -lh5- a801 Jul 19 02:51 dizzytorrent2.21/DizzyTorrent.guide
[unknown]                 5310    8074  65.8% -lh5- a09a Jul 19 02:50 dizzytorrent2.21/DizzyTorrent.info
[unknown]                 7037   17418  40.4% -lh5- 21f9 Jul 19 03:04 dizzytorrent2.21/dizzytorrent2.readme
[unknown]                 1695    4853  34.9% -lh5- 62a9 Jul 19 02:50 dizzytorrent2.21/dz.config
[unknown]                 1368    2913  47.0% -lh5- c342 Jul 19 02:50 dizzytorrent2.21/LICENSE.txt
[unknown]                 1878    4127  45.5% -lh5- 83b3 Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.deu
[unknown]                 1800    3852  46.7% -lh5- 03fc Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.english
[unknown]                 1902    3982  47.8% -lh5- cd7f Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.fin
[unknown]                 2061    4689  44.0% -lh5- 7a93 Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.fra
[unknown]                 2342    4603  50.9% -lh5- 3f5e Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.greek
[unknown]                 2000    4558  43.9% -lh5- 99f9 Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.italiano
[unknown]                 1936    4107  47.1% -lh5- cacb Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.serb
[unknown]                 1833    3834  47.8% -lh5- 3fd6 Jul 19 02:50 dizzytorrent2.21/locale/dzlocale.swe
[unknown]                 5090    7724  65.9% -lh5- 0253 Jul 19 03:06 DizzyTorrent2.21.info
---------- ----------- ------- ------- ------ ---------- ------------ ----------
 Total        23 files  653330 1523493  42.9%            Jul 21 03:16

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