aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat
-rw-r--r--.github/workflows/build.yml8+4 −4
-rw-r--r--.github/workflows/cla.yml2+1 −1
-rw-r--r--.gitignore2+1 −1
-rw-r--r--CLA.md4+2 −2
-rw-r--r--Cargo.lock92+46 −46
-rw-r--r--Cargo.toml2+1 −1
-rw-r--r--README.md32+16 −16
-rw-r--r--REUSE.toml14+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)bin715 -> 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)bin715 -> 715 bytes
-rw-r--r--crates/recluse/src/assets/favicon-512.png (renamed from crates/zorian/src/assets/favicon-512.png)bin2329 -> 2329 bytes
-rw-r--r--crates/recluse/src/assets/favicon.ico (renamed from crates/zorian/src/assets/favicon.ico)bin32038 -> 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)bin122452 -> 122452 bytes
-rw-r--r--crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 (renamed from crates/zorian/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2)bin113700 -> 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.rs4+2 −2
-rw-r--r--deny.toml2+1 −1
-rw-r--r--nfpm.yaml24+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.sh4+2 −2
-rw-r--r--pkg/scripts/preinstall.sh14+7 −7
-rw-r--r--pkg/scripts/preremove.sh6+3 −3
-rwxr-xr-xtests/smoke/run-local.sh24+12 −12
-rw-r--r--tests/smoke/src/main.rs36+18 −18
-rw-r--r--xtask/src/main.rs2+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(())
}