137 lines
4.1 KiB
Go
137 lines
4.1 KiB
Go
// Copyright 2025 The frp Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package api
|
|
|
|
import (
|
|
v1 "github.com/fatedier/frp/pkg/config/v1"
|
|
)
|
|
|
|
type ServerInfoResp struct {
|
|
Version string `json:"version"`
|
|
BindPort int `json:"bindPort"`
|
|
VhostHTTPPort int `json:"vhostHTTPPort"`
|
|
VhostHTTPSPort int `json:"vhostHTTPSPort"`
|
|
TCPMuxHTTPConnectPort int `json:"tcpmuxHTTPConnectPort"`
|
|
KCPBindPort int `json:"kcpBindPort"`
|
|
QUICBindPort int `json:"quicBindPort"`
|
|
SubdomainHost string `json:"subdomainHost"`
|
|
MaxPoolCount int64 `json:"maxPoolCount"`
|
|
MaxPortsPerClient int64 `json:"maxPortsPerClient"`
|
|
HeartBeatTimeout int64 `json:"heartbeatTimeout"`
|
|
AllowPortsStr string `json:"allowPortsStr,omitempty"`
|
|
TLSForce bool `json:"tlsForce,omitempty"`
|
|
|
|
TotalTrafficIn int64 `json:"totalTrafficIn"`
|
|
TotalTrafficOut int64 `json:"totalTrafficOut"`
|
|
CurConns int64 `json:"curConns"`
|
|
ClientCounts int64 `json:"clientCounts"`
|
|
ProxyTypeCounts map[string]int64 `json:"proxyTypeCount"`
|
|
}
|
|
|
|
type ClientInfoResp struct {
|
|
Key string `json:"key"`
|
|
User string `json:"user"`
|
|
ClientID string `json:"clientID"`
|
|
RunID string `json:"runID"`
|
|
Hostname string `json:"hostname"`
|
|
ClientIP string `json:"clientIP,omitempty"`
|
|
FirstConnectedAt int64 `json:"firstConnectedAt"`
|
|
LastConnectedAt int64 `json:"lastConnectedAt"`
|
|
DisconnectedAt int64 `json:"disconnectedAt,omitempty"`
|
|
Online bool `json:"online"`
|
|
}
|
|
|
|
type BaseOutConf struct {
|
|
v1.ProxyBaseConfig
|
|
}
|
|
|
|
type TCPOutConf struct {
|
|
BaseOutConf
|
|
RemotePort int `json:"remotePort"`
|
|
}
|
|
|
|
type TCPMuxOutConf struct {
|
|
BaseOutConf
|
|
v1.DomainConfig
|
|
Multiplexer string `json:"multiplexer"`
|
|
RouteByHTTPUser string `json:"routeByHTTPUser"`
|
|
}
|
|
|
|
type UDPOutConf struct {
|
|
BaseOutConf
|
|
RemotePort int `json:"remotePort"`
|
|
}
|
|
|
|
type HTTPOutConf struct {
|
|
BaseOutConf
|
|
v1.DomainConfig
|
|
Locations []string `json:"locations"`
|
|
HostHeaderRewrite string `json:"hostHeaderRewrite"`
|
|
}
|
|
|
|
type HTTPSOutConf struct {
|
|
BaseOutConf
|
|
v1.DomainConfig
|
|
}
|
|
|
|
type STCPOutConf struct {
|
|
BaseOutConf
|
|
}
|
|
|
|
type XTCPOutConf struct {
|
|
BaseOutConf
|
|
}
|
|
|
|
// Get proxy info.
|
|
type ProxyStatsInfo struct {
|
|
Name string `json:"name"`
|
|
Conf any `json:"conf"`
|
|
User string `json:"user,omitempty"`
|
|
ClientID string `json:"clientID,omitempty"`
|
|
ClientVersion string `json:"clientVersion,omitempty"`
|
|
TodayTrafficIn int64 `json:"todayTrafficIn"`
|
|
TodayTrafficOut int64 `json:"todayTrafficOut"`
|
|
CurConns int64 `json:"curConns"`
|
|
LastStartTime string `json:"lastStartTime"`
|
|
LastCloseTime string `json:"lastCloseTime"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type GetProxyInfoResp struct {
|
|
Proxies []*ProxyStatsInfo `json:"proxies"`
|
|
}
|
|
|
|
// Get proxy info by name.
|
|
type GetProxyStatsResp struct {
|
|
Name string `json:"name"`
|
|
Conf any `json:"conf"`
|
|
User string `json:"user,omitempty"`
|
|
ClientID string `json:"clientID,omitempty"`
|
|
ClientVersion string `json:"clientVersion,omitempty"`
|
|
TodayTrafficIn int64 `json:"todayTrafficIn"`
|
|
TodayTrafficOut int64 `json:"todayTrafficOut"`
|
|
CurConns int64 `json:"curConns"`
|
|
LastStartTime string `json:"lastStartTime"`
|
|
LastCloseTime string `json:"lastCloseTime"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
// /api/traffic/:name
|
|
type GetProxyTrafficResp struct {
|
|
Name string `json:"name"`
|
|
TrafficIn []int64 `json:"trafficIn"`
|
|
TrafficOut []int64 `json:"trafficOut"`
|
|
}
|