mirror of
https://github.com/SunBK201/UA3F.git
synced 2025-12-18 17:56:25 +00:00
refactor: refactor server configuration and logging structure
This commit is contained in:
parent
380a1f15f2
commit
3222c81f4e
@ -1,10 +1,20 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import "flag"
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ServerModeSocks5 = "socks5"
|
||||||
|
ServerModeTProxy = "tproxy"
|
||||||
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
ServerMode string
|
||||||
BindAddr string
|
BindAddr string
|
||||||
Port int
|
Port int
|
||||||
|
ListenAddr string
|
||||||
LogLevel string
|
LogLevel string
|
||||||
PayloadUA string
|
PayloadUA string
|
||||||
UAPattern string
|
UAPattern string
|
||||||
@ -13,6 +23,7 @@ type Config struct {
|
|||||||
|
|
||||||
func Parse() (*Config, bool) {
|
func Parse() (*Config, bool) {
|
||||||
var (
|
var (
|
||||||
|
serverMode string
|
||||||
bindAddr string
|
bindAddr string
|
||||||
port int
|
port int
|
||||||
loglevel string
|
loglevel string
|
||||||
@ -22,6 +33,7 @@ func Parse() (*Config, bool) {
|
|||||||
showVer bool
|
showVer bool
|
||||||
)
|
)
|
||||||
|
|
||||||
|
flag.StringVar(&serverMode, "m", ServerModeSocks5, "server mode: socks5 or tproxy (default: socks5)")
|
||||||
flag.StringVar(&bindAddr, "b", "127.0.0.1", "bind address (default: 127.0.0.1)")
|
flag.StringVar(&bindAddr, "b", "127.0.0.1", "bind address (default: 127.0.0.1)")
|
||||||
flag.IntVar(&port, "p", 1080, "port")
|
flag.IntVar(&port, "p", 1080, "port")
|
||||||
flag.StringVar(&payloadUA, "f", "FFF", "User-Agent")
|
flag.StringVar(&payloadUA, "f", "FFF", "User-Agent")
|
||||||
@ -32,8 +44,10 @@ func Parse() (*Config, bool) {
|
|||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
cfg := &Config{
|
cfg := &Config{
|
||||||
|
ServerMode: serverMode,
|
||||||
BindAddr: bindAddr,
|
BindAddr: bindAddr,
|
||||||
Port: port,
|
Port: port,
|
||||||
|
ListenAddr: fmt.Sprintf("%s:%d", bindAddr, port),
|
||||||
LogLevel: loglevel,
|
LogLevel: loglevel,
|
||||||
PayloadUA: payloadUA,
|
PayloadUA: payloadUA,
|
||||||
UAPattern: uaPattern,
|
UAPattern: uaPattern,
|
||||||
|
|||||||
@ -63,9 +63,9 @@ func SetLogConf(level string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func LogHeader(version string, addr string, cfg *config.Config) {
|
func LogHeader(version string, cfg *config.Config) {
|
||||||
logrus.Info("UA3F v" + version)
|
logrus.Info("UA3F v" + version)
|
||||||
logrus.Infof("Listen on %s", addr)
|
logrus.Infof("Listen on %s", cfg.ListenAddr)
|
||||||
logrus.Infof("User-Agent: %s", cfg.PayloadUA)
|
logrus.Infof("User-Agent: %s", cfg.PayloadUA)
|
||||||
logrus.Infof("User-Agent Regex Pattern: '%s'", cfg.UAPattern)
|
logrus.Infof("User-Agent Regex Pattern: '%s'", cfg.UAPattern)
|
||||||
logrus.Infof("Enable Partial Replace: %v", cfg.EnablePartialReplace)
|
logrus.Infof("Enable Partial Replace: %v", cfg.EnablePartialReplace)
|
||||||
|
|||||||
22
src/internal/server/server.go
Normal file
22
src/internal/server/server.go
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/sunbk201/ua3f/internal/config"
|
||||||
|
"github.com/sunbk201/ua3f/internal/rewrite"
|
||||||
|
"github.com/sunbk201/ua3f/internal/server/socks5"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Server interface {
|
||||||
|
Start() error
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServer(cfg *config.Config, rw *rewrite.Rewriter) (Server, error) {
|
||||||
|
switch cfg.ServerMode {
|
||||||
|
case config.ServerModeSocks5:
|
||||||
|
return socks5.New(cfg, rw), nil
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unknown server mode: %s", cfg.ServerMode)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -37,7 +37,6 @@ type Server struct {
|
|||||||
cfg *config.Config
|
cfg *config.Config
|
||||||
rw *rewrite.Rewriter
|
rw *rewrite.Rewriter
|
||||||
listener net.Listener
|
listener net.Listener
|
||||||
ListenAddr string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// New returns a new Server with given config, rewriter, and version string.
|
// New returns a new Server with given config, rewriter, and version string.
|
||||||
@ -45,13 +44,12 @@ func New(cfg *config.Config, rw *rewrite.Rewriter) *Server {
|
|||||||
return &Server{
|
return &Server{
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
rw: rw,
|
rw: rw,
|
||||||
ListenAddr: fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start begins listening for SOCKS5 clients.
|
// Start begins listening for SOCKS5 clients.
|
||||||
func (s *Server) Start() (err error) {
|
func (s *Server) Start() (err error) {
|
||||||
if s.listener, err = net.Listen("tcp", s.ListenAddr); err != nil {
|
if s.listener, err = net.Listen("tcp", s.cfg.ListenAddr); err != nil {
|
||||||
return fmt.Errorf("listen failed: %w", err)
|
return fmt.Errorf("listen failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
11
src/main.go
11
src/main.go
@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/sunbk201/ua3f/internal/config"
|
"github.com/sunbk201/ua3f/internal/config"
|
||||||
"github.com/sunbk201/ua3f/internal/log"
|
"github.com/sunbk201/ua3f/internal/log"
|
||||||
"github.com/sunbk201/ua3f/internal/rewrite"
|
"github.com/sunbk201/ua3f/internal/rewrite"
|
||||||
"github.com/sunbk201/ua3f/internal/server/socks5"
|
"github.com/sunbk201/ua3f/internal/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
const version = "0.9.0"
|
const version = "0.9.0"
|
||||||
@ -26,8 +26,13 @@ func main() {
|
|||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
srv := socks5.New(cfg, rw)
|
srv, err := server.NewServer(cfg, rw)
|
||||||
log.LogHeader(version, srv.ListenAddr, cfg)
|
if err != nil {
|
||||||
|
logrus.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.LogHeader(version, cfg)
|
||||||
|
|
||||||
if err := srv.Start(); err != nil {
|
if err := srv.Start(); err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user