1
0
mirror of https://github.com/haiwen/seafile-server.git synced 2025-09-19 18:16:25 +00:00

Go dont't parse seahub secret key

This commit is contained in:
杨赫然
2024-08-29 10:01:27 +08:00
parent 915be2dc90
commit ec5445b93f
2 changed files with 15 additions and 44 deletions

View File

@@ -45,7 +45,7 @@ var logFp *os.File
var dbType string var dbType string
var seafileDB, ccnetDB *sql.DB var seafileDB, ccnetDB *sql.DB
var seahubURL, seahubPK string var seahubURL string
func init() { func init() {
flag.StringVar(&centralDir, "F", "", "central config directory") flag.StringVar(&centralDir, "F", "", "central config directory")
@@ -266,37 +266,29 @@ func loadSeafileDB() {
dbType = dbEngine dbType = dbEngine
} }
func loadSeahubPK() { func loadSeahubConfig() error {
confPath := filepath.Join(centralDir, "seahub_settings.py") confPath := filepath.Join(centralDir, "seahub_settings.py")
file, err := os.Open(confPath) file, err := os.Open(confPath)
if err != nil { if err != nil {
log.Warnf("Failed to open seahub_settings.py: %v", err) log.Warnf("Failed to open seahub_settings.py: %v", err)
return return err
} }
defer file.Close() defer file.Close()
scanner := bufio.NewScanner(file) scanner := bufio.NewScanner(file)
pkRe, err := regexp.Compile(`SECRET_KEY\\s*=\\s*'([^']*)'`) siteRootExpr := "SITE_ROOT\\s*=\\s*'([^']*)'"
siteRootRe, err := regexp.Compile(siteRootExpr)
if err != nil { if err != nil {
log.Warnf("Failed to compile regex: %v", err) log.Warnf("Failed to compile regex: %v", err)
return return err
}
siteRootRe, err := regexp.Compile(`SITE_ROOT\\s*=\\s*'([^']*)'`)
if err != nil {
log.Warnf("Failed to compile regex: %v", err)
return
} }
siteRoot := "" siteRoot := ""
for scanner.Scan() { for scanner.Scan() {
line := scanner.Text() line := scanner.Text()
matches := pkRe.FindStringSubmatch(line) matches := siteRootRe.FindStringSubmatch(line)
if matches != nil {
seahubPK = matches[1]
}
matches = siteRootRe.FindStringSubmatch(line)
if matches != nil { if matches != nil {
siteRoot = matches[1] siteRoot = matches[1]
} }
@@ -306,6 +298,8 @@ func loadSeahubPK() {
} else { } else {
seahubURL = ("http://127.0.0.1:8000/api/v2.1/internal/user-list/") seahubURL = ("http://127.0.0.1:8000/api/v2.1/internal/user-list/")
} }
return nil
} }
func writePidFile(pid_file_path string) error { func writePidFile(pid_file_path string) error {
@@ -406,7 +400,9 @@ func main() {
fp.Close() fp.Close()
} }
loadSeahubPK() if err := loadSeahubConfig(); err != nil {
log.Fatalf("Failed to load seahub config: %v", err)
}
repomgr.Init(seafileDB) repomgr.Init(seafileDB)

View File

@@ -10,7 +10,6 @@ import (
"strings" "strings"
"time" "time"
jwt "github.com/golang-jwt/jwt/v5"
"github.com/haiwen/seafile-server/fileserver/commitmgr" "github.com/haiwen/seafile-server/fileserver/commitmgr"
"github.com/haiwen/seafile-server/fileserver/fsmgr" "github.com/haiwen/seafile-server/fileserver/fsmgr"
"github.com/haiwen/seafile-server/fileserver/utils" "github.com/haiwen/seafile-server/fileserver/utils"
@@ -381,9 +380,8 @@ func getNickNameByModifier(emailToNickname map[string]string, modifier string) s
if ok { if ok {
return nickname return nickname
} }
if seahubPK != "" {
nickname = postGetNickName(modifier) nickname = postGetNickName(modifier)
}
if nickname == "" { if nickname == "" {
nickname = modifier nickname = modifier
@@ -394,32 +392,9 @@ func getNickNameByModifier(emailToNickname map[string]string, modifier string) s
return nickname return nickname
} }
type SeahubClaims struct {
Exp int64
IsInternal bool `json:"is_internal"`
jwt.RegisteredClaims
}
func (*SeahubClaims) Valid() error {
return nil
}
func postGetNickName(modifier string) string { func postGetNickName(modifier string) string {
claims := SeahubClaims{
time.Now().Add(time.Second * 300).Unix(),
true,
jwt.RegisteredClaims{},
}
token := jwt.NewWithClaims(jwt.GetSigningMethod("HS256"), &claims)
tokenString, err := token.SignedString([]byte(seahubPK))
if err != nil {
return ""
}
header := map[string][]string{ header := map[string][]string{
"Authorization": {"Token " + tokenString}, "Content-Type": {"application/json"},
"Content-Type": {"application/json"},
} }
data, err := json.Marshal(map[string]interface{}{ data, err := json.Marshal(map[string]interface{}{