diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-05-24 22:48:37 +0200 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-05-27 00:52:28 +0200 |
commit | ba8ba920466787d8bd94b7b078be41b09441543c (patch) | |
tree | 0e7c410b2c5a9a9fd2fef816ec66187bbb0a154a /tunnel/src/main | |
parent | 3afe7c229375bb34212abfe8b1fe8cacf1a83349 (diff) |
WIP: tunnel: implement gRPC based wgSetConfig
Diffstat (limited to 'tunnel/src/main')
-rw-r--r-- | tunnel/src/main/java/com/wireguard/android/backend/GoBackend.java | 13 | ||||
-rw-r--r-- | tunnel/src/main/proto/libwg.proto | 12 |
2 files changed, 23 insertions, 2 deletions
diff --git a/tunnel/src/main/java/com/wireguard/android/backend/GoBackend.java b/tunnel/src/main/java/com/wireguard/android/backend/GoBackend.java index 1e5ca0df..d2cbd4ec 100644 --- a/tunnel/src/main/java/com/wireguard/android/backend/GoBackend.java +++ b/tunnel/src/main/java/com/wireguard/android/backend/GoBackend.java @@ -32,6 +32,8 @@ import com.wireguard.android.backend.Tunnel.State; import com.wireguard.android.backend.gen.DhcpRequest; import com.wireguard.android.backend.gen.DhcpResponse; import com.wireguard.android.backend.gen.GetConnectionOwnerUidResponse; +import com.wireguard.android.backend.gen.IpcSetRequest; +import com.wireguard.android.backend.gen.IpcSetResponse; import com.wireguard.android.backend.gen.Lease; import com.wireguard.android.backend.gen.LibwgGrpc; import com.wireguard.android.backend.gen.ReverseRequest; @@ -40,6 +42,7 @@ import com.wireguard.android.backend.gen.StartHttpProxyRequest; import com.wireguard.android.backend.gen.StartHttpProxyResponse; import com.wireguard.android.backend.gen.StopHttpProxyRequest; import com.wireguard.android.backend.gen.StopHttpProxyResponse; +import com.wireguard.android.backend.gen.TunnelHandle; import com.wireguard.android.backend.gen.VersionRequest; import com.wireguard.android.backend.gen.VersionResponse; import com.wireguard.android.util.SharedLibraryLoader; @@ -319,7 +322,10 @@ public final class GoBackend implements Backend { // TODO removed removeNetworks Log.w(TAG, "Wg user string: " + goConfig); - wgSetConfig(currentTunnelHandle, goConfig); + LibwgGrpc.LibwgBlockingStub stub = LibwgGrpc.newBlockingStub(channel); + TunnelHandle handle = TunnelHandle.newBuilder().setHandle(currentTunnelHandle).build(); + IpcSetRequest request = IpcSetRequest.newBuilder().setTunnel(handle).setConfig(goConfig).build(); + IpcSetResponse resp = stub.ipcSet(request); } private static String downloadPacFile(Network network, Uri pacFileUrl) { @@ -869,7 +875,10 @@ public final class GoBackend implements Backend { final String goConfig = currentConfig.toWgUserspaceStringWithChangedEndpoints(resolver); Log.w(TAG, "is default network, config:" + goConfig); - wgSetConfig(currentTunnelHandle, goConfig); + LibwgGrpc.LibwgBlockingStub stub = LibwgGrpc.newBlockingStub(channel); + TunnelHandle tunnel = TunnelHandle.newBuilder().setHandle(currentTunnelHandle).build(); + IpcSetRequest request = IpcSetRequest.newBuilder().setTunnel(tunnel).setConfig(goConfig).build(); + IpcSetResponse resp = stub.ipcSet(request); } } } diff --git a/tunnel/src/main/proto/libwg.proto b/tunnel/src/main/proto/libwg.proto index e0975f60..3195690d 100644 --- a/tunnel/src/main/proto/libwg.proto +++ b/tunnel/src/main/proto/libwg.proto @@ -16,9 +16,12 @@ service Libwg { rpc StartHttpProxy(StartHttpProxyRequest) returns (StartHttpProxyResponse); rpc StopHttpProxy(StopHttpProxyRequest) returns (StopHttpProxyResponse); rpc Reverse(stream ReverseRequest) returns (stream ReverseResponse); + rpc IpcSet(IpcSetRequest) returns (IpcSetResponse); rpc Dhcp(DhcpRequest) returns (DhcpResponse); } +message TunnelHandle { int32 handle = 1; } + message Error { enum Code { NO_ERROR = 0; @@ -96,6 +99,15 @@ message GetConnectionOwnerUidResponse { string package = 2; // context.getPackageManager().getNameForUid() } +message IpcSetRequest { + TunnelHandle tunnel = 1; + string config = 2; +} + +message IpcSetResponse { + Error error = 1; +} + message Lease { InetAddress address = 1; google.protobuf.Duration preferred_lifetime = 2; |