diff options
author | cyBerta <cyberta@riseup.net> | 2022-05-30 15:51:49 +0200 |
---|---|---|
committer | atanarjuat <atanarjuat@example.com> | 2022-06-06 14:05:52 +0200 |
commit | 823cb0ae2393db4186905226145e9791b202f0eb (patch) | |
tree | 4ba0e71673fe0ea6c85b095445722ef360c71d7d | |
parent | 8d3614ab4bb25af32f2aa67daa1fe123585e8427 (diff) |
draft stop method
-rw-r--r-- | client/client.go | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/client/client.go b/client/client.go index d9cfb2a..2de8076 100644 --- a/client/client.go +++ b/client/client.go @@ -18,6 +18,7 @@ type Client struct { kcp bool socksAddr string obfs4Cert string + server *socks5.Server } func NewClient(kcp bool, socksAddr, obfs4Cert string) *Client { @@ -29,7 +30,12 @@ func NewClient(kcp bool, socksAddr, obfs4Cert string) *Client { } func (c *Client) Start() bool { - server := &socks5.Server{ + if c.server != nil { + log.Printf("Cannot start proxy server if already initialzied") + return false + } + + c.server = &socks5.Server{ Addr: c.socksAddr, BindIP: "127.0.0.1", } @@ -47,12 +53,29 @@ func (c *Client) Start() bool { } } - server.Dial = dialer.Dial + c.server.Dial = dialer.Dial fmt.Printf("[+] Starting socks5 proxy at %s\n", c.socksAddr) - if err := server.ListenAndServe(); err != nil { + if err := c.server.ListenAndServe(); err != nil { log.Printf("error while listening: %v\n", err) + c.server = nil return false } return true } + + +func (c *Client) Stop() bool { + if c.server == nil { + return false + } + defer func() { + c.server = nil + }() + + if err := c.server.Close(); err != nil { + log.Printf("error while stopping: %v\n", err) + return false + } + return true +}
\ No newline at end of file |