mirror of
https://github.com/kkebo/DNSecure.git
synced 2026-03-11 08:54:36 +00:00
commit
9a4a33f1f5
14 changed files with 193 additions and 31 deletions
|
|
@ -524,7 +524,7 @@
|
||||||
MARKETING_VERSION = 1.1.1;
|
MARKETING_VERSION = 1.1.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = xyz.kebo.DNSecure;
|
PRODUCT_BUNDLE_IDENTIFIER = xyz.kebo.DNSecure;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
};
|
};
|
||||||
|
|
@ -550,7 +550,7 @@
|
||||||
MARKETING_VERSION = 1.1.1;
|
MARKETING_VERSION = 1.1.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = xyz.kebo.DNSecure;
|
PRODUCT_BUNDLE_IDENTIFIER = xyz.kebo.DNSecure;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
21
DNSecure/Assets.xcassets/HowToActivate/MakeServiceActive.imageset/Contents.json
vendored
Normal file
21
DNSecure/Assets.xcassets/HowToActivate/MakeServiceActive.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "IMG_0244.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
DNSecure/Assets.xcassets/HowToActivate/MakeServiceActive.imageset/IMG_0244.jpg
vendored
Normal file
BIN
DNSecure/Assets.xcassets/HowToActivate/MakeServiceActive.imageset/IMG_0244.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
21
DNSecure/Assets.xcassets/HowToActivate/NetworkSettings.imageset/Contents.json
vendored
Normal file
21
DNSecure/Assets.xcassets/HowToActivate/NetworkSettings.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "Screen Shot 2021-02-13 at 11.25.16 AM.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 155 KiB |
21
DNSecure/Assets.xcassets/HowToActivate/NetworkSettingsApply.imageset/Contents.json
vendored
Normal file
21
DNSecure/Assets.xcassets/HowToActivate/NetworkSettingsApply.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "Image 2-13-21 at 12.10 PM.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
DNSecure/Assets.xcassets/HowToActivate/NetworkSettingsApply.imageset/Image 2-13-21 at 12.10 PM.jpg
vendored
Normal file
BIN
DNSecure/Assets.xcassets/HowToActivate/NetworkSettingsApply.imageset/Image 2-13-21 at 12.10 PM.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 69 KiB |
21
DNSecure/Assets.xcassets/HowToActivate/SystemPreferences.imageset/Contents.json
vendored
Normal file
21
DNSecure/Assets.xcassets/HowToActivate/SystemPreferences.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "Screen Shot 2021-02-13 at 11.36.47 AM.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 198 KiB |
21
DNSecure/Assets.xcassets/HowToActivate/SystemPreferencesIcon.imageset/Contents.json
vendored
Normal file
21
DNSecure/Assets.xcassets/HowToActivate/SystemPreferencesIcon.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "IMG_0250.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
DNSecure/Assets.xcassets/HowToActivate/SystemPreferencesIcon.imageset/IMG_0250.jpg
vendored
Normal file
BIN
DNSecure/Assets.xcassets/HowToActivate/SystemPreferencesIcon.imageset/IMG_0250.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
|
|
@ -194,6 +194,10 @@ extension ContentView: View {
|
||||||
.frame(width: 10, height: 10)
|
.frame(width: 10, height: 10)
|
||||||
.foregroundColor(self.isEnabled ? .green : .secondary)
|
.foregroundColor(self.isEnabled ? .green : .secondary)
|
||||||
Text(self.isEnabled ? "Active" : "Inactive")
|
Text(self.isEnabled ? "Active" : "Inactive")
|
||||||
|
#if targetEnvironment(macCatalyst)
|
||||||
|
Text("-")
|
||||||
|
Button("Refresh", action: self.updateStatus)
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if !self.isEnabled {
|
if !self.isEnabled {
|
||||||
Button("How to Activate") {
|
Button("How to Activate") {
|
||||||
|
|
@ -220,6 +224,7 @@ extension ContentView: View {
|
||||||
.navigationBarHidden(true)
|
.navigationBarHidden(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onAppear(perform: self.updateStatus)
|
||||||
.onChange(of: self.scenePhase) { phase in
|
.onChange(of: self.scenePhase) { phase in
|
||||||
if phase == .active {
|
if phase == .active {
|
||||||
self.updateStatus()
|
self.updateStatus()
|
||||||
|
|
|
||||||
|
|
@ -36,35 +36,77 @@ extension HowToActivateView: View {
|
||||||
.scaledToFit()
|
.scaledToFit()
|
||||||
.frame(maxHeight: 200)
|
.frame(maxHeight: 200)
|
||||||
}
|
}
|
||||||
VStack(alignment: .leading) {
|
#if targetEnvironment(macCatalyst)
|
||||||
Text("3. Open the Settings")
|
VStack(alignment: .leading) {
|
||||||
Image("Settings")
|
Text("3. Open the System Preferences")
|
||||||
.resizable()
|
Image("SystemPreferencesIcon")
|
||||||
.scaledToFit()
|
.resizable()
|
||||||
.frame(maxHeight: 200)
|
.scaledToFit()
|
||||||
}
|
.frame(maxHeight: 200)
|
||||||
VStack(alignment: .leading) {
|
}
|
||||||
Text("4. Go to \"General\" > \"VPN & Network\" > \"DNS\"")
|
VStack(alignment: .leading) {
|
||||||
ScrollView(.horizontal) {
|
Text("4. Go to Network settings")
|
||||||
|
Image("SystemPreferences")
|
||||||
|
.resizable()
|
||||||
|
.scaledToFit()
|
||||||
|
.frame(maxHeight: 400)
|
||||||
|
}
|
||||||
|
VStack(alignment: .leading) {
|
||||||
HStack {
|
HStack {
|
||||||
Image("GeneralVPNNetwork")
|
Text("5. Select \"\(Bundle.main.displayName!)\" and click")
|
||||||
.resizable()
|
Image(systemName: "ellipsis.circle")
|
||||||
.scaledToFit()
|
Text("button")
|
||||||
.frame(maxHeight: 200)
|
}
|
||||||
Image("DNS")
|
Image("NetworkSettings")
|
||||||
.resizable()
|
.resizable()
|
||||||
.scaledToFit()
|
.scaledToFit()
|
||||||
.frame(maxHeight: 200)
|
.frame(maxHeight: 400)
|
||||||
|
}
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("6. Click \"Make Service Active\"")
|
||||||
|
Image("MakeServiceActive")
|
||||||
|
.resizable()
|
||||||
|
.scaledToFit()
|
||||||
|
.frame(maxHeight: 200)
|
||||||
|
}
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("7. Click \"Apply\" button")
|
||||||
|
Image("NetworkSettingsApply")
|
||||||
|
.resizable()
|
||||||
|
.scaledToFit()
|
||||||
|
.frame(maxHeight: 400)
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("3. Open the Settings")
|
||||||
|
Image("Settings")
|
||||||
|
.resizable()
|
||||||
|
.scaledToFit()
|
||||||
|
.frame(maxHeight: 200)
|
||||||
|
}
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("4. Go to \"General\" > \"VPN & Network\" > \"DNS\"")
|
||||||
|
ScrollView(.horizontal) {
|
||||||
|
HStack {
|
||||||
|
Image("GeneralVPNNetwork")
|
||||||
|
.resizable()
|
||||||
|
.scaledToFit()
|
||||||
|
.frame(maxHeight: 200)
|
||||||
|
Image("DNS")
|
||||||
|
.resizable()
|
||||||
|
.scaledToFit()
|
||||||
|
.frame(maxHeight: 200)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
VStack(alignment: .leading) {
|
||||||
VStack(alignment: .leading) {
|
Text("5. \"Automatic\" is selected by default, so select \"\(Bundle.main.displayName!)\"")
|
||||||
Text("5. \"Automatic\" is selected by default, so select \"\(Bundle.main.displayName!)\"")
|
Image("DNSProvider")
|
||||||
Image("DNSProvider")
|
.resizable()
|
||||||
.resizable()
|
.scaledToFit()
|
||||||
.scaledToFit()
|
.frame(maxHeight: 200)
|
||||||
.frame(maxHeight: 200)
|
}
|
||||||
}
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if self.isSheet {
|
if self.isSheet {
|
||||||
|
|
|
||||||
16
README.md
16
README.md
|
|
@ -3,11 +3,11 @@
|
||||||
<a href="https://apps.apple.com/us/app/dnsecure/id1533413232?itsct=apps_box&itscg=30200" style="display: inline-block; overflow: hidden; border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-US?size=250x83&releaseDate=1601251200&h=77f35e8e1cad98287ffaa894b10bb6e2" alt="Download on the App Store" style="border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"></a>
|
<a href="https://apps.apple.com/us/app/dnsecure/id1533413232?itsct=apps_box&itscg=30200" style="display: inline-block; overflow: hidden; border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-US?size=250x83&releaseDate=1601251200&h=77f35e8e1cad98287ffaa894b10bb6e2" alt="Download on the App Store" style="border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"></a>
|
||||||
or [TestFlight Beta](https://testflight.apple.com/join/A8GwCnq8)
|
or [TestFlight Beta](https://testflight.apple.com/join/A8GwCnq8)
|
||||||
|
|
||||||
iOS/iPadOS has supported encrypted DNS (e.g. DNS-over-TLS (DoT) and DNS-over-HTTPS (DoH)) since 14.0, but the Settings app doesn't have settings for using it. To solve that, DNSecure was created. DNSecure is a configuration tool of DoT and DoH.
|
iOS 14+, iPadOS 14+, and macOS 11+ have supported encrypted DNS (e.g. DNS-over-TLS (DoT) and DNS-over-HTTPS (DoH)), but they don't have a native UI for enabling it. To solve that, DNSecure was created. DNSecure is a configuration tool of DoT and DoH.
|
||||||
|
|
||||||
This app uses the new [DNS Settings API](https://developer.apple.com/documentation/networkextension/dns_settings), so it requires iOS 14, iPadOS 14, or later.
|
This app uses the new [DNS Settings API](https://developer.apple.com/documentation/networkextension/dns_settings), so it requires iOS 14+, iPadOS 14+, or macOS 11+.
|
||||||
|
|
||||||
## How to use
|
## How to use (iOS/iPadOS)
|
||||||
|
|
||||||
1. Select a DNS server you like, or add another one
|
1. Select a DNS server you like, or add another one
|
||||||
1. Enable "Use This Server"
|
1. Enable "Use This Server"
|
||||||
|
|
@ -15,6 +15,16 @@ This app uses the new [DNS Settings API](https://developer.apple.com/documentati
|
||||||
1. Go to "General" > "VPN & Network" > "DNS"
|
1. Go to "General" > "VPN & Network" > "DNS"
|
||||||
1. "Automatic" is selected by default, so select "DNSecure"
|
1. "Automatic" is selected by default, so select "DNSecure"
|
||||||
|
|
||||||
|
## How to use (macOS)
|
||||||
|
|
||||||
|
1. Select a DNS server you like, or add another one
|
||||||
|
1. Enable "Use This Server"
|
||||||
|
1. Open the System Preferences
|
||||||
|
1. Go to Network settings
|
||||||
|
1. Select "DNSecure" and click "..." button on the bottom
|
||||||
|
1. Click "Make Service Active"
|
||||||
|
1. Click "Apply" button
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
- https://developer.apple.com/documentation/networkextension/dns_settings
|
- https://developer.apple.com/documentation/networkextension/dns_settings
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue