fix: remove CLI credential timeout and password complexity limits (#20)

This commit is contained in:
Meng Meng
2026-08-14 22:46:37 +08:00
committed by GitHub
parent fcf57ffec9
commit 540a967f96
5 changed files with 82 additions and 21 deletions
+3 -3
View File
@@ -23,14 +23,14 @@ func runBootstrapAdmin(args []string) error {
if err := flags.Parse(args); err != nil || flags.NArg() != 0 {
return errors.New("usage: vocat bootstrap-admin [--database path] [--username name]")
}
reader := bufio.NewReader(io.LimitReader(os.Stdin, 2049))
reader := bufio.NewReader(os.Stdin)
password, err := reader.ReadString('\n')
if err != nil && !errors.Is(err, io.EOF) {
return fmt.Errorf("read password: %w", err)
}
password = strings.TrimSuffix(strings.TrimSuffix(password, "\n"), "\r")
if len(password) < 6 || len(password) > 1024 {
return errors.New("bootstrap password must contain between 6 and 1024 characters")
if password == "" {
return errors.New("bootstrap password cannot be empty")
}
adminUsername := strings.TrimSpace(*username)
if len(adminUsername) < 1 || len(adminUsername) > 64 || strings.ContainsAny(adminUsername, "\r\n\t") {
+2 -4
View File
@@ -198,8 +198,7 @@ func menuResetAdminCredentials(reader *bufio.Reader, m *menu) error {
if err != nil {
return fmt.Errorf("%w: %v", errMenuConfig, err)
}
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
ctx := context.Background()
database, err := store.Open(ctx, cfg.DatabasePath)
if err != nil {
@@ -215,7 +214,6 @@ func menuResetAdminCredentials(reader *bufio.Reader, m *menu) error {
if err != nil {
return fmt.Errorf("%w: %v", errMenuStore, err)
}
fmt.Print(m.newUsername(admin.Username))
username, err := reader.ReadString('\n')
if err != nil {
@@ -596,7 +594,7 @@ func (m *menu) msg(key string) string {
"prompt": {"请选择: ", "Select: "},
"invalid": {"无效选项,请重试。按 Ctrl+C 退出。", "Invalid choice, try again. Press Ctrl+C to exit."},
"new_username": {"新用户名(直接回车保留 %s: ", "New username (Enter to keep %s): "},
"new_pw": {"新密码 (至少 6 位): ", "New password (min 6 chars): "},
"new_pw": {"新密码: ", "New password: "},
"confirm_pw": {"确认新密码: ", "Confirm new password: "},
"pw_changed": {"管理员账号密码已修改,现有 Web 会话已退出。", "Administrator credentials changed; existing Web sessions were signed out."},
"current_web_address": {"当前 Web 监听地址: %s", "Current Web listening address: %s"},