aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat
-rw-r--r--.dockerignore2+1 −1
-rw-r--r--.github/workflows/build.yml20+10 −10
-rw-r--r--.gitignore2+1 −1
-rw-r--r--CLA.md4+2 −2
-rw-r--r--Cargo.lock90+45 −45
-rw-r--r--Cargo.toml2+1 −1
-rw-r--r--Dockerfile18+9 −9
-rw-r--r--README.md38+19 −19
-rw-r--r--REUSE.toml16+8 −8
-rw-r--r--charts/recluse/Chart.yaml (renamed from charts/tesor/Chart.yaml)4+2 −2
-rw-r--r--charts/recluse/templates/_helpers.tpl (renamed from charts/tesor/templates/_helpers.tpl)16+8 −8
-rw-r--r--charts/recluse/templates/configmap.yaml (renamed from charts/tesor/templates/configmap.yaml)8+4 −4
-rw-r--r--charts/recluse/templates/deployment.yaml (renamed from charts/tesor/templates/deployment.yaml)24+12 −12
-rw-r--r--charts/recluse/templates/httproute.yaml (renamed from charts/tesor/templates/httproute.yaml)6+3 −3
-rw-r--r--charts/recluse/templates/pvc.yaml (renamed from charts/tesor/templates/pvc.yaml)4+2 −2
-rw-r--r--charts/recluse/templates/service.yaml (renamed from charts/tesor/templates/service.yaml)6+3 −3
-rw-r--r--charts/recluse/values.yaml (renamed from charts/tesor/values.yaml)4+2 −2
-rw-r--r--crates/recluse/Cargo.toml (renamed from crates/tesor/Cargo.toml)4+2 −2
-rw-r--r--crates/recluse/build.rs (renamed from crates/tesor/build.rs)0+0 −0
-rw-r--r--crates/recluse/src/assets/apple-touch-icon.png (renamed from crates/tesor/src/assets/apple-touch-icon.png)bin715 -> 715 bytes
-rw-r--r--crates/recluse/src/assets/base.css (renamed from crates/tesor/src/assets/base.css)0+0 −0
-rw-r--r--crates/recluse/src/assets/favicon-192.png (renamed from crates/tesor/src/assets/favicon-192.png)bin715 -> 715 bytes
-rw-r--r--crates/recluse/src/assets/favicon-512.png (renamed from crates/tesor/src/assets/favicon-512.png)bin2329 -> 2329 bytes
-rw-r--r--crates/recluse/src/assets/favicon.ico (renamed from crates/tesor/src/assets/favicon.ico)bin32038 -> 32038 bytes
-rw-r--r--crates/recluse/src/assets/favicon.svg (renamed from crates/tesor/src/assets/favicon.svg)0+0 −0
-rw-r--r--crates/recluse/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 (renamed from crates/tesor/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2)bin122452 -> 122452 bytes
-rw-r--r--crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 (renamed from crates/tesor/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2)bin113700 -> 113700 bytes
-rw-r--r--crates/recluse/src/assets/manifest.webmanifest (renamed from crates/tesor/src/assets/manifest.webmanifest)2+1 −1
-rw-r--r--crates/recluse/src/assets/robots.txt (renamed from crates/tesor/src/assets/robots.txt)0+0 −0
-rw-r--r--crates/recluse/src/config.rs (renamed from crates/tesor/src/config.rs)8+4 −4
-rw-r--r--crates/recluse/src/controller_backend.rs (renamed from crates/tesor/src/controller_backend.rs)0+0 −0
-rw-r--r--crates/recluse/src/controller_web.rs (renamed from crates/tesor/src/controller_web.rs)16+8 −8
-rw-r--r--crates/recluse/src/main.rs (renamed from crates/tesor/src/main.rs)8+4 −4
-rw-r--r--crates/recluse/src/proxy.rs (renamed from crates/tesor/src/proxy.rs)2+1 −1
-rw-r--r--crates/recluse/src/storage.rs (renamed from crates/tesor/src/storage.rs)0+0 −0
-rw-r--r--crates/recluse/src/telemetry.rs (renamed from crates/tesor/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--mise.toml2+1 −1
-rw-r--r--nfpm.yaml24+12 −12
-rw-r--r--pkg/recluse.service (renamed from pkg/tesor.service)10+5 −5
-rw-r--r--pkg/recluse.toml (renamed from pkg/tesor.toml)20+10 −10
-rw-r--r--pkg/scripts/postinstall.sh4+2 −2
-rw-r--r--pkg/scripts/preinstall.sh12+6 −6
-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
47 files changed, 226 insertions, 226 deletions
diff --git a/.dockerignore b/.dockerignore
index 373529b..90a5968 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -3,7 +3,7 @@
.git
.github
-.tesor-state
+.recluse-state
dist
target
*.lcov
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4078821..07dadb3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -14,7 +14,7 @@ permissions:
contents: read
concurrency:
- group: tesor-build-${{ github.ref }}
+ group: recluse-build-${{ github.ref }}
cancel-in-progress: true
env:
@@ -72,11 +72,11 @@ jobs:
- run: cargo clippy --workspace --locked --all-targets --all-features --release -- -D warnings
- run: cargo test --all-features --release --locked
- - run: cargo build --package tesor --bin tesor --release --locked
+ - run: cargo build --package recluse --bin recluse --release --locked
- name: Build packages
run: |
- PKG_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name == "tesor") | .version')
+ PKG_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name == "recluse") | .version')
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
VERSION="${GITHUB_REF_NAME#v}"
if [[ "$VERSION" != "$PKG_VERSION" ]]; then
@@ -114,7 +114,7 @@ jobs:
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: binary-${{ matrix.arch }}
- path: target/release/tesor
+ path: target/release/recluse
smoke:
name: Smoke tests
@@ -138,7 +138,7 @@ jobs:
- name: Run smoke tests against local instance
run: |
- chmod +x target/release/tesor
+ chmod +x target/release/recluse
./tests/smoke/run-local.sh
publish:
@@ -146,7 +146,7 @@ jobs:
runs-on: ubuntu-latest
needs: [build, smoke]
concurrency:
- group: package-publish-tesor-nightly
+ group: package-publish-recluse-nightly
cancel-in-progress: false
if: github.ref == 'refs/heads/main'
permissions:
@@ -199,7 +199,7 @@ jobs:
- name: Publish package repositories
run: |
mise run publish -- \
- --service tesor \
+ --service recluse \
--channel nightly \
--input dist \
deb rpm
@@ -275,7 +275,7 @@ jobs:
shell: bash
run: |
version="${{ steps.artifact.outputs.version }}"
- image="ghcr.io/${GITHUB_REPOSITORY_OWNER,,}/tesor"
+ image="ghcr.io/${GITHUB_REPOSITORY_OWNER,,}/recluse"
tags=(
--tag "$image:sha-$GITHUB_SHA"
--tag "$image:$version"
@@ -302,11 +302,11 @@ jobs:
--context . \
--file Dockerfile \
--platform linux/amd64,linux/arm64 \
- --cache-scope tesor \
+ --cache-scope recluse \
"${tags[@]}" "${labels[@]}" "${image_output[@]}"
mise run chart -- \
- --chart charts/tesor \
+ --chart charts/recluse \
--version "$version" \
--app-version "$version" \
"${chart_output[@]}"
diff --git a/.gitignore b/.gitignore
index 2c7fb07..ef36af8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,4 @@ mise.local.toml
mise.*.local.toml
/.container
-/.tesor-state
+/.recluse-state
diff --git a/CLA.md b/CLA.md
index c0418c8..f8240f7 100644
--- a/CLA.md
+++ b/CLA.md
@@ -1,4 +1,4 @@
-# Tesor Individual Contributor License Agreement
+# Recluse Individual Contributor License Agreement
Version 1.0
@@ -6,7 +6,7 @@ Version 1.0
> Agreement Version 1.0 licensed under a
> [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).
-Thank you for your interest in contributing to Tesor (the "Project"). In this
+Thank you for your interest in contributing to Recluse (the "Project"). In this
Agreement, "We" and "Us" mean Nikolay Govorov.
This contributor agreement ("Agreement") documents the rights granted by
diff --git a/Cargo.lock b/Cargo.lock
index d2e2df0..94f3647 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1913,6 +1913,51 @@ 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",
+]
+
+[[package]]
name = "redox_syscall"
version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2691,51 +2736,6 @@ dependencies = [
]
[[package]]
-name = "tesor"
-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",
-]
-
-[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 19cca99..06e3c86 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://git.dimidiumlabs.io/tesor"
+repository = "https://github.com/dimidiumlabs/recluse"
[workspace.dependencies]
# local dependencies
diff --git a/Dockerfile b/Dockerfile
index d82aa9e..e4f4141 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,23 +7,23 @@ ARG ALPINE_DIGEST=sha256:fd791d74b68913cbb027c6546007b3f0d3bc45125f797758156952b
ARG DISTROLESS_DIGEST=sha256:a77defd6fedbb3392b175ba8ea3d1c22be963c1597c248c3ba987ddd80bfb512
FROM --platform=$BUILDPLATFORM docker.io/library/alpine:${ALPINE_VERSION}@${ALPINE_DIGEST} AS rootfs
-RUN install -d -m 0750 /rootfs/var/lib/tesor
+RUN install -d -m 0750 /rootfs/var/lib/recluse
FROM gcr.io/distroless/cc-debian13:nonroot@${DISTROLESS_DIGEST}
ARG TARGETARCH
-LABEL org.opencontainers.image.source="https://git.dimidiumlabs.io/tesor" \
+LABEL org.opencontainers.image.source="https://github.com/dimidiumlabs/recluse" \
org.opencontainers.image.licenses="AGPL-3.0-or-later"
-COPY --chown=root:root --chmod=0755 .container/binary-${TARGETARCH}/tesor /usr/local/bin/tesor
-COPY --from=rootfs --chown=10000:10000 /rootfs/var/lib/tesor /var/lib/tesor
-COPY --chown=root:root pkg/tesor.toml /etc/tesor.toml
-COPY --chown=root:root LICENSE README.md /usr/share/doc/tesor/
+COPY --chown=root:root --chmod=0755 .container/binary-${TARGETARCH}/recluse /usr/local/bin/recluse
+COPY --from=rootfs --chown=10000:10000 /rootfs/var/lib/recluse /var/lib/recluse
+COPY --chown=root:root pkg/recluse.toml /etc/recluse.toml
+COPY --chown=root:root LICENSE README.md /usr/share/doc/recluse/
USER 10000:10000
EXPOSE 2000
-VOLUME ["/var/lib/tesor"]
+VOLUME ["/var/lib/recluse"]
-ENTRYPOINT ["/usr/local/bin/tesor"]
-CMD ["--config=/etc/tesor.toml"]
+ENTRYPOINT ["/usr/local/bin/recluse"]
+CMD ["--config=/etc/recluse.toml"]
diff --git a/README.md b/README.md
index 2c51ae4..fa4cfee 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Tesor — 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.
@@ -14,52 +14,52 @@ is **not** intended for production use.
sudo apt install curl gnupg
curl -fsSL https://pkg.dimidiumlabs.io/packages.gpg | sudo gpg --dearmor -o /usr/share/keyrings/dimidiumlabs.gpg
-echo "deb [signed-by=/usr/share/keyrings/dimidiumlabs.gpg] https://pkg.dimidiumlabs.io/tesor/apt/ nightly main" | sudo tee /etc/apt/sources.list.d/tesor.list
-sudo apt update && sudo apt install tesor
+echo "deb [signed-by=/usr/share/keyrings/dimidiumlabs.gpg] https://pkg.dimidiumlabs.io/recluse/apt/ nightly main" | sudo tee /etc/apt/sources.list.d/recluse.list
+sudo apt update && sudo apt install recluse
-sudo systemctl enable --now tesor
+sudo systemctl enable --now recluse
```
**Fedora/RHEL:**
```bash
# DNF5 (Fedora 41+, RHEL 10+)
-sudo dnf config-manager addrepo --from-repofile=https://pkg.dimidiumlabs.io/tesor/rpm/nightly/tesor-nightly.repo
+sudo dnf config-manager addrepo --from-repofile=https://pkg.dimidiumlabs.io/recluse/rpm/nightly/recluse-nightly.repo
# DNF4 (Fedora 40 and older, RHEL 8/9)
-sudo curl -o /etc/yum.repos.d/tesor-nightly.repo https://pkg.dimidiumlabs.io/tesor/rpm/nightly/tesor-nightly.repo
+sudo curl -o /etc/yum.repos.d/recluse-nightly.repo https://pkg.dimidiumlabs.io/recluse/rpm/nightly/recluse-nightly.repo
-sudo dnf install tesor
-sudo systemctl enable --now tesor
+sudo dnf install recluse
+sudo systemctl enable --now recluse
```
**openSUSE:**
```bash
sudo rpm --import https://pkg.dimidiumlabs.io/packages.gpg
-sudo zypper addrepo https://pkg.dimidiumlabs.io/tesor/rpm/nightly/ tesor-nightly
+sudo zypper addrepo https://pkg.dimidiumlabs.io/recluse/rpm/nightly/ recluse-nightly
sudo zypper refresh
-sudo zypper install tesor
+sudo zypper install recluse
-sudo systemctl enable --now tesor
+sudo systemctl enable --now recluse
```
## Build from source
-1. Clone repo: `git clone https://git.dimidiumlabs.io/tesor.git && cd tesor`
+1. Clone repo: `git clone https://github.com/dimidiumlabs/recluse.git && cd recluse`
1. Provision the toolchain and system build dependencies: `mise bootstrap`
1. Build from source: `mise exec -- cargo build --release`
1. Install manually
```bash
- sudo groupadd --system tesor
- sudo useradd --system --gid tesor --no-create-home --shell /usr/sbin/nologin tesor
- sudo install -m 700 -o tesor ./pkg/tesor.toml /etc/
- sudo install -m 755 -o root ./pkg/tesor.service /usr/lib/systemd/system
- sudo install -m 755 -o root target/release/tesor /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 tesor`
+1. start systemd service: `sudo systemctl enable --now recluse`
## Contributing
@@ -95,7 +95,7 @@ Remember, AI agents should make software better, not worse.
## Licensing
-Tesor source code is licensed under AGPL-3.0-or-later. Documentation is
+Recluse source code is licensed under AGPL-3.0-or-later. Documentation is
licensed under CC-BY-4.0.
The bundled JetBrains Mono font files are licensed under OFL-1.1.
diff --git a/REUSE.toml b/REUSE.toml
index ca825f7..717f144 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -10,13 +10,13 @@ path = [
"mise.lock",
"pkg/*.svg",
- "charts/tesor/templates/*",
+ "charts/recluse/templates/*",
- "crates/tesor/src/assets/*.svg",
- "crates/tesor/src/assets/*.ico",
- "crates/tesor/src/assets/*.png",
- "crates/tesor/src/assets/robots.txt",
- "crates/tesor/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"
SPDX-License-Identifier = "AGPL-3.0-or-later"
@@ -37,8 +37,8 @@ SPDX-License-Identifier = "CC-BY-3.0"
[[annotations]]
path = [
- "crates/tesor/src/assets/jetbrainsmono/OFL.txt",
- "crates/tesor/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/charts/tesor/Chart.yaml b/charts/recluse/Chart.yaml
index 9a70371..ff40446 100644
--- a/charts/tesor/Chart.yaml
+++ b/charts/recluse/Chart.yaml
@@ -5,6 +5,6 @@ apiVersion: v2
type: application
version: 0.1.0
-name: tesor
-home: https://git.dimidiumlabs.io/tesor
+name: recluse
+home: https://github.com/dimidiumlabs/recluse
description: Tiny package caching proxy
diff --git a/charts/tesor/templates/_helpers.tpl b/charts/recluse/templates/_helpers.tpl
index 41b478a..4da058b 100644
--- a/charts/tesor/templates/_helpers.tpl
+++ b/charts/recluse/templates/_helpers.tpl
@@ -1,32 +1,32 @@
# SPDX-FileCopyrightText: 2026 Nikolay Govorov
# SPDX-License-Identifier: AGPL-3.0-or-later
-{{- define "tesor.name" -}}
+{{- define "recluse.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
-{{- define "tesor.fullname" -}}
+{{- define "recluse.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
-{{- printf "%s-%s" .Release.Name (include "tesor.name" .) | trunc 63 | trimSuffix "-" -}}
+{{- printf "%s-%s" .Release.Name (include "recluse.name" .) | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
-{{- define "tesor.labels" -}}
+{{- define "recluse.labels" -}}
helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }}
-app.kubernetes.io/name: {{ include "tesor.name" . }}
+app.kubernetes.io/name: {{ include "recluse.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
-{{- define "tesor.selectorLabels" -}}
-app.kubernetes.io/name: {{ include "tesor.name" . }}
+{{- define "recluse.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "recluse.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
-{{- define "tesor.image" -}}
+{{- define "recluse.image" -}}
{{- if .Values.image.digest -}}
{{- printf "%s@%s" .Values.image.repository .Values.image.digest -}}
{{- else -}}
diff --git a/charts/tesor/templates/configmap.yaml b/charts/recluse/templates/configmap.yaml
index 5dd823c..d5dbf18 100644
--- a/charts/tesor/templates/configmap.yaml
+++ b/charts/recluse/templates/configmap.yaml
@@ -5,13 +5,13 @@
apiVersion: v1
kind: ConfigMap
metadata:
- name: {{ include "tesor.fullname" . }}
+ name: {{ include "recluse.fullname" . }}
labels:
- {{- include "tesor.labels" . | nindent 4 }}
+ {{- include "recluse.labels" . | nindent 4 }}
data:
- tesor.toml: |
+ recluse.toml: |
appname = {{ .Values.config.appname | quote }}
- dirname = "/var/lib/tesor"
+ dirname = "/var/lib/recluse"
[server]
max_body_size = {{ .Values.config.server.maxBodySize | quote }}
diff --git a/charts/tesor/templates/deployment.yaml b/charts/recluse/templates/deployment.yaml
index 952927e..f82648c 100644
--- a/charts/tesor/templates/deployment.yaml
+++ b/charts/recluse/templates/deployment.yaml
@@ -4,16 +4,16 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "tesor.fullname" . }}
+ name: {{ include "recluse.fullname" . }}
labels:
- {{- include "tesor.labels" . | nindent 4 }}
+ {{- include "recluse.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
strategy:
type: Recreate
selector:
matchLabels:
- {{- include "tesor.selectorLabels" . | nindent 6 }}
+ {{- include "recluse.selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
@@ -24,7 +24,7 @@ spec:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
- {{- include "tesor.selectorLabels" . | nindent 8 }}
+ {{- include "recluse.selectorLabels" . | nindent 8 }}
{{- with .Values.podLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
@@ -38,12 +38,12 @@ spec:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- - name: tesor
- image: {{ include "tesor.image" . | quote }}
+ - name: recluse
+ image: {{ include "recluse.image" . | quote }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
- args: ["--config=/etc/tesor/tesor.toml"]
+ args: ["--config=/etc/recluse/recluse.toml"]
ports:
- name: http
containerPort: 2000
@@ -65,19 +65,19 @@ spec:
{{- toYaml .Values.resources | nindent 12 }}
volumeMounts:
- name: config
- mountPath: /etc/tesor/tesor.toml
- subPath: tesor.toml
+ mountPath: /etc/recluse/recluse.toml
+ subPath: recluse.toml
readOnly: true
- name: state
- mountPath: /var/lib/tesor
+ mountPath: /var/lib/recluse
volumes:
- name: config
configMap:
- name: {{ default (include "tesor.fullname" .) .Values.config.existingConfigMap }}
+ name: {{ default (include "recluse.fullname" .) .Values.config.existingConfigMap }}
- name: state
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
- claimName: {{ default (include "tesor.fullname" .) .Values.persistence.existingClaim }}
+ claimName: {{ default (include "recluse.fullname" .) .Values.persistence.existingClaim }}
{{- else }}
emptyDir: {}
{{- end }}
diff --git a/charts/tesor/templates/httproute.yaml b/charts/recluse/templates/httproute.yaml
index 63e0159..5b7d341 100644
--- a/charts/tesor/templates/httproute.yaml
+++ b/charts/recluse/templates/httproute.yaml
@@ -5,9 +5,9 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
- name: {{ include "tesor.fullname" . }}
+ name: {{ include "recluse.fullname" . }}
labels:
- {{- include "tesor.labels" . | nindent 4 }}
+ {{- include "recluse.labels" . | nindent 4 }}
spec:
{{- with .Values.route.parentRefs }}
parentRefs:
@@ -19,7 +19,7 @@ spec:
{{- end }}
rules:
- backendRefs:
- - name: {{ include "tesor.fullname" . }}
+ - name: {{ include "recluse.fullname" . }}
port: {{ .Values.service.port }}
{{- end }}
diff --git a/charts/tesor/templates/pvc.yaml b/charts/recluse/templates/pvc.yaml
index 32a4d7d..2c563d1 100644
--- a/charts/tesor/templates/pvc.yaml
+++ b/charts/recluse/templates/pvc.yaml
@@ -5,9 +5,9 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
- name: {{ include "tesor.fullname" . }}
+ name: {{ include "recluse.fullname" . }}
labels:
- {{- include "tesor.labels" . | nindent 4 }}
+ {{- include "recluse.labels" . | nindent 4 }}
spec:
accessModes:
{{- toYaml .Values.persistence.accessModes | nindent 4 }}
diff --git a/charts/tesor/templates/service.yaml b/charts/recluse/templates/service.yaml
index 1c173a0..0367f03 100644
--- a/charts/tesor/templates/service.yaml
+++ b/charts/recluse/templates/service.yaml
@@ -4,12 +4,12 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ include "tesor.fullname" . }}
+ name: {{ include "recluse.fullname" . }}
labels:
- {{- include "tesor.labels" . | nindent 4 }}
+ {{- include "recluse.labels" . | nindent 4 }}
spec:
selector:
- {{- include "tesor.selectorLabels" . | nindent 4 }}
+ {{- include "recluse.selectorLabels" . | nindent 4 }}
ports:
- name: http
port: {{ .Values.service.port }}
diff --git a/charts/tesor/values.yaml b/charts/recluse/values.yaml
index a88ae89..d6762d8 100644
--- a/charts/tesor/values.yaml
+++ b/charts/recluse/values.yaml
@@ -4,7 +4,7 @@
replicaCount: 1
image:
- repository: ghcr.io/dimidiumlabs/tesor
+ repository: ghcr.io/dimidiumlabs/recluse
tag: ""
digest: ""
pullPolicy: IfNotPresent
@@ -36,7 +36,7 @@ service:
config:
existingConfigMap: ""
- appname: tesor
+ appname: recluse
hostnames: []
server:
shutdownTimeout: 60
diff --git a/crates/tesor/Cargo.toml b/crates/recluse/Cargo.toml
index 908295d..c8e90db 100644
--- a/crates/tesor/Cargo.toml
+++ b/crates/recluse/Cargo.toml
@@ -2,8 +2,8 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
[package]
-name = "tesor"
-description = "tesor web-server and daemon"
+name = "recluse"
+description = "recluse web-server and daemon"
version.workspace = true
authors.workspace = true
diff --git a/crates/tesor/build.rs b/crates/recluse/build.rs
index 0f4e2d3..0f4e2d3 100644
--- a/crates/tesor/build.rs
+++ b/crates/recluse/build.rs
diff --git a/crates/tesor/src/assets/apple-touch-icon.png b/crates/recluse/src/assets/apple-touch-icon.png
index 0f6bb61..0f6bb61 100644
--- a/crates/tesor/src/assets/apple-touch-icon.png
+++ b/crates/recluse/src/assets/apple-touch-icon.png
Binary files differ
diff --git a/crates/tesor/src/assets/base.css b/crates/recluse/src/assets/base.css
index 66503e7..66503e7 100644
--- a/crates/tesor/src/assets/base.css
+++ b/crates/recluse/src/assets/base.css
diff --git a/crates/tesor/src/assets/favicon-192.png b/crates/recluse/src/assets/favicon-192.png
index 0f6bb61..0f6bb61 100644
--- a/crates/tesor/src/assets/favicon-192.png
+++ b/crates/recluse/src/assets/favicon-192.png
Binary files differ
diff --git a/crates/tesor/src/assets/favicon-512.png b/crates/recluse/src/assets/favicon-512.png
index 49cd3cd..49cd3cd 100644
--- a/crates/tesor/src/assets/favicon-512.png
+++ b/crates/recluse/src/assets/favicon-512.png
Binary files differ
diff --git a/crates/tesor/src/assets/favicon.ico b/crates/recluse/src/assets/favicon.ico
index 093e50b..093e50b 100644
--- a/crates/tesor/src/assets/favicon.ico
+++ b/crates/recluse/src/assets/favicon.ico
Binary files differ
diff --git a/crates/tesor/src/assets/favicon.svg b/crates/recluse/src/assets/favicon.svg
index ed7cc17..ed7cc17 100644
--- a/crates/tesor/src/assets/favicon.svg
+++ b/crates/recluse/src/assets/favicon.svg
diff --git a/crates/tesor/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2 b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2
index 98adc80..98adc80 100644
--- a/crates/tesor/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2
+++ b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono-Italic[wght].woff2
Binary files differ
diff --git a/crates/tesor/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2 b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2
index 4cd1413..4cd1413 100644
--- a/crates/tesor/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2
+++ b/crates/recluse/src/assets/jetbrainsmono/JetBrainsMono[wght].woff2
Binary files differ
diff --git a/crates/tesor/src/assets/manifest.webmanifest b/crates/recluse/src/assets/manifest.webmanifest
index 6d7fa0a..2277253 100644
--- a/crates/tesor/src/assets/manifest.webmanifest
+++ b/crates/recluse/src/assets/manifest.webmanifest
@@ -1,5 +1,5 @@
{
- "name": "tesor",
+ "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/tesor/src/assets/robots.txt b/crates/recluse/src/assets/robots.txt
index 2fe8da2..2fe8da2 100644
--- a/crates/tesor/src/assets/robots.txt
+++ b/crates/recluse/src/assets/robots.txt
diff --git a/crates/tesor/src/config.rs b/crates/recluse/src/config.rs
index e9e148a..b729729 100644
--- a/crates/tesor/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: "tesor".to_string(),
- dirname: PathBuf::from("./.tesor-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(".tesor-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(), "tesor");
+ assert_eq!(cfg.appname(), "recluse");
std::env::set_current_dir(cwd).unwrap();
}
diff --git a/crates/tesor/src/controller_backend.rs b/crates/recluse/src/controller_backend.rs
index f97caa1..f97caa1 100644
--- a/crates/tesor/src/controller_backend.rs
+++ b/crates/recluse/src/controller_backend.rs
diff --git a/crates/tesor/src/controller_web.rs b/crates/recluse/src/controller_web.rs
index 125295e..fef09ee 100644
--- a/crates/tesor/src/controller_web.rs
+++ b/crates/recluse/src/controller_web.rs
@@ -167,9 +167,9 @@ impl WebController {
};
WebController::layout(
- "Tesor — tiny & opinionated packages mirror",
+ "Recluse — tiny & opinionated packages mirror",
html! {
- h1 { "Tesor — 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 {
- "Tesor 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://git.dimidiumlabs.io/tesor" { "Dimidium Labs Git" } ". "
+ "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/dimidiumlabs/recluse" { "GitHub" } ". "
"A list of dependency licenses " a href="/about/licenses" { "is available" } "."
}
@@ -323,19 +323,19 @@ impl WebController {
html! {
h1 { "Licenses" }
- h2 { "Tesor" }
+ h2 { "Recluse" }
p {
- "Tesor 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 Tesor 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://git.dimidiumlabs.io/tesor" { "Dimidium Labs Git" }
+ a href="https://github.com/dimidiumlabs/recluse" { "GitHub" }
". The full license text is included below."
}
diff --git a/crates/tesor/src/main.rs b/crates/recluse/src/main.rs
index 1029eca..a42eaee 100644
--- a/crates/tesor/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: tesor [--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!("tesor {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!("tesor:{}", 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!("tesor/", 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/tesor/src/proxy.rs b/crates/recluse/src/proxy.rs
index 5e98d23..16a322b 100644
--- a/crates/tesor/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, "tesor/0.1")
+ .header(http::header::USER_AGENT, "recluse/0.1")
.body(Empty::<Bytes>::new())
.unwrap();
diff --git a/crates/tesor/src/storage.rs b/crates/recluse/src/storage.rs
index bc751a7..bc751a7 100644
--- a/crates/tesor/src/storage.rs
+++ b/crates/recluse/src/storage.rs
diff --git a/crates/tesor/src/telemetry.rs b/crates/recluse/src/telemetry.rs
index 9036924..df39fa0 100644
--- a/crates/tesor/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("TESOR_LOG") {
+ let env_filter = match std::env::var_os("RECLUSE_LOG") {
Some(val) => tracing_subscriber::EnvFilter::try_new(val.to_string_lossy())
- .expect("Invalid TESOR_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 8b08f78..eb1a928 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, "tesor: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=tesor%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 3cd37da..b0b87c8 100644
--- a/deny.toml
+++ b/deny.toml
@@ -25,7 +25,7 @@ exceptions = [
{ crate = "base", allow = ["AGPL-3.0-or-later"] },
{ crate = "repos", allow = ["AGPL-3.0-or-later"] },
{ crate = "smoke", allow = ["AGPL-3.0-or-later"] },
- { crate = "tesor", allow = ["AGPL-3.0-or-later"] },
+ { crate = "recluse", allow = ["AGPL-3.0-or-later"] },
]
unused-allowed-license = "allow"
diff --git a/mise.toml b/mise.toml
index 142594c..20e8d95 100644
--- a/mise.toml
+++ b/mise.toml
@@ -36,7 +36,7 @@ shellcheck = "0.11.0"
[task_config]
dir = "{{cwd}}"
includes = [
- "git::https://git.dimidiumlabs.io/platform.git//tasks?ref=159ce265b95d655342c378d9aaa7dc14dbf1dfa4",
+ "git::https://github.com/dimidiumlabs/platform.git//tasks?ref=159ce265b95d655342c378d9aaa7dc14dbf1dfa4",
]
[tasks.fmt]
diff --git a/nfpm.yaml b/nfpm.yaml
index 5704fcb..c53abb5 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: tesor
+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/tesor/LICENSE
+ dst: /usr/share/doc/recluse/LICENSE
- src: ./README.md
- dst: /usr/share/doc/tesor/README.md
+ dst: /usr/share/doc/recluse/README.md
- - src: target/release/tesor
- dst: /usr/local/bin/tesor
+ - src: target/release/recluse
+ dst: /usr/local/bin/recluse
file_info:
mode: 0755
- - src: pkg/tesor.toml
- dst: /etc/tesor.toml
+ - src: pkg/recluse.toml
+ dst: /etc/recluse.toml
type: config|noreplace
file_info:
mode: 0640
owner: root
- group: tesor
+ group: recluse
- - src: pkg/tesor.service
- dst: /usr/lib/systemd/system/tesor.service
+ - src: pkg/recluse.service
+ dst: /usr/lib/systemd/system/recluse.service
file_info:
mode: 0644
- - dst: /var/lib/tesor
+ - dst: /var/lib/recluse
type: dir
file_info:
mode: 0755
owner: root
- group: tesor
+ group: recluse
scripts:
diff --git a/pkg/tesor.service b/pkg/recluse.service
index c2d463d..f3ab476 100644
--- a/pkg/tesor.service
+++ b/pkg/recluse.service
@@ -2,21 +2,21 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
[Unit]
-Description=tesor 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=tesor
-Group=tesor
+User=recluse
+Group=recluse
Restart=always
RestartSec=30
WatchdogSec=30
NotifyAccess=main
-ExecPaths=/usr/local/bin/tesor /usr/lib
-ExecStart=/usr/local/bin/tesor --config=/etc/tesor.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/tesor.toml b/pkg/recluse.toml
index 7296086..751672b 100644
--- a/pkg/tesor.toml
+++ b/pkg/recluse.toml
@@ -1,13 +1,13 @@
# SPDX-FileCopyrightText: 2026 Nikolay Govorov
# SPDX-License-Identifier: AGPL-3.0-or-later
-# tesor 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="tesor"
+appname="recluse"
# Path to the directory for storing state (indexes, caches, statistics).
# Must be a writable directory.
-dirname="/var/lib/tesor"
+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/tesor/cert.pem"
-# tls_key = "/etc/tesor/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/tesor/otel-ca.crt"
-# # tls_crt = "/etc/tesor/otel-client.crt" # for mTLS
-# # tls_key = "/etc/tesor/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 TESOR_LOG overrides log_level settings.
-# Example: TESOR_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 6e391fc..204f44a 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/tesor.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 tesor
+ /bin/systemctl enable recluse
fi
diff --git a/pkg/scripts/preinstall.sh b/pkg/scripts/preinstall.sh
index 175eaf1..3330200 100644
--- a/pkg/scripts/preinstall.sh
+++ b/pkg/scripts/preinstall.sh
@@ -4,13 +4,13 @@
set -e
-TESOR_USER=${TESOR_USER:-tesor}
-TESOR_GROUP=${TESOR_GROUP:-${TESOR_USER}}
+RECLUSE_USER=${RECLUSE_USER:-recluse}
+RECLUSE_GROUP=${RECLUSE_GROUP:-${RECLUSE_USER}}
-if ! getent group "$TESOR_GROUP" >/dev/null; then
- groupadd --system "$TESOR_GROUP"
+if ! getent group "$RECLUSE_GROUP" >/dev/null; then
+ groupadd --system "$RECLUSE_GROUP"
fi
-if ! getent passwd "$TESOR_USER" >/dev/null; then
- useradd --system --gid "$TESOR_GROUP" --no-create-home --shell /usr/sbin/nologin "$TESOR_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 9cd6599..3c16f62 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/tesor.service ]; then
- /bin/systemctl stop tesor.service || true
- /bin/systemctl disable tesor.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 4b72441..22b5a72 100755
--- a/tests/smoke/run-local.sh
+++ b/tests/smoke/run-local.sh
@@ -2,25 +2,25 @@
# SPDX-FileCopyrightText: 2026 Nikolay Govorov
# SPDX-License-Identifier: AGPL-3.0-or-later
-# Starts tesor in a temporary directory, runs smoke tests, cleans up.
-# Expects a prebuilt binary at target/release/tesor (run `cargo build --release` first).
+# Starts recluse in a temporary directory, runs smoke tests, cleans up.
+# Expects a prebuilt binary at target/release/recluse (run `cargo build --release` first).
#
# Usage:
# ./tests/smoke/run-local.sh # default port 2025
-# TESOR_PORT=9999 ./tests/smoke/run-local.sh
+# RECLUSE_PORT=9999 ./tests/smoke/run-local.sh
set -euo pipefail
-BIN="target/release/tesor"
-PORT="${TESOR_PORT:-2025}"
+BIN="target/release/recluse"
+PORT="${RECLUSE_PORT:-2025}"
BASE_URL="http://127.0.0.1:${PORT}"
TMPDIR="$(mktemp -d)"
-LOGFILE="$TMPDIR/tesor.log"
+LOGFILE="$TMPDIR/recluse.log"
trap 'kill "$PID" 2>/dev/null; wait "$PID" 2>/dev/null; rm -rf "$TMPDIR"' EXIT
# Write minimal config
-cat > "$TMPDIR/tesor.toml" <<EOF
+cat > "$TMPDIR/recluse.toml" <<EOF
appname = "smoke"
dirname = "$TMPDIR/state"
@@ -44,10 +44,10 @@ EOF
mkdir -p "$TMPDIR/state"
-# Start tesor
-echo "Starting tesor on ${BASE_URL}..."
+# Start recluse
+echo "Starting recluse on ${BASE_URL}..."
echo "Server log: ${LOGFILE}"
-"$BIN" --config="$TMPDIR/tesor.toml" >"$LOGFILE" 2>&1 &
+"$BIN" --config="$TMPDIR/recluse.toml" >"$LOGFILE" 2>&1 &
PID=$!
# Wait for index to load (log shows "index refreshed" for each backend)
@@ -58,7 +58,7 @@ for i in $(seq 1 120); do
break
fi
if ! kill -0 "$PID" 2>/dev/null; then
- echo "tesor exited unexpectedly. Server log:"
+ echo "recluse exited unexpectedly. Server log:"
cat "$LOGFILE"
exit 1
fi
@@ -72,4 +72,4 @@ if ! grep -q "index refreshed" "$LOGFILE" 2>/dev/null; then
fi
# Run smoke tests
-TESOR_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 ca109f9..f23a233 100644
--- a/tests/smoke/src/main.rs
+++ b/tests/smoke/src/main.rs
@@ -1,13 +1,13 @@
// SPDX-FileCopyrightText: 2026 Nikolay Govorov
// SPDX-License-Identifier: AGPL-3.0-or-later
-// Black-box smoke tests for Tesor.
+// Black-box smoke tests for Recluse.
//
-// Downloads archives from Tesor 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:
-// TESOR_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("Tesor") {
- r.fail(name, "body missing \"Tesor\"");
+ } 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(tesor), Ok(upstream)) => {
- let zh = sha256hex(&tesor);
+ (Ok(recluse), Ok(upstream)) => {
+ let zh = sha256hex(&recluse);
let uh = sha256hex(&upstream);
if zh != uh {
- r.fail(&name, &format!("tesor={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(tesor), Ok(upstream)) => {
- let zh = sha256hex(&tesor);
+ (Ok(recluse), Ok(upstream)) => {
+ let zh = sha256hex(&recluse);
let uh = sha256hex(&upstream);
if zh != uh {
- r.fail(&name, &format!("tesor={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 tesor_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(&tesor_url), r.fetch_bytes(&upstream_url)) {
- (Ok(tesor), Ok(upstream)) => {
- if tesor != 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("TESOR_URL") {
+ let base_url = match std::env::var("RECLUSE_URL") {
Ok(url) => url,
Err(_) => {
- eprintln!("Error: TESOR_URL environment variable is not set.");
- eprintln!("Usage: TESOR_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);
}
};