block 테스트 함수 추가
This commit is contained in:
@ -198,6 +198,9 @@ func (caller apiCaller) blockAPI(w http.ResponseWriter, r *http.Request) error {
|
|||||||
logger.Println("account is not blocked. err :", err)
|
logger.Println("account is not blocked. err :", err)
|
||||||
} else {
|
} else {
|
||||||
logger.Println("account is blocked :", meta)
|
logger.Println("account is blocked :", meta)
|
||||||
|
|
||||||
|
bi.Accid = accid
|
||||||
|
caller.mg.bl.add(&bi)
|
||||||
mg.sessionProvider.Delete(accid)
|
mg.sessionProvider.Delete(accid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,6 +226,8 @@ func (caller apiCaller) blockAPI(w http.ResponseWriter, r *http.Request) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
caller.mg.bl.remove(idobj)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,24 +84,6 @@ func (p *memberContainerPtr[K, T]) all() []T {
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *memberContainerPtr[K, T]) contains(key K, out *T) bool {
|
|
||||||
ptr := atomic.LoadPointer(&p.ptr)
|
|
||||||
src := (*map[K]T)(ptr)
|
|
||||||
|
|
||||||
found, exists := (*src)[key]
|
|
||||||
if exists {
|
|
||||||
if found.Expired() {
|
|
||||||
p.remove(key)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if out != nil {
|
|
||||||
out = &found
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *memberContainerPtr[K, T]) watchCollection(parentctx context.Context, coll gocommon.CollectionName, mc gocommon.MongoClient) {
|
func (p *memberContainerPtr[K, T]) watchCollection(parentctx context.Context, coll gocommon.CollectionName, mc gocommon.MongoClient) {
|
||||||
defer func() {
|
defer func() {
|
||||||
s := recover()
|
s := recover()
|
||||||
|
|||||||
@ -537,11 +537,21 @@ func (sh *serviceDescription) authorize_dev(w http.ResponseWriter, r *http.Reque
|
|||||||
if r.Method == "DELETE" {
|
if r.Method == "DELETE" {
|
||||||
sk := r.Header.Get("AS-X-SESSION")
|
sk := r.Header.Get("AS-X-SESSION")
|
||||||
if authinfo, err := sh.sessionProvider.Query(sk); err == nil {
|
if authinfo, err := sh.sessionProvider.Query(sk); err == nil {
|
||||||
|
bt := r.Header.Get("AS-X-BLOCK")
|
||||||
|
if len(bt) > 0 {
|
||||||
|
dur, _ := strconv.ParseInt(bt, 10, 0)
|
||||||
|
sh.bl.add(&blockinfo{
|
||||||
|
Start: primitive.NewDateTimeFromTime(time.Now().UTC()),
|
||||||
|
End: primitive.NewDateTimeFromTime(time.Now().UTC().Add(time.Second * time.Duration(dur))),
|
||||||
|
Accid: authinfo.Account,
|
||||||
|
})
|
||||||
|
}
|
||||||
sh.sessionProvider.Delete(authinfo.Account)
|
sh.sessionProvider.Delete(authinfo.Account)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
sh.authorize(w, r)
|
sh.authorize(w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -576,8 +586,17 @@ func (sh *serviceDescription) authorize(w http.ResponseWriter, r *http.Request)
|
|||||||
"expirein": sh.sessionTTL.Seconds(),
|
"expirein": sh.sessionTTL.Seconds(),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
logger.Println("sh.sessionProvider.Touch failed :", sk)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
authinfo, _ := sh.sessionProvider.Query(sk)
|
||||||
|
if _, ok := sh.bl.get(authinfo.Account); ok {
|
||||||
|
w.WriteHeader(http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -663,8 +682,7 @@ func (sh *serviceDescription) authorize(w http.ResponseWriter, r *http.Request)
|
|||||||
oldcreate := account["create"].(primitive.DateTime)
|
oldcreate := account["create"].(primitive.DateTime)
|
||||||
newaccount := oldcreate == createtime
|
newaccount := oldcreate == createtime
|
||||||
|
|
||||||
var bi *blockinfo
|
if bi, ok := sh.bl.get(accid); ok {
|
||||||
if sh.bl.contains(accid, &bi) {
|
|
||||||
// 블럭된 계정. 블락 정보를 알려준다.
|
// 블럭된 계정. 블락 정보를 알려준다.
|
||||||
w.Header().Add("MG-ACCOUNTBLOCK-START", strconv.FormatInt(bi.Start.Time().Unix(), 10))
|
w.Header().Add("MG-ACCOUNTBLOCK-START", strconv.FormatInt(bi.Start.Time().Unix(), 10))
|
||||||
w.Header().Add("MG-ACCOUNTBLOCK-END", strconv.FormatInt(bi.End.Time().Unix(), 10))
|
w.Header().Add("MG-ACCOUNTBLOCK-END", strconv.FormatInt(bi.End.Time().Unix(), 10))
|
||||||
@ -812,7 +830,7 @@ 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 sh.wl.contains(wm.Key(), nil) {
|
if _, ok := sh.wl.get(wm.Key()); ok {
|
||||||
// qa 권한이면 입장 가능
|
// qa 권한이면 입장 가능
|
||||||
w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
|
w.Write([]byte(fmt.Sprintf(`{"service":"%s"}`, div.Url)))
|
||||||
} else if div.Maintenance != nil {
|
} else if div.Maintenance != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user