blob: 27e6854f96b065a346529a3e730cd8a42cfc0aa1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/*
* Copyright (c) 2012-2016 Arne Schwabe
* Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
*/
package de.blinkt.openvpn.fragments
import android.os.Bundle
import androidx.preference.*
import de.blinkt.openvpn.R
import de.blinkt.openvpn.fragments.OpenVpnPreferencesFragment
import de.blinkt.openvpn.VpnProfile
class Settings_IP : OpenVpnPreferencesFragment(), Preference.OnPreferenceChangeListener {
private lateinit var mIPv4: EditTextPreference
private lateinit var mIPv6: EditTextPreference
private lateinit var mUsePull: SwitchPreference
private lateinit var mOverrideDNS: CheckBoxPreference
private lateinit var mSearchdomain: EditTextPreference
private lateinit var mDNS1: EditTextPreference
private lateinit var mDNS2: EditTextPreference
private lateinit var mNobind: CheckBoxPreference
override fun onResume() {
super.onResume()
// Make sure default values are applied. In a real app, you would
// want this in a shared function that is used to retrieve the
// SharedPreferences wherever they are needed.
PreferenceManager.setDefaultValues(
requireActivity(),
R.xml.vpn_ipsettings, false
)
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.vpn_ipsettings)
mIPv4 = findPreference("ipv4_address")!!
mIPv6 = findPreference("ipv6_address")!!
mUsePull = findPreference("usePull")!!
mOverrideDNS = findPreference("overrideDNS")!!
mSearchdomain = findPreference("searchdomain")!!
mDNS1 = findPreference("dns1")!!
mDNS2 = findPreference("dns2")!!
mDNS1.summaryProvider = DNSSummaryProvider()
mDNS2.summaryProvider = DNSSummaryProvider()
mNobind = findPreference("nobind")!!
mUsePull.onPreferenceChangeListener = this
mOverrideDNS.onPreferenceChangeListener = this
loadSettings()
}
override fun loadSettings() {
if (mProfile.mAuthenticationType == VpnProfile.TYPE_STATICKEYS) mUsePull.isEnabled =
false else mUsePull.isChecked = mProfile.mUsePull
mIPv4.text = mProfile.mIPv4Address
mIPv6.text = mProfile.mIPv6Address
mDNS1.text = mProfile.mDNS1
mDNS2.text = mProfile.mDNS2
mOverrideDNS.isChecked = mProfile.mOverrideDNS
mSearchdomain.text = mProfile.mSearchDomain
mNobind.isChecked = mProfile.mNobind
//mUsePull.setEnabled(mProfile.mAuthenticationType != VpnProfile.TYPE_STATICKEYS);
mUsePull.isEnabled = true
if (mProfile.mAuthenticationType == VpnProfile.TYPE_STATICKEYS) mUsePull.isChecked = false
// Sets Summary
setDNSState()
}
override fun saveSettings() {
mProfile.mUsePull = mUsePull.isChecked
mProfile.mIPv4Address = mIPv4.text
mProfile.mIPv6Address = mIPv6.text
mProfile.mDNS1 = mDNS1.text
mProfile.mDNS2 = mDNS2.text
mProfile.mOverrideDNS = mOverrideDNS.isChecked
mProfile.mSearchDomain = mSearchdomain.text
mProfile.mNobind = mNobind.isChecked
}
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
if (preference === mUsePull || preference === mOverrideDNS)
if (preference === mOverrideDNS) {
// Set so the function gets the right value
mOverrideDNS.isChecked = (newValue as Boolean)
}
setDNSState()
saveSettings()
return true
}
override fun onPause() {
super.onPause()
saveSettings()
}
private fun setDNSState() {
val enabled: Boolean
mOverrideDNS.isEnabled = mUsePull.isChecked
enabled = if (!mUsePull.isChecked) true else mOverrideDNS.isChecked
mDNS1.isEnabled = enabled
mDNS2.isEnabled = enabled
mSearchdomain.isEnabled = enabled
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
}
}
class DNSSummaryProvider : Preference.SummaryProvider<Preference> {
override fun provideSummary(preference: Preference): CharSequence {
val ep = preference as EditTextPreference
var summary = ep.text ?: ""
if (summary == "8.8.4.4" || summary == "8.8.8.8" || summary == "2001:4860:4860::8888" || summary == "2001:4860:4860::8844" )
summary += " (dns.google.com)"
else if (summary.startsWith("2606:4700:4700::") || summary.startsWith("1.1.1.") || summary.startsWith("1.0.0."))
summary += " (Cloudflare)"
else if (summary.startsWith("9.9.9.") || summary.startsWith("2620:fe::"))
summary += " (Quad9)"
else if (summary.isEmpty())
summary = "(not set)"
return summary
}
}
|