增加使用命令初始化用户密码功能

This commit is contained in:
dushixiang 2021-03-05 20:02:17 +08:00
parent d16295baa5
commit af74e18c9a
3 changed files with 59 additions and 6 deletions

View File

@ -58,4 +58,33 @@ docker rm <container-id> -f
2. 原生使用golang+xterm.js方式实现的webssh传输协议是文本操作响应更快。但目前尚未实现实时监控。
3. guacdApache Guacamole包装了一层的ssh协议支持实时监控录屏播放更加统一。但某些密钥不支持。
</details>
</details>
<details>
<summary>系统密码忘记了怎么办?</summary>
首先需要进入程序所在目录使用docker安装的程序目录为/usr/local/next-terminal
执行命令
```shell
./next-terminal --reset-password admin
```
其中 admin 为用户登录账号,成功之后会输出
``` shell
_______ __ ___________ .__ .__
\ \ ____ ___ ____/ |_ \__ ___/__________ _____ |__| ____ _____ | |
/ | \_/ __ \\ \/ /\ __\ | |_/ __ \_ __ \/ \| |/ \\__ \ | |
/ | \ ___/ > < | | | |\ ___/| | \/ Y Y \ | | \/ __ \| |__
\____|__ /\___ >__/\_ \ |__| |____| \___ >__| |__|_| /__|___| (____ /____/
\/ \/ \/ \/ \/ \/ \/ v0.3.0
当前数据库模式为mysql
Mar 5 20:00:16.923 [DEBU] 用户「admin」密码初始化为: next-terminal
```
</details>

23
main.go
View File

@ -27,7 +27,10 @@ import (
const Version = "v0.3.0"
func main() {
log.Fatal(Run())
err := Run()
if err != nil {
log.Fatal(err)
}
}
func Run() error {
@ -85,6 +88,24 @@ func Run() error {
return err
}
if global.Config.ResetPassword != "" {
user, err := model.FindUserByUsername(global.Config.ResetPassword)
if err != nil {
return err
}
password := "next-terminal"
passwd, err := utils.Encoder.Encode([]byte(password))
if err != nil {
return err
}
u := &model.User{
Password: string(passwd),
}
model.UpdateUserById(u, user.ID)
logrus.Debugf("用户「%v」密码初始化为: %v", user.Username, password)
return nil
}
if err := global.DB.AutoMigrate(&model.User{}); err != nil {
return err
}

View File

@ -8,10 +8,11 @@ import (
)
type Config struct {
DB string
Server *Server
Mysql *Mysql
Sqlite *Sqlite
DB string
Server *Server
Mysql *Mysql
Sqlite *Sqlite
ResetPassword string
}
type Mysql struct {
@ -53,6 +54,7 @@ func SetupConfig() (*Config, error) {
pflag.String("server.addr", "", "server listen addr")
pflag.String("server.cert", "", "tls cert file")
pflag.String("server.key", "", "tls key file")
pflag.String("reset-password", "", "")
pflag.Parse()
_ = viper.BindPFlags(pflag.CommandLine)
@ -75,6 +77,7 @@ func SetupConfig() (*Config, error) {
Cert: viper.GetString("server.cert"),
Key: viper.GetString("server.key"),
},
ResetPassword: viper.GetString("reset-password"),
}
return config, nil