Dieses Repository enthält den Quellcode für einen in CGI-gestalteten Link Shortener in Rost. Sie können dieses Projekt in Ihrer eigenen Umgebung mit den folgenden Anweisungen hosten.
Links im Web werden immer mehr aufgebläht. Freunde senden Freunde keine Multi-Line-Links! Linkdienste von Drittanbietern sind jedoch ein Albtraum für Privatsphäre. Aber vor allem wollte ich Rost lernen und das schien ein einfaches Projekt zu sein.
Dieses Projekt soll minimal und einfach sein. Benutzerfunktionen:
Softwarefunktionen:

Die empfohlene Möglichkeit zur Installation dieses Projekts besteht darin, das Docker -Bild zu verwenden. Insbesondere wenn Sie nur die API verwenden möchten, können Sie die Binärdatei auch direkt auf Ihrem eigenen Webserver installieren.
Erstellen Sie zunächst ein Verzeichnis für die Datendatei. Es muss dem Benutzer mit UID 82 (www-data auf Debian/Ubuntu) gehören.
$ mkdir -p ${STORAGE} /smrs/data
$ sudo chown 82:82 ${STORAGE} /smrs/dataHier ist ein Beispiel für Docker-Compose Strophe:
smrs :
image : ghcr.io/igor47/smrs:v0.1.1
restart : unless-stopped
container_name : smrs
labels :
- " traefik.enable=true "
- " traefik.http.routers.smrs.rule=Host(`example.com`,`www.example.com`) "
- " traefik.http.routers.smrs.tls=true "
- " traefik.http.routers.smrs.tls.certresolver=letsencrypt "
- " traefik.http.routers.smrs.entrypoints=https "
- " traefik.http.services.smrs.loadbalancer.server.port=8000 "
volumes :
- ${STORAGE}/smrs/data:/smrs/dataDies verwendet Traefik als Reverse -Proxy zum Containerport 8000. Sie können Ihren eigenen Reverse -Proxy verwenden oder den Port direkt freilegen.
Klonen Sie das Repository und erstellen Sie die Binärdatei:
$ cargo build --release Stellen Sie die target/release/smrs irgendwo in den Pfad Ihres Webservers ein. Sie müssen Ihren Server so konfigurieren, dass das binäre Binärdely als CGI -Skript ausgeführt wird. Ich benutze apache2 im Container. Die Konfigurationsdatei befindet sich in diesem Repo in Conf/smrs.conf.
Der Rost -Binär implementiert die folgenden API -Endpunkte:
GET /session - Gibt die aktuelle Sitzung als { session: string } zurückPOST /session - Legt das Sitzungs -Cookie auf den angegebenen Wert { session: string } festPOST /save - Speichern Sie die URL am angegebenen Token (wenn nicht bereits in der Verwendung) { url: string, token: string }GET /to/<token - Umleitungen in die URL am angegebenen Token oder gibt eine 404 zurückGET /list - Gibt eine Liste aller Token und URLs zurück, die durch die aktuelle session als { links: [{ token: string, url: string, created_at: i32 }] gespeichert werden.POST /forget - markiert das angegebene Token als gelöscht oder 404 : { token: string } Um dieses Projekt lokal auszuführen, können Sie das cargo make -Tool installieren und die devenv -Aufgabe ausführen:
$ cargo make devenv Die Entwicklerumgebung ist bei Localhost: 8000/zugänglich. Dadurch wird das htdocs -DIR in den Container gebunden, sodass Sie einfach den Code iterieren und neu laden können. Um die Rost -Binärin zu iterieren, können Sie die iter -Aufgabe ausführen, die die Binärdatei lokal aufbaut und in den Container kopiert:
$ cargo make iterWillkommen! Denken Sie jedoch daran, dass dieses Projekt minimal sein soll. Ich werde PRs nicht akzeptieren, die zu viele Abhängigkeiten oder Funktionen hinzufügen, die ich nicht will.
MIT. Fühlen Sie sich frei zu gib und tun, was Sie wollen.