Skip to content

fix: Redis のユーザー指定に対応 (issue #20)#21

Merged
sysnote8main merged 3 commits into
mainfrom
fix/20-redis-user-config
Jul 19, 2026
Merged

fix: Redis のユーザー指定に対応 (issue #20)#21
sysnote8main merged 3 commits into
mainfrom
fix/20-redis-user-config

Conversation

@sysnote8main

Copy link
Copy Markdown
Contributor

概要

issue #20「Redisのユーザー指定がない」を解決しました。
Redis 6+ の ACL では default 以外のユーザーを使う環境があり、RedisConfiguser フィールドが欠けていたため認証できず困る状態でした。
DatabaseConfig と同様に user フィールドを追加し、あわせて実際に user を使う Redis 接続層(RedisManager)を実装しました。

変更内容

1. RedisConfiguser フィールドを追加 (feat)

  • src/main/kotlin/.../data/Config.kt: RedisConfiguser: String = "" を追加(空文字=default ユーザー)
  • 設定ファイル(config.yml および integrationTest の各 config)、wiki/CONFIGURATION.md、既存 ConfigTest を更新

2. Redis 接続管理 (RedisManager) を追加 (feat)

  • src/main/kotlin/.../database/RedisManager.kt(新規): Lettuce で RedisURI / RedisClient を構築
    • RedisConfig.userRedisURI.username(ACL ユーザー名)、passwordwithPassword() にマップ
    • connect()PING を実行し設定ミスを即時検出
    • DB と同様に接続失敗時はプラグイン起動を継続(Redis 依存機能を無効化)、disconnect() で確実に shutdown
    • syncCommands() / asyncCommands() でコマンド API を取得(未接続時は null
  • DI 統合: ConfigModuleprovideRedisConfig()SimpleQuestComponentredisManager() を追加
  • ライフサイクル: SimpleQuestonEnable で接続・成否ログ、onDisable で切断
  • テスト RedisManagerTest.kt(新規): buildUri() の host/port/user/password マッピングを実接続なしで検証

補足

  • Lettuce の RedisURI.Builder には withUsername がなく、username は構築後の RedisURI にしかセットできないためそのように実装
  • RedisURI.getUsername() は未設定時に null を返す(空文字ではない)点に合わせてテストを記述

確認

  • ./gradlew test: BUILD SUCCESSFUL
  • ./gradlew build: BUILD SUCCESSFUL
  • actions-up による GitHub Actions の SHA pin 更新を実施
  • ghasec --online による静的解析: エラーなし

Closes #20

Redis 6+ ACL のユーザー名を指定可能にする。
空文字の場合は default ユーザーとして接続する。
設定ファイル・wiki・ConfigTest も更新。
Lettuce で RedisURI/RedisClient を構築し、RedisConfig.user を ACL
ユーザー名にマップ。接続失敗時は DB 同様にプラグイン起動を継続
(Redis 依存機能を無効化)。DI と onEnable/onDisable ライフサイクルに
統合。実接続しない buildUri の単体テストを追加。
@sysnote8main
sysnote8main merged commit fc52060 into main Jul 19, 2026
1 of 2 checks passed
@sysnote8main
sysnote8main deleted the fix/20-redis-user-config branch July 19, 2026 22:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Redisのユーザー指定がない

1 participant