diff options
Diffstat
| -rw-r--r-- | .github/workflows/build.yml | 8 | +4 −4 |
| -rw-r--r-- | .github/workflows/cla.yml | 2 | +1 −1 |
| -rw-r--r-- | .gitignore | 2 | +1 −1 |
| -rw-r--r-- | CLA.md | 4 | +2 −2 |
| -rw-r--r-- | Cargo.lock | 92 | +46 −46 |
| -rw-r--r-- | Cargo.toml | 2 | +1 −1 |
| -rw-r--r-- | README.md | 32 | +16 −16 |
| -rw-r--r-- | REUSE.toml | 14 | +7 −7 |
| -rw-r--r-- | crates/recluse/Cargo.toml (renamed from crates/zorian/Cargo.toml) | 4 | +2 −2 |
| -rw-r--r-- | crates/recluse/build.rs (renamed from crates/zorian/build.rs) | 0 | +0 −0 |
| -rw-r--r-- | crates/recluse/src/assets/apple-touch-icon.png (renamed from crates/zorian/src/assets/apple-touch-icon.png) | bin | 715 -> 715 bytes |
| -rw-r--r-- | crates/recluse/src/assets/base.css (renamed from crates/zorian/src/assets/base.css) | 0 | +0 −0 |
| -rw-r--r-- | crates/recluse/src/assets/favicon-192.png (renamed from crates/zorian/src/assets/favicon-192.png) | bin | 715 -> 715 bytes |
| -rw-r--r-- | crates/recluse/src/assets/favicon-512.png (renamed from crates/zorian/src/assets/favicon-512.png) | bin | 2329 -> 2329 bytes |
| -rw-r--r-- | crates/recluse/src/assets/favicon.ico (renamed from crates/zorian/src/assets/favicon.ico) | bin | 32038 -> 32038 bytes |
| -rw-r--r-- | crates/recluse/src/assets/favicon.svg (renamed from crates/zorian/src/assets/favicon.svg) | 0 | +0 −0 |
| -rw-r--r-- | crates/recluse/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 (renamed from crates/zorian/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2) | bin | 122452 -> 122452 bytes |
| -rw-r--r-- | crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 (renamed from crates/zorian/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2) | bin | 113700 -> 113700 bytes |
| -rw-r--r-- | crates/recluse/src/assets/manifest.webmanifest (renamed from crates/zorian/src/assets/manifest.webmanifest) | 2 | +1 −1 |
| -rw-r--r-- | crates/recluse/src/assets/robots.txt (renamed from crates/zorian/src/assets/robots.txt) | 0 | +0 −0 |
| -rw-r--r-- | crates/recluse/src/config.rs (renamed from crates/zorian/src/config.rs) | 8 | +4 −4 |
| -rw-r--r-- | crates/recluse/src/controller_backend.rs (renamed from crates/zorian/src/controller_backend.rs) | 0 | +0 −0 |
| -rw-r--r-- | crates/recluse/src/controller_web.rs (renamed from crates/zorian/src/controller_web.rs) | 16 | +8 −8 |
| -rw-r--r-- | crates/recluse/src/main.rs (renamed from crates/zorian/src/main.rs) | 8 | +4 −4 |
| -rw-r--r-- | crates/recluse/src/proxy.rs (renamed from crates/zorian/src/proxy.rs) | 2 | +1 −1 |
| -rw-r--r-- | crates/recluse/src/storage.rs (renamed from crates/zorian/src/storage.rs) | 0 | +0 −0 |
| -rw-r--r-- | crates/recluse/src/telemetry.rs (renamed from crates/zorian/src/telemetry.rs) | 4 | +2 −2 |
| -rw-r--r-- | crates/repos/src/go.rs | 4 | +2 −2 |
| -rw-r--r-- | deny.toml | 2 | +1 −1 |
| -rw-r--r-- | nfpm.yaml | 24 | +12 −12 |
| -rw-r--r-- | pkg/recluse.service (renamed from pkg/zorian.service) | 10 | +5 −5 |
| -rw-r--r-- | pkg/recluse.toml (renamed from pkg/zorian.toml) | 20 | +10 −10 |
| -rw-r--r-- | pkg/scripts/postinstall.sh | 4 | +2 −2 |
| -rw-r--r-- | pkg/scripts/preinstall.sh | 14 | +7 −7 |
| -rw-r--r-- | pkg/scripts/preremove.sh | 6 | +3 −3 |
| -rwxr-xr-x | tests/smoke/run-local.sh | 24 | +12 −12 |
| -rw-r--r-- | tests/smoke/src/main.rs | 36 | +18 −18 |
| -rw-r--r-- | xtask/src/main.rs | 2 | +1 −1 |
38 files changed, 173 insertions, 173 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7e70498..e21f530 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: printf '%s' "$GPG_PRIVATE_KEY" > $SIGNING_PRIVATE_KEY chmod 600 $SIGNING_PRIVATE_KEY - PKG_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name == "zorian") | .version') + PKG_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name == "recluse") | .version') export VERSION="${PKG_VERSION}~dev.$(git log -1 --format=%ct)" export ARCH=${{ matrix.arch }} @@ -182,9 +182,9 @@ jobs: # Update APT/RPM repos on s3 - name: Create APT repository run: | - aptly repo create -distribution=dev -component=main zorian - aptly repo add zorian dist/*.deb - aptly publish repo -architectures=amd64,arm64 -gpg-key="${{vars.GPG_KEY_ID}}" zorian + aptly repo create -distribution=dev -component=main recluse + aptly repo add recluse dist/*.deb + aptly publish repo -architectures=amd64,arm64 -gpg-key="${{vars.GPG_KEY_ID}}" recluse - name: Create RPM repository run: | mkdir -p rpm-repo diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 754514c..9430337 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -27,4 +27,4 @@ jobs: branch: "main" allowlist: mrdimidium path-to-signatures: "LICENSES/cla.json" - path-to-document: "https://github.com/mrdimidium/Zorian/blob/main/CLA.md" + path-to-document: "https://github.com/mrdimidium/recluse/blob/main/CLA.md" diff --git a/.gitignore b/.gitignore index 0575fa6..4d042ef 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ /target /dist -/.zorian-state +/.recluse-state diff --git a/CLA.md b/CLA.md index 03ff421..e1d891a 100644 --- a/CLA.md +++ b/CLA.md @@ -1,9 +1,9 @@ -# Zorian Grant and Contributor License Agreement +# Recluse Grant and Contributor License Agreement > This agreement is based on the Harmony Combined Contributor Agreement > Version 1.0 licensed under a [Creative Commons Attribution 3.0 Unported License](http://creativecommons.org/licenses/by/3.0/). -Thank you for your interest in contributing to Zorian ("We" or "Us"). In order +Thank you for your interest in contributing to Recluse ("We" or "Us"). In order to clarify the intellectual property license granted with Contributions from any person or entity, We must have a Contributor License Agreement ("CLA") on file that has been signed, accepted or otherwise agreed to by each contributor, diff --git a/Cargo.lock b/Cargo.lock index ee96265..5f7264a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1968,6 +1968,52 @@ dependencies = [ ] [[package]] +name = "recluse" +version = "0.1.0" +dependencies = [ + "async-trait", + "axum", + "axum-server", + "base", + "bytes", + "bytesize", + "chrono", + "crc32fast", + "hex", + "http-body-util", + "hyper", + "hyper-tls", + "hyper-util", + "maud", + "opentelemetry", + "opentelemetry-appender-tracing", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "repos", + "rustls", + "sd-notify", + "serde", + "serde_json", + "sqlx", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "toml", + "tonic", + "tower", + "tower-http", + "tower_governor", + "tracing", + "tracing-opentelemetry", + "tracing-subscriber", + "url", + "uuid", + "xtask", +] + +[[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3847,52 +3893,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" [[package]] -name = "zorian" -version = "0.1.0" -dependencies = [ - "async-trait", - "axum", - "axum-server", - "base", - "bytes", - "bytesize", - "chrono", - "crc32fast", - "hex", - "http-body-util", - "hyper", - "hyper-tls", - "hyper-util", - "maud", - "opentelemetry", - "opentelemetry-appender-tracing", - "opentelemetry-otlp", - "opentelemetry-semantic-conventions", - "opentelemetry_sdk", - "repos", - "rustls", - "sd-notify", - "serde", - "serde_json", - "sqlx", - "tempfile", - "thiserror 2.0.18", - "tokio", - "tokio-util", - "toml", - "tonic", - "tower", - "tower-http", - "tower_governor", - "tracing", - "tracing-opentelemetry", - "tracing-subscriber", - "url", - "uuid", - "xtask", -] - -[[package]] name = "zstd" version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/Cargo.toml b/Cargo.toml index d073fdc..7b1d537 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ version = "0.1.0" license = "AGPL-3.0-or-later" authors = ["Nikolay Govorov <me@govorov.online>"] homepage = "https://pkg.earth" -repository = "https://github.com/mrdimidium/Zorian" +repository = "https://github.com/mrdimidium/recluse" [workspace.dependencies] # local dependencies diff --git a/README.md b/README.md index 3e75d70..ff9ac52 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Zorian — tiny packages caching proxy +# Recluse — tiny packages caching proxy Soon humanity will go to Mars and in order for the colonists to be able to program, we will need a local mirror of packages. @@ -13,21 +13,21 @@ is **not** intended for production use. ```bash sudo apt install curl gnupg -curl -fsSL https://github.com/mrdimidium/Zorian/releases/download/dev/public.gpg | sudo gpg --dearmor -o /usr/share/keyrings/zorian.gpg -echo "deb [signed-by=/usr/share/keyrings/zorian.gpg] https://zorian.hel1.your-objectstorage.com/apt/ dev main" | sudo tee /etc/apt/sources.list.d/zorian.list -sudo apt update && sudo apt install zorian +curl -fsSL https://github.com/mrdimidium/recluse/releases/download/dev/public.gpg | sudo gpg --dearmor -o /usr/share/keyrings/recluse.gpg +echo "deb [signed-by=/usr/share/keyrings/recluse.gpg] https://recluse.hel1.your-objectstorage.com/apt/ dev main" | sudo tee /etc/apt/sources.list.d/recluse.list +sudo apt update && sudo apt install recluse -sudo systemctl enable --now zorian +sudo systemctl enable --now recluse ``` **Fedora/RedHat:** ```bash -sudo rpm --import https://github.com/mrdimidium/Zorian/releases/download/dev/public.gpg -sudo dnf config-manager --add-repo https://zorian.hel1.your-objectstorage.com/rpm/ -sudo dnf install zorian +sudo rpm --import https://github.com/mrdimidium/recluse/releases/download/dev/public.gpg +sudo dnf config-manager --add-repo https://recluse.hel1.your-objectstorage.com/rpm/ +sudo dnf install recluse -sudo systemctl enable --now zorian +sudo systemctl enable --now recluse ``` ## Build from source @@ -35,19 +35,19 @@ sudo systemctl enable --now zorian 1. Install build dependencies: - Fedora/RedHat: `sudo dnf install gcc openssl-devel pkg-config` - Debian/Ubuntu: `sudo apt install build-essential libssl-dev pkg-config` -1. Clone repo: `git clone https://github.com/mrdimidium/Zorian.git && cd Zorian` +1. Clone repo: `git clone https://github.com/mrdimidium/recluse.git && cd recluse` 1. Build from source: `cargo build --release` 1. Install manually ```bash - sudo groupadd --system zorian - sudo useradd --system --gid zorian --no-create-home --shell /usr/sbin/nologin zorian - sudo install -m 700 -o zorian ./pkg/zorian.toml /etc/ - sudo install -m 755 -o root ./pkg/zorian.service /usr/lib/systemd/system - sudo install -m 755 -o root target/release/zorian /usr/local/bin/ + sudo groupadd --system recluse + sudo useradd --system --gid recluse --no-create-home --shell /usr/sbin/nologin recluse + sudo install -m 700 -o recluse ./pkg/recluse.toml /etc/ + sudo install -m 755 -o root ./pkg/recluse.service /usr/lib/systemd/system + sudo install -m 755 -o root target/release/recluse /usr/local/bin/ ``` -1. start systemd service: `sudo systemctl enable --now zorian` +1. start systemd service: `sudo systemctl enable --now recluse` ## License diff --git a/REUSE.toml b/REUSE.toml index 105cb10..2f5e133 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -9,19 +9,19 @@ path = [ "pkg/*.svg", - "crates/zorian/src/assets/*.svg", - "crates/zorian/src/assets/*.ico", - "crates/zorian/src/assets/*.png", - "crates/zorian/src/assets/robots.txt", - "crates/zorian/src/assets/manifest.webmanifest", + "crates/recluse/src/assets/*.svg", + "crates/recluse/src/assets/*.ico", + "crates/recluse/src/assets/*.png", + "crates/recluse/src/assets/robots.txt", + "crates/recluse/src/assets/manifest.webmanifest", ] SPDX-FileCopyrightText = "2026 Nikolay Govorov <me@govorov.online>" SPDX-License-Identifier = "AGPL-3.0-or-later" [[annotations]] path = [ - "crates/zorian/src/assets/jetbrainsmono/OFL.txt", - "crates/zorian/src/assets/jetbrainsmono/*.woff2", + "crates/recluse/src/assets/jetbrainsmono/OFL.txt", + "crates/recluse/src/assets/jetbrainsmono/*.woff2", ] SPDX-FileCopyrightText = "Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)" SPDX-License-Identifier = "OFL-1.1" diff --git a/crates/zorian/Cargo.toml b/crates/recluse/Cargo.toml index 4317d22..0605867 100644 --- a/crates/zorian/Cargo.toml +++ b/crates/recluse/Cargo.toml @@ -2,8 +2,8 @@ # SPDX-License-Identifier: AGPL-3.0-or-later [package] -name = "zorian" -description = "Zorian web-server and daemon" +name = "recluse" +description = "recluse web-server and daemon" version.workspace = true authors.workspace = true diff --git a/crates/zorian/build.rs b/crates/recluse/build.rs index 36e1cd6..36e1cd6 100644 --- a/crates/zorian/build.rs +++ b/crates/recluse/build.rs diff --git a/crates/zorian/src/assets/apple-touch-icon.png b/crates/recluse/src/assets/apple-touch-icon.png index 0f6bb61..0f6bb61 100644 --- a/crates/zorian/src/assets/apple-touch-icon.png +++ b/crates/recluse/src/assets/apple-touch-icon.png Binary files differ diff --git a/crates/zorian/src/assets/base.css b/crates/recluse/src/assets/base.css index 3345768..3345768 100644 --- a/crates/zorian/src/assets/base.css +++ b/crates/recluse/src/assets/base.css diff --git a/crates/zorian/src/assets/favicon-192.png b/crates/recluse/src/assets/favicon-192.png index 0f6bb61..0f6bb61 100644 --- a/crates/zorian/src/assets/favicon-192.png +++ b/crates/recluse/src/assets/favicon-192.png Binary files differ diff --git a/crates/zorian/src/assets/favicon-512.png b/crates/recluse/src/assets/favicon-512.png index 49cd3cd..49cd3cd 100644 --- a/crates/zorian/src/assets/favicon-512.png +++ b/crates/recluse/src/assets/favicon-512.png Binary files differ diff --git a/crates/zorian/src/assets/favicon.ico b/crates/recluse/src/assets/favicon.ico index 093e50b..093e50b 100644 --- a/crates/zorian/src/assets/favicon.ico +++ b/crates/recluse/src/assets/favicon.ico Binary files differ diff --git a/crates/zorian/src/assets/favicon.svg b/crates/recluse/src/assets/favicon.svg index ed7cc17..ed7cc17 100644 --- a/crates/zorian/src/assets/favicon.svg +++ b/crates/recluse/src/assets/favicon.svg diff --git a/crates/zorian/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 index 98adc80..98adc80 100644 --- a/crates/zorian/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 +++ b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 Binary files differ diff --git a/crates/zorian/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 index 4cd1413..4cd1413 100644 --- a/crates/zorian/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 +++ b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 Binary files differ diff --git a/crates/zorian/src/assets/manifest.webmanifest b/crates/recluse/src/assets/manifest.webmanifest index 53f9612..2277253 100644 --- a/crates/zorian/src/assets/manifest.webmanifest +++ b/crates/recluse/src/assets/manifest.webmanifest @@ -1,5 +1,5 @@ { - "name": "Zorian", + "name": "recluse", "icons": [ { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }, { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" }, diff --git a/crates/zorian/src/assets/robots.txt b/crates/recluse/src/assets/robots.txt index 2fe8da2..2fe8da2 100644 --- a/crates/zorian/src/assets/robots.txt +++ b/crates/recluse/src/assets/robots.txt diff --git a/crates/zorian/src/config.rs b/crates/recluse/src/config.rs index 79da442..3239aa2 100644 --- a/crates/zorian/src/config.rs +++ b/crates/recluse/src/config.rs @@ -240,8 +240,8 @@ pub struct ConfigService { impl Default for ConfigService { fn default() -> Self { Self { - appname: "zorian".to_string(), - dirname: PathBuf::from("./.zorian-state"), + appname: "recluse".to_string(), + dirname: PathBuf::from("./.recluse-state"), listen: vec![ListenerConfig::default()], server: ServerConfig::default(), telemetry: TelemetryConfig::default(), @@ -410,13 +410,13 @@ mod tests { #[test] fn test_load_none_defaults() { let temp = TempDir::new().unwrap(); - let state = temp.path().join(".zorian-state"); + let state = temp.path().join(".recluse-state"); std::fs::create_dir_all(&state).unwrap(); let cwd = std::env::current_dir().unwrap(); std::env::set_current_dir(temp.path()).unwrap(); let cfg = ConfigService::load(None).unwrap(); - assert_eq!(cfg.appname(), "zorian"); + assert_eq!(cfg.appname(), "recluse"); std::env::set_current_dir(cwd).unwrap(); } diff --git a/crates/zorian/src/controller_backend.rs b/crates/recluse/src/controller_backend.rs index d14d93b..d14d93b 100644 --- a/crates/zorian/src/controller_backend.rs +++ b/crates/recluse/src/controller_backend.rs diff --git a/crates/zorian/src/controller_web.rs b/crates/recluse/src/controller_web.rs index ebd9ce1..6d4d176 100644 --- a/crates/zorian/src/controller_web.rs +++ b/crates/recluse/src/controller_web.rs @@ -167,9 +167,9 @@ impl WebController { }; WebController::layout( - "Zorian — tiny & opinionated packages mirror", + "Recluse — tiny & opinionated packages mirror", html! { - h1 { "Zorian — tiny & opinionated packages mirror." } + h1 { "Recluse — tiny & opinionated packages mirror." } p { r#"This site provides a caching proxy for downloading Zig and Go installation files. @@ -177,8 +177,8 @@ impl WebController { } p { - "Zorian is open source software licensed under " a href="https://www.gnu.org/licenses/agpl-3.0.html" { "AGPL-3.0" } ". " - "Source code is available on " a href="https://github.com/mrdimidium/zorian" { "GitHub" } ". " + "Recluse is open source software licensed under " a href="https://www.gnu.org/licenses/agpl-3.0.html" { "AGPL-3.0" } ". " + "Source code is available on " a href="https://github.com/mrdimidium/recluse" { "GitHub" } ". " "A list of dependency licenses " a href="/about/licenses" { "is available" } "." } @@ -323,19 +323,19 @@ impl WebController { html! { h1 { "Licenses" } - h2 { "Zorian" } + h2 { "Recluse" } p { - "Zorian is licensed under the " b { "GNU Affero General Public License v3.0 (AGPL-3.0)" } ". " + "Recluse is licensed under the " b { "GNU Affero General Public License v3.0 (AGPL-3.0)" } ". " "This means you are free to use, modify, and distribute the software. " - "If you run a modified version of Zorian as a network service, " + "If you run a modified version of Recluse as a network service, " "you must make the source code of your modifications available to its users. " "The software is provided as-is, without warranty of any kind." } p { "Source code is available on " - a href="https://github.com/mrdimidium/zorian" { "GitHub" } + a href="https://github.com/mrdimidium/recluse" { "GitHub" } ". The full license text is included below." } diff --git a/crates/zorian/src/main.rs b/crates/recluse/src/main.rs index c43c9d6..27f3824 100644 --- a/crates/zorian/src/main.rs +++ b/crates/recluse/src/main.rs @@ -82,7 +82,7 @@ async fn run_index_refresh<S: BackendSpec>( const VERSION: &str = env!("CARGO_PKG_VERSION"); const HELP: &str = "\ -Usage: zorian [--config=<path>] +Usage: recluse [--config=<path>] Options: --config=<path> Path to config file (optional) @@ -134,7 +134,7 @@ async fn main() { return; } if arg == "--version" || arg == "-V" { - println!("zorian {VERSION}"); + println!("recluse {VERSION}"); return; } if let Some(path) = arg.strip_prefix("--config=") { @@ -155,7 +155,7 @@ async fn main() { let storage = Arc::new(storage::StorageService::new(config.clone()).await.unwrap()); let network = Arc::new(proxy::ProxyService::new()); - let source = format!("zorian:{}", config.appname()); + let source = format!("recluse:{}", config.appname()); let backends = config.backends(); const REQUEST_ID_HEADER: http::HeaderName = http::HeaderName::from_static("x-request-id"); @@ -331,7 +331,7 @@ async fn main() { )) .layer(tower_http::set_header::SetResponseHeaderLayer::overriding( http::header::SERVER, - http::HeaderValue::from_static(concat!("zorian/", env!("CARGO_PKG_VERSION"))), + http::HeaderValue::from_static(concat!("recluse/", env!("CARGO_PKG_VERSION"))), )); let mut tasks = tokio::task::JoinSet::new(); diff --git a/crates/zorian/src/proxy.rs b/crates/recluse/src/proxy.rs index bd6a0f4..9a2c73d 100644 --- a/crates/zorian/src/proxy.rs +++ b/crates/recluse/src/proxy.rs @@ -40,7 +40,7 @@ impl ProxyService { let request = Request::builder() .method(http::Method::GET) .uri(request.url.as_str()) - .header(http::header::USER_AGENT, "zorian/0.1") + .header(http::header::USER_AGENT, "recluse/0.1") .body(Empty::<Bytes>::new()) .unwrap(); diff --git a/crates/zorian/src/storage.rs b/crates/recluse/src/storage.rs index 0e7f3ac..0e7f3ac 100644 --- a/crates/zorian/src/storage.rs +++ b/crates/recluse/src/storage.rs diff --git a/crates/zorian/src/telemetry.rs b/crates/recluse/src/telemetry.rs index 116a7d0..b805483 100644 --- a/crates/zorian/src/telemetry.rs +++ b/crates/recluse/src/telemetry.rs @@ -102,9 +102,9 @@ impl Drop for TelemetryService { } impl TelemetryService { pub fn init(config: &TelemetryConfig, service_name: &str, service_version: &str) -> Self { - let env_filter = match std::env::var_os("ZORIAN_LOG") { + let env_filter = match std::env::var_os("RECLUSE_LOG") { Some(val) => tracing_subscriber::EnvFilter::try_new(val.to_string_lossy()) - .expect("Invalid ZORIAN_LOG"), + .expect("Invalid RECLUSE_LOG"), None => tracing_subscriber::EnvFilter::new(Self::log_level_to_filter( config.stdout.log_level, )), diff --git a/crates/repos/src/go.rs b/crates/repos/src/go.rs index d591e7d..2637d79 100644 --- a/crates/repos/src/go.rs +++ b/crates/repos/src/go.rs @@ -487,10 +487,10 @@ mod tests_go_filename { upstream: Url::parse("https://dl.google.com/go/").unwrap(), ..Default::default() }; - let url = t.upstream_url(&config, "zorian:test").unwrap(); + let url = t.upstream_url(&config, "recluse:test").unwrap(); assert_eq!( url.as_str(), - "https://dl.google.com/go/go1.25.6.linux-amd64.tar.gz?source=zorian%3Atest" + "https://dl.google.com/go/go1.25.6.linux-amd64.tar.gz?source=recluse%3Atest" ); } diff --git a/deny.toml b/deny.toml index f9d0ba0..797da56 100644 --- a/deny.toml +++ b/deny.toml @@ -25,8 +25,8 @@ exceptions = [ { crate = "xtask", allow = ["AGPL-3.0-or-later"] }, { crate = "base", allow = ["AGPL-3.0-or-later"] }, { crate = "repos", allow = ["AGPL-3.0-or-later"] }, - { crate = "zorian", allow = ["AGPL-3.0-or-later"] }, { crate = "smoke", allow = ["AGPL-3.0-or-later"] }, + { crate = "recluse", allow = ["AGPL-3.0-or-later"] }, ] unused-allowed-license = "allow" diff --git a/nfpm.yaml b/nfpm.yaml index 262bde9..390cd89 100644 --- a/nfpm.yaml +++ b/nfpm.yaml @@ -4,7 +4,7 @@ # yaml-language-server: $schema=https://nfpm.goreleaser.com/schema.json # vim: set ts=2 sw=2 tw=0 fo=cnqoj -name: zorian +name: recluse arch: ${ARCH} version: ${VERSION} license: AGPL-3.0-or-later @@ -14,34 +14,34 @@ description: Tiny packages caching proxy contents: - src: ./LICENSE - dst: /usr/share/doc/zorian/LICENSE + dst: /usr/share/doc/recluse/LICENSE - src: ./README.md - dst: /usr/share/doc/zorian/README.md + dst: /usr/share/doc/recluse/README.md - - src: target/release/zorian - dst: /usr/local/bin/zorian + - src: target/release/recluse + dst: /usr/local/bin/recluse file_info: mode: 0755 - - src: pkg/zorian.toml - dst: /etc/zorian.toml + - src: pkg/recluse.toml + dst: /etc/recluse.toml type: config|noreplace file_info: mode: 0640 owner: root - group: zorian + group: recluse - - src: pkg/zorian.service - dst: /usr/lib/systemd/system/zorian.service + - src: pkg/recluse.service + dst: /usr/lib/systemd/system/recluse.service file_info: mode: 0644 - - dst: /var/lib/zorian + - dst: /var/lib/recluse type: dir file_info: mode: 0755 owner: root - group: zorian + group: recluse scripts: diff --git a/pkg/zorian.service b/pkg/recluse.service index 64f34b5..caf75db 100644 --- a/pkg/zorian.service +++ b/pkg/recluse.service @@ -2,21 +2,21 @@ # SPDX-License-Identifier: AGPL-3.0-or-later [Unit] -Description=Zorian server (tiny packages caching proxy) +Description=recluse server (tiny packages caching proxy) Requires=network-online.target After=time-sync.target network-online.target remote-fs.target nss-lookup.target Wants=time-sync.target [Service] Type=notify -User=zorian -Group=zorian +User=recluse +Group=recluse Restart=always RestartSec=30 WatchdogSec=30 NotifyAccess=main -ExecPaths=/usr/local/bin/zorian /usr/lib -ExecStart=/usr/local/bin/zorian --config=/etc/zorian.toml +ExecPaths=/usr/local/bin/recluse /usr/lib +ExecStart=/usr/local/bin/recluse --config=/etc/recluse.toml LimitCORE=infinity LimitNOFILE=500000 AmbientCapabilities=CAP_NET_BIND_SERVICE diff --git a/pkg/zorian.toml b/pkg/recluse.toml index 0fde186..ecda215 100644 --- a/pkg/zorian.toml +++ b/pkg/recluse.toml @@ -1,13 +1,13 @@ # SPDX-FileCopyrightText: 2026 Nikolay Govorov <me@govorov.online> # SPDX-License-Identifier: AGPL-3.0-or-later -# Zorian will dutifully indicate its user agent and protocols (for example, source for zig). +# recluse will dutifully indicate its user agent and protocols (for example, source for zig). # Specify your name if you want your instance to be identified. -appname="zorian" +appname="recluse" # Path to the directory for storing state (indexes, caches, statistics). # Must be a writable directory. -dirname="/var/lib/zorian" +dirname="/var/lib/recluse" # Common server settings [server] @@ -25,8 +25,8 @@ addr = "0.0.0.0:2025" hostnames = ["localhost", "127.0.0.1", "::1"] # For HTTPS, set tls_cert and tls_key to PEM file paths. -# tls_crt = "/etc/zorian/cert.pem" -# tls_key = "/etc/zorian/key.pem" +# tls_crt = "/etc/recluse/cert.pem" +# tls_key = "/etc/recluse/key.pem" # Telemetry configuration # Logs to stdout (pretty or json format) @@ -47,13 +47,13 @@ log_format = "pretty" # pretty, json # log_level = "info" # # # For gRPC with TLS, specify certificates: -# # tls_ca = "/etc/zorian/otel-ca.crt" -# # tls_crt = "/etc/zorian/otel-client.crt" # for mTLS -# # tls_key = "/etc/zorian/otel-client.key" # for mTLS +# # tls_ca = "/etc/recluse/otel-ca.crt" +# # tls_crt = "/etc/recluse/otel-client.crt" # for mTLS +# # tls_key = "/etc/recluse/otel-client.key" # for mTLS # # # HTTP headers for authentication: # # [telemetry.otelcol.headers] # # Authorization = "Bearer <token>" -# Environment variable ZORIAN_LOG overrides log_level settings. -# Example: ZORIAN_LOG=debug,sqlx=warn +# Environment variable RECLUSE_LOG overrides log_level settings. +# Example: RECLUSE_LOG=debug,sqlx=warn diff --git a/pkg/scripts/postinstall.sh b/pkg/scripts/postinstall.sh index 8a1e7cf..fe717a3 100644 --- a/pkg/scripts/postinstall.sh +++ b/pkg/scripts/postinstall.sh @@ -4,7 +4,7 @@ set -e -if [ -x "/bin/systemctl" ] && [ -d /run/systemd/system ] && [ -f /usr/lib/systemd/system/zorian.service ]; then +if [ -x "/bin/systemctl" ] && [ -d /run/systemd/system ] && [ -f /usr/lib/systemd/system/recluse.service ]; then /bin/systemctl daemon-reload - /bin/systemctl enable zorian + /bin/systemctl enable recluse fi diff --git a/pkg/scripts/preinstall.sh b/pkg/scripts/preinstall.sh index 2828c95..7f0e0de 100644 --- a/pkg/scripts/preinstall.sh +++ b/pkg/scripts/preinstall.sh @@ -4,14 +4,14 @@ set -e -PROGRAM=zorian -ZORIAN_USER=${ZORIAN_USER:-zorian} -ZORIAN_GROUP=${ZORIAN_GROUP:-${ZORIAN_USER}} +PROGRAM=recluse +RECLUSE_USER=${RECLUSE_USER:-recluse} +RECLUSE_GROUP=${RECLUSE_GROUP:-${RECLUSE_USER}} -if ! getent group $ZORIAN_GROUP >/dev/null; then - groupadd --system $ZORIAN_GROUP +if ! getent group $RECLUSE_GROUP >/dev/null; then + groupadd --system $RECLUSE_GROUP fi -if ! getent passwd $ZORIAN_USER >/dev/null; then - useradd --system --gid $ZORIAN_GROUP --no-create-home --shell /usr/sbin/nologin $ZORIAN_USER +if ! getent passwd $RECLUSE_USER >/dev/null; then + useradd --system --gid $RECLUSE_GROUP --no-create-home --shell /usr/sbin/nologin $RECLUSE_USER fi diff --git a/pkg/scripts/preremove.sh b/pkg/scripts/preremove.sh index 87c062a..3e69d06 100644 --- a/pkg/scripts/preremove.sh +++ b/pkg/scripts/preremove.sh @@ -4,7 +4,7 @@ set -e -if [ -x "/bin/systemctl" ] && [ -d /run/systemd/system ] && [ -f /usr/lib/systemd/system/zorian.service ]; then - /bin/systemctl stop zorian.service || true - /bin/systemctl disable zorian.service || true +if [ -x "/bin/systemctl" ] && [ -d /run/systemd/system ] && [ -f /usr/lib/systemd/system/recluse.service ]; then + /bin/systemctl stop recluse.service || true + /bin/systemctl disable recluse.service || true fi diff --git a/tests/smoke/run-local.sh b/tests/smoke/run-local.sh index 4117271..32193dd 100755 --- a/tests/smoke/run-local.sh +++ b/tests/smoke/run-local.sh @@ -2,27 +2,27 @@ # SPDX-FileCopyrightText: 2026 Nikolay Govorov <me@govorov.online> # SPDX-License-Identifier: AGPL-3.0-or-later -# Builds zorian, starts it in a temporary directory, runs smoke tests, cleans up. +# Builds recluse, starts it in a temporary directory, runs smoke tests, cleans up. # # Usage: # ./tests/smoke/run-local.sh # default port 2025 -# ZORIAN_PORT=9999 ./tests/smoke/run-local.sh +# RECLUSE_PORT=9999 ./tests/smoke/run-local.sh set -euo pipefail -PORT="${ZORIAN_PORT:-2025}" +PORT="${RECLUSE_PORT:-2025}" BASE_URL="http://127.0.0.1:${PORT}" TMPDIR="$(mktemp -d)" -LOGFILE="$TMPDIR/zorian.log" +LOGFILE="$TMPDIR/recluse.log" trap 'kill "$PID" 2>/dev/null; wait "$PID" 2>/dev/null; rm -rf "$TMPDIR"' EXIT # Build -echo "Building zorian..." -cargo build --release -p zorian +echo "Building recluse..." +cargo build --release -p recluse # Write minimal config -cat > "$TMPDIR/zorian.toml" <<EOF +cat > "$TMPDIR/recluse.toml" <<EOF appname = "smoke" dirname = "$TMPDIR/state" @@ -46,10 +46,10 @@ EOF mkdir -p "$TMPDIR/state" -# Start zorian -echo "Starting zorian on ${BASE_URL}..." +# Start recluse +echo "Starting recluse on ${BASE_URL}..." echo "Server log: ${LOGFILE}" -cargo run --release -p zorian -- --config="$TMPDIR/zorian.toml" >"$LOGFILE" 2>&1 & +cargo run --release -p recluse -- --config="$TMPDIR/recluse.toml" >"$LOGFILE" 2>&1 & PID=$! # Wait for index to load (log shows "index refreshed" for each backend) @@ -60,7 +60,7 @@ for i in $(seq 1 120); do break fi if ! kill -0 "$PID" 2>/dev/null; then - echo "zorian exited unexpectedly. Server log:" + echo "recluse exited unexpectedly. Server log:" cat "$LOGFILE" exit 1 fi @@ -74,4 +74,4 @@ if ! grep -q "index refreshed" "$LOGFILE" 2>/dev/null; then fi # Run smoke tests -ZORIAN_URL="${BASE_URL}" cargo run -p smoke +RECLUSE_URL="${BASE_URL}" cargo run -p smoke diff --git a/tests/smoke/src/main.rs b/tests/smoke/src/main.rs index 93a914b..f94af25 100644 --- a/tests/smoke/src/main.rs +++ b/tests/smoke/src/main.rs @@ -1,13 +1,13 @@ // SPDX-FileCopyrightText: 2026 Nikolay Govorov <me@govorov.online> // SPDX-License-Identifier: AGPL-3.0-or-later -// Black-box smoke tests for Zorian. +// Black-box smoke tests for Recluse. // -// Downloads archives from Zorian and upstream, compares sha256 hashes, +// Downloads archives from Recluse and upstream, compares sha256 hashes, // verifies that minisig signatures (Zig) and sha256 checksums (Go) match upstream. // // Usage: -// ZORIAN_URL=https://pkg.earth cargo run -p smoke +// RECLUSE_URL=https://pkg.earth cargo run -p smoke use sha2::{Digest, Sha256}; @@ -198,8 +198,8 @@ fn test_web(r: &mut Runner, base_url: &str) { r.fail(name, &format!("status {status}, expected 200")); } else if !ct.contains("text/html") { r.fail(name, &format!("content-type: {ct}")); - } else if !body.contains("Zorian") { - r.fail(name, "body missing \"Zorian\""); + } else if !body.contains("Recluse") { + r.fail(name, "body missing \"Recluse\""); } else { r.ok(name); } @@ -274,11 +274,11 @@ fn test_go(r: &mut Runner, base_url: &str) { r.fetch_bytes(&format!("{base_url}/go/{file}")), r.fetch_bytes(&format!("https://go.dev/dl/{file}")), ) { - (Ok(zorian), Ok(upstream)) => { - let zh = sha256hex(&zorian); + (Ok(recluse), Ok(upstream)) => { + let zh = sha256hex(&recluse); let uh = sha256hex(&upstream); if zh != uh { - r.fail(&name, &format!("zorian={zh} upstream={uh}")); + r.fail(&name, &format!("recluse={zh} upstream={uh}")); } else { r.ok(&name); } @@ -332,11 +332,11 @@ fn test_zig(r: &mut Runner, base_url: &str) { r.fetch_bytes(&format!("{base_url}/zig/{}", entry.file)), r.fetch_bytes(&zig_upstream_url(entry.file, entry.version)), ) { - (Ok(zorian), Ok(upstream)) => { - let zh = sha256hex(&zorian); + (Ok(recluse), Ok(upstream)) => { + let zh = sha256hex(&recluse); let uh = sha256hex(&upstream); if zh != uh { - r.fail(&name, &format!("zorian={zh} upstream={uh}")); + r.fail(&name, &format!("recluse={zh} upstream={uh}")); } else { r.ok(&name); } @@ -348,11 +348,11 @@ fn test_zig(r: &mut Runner, base_url: &str) { // Signature: compare .minisig with upstream { let name = format!("zig: {}.minisig matches upstream", entry.file); - let zorian_url = format!("{base_url}/zig/{}.minisig", entry.file); + let recluse_url = format!("{base_url}/zig/{}.minisig", entry.file); let upstream_url = format!("{}.minisig", zig_upstream_url(entry.file, entry.version)); - match (r.fetch_bytes(&zorian_url), r.fetch_bytes(&upstream_url)) { - (Ok(zorian), Ok(upstream)) => { - if zorian != upstream { + match (r.fetch_bytes(&recluse_url), r.fetch_bytes(&upstream_url)) { + (Ok(recluse), Ok(upstream)) => { + if recluse != upstream { r.fail(&name, "minisig content differs from upstream"); } else { r.ok(&name); @@ -374,11 +374,11 @@ fn test_zig(r: &mut Runner, base_url: &str) { } fn main() { - let base_url = match std::env::var("ZORIAN_URL") { + let base_url = match std::env::var("RECLUSE_URL") { Ok(url) => url, Err(_) => { - eprintln!("Error: ZORIAN_URL environment variable is not set."); - eprintln!("Usage: ZORIAN_URL=https://pkg.earth cargo run -p smoke"); + eprintln!("Error: RECLUSE_URL environment variable is not set."); + eprintln!("Usage: RECLUSE_URL=https://pkg.earth cargo run -p smoke"); std::process::exit(1); } }; diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 786eafc..333e3a4 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -6,7 +6,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { match args.first().map(|s| s.as_str()) { Some("licenses") => { - let json = xtask::licenses::generate_json("crates/zorian/Cargo.toml")?; + let json = xtask::licenses::generate_json("crates/recluse/Cargo.toml")?; println!("{json}"); Ok(()) } |
