DC protocol uitbreiding.
------------------------

* Zoeken naar inhoud
  ------------------

Om efficienter bezig te zijn tijdens zoeken, is het zoeken naar inhoud
toegevoegd.

2 DC commando's zijn aangepast:
$Search (om een zoekenopdracht te starten)
en
$SR (het zoekresultaat)

$Search verandering:
====================

een normaal $Search commando is als volgt:
$Search zender a?b?c?d?e
met zender is "Hub:bijnaam" voor passief zoeken of "ip:poort" voor actief
zoeken.
a is F als de grootte onbelangrijk is, anders T
b is F als de grootte "ten minste" is, anders T (hoogstens)
c is de grootte in bytes
d is gegevens type: 1=elke,2=audio,3=gecompresseerd,4=document,5=exe,
                6=afbeelding,7=video,8=directory
en eeee is het patroon om te zoeken

Om compatible met DC te blijve n, is het niet mogelijk een nieuw veld toe
te voegen. Ik heb het 'a' veld (de gewenste grootte) aangepast.

nu, is het commando als volgt:
$Search zender a.md?b?c?d?e

met md is een MD5SUM (zie hieronder).

$SR verandering:
================

een normaal $SR commando is als volgt:
$SR zender a\5b c\5d (e)
(\5 is het karakter '\005')
met zender als de bijnaam van de persoon die dit antwoord zend.
a is de gevonden bestandsnaam.
b is de bestandgrootte
c is de slot ratio (vrijslot/totaal slot)
d is de hubnaam
e is het hubadres.

Om compatible met DC te blijven, is het niet mogelijk een nieuw veld toe te
voegen. Ik heb het 'b' veld (de bestandgrootte) aangepast

nu, is het commando als volgt:
$SR zender a\5b.md c\5d (e)

met md als een MD5SUM (zie hieronder).

NB over compatibiliteit: Om een vreemde reden, wordt op de hub geen waarschuwing
gegeven als de aangepaste $Search gezonden wordt, maar er is wel een
waarschuwing als de aangepaste $SR gezonden wordt (alleen in passieve modus,
omdat de actieve modus geen hub gebruikt). Het is alleen een waarschuwing en de
uitbreiding werkt naar behoren.

--------------------------------------------------------------------------------
MD5SUM berekening.

de MD5SUM wordt berekend over de eerste 4KBytes van het bestand door mede van
de standaard MD5 algoritme (zie md.c bestand van DCTC). De algoritme produceert
een niet-afdrukbare 16 byte string. Om het te verzenden met het DC protocol,
moet de string herschreven worden. De 16 bytes niet-afdrukbare string wordt
omgezet in een 48 bytes afdrukbare string door de volgende makkelijke regel.
Elke byte van MD5SUM wordt herschreven in een 3 decimale karakters string. Bijv.
254 wordt "254", 136 wordt "136, 28 wordt "028".

Dit is niet de meest efficiente manier om een waarde op te slaan, maar hierdoor
lijken de bestandgrootte (c) en de gecodeerde MD5SUM (md) op een getal met
decimalen (c.md). Bijv:
35345.111222333444555666777888999000111222333444555666
35345 is de bestandgrootte en het gedeelte na de punt is de md5sum (slecht
voorbeeld, het is niet mogelijk om 333 ... 999 in een byte te plaatsen :) )
Dus, zelfs als het programma een nummer verwacht, zal er geen foutmelding zijn.
