mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-09-26 08:00:55 +00:00
184 lines
5.0 KiB
Go
184 lines
5.0 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/1Panel-dev/1Panel/core/constant"
|
|
"github.com/1Panel-dev/1Panel/core/i18n"
|
|
"github.com/1Panel-dev/1Panel/core/utils/passkey"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func init() {
|
|
resetCmd.SetHelpFunc(func(c *cobra.Command, s []string) {
|
|
i18n.UseI18nForCmd(language)
|
|
loadResetHelper()
|
|
})
|
|
|
|
RootCmd.AddCommand(resetCmd)
|
|
resetCmd.AddCommand(resetMFACmd)
|
|
resetMFACmd.Flags().StringVar(&resetMFAUserNameFlag, "username", "", "username")
|
|
resetCmd.AddCommand(resetSSLCmd)
|
|
resetCmd.AddCommand(resetEntranceCmd)
|
|
resetCmd.AddCommand(resetBindIpsCmd)
|
|
resetCmd.AddCommand(resetDomainCmd)
|
|
resetCmd.AddCommand(resetPasskeyCmd)
|
|
}
|
|
|
|
var resetMFAUserNameFlag string
|
|
|
|
var resetCmd = &cobra.Command{
|
|
Use: "reset",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
loadResetHelper()
|
|
return nil
|
|
},
|
|
}
|
|
|
|
var resetMFACmd = &cobra.Command{
|
|
Use: "mfa",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
if !isRoot() {
|
|
fmt.Println(i18n.GetMsgWithMapForCmd("SudoHelper", map[string]interface{}{"cmd": "sudo 1pctl reset mfa"}))
|
|
return nil
|
|
}
|
|
if isEnterprise() && len(strings.TrimSpace(resetMFAUserNameFlag)) == 0 {
|
|
fmt.Println(i18n.GetMsgByKeyForCmd("UsernameNeed"))
|
|
return nil
|
|
}
|
|
if isEnterprise() {
|
|
db, err := loadDBConn("enterprise.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
username := strings.TrimSpace(resetMFAUserNameFlag)
|
|
var count int64
|
|
if err := db.Table("users").Where("name = ?", username).Count(&count).Error; err != nil {
|
|
return err
|
|
}
|
|
if count == 0 {
|
|
return fmt.Errorf("%s: %s", i18n.GetMsgByKeyForCmd("ErrRecordNotFound"), strings.TrimSpace(resetMFAUserNameFlag))
|
|
}
|
|
result := db.Exec("UPDATE users SET mfa_status = ? WHERE name = ?", constant.StatusDisable, username)
|
|
if result.Error != nil {
|
|
return result.Error
|
|
}
|
|
return nil
|
|
}
|
|
db, err := loadDBConn("core.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return setSettingByKey(db, "MFAStatus", constant.StatusDisable)
|
|
},
|
|
}
|
|
var resetSSLCmd = &cobra.Command{
|
|
Use: "https",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
if !isRoot() {
|
|
fmt.Println(i18n.GetMsgWithMapForCmd("SudoHelper", map[string]interface{}{"cmd": "sudo 1pctl reset https"}))
|
|
return nil
|
|
}
|
|
db, err := loadDBConn("core.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := setSettingByKey(db, "SSL", constant.StatusDisable); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
var resetEntranceCmd = &cobra.Command{
|
|
Use: "entrance",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
if !isRoot() {
|
|
fmt.Println(i18n.GetMsgWithMapForCmd("SudoHelper", map[string]interface{}{"cmd": "sudo 1pctl reset entrance"}))
|
|
return nil
|
|
}
|
|
db, err := loadDBConn("core.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return setSettingByKey(db, "SecurityEntrance", "")
|
|
},
|
|
}
|
|
var resetBindIpsCmd = &cobra.Command{
|
|
Use: "ips",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
if !isRoot() {
|
|
fmt.Println(i18n.GetMsgWithMapForCmd("SudoHelper", map[string]interface{}{"cmd": "sudo 1pctl reset ips"}))
|
|
return nil
|
|
}
|
|
db, err := loadDBConn("core.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := setSettingByKey(db, "AllowIPs", ""); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
var resetDomainCmd = &cobra.Command{
|
|
Use: "domain",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
if !isRoot() {
|
|
fmt.Println(i18n.GetMsgWithMapForCmd("SudoHelper", map[string]interface{}{"cmd": "sudo 1pctl reset domain"}))
|
|
return nil
|
|
}
|
|
db, err := loadDBConn("core.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := setSettingByKey(db, "BindDomain", ""); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
|
|
var resetPasskeyCmd = &cobra.Command{
|
|
Use: "passkey",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
i18n.UseI18nForCmd(language)
|
|
if !isRoot() {
|
|
fmt.Println(i18n.GetMsgWithMapForCmd("SudoHelper", map[string]interface{}{"cmd": "sudo 1pctl reset passkey"}))
|
|
return nil
|
|
}
|
|
db, err := loadDBConn("core.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := setSettingByKey(db, passkey.PasskeyUserIDSettingKey, ""); err != nil {
|
|
return err
|
|
}
|
|
return setSettingByKey(db, passkey.PasskeyCredentialSettingKey, "")
|
|
},
|
|
}
|
|
|
|
func loadResetHelper() {
|
|
fmt.Println(i18n.GetMsgByKeyForCmd("ResetCommands"))
|
|
fmt.Println("\nUsage:\n 1panel reset [command]\n\nAvailable Commands:")
|
|
fmt.Println("\n domain " + i18n.GetMsgByKeyForCmd("ResetDomain"))
|
|
fmt.Println(" entrance " + i18n.GetMsgByKeyForCmd("ResetEntrance"))
|
|
fmt.Println(" https " + i18n.GetMsgByKeyForCmd("ResetHttps"))
|
|
fmt.Println(" ips " + i18n.GetMsgByKeyForCmd("ResetIPs"))
|
|
fmt.Println(" mfa " + i18n.GetMsgByKeyForCmd("ResetMFA"))
|
|
fmt.Println(" passkey " + i18n.GetMsgByKeyForCmd("ResetPasskey"))
|
|
fmt.Println("\nFlags:\n -h, --help help for reset")
|
|
fmt.Println("\nUse \"1panel reset [command] --help\" for more information about a command.")
|
|
}
|