file

package
v0.33.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2026 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Db *DbUtils

	HostIndex         = index.NewDomainIndex()
	Blake2bVkeyIndex  = index.NewStringIDIndex()
	TaskPasswordIndex = index.NewStringIDIndex()
)

Functions

func GetAccountMap added in v0.26.47

func GetAccountMap(multiAccount *MultiAccount) map[string]string

func GetMapKeys

func GetMapKeys(m *sync.Map, isSort bool, sortKey, order string) (keys []int)

Types

type Client

type Client struct {
	Cnf             *Config
	Id              int        //id
	VerifyKey       string     //verify key
	Mode            string     //bridge mode
	Addr            string     //the ip of client
	LocalAddr       string     //the local ip of client
	Remark          string     //remark
	Status          bool       //is allowed connect
	IsConnect       bool       //is the client connect
	RateLimit       int        //rate /kb
	Flow            *Flow      //flow setting
	ExportFlow      int64      //flow out
	InletFlow       int64      //flow in
	Rate            *rate.Rate //rate limit
	NoStore         bool       //no store to file
	NoDisplay       bool       //no display on web
	MaxConn         int        //the max connection num of client allow
	NowConn         int32      //the connection num of now
	WebUserName     string     //the username of web login
	WebPassword     string     //the password of web login
	WebTotpSecret   string     //the totp secret of web login
	ConfigConnAllow bool       //is allowed connected by config file
	MaxTunnelNum    int
	Version         string
	BlackIpList     []string
	CreateTime      string
	LastOnlineTime  string
	sync.RWMutex
}

func NewClient

func NewClient(vKey string, noStore bool, noDisplay bool) *Client

func (*Client) AddConn

func (s *Client) AddConn()

func (*Client) CutConn

func (s *Client) CutConn()

func (*Client) EnsureWebPassword added in v0.29.30

func (s *Client) EnsureWebPassword()

func (*Client) GetConn

func (s *Client) GetConn() bool

func (*Client) GetTunnelNum

func (s *Client) GetTunnelNum() (num int)

func (*Client) HasHost

func (s *Client) HasHost(h *Host) (hh *Host, exist bool)

func (*Client) HasTunnel

func (s *Client) HasTunnel(t *Tunnel) (tt *Tunnel, exist bool)

type Config

type Config struct {
	U        string // username
	P        string // password
	Compress bool
	Crypt    bool
}

type DbUtils

type DbUtils struct {
	JsonDb *JsonDb
}

func GetDb

func GetDb() *DbUtils

GetDb init data from file

func (*DbUtils) DelClient

func (s *DbUtils) DelClient(id int) error

func (*DbUtils) DelHost

func (s *DbUtils) DelHost(id int) error

func (*DbUtils) DelTask

func (s *DbUtils) DelTask(id int) error

func (*DbUtils) FindCertByHost

func (s *DbUtils) FindCertByHost(host string) (*Host, error)

func (*DbUtils) GetClient

func (s *DbUtils) GetClient(id int) (c *Client, err error)

func (*DbUtils) GetClientIdByBlake2bVkey added in v0.29.9

func (s *DbUtils) GetClientIdByBlake2bVkey(vkey string) (id int, err error)

func (*DbUtils) GetClientIdByMd5Vkey added in v0.27.0

func (s *DbUtils) GetClientIdByMd5Vkey(vkey string) (id int, err error)

func (*DbUtils) GetClientList

func (s *DbUtils) GetClientList(start, length int, search, sort, order string, clientId int) ([]*Client, int)

func (*DbUtils) GetGlobal

func (s *DbUtils) GetGlobal() (c *Glob)

func (*DbUtils) GetHost

func (s *DbUtils) GetHost(start, length int, id int, search string) ([]*Host, int)

func (*DbUtils) GetHostById

func (s *DbUtils) GetHostById(id int) (h *Host, err error)

func (*DbUtils) GetIdByVerifyKey

func (s *DbUtils) GetIdByVerifyKey(vKey, addr, localAddr string, hashFunc func(string) string) (id int, err error)

func (*DbUtils) GetInfoByHost

func (s *DbUtils) GetInfoByHost(host string, r *http.Request) (h *Host, err error)

GetInfoByHost get key by host from x

func (*DbUtils) GetTask

func (s *DbUtils) GetTask(id int) (t *Tunnel, err error)

func (*DbUtils) GetTaskByMd5Password

func (s *DbUtils) GetTaskByMd5Password(p string) (t *Tunnel)

GetTaskByMd5Password md5 password

func (*DbUtils) GetTaskByMd5PasswordOld added in v0.29.9

func (s *DbUtils) GetTaskByMd5PasswordOld(p string) (t *Tunnel)

func (*DbUtils) IsHostExist

func (s *DbUtils) IsHostExist(h *Host) bool

func (*DbUtils) IsHostModify

func (s *DbUtils) IsHostModify(h *Host) bool

func (*DbUtils) IsPubClient

func (s *DbUtils) IsPubClient(id int) bool

func (*DbUtils) NewClient

func (s *DbUtils) NewClient(c *Client) error

func (*DbUtils) NewHost

func (s *DbUtils) NewHost(t *Host) error

func (*DbUtils) NewTask

func (s *DbUtils) NewTask(t *Tunnel) (err error)

func (*DbUtils) SaveGlobal

func (s *DbUtils) SaveGlobal(t *Glob) error

func (*DbUtils) UpdateClient

func (s *DbUtils) UpdateClient(t *Client) error

func (*DbUtils) UpdateTask

func (s *DbUtils) UpdateTask(t *Tunnel) error

func (*DbUtils) VerifyUserName

func (s *DbUtils) VerifyUserName(username string, id int) (res bool)

func (*DbUtils) VerifyVkey

