Ce référentiel contient le code source d'un raccourcisseur de liens Dispatched CGI écrit en rouille. Vous pouvez héberger ce projet dans votre propre environnement en utilisant les instructions ci-dessous.
Les liens sur le Web deviennent de plus en plus gonflés. Les amis n'envoient pas d'amis des liens multi-lignes! Cependant, les services de liaison tiers sont un cauchemar de confidentialité. Mais surtout, je voulais apprendre la rouille et cela semblait être un projet simple.
Ce projet est censé être minimal et simple. Caractéristiques de l'utilisateur:
Caractéristiques du logiciel:

La façon recommandée d'installer ce projet consiste à utiliser l'image Docker. Cependant, surtout si vous souhaitez simplement utiliser l'API, vous pouvez également installer le binaire directement dans votre propre serveur Web.
Premièrement, préparez un répertoire pour le fichier de données. Il doit appartenir à l'utilisateur avec UID 82 (www-data sur Debian / Ubuntu).
$ mkdir -p ${STORAGE} /smrs/data
$ sudo chown 82:82 ${STORAGE} /smrs/dataVoici un exemple de strophe docker-compose:
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/dataCela utilise Trafik comme proxy inverse au port de conteneur 8000. Vous pouvez utiliser votre propre proxy inversé ou exposer directement le port.
Clone le référentiel et construire le binaire:
$ cargo build --release Mettez le fichier target/release/smrs quelque part dans le chemin de votre serveur Web. Vous devrez configurer votre serveur pour exécuter le binaire en tant que script CGI. J'utilise apache2 à l'intérieur du conteneur. Le fichier de configuration est dans conf / smrs.conf dans ce dépôt.
La rouille binaire implémente les points de terminaison de l'API suivants:
GET /session - Renvoie la session en cours comme { session: string }POST /session - Définit le cookie de session à la valeur donnée { session: string }POST /save - Enregistre l'URL au jeton donné (sinon déjà à utiliser) { url: string, token: string }GET /to/<token - redirige vers l'URL au jeton donné, ou renvoie un 404GET /list - Renvoie une liste de tous les jetons et URL enregistrés par la session actuelle en tant que { links: [{ token: string, url: string, created_at: i32 }]POST /forget - marque le jeton donné comme supprimé, ou 404 : { token: string } Pour exécuter ce projet localement, vous pouvez installer l'outil cargo make et exécuter la tâche devenv :
$ cargo make devenv L'environnement dev sera accessible à LocalHost: 8000 /. Cela liera le DIR htdocs dans le conteneur afin que vous puissiez simplement itérer sur le code et le rechargement. Pour itérer sur le binaire Rust, vous pouvez exécuter la tâche iter , qui construira le binaire localement et copiera dans le conteneur:
$ cargo make iterAccueillir! Mais gardez à l'esprit que ce projet est censé être minime. Je n'accepterai pas les PR qui ajoutent trop de dépendances ou de fonctionnalités que je ne veux pas.
Mit. N'hésitez pas à se nourrir et à faire ce que vous voulez.