maintenance 바로 반영 안되는 문제 수정

This commit is contained in:
2024-02-04 15:23:33 +09:00
parent 45e7169c3a
commit a3b4ac47b8
2 changed files with 33 additions and 7 deletions

View File

@ -457,9 +457,15 @@ func (mg *Maingate) RegisterHandlers(ctx context.Context, serveMux *http.ServeMu
logger.Println("Service is registered :", mg.service().ServiceCode)
if *devflag {
serveMux.HandleFunc(gocommon.MakeHttpHandlerPattern(prefix, mg.service().ServiceCode, "/"), mg.service().serveHTTP_dev)
serveMux.HandleFunc(gocommon.MakeHttpHandlerPattern(prefix, mg.service().ServiceCode, "/"), func(w http.ResponseWriter, r *http.Request) {
// mg.service()를 요청마다 불러야 함
mg.service().serveHTTP_dev(w, r)
})
} else {
serveMux.HandleFunc(gocommon.MakeHttpHandlerPattern(prefix, mg.service().ServiceCode, "/"), mg.service().serveHTTP)
serveMux.HandleFunc(gocommon.MakeHttpHandlerPattern(prefix, mg.service().ServiceCode, "/"), func(w http.ResponseWriter, r *http.Request) {
// mg.service()를 요청마다 불러야 함
mg.service().serveHTTP(w, r)
})
}
serveMux.HandleFunc(gocommon.MakeHttpHandlerPattern(prefix, "api/"), mg.api)

View File

@ -258,7 +258,17 @@ func (sh *serviceDescription) prepare(mg *Maingate) error {
if globalApiToken, err := primitive.ObjectIDFromHex(config.GlobalMaingateToken); err == nil {
if !globalApiToken.IsZero() {
sh.ServerApiTokens = append(sh.ServerApiTokens, globalApiToken)
f := func() bool {
for _, t := range sh.ServerApiTokens {
if t == globalApiToken {
return true
}
}
return false
}()
if !f {
sh.ServerApiTokens = append(sh.ServerApiTokens, globalApiToken)
}
}
}
@ -857,10 +867,14 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
divname := queryvals.Get("div")
divname = strings.Trim(divname, `"`)
div := sh.Divisions[divname]
var addrresp string
if div != nil {
logger.Println("/addr :", divname, div.State)
switch div.State {
case DivisionState_FullOpen:
w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
addrresp = fmt.Sprintf(`{"service":"%s"}`, div.Url)
//w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
case DivisionState_RestrictedOpen:
// 점검중이면 whitelist만 입장 가능
@ -874,10 +888,12 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
wm := &whitelistmember{Email: authInfo.Email, Platform: authInfo.Platform}
if _, ok := sh.wl.get(wm.Key()); ok {
// qa 권한이면 입장 가능
w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
addrresp = fmt.Sprintf(`{"service":"%s"}`, div.Url)
//w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
} else if div.Maintenance != nil {
// 권한이 없으므로 공지
w.Write([]byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)))
addrresp = fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)
//w.Write([]byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)))
} else {
logger.Println("div.Maintenance is nil :", divname)
}
@ -885,11 +901,15 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
case DivisionState_Maintenance:
// 점검중. 아무도 못들어감
if div.Maintenance != nil {
w.Write([]byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)))
logger.Println("/addr :", divname, div.State, *div.Maintenance)
addrresp = fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)
//w.Write([]byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)))
} else {
logger.Println("div.Maintenance is nil :", divname)
}
}
logger.Println("/addr resp :", addrresp)
w.Write([]byte(addrresp))
} else {
logger.Println("div is not found :", divname, sh.Divisions)
logger.Println("check maingate database 'service.divisions' :", config.Mongo)