summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2022-05-30 15:51:49 +0200
committeratanarjuat <atanarjuat@example.com>2022-06-06 14:05:52 +0200
commit823cb0ae2393db4186905226145e9791b202f0eb (patch)
tree4ba0e71673fe0ea6c85b095445722ef360c71d7d
parent8d3614ab4bb25af32f2aa67daa1fe123585e8427 (diff)
draft stop method
-rw-r--r--client/client.go29
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