Ich habe das mal folgendermaßen ausprobiert:
1. Simulierte Datenbank mit 'dd' erstellt:
Code: Alles auswählen
# dd if=/dev/random of=some.db bs=1024 count=10000
Code: Alles auswählen
# base64 < some.db > some.db.b64
# openssl sha1 some.db.b64
SHA1(some.db.b64)= 4930eb3f16c7b8308dd9b71e62c095c2fbd2a934
#
Code: Alles auswählen
program SimpleServer;
{$mode objfpc}{$H+}
uses
SysUtils, Classes, Base64, FPHttpApp, HTTPRoute, HTTPDefs, OpenSslSockets;
procedure sendDbFile(aRequest: TRequest; aResponse: TResponse);
var
Filestream : TFileStream;
RawBody, EncodedBody : String;
begin
Filestream := TFileStream.Create('some.db', fmOpenRead or fmShareDenyWrite);
try
SetLength(RawBody, Filestream.Size);
Filestream.Read(RawBody[1], Filestream.Size);
finally
Filestream.Free;
end;
EncodedBody := EncodeStringBase64(RawBody);
aResponse.Code := 200;
aResponse.ContentLength := EncodedBody.Length;
aResponse.Content := EncodedBody;
aResponse.SendContent;
end;
begin
Application.Initialize;
HTTPRouter.RegisterRoute('/db', @sendDbFile);
Application.Port := 8443;
Application.UseSSL := true;
Writeln('Starte Webserver...');
Application.Run;
end.
Code: Alles auswählen
# ./simpleserver
Starte Webserver...
Code: Alles auswählen
# curl -ks https://localhost:8443/db -o some.db.received
#
Code: Alles auswählen
# openssl sha1 some.db.received
SHA1(some.db.received)= 4930eb3f16c7b8308dd9b71e62c095c2fbd2a934
#
Fazit: Für das, was Du vor hast, brauchst Du vermutlich kein VPN und auch kein Synapse, sondern kannst Du einfach mit dem arbeiten, was Dir FPC und seine Standardbibliotheken bieten können.