summaryrefslogtreecommitdiffhomepage
path: root/tunnel/tools/libwg-go
diff options
context:
space:
mode:
authorMikael Magnusson <mikma@users.sourceforge.net>2023-07-05 22:48:28 +0200
committerMikael Magnusson <mikma@users.sourceforge.net>2023-10-27 22:40:58 +0200
commitdf13a26fadfbd8e6d79b99640b70307c28b0dc25 (patch)
tree486c88af1146f5619790b7aee5a926375f84a372 /tunnel/tools/libwg-go
parentd8d2f93e64c508ac7c5048775460df86eea65ac2 (diff)
WIP: add cap to grpc
Diffstat (limited to 'tunnel/tools/libwg-go')
-rw-r--r--tunnel/tools/libwg-go/http-proxy.go19
-rw-r--r--tunnel/tools/libwg-go/service.go26
2 files changed, 45 insertions, 0 deletions
diff --git a/tunnel/tools/libwg-go/http-proxy.go b/tunnel/tools/libwg-go/http-proxy.go
index 9c457286..241c7f7d 100644
--- a/tunnel/tools/libwg-go/http-proxy.go
+++ b/tunnel/tools/libwg-go/http-proxy.go
@@ -451,6 +451,8 @@ func (p *HttpProxy) SetPacFileUrl(pacFileUrl *url.URL) error {
p.ctx.Destroy()
}
p.ctx = ctx
+ p.logger.Verbosef("SetNotMetered(false) from SetPacFileUrl")
+ p.SetNotMetered(false)
return nil
}
@@ -465,6 +467,23 @@ func (p *HttpProxy) SetPacFileContent(pacFile string) error {
p.ctx.Destroy()
}
p.ctx = ctx
+ p.logger.Verbosef("SetNotMetered(false) from SetPacFileContent")
+ p.SetNotMetered(false)
+ return nil
+}
+
+func (p *HttpProxy) SetNotMetered(notMetered bool) error {
+ p.logger.Verbosef("SetNotMetered: %v", notMetered)
+
+ if p.ctx == nil {
+ return fmt.Errorf("No ductape context")
+ }
+
+ p.ctx.PushGlobalObject()
+ p.ctx.PushBoolean(notMetered)
+ p.ctx.PutPropString(-2, "notMetered")
+ p.ctx.Pop()
+
return nil
}
diff --git a/tunnel/tools/libwg-go/service.go b/tunnel/tools/libwg-go/service.go
index f5460486..41834fe0 100644
--- a/tunnel/tools/libwg-go/service.go
+++ b/tunnel/tools/libwg-go/service.go
@@ -314,3 +314,29 @@ func (e *LibwgServiceImpl) Dhcp(ctx context.Context, req *gen.DhcpRequest) (*gen
}
return r, nil
}
+
+func (e *LibwgServiceImpl) CapabilitiesChanged(ctx context.Context, req *gen.CapabilitiesChangedRequest) (*gen.CapabilitiesChangedResponse, error) {
+ if e.httpProxy == nil {
+ r := &gen.CapabilitiesChangedResponse{
+ Error: &gen.Error{
+ Message: fmt.Sprintf("Http Proxy not running"),
+ },
+ }
+ return r, nil
+ }
+
+ notMetered := false
+
+ for _, cap := range req.Capabilities {
+ if cap == gen.CapabilitiesChangedRequest_NOT_METERED {
+ notMetered = true
+ }
+ }
+
+ e.logger.Verbosef("Set not metered %v", notMetered)
+ e.httpProxy.SetNotMetered(notMetered)
+
+ r := &gen.CapabilitiesChangedResponse{
+ }
+ return r, nil
+}