AmiMule 0.8.3
=============

A native ed2k and Kad client for the Amiga, with a MUI window.
Download from the eDonkey servers and the Kad network, share your files,
all written in C for the Amiga: no emulation, no Java.

Author:   Sante <ziosante@libero.it>
License:  GNU General Public License v2 (see COPYING). The source code is in
          the second archive, AmiMule-0.8.3-src.lha.
Based on: the eMule protocol (eMule v0.72a, irwir branch, GPL v2). AmiMule is
          not a port of the Windows program: it is written from scratch.


Requirements
------------
- AmigaOS 3.x (tested on 3.2), 68020 or better, no FPU needed.
  Tested on an A1200 with a 68060 at 50 MHz.
- A TCP/IP stack with bsdsocket.library (tested with AmiTCP NG).
- MUI 3.8 or newer for the window (tested with MUI 5). The shell version
  does not need MUI.
- Unless you are behind a router that supports UPnP, forward the TCP port
  (default 4662) and the UDP port (TCP + 10) to your Amiga, or you will be
  a "LowID" client: you can still download, but fewer sources can reach you.


What is in the archive
----------------------
AmiMuleGUI        the program with the MUI window (double-click AmiMuleGUI)
AmiMuleGUI.info   its icon (also used when the window is iconified; keep it
                  in the same drawer as the program)
amimule           the same client for the Shell, no window, controlled with
                  ARexx or from the command line
server.met        a first list of ed2k servers (update it from the Servers page)
nodes.dat         a first list of Kad contacts, so Kad starts at once
COPYING           the GPL v2


Installation
------------
Copy the AmiMule drawer where you like, for example Work:Apps/AmiMule, and
double-click AmiMuleGUI. Run it from the same drawer every time: the settings
and the data files are kept in the current directory:

  AmiMule.prefs     your settings
  server.met        ed2k servers
  nodes.dat         Kad contacts
  known.dat         hashes of your shared files (so they are not hashed again)
  clients.met       credits of the clients you exchanged data with
  secident.key      your key for the SecureIdent exchange - keep it, and do
                    not give it to anybody
  userhash.dat, kadid.dat   your identity on ed2k and on Kad
  Temp/             partial downloads (.part and .part.met)
  Incoming/         finished downloads; everything in here is also shared

Open the Options page, choose your nickname, the Temp and Incoming drawers
(they should be on the same volume, otherwise a finished file is copied and not
moved), the speed limits and the upload slots, and press Save.


Using it
--------
Transfers  downloads, uploads and, below, the sources of the selected download.
           Paste an ed2k:// link in the box at the top and press Add.
Search     search on the connected server, on the other servers (UDP) and on
           Kad. Double-click a result to download it. Files you already have
           are in red, those you are downloading in blue.
Servers    the server list. Double-click to connect. The "server.met URL" box
           and the Update button load a list from a web address (plain http://
           only) and add the new servers to yours.
Kad        state of the Kad network, with a box to start from a node you know.
Sharing    the files you share and how often they were requested.
Options    settings. The Log page shows what the program is doing.

A click on a column title sorts the list; another click reverses the order.
The order is remembered.


From the Shell
--------------
  The main options:
  amimule -k              keep running and sharing
  amimule -d "ed2k://|file|name|size|hash|/"   download a link
  amimule -q "words"      search, print the results
  -p port  -n nick  -S dir  -u slots  -U KB/s  -K none|nodes.dat  -v

ARexx
-----
The Shell version has the port AMIMULE, the window version AMIMULE.1.
Commands: ADD, SEARCH, MORE, RESULTS, GET, LIST, SOURCES, UPLOADS, PAUSE,
RESUME, CANCEL, CLEAR, SOURCE, SERVERS, CONNECT, DISCONNECT, STATUS, SERVER,
SERVERMET, KAD, RESCAN, PROF, QUIT. Return code 0 is ok, 5 nothing to do,
10 an error. The window version also has PAGE n to show a page.

  /* show the downloads */
  ADDRESS AMIMULE.1
  'LIST'
  say result


What it can do
--------------
- ed2k servers: login (HighID and LowID), search, sources, callbacks for
  LowID sources, global search on the other servers.
- Kad: contacts, keyword search (several words), sources, publishing your
  shared files, firewalled sources through their buddy.
- Downloads: several at once, resume after a restart, every part checked
  with MD4, compressed transfers, several sources per file.
- Uploads: queue, slots and speed limit, credits and SecureIdent like eMule.
- Obfuscated connections between clients.
- UPnP port mapping on routers that offer it.
- Sharing of Incoming and of one more drawer, subdrawers included.

Not done (yet)
--------------
- obfuscation of the connection to the servers and of the Kad UDP traffic
- https:// addresses for server.met (there is no TLS in the program)
- no IPv6


Notes
-----
- The program needs the TCP/IP stack running before it starts.
- Hashing a large shared file on a 68060 takes a while (about 4.7 MB/s).
  The window keeps working meanwhile and the files are offered when ready.
- If it misbehaves, run "AmiMuleGUI -v" from a Shell to see the log.
- eMule, eDonkey and Kad are the names of programs and networks of other
  people; this program has no connection with them.


History
-------
0.8.3  own icon when the window is iconified
0.8.2  files you already have are coloured in the search results
0.8.1  file type in the search results; search results can be sorted
0.8    server.met update from a web address; columns sortable by a click
0.7    sources behind a firewall reached through their Kad buddy
0.6    global search on the other servers (UDP), "More results"
0.5    Kad search with several words
0.4    Kad fixes, recursive sharing
0.3    MUI window, shared files, uploads
