mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-02-24 14:54:43 +08:00
feat: 1pctl 支持 mfa、ssl 和安全入口关闭 (#818)
This commit is contained in:
parent
c5e8a3fa04
commit
0ebd04f012
4 changed files with 86 additions and 44 deletions
49
cmd/server/cmd/reset.go
Normal file
49
cmd/server/cmd/reset.go
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
RootCmd.AddCommand(resetMFACmd)
|
||||||
|
RootCmd.AddCommand(resetSSLCmd)
|
||||||
|
RootCmd.AddCommand(resetEntranceCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
var resetMFACmd = &cobra.Command{
|
||||||
|
Use: "reset-mfa",
|
||||||
|
Short: "关闭 1Panel 两步验证",
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
db, err := loadDBConn()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return setSettingByKey(db, "MFAStatus", "disable")
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
var resetSSLCmd = &cobra.Command{
|
||||||
|
Use: "reset-ssl",
|
||||||
|
Short: "取消 1Panel https 方式登录",
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
db, err := loadDBConn()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return setSettingByKey(db, "SSL", "disable")
|
||||||
|
},
|
||||||
|
}
|
||||||
|
var resetEntranceCmd = &cobra.Command{
|
||||||
|
Use: "reset-entrance",
|
||||||
|
Short: "取消 1Panel 安全入口",
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
db, err := loadDBConn()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return setSettingByKey(db, "SecurityEntranceStatus", "disable")
|
||||||
|
},
|
||||||
|
}
|
|
@ -1,10 +1,14 @@
|
||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/1Panel-dev/1Panel/backend/server"
|
"github.com/1Panel-dev/1Panel/backend/server"
|
||||||
|
cmdUtils "github.com/1Panel-dev/1Panel/backend/utils/cmd"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
"gorm.io/driver/sqlite"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,8 +32,32 @@ type setting struct {
|
||||||
About string `json:"about" gorm:"type:longText"`
|
About string `json:"about" gorm:"type:longText"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func loadDBConn() (*gorm.DB, error) {
|
||||||
|
stdout, err := cmdUtils.Exec("grep '^BASE_DIR=' /usr/bin/1pctl | cut -d'=' -f2")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("handle load `BASE_DIR` failed, err: %v", err)
|
||||||
|
}
|
||||||
|
baseDir := strings.ReplaceAll(stdout, "\n", "")
|
||||||
|
if len(baseDir) == 0 {
|
||||||
|
return nil, fmt.Errorf("error `BASE_DIR` find in /usr/bin/1pctl \n")
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(baseDir, "/") {
|
||||||
|
baseDir = baseDir[:strings.LastIndex(baseDir, "/")]
|
||||||
|
}
|
||||||
|
|
||||||
|
db, err := gorm.Open(sqlite.Open(baseDir+"/1panel/db/1Panel.db"), &gorm.Config{})
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("init my db conn failed, err: %v \n", err)
|
||||||
|
}
|
||||||
|
return db, nil
|
||||||
|
}
|
||||||
|
|
||||||
func getSettingByKey(db *gorm.DB, key string) string {
|
func getSettingByKey(db *gorm.DB, key string) string {
|
||||||
var setting setting
|
var setting setting
|
||||||
_ = db.Where("key = ?", key).First(&setting).Error
|
_ = db.Where("key = ?", key).First(&setting).Error
|
||||||
return setting.Value
|
return setting.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setSettingByKey(db *gorm.DB, key, value string) error {
|
||||||
|
return db.Model(&setting{}).Where("key = ?", key).Updates(map[string]interface{}{"value": value}).Error
|
||||||
|
}
|
||||||
|
|
|
@ -2,14 +2,10 @@ package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/1Panel-dev/1Panel/backend/global"
|
"github.com/1Panel-dev/1Panel/backend/global"
|
||||||
cmdUtils "github.com/1Panel-dev/1Panel/backend/utils/cmd"
|
|
||||||
"github.com/1Panel-dev/1Panel/backend/utils/encrypt"
|
"github.com/1Panel-dev/1Panel/backend/utils/encrypt"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"gorm.io/driver/sqlite"
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -20,21 +16,9 @@ var userinfoCmd = &cobra.Command{
|
||||||
Use: "user-info",
|
Use: "user-info",
|
||||||
Short: "获取用户信息",
|
Short: "获取用户信息",
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
stdout, err := cmdUtils.Exec("grep '^BASE_DIR=' /usr/bin/1pctl | cut -d'=' -f2")
|
db, err := loadDBConn()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return fmt.Errorf("init my db conn failed, err: %v \n", err)
|
||||||
}
|
|
||||||
baseDir := strings.ReplaceAll(stdout, "\n", "")
|
|
||||||
if len(baseDir) == 0 {
|
|
||||||
fmt.Printf("error `BASE_DIR` find in /usr/bin/1pctl \n")
|
|
||||||
}
|
|
||||||
if strings.HasSuffix(baseDir, "/") {
|
|
||||||
baseDir = baseDir[:strings.LastIndex(baseDir, "/")]
|
|
||||||
}
|
|
||||||
|
|
||||||
db, err := gorm.Open(sqlite.Open(baseDir+"/1panel/db/1Panel.db"), &gorm.Config{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("init my db conn failed, err: %v \n", err)
|
|
||||||
}
|
}
|
||||||
user := getSettingByKey(db, "UserName")
|
user := getSettingByKey(db, "UserName")
|
||||||
password := getSettingByKey(db, "Password")
|
password := getSettingByKey(db, "Password")
|
||||||
|
@ -51,15 +35,10 @@ var userinfoCmd = &cobra.Command{
|
||||||
p = password
|
p = password
|
||||||
}
|
}
|
||||||
|
|
||||||
protocol := "http"
|
|
||||||
if ssl == "enable" {
|
|
||||||
protocol = "https"
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("username: %s\n", user)
|
fmt.Printf("username: %s\n", user)
|
||||||
fmt.Printf("password: %s\n", p)
|
fmt.Printf("password: %s\n", p)
|
||||||
fmt.Printf("port: %s\n", port)
|
fmt.Printf("port: %s\n", port)
|
||||||
fmt.Printf("protocol: %s\n", protocol)
|
fmt.Printf("ssl: %s\n", ssl)
|
||||||
fmt.Printf("entrance: %s\n", entrance)
|
fmt.Printf("entrance: %s\n", entrance)
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,15 +2,12 @@ package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/1Panel-dev/1Panel/backend/configs"
|
"github.com/1Panel-dev/1Panel/backend/configs"
|
||||||
"github.com/1Panel-dev/1Panel/cmd/server/conf"
|
"github.com/1Panel-dev/1Panel/cmd/server/conf"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"strings"
|
|
||||||
|
|
||||||
cmdUtils "github.com/1Panel-dev/1Panel/backend/utils/cmd"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"gorm.io/driver/sqlite"
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -21,21 +18,9 @@ var versionCmd = &cobra.Command{
|
||||||
Use: "version",
|
Use: "version",
|
||||||
Short: "获取系统版本信息",
|
Short: "获取系统版本信息",
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
stdout, err := cmdUtils.Exec("grep '^BASE_DIR=' /usr/bin/1pctl | cut -d'=' -f2")
|
db, err := loadDBConn()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return err
|
||||||
}
|
|
||||||
baseDir := strings.ReplaceAll(stdout, "\n", "")
|
|
||||||
if len(baseDir) == 0 {
|
|
||||||
fmt.Printf("error `BASE_DIR` find in /usr/bin/1pctl \n")
|
|
||||||
}
|
|
||||||
if strings.HasSuffix(baseDir, "/") {
|
|
||||||
baseDir = baseDir[:strings.LastIndex(baseDir, "/")]
|
|
||||||
}
|
|
||||||
|
|
||||||
db, err := gorm.Open(sqlite.Open(baseDir+"/1panel/db/1Panel.db"), &gorm.Config{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("init my db conn failed, err: %v \n", err)
|
|
||||||
}
|
}
|
||||||
version := getSettingByKey(db, "SystemVersion")
|
version := getSettingByKey(db, "SystemVersion")
|
||||||
appStoreVersion := getSettingByKey(db, "AppStoreVersion")
|
appStoreVersion := getSettingByKey(db, "AppStoreVersion")
|
||||||
|
@ -44,9 +29,10 @@ var versionCmd = &cobra.Command{
|
||||||
fmt.Printf("appstore version: %s\n", appStoreVersion)
|
fmt.Printf("appstore version: %s\n", appStoreVersion)
|
||||||
config := configs.ServerConfig{}
|
config := configs.ServerConfig{}
|
||||||
if err := yaml.Unmarshal(conf.AppYaml, &config); err != nil {
|
if err := yaml.Unmarshal(conf.AppYaml, &config); err != nil {
|
||||||
panic(err)
|
return fmt.Errorf("unmarshal conf.App.Yaml failed, errL %v", err)
|
||||||
|
} else {
|
||||||
|
fmt.Printf("mode: %s\n", config.System.Mode)
|
||||||
}
|
}
|
||||||
fmt.Printf("mode: %s\n", config.System.Mode)
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue