program CAnydate; {$APPTYPE CONSOLE} uses SysUtils, IdHTTP, Classes, inifiles, zlib, MD5 in 'MD5.pas', RedeemerGzip in 'RedeemerGzip.pas'; var Target, Base, Platform: string; HTTP: TIdHTTP; sl: TStringList; INI: TINIFile; procedure DownloadAndExtract(const Source, Target: string); var Adapter: TRedeemerGzipDecompressionAdapter; Decompressor: TDecompressionStream; Received: TMemoryStream; begin writeln(' Herunterladen...'); ForceDirectories(ExtractFilePath(Target)); Received := TMemoryStream.Create; HTTP.Get(Source, Received); Received.Position := 0; writeln(' Entpacken...'); Adapter := TRedeemerGzipDecompressionAdapter.Create(Received); Decompressor := TDecompressionStream.Create(Adapter.Zlib); Received.Clear; Received.CopyFrom(Decompressor, 0); Received.SaveToFile(Target); end; procedure DoWork(const Section: string); var sl, temp: TStringList; s: string; ToFile: string; begin sl := TStringList.Create; temp := TStringList.Create; INI.ReadSection(Section, sl); for s in sl do try temp.Text := StringReplace(INI.ReadString(Section, s, ''), '::', #13#10, [rfReplaceAll]); ToFile := Target + StringReplace(temp[4], '/', '\', [rfReplaceAll]); //writeln(MD5.MD5Print(MD5.MD5File(ToFile))); //writeln(temp[2]); if temp[2] <> MD5.MD5Print(MD5.MD5File(ToFile)) then begin writeln(temp[4]); DownloadAndExtract(Base + Section + '/' + StringReplace(s, '\', '/', [rfReplaceAll]), ToFile); writeln; end; except end; temp.Free; sl.Free; end; begin try { TODO -oEntwickler -cKonsole Main : Hier Code einfügen } if paramcount = 3 then begin writeln(''); Target := IncludeTrailingPathDelimiter(paramstr(1)); Base := paramstr(2); if Base[Length(Base)] <> '/' then Base := Base + '/'; Platform := paramstr(3); writeln('Indexdatei herunterladen...'); HTTP := TIdHTTP.Create(); sl := TStringList.Create; sl.Text := HTTP.Get(Base + 'client_' + Platform + '.ini'); sl.SaveToFile(ExtractFilePath(paramstr(0))+ 'Anydate.tmp'); INI := TIniFile.Create(ExtractFilePath(paramstr(0))+ 'Anydate.tmp'); writeln(''); DoWork('common_client'); DoWork('bin_' + Platform); writeln('Fertig!'); end else begin writeln('canydate.exe'); writeln(' C:\Programme\TS3Client'); writeln(' http://files.teamspeak-services.com/updater-images/client/1516349129'); writeln(' win32'); end; except on E:Exception do Writeln(E.Classname, ': ', E.Message); end; end.