app

package
v0.2.10-2 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2025 License: GPL-3.0 Imports: 30 Imported by: 6

Documentation

Index

Constants

View Source
const CaddyAppID = "trojan"

Variables

This section is empty.

Functions

func RegisterProxyParser

func RegisterProxyParser(name string, parser ProxyParser)

Types

type App

type App struct {
	UpstreamRaw   json.RawMessage            `json:"upstream" caddy:"namespace=trojan.upstream inline_key=upstream"`
	ProxyRaw      json.RawMessage            `json:"proxy" caddy:"namespace=trojan.proxy inline_key=proxy"`
	NamedProxyRaw map[string]json.RawMessage `json:"named_proxy,omitempty" caddy:"namespace=trojan.proxy inline_key=proxy"`
	Users         []string                   `json:"users,omitempty"`
	// contains filtered or unexported fields
}

func (App) CaddyModule

func (App) CaddyModule() caddy.ModuleInfo

func (*App) GetProxy

func (app *App) GetProxy() Proxy

func (*App) GetProxyByName

func (app *App) GetProxyByName(name string) (Proxy, bool)

func (*App) GetUpstream

func (app *App) GetUpstream() Upstream

func (*App) Provision

func (app *App) Provision(ctx caddy.Context) error

func (*App) Start

func (app *App) Start() error

func (*App) Stop

func (app *App) Stop() error

type BlockDomain

type BlockDomain struct {
	ProxyRaw json.RawMessage `json:"pre_proxy,omitempty" caddy:"namespace=trojan.proxy inline_key=proxy"`

	DomainList []string `json:"domain_list,omitempty"`

	sync.RWMutex
	// contains filtered or unexported fields
}

func (*BlockDomain) CaddyModule

func (*BlockDomain) CaddyModule() caddy.ModuleInfo

func (*BlockDomain) Close

func (p *BlockDomain) Close() error

func (*BlockDomain) Dial

func (d *BlockDomain) Dial(network, addr string) (net.Conn, error)

func (*BlockDomain) Exist

func (d *BlockDomain) Exist(domain string) bool

func (*BlockDomain) ListenPacket

func (d *BlockDomain) ListenPacket(network, addr string) (net.PacketConn, error)

func (*BlockDomain) Provision

func (p *BlockDomain) Provision(ctx caddy.Context) error

type CaddyUpstream

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

func (*CaddyUpstream) Add

func (u *CaddyUpstream) Add(s string) error

func (CaddyUpstream) CaddyModule

func (CaddyUpstream) CaddyModule() caddy.ModuleInfo

func (*CaddyUpstream) Consume

func (u *CaddyUpstream) Consume(k string, nr, nw int64) error

func (*CaddyUpstream) Delete

func (u *CaddyUpstream) Delete(s string) error

func (*CaddyUpstream) Provision

func (u *CaddyUpstream) Provision(ctx caddy.Context) error

func (*CaddyUpstream) Range

func (u *CaddyUpstream) Range(fn func(k string, up, down int64))

func (*CaddyUpstream) Validate

func (u *CaddyUpstream) Validate(k string) bool

type DropProxy

type DropProxy struct{}

func (DropProxy) CaddyModule

func (DropProxy) CaddyModule() caddy.ModuleInfo

func (*DropProxy) Close

func (*DropProxy) Close() error

func (*DropProxy) Dial

func (*DropProxy) Dial(network, addr string) (net.Conn, error)

func (*DropProxy) ListenPacket

func (*DropProxy) ListenPacket(network, addr string) (net.PacketConn, error)

type EnvProxy

type EnvProxy struct {
	ProxyRaw json.RawMessage `json:"pre_proxy" caddy:"namespace=trojan.proxy inline_key=proxy"`
	// contains filtered or unexported fields
}

func (EnvProxy) CaddyModule

func (EnvProxy) CaddyModule() caddy.ModuleInfo

func (*EnvProxy) Close

func (p *EnvProxy) Close() error

func (*EnvProxy) Dial

func (p *EnvProxy) Dial(network, addr string) (net.Conn, error)

func (*EnvProxy) ListenPacket

func (*EnvProxy) ListenPacket(network, addr string) (net.PacketConn, error)

func (*EnvProxy) Provision

func (p *EnvProxy) Provision(ctx caddy.Context) error

type HttpProxy

type HttpProxy struct {
	ProxyRaw json.RawMessage `json:"pre_proxy" caddy:"namespace=trojan.proxy inline_key=proxy"`

	Server   string `json:"server"`
	User     string `json:"user,omitempty"`
	Password string `json:"password,omitempty"`
	// contains filtered or unexported fields
}

HttpProxy is a caddy module and supports socks5 proxy server. All tcp connections will be sent to proxy server.

func (HttpProxy) CaddyModule

func (HttpProxy) CaddyModule() caddy.ModuleInfo

func (*HttpProxy) Close

func (p *HttpProxy) Close() error

func (*HttpProxy) Dial

func (p *HttpProxy) Dial(network, addr string) (net.Conn, error)

func (*HttpProxy) ListenPacket

func (p *HttpProxy) ListenPacket(network, addr string) (net.PacketConn, error)

func (*HttpProxy) Provision

func (p *HttpProxy) Provision(ctx caddy.Context) error

type MemoryUpstream

type MemoryUpstream struct {
	UpstreamRaw json.RawMessage `json:"persist" caddy:"namespace=trojan.upstream inline_key=upstream"`
	// contains filtered or unexported fields
}

func (*MemoryUpstream) Add

func (u *MemoryUpstream) Add(s string) error

func (*MemoryUpstream) AddKey

func (u *MemoryUpstream) AddKey(key string)

func (*MemoryUpstream) CaddyModule

func (*MemoryUpstream) CaddyModule() caddy.ModuleInfo

func (*MemoryUpstream) Cleanup

func (u *MemoryUpstream) Cleanup() error

func (*MemoryUpstream) Consume

func (u *MemoryUpstream) Consume(k string, nr, nw int64) error

func (*MemoryUpstream) Delete

func (u *MemoryUpstream) Delete(s string) error

func (*MemoryUpstream) Provision

func (u *MemoryUpstream) Provision(ctx caddy.Context) error

func (*MemoryUpstream) Range

func (u *MemoryUpstream) Range(fn func(string, int64, int64))

func (*MemoryUpstream) Validate

func (u *MemoryUpstream) Validate(k string) bool

type NoProxy

type NoProxy struct{}

func (NoProxy) CaddyModule

func (NoProxy) CaddyModule() caddy.ModuleInfo

func (*NoProxy) Close

func (*NoProxy) Close() error

func (*NoProxy) Dial

func (*NoProxy) Dial(network, addr string) (net.Conn, error)

func (*NoProxy) ListenPacket

func (*NoProxy) ListenPacket(network, addr string) (net.PacketConn, error)

type Proxy

type Proxy interface {
	io.Closer
	trojan.Dialer
}

type ProxyParser

type ProxyParser func(args []string) (json.RawMessage, error)

func GetProxyParser

func GetProxyParser(name string) (ProxyParser, bool)

type ShadowsocksProxy

type ShadowsocksProxy struct {
	ProxyRaw json.RawMessage `json:"pre_proxy" caddy:"namespace=trojan.proxy inline_key=proxy"`

	Server   string `json:"server"`
	Password string `json:"password"`
	Method   string `json:"method"`
	// contains filtered or unexported fields
}

func (ShadowsocksProxy) CaddyModule

func (ShadowsocksProxy) CaddyModule() caddy.ModuleInfo

func (*ShadowsocksProxy) Close

func (p *ShadowsocksProxy) Close() error

func (*ShadowsocksProxy) Dial

func (p *ShadowsocksProxy) Dial(network, addr string) (net.Conn, error)

func (*ShadowsocksProxy) ListenPacket

func (p *ShadowsocksProxy) ListenPacket(network, addr string) (net.PacketConn, error)

func (*ShadowsocksProxy) Provision

func (p *ShadowsocksProxy) Provision(ctx caddy.Context) error

type SocksProxy

type SocksProxy struct {
	ProxyRaw json.RawMessage `json:"pre_proxy" caddy:"namespace=trojan.proxy inline_key=proxy"`

	Server   string `json:"server"`
	User     string `json:"user,omitempty"`
	Password string `json:"password,omitempty"`
	// contains filtered or unexported fields
}

SocksProxy is a caddy module and supports socks5 proxy server. All tcp connections will be sent to proxy server.

func (SocksProxy) CaddyModule

func (SocksProxy) CaddyModule() caddy.ModuleInfo

func (*SocksProxy) Close

func (p *SocksProxy) Close() error

func (*SocksProxy) Dial

func (p *SocksProxy) Dial(network, addr string) (net.Conn, error)

func (*SocksProxy) ListenPacket

func (p *SocksProxy) ListenPacket(network, addr string) (net.PacketConn, error)

func (*SocksProxy) Provision

func (p *SocksProxy) Provision(ctx caddy.Context) error

type Task

type Task struct {
	Type  TaskType
	Value struct {
		Password string
		Key      string
		Traffic
	}
}

type TaskType

type TaskType int
const (
	TaskAdd TaskType = iota
	TaskDelete
	TaskConsume
)

type Traffic

type Traffic struct {
	Up   int64 `json:"up"`
	Down int64 `json:"down"`
}

type UnixProxy

type UnixProxy struct {
	Path string `json:"path"`
}

func (UnixProxy) CaddyModule

func (UnixProxy) CaddyModule() caddy.ModuleInfo

func (*UnixProxy) Close

func (*UnixProxy) Close() error

func (*UnixProxy) Dial

func (u *UnixProxy) Dial(network, addr string) (net.Conn, error)

func (*UnixProxy) ListenPacket

func (*UnixProxy) ListenPacket(network, addr string) (net.PacketConn, error)

func (*UnixProxy) Provision

func (u *UnixProxy) Provision(ctx caddy.Context) error

type Upstream

type Upstream interface {
	Add(string) error
	Delete(string) error
	Range(func(string, int64, int64))
	Validate(string) bool
	Consume(string, int64, int64) error
}

type WireGuardProxy

type WireGuardProxy struct {
	Address    string `json:"address"`
	DNSServer  string `json:"dns_server"`
	PrivateKey string `json:"private_key"`
	PublicKey  string `json:"public_key"`
	AllowedIP  string `json:"allowed_ip,omitempty"`
	Endpoint   string `json:"endpoint"`
	// contains filtered or unexported fields
}

func (WireGuardProxy) CaddyModule

func (WireGuardProxy) CaddyModule() caddy.ModuleInfo

func (*WireGuardProxy) Close

func (p *WireGuardProxy) Close() error

func (*WireGuardProxy) Dial

func (p *WireGuardProxy) Dial(network, addr string) (net.Conn, error)

func (*WireGuardProxy) ListenPacket

func (p *WireGuardProxy) ListenPacket(network, addr string) (net.PacketConn, error)

func (*WireGuardProxy) Provision

func (p *WireGuardProxy) Provision(ctx caddy.Context) error

Jump to

Keyboard shortcuts

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