func (s *DbUtils) VerifyVkey(vkey string, id int) (res bool)

type Flow

type Flow struct {
	ExportFlow int64     // 传出流量
	InletFlow  int64     // 传入流量
	FlowLimit  int64     // 流量限制
	TimeLimit  time.Time // 连接到期时间
	sync.RWMutex
}

func (*Flow) Add

func (s *Flow) Add(in, out int64)

func (*Flow) Sub added in v0.26.41

func (s *Flow) Sub(in, out int64)

type Glob

type Glob struct {
	BlackIpList []string
	sync.RWMutex
}

type Health

type Health struct {
	HealthCheckTimeout  int
	HealthMaxFail       int
	HealthCheckInterval int
	HealthNextTime      time.Time
	HealthMap           map[string]int
	HttpHealthUrl       string
	HealthRemoveArr     []string
	HealthCheckType     string
	HealthCheckTarget   string
	sync.RWMutex
}

type Host

type Host struct {
	Id               int
	Host             string //host
	HeaderChange     string //request header change
	RespHeaderChange string //response header change
	HostChange       string //host change
	Location         string //url router
	PathRewrite      string //url rewrite
	Remark           string //remark
	Scheme           string //http https all
	RedirectURL      string // 307
	HttpsJustProxy   bool
	TlsOffload       bool
	AutoSSL          bool
	CertType         string
	CertHash         string
	CertFile         string
	KeyFile          string
	NoStore          bool
	IsClose          bool
	AutoHttps        bool
	AutoCORS         bool
	CompatMode       bool
	Flow             *Flow
	NowConn          int32
	Client           *Client
	TargetIsHttps    bool
	Target           *Target //目标
	UserAuth         *MultiAccount
	MultiAccount     *MultiAccount
	Health           `json:"-"`
	sync.RWMutex
}

func (*Host) AddConn added in v0.29.17

func (s *Host) AddConn()

func (*Host) CutConn added in v0.29.17

func (s *Host) CutConn()

func (*Host) Update added in v0.32.8

func (s *Host) Update(h *Host)

type JsonDb

type JsonDb struct {
	Tasks            sync.Map
	Hosts            sync.Map
	HostsTmp         sync.Map
	Clients          sync.Map
	Global           *Glob
	RunPath          string
	ClientIncreaseId int32  //client increased id
	TaskIncreaseId   int32  //task increased id
	HostIncreaseId   int32  //host increased id
	TaskFilePath     string //task file path
	HostFilePath     string //host file path
	ClientFilePath   string //client file path
	GlobalFilePath   string //global file path
}

func NewJsonDb

func NewJsonDb(runPath string) *JsonDb

func (*JsonDb) GetClient

func (s *JsonDb) GetClient(id int) (c *Client, err error)

func (*JsonDb) GetClientId

func (s *JsonDb) GetClientId() int32

func (*JsonDb) GetHostId

func (s *JsonDb) GetHostId() int32

func (*JsonDb) GetTaskId

func (s *JsonDb) GetTaskId() int32

func (*JsonDb) LoadClientFromJsonFile

func (s *JsonDb) LoadClientFromJsonFile()

func (*JsonDb) LoadGlobalFromJsonFile

func (s *JsonDb) LoadGlobalFromJsonFile()

func (*JsonDb) LoadHostFromJsonFile

func (s *JsonDb) LoadHostFromJsonFile()

func (*JsonDb) LoadTaskFromJsonFile

func (s *JsonDb) LoadTaskFromJsonFile()

func (*JsonDb) StoreClientsToJsonFile

func (s *JsonDb) StoreClientsToJsonFile()

func (*JsonDb) StoreGlobalToJsonFile

func (s *JsonDb) StoreGlobalToJsonFile()

func (*JsonDb) StoreHostToJsonFile

func (s *JsonDb) StoreHostToJsonFile()

func (*JsonDb) StoreTasksToJsonFile

func (s *JsonDb) StoreTasksToJsonFile()

type MultiAccount

type MultiAccount struct {
	Content    string
	AccountMap map[string]string // multi account and pwd
}

type Pair

type Pair struct {
	// contains filtered or unexported fields
}

Pair A data structure to hold a key/value pair.

type PairList

type PairList []*Pair

PairList A slice of Pairs that implements sort.Interface to sort by Value.

func (PairList) Len

func (p PairList) Len() int

func (PairList) Less

func (p PairList) Less(i, j int) bool

func (PairList) Swap

func (p PairList) Swap(i, j int)

type Target

type Target struct {
	TargetStr     string
	TargetArr     []string
	LocalProxy    bool
	ProxyProtocol int // Proxy Protocol 配置:0=关闭, 1=v1, 2=v2
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*Target) GetRandomTarget

func (s *Target) GetRandomTarget() (string, error)

type Tunnel

type Tunnel struct {
	Id           int
	Port         int
	ServerIp     string
	Mode         string
	Status       bool
	RunStatus    bool
	Client       *Client
	Ports        string
	Flow         *Flow
	NowConn      int32
	Password     string
	Remark       string
	TargetAddr   string
	TargetType   string
	NoStore      bool
	IsHttp       bool
	HttpProxy    bool
	Socks5Proxy  bool
	LocalPath    string
	StripPre     string
	ReadOnly     bool
	Target       *Target
	UserAuth     *MultiAccount
	MultiAccount *MultiAccount
	Health
	sync.RWMutex
}

func NewTunnelByHost added in v0.33.9

func NewTunnelByHost(host *Host, port int) *Tunnel

func (*Tunnel) AddConn added in v0.29.17

func (s *Tunnel) AddConn()

func (*Tunnel) CutConn added in v0.29.17

func (s *Tunnel) CutConn()

func (*Tunnel) Update added in v0.32.8

func (s *Tunnel) Update(t *Tunnel)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL