Этот репозиторий содержит исходный код для CGI-диспетчерского шортенера, написанного в Rust. Вы можете разместить этот проект в своей среде, используя приведенные ниже инструкции.
Ссылки в Интернете становятся все более раздутыми. Друзья не присылают друзьям многострочные ссылки! Тем не менее, сторонние услуги ссылки являются кошмаром конфиденциальности. Но в основном я хотел выучить ржавчину, и это казалось простым проектом.
Этот проект должен быть минимальным и простым. Пользовательские функции:
Функции программного обеспечения:

Рекомендуемый способ установить этот проект - использовать изображение Docker. Однако, особенно если вы просто хотите использовать API, вы также можете установить двоичный файл непосредственно на своем собственном веб -сервере.
Во -первых, подготовьте каталог для файла данных. Он должен принадлежать пользователю с UID 82 (www-data на Debian/Ubuntu).
$ mkdir -p ${STORAGE} /smrs/data
$ sudo chown 82:82 ${STORAGE} /smrs/dataВот пример Docker-Compose Stanza:
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/dataЭто использует Traefik в качестве обратного прокси для контейнера.
Клонировать репозиторий и построить бинарный:
$ cargo build --release Поместите target/release/smrs куда -нибудь на пути вашего веб -сервера. Вам нужно будет настроить ваш сервер для запуска двоичного файла в виде скрипта CGI. Я использую apache2 внутри контейнера. Файл конфигурации находится в conf/smrs.conf в этом репо.
Двоина в ржавчине реализует следующие конечные точки API:
GET /session - возвращает текущий сеанс как { session: string }POST /session - устанавливает файл cookie сеанса в заданное значение { session: string }POST /save - сохраняет URL -адрес в заданном токен (если еще не используется) { url: string, token: string }GET /to/<token - перенаправление на URL -адрес в данном токене или возвращает 404GET /list - Возвращает список всех токенов и URL -адресов, сохраненных текущим session как { links: [{ token: string, url: string, created_at: i32 }]POST /forget - отмечает заданный токен как удаленный, или 404 : { token: string } Чтобы запустить этот проект локально, вы можете установить инструмент cargo make и запустить задачу devenv :
$ cargo make devenv Среда DEV будет доступна по адресу Localhost: 8000/. Это будет связывать DIR htdocs в контейнер, чтобы вы могли просто итерации по коду и перезагрузить. Чтобы итерация на бинарном ржавчине, вы можете запустить задачу iter , которая построит двоичный файл локально и копировать в контейнер:
$ cargo make iterДобро пожаловать! Но имейте в виду, что этот проект должен быть минимальным. Я не буду принимать PR, которые добавляют слишком много зависимостей или функций, которые мне не нужны.
Грань Не стесняйтесь вилка и делайте то, что хотите.