Este repositório contém o código-fonte para um encurtador de link cgi-dispathed escrito em ferrugem. Você pode hospedar este projeto em seu próprio ambiente usando as instruções abaixo.
Os links na Web estão ficando cada vez mais inchados. Amigos não enviam links para amigos! No entanto, os serviços de link de terceiros são um pesadelo de privacidade. Mas principalmente, eu queria aprender ferrugem e isso parecia um projeto simples.
Este projeto deve ser mínimo e simples. Recursos do usuário:
Recursos de software:

A maneira recomendada de instalar este projeto é usar a imagem do Docker. No entanto, especialmente se você deseja apenas usar a API, também poderá instalar o binário diretamente em seu próprio servidor da Web.
Primeiro, prepare um diretório para o arquivo de dados. Deve pertencer ao usuário com o UID 82 (www-dados no Debian/Ubuntu).
$ mkdir -p ${STORAGE} /smrs/data
$ sudo chown 82:82 ${STORAGE} /smrs/dataAqui está um exemplo de estrofe 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/dataIsso usa o Traefik como proxy reverso da porta de contêiner 8000. Você pode usar seu próprio proxy reverso ou expor a porta diretamente.
Clone o repositório e construa o binário:
$ cargo build --release Coloque o target/release/smrs em algum lugar no caminho do seu servidor da web. Você precisará configurar seu servidor para executar o binário como um script CGI. Eu uso apache2 dentro do contêiner. O arquivo de configuração está em conf/smrs.conf neste repo.
O Rust binário implementa os seguintes pontos de extremidade da API:
GET /session - Retorna a sessão atual como { session: string }POST /session - define o cookie da sessão para o valor fornecido { session: string }POST /save - salva o URL no token dado (se ainda não estiver em uso) { url: string, token: string }GET /to/<token - redireciona para o URL no token dado, ou retorna um 404GET /list - Retorna uma lista de todos os tokens e URLs salvos pela session atual como { links: [{ token: string, url: string, created_at: i32 }]POST /forget - marca o token dado como excluído, ou 404 : { token: string } Para executar este projeto localmente, você pode instalar a ferramenta cargo make e executar a tarefa devenv :
$ cargo make devenv O ambiente de desenvolvimento estará acessível no local: 8000/. Isso prenderá os htdocs dir no contêiner para que você possa iterar apenas no código e recarregar. Para iterar no binário de ferrugem, você pode executar a tarefa iter , que construirá o binário localmente e copiará no contêiner:
$ cargo make iterBem-vindo! Mas lembre -se de que este projeto deve ser mínimo. Não aceitarei o PRS que adicione muitas dependências ou recursos que não quero.
Mit. Sinta -se à vontade para bifurcar e fazer o que quiser.