block collection 에 account를 복수로 저장
This commit is contained in:
@ -22,9 +22,10 @@ import (
|
||||
)
|
||||
|
||||
type blockinfo struct {
|
||||
Id primitive.ObjectID `bson:"_id" json:"_id"`
|
||||
Start primitive.DateTime `bson:"start" json:"start"`
|
||||
End primitive.DateTime `bson:"_ts" json:"_ts"`
|
||||
Accid primitive.ObjectID `bson:"_id,omitempty" json:"_id,omitempty"`
|
||||
End primitive.DateTime `bson:"end" json:"end"`
|
||||
Accid primitive.ObjectID `bson:"accid,omitempty" json:"accid,omitempty"`
|
||||
Meta primitive.M `bson:"meta,omitempty" json:"meta,omitempty"`
|
||||
}
|
||||
|
||||
@ -99,8 +100,6 @@ type serviceDescription struct {
|
||||
VersionSplits map[string]string `bson:"version_splits" json:"version_splits"`
|
||||
|
||||
sessionProvider session.Provider
|
||||
wl *memberContainerPtr[string, *whitelistmember]
|
||||
bl *memberContainerPtr[primitive.ObjectID, *blockinfo]
|
||||
mongoClient gocommon.MongoClient
|
||||
sessionTTL time.Duration
|
||||
|
||||
@ -264,9 +263,6 @@ func (sh *serviceDescription) prepare(mg *Maingate) error {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sh.wl = &mg.wl
|
||||
sh.bl = &mg.bl
|
||||
sh.serviceSerialized, _ = json.Marshal(sh)
|
||||
|
||||
return nil
|
||||
@ -672,15 +668,6 @@ func (sh *serviceDescription) authorize_dev(w http.ResponseWriter, r *http.Reque
|
||||
if r.Method == "DELETE" {
|
||||
sk := r.Header.Get("AS-X-SESSION")
|
||||
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.RevokeAll(authinfo.Account)
|
||||
}
|
||||
|
||||
@ -799,7 +786,8 @@ func (sh *serviceDescription) authorize(w http.ResponseWriter, r *http.Request)
|
||||
oldcreate := account["create"].(primitive.DateTime)
|
||||
newaccount := oldcreate == createtime
|
||||
|
||||
if bi, ok := sh.bl.get(accid); ok {
|
||||
var bi blockinfo
|
||||
if err := sh.mongoClient.FindOneAs(CollectionBlock, bson.M{"accid": accid, "end": bson.M{"$gt": time.Now().UTC()}}, &bi); err == nil {
|
||||
// 블럭된 계정. 블락 정보를 알려준다.
|
||||
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))
|
||||
@ -1081,7 +1069,8 @@ func (sh *serviceDescription) serveHTTP(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
wm := &whitelistmember{Alias: authInfo.Alias, Platform: authInfo.Platform}
|
||||
if _, ok := sh.wl.get(wm.Key()); ok {
|
||||
doc, err := sh.mongoClient.FindOne(CollectionWhitelist, bson.M{"alias": wm.Key()})
|
||||
if err == nil && doc != nil {
|
||||
// qa 권한이면 입장 가능
|
||||
addrresp = div.urlsSerialized
|
||||
} else if div.Maintenance != nil {
|
||||
|
||||
Reference in New Issue
Block a user