diff --git a/.forgejo/workflows/pipeline.yaml b/.forgejo/workflows/pipeline.yaml new file mode 100644 index 0000000..dd0dabe --- /dev/null +++ b/.forgejo/workflows/pipeline.yaml @@ -0,0 +1,25 @@ +on: + release: + types: [published] +jobs: + upload: + runs-on: host + permissions: + packages: write + steps: + - uses: actions/setup-node@v6 + with: + node-version: 24 + - uses: actions/checkout@v6 + - run: cargo build -r + - run: | + curl -X POST \ + -H "Authorization: token ${{ github.token }}" \ + -F "attachment=@target/release/chat" \ + "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/${{ github.event.release.id }}/assets" + - run: | + export XDG_RUNTIME_DIR=/run/user/$(id -u) + export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus + cp target/release/chat ~/chat/chat + chmod +x ~/chat/chat + systemctl --user restart chat \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 9c7f191..69fb1d7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,8 @@ async fn main() { // OAuth configuration let client_id = dotenvy::var("CLIENT_ID").unwrap(); let client_secret = dotenvy::var("CLIENT_SECRET").unwrap(); + let port = dotenvy::var("PORT").unwrap_or_else(|_| "3001".to_string()); + let host = dotenvy::var("HOST").unwrap_or_else(|_| "http://localhost:".to_string() + &port); // NOTE: In production, do not hardcode localhost let auth_url = AuthUrl::new("https://idm.flegr.me/application/o/authorize/".to_string()) .expect("Invalid authorization endpoint URL"); @@ -52,7 +54,7 @@ async fn main() { Some(token_url), ) .set_redirect_uri( - RedirectUrl::new("http://localhost:3001/auth/callback".to_string()) + RedirectUrl::new(host + "/auth/callback") .expect("Invalid redirect URL"), ); @@ -79,8 +81,9 @@ async fn main() { .with_state(app_state); // Run the app - let listener = tokio::net::TcpListener::bind("0.0.0.0:3001").await.unwrap(); - println!("Chat server listening on http://0.0.0.0:3001"); + let port = dotenvy::var("PORT").unwrap_or_else(|_| "3001".to_string()); + let listener = tokio::net::TcpListener::bind("0.0.0.0:".to_string() + &port).await.unwrap(); + println!("Chat server listening on http://0.0.0.0:{}", port); axum::serve(listener, app).await.unwrap(); }