Сделал пароль qBittorrent опциональным (config)
qBittorrent может работать без аутентификации (обход авторизации для доверенной подсети) — пустой пароль валиден. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -252,11 +252,9 @@ func (c *Config) validate() error {
|
||||
errs = append(errs, fmt.Errorf("worker.source_missing_threshold %d must be >= 1", c.Worker.SourceMissingThreshold))
|
||||
}
|
||||
|
||||
// Обязательные секреты включённых секций (ловит криво отрендеренный деплоем
|
||||
// файл). qBittorrent — ядро, пароль нужен всегда.
|
||||
if c.QBittorrent.Password == "" {
|
||||
errs = append(errs, errors.New("qbittorrent.password is empty (required secret)"))
|
||||
}
|
||||
// qbittorrent.password намеренно не обязателен: qBittorrent может работать без
|
||||
// аутентификации (например, обход авторизации для клиентов из доверенной
|
||||
// подсети) — пустой пароль валиден.
|
||||
// llm.api_key намеренно не обязателен: keyless-local LLM (LM Studio с
|
||||
// заданным base_url, но без ключа) — валидный документированный дефолт.
|
||||
|
||||
|
||||
@@ -33,6 +33,17 @@ func TestValidate_OK(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestValidate_NoQBittorrentPassword — пустой пароль qBittorrent валиден:
|
||||
// клиент может работать без аутентификации (обход авторизации для доверенной
|
||||
// подсети).
|
||||
func TestValidate_NoQBittorrentPassword(t *testing.T) {
|
||||
c := validCfg(t)
|
||||
c.QBittorrent.Password = ""
|
||||
if err := c.validate(); err != nil {
|
||||
t.Fatalf("пустой пароль qBittorrent должен быть валиден, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// TestValidate_KeylessLocalLLM — keyless-local LLM (задан base_url, пустой
|
||||
// api_key, напр. LM Studio) — валиден: ключ не обязателен.
|
||||
func TestValidate_KeylessLocalLLM(t *testing.T) {
|
||||
@@ -51,7 +62,6 @@ func TestValidate_Errors(t *testing.T) {
|
||||
want string
|
||||
}{
|
||||
{"empty qbittorrent.url", func(c *Config) { c.QBittorrent.URL = "" }, "qbittorrent.url"},
|
||||
{"empty qbittorrent.password", func(c *Config) { c.QBittorrent.Password = "" }, "qbittorrent.password"},
|
||||
{"empty db_path", func(c *Config) { c.Storage.DBPath = "" }, "storage.db_path"},
|
||||
{"bad llm.type", func(c *Config) { c.LLM.Type = "anthropic" }, "llm.type"},
|
||||
{"relative movies", func(c *Config) { c.Paths.Movies = "movies" }, "absolute"},
|
||||
|
||||
Reference in New Issue
Block a user