From b4f57b3604e687447adbe559ac955c77eba85c37 Mon Sep 17 00:00:00 2001 From: ryyst Date: Sun, 21 Sep 2025 12:22:14 +0300 Subject: [PATCH] feat: add anonymous access configuration for KV endpoints (issue #5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add AllowAnonymousRead and AllowAnonymousWrite config parameters - Set both to false by default for security - Apply conditional authentication middleware to KV endpoints: - GET requires auth if AllowAnonymousRead is false - PUT requires auth if AllowAnonymousWrite is false - DELETE always requires authentication (no anonymous delete) - Update integration tests to enable anonymous access for testing - Maintain backward compatibility when AuthEnabled is false 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- config/config.go | 4 ++++ integration_test.sh | 10 ++++++++++ server/routes.go | 31 +++++++++++++++++++++++++++---- types/types.go | 4 ++++ 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/config/config.go b/config/config.go index 1eed905..693331f 100644 --- a/config/config.go +++ b/config/config.go @@ -55,6 +55,10 @@ func Default() *types.Config { ClusteringEnabled: true, RateLimitingEnabled: true, RevisionHistoryEnabled: true, + + // Default anonymous access settings (both disabled by default for security) + AllowAnonymousRead: false, + AllowAnonymousWrite: false, } } diff --git a/integration_test.sh b/integration_test.sh index b46b500..4e849a3 100755 --- a/integration_test.sh +++ b/integration_test.sh @@ -91,6 +91,8 @@ port: 8090 data_dir: "./basic_data" seed_nodes: [] log_level: "error" +allow_anonymous_read: true +allow_anonymous_write: true EOF # Start node @@ -134,6 +136,8 @@ log_level: "error" gossip_interval_min: 5 gossip_interval_max: 10 sync_interval: 10 +allow_anonymous_read: true +allow_anonymous_write: true EOF # Node 2 config @@ -147,6 +151,8 @@ log_level: "error" gossip_interval_min: 5 gossip_interval_max: 10 sync_interval: 10 +allow_anonymous_read: true +allow_anonymous_write: true EOF # Start nodes @@ -242,6 +248,8 @@ data_dir: "./conflict1_data" seed_nodes: [] log_level: "info" sync_interval: 3 +allow_anonymous_read: true +allow_anonymous_write: true EOF cat > conflict2.yaml <