From 3ba0004370ea3d78591556df07e519c7489634c2 Mon Sep 17 00:00:00 2001 From: Jett Chen Date: Sun, 19 May 2024 00:23:34 +0800 Subject: [PATCH] Add button for sending toml --- Apple/App/App-iOS.entitlements | 2 + Apple/App/App-macOS.entitlements | 2 + Apple/App/BurrowView.swift | 2 +- Apple/App/MenuItemToggleView.swift | 56 +++++++++++++++---- Apple/App/RpcOperations.swift | 14 +++++ Apple/Burrow.xcodeproj/project.pbxproj | 4 ++ .../NetworkExtension-iOS.entitlements | 4 ++ burrow/src/wireguard/config.rs | 1 + 8 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 Apple/App/RpcOperations.swift diff --git a/Apple/App/App-iOS.entitlements b/Apple/App/App-iOS.entitlements index 53fcbb7..588ec3e 100644 --- a/Apple/App/App-iOS.entitlements +++ b/Apple/App/App-iOS.entitlements @@ -2,6 +2,8 @@ + com.apple.security.network.server + com.apple.developer.associated-domains applinks:burrow.rs?mode=developer diff --git a/Apple/App/App-macOS.entitlements b/Apple/App/App-macOS.entitlements index e39ba66..4d5db93 100644 --- a/Apple/App/App-macOS.entitlements +++ b/Apple/App/App-macOS.entitlements @@ -2,6 +2,8 @@ + com.apple.security.network.server + com.apple.developer.associated-domains applinks:burrow.rs?mode=developer diff --git a/Apple/App/BurrowView.swift b/Apple/App/BurrowView.swift index ab9c558..2c6c571 100644 --- a/Apple/App/BurrowView.swift +++ b/Apple/App/BurrowView.swift @@ -6,7 +6,7 @@ import BurrowShared struct BurrowView: View { @Environment(\.webAuthenticationSession) private var webAuthenticationSession - @State private var rpcClient: Client? = nil + @State private var rpcClient: Client? @State private var showAlert = false var body: some View { diff --git a/Apple/App/MenuItemToggleView.swift b/Apple/App/MenuItemToggleView.swift index 07db51d..c8b41f8 100644 --- a/Apple/App/MenuItemToggleView.swift +++ b/Apple/App/MenuItemToggleView.swift @@ -6,30 +6,66 @@ // import SwiftUI +import BurrowShared struct MenuItemToggleView: View { @Environment(\.tunnel) var tunnel: Tunnel + @State private var showAlert = false var body: some View { - HStack { - VStack(alignment: .leading) { - Text("Burrow") - .font(.headline) - Text(tunnel.status.description) - .font(.subheadline) - } - Spacer() - Toggle(isOn: tunnel.toggleIsOn) { - } + VStack { + HStack { + VStack(alignment: .leading) { + Text("Burrow") + .font(.headline) + Text(tunnel.status.description) + .font(.subheadline) + } + Spacer() + Toggle(isOn: tunnel.toggleIsOn) { + } .disabled(tunnel.toggleDisabled) .toggleStyle(.switch) + } + Button("Add Custom WG Config", action: sncAddCustomnetwork) } .accessibilityElement(children: .combine) .padding(.horizontal, 4) .padding(10) .frame(minWidth: 300, minHeight: 32, maxHeight: 32) } + + func sncAddCustomnetwork(){ + Task { + try await addCustomnetwork() + } + } + + func addCustomnetwork() async { + do{ + let networkToml = """ +[[peers]] +public_key = "8GaFjVO6c4luCHG4ONO+1bFG8tO+Zz5/Gy+Geht1USM=" +preshared_key = "ha7j4BjD49sIzyF9SNlbueK0AMHghlj6+u0G3bzC698=" +allowed_ips = ["8.8.8.8/32", "0.0.0.0/0"] +endpoint = "wg.burrow.rs:51820" + +[interface] +private_key = "OEPVdomeLTxTIBvv3TYsJRge0Hp9NMiY0sIrhT8OWG8=" +address = ["10.13.13.2/24"] +listen_port = 51820 +dns = [] +""" + let client = try Client() + try await client.single_request("AddConfigToml", params: networkToml, type: BurrowResult.self) + alert("Successs!", isPresented: $showAlert){ + Button("OK", role: .cancel) {} + } + } catch { + + } + } } extension Tunnel { diff --git a/Apple/App/RpcOperations.swift b/Apple/App/RpcOperations.swift new file mode 100644 index 0000000..3cd545b --- /dev/null +++ b/Apple/App/RpcOperations.swift @@ -0,0 +1,14 @@ +// +// RpcOperations.swift +// App +// +// Created by Jett Chen on 2024/5/18. +// + +import Foundation + +class RpcOperations{ + func uploadConfig(){ + + } +} diff --git a/Apple/Burrow.xcodeproj/project.pbxproj b/Apple/Burrow.xcodeproj/project.pbxproj index a3be02d..eecd67e 100644 --- a/Apple/Burrow.xcodeproj/project.pbxproj +++ b/Apple/Burrow.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 0BA6D73C2BA6393200BD4B55 /* NWConnection+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00117302B2FFFC900D87C25 /* NWConnection+Async.swift */; }; 0BA6D73D2BA6393B00BD4B55 /* NewlineProtocolFramer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00117322B3001A400D87C25 /* NewlineProtocolFramer.swift */; }; 0BA6D73E2BA6394B00BD4B55 /* DataTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B28F1552ABF463A000D44B0 /* DataTypes.swift */; }; + 0BE456612BF90752005E4D47 /* RpcOperations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BE456602BF90752005E4D47 /* RpcOperations.swift */; }; 43AA26D82A10004900F14CE6 /* MenuItemToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43AA26D72A10004900F14CE6 /* MenuItemToggleView.swift */; }; D000363D2BB8928E00E582EC /* NetworkCarouselView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000363C2BB8928E00E582EC /* NetworkCarouselView.swift */; }; D000363F2BB895FB00E582EC /* OAuth2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000363E2BB895FB00E582EC /* OAuth2.swift */; }; @@ -79,6 +80,7 @@ /* Begin PBXFileReference section */ 0B28F1552ABF463A000D44B0 /* DataTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTypes.swift; sourceTree = ""; }; 0B46E8DF2AC918CA00BA2A3C /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; + 0BE456602BF90752005E4D47 /* RpcOperations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RpcOperations.swift; sourceTree = ""; }; 43AA26D72A10004900F14CE6 /* MenuItemToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemToggleView.swift; sourceTree = ""; }; D000363C2BB8928E00E582EC /* NetworkCarouselView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkCarouselView.swift; sourceTree = ""; }; D000363E2BB895FB00E582EC /* OAuth2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OAuth2.swift; sourceTree = ""; }; @@ -259,6 +261,7 @@ D0FAB5952B818B2900F6A84B /* TunnelButton.swift */, D0B98FC629FDC5B5004E7149 /* Tunnel.swift */, D0FAB5912B818A5900F6A84B /* NetworkExtensionTunnel.swift */, + 0BE456602BF90752005E4D47 /* RpcOperations.swift */, D0BCC5FC2A086D4700AD070D /* NetworkExtension+Async.swift */, D05EF8C72B81818D0017AB4F /* FloatingButtonStyle.swift */, D05B9F7929E39EED008CB1F9 /* Assets.xcassets */, @@ -485,6 +488,7 @@ D000363F2BB895FB00E582EC /* OAuth2.swift in Sources */, D0FAB5962B818B2900F6A84B /* TunnelButton.swift in Sources */, D00AA8972A4669BC005C8102 /* AppDelegate.swift in Sources */, + 0BE456612BF90752005E4D47 /* RpcOperations.swift in Sources */, D05EF8C82B81818D0017AB4F /* FloatingButtonStyle.swift in Sources */, D032E6522B8A79C20006B8AD /* HackClub.swift in Sources */, D05B9F7629E39EEC008CB1F9 /* BurrowApp.swift in Sources */, diff --git a/Apple/NetworkExtension/NetworkExtension-iOS.entitlements b/Apple/NetworkExtension/NetworkExtension-iOS.entitlements index 02ee960..602355e 100644 --- a/Apple/NetworkExtension/NetworkExtension-iOS.entitlements +++ b/Apple/NetworkExtension/NetworkExtension-iOS.entitlements @@ -2,6 +2,10 @@ + com.apple.security.network.server + + com.apple.security.network.client + com.apple.developer.networking.networkextension packet-tunnel-provider diff --git a/burrow/src/wireguard/config.rs b/burrow/src/wireguard/config.rs index 6fc4b7f..0fbbc7a 100644 --- a/burrow/src/wireguard/config.rs +++ b/burrow/src/wireguard/config.rs @@ -129,6 +129,7 @@ mod tests { fn tst_config_toml() { let cfig = Config::default(); let toml = toml::to_string(&cfig).unwrap(); + println!("{}", &toml); insta::assert_snapshot!(toml); let cfig2: Config = toml::from_str(&toml).unwrap(); assert_eq!(cfig, cfig2);