url 타입 변경

This commit is contained in:
2024-07-20 12:26:51 +09:00
parent dbd22fe285
commit bdae4eeb48
2 changed files with 20 additions and 13 deletions

View File

@ -469,7 +469,9 @@ func (mg *Maingate) RegisterHandlers(ctx context.Context, serveMux *http.ServeMu
State: DivisionState_FullOpen, State: DivisionState_FullOpen,
}, },
Url: fmt.Sprintf("http://%s:%d/warehouse", ipaddr, *portptr), Urls: bson.M{
"warehouse": fmt.Sprintf("http://%s:%d/warehouse", ipaddr, *portptr),
},
}, },
} }
} }

View File

@ -91,7 +91,9 @@ type DivisionForUser struct {
type Division struct { type Division struct {
DivisionForUser `bson:",inline" json:",inline"` DivisionForUser `bson:",inline" json:",inline"`
Url string `bson:"url" json:"url"` Url_Deprecated string `bson:"url" json:"url"`
Urls bson.M `bson:"urls" json:"urls"`
urlsSerialized []byte
} }
type serviceDescription struct { type serviceDescription struct {
@ -177,6 +179,14 @@ func (sh *serviceDescription) prepare(mg *Maingate) error {
defaultDivNames[dn] = true defaultDivNames[dn] = true
} }
if len(div.Url_Deprecated) > 0 && len(div.Urls) == 0 {
div.Urls = bson.M{"warehouse": div.Url_Deprecated}
}
div.urlsSerialized, _ = json.Marshal(bson.M{
"service": div.Urls,
})
divsForUsers[dn] = &div.DivisionForUser divsForUsers[dn] = &div.DivisionForUser
if len(div.State) == 0 { if len(div.State) == 0 {
div.State = DivisionState_FullOpen div.State = DivisionState_FullOpen
@ -1014,14 +1024,13 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
divname := queryvals.Get("div") divname := queryvals.Get("div")
divname = strings.Trim(divname, `"`) divname = strings.Trim(divname, `"`)
div := sh.Divisions[divname] div := sh.Divisions[divname]
var addrresp string var addrresp []byte
if div != nil { if div != nil {
logger.Println("/addr :", divname, div.State) logger.Println("/addr :", divname, div.State)
switch div.State { switch div.State {
case DivisionState_FullOpen: case DivisionState_FullOpen:
addrresp = fmt.Sprintf(`{"service":"%s"}`, div.Url) addrresp = div.urlsSerialized
//w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
case DivisionState_RestrictedOpen: case DivisionState_RestrictedOpen:
// 점검중이면 whitelist만 입장 가능 // 점검중이면 whitelist만 입장 가능
@ -1035,12 +1044,9 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
wm := &whitelistmember{Email: authInfo.Email, Platform: authInfo.Platform} wm := &whitelistmember{Email: authInfo.Email, Platform: authInfo.Platform}
if _, ok := sh.wl.get(wm.Key()); ok { if _, ok := sh.wl.get(wm.Key()); ok {
// qa 권한이면 입장 가능 // qa 권한이면 입장 가능
addrresp = fmt.Sprintf(`{"service":"%s"}`, div.Url) addrresp = div.urlsSerialized
//w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
} else if div.Maintenance != nil { } else if div.Maintenance != nil {
// 권한이 없으므로 공지 // 권한이 없으므로 공지
addrresp = fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)
//w.Write([]byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)))
} else { } else {
logger.Println("div.Maintenance is nil :", divname) logger.Println("div.Maintenance is nil :", divname)
} }
@ -1049,14 +1055,13 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
// 점검중. 아무도 못들어감 // 점검중. 아무도 못들어감
if div.Maintenance != nil { if div.Maintenance != nil {
logger.Println("/addr :", divname, div.State, *div.Maintenance) logger.Println("/addr :", divname, div.State, *div.Maintenance)
addrresp = fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link) addrresp = []byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link))
//w.Write([]byte(fmt.Sprintf(`{"notice":"%s"}`, div.Maintenance.link)))
} else { } else {
logger.Println("div.Maintenance is nil :", divname) logger.Println("div.Maintenance is nil :", divname)
} }
} }
logger.Println("/addr resp :", addrresp) logger.Println("/addr resp :", string(addrresp))
w.Write([]byte(addrresp)) w.Write(addrresp)
} else { } else {
logger.Println("div is not found :", divname, sh.Divisions) logger.Println("div is not found :", divname, sh.Divisions)
logger.Println("check maingate database 'service.divisions' :", config.Mongo) logger.Println("check maingate database 'service.divisions' :", config.Mongo)