summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2022-06-23 00:40:11 +0200
committercyBerta <cyberta@riseup.net>2022-06-23 00:40:11 +0200
commitf4113a5dfa178f1fe86c04b2f196842c83e2bffe (patch)
tree610cc3de54d121f5b17e159bb4469ee39504c50e /client
parentd9aabb980b83e5f3622a3fd9ab19cc4b51104899 (diff)
implement simple event logging interface
Diffstat (limited to 'client')
-rw-r--r--client/client.go50
1 files changed, 32 insertions, 18 deletions
diff --git a/client/client.go b/client/client.go
index 9263aac..d4a7976 100644
--- a/client/client.go
+++ b/client/client.go
@@ -20,11 +20,17 @@ var (
)
type Client struct {
- kcp bool
- socksAddr string
- obfs4Cert string
- server *socks5.Server
- started bool
+ kcp bool
+ socksAddr string
+ obfs4Cert string
+ server *socks5.Server
+ started bool
+ EventLogger EventLogger
+}
+
+type EventLogger interface {
+ Log(state string, message string)
+ Error(message string)
}
func NewClient(kcp bool, socksAddr, obfs4Cert string) *Client {
@@ -36,6 +42,9 @@ func NewClient(kcp bool, socksAddr, obfs4Cert string) *Client {
}
func (c *Client) Start() (bool, error) {
+ defer func() {
+ c.log("STOPPED", "", nil)
+ }
if c.started {
log.Printf("Cannot start proxy server, already running")
@@ -49,22 +58,22 @@ func (c *Client) Start() (bool, error) {
dialer, err := obfsvpn.NewDialerFromCert(c.obfs4Cert)
if err != nil {
- log.Printf("Error getting dialer: %v\n", err)
+ c.error("Error getting dialer: %v\n", err)
return false, err
}
if c.kcp {
dialer.DialFunc = func(network, address string) (net.Conn, error) {
- log.Printf("Dialing kcp://%s\n", address)
+ c.log("RUNNING", "Dialing kcp://%s\n", address)
return kcp.Dial(address)
}
}
c.server.Dial = dialer.Dial
- fmt.Printf("[+] Starting socks5 proxy at %s\n", c.socksAddr)
+ c.log("RUNNING", "[+] Starting socks5 proxy at %s\n", c.socksAddr)
if err := c.server.ListenAndServe(); err != nil {
- log.Printf("error while listening: %v\n", err)
+ c.error("error while listening: %v\n", err)
c.server = nil
return false, err
}
@@ -79,7 +88,7 @@ func (c *Client) Stop() (bool, error) {
}
if err := c.server.Close(); err != nil {
- log.Printf("error while stopping: %v\n", err)
+ c.error("error while stopping: %v\n", err)
return false, err
}
@@ -88,14 +97,19 @@ func (c *Client) Stop() (bool, error) {
return true, nil
}
-func (c *Client) Status() string {
- c.mu.Lock()
- defer c.mu.Unlock()
+func (c *Client) log(state string, format string, a ...interface{}) {
+ if c.EventLogger != nil {
+ c.EventLogger.Log(state, fmt.Sprintf(format, a...))
+ return
+ }
+ log.Printf(format, a...)
+
+}
- switch c.started {
- case true:
- return "running"
- default:
- return "stopped"
+func (c *Client) error(format string, a ...interface{}) {
+ if c.EventLogger != nil {
+ c.EventLogger.Error(fmt.Sprintf(format, a...))
+ return
}
+ log.Printf(format, a...)
}