このリポジトリには、Rustで記述されたCGIディスパッチリンクショートナーのソースコードが含まれています。以下の指示を使用して、このプロジェクトを独自の環境でホストできます。
ウェブ上のリンクはますます肥大化しています。友達は友達のマルチラインリンクを送信しません!ただし、サードパーティリンクサービスはプライバシーの悪夢です。しかし、主に、私は錆を学びたかったのですが、これは単純なプロジェクトのように思えました。
このプロジェクトは、最小限でシンプルであることを意図しています。ユーザー機能:
ソフトウェア機能:

このプロジェクトをインストールする推奨方法は、Docker画像を使用することです。ただし、特にAPIを使用するだけの場合は、独自のWebサーバーにバイナリを直接インストールすることもできます。
まず、データファイルのディレクトリを準備します。 UID 82(debian/ubuntuのwww-data)を持つユーザーが所有する必要があります。
$ 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をコンテナポート8000の逆プロキシとして使用します。独自の逆プロキシを使用するか、ポートを直接露出させることができます。
リポジトリをクローンし、バイナリを構築します。
$ cargo build --releaseファイルtarget/release/smrsをWebサーバーのパスのどこかに配置します。 CGIスクリプトとしてバイナリを実行するようにサーバーを構成する必要があります。コンテナ内でapache2を使用します。構成ファイルは、このレポのconf/smrs.confにあります。
さび的バイナリは、次のAPIエンドポイントを実装しています。
GET /session現在のセッションを{ session: string }として返しますPOST /session - セッションクッキーを指定値に設定します{ session: string }POST /save - 指定されたトークンでURLを保存します(まだ使用していない場合) { url: string, token: string }GET /to/<token指定されたトークンでURLにリダイレクトするか、 404を返しますGET /list - 現在のsessionで保存されたすべてのトークンとURLのリストを{ links: [{ token: string, url: string, created_at: i32 }]として返します。POST /forget - 指定されたトークンを削除または404 : { token: string }としてマークしますこのプロジェクトをローカルに実行するには、 cargo makeツールをインストールしてdevenvタスクを実行できます。
$ cargo make devenv開発環境はLocalHost:8000/でアクセスできます。これにより、 htdocs dirをコンテナにマウントするため、コードを反復してリロードできます。 Rustバイナリを反復するには、 iterタスクを実行します。これにより、バイナリをローカルに構築し、コンテナにコピーします。
$ cargo make iterいらっしゃいませ!ただし、このプロジェクトは最小限のものであることを意図していることに留意してください。私が望んでいない依存関係や機能が多すぎるPRを受け入れません。
mit。お気軽にフォークして、あなたがやりたいことをしてください。