mirror of
https://github.com/net-byte/vtun
synced 2024-03-14 10:50:03 +08:00
62 lines
2.7 KiB
Go
62 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"github.com/net-byte/vtun/common"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/net-byte/vtun/app"
|
|
"github.com/net-byte/vtun/common/config"
|
|
)
|
|
|
|
var cfg = config.Config{}
|
|
var configFile string
|
|
|
|
func init() {
|
|
flag.StringVar(&configFile, "f", "", "config file")
|
|
flag.StringVar(&cfg.DeviceName, "dn", config.DefaultConfig.DeviceName, "device name")
|
|
flag.StringVar(&cfg.CIDR, "c", config.DefaultConfig.CIDR, "tun interface cidr")
|
|
flag.StringVar(&cfg.CIDRv6, "c6", config.DefaultConfig.CIDRv6, "tun interface ipv6 cidr")
|
|
flag.IntVar(&cfg.MTU, "mtu", config.DefaultConfig.MTU, "tun mtu")
|
|
flag.StringVar(&cfg.LocalAddr, "l", config.DefaultConfig.LocalAddr, "local address")
|
|
flag.StringVar(&cfg.ServerAddr, "s", config.DefaultConfig.ServerAddr, "server address")
|
|
flag.StringVar(&cfg.ServerIP, "sip", config.DefaultConfig.ServerIP, "server ip")
|
|
flag.StringVar(&cfg.ServerIPv6, "sip6", config.DefaultConfig.ServerIPv6, "server ipv6")
|
|
flag.StringVar(&cfg.Key, "k", config.DefaultConfig.Key, "key")
|
|
flag.StringVar(&cfg.Protocol, "p", config.DefaultConfig.Protocol, "protocol udp/tls/grpc/quic/utls/dtls/h2/http/tcp/https/ws/wss")
|
|
flag.StringVar(&cfg.Path, "path", config.DefaultConfig.Path, "path")
|
|
flag.BoolVar(&cfg.ServerMode, "S", config.DefaultConfig.ServerMode, "server mode")
|
|
flag.BoolVar(&cfg.GlobalMode, "g", config.DefaultConfig.GlobalMode, "client global mode")
|
|
flag.BoolVar(&cfg.Obfs, "obfs", config.DefaultConfig.Obfs, "enable data obfuscation")
|
|
flag.BoolVar(&cfg.Compress, "compress", config.DefaultConfig.Compress, "enable data compression")
|
|
flag.IntVar(&cfg.Timeout, "t", config.DefaultConfig.Timeout, "dial timeout in seconds")
|
|
flag.StringVar(&cfg.TLSCertificateFilePath, "certificate", config.DefaultConfig.TLSCertificateFilePath, "tls certificate file path")
|
|
flag.StringVar(&cfg.TLSCertificateKeyFilePath, "privatekey", config.DefaultConfig.TLSCertificateKeyFilePath, "tls certificate key file path")
|
|
flag.StringVar(&cfg.TLSSni, "sni", config.DefaultConfig.TLSSni, "tls handshake sni")
|
|
flag.BoolVar(&cfg.TLSInsecureSkipVerify, "isv", config.DefaultConfig.TLSInsecureSkipVerify, "tls insecure skip verify")
|
|
flag.BoolVar(&cfg.Verbose, "v", config.DefaultConfig.Verbose, "enable verbose output")
|
|
flag.BoolVar(&cfg.PSKMode, "psk", config.DefaultConfig.PSKMode, "enable psk mode (dtls only)")
|
|
flag.StringVar(&cfg.Host, "host", config.DefaultConfig.Host, "http host")
|
|
flag.Parse()
|
|
}
|
|
|
|
func main() {
|
|
common.DisplayVersionInfo()
|
|
if configFile != "" {
|
|
err := cfg.LoadConfig(configFile)
|
|
if err != nil {
|
|
log.Fatalf("Failed to load config from file: %s", err)
|
|
}
|
|
}
|
|
app := app.NewApp(&cfg)
|
|
app.InitConfig()
|
|
go app.StartApp()
|
|
quit := make(chan os.Signal, 1)
|
|
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
|
<-quit
|
|
app.StopApp()
|
|
}
|