easyss

package module
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2022 License: MIT Imports: 23 Imported by: 0

README

easyss

easyss是一款兼容socks5的安全上网工具,目标是使访问国外技术网站更流畅免受干扰。

有报道表明访问国外技术网站正变得越来越困难,即使用了一些常用代理技术也面临被干扰的可能性。 为了以防万一,提前准备,重新实现了一套协议以加快访问速度和对抗嗅探。

特性

  • 支持SOCKS5,HTTP(S)代理协议

  • 全平台支持(Linux,MacOS,Windows,Android等)

  • (只)支持(AEAD类型)高强度加密通信, 如aes-256-gcm, chacha20-poly1305

  • http2帧格式交互 (更灵活通用, 更易扩展)

  • 支持tcp连接池 (默认启用,大幅降低请求延迟)

  • 自动pac代理, (可选)支持全局模式, 支持系统托盘图标管理 (thanks lantern)

下载安装

在release页面直接下载(各平台)编译好的二进制文件

去下载

或者 通过源码安装(go version 1.19+ is required)
// Ubuntu20.04 or Debian11 
apt-get install libgtk-3-dev libayatana-appindicator3-dev

// Ubuntu18.04 or Debian10
apt-get install libgtk-3-dev libappindicator3-dev -y

// build client server
make client-server

// build remote server
make remote-server

用法

客户端

生成配置文件示例:./client-server -show-config-example > config.json

  • server: 服务器域名(必填,必须是域名,不能是IP)
  • server_port: 服务器对应端口(必填)
  • local_port: 本地监听端口(默认1080)
  • password: 通信加密密钥(必填)
  • method: 通信加密方式(默认aes-256-gcm)
  • timeout: 超时时间,单位秒
  • bind_all: 是否将监听端口绑定到所有本地IP上(默认false)

修改完成后, 双击二进制文件,程序会自动启动,托盘会出现easyss的图标,如下:

托盘图标

右键图标可选择PAC全局模式.

手机客户端

手机客户端apk文件可直接在release页面下载。

手机客户端是基于SagerNet扩展修改而来,源代码在SagerNet,感谢 bingooo

创建Easyss配置项:点击右上角+图标 -> 手动输入 -> 自定义配置(配置类型选择EasySS, 将配置文件内容复制到编辑里面,保存)

服务器端

和客户端一样, 先把二进制和config.json文件放同一目录. 修改config.json文件, 其中server(必须是服务器的域名)、server_port和password必填, 执行:

./remote-server

注意:服务器的443端口必须对外可访问,用于TLS校验使用。

docker部署

docker run -d --name easyss --network host nange/docker-easyss:latest -p yourport -k yourpassword -s yourdomain.com

LICENSE

MIT License

Documentation

Index

Constants

View Source
const (
	ESTABLISHED state = iota
	FIN_WAIT1
	FIN_WAIT2
	LAST_ACK
	CLOSING
	CLOSE_WAIT
	TIME_WAIT
	CLOSED
)

Variables

This section is empty.

Functions

func Daemon

func Daemon(godaemon bool)

func DecodeCipherMethod

func DecodeCipherMethod(b byte) string

func EncodeCipherMethod

func EncodeCipherMethod(m string) byte

func ExampleJSONConfig added in v1.4.0

func ExampleJSONConfig() string

func PrintVersion

func PrintVersion()

func UpdateConfig

func UpdateConfig(old, ne *Config)

Types

type Config

type Config struct {
	Server     string `json:"server"`
	ServerPort int    `json:"server_port"`
	LocalPort  int    `json:"local_port"`
	Password   string `json:"password"`
	Method     string `json:"method"` // encryption method
	Timeout    int    `json:"timeout"`
	BindALL    bool   `json:"bind_all"`
	ConfigFile string `json:"-"`
}

func ParseConfig

func ParseConfig(path string) (config *Config, err error)

type ConnState

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

func NewConnState

func NewConnState(s state, buf []byte) *ConnState

func (*ConnState) CloseWait

func (cs *ConnState) CloseWait(conn io.ReadWriteCloser) *ConnState

func (*ConnState) Closed

func (cs *ConnState) Closed(conn io.ReadWriteCloser) *ConnState

func (*ConnState) Closing

func (cs *ConnState) Closing(conn io.ReadWriteCloser) *ConnState

func (*ConnState) FINWait1

func (cs *ConnState) FINWait1(conn io.ReadWriteCloser) *ConnState

func (*ConnState) FINWait2

func (cs *ConnState) FINWait2(conn io.ReadWriteCloser) *ConnState

func (*ConnState) LastACK

func (cs *ConnState) LastACK(conn io.ReadWriteCloser) *ConnState

func (*ConnState) TimeWait

func (cs *ConnState) TimeWait(conn io.ReadWriteCloser) *ConnState

type ConnStateFn

type ConnStateFn func(conn io.ReadWriteCloser) *ConnState

type Easyss

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

func New

func New(config *Config) (*Easyss, error)

func (*Easyss) BindAll added in v1.3.0

func (ss *Easyss) BindAll() bool

func (*Easyss) Close

func (ss *Easyss) Close()

func (*Easyss) ConfigFilename added in v1.4.0

func (ss *Easyss) ConfigFilename() string

func (*Easyss) InitTcpPool

func (ss *Easyss) InitTcpPool() error

func (*Easyss) LocalAddr added in v1.1.0

func (ss *Easyss) LocalAddr() string

func (*Easyss) LocalHttp added in v1.4.0

func (ss *Easyss) LocalHttp() error

func (*Easyss) LocalHttpProxyPort added in v1.4.0

func (ss *Easyss) LocalHttpProxyPort() int

func (*Easyss) LocalPacPort added in v1.4.0

func (ss *Easyss) LocalPacPort() int

func (*Easyss) LocalPort

func (ss *Easyss) LocalPort() int

func (*Easyss) LocalSocks5 added in v1.4.0

func (ss *Easyss) LocalSocks5() error

func (*Easyss) Method added in v1.4.0

func (ss *Easyss) Method() string

func (*Easyss) Password added in v1.4.0

func (ss *Easyss) Password() string

func (*Easyss) Pool added in v1.4.0

func (ss *Easyss) Pool() easypool.Pool

func (*Easyss) Remote

func (ss *Easyss) Remote()

func (*Easyss) Server added in v1.4.0

func (ss *Easyss) Server() string

func (*Easyss) ServerPort

func (ss *Easyss) ServerPort() int

func (*Easyss) SetHttpProxyServer added in v1.4.0

func (ss *Easyss) SetHttpProxyServer(server *http.Server)

func (*Easyss) SetPool added in v1.4.0

func (ss *Easyss) SetPool(pool easypool.Pool)

func (*Easyss) SetSocksServer added in v1.4.0

func (ss *Easyss) SetSocksServer(server *socks5.Server)

func (*Easyss) TCPHandle added in v1.1.0

func (ss *Easyss) TCPHandle(s *socks5.Server, conn *net.TCPConn, r *socks5.Request) error

func (*Easyss) Timeout added in v1.4.0

func (ss *Easyss) Timeout() time.Duration

func (*Easyss) UDPHandle added in v1.1.0

func (ss *Easyss) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error

type Statistics added in v1.1.0

type Statistics struct {
	BytesSend   atomic.Int64
	BytesRecive atomic.Int64
}

Directories

Path Synopsis
cmd
client-server command
remote-server command

Jump to

Keyboard shortcuts

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