mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-14 16:09:32 +01:00
rest: Expose DLINEs and KLINEs as xlines
This commit is contained in:
parent
1b92f9e93f
commit
8834de5b32
@ -28,9 +28,9 @@ var (
|
|||||||
// IPRestrictTime contains the expiration info about the given IP.
|
// IPRestrictTime contains the expiration info about the given IP.
|
||||||
type IPRestrictTime struct {
|
type IPRestrictTime struct {
|
||||||
// Duration is how long this block lasts for.
|
// Duration is how long this block lasts for.
|
||||||
Duration time.Duration
|
Duration time.Duration `json:"duration"`
|
||||||
// Expires is when this block expires.
|
// Expires is when this block expires.
|
||||||
Expires time.Time
|
Expires time.Time `json:"expires"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsExpired returns true if the time has expired.
|
// IsExpired returns true if the time has expired.
|
||||||
@ -41,11 +41,11 @@ func (iptime *IPRestrictTime) IsExpired() bool {
|
|||||||
// IPBanInfo holds info about an IP/net ban.
|
// IPBanInfo holds info about an IP/net ban.
|
||||||
type IPBanInfo struct {
|
type IPBanInfo struct {
|
||||||
// Reason is the ban reason.
|
// Reason is the ban reason.
|
||||||
Reason string
|
Reason string `json:"reason"`
|
||||||
// OperReason is an oper ban reason.
|
// OperReason is an oper ban reason.
|
||||||
OperReason string `json:"oper_reason"`
|
OperReason string `json:"oper_reason"`
|
||||||
// Time holds details about the duration, if it exists.
|
// Time holds details about the duration, if it exists.
|
||||||
Time *IPRestrictTime
|
Time *IPRestrictTime `json:"time"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// dLineAddr contains the address itself and expiration time for a given network.
|
// dLineAddr contains the address itself and expiration time for a given network.
|
||||||
|
@ -36,8 +36,9 @@ type restStatusResp struct {
|
|||||||
Channels int `json:"channels"`
|
Channels int `json:"channels"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type restDLinesResp struct {
|
type restXLinesResp struct {
|
||||||
DLines map[string]IPBanInfo `json:"dlines"`
|
DLines map[string]IPBanInfo `json:"dlines"`
|
||||||
|
KLines map[string]IPBanInfo `json:"klines"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type restAcct struct {
|
type restAcct struct {
|
||||||
@ -84,9 +85,10 @@ func restStatus(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func restGetDLines(w http.ResponseWriter, r *http.Request) {
|
func restGetXLines(w http.ResponseWriter, r *http.Request) {
|
||||||
rs := restDLinesResp{
|
rs := restXLinesResp{
|
||||||
DLines: restAPIServer.dlines.AllBans(),
|
DLines: restAPIServer.dlines.AllBans(),
|
||||||
|
KLines: restAPIServer.klines.AllBans(),
|
||||||
}
|
}
|
||||||
b, err := json.Marshal(rs)
|
b, err := json.Marshal(rs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -175,7 +177,7 @@ func (s *Server) startRestAPI() {
|
|||||||
rg := r.Methods("GET").Subrouter()
|
rg := r.Methods("GET").Subrouter()
|
||||||
rg.HandleFunc("/info", restInfo)
|
rg.HandleFunc("/info", restInfo)
|
||||||
rg.HandleFunc("/status", restStatus)
|
rg.HandleFunc("/status", restStatus)
|
||||||
rg.HandleFunc("/dlines", restGetDLines)
|
rg.HandleFunc("/xlines", restGetXLines)
|
||||||
rg.HandleFunc("/accounts", restGetAccounts)
|
rg.HandleFunc("/accounts", restGetAccounts)
|
||||||
|
|
||||||
// PUT methods
|
// PUT methods
|
||||||
|
Loading…
Reference in New Issue
Block a user