Index: freexp/md5.pas =================================================================== RCS file: /server/cvs/freexp/md5.pas,v retrieving revision 1.1 retrieving revision 1.3 diff -u -r1.1 -r1.3 --- freexp/md5.pas 25 Feb 2006 12:42:48 -0000 1.1 +++ freexp/md5.pas 30 Mar 2006 07:21:09 -0000 1.3 @@ -1,4 +1,4 @@ -{ $Id: md5.pas,v 1.1 2006/02/25 12:42:48 mw Exp $ } +{ $Id: md5.pas,v 1.3 2006/03/30 07:21:09 mw Exp $ } unit MD5; {MD5 - 128 bit Hash function} @@ -50,7 +50,8 @@ 3.07 18.01.06 we Descriptor fields HAlgNum, HSig 3.08 22.01.06 we Removed HSelfTest from descriptor 3.09 11.02.06 we Descriptor as typed const - 3.09fxp 20.02.06 fxp STD.INC is now part of this file + 3.09fxp1 20.02.06 fxp STD.INC is now part of this file + 3.09fxp2 28.03.06 fxp md5sum generates MD5SUM as a String[32] **************************************************************************) (*------------------------------------------------------------------------- @@ -329,8 +330,13 @@ {$ifopt Q+} {$define OverflowChecks_on} {$endif} {$endif} -uses Hash; +uses typeform,fileio,hash; +type md5str = string[32]; + +function md5sum(const source:string;const isfile:boolean):md5str; + {-initialize context} + {$ifdef DLL} stdcall; {$endif} procedure MD5Init(var Context: THashContext); {-initialize context} @@ -384,7 +390,15 @@ {Internal types for type casting} type PByte = ^byte; - + {$ifdef UseWinDOS} + md5buf = array[1..$8000] of byte; + {$else} + {$ifdef VER80} + md5buf = array[1..$8000] of byte; + {$else} + md5buf = array[1..$C000] of byte; + {$endif} + {$endif} {$ifdef StrictLong} {$warnings off} @@ -416,11 +430,58 @@ {$endif} {$endif} +function md5sum(const source:string;const isfile:boolean):md5str; +var f : file; + context : THashContext; + digest : TMD5Digest; + StrDigest : md5str; + l : longint; + n : word; + w : byte; + err : integer; + md5bufp : ^md5buf; + +begin + md5sum:=''; + New(md5bufp); + MD5Init(context); + if isfile then + begin + w:=FileMode; + fm_ro; + assign(f,source); + reset(f,1); + err:=IOResult; + FileMode:=w; + if err<>0 then exit; + l:=FileSize(f); + if IOResult<>0 then exit; + while (err=0) and (l>0) do + begin + blockread(f,md5bufp^,SizeOf(md5buf),n); + err:=IOResult; + dec(l,n); + MD5Update(context,md5bufp,n); + end; + close(f); + if IOResult=0 then; + if err<>0 then exit; + end + else begin + n:=length(source); + move(source,md5bufp^,n); + MD5Update(context,md5bufp,n); + end; + MD5Final(context,digest); + Dispose(md5bufp); + StrDigest:=''; + for n:=0 to 15 do StrDigest:=StrDigest+hex(digest[n],2); + md5sum:=StrDigest; +end; {$ifdef BIT32} - {********* 32 bit code *********} {---------------------------------------------------------------------------} @@ -875,6 +936,12 @@ end. { $Log: md5.pas,v $ + Revision 1.3 2006/03/30 07:21:09 mw + MW: - Verlagerung von md5sum() um es bitbreitenunabhängig anzusprechen. + + Revision 1.2 2006/03/30 07:11:45 mw + MY: - Neue Funktion md5sum zur leichteren Berechnung einer MD5-Summe + Revision 1.1 2006/02/25 12:42:48 mw MW: - Die Liste der Mail- und News-Server SERVERS.DAT wird jetzt automatisch aktualiert, sofern der Benutzer die Datei nicht Index: freexp/servers.inc =================================================================== RCS file: /server/cvs/freexp/servers.inc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- freexp/servers.inc 1 Mar 2006 14:23:54 -0000 1.4 +++ freexp/servers.inc 30 Mar 2006 10:21:39 -0000 1.5 @@ -6,7 +6,7 @@ { Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der } { Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html. } { --------------------------------------------------------------- } -{ $Id: servers.inc,v 1.4 2006/03/01 14:23:54 mw Exp $ } +{ $Id: servers.inc,v 1.5 2006/03/30 10:21:39 mw Exp $ } const oldfile=9; oldfiles:array [1..oldfile] of string[32]=( '83683051cc566c6d63aa0e6306d98290', {Rev.: 1.1.2.1} @@ -19,9 +19,12 @@ 'a8a639ee38fbba9b5c8d77f9007801fd', {Rev.: 1.5 und 1.4.2.1} '8f6f37568b7171927524d061493d5b9f' {Rev.: 1.6 und 1.4.2.2} ); -{Aktuelle Rev 1.7 und 1.4.2.3: b1a28ca0d6ce824d549c0b8f696e0c11 (Branch 3.40 und Main)} +{Aktuelle Rev 1.7 und 1.4.2.3: c5d0efb5d1310122f5952bfc10b2b54a (Branch 3.40 und Main)} { $Log: servers.inc,v $ + Revision 1.5 2006/03/30 10:21:39 mw + MW: - fehlerhafte neue MD5-Summe ersetzt. + Revision 1.4 2006/03/01 14:23:54 mw MW: - Aufnahme der neuen Servers.dat Index: freexp/servers.pas =================================================================== RCS file: /server/cvs/freexp/servers.pas,v retrieving revision 1.4 retrieving revision 1.7 diff -u -r1.4 -r1.7 --- freexp/servers.pas 25 Feb 2006 21:16:50 -0000 1.4 +++ freexp/servers.pas 30 Mar 2006 07:30:07 -0000 1.7 @@ -6,7 +6,7 @@ { Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der } { Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html. } { --------------------------------------------------------------- } -{ $Id: servers.pas,v 1.4 2006/02/25 21:16:50 mw Exp $ } +{ $Id: servers.pas,v 1.7 2006/03/30 07:30:07 mw Exp $ } {$I XPDEFINE.INC } {$O+,F+} @@ -18,16 +18,11 @@ implementation -uses xp0,fileio,typeform,hash,md5; +uses xp0,fileio,typeform,md5; procedure renew_Servers; -var f,g:text; - Digest: TMD5Digest; - StrDigest: string[32]; - buf: array [1..512] of byte; - Err: word; - i:byte; +var f,g:text; t:string; const servers:string='SERVERS.DAT'; @@ -39,48 +34,11 @@ function outdated(f:string):boolean; var i:integer; - - function Int2Hex (x : byte):String; - const - { Zeichensatz der Hexadezimalzahlen } - cs : Array [0..15] of Char = '0123456789ABCDEF'; - { Werte, bis zum naechsten Stellensprung } - te : Array [1..2] of Longint = (16, 1); - var - h : String[2]; { String, der zurueckgegeben wird } - hilf : Byte; { Hilfsvariable } - i : Integer; { Zaehler fuer FOR-Schleife } - begin - { String initalisieren (loeschen) } - h := ''; - { Wiederhole die Schleife 8 mal } - for i := 1 to 2 do begin - { Teile den uebergebenen Wert durch den i. Eintrag in der - Wertetabelle te und uebergebe das Ergebniss an hilf } - hilf := x div te[i]; - { Addiere das Zeichen, den h wertmaessig angibt zu dem - String, der spaeter ausgegeben wird } - h := h + cs[hilf]; - { Ziehe den Wert hilf mal dem i. Eintrag in der Wertetabelle - von x ab } - x := x - te[i] * hilf; - end; - { Uebergebe den String h an die Funktion Int2Hex } - Int2Hex := h; - end; + StrDigest: string[32]; begin - Err:=0; - {MD5-Summe der SERVERS.DAT berechnen} - - MD5File(f,Digest,buf,sizeof(buf),Err); - - {und in leichter vergleichbare Stringentsprechnung umwandeln} - - StrDigest:=''; - for i:=0 to 15 do StrDigest:=StrDigest+Int2Hex(Digest[i]); - + StrDigest:=md5sum(servers,true); {MD5-Summe gegen alle alten SERVERS.DAT vergleichen} outdated:=false; for i:=1 to oldfile do @@ -124,18 +82,20 @@ end. { $Log: servers.pas,v $ - Revision 1.4 2006/02/25 21:16:50 mw - MW: - Vergessene Stringaddition. + Revision 1.7 2006/03/30 07:30:07 mw + MW: - Vergessener Debugcode entfernt. + + Revision 1.6 2006/03/30 07:17:45 mw + MW: - Kosmetikkorrektur + + Revision 1.5 2006/03/30 07:12:58 mw + MW: - Vereinfachung der SERVERS-Unit durch Benutzung von md5.md5sum() + und damit Weglassen allen doppelt aufgeführten Codes. Revision 1.3 2006/02/25 18:25:52 mw MW: - Bugfixing von Servers.dat : Es wurde eine leere Servers.dat erzeugt, wenn keine Servers.dat existierte. - - Servers.dat kann im Overlay bleiben. - - Revision 1.2 2006/02/25 16:35:02 mw - MW: - Servers-Unit darf nicht im Overlay sein. - Revision 1.1 2006/02/25 12:42:48 mw MW: - Die Liste der Mail- und News-Server SERVERS.DAT wird jetzt automatisch aktualiert, sofern der Benutzer die Datei nicht
------------------------------------------------------------------------ FreeXP CVS-Mailingliste CVS-List@freexp.de http://www.freexp.de/cgi-bin/mailman/listinfo/cvs-list