diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml
index 7e9c2e08a..4eeb76585 100644
--- a/.github/workflows/production.yml
+++ b/.github/workflows/production.yml
@@ -1,5 +1,9 @@
name: production
+
+
+
+## DEPLOY TAG FOR WIZARD IS SET MANUAL IN THE HELM FILES -> TODO
on:
push:
tags:
@@ -47,4 +51,6 @@ jobs:
echo ${{ secrets.KUBE_CONFIG }} | base64 --decode > ${HOME}/.kube/config
cat ${HOME}/.kube/config
- name: Upgrade production on cluster
- run: helm upgrade threebotlogin helm_files -f helm_files/valuesProduction.yaml --set image.tag=production-${{ github.sha }} -n jimber
+ run: |
+ echo production-${{ github.sha }}
+ helm upgrade threebotlogin helm_files -f helm_files/valuesProduction.yaml --set images.login.tag=production-${{ github.sha }} -n jimber
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/Info.plist b/app/ios/Frameworks/Yggdrasil.xcframework/Info.plist
new file mode 100644
index 000000000..7e35b0b71
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/Info.plist
@@ -0,0 +1,40 @@
+
+
+
+
+ AvailableLibraries
+
+
+ LibraryIdentifier
+ ios-arm64_x86_64-simulator
+ LibraryPath
+ Yggdrasil.framework
+ SupportedArchitectures
+
+ arm64
+ x86_64
+
+ SupportedPlatform
+ ios
+ SupportedPlatformVariant
+ simulator
+
+
+ LibraryIdentifier
+ ios-arm64
+ LibraryPath
+ Yggdrasil.framework
+ SupportedArchitectures
+
+ arm64
+
+ SupportedPlatform
+ ios
+
+
+ CFBundlePackageType
+ XFWK
+ XCFrameworkFormatVersion
+ 1.0
+
+
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Headers b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Headers
new file mode 120000
index 000000000..a177d2a6b
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Modules b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Modules
new file mode 120000
index 000000000..5736f3186
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Modules
@@ -0,0 +1 @@
+Versions/Current/Modules
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Resources b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Resources
new file mode 120000
index 000000000..953ee36f3
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Config.objc.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Config.objc.h
new file mode 100644
index 000000000..f513debb8
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Config.objc.h
@@ -0,0 +1,76 @@
+// Objective-C API for talking to github.com/yggdrasil-network/yggdrasil-go/src/config Go package.
+// gobind -lang=objc github.com/yggdrasil-network/yggdrasil-go/src/config
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Config_H__
+#define __Config_H__
+
+@import Foundation;
+#include "ref.h"
+#include "Universe.objc.h"
+
+
+@class ConfigMulticastInterfaceConfig;
+@class ConfigNodeConfig;
+
+@interface ConfigMulticastInterfaceConfig : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+@property (nonatomic) NSString* _Nonnull regex;
+@property (nonatomic) BOOL beacon;
+@property (nonatomic) BOOL listen;
+// skipped field MulticastInterfaceConfig.Port with unsupported type: uint16
+
+@end
+
+/**
+ * NodeConfig is the main configuration structure, containing configuration
+options that are necessary for an Yggdrasil node to run. You will need to
+supply one of these structs to the Yggdrasil core when starting a node.
+ */
+@interface ConfigNodeConfig : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+// skipped field NodeConfig.RWMutex with unsupported type: sync.RWMutex
+
+// skipped field NodeConfig.Peers with unsupported type: []string
+
+// skipped field NodeConfig.InterfacePeers with unsupported type: map[string][]string
+
+// skipped field NodeConfig.Listen with unsupported type: []string
+
+@property (nonatomic) NSString* _Nonnull adminListen;
+// skipped field NodeConfig.MulticastInterfaces with unsupported type: []github.com/yggdrasil-network/yggdrasil-go/src/config.MulticastInterfaceConfig
+
+// skipped field NodeConfig.AllowedPublicKeys with unsupported type: []string
+
+@property (nonatomic) NSString* _Nonnull publicKey;
+@property (nonatomic) NSString* _Nonnull privateKey;
+@property (nonatomic) NSString* _Nonnull ifName;
+// skipped field NodeConfig.IfMTU with unsupported type: uint64
+
+@property (nonatomic) BOOL nodeInfoPrivacy;
+// skipped field NodeConfig.NodeInfo with unsupported type: map[string]interface{}
+
+- (void)lock;
+/**
+ * NewSigningKeys replaces the signing keypair in the NodeConfig with a new
+signing keypair. The signing keys are used by the switch to derive the
+structure of the spanning tree.
+ */
+- (void)newKeys;
+- (void)rLock;
+// skipped method NodeConfig.RLocker with unsupported parameter or return types
+
+- (void)rUnlock;
+- (void)unlock;
+@end
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Mobile.objc.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Mobile.objc.h
new file mode 100644
index 000000000..9036b46c1
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Mobile.objc.h
@@ -0,0 +1,94 @@
+// Objective-C API for talking to github.com/yggdrasil-network/yggdrasil-go/contrib/mobile Go package.
+// gobind -lang=objc github.com/yggdrasil-network/yggdrasil-go/contrib/mobile
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Mobile_H__
+#define __Mobile_H__
+
+@import Foundation;
+#include "ref.h"
+#include "Universe.objc.h"
+
+#include "Config.objc.h"
+
+@class MobileMobileLogger;
+@class MobileYggdrasil;
+
+@interface MobileMobileLogger : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+- (BOOL)write:(NSData* _Nullable)p0 n:(long* _Nullable)n error:(NSError* _Nullable* _Nullable)error;
+@end
+
+/**
+ * Yggdrasil mobile package is meant to "plug the gap" for mobile support, as
+Gomobile will not create headers for Swift/Obj-C etc if they have complex
+(non-native) types. Therefore for iOS we will expose some nice simple
+functions. Note that in the case of iOS we handle reading/writing to/from TUN
+in Swift therefore we use the "dummy" TUN interface instead.
+ */
+@interface MobileYggdrasil : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+/**
+ * GetAddressString gets the node's IPv6 address
+ */
+- (NSString* _Nonnull)getAddressString;
+/**
+ * GetCoordsString gets the node's coordinates
+ */
+- (NSString* _Nonnull)getCoordsString;
+- (NSString* _Nonnull)getDHTJSON;
+/**
+ * GetMTU returns the configured node MTU. This must be called AFTER Start.
+ */
+- (long)getMTU;
+- (NSString* _Nonnull)getPeersJSON;
+/**
+ * GetPublicKeyString gets the node's public key in hex form
+ */
+- (NSString* _Nonnull)getPublicKeyString;
+/**
+ * GetSubnetString gets the node's IPv6 subnet in CIDR notation
+ */
+- (NSString* _Nonnull)getSubnetString;
+/**
+ * Recv waits for and reads a packet coming from Yggdrasil. It
+will be a fully formed IPv6 packet
+ */
+- (NSData* _Nullable)recv:(NSError* _Nullable* _Nullable)error;
+/**
+ * Send sends a packet to Yggdrasil. It should be a fully formed
+IPv6 packet
+ */
+- (BOOL)send:(NSData* _Nullable)p0 error:(NSError* _Nullable* _Nullable)error;
+/**
+ * StartAutoconfigure starts a node with a randomly generated config
+ */
+- (BOOL)startAutoconfigure:(NSError* _Nullable* _Nullable)error;
+/**
+ * StartJSON starts a node with the given JSON config. You can get JSON config
+(rather than HJSON) by using the GenerateConfigJSON() function
+ */
+- (BOOL)startJSON:(NSData* _Nullable)configjson error:(NSError* _Nullable* _Nullable)error;
+/**
+ * Stop the mobile Yggdrasil instance
+ */
+- (BOOL)stop:(NSError* _Nullable* _Nullable)error;
+@end
+
+/**
+ * GenerateConfigJSON generates mobile-friendly configuration in JSON format
+ */
+FOUNDATION_EXPORT NSData* _Nullable MobileGenerateConfigJSON(void);
+
+FOUNDATION_EXPORT NSString* _Nonnull MobileGetVersion(void);
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Universe.objc.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Universe.objc.h
new file mode 100644
index 000000000..019e7502d
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Universe.objc.h
@@ -0,0 +1,29 @@
+// Objective-C API for talking to Go package.
+// gobind -lang=objc
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Universe_H__
+#define __Universe_H__
+
+@import Foundation;
+#include "ref.h"
+
+@protocol Universeerror;
+@class Universeerror;
+
+@protocol Universeerror
+- (NSString* _Nonnull)error;
+@end
+
+@class Universeerror;
+
+@interface Universeerror : NSError {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (NSString* _Nonnull)error;
+@end
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Yggdrasil.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Yggdrasil.h
new file mode 100644
index 000000000..971b9b7a7
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/Yggdrasil.h
@@ -0,0 +1,15 @@
+
+// Objective-C API for talking to the following Go packages
+//
+// github.com/yggdrasil-network/yggdrasil-go/contrib/mobile
+// github.com/yggdrasil-network/yggdrasil-go/src/config
+//
+// File is generated by gomobile bind. Do not edit.
+#ifndef __Yggdrasil_FRAMEWORK_H__
+#define __Yggdrasil_FRAMEWORK_H__
+
+#include "Mobile.objc.h"
+#include "Config.objc.h"
+#include "Universe.objc.h"
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/ref.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/ref.h
new file mode 100644
index 000000000..b8036a4d8
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Headers/ref.h
@@ -0,0 +1,35 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#ifndef __GO_REF_HDR__
+#define __GO_REF_HDR__
+
+#include
+
+// GoSeqRef is an object tagged with an integer for passing back and
+// forth across the language boundary. A GoSeqRef may represent either
+// an instance of a Go object, or an Objective-C object passed to Go.
+// The explicit allocation of a GoSeqRef is used to pin a Go object
+// when it is passed to Objective-C. The Go seq package maintains a
+// reference to the Go object in a map keyed by the refnum along with
+// a reference count. When the reference count reaches zero, the Go
+// seq package will clear the corresponding entry in the map.
+@interface GoSeqRef : NSObject {
+}
+@property(readonly) int32_t refnum;
+@property(strong) id obj; // NULL when representing a Go object.
+
+// new GoSeqRef object to proxy a Go object. The refnum must be
+// provided from Go side.
+- (instancetype)initWithRefnum:(int32_t)refnum obj:(id)obj;
+
+- (int32_t)incNum;
+
+@end
+
+@protocol goSeqRefInterface
+-(GoSeqRef*) _ref;
+@end
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Modules/module.modulemap b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Modules/module.modulemap
new file mode 100644
index 000000000..833822c25
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Modules/module.modulemap
@@ -0,0 +1,9 @@
+framework module "Yggdrasil" {
+ header "ref.h"
+ header "Mobile.objc.h"
+ header "Config.objc.h"
+ header "Universe.objc.h"
+ header "Yggdrasil.h"
+
+ export *
+}
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Resources/Info.plist b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Resources/Info.plist
new file mode 100644
index 000000000..0d1a4b8ab
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Resources/Info.plist
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Yggdrasil b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Yggdrasil
new file mode 100644
index 000000000..f28d2b407
Binary files /dev/null and b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/A/Yggdrasil differ
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/Current b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/Current
new file mode 120000
index 000000000..8c7e5a667
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Yggdrasil b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Yggdrasil
new file mode 120000
index 000000000..82defbd4e
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64/Yggdrasil.framework/Yggdrasil
@@ -0,0 +1 @@
+Versions/Current/Yggdrasil
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Headers b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Headers
new file mode 120000
index 000000000..a177d2a6b
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Modules b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Modules
new file mode 120000
index 000000000..5736f3186
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Modules
@@ -0,0 +1 @@
+Versions/Current/Modules
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Resources b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Resources
new file mode 120000
index 000000000..953ee36f3
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Config.objc.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Config.objc.h
new file mode 100644
index 000000000..f513debb8
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Config.objc.h
@@ -0,0 +1,76 @@
+// Objective-C API for talking to github.com/yggdrasil-network/yggdrasil-go/src/config Go package.
+// gobind -lang=objc github.com/yggdrasil-network/yggdrasil-go/src/config
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Config_H__
+#define __Config_H__
+
+@import Foundation;
+#include "ref.h"
+#include "Universe.objc.h"
+
+
+@class ConfigMulticastInterfaceConfig;
+@class ConfigNodeConfig;
+
+@interface ConfigMulticastInterfaceConfig : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+@property (nonatomic) NSString* _Nonnull regex;
+@property (nonatomic) BOOL beacon;
+@property (nonatomic) BOOL listen;
+// skipped field MulticastInterfaceConfig.Port with unsupported type: uint16
+
+@end
+
+/**
+ * NodeConfig is the main configuration structure, containing configuration
+options that are necessary for an Yggdrasil node to run. You will need to
+supply one of these structs to the Yggdrasil core when starting a node.
+ */
+@interface ConfigNodeConfig : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+// skipped field NodeConfig.RWMutex with unsupported type: sync.RWMutex
+
+// skipped field NodeConfig.Peers with unsupported type: []string
+
+// skipped field NodeConfig.InterfacePeers with unsupported type: map[string][]string
+
+// skipped field NodeConfig.Listen with unsupported type: []string
+
+@property (nonatomic) NSString* _Nonnull adminListen;
+// skipped field NodeConfig.MulticastInterfaces with unsupported type: []github.com/yggdrasil-network/yggdrasil-go/src/config.MulticastInterfaceConfig
+
+// skipped field NodeConfig.AllowedPublicKeys with unsupported type: []string
+
+@property (nonatomic) NSString* _Nonnull publicKey;
+@property (nonatomic) NSString* _Nonnull privateKey;
+@property (nonatomic) NSString* _Nonnull ifName;
+// skipped field NodeConfig.IfMTU with unsupported type: uint64
+
+@property (nonatomic) BOOL nodeInfoPrivacy;
+// skipped field NodeConfig.NodeInfo with unsupported type: map[string]interface{}
+
+- (void)lock;
+/**
+ * NewSigningKeys replaces the signing keypair in the NodeConfig with a new
+signing keypair. The signing keys are used by the switch to derive the
+structure of the spanning tree.
+ */
+- (void)newKeys;
+- (void)rLock;
+// skipped method NodeConfig.RLocker with unsupported parameter or return types
+
+- (void)rUnlock;
+- (void)unlock;
+@end
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Mobile.objc.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Mobile.objc.h
new file mode 100644
index 000000000..9036b46c1
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Mobile.objc.h
@@ -0,0 +1,94 @@
+// Objective-C API for talking to github.com/yggdrasil-network/yggdrasil-go/contrib/mobile Go package.
+// gobind -lang=objc github.com/yggdrasil-network/yggdrasil-go/contrib/mobile
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Mobile_H__
+#define __Mobile_H__
+
+@import Foundation;
+#include "ref.h"
+#include "Universe.objc.h"
+
+#include "Config.objc.h"
+
+@class MobileMobileLogger;
+@class MobileYggdrasil;
+
+@interface MobileMobileLogger : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+- (BOOL)write:(NSData* _Nullable)p0 n:(long* _Nullable)n error:(NSError* _Nullable* _Nullable)error;
+@end
+
+/**
+ * Yggdrasil mobile package is meant to "plug the gap" for mobile support, as
+Gomobile will not create headers for Swift/Obj-C etc if they have complex
+(non-native) types. Therefore for iOS we will expose some nice simple
+functions. Note that in the case of iOS we handle reading/writing to/from TUN
+in Swift therefore we use the "dummy" TUN interface instead.
+ */
+@interface MobileYggdrasil : NSObject {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+/**
+ * GetAddressString gets the node's IPv6 address
+ */
+- (NSString* _Nonnull)getAddressString;
+/**
+ * GetCoordsString gets the node's coordinates
+ */
+- (NSString* _Nonnull)getCoordsString;
+- (NSString* _Nonnull)getDHTJSON;
+/**
+ * GetMTU returns the configured node MTU. This must be called AFTER Start.
+ */
+- (long)getMTU;
+- (NSString* _Nonnull)getPeersJSON;
+/**
+ * GetPublicKeyString gets the node's public key in hex form
+ */
+- (NSString* _Nonnull)getPublicKeyString;
+/**
+ * GetSubnetString gets the node's IPv6 subnet in CIDR notation
+ */
+- (NSString* _Nonnull)getSubnetString;
+/**
+ * Recv waits for and reads a packet coming from Yggdrasil. It
+will be a fully formed IPv6 packet
+ */
+- (NSData* _Nullable)recv:(NSError* _Nullable* _Nullable)error;
+/**
+ * Send sends a packet to Yggdrasil. It should be a fully formed
+IPv6 packet
+ */
+- (BOOL)send:(NSData* _Nullable)p0 error:(NSError* _Nullable* _Nullable)error;
+/**
+ * StartAutoconfigure starts a node with a randomly generated config
+ */
+- (BOOL)startAutoconfigure:(NSError* _Nullable* _Nullable)error;
+/**
+ * StartJSON starts a node with the given JSON config. You can get JSON config
+(rather than HJSON) by using the GenerateConfigJSON() function
+ */
+- (BOOL)startJSON:(NSData* _Nullable)configjson error:(NSError* _Nullable* _Nullable)error;
+/**
+ * Stop the mobile Yggdrasil instance
+ */
+- (BOOL)stop:(NSError* _Nullable* _Nullable)error;
+@end
+
+/**
+ * GenerateConfigJSON generates mobile-friendly configuration in JSON format
+ */
+FOUNDATION_EXPORT NSData* _Nullable MobileGenerateConfigJSON(void);
+
+FOUNDATION_EXPORT NSString* _Nonnull MobileGetVersion(void);
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Universe.objc.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Universe.objc.h
new file mode 100644
index 000000000..019e7502d
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Universe.objc.h
@@ -0,0 +1,29 @@
+// Objective-C API for talking to Go package.
+// gobind -lang=objc
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Universe_H__
+#define __Universe_H__
+
+@import Foundation;
+#include "ref.h"
+
+@protocol Universeerror;
+@class Universeerror;
+
+@protocol Universeerror
+- (NSString* _Nonnull)error;
+@end
+
+@class Universeerror;
+
+@interface Universeerror : NSError {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (NSString* _Nonnull)error;
+@end
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Yggdrasil.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Yggdrasil.h
new file mode 100644
index 000000000..971b9b7a7
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/Yggdrasil.h
@@ -0,0 +1,15 @@
+
+// Objective-C API for talking to the following Go packages
+//
+// github.com/yggdrasil-network/yggdrasil-go/contrib/mobile
+// github.com/yggdrasil-network/yggdrasil-go/src/config
+//
+// File is generated by gomobile bind. Do not edit.
+#ifndef __Yggdrasil_FRAMEWORK_H__
+#define __Yggdrasil_FRAMEWORK_H__
+
+#include "Mobile.objc.h"
+#include "Config.objc.h"
+#include "Universe.objc.h"
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/ref.h b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/ref.h
new file mode 100644
index 000000000..b8036a4d8
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Headers/ref.h
@@ -0,0 +1,35 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#ifndef __GO_REF_HDR__
+#define __GO_REF_HDR__
+
+#include
+
+// GoSeqRef is an object tagged with an integer for passing back and
+// forth across the language boundary. A GoSeqRef may represent either
+// an instance of a Go object, or an Objective-C object passed to Go.
+// The explicit allocation of a GoSeqRef is used to pin a Go object
+// when it is passed to Objective-C. The Go seq package maintains a
+// reference to the Go object in a map keyed by the refnum along with
+// a reference count. When the reference count reaches zero, the Go
+// seq package will clear the corresponding entry in the map.
+@interface GoSeqRef : NSObject {
+}
+@property(readonly) int32_t refnum;
+@property(strong) id obj; // NULL when representing a Go object.
+
+// new GoSeqRef object to proxy a Go object. The refnum must be
+// provided from Go side.
+- (instancetype)initWithRefnum:(int32_t)refnum obj:(id)obj;
+
+- (int32_t)incNum;
+
+@end
+
+@protocol goSeqRefInterface
+-(GoSeqRef*) _ref;
+@end
+
+#endif
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Modules/module.modulemap b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Modules/module.modulemap
new file mode 100644
index 000000000..833822c25
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Modules/module.modulemap
@@ -0,0 +1,9 @@
+framework module "Yggdrasil" {
+ header "ref.h"
+ header "Mobile.objc.h"
+ header "Config.objc.h"
+ header "Universe.objc.h"
+ header "Yggdrasil.h"
+
+ export *
+}
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Resources/Info.plist b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Resources/Info.plist
new file mode 100644
index 000000000..0d1a4b8ab
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Resources/Info.plist
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Yggdrasil b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Yggdrasil
new file mode 100644
index 000000000..f523ddf06
Binary files /dev/null and b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/A/Yggdrasil differ
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/Current b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/Current
new file mode 120000
index 000000000..8c7e5a667
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Yggdrasil b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Yggdrasil
new file mode 120000
index 000000000..82defbd4e
--- /dev/null
+++ b/app/ios/Frameworks/Yggdrasil.xcframework/ios-arm64_x86_64-simulator/Yggdrasil.framework/Yggdrasil
@@ -0,0 +1 @@
+Versions/Current/Yggdrasil
\ No newline at end of file
diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock
index 34704e099..3cc5c5012 100644
--- a/app/ios/Podfile.lock
+++ b/app/ios/Podfile.lock
@@ -132,4 +132,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 2262097366c615de59b03ca3bf748d7aaad51773
-COCOAPODS: 1.11.2
+COCOAPODS: 1.11.3
diff --git a/app/ios/Runner Network Extension/ConfigurationProxy.swift b/app/ios/Runner Network Extension/ConfigurationProxy.swift
new file mode 100644
index 000000000..3aac9229c
--- /dev/null
+++ b/app/ios/Runner Network Extension/ConfigurationProxy.swift
@@ -0,0 +1,171 @@
+//
+// ConfigurationProxy.swift
+// YggdrasilNetwork
+//
+// Created by Neil Alexander on 07/01/2019.
+//
+
+import UIKit
+import Yggdrasil
+import NetworkExtension
+
+class ConfigurationProxy {
+
+ private var json: Data? = nil
+ private var dict: [String: Any]? = nil
+
+ init() {
+ self.json = MobileGenerateConfigJSON()
+ do {
+ try self.convertToDict()
+ } catch {
+ NSLog("ConfigurationProxy: Error deserialising JSON (\(error))")
+ }
+ self.fix()
+ }
+
+ init(json: Data) throws {
+ self.json = json
+ try self.convertToDict()
+ self.fix()
+ }
+
+ private func fix() {
+ self.set("AdminListen", to: "none")
+ self.set("IfName", to: "none")
+ self.set("IfMTU", to: 65535)
+
+ if self.get("AutoStart") == nil {
+ self.set("AutoStart", to: ["WiFi": false, "Mobile": false] as [String: Bool])
+ }
+
+ let interfaces = self.get("MulticastInterfaces") as? [String] ?? []
+ if interfaces.contains(where: { $0 == "lo0" }) {
+ self.add("lo0", in: "MulticastInterfaces")
+ }
+ }
+
+ func get(_ key: String) -> Any? {
+ if let dict = self.dict {
+ if dict.keys.contains(key) {
+ return dict[key]
+ }
+ }
+ return nil
+ }
+
+ func get(_ key: String, inSection section: String) -> Any? {
+ if let dict = self.get(section) as? [String: Any] {
+ if dict.keys.contains(key) {
+ return dict[key]
+ }
+ }
+ return nil
+ }
+
+ func add(_ value: Any, in key: String) {
+ if self.dict != nil {
+ if self.dict![key] as? [Any] != nil {
+ var temp = self.dict![key] as? [Any] ?? []
+ temp.append(value)
+ self.dict!.updateValue(temp, forKey: key)
+ }
+ }
+ }
+
+ func remove(_ value: String, from key: String) {
+ if self.dict != nil {
+ if self.dict![key] as? [String] != nil {
+ var temp = self.dict![key] as? [String] ?? []
+ if let index = temp.firstIndex(of: value) {
+ temp.remove(at: index)
+ }
+ self.dict!.updateValue(temp, forKey: key)
+ }
+ }
+ }
+
+ func remove(index: Int, from key: String) {
+ if self.dict != nil {
+ if self.dict![key] as? [Any] != nil {
+ var temp = self.dict![key] as? [Any] ?? []
+ temp.remove(at: index)
+ self.dict!.updateValue(temp, forKey: key)
+ }
+ }
+ }
+
+ func set(_ key: String, to value: Any) {
+ if self.dict != nil {
+ self.dict![key] = value
+ }
+ }
+
+ func set(_ key: String, inSection section: String, to value: Any?) {
+ if self.dict != nil {
+ if self.dict!.keys.contains(section), let value = value {
+ var temp = self.dict![section] as? [String: Any] ?? [:]
+ temp.updateValue(value, forKey: key)
+ self.dict!.updateValue(temp, forKey: section)
+ }
+ }
+ }
+
+ func data() -> Data? {
+ do {
+ try self.convertToJson()
+ return self.json
+ } catch {
+ return nil
+ }
+ }
+
+ func save(to manager: inout NETunnelProviderManager) throws {
+ self.fix()
+ if let data = self.data() {
+ let providerProtocol = NETunnelProviderProtocol()
+ providerProtocol.providerBundleIdentifier = "org.jimber.threebotlogin.staging.extension"
+ providerProtocol.providerConfiguration = [ "json": data ]
+ providerProtocol.serverAddress = "yggdrasil"
+ providerProtocol.username = self.get("EncryptionPublicKey") as? String ?? "(unknown public key)"
+
+ let disconnectrule = NEOnDemandRuleDisconnect()
+ var rules: [NEOnDemandRule] = [disconnectrule]
+
+ if self.get("WiFi", inSection: "AutoStart") as? Bool ?? false {
+ let wifirule = NEOnDemandRuleConnect()
+ wifirule.interfaceTypeMatch = .wiFi
+ rules.insert(wifirule, at: 0)
+ }
+
+ if self.get("Mobile", inSection: "AutoStart") as? Bool ?? false {
+ let mobilerule = NEOnDemandRuleConnect()
+ mobilerule.interfaceTypeMatch = .cellular
+ rules.insert(mobilerule, at: 0)
+ }
+
+ manager.onDemandRules = rules
+ manager.isOnDemandEnabled = rules.count > 1
+ providerProtocol.disconnectOnSleep = rules.count > 1
+
+ manager.protocolConfiguration = providerProtocol
+
+ manager.saveToPreferences(completionHandler: { (error:Error?) in
+ if let error = error {
+ print(error)
+ } else {
+ print("Save successfully")
+ NotificationCenter.default.post(name: NSNotification.Name.YggdrasilSettingsUpdated, object: self)
+ }
+ })
+ }
+ }
+
+ private func convertToDict() throws {
+ self.dict = try JSONSerialization.jsonObject(with: self.json!, options: []) as? [String: Any]
+ }
+
+ private func convertToJson() throws {
+ self.json = try JSONSerialization.data(withJSONObject: self.dict as Any, options: .prettyPrinted)
+ }
+}
diff --git a/app/ios/Runner Network Extension/Extensions/NSExtension.swift b/app/ios/Runner Network Extension/Extensions/NSExtension.swift
new file mode 100644
index 000000000..b733610c5
--- /dev/null
+++ b/app/ios/Runner Network Extension/Extensions/NSExtension.swift
@@ -0,0 +1,15 @@
+//
+// NSExtension.swift
+// Runner Network Extension
+//
+// Created by Robert Van Haecke on 24/04/2021.
+//
+
+import UIKit
+
+extension Notification.Name {
+ static let YggdrasilSelfUpdated = Notification.Name("YggdrasilSelfUpdated")
+ static let YggdrasilPeersUpdated = Notification.Name("YggdrasilPeersUpdated")
+ static let YggdrasilSwitchPeersUpdated = Notification.Name("YggdrasilSwitchPeersUpdated")
+ static let YggdrasilSettingsUpdated = Notification.Name("YggdrasilSettingsUpdated")
+}
diff --git a/app/ios/Runner Network Extension/Info.plist b/app/ios/Runner Network Extension/Info.plist
new file mode 100644
index 000000000..108135f36
--- /dev/null
+++ b/app/ios/Runner Network Extension/Info.plist
@@ -0,0 +1,31 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Runner Network Extension
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ NSExtension
+
+ NSExtensionPointIdentifier
+ com.apple.networkextension.packet-tunnel
+ NSExtensionPrincipalClass
+ $(PRODUCT_MODULE_NAME).PacketTunnelProvider
+
+
+
diff --git a/app/ios/Runner Network Extension/PacketTunnelProvider.swift b/app/ios/Runner Network Extension/PacketTunnelProvider.swift
new file mode 100644
index 000000000..52b493225
--- /dev/null
+++ b/app/ios/Runner Network Extension/PacketTunnelProvider.swift
@@ -0,0 +1,162 @@
+//
+// PacketTunnelProvider.swift
+// Runner Network Extension
+//
+// Created by Robert Van Haecke on 19/04/2021.
+//
+
+import NetworkExtension
+import Yggdrasil
+
+class PacketTunnelProvider: NEPacketTunnelProvider {
+ var yggdrasil: MobileYggdrasil = MobileYggdrasil()
+ var yggdrasilConfig: ConfigurationProxy?
+ var started: Bool = false
+
+ override init() {
+ super.init()
+ }
+
+ @objc func readPacketsFromTun() {
+ while(started) {
+ autoreleasepool {
+ self.packetFlow.readPackets { (packets: [Data], protocols: [NSNumber]) in
+ for packet in packets {
+ do {
+ try self.yggdrasil.send(packet)
+ } catch {
+ NSLog("readPacketsFromTun produced an error: " + error.localizedDescription)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @objc func writePacketsToTun() {
+ while(started) {
+ autoreleasepool {
+ do {
+ let data = try self.yggdrasil.recv()
+ self.packetFlow.writePackets([data], withProtocols: [NSNumber](repeating: AF_INET6 as NSNumber, count: 1))
+ } catch {
+ NSLog("writePacketsToTun produced an error: " + error.localizedDescription)
+ }
+ }
+ }
+ }
+
+ func startYggdrasil() -> Error? {
+ var err: Error? = nil
+
+ //Darwin.sleep(10)
+
+ self.setTunnelNetworkSettings(nil) { (error: Error?) -> Void in
+ NSLog("Starting Yggdrasil")
+
+ if let error = error {
+ NSLog("Failed to clear Yggdrasil tunnel network settings: " + error.localizedDescription)
+ err = error
+ }
+ if self.yggdrasilConfig == nil {
+ NSLog("No configuration proxy!")
+ return
+ }
+ if let config = self.yggdrasilConfig {
+ NSLog("Configuration loaded")
+
+ do {
+ //let str = String(decoding: config.data()!, as: UTF8.self)
+ try self.yggdrasil.startJSON(config.data())
+ } catch {
+ NSLog("Starting Yggdrasil process produced an error: " + error.localizedDescription)
+ return
+ }
+
+ let address = self.yggdrasil.getAddressString()
+ let subnet = self.yggdrasil.getSubnetString()
+
+ NSLog("Yggdrasil IPv6 address: " + address)
+ NSLog("Yggdrasil IPv6 subnet: " + subnet)
+
+ let tunnelNetworkSettings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress: address)
+ tunnelNetworkSettings.ipv6Settings = NEIPv6Settings(addresses: [address], networkPrefixLengths: [7])
+ tunnelNetworkSettings.ipv6Settings?.includedRoutes = [NEIPv6Route(destinationAddress: "0200::", networkPrefixLength: 7)]
+
+ NSLog("Setting tunnel network settings...")
+
+ self.setTunnelNetworkSettings(tunnelNetworkSettings) { (error: Error?) -> Void in
+ NSLog("setTunnelNetworkSettings completed successfully")
+ if let error = error {
+ NSLog("Failed to set Yggdrasil tunnel network settings: " + error.localizedDescription)
+ err = error
+ } else {
+ NSLog("Yggdrasil tunnel settings set successfully")
+
+ let readthread: Thread = Thread(target: self, selector: #selector(self.readPacketsFromTun), object: nil)
+ readthread.name = "TUN Packet Reader"
+ readthread.qualityOfService = .utility
+
+ let writethread: Thread = Thread(target: self, selector: #selector(self.writePacketsToTun), object: nil)
+ writethread.name = "TUN Packet Writer"
+ writethread.qualityOfService = .utility
+
+ self.started = true
+
+ readthread.start()
+ writethread.start()
+ }
+ }
+ }
+ }
+ return err
+ }
+
+ override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {
+ if let conf = (self.protocolConfiguration as! NETunnelProviderProtocol).providerConfiguration {
+ if let json = conf["json"] as? Data {
+ do {
+ self.yggdrasilConfig = try ConfigurationProxy(json: json)
+ } catch {
+ NSLog("Error in Yggdrasil startTunnel: Configuration is invalid")
+ return
+ }
+ if let error = self.startYggdrasil() {
+ NSLog("Error in Yggdrasil startTunnel: " + error.localizedDescription)
+ } else {
+ NSLog("Yggdrasil completion handler called")
+ completionHandler(nil)
+ }
+ }
+ }
+ }
+
+ override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
+ if (!self.started) {
+ return
+ }
+
+ try? self.yggdrasil.stop()
+
+ self.started = false
+
+ super.stopTunnel(with: reason, completionHandler: completionHandler)
+ }
+
+ override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)? = nil) {
+ let request = String(data: messageData, encoding: .utf8)
+
+ switch request {
+ case "address":
+ completionHandler?(self.yggdrasil.getAddressString().data(using: .utf8))
+ case "subnet":
+ completionHandler?(self.yggdrasil.getSubnetString().data(using: .utf8))
+ case "coords":
+ completionHandler?(self.yggdrasil.getCoordsString().data(using: .utf8))
+ case "peers":
+ completionHandler?(self.yggdrasil.getPeersJSON().data(using: .utf8))
+ default:
+ completionHandler?(nil)
+ }
+ }
+}
diff --git a/app/ios/Runner Network Extension/Runner_Network_Extension.entitlements b/app/ios/Runner Network Extension/Runner_Network_Extension.entitlements
new file mode 100644
index 000000000..ef548fd28
--- /dev/null
+++ b/app/ios/Runner Network Extension/Runner_Network_Extension.entitlements
@@ -0,0 +1,18 @@
+
+
+
+
+ com.apple.developer.networking.networkextension
+
+ packet-tunnel-provider
+
+ com.apple.developer.networking.vpn.api
+
+ allow-vpn
+
+ com.apple.security.application-groups
+
+ group.org.jimber.threebotlogin.staging
+
+
+
diff --git a/app/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj
index 470eb2119..61b8bd9fb 100644
--- a/app/ios/Runner.xcodeproj/project.pbxproj
+++ b/app/ios/Runner.xcodeproj/project.pbxproj
@@ -3,42 +3,79 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 55;
+ objectVersion = 52;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 250B5E7812A7EFA9BBF43132 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1381F27CECEC189C72CB5746 /* Pods_Runner.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 43FEC1C4A6AF78466FF663AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C53A060B7EC8C0008D56739 /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 7E0A524427BAADF50029DB8B /* Yggdrasil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E0A524327BAADF40029DB8B /* Yggdrasil.xcframework */; };
+ 7E75E6B72629E83C000C2EBB /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E75E6B62629E83C000C2EBB /* NetworkExtension.framework */; };
+ 7E75E6D1262DCF29000C2EBB /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E75E6B62629E83C000C2EBB /* NetworkExtension.framework */; };
+ 7E75E6D4262DCF29000C2EBB /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E75E6D3262DCF29000C2EBB /* PacketTunnelProvider.swift */; };
+ 7E75E6D9262DCF29000C2EBB /* Runner Network Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 7E75E6D0262DCF29000C2EBB /* Runner Network Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 7E75E703262DD640000C2EBB /* ConfigurationProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E75E702262DD640000C2EBB /* ConfigurationProxy.swift */; };
+ 7E75E7CA2634139E000C2EBB /* NSExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E75E7C92634139E000C2EBB /* NSExtension.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
- DA00EA4E27EE0C8C003ECED6 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA00EA4D27EE0C8C003ECED6 /* NetworkExtension.framework */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ 7E75E6D7262DCF29000C2EBB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7E75E6CF262DCF29000C2EBB;
+ remoteInfo = "Runner Network Extension";
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXCopyFilesBuildPhase section */
- D8526A6624ED375000188B2E /* CopyFiles */ = {
+ 7E75E6CA262DCE56000C2EBB /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ 7E75E6D9262DCF29000C2EBB /* Runner Network Extension.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
- dstSubfolderSpec = 7;
+ dstSubfolderSpec = 10;
files = (
);
+ name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 0B8050713428BE7B6B97A1F7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 1381F27CECEC189C72CB5746 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 1653057A97D4FD3B8827ABD1 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 3C53A060B7EC8C0008D56739 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 7D453988260C5B62007F55D0 /* flutter_sodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = flutter_sodium.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7E0A524327BAADF40029DB8B /* Yggdrasil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Yggdrasil.xcframework; path = Frameworks/Yggdrasil.xcframework; sourceTree = ""; };
+ 7E75E6B52629E83B000C2EBB /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; };
+ 7E75E6B62629E83C000C2EBB /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; };
+ 7E75E6D0262DCF29000C2EBB /* Runner Network Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Runner Network Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7E75E6D3262DCF29000C2EBB /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = ""; };
+ 7E75E6D5262DCF29000C2EBB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 7E75E6D6262DCF29000C2EBB /* Runner_Network_Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner_Network_Extension.entitlements; sourceTree = ""; };
+ 7E75E702262DD640000C2EBB /* ConfigurationProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationProxy.swift; sourceTree = ""; };
+ 7E75E7C92634139E000C2EBB /* NSExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSExtension.swift; sourceTree = ""; };
+ 93ABBA06A3FF048AED496837 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -46,27 +83,61 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- B39D0D54AA3ED468905E3BFF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- D8526A6424ED35BB00188B2E /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
- D8FC754824ED2B340008DC13 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; };
- DA00EA4D27EE0C8C003ECED6 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; };
- DAB4E14B28168AF2008B8507 /* yggdrasil_plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = yggdrasil_plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- E923F43865F039387CDB94E1 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ EBD3E09F2D71BF98AAC70C28 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 7E75E6CD262DCF29000C2EBB /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7E75E6D1262DCF29000C2EBB /* NetworkExtension.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 43FEC1C4A6AF78466FF663AD /* Pods_Runner.framework in Frameworks */,
- DA00EA4E27EE0C8C003ECED6 /* NetworkExtension.framework in Frameworks */,
+ 7E0A524427BAADF50029DB8B /* Yggdrasil.xcframework in Frameworks */,
+ 7E75E6B72629E83C000C2EBB /* NetworkExtension.framework in Frameworks */,
+ 250B5E7812A7EFA9BBF43132 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 7E75E6D2262DCF29000C2EBB /* Runner Network Extension */ = {
+ isa = PBXGroup;
+ children = (
+ 7E75E7CC263413CF000C2EBB /* Extensions */,
+ 7E75E702262DD640000C2EBB /* ConfigurationProxy.swift */,
+ 7E75E6D3262DCF29000C2EBB /* PacketTunnelProvider.swift */,
+ 7E75E6D5262DCF29000C2EBB /* Info.plist */,
+ 7E75E6D6262DCF29000C2EBB /* Runner_Network_Extension.entitlements */,
+ );
+ path = "Runner Network Extension";
+ sourceTree = "";
+ };
+ 7E75E7CC263413CF000C2EBB /* Extensions */ = {
+ isa = PBXGroup;
+ children = (
+ 7E75E7C92634139E000C2EBB /* NSExtension.swift */,
+ );
+ path = Extensions;
+ sourceTree = "";
+ };
+ 9387A093EFFAB87EB553BAE1 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ EBD3E09F2D71BF98AAC70C28 /* Pods-Runner.debug.xcconfig */,
+ 93ABBA06A3FF048AED496837 /* Pods-Runner.release.xcconfig */,
+ 0B8050713428BE7B6B97A1F7 /* Pods-Runner.profile.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -83,9 +154,10 @@
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
+ 7E75E6D2262DCF29000C2EBB /* Runner Network Extension */,
97C146EF1CF9000F007C117D /* Products */,
- ED38A37C84C5DF965BF3695D /* Pods */,
- BC2FDFA445F80258146A5741 /* Frameworks */,
+ 9387A093EFFAB87EB553BAE1 /* Pods */,
+ 9AADBE19F3C9D7253BD7FC7D /* Frameworks */,
);
sourceTree = "";
};
@@ -93,6 +165,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
+ 7E75E6D0262DCF29000C2EBB /* Runner Network Extension.appex */,
);
name = Products;
sourceTree = "";
@@ -100,13 +173,12 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
- D8FC754824ED2B340008DC13 /* Runner.entitlements */,
+ 7E75E6B52629E83B000C2EBB /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
- D8526A6424ED35BB00188B2E /* GoogleService-Info.plist */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
@@ -114,46 +186,54 @@
path = Runner;
sourceTree = "";
};
- BC2FDFA445F80258146A5741 /* Frameworks */ = {
+ 9AADBE19F3C9D7253BD7FC7D /* Frameworks */ = {
isa = PBXGroup;
children = (
- DAB4E14B28168AF2008B8507 /* yggdrasil_plugin.framework */,
- DA00EA4D27EE0C8C003ECED6 /* NetworkExtension.framework */,
- 7D453988260C5B62007F55D0 /* flutter_sodium.framework */,
- 3C53A060B7EC8C0008D56739 /* Pods_Runner.framework */,
+ 7E0A524327BAADF40029DB8B /* Yggdrasil.xcframework */,
+ 7E75E6B62629E83C000C2EBB /* NetworkExtension.framework */,
+ 1381F27CECEC189C72CB5746 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "";
};
- ED38A37C84C5DF965BF3695D /* Pods */ = {
- isa = PBXGroup;
- children = (
- E923F43865F039387CDB94E1 /* Pods-Runner.debug.xcconfig */,
- B39D0D54AA3ED468905E3BFF /* Pods-Runner.release.xcconfig */,
- 1653057A97D4FD3B8827ABD1 /* Pods-Runner.profile.xcconfig */,
- );
- path = Pods;
- sourceTree = "";
- };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
+ 7E75E6CF262DCF29000C2EBB /* Runner Network Extension */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 7E75E6DA262DCF2A000C2EBB /* Build configuration list for PBXNativeTarget "Runner Network Extension" */;
+ buildPhases = (
+ 7E75E6CC262DCF29000C2EBB /* Sources */,
+ 7E75E6CD262DCF29000C2EBB /* Frameworks */,
+ 7E75E6CE262DCF29000C2EBB /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "Runner Network Extension";
+ productName = "Runner Network Extension";
+ productReference = 7E75E6D0262DCF29000C2EBB /* Runner Network Extension.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- 1D5C3222B79A53570CF5530A /* [CP] Check Pods Manifest.lock */,
+ 712EF3076A3FDC3F68B0A8FC /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- D8526A6624ED375000188B2E /* CopyFiles */,
- 542E63BC880F182266CA2C4E /* [CP] Embed Pods Frameworks */,
+ 7E75E6CA262DCE56000C2EBB /* Embed App Extensions */,
+ 1577792F4C138F0A6A12C487 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
+ 7E75E6D8262DCF29000C2EBB /* PBXTargetDependency */,
);
name = Runner;
productName = Runner;
@@ -166,9 +246,13 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1020;
+ LastSwiftUpdateCheck = 1240;
+ LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
+ 7E75E6CF262DCF29000C2EBB = {
+ CreatedOnToolsVersion = 12.4;
+ };
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
@@ -176,7 +260,7 @@
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 13.0";
+ compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -189,11 +273,19 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
+ 7E75E6CF262DCF29000C2EBB /* Runner Network Extension */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 7E75E6CE262DCF29000C2EBB /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -208,26 +300,21 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 1D5C3222B79A53570CF5530A /* [CP] Check Pods Manifest.lock */ = {
+ 1577792F4C138F0A6A12C487 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
+ name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
@@ -244,21 +331,26 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
- 542E63BC880F182266CA2C4E /* [CP] Embed Pods Frameworks */ = {
+ 712EF3076A3FDC3F68B0A8FC /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- name = "[CP] Embed Pods Frameworks";
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
@@ -278,6 +370,16 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 7E75E6CC262DCF29000C2EBB /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7E75E6D4262DCF29000C2EBB /* PacketTunnelProvider.swift in Sources */,
+ 7E75E7CA2634139E000C2EBB /* NSExtension.swift in Sources */,
+ 7E75E703262DD640000C2EBB /* ConfigurationProxy.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -289,6 +391,14 @@
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ 7E75E6D8262DCF29000C2EBB /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 7E75E6CF262DCF29000C2EBB /* Runner Network Extension */;
+ targetProxy = 7E75E6D7262DCF29000C2EBB /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -340,9 +450,9 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_BITCODE = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ EXCLUDED_ARCHS = armv7;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -351,10 +461,11 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@@ -364,21 +475,19 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
- CURRENT_PROJECT_VERSION = 143;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5KWG4UBB25;
ENABLE_BITCODE = NO;
- EXCLUDED_ARCHS = "";
- FLUTTER_BUILD_NAME = 2.0.1;
- FLUTTER_BUILD_NUMBER = 101;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 15.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -387,9 +496,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 3.6.0;
- ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebot;
+ MARKETING_VERSION = 3.7.0;
+ PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebotlogin.staging;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -397,6 +505,108 @@
};
name = Profile;
};
+ 7E75E6DB262DCF2A000C2EBB /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = "Runner Network Extension/Runner_Network_Extension.entitlements";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 5KWG4UBB25;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "Runner Network Extension/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebotlogin.staging.extension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 7E75E6DC262DCF2A000C2EBB /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = "Runner Network Extension/Runner_Network_Extension.entitlements";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 5KWG4UBB25;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "Runner Network Extension/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebotlogin.staging.extension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 7E75E6DD262DCF2A000C2EBB /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = "Runner Network Extension/Runner_Network_Extension.entitlements";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 5KWG4UBB25;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "Runner Network Extension/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebotlogin.staging.extension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Profile;
+ };
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -428,9 +638,9 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_BITCODE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
+ EXCLUDED_ARCHS = armv7;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -445,10 +655,11 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
+ SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
@@ -484,9 +695,9 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_BITCODE = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ EXCLUDED_ARCHS = armv7;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -495,12 +706,13 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@@ -510,21 +722,19 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
- CURRENT_PROJECT_VERSION = 143;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5KWG4UBB25;
ENABLE_BITCODE = NO;
- EXCLUDED_ARCHS = "";
- FLUTTER_BUILD_NAME = 2.0.1;
- FLUTTER_BUILD_NUMBER = 101;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 15.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -533,9 +743,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 3.6.0;
- ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebot;
+ MARKETING_VERSION = 3.7.0;
+ PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebotlogin.staging;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -548,21 +757,19 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
- CURRENT_PROJECT_VERSION = 143;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5KWG4UBB25;
ENABLE_BITCODE = NO;
- EXCLUDED_ARCHS = "";
- FLUTTER_BUILD_NAME = 2.0.1;
- FLUTTER_BUILD_NUMBER = 101;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 15.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -571,9 +778,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 3.6.0;
- ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebot;
+ MARKETING_VERSION = 3.7.0;
+ PRODUCT_BUNDLE_IDENTIFIER = org.jimber.threebotlogin.staging;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -584,6 +790,16 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 7E75E6DA262DCF2A000C2EBB /* Build configuration list for PBXNativeTarget "Runner Network Extension" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7E75E6DB262DCF2A000C2EBB /* Debug */,
+ 7E75E6DC262DCF2A000C2EBB /* Release */,
+ 7E75E6DD262DCF2A000C2EBB /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/app/ios/Runner/Info.plist b/app/ios/Runner/Info.plist
index 030070edd..880e2aabc 100644
--- a/app/ios/Runner/Info.plist
+++ b/app/ios/Runner/Info.plist
@@ -5,7 +5,7 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- ThreeFold Connect
+ ThreeFold Connect Staging
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
diff --git a/app/ios/ex/Info.plist b/app/ios/ex/Info.plist
new file mode 100644
index 000000000..3059459e1
--- /dev/null
+++ b/app/ios/ex/Info.plist
@@ -0,0 +1,13 @@
+
+
+
+
+ NSExtension
+
+ NSExtensionPointIdentifier
+ com.apple.networkextension.packet-tunnel
+ NSExtensionPrincipalClass
+ $(PRODUCT_MODULE_NAME).PacketTunnelProvider
+
+
+
diff --git a/app/ios/ex/PacketTunnelProvider.swift b/app/ios/ex/PacketTunnelProvider.swift
new file mode 100644
index 000000000..117f7a650
--- /dev/null
+++ b/app/ios/ex/PacketTunnelProvider.swift
@@ -0,0 +1,36 @@
+//
+// PacketTunnelProvider.swift
+// ex
+//
+// Created by Lennert on 04/07/2022.
+//
+
+import NetworkExtension
+
+class PacketTunnelProvider: NEPacketTunnelProvider {
+
+ override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {
+ // Add code here to start the process of connecting the tunnel.
+ }
+
+ override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
+ // Add code here to start the process of stopping the tunnel.
+ completionHandler()
+ }
+
+ override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) {
+ // Add code here to handle the message.
+ if let handler = completionHandler {
+ handler(messageData)
+ }
+ }
+
+ override func sleep(completionHandler: @escaping () -> Void) {
+ // Add code here to get ready to sleep.
+ completionHandler()
+ }
+
+ override func wake() {
+ // Add code here to wake up.
+ }
+}
diff --git a/app/ios/ex/ex.entitlements b/app/ios/ex/ex.entitlements
new file mode 100644
index 000000000..f29aa7ec3
--- /dev/null
+++ b/app/ios/ex/ex.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.org.jimber.threebotlogin.staging
+
+
+
diff --git a/helm_files/templates/persistantVolumeClaim.yaml b/helm_files/templates/persistantVolumeClaim.yaml
index c27fcc1fd..d44dc4231 100755
--- a/helm_files/templates/persistantVolumeClaim.yaml
+++ b/helm_files/templates/persistantVolumeClaim.yaml
@@ -1,15 +1,12 @@
-#apiVersion: v1
-#kind: PersistentVolumeClaim
-#metadata:
-# labels:
-# app: {{ template "releaseName" . }}
-# name: {{ .Values.claims.data.name }}
-#spec:
-# storageClassName: {{ .Values.storage.className }}
-# accessModes:
-# - {{ .Values.claims.data.accessModes }}
-# resources:
-# requests:
-# storage: {{ .Values.claims.data.storage }}
-#status: {}
-#
\ No newline at end of file
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ .Values.claims.data.name }}
+ namespace: jimber
+spec:
+ accessModes:
+ - {{ .Values.claims.data.accessModes }}
+ resources:
+ requests:
+ storage: {{ .Values.claims.data.storage }}
+ storageClassName: rook-cephfs
\ No newline at end of file
diff --git a/helm_files/values.yaml b/helm_files/values.yaml
index 20e045704..21a2b4312 100755
--- a/helm_files/values.yaml
+++ b/helm_files/values.yaml
@@ -36,9 +36,9 @@ storage:
claims:
data:
- name: threebotlogin-pvc
- accessModes: ReadWriteOnce
- storage: 700Mi
+ name: threebotlogin
+ accessModes: ReadWriteMany
+ storage: 2G
acme:
diff --git a/helm_files/valuesProduction.yaml b/helm_files/valuesProduction.yaml
index 85cd815f9..2c9a337ab 100755
--- a/helm_files/valuesProduction.yaml
+++ b/helm_files/valuesProduction.yaml
@@ -6,7 +6,7 @@ images:
tag: production-337f2c85635dc81a5e59756dcfc66303f6f6afd7
wizard:
name: wizard-prod
- tag: prodv1
+ tag: latest
ingress:
diff --git a/helm_files/valuesStaging.yaml b/helm_files/valuesStaging.yaml
index 8eeeed34a..965440423 100755
--- a/helm_files/valuesStaging.yaml
+++ b/helm_files/valuesStaging.yaml
@@ -10,7 +10,7 @@ images:
tag: staging-2
wizard:
name: wizard-prod
- tag: prodv1
+ tag: latest
ingress: