feat: 删除不需要文件夹
This commit is contained in:
142
features/aaaa/aaaa.go
Normal file
142
features/aaaa/aaaa.go
Normal file
@@ -0,0 +1,142 @@
|
||||
package aaaa
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/go-resty/resty/v2"
|
||||
|
||||
"ems.agt/lib/dborm"
|
||||
"ems.agt/lib/log"
|
||||
"ems.agt/lib/oauth"
|
||||
"ems.agt/lib/services"
|
||||
"ems.agt/restagent/config"
|
||||
)
|
||||
|
||||
var (
|
||||
UriAAAASSO = config.DefaultUriPrefix + "/aaaa/{apiVersion}/security/sso" // for 4A external
|
||||
|
||||
CustomUriAAAASSO = config.UriPrefix + "/aaaa/{apiVersion}/security/sso" // for 4A external
|
||||
)
|
||||
|
||||
var client = resty.New()
|
||||
|
||||
func init() {
|
||||
/*
|
||||
client.
|
||||
SetTimeout(10 * time.Second).
|
||||
SetRetryCount(1).
|
||||
SetRetryWaitTime(1 * time.Second).
|
||||
SetRetryMaxWaitTime(2 * time.Second).
|
||||
SetRetryAfter(func(client *resty.Client, resp *resty.Response) (time.Duration, error) {
|
||||
return 0, errors.New("quota exceeded")
|
||||
})
|
||||
*/
|
||||
client.SetTimeout(3 * time.Second)
|
||||
}
|
||||
|
||||
type AAAATicket struct {
|
||||
Ticket string `json:"ticket"`
|
||||
}
|
||||
|
||||
type SSOResult struct {
|
||||
SSO struct {
|
||||
Result string `json:"result"`
|
||||
ResultMsg string `json:"result_msg"`
|
||||
Ticket string `json:"ticket"`
|
||||
ResultMsgcode string `json:"result_msgcode"`
|
||||
Account []struct {
|
||||
Accid string `json:"accid"`
|
||||
} `json:"account"`
|
||||
} `json:"sso"`
|
||||
}
|
||||
|
||||
// Get system state from NF/NFs
|
||||
func GetSSOFromAAAA(w http.ResponseWriter, r *http.Request) {
|
||||
log.Info("GetSSOFromAAAA processing... ")
|
||||
|
||||
vars := r.URL.Query()
|
||||
ticket := vars["ticket"]
|
||||
if len(ticket) == 0 {
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
log.Debug("ticket:", ticket)
|
||||
|
||||
log.Debugf("r.RemoteAddr:%s r.Host: %s", r.RemoteAddr, r.Host)
|
||||
|
||||
aaaaIp := r.RemoteAddr[:strings.Index(r.RemoteAddr, ":")]
|
||||
omcIp := r.Host[:strings.Index(r.Host, ":")]
|
||||
|
||||
log.Debugf("aaaaIp=%s omcIp=%s", aaaaIp, omcIp)
|
||||
requestURI2NF := fmt.Sprintf("http://%s:8080/qryUserByTicket", aaaaIp)
|
||||
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
|
||||
aaaaTicket := &AAAATicket{
|
||||
Ticket: ticket[0],
|
||||
}
|
||||
|
||||
body, err := json.Marshal(aaaaTicket)
|
||||
if err != nil {
|
||||
log.Error("Failed to json.Marshal:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
response, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
SetBody(body).
|
||||
Post(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to Post:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
log.Debug("response:", response)
|
||||
|
||||
switch response.StatusCode() {
|
||||
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
|
||||
ssoResult := new(SSOResult)
|
||||
json.Unmarshal(response.Body(), ssoResult)
|
||||
var accid string
|
||||
if len(ssoResult.SSO.Account) != 0 {
|
||||
accid = ssoResult.SSO.Account[0].Accid
|
||||
}
|
||||
|
||||
log.Debug("accid:", accid)
|
||||
exist, err := dborm.XormIsExistUser(accid)
|
||||
if err != nil {
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
token := oauth.GenRandToken("aaaa") // Generate new token to session ID
|
||||
affected, err := dborm.XormInsertSession(accid, r.RemoteAddr, token,
|
||||
config.GetExpiresFromConfig(), config.GetYamlConfig().Auth.Session)
|
||||
if err != nil {
|
||||
log.Error("Failed to XormInsertSession:", err)
|
||||
if affected == -1 {
|
||||
services.ResponseForbidden403MultiLoginNotAllowed(w)
|
||||
} else {
|
||||
services.ResponseBadRequest400IncorrectLogin(w)
|
||||
}
|
||||
return
|
||||
}
|
||||
if exist == true {
|
||||
redirectUrl := fmt.Sprintf("http://%s:8888/home.html?user=%s&token=%s", omcIp, accid, token)
|
||||
services.ResponseRedirect(w, redirectUrl, accid, token)
|
||||
return
|
||||
} else {
|
||||
services.ResponseBadRequest400IncorrectLogin(w)
|
||||
return
|
||||
}
|
||||
default:
|
||||
services.ResponseForbidden403NotPermission(w)
|
||||
return
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user