Added username/password settings for STUN/TURN server
This commit is contained in:
parent
5213eccf30
commit
6f05c2a6ce
6 changed files with 119 additions and 42 deletions
|
@ -206,4 +206,6 @@
|
||||||
<string name="pref_device_ringtone_key">pref_device_ringtone_key</string>
|
<string name="pref_device_ringtone_key">pref_device_ringtone_key</string>
|
||||||
<string name="pref_auto_answer_key">pref_auto_answer_key</string>
|
<string name="pref_auto_answer_key">pref_auto_answer_key</string>
|
||||||
<string name="pref_android_app_settings_key">pref_android_app_settings_key</string>
|
<string name="pref_android_app_settings_key">pref_android_app_settings_key</string>
|
||||||
|
<string name="pref_turn_username_key">pref_turn_username_key</string>
|
||||||
|
<string name="pref_turn_passwd_key">pref_turn_passwd_key</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -290,9 +290,11 @@
|
||||||
<!-- Network settings -->
|
<!-- Network settings -->
|
||||||
<string name="pref_network_title">Network</string>
|
<string name="pref_network_title">Network</string>
|
||||||
<string name="pref_wifi_only">Use WiFi only</string>
|
<string name="pref_wifi_only">Use WiFi only</string>
|
||||||
<string name="pref_stun_server">Stun server</string>
|
<string name="pref_stun_server">STUN server</string>
|
||||||
<string name="pref_ice_enable">Enable ICE</string>
|
<string name="pref_ice_enable">Enable ICE</string>
|
||||||
<string name="pref_turn_enable">Enable TURN</string>
|
<string name="pref_turn_enable">Enable TURN</string>
|
||||||
|
<string name="pref_turn_username_title">STUN / TURN username (optional)</string>
|
||||||
|
<string name="pref_turn_passwd_title">STUN / TURN password (optional)</string>
|
||||||
<string name="pref_upnp_enable">Enable UPNP</string>
|
<string name="pref_upnp_enable">Enable UPNP</string>
|
||||||
<string name="pref_transport_use_random_ports">Use random ports</string>
|
<string name="pref_transport_use_random_ports">Use random ports</string>
|
||||||
<string name="pref_sip_port_title">SIP port to use</string>
|
<string name="pref_sip_port_title">SIP port to use</string>
|
||||||
|
|
|
@ -268,6 +268,18 @@
|
||||||
android:title="@string/pref_turn_enable"
|
android:title="@string/pref_turn_enable"
|
||||||
android:key="@string/pref_turn_enable_key"
|
android:key="@string/pref_turn_enable_key"
|
||||||
android:persistent="false"/>
|
android:persistent="false"/>
|
||||||
|
|
||||||
|
<EditTextPreference
|
||||||
|
android:key="@string/pref_turn_username_key"
|
||||||
|
android:title="@string/pref_turn_username_title"
|
||||||
|
android:inputType="text|textNoSuggestions"
|
||||||
|
android:persistent="false"/>
|
||||||
|
|
||||||
|
<EditTextPreference
|
||||||
|
android:key="@string/pref_turn_passwd_key"
|
||||||
|
android:title="@string/pref_turn_passwd_title"
|
||||||
|
android:inputType="textPassword"
|
||||||
|
android:persistent="false"/>
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:title="@string/pref_upnp_enable"
|
android:title="@string/pref_upnp_enable"
|
||||||
|
|
|
@ -909,46 +909,6 @@ public class LinphonePreferences {
|
||||||
public boolean isWifiOnlyEnabled() {
|
public boolean isWifiOnlyEnabled() {
|
||||||
return getConfig().getBool("app", "wifi_only", false);
|
return getConfig().getBool("app", "wifi_only", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LinphoneNatPolicy getOrCreateNatPolicy() {
|
|
||||||
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
|
||||||
if (nat == null) {
|
|
||||||
nat = getLc().createNatPolicy();
|
|
||||||
}
|
|
||||||
return nat;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStunServer() {
|
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
|
||||||
return nat.getStunServer();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStunServer(String stun) {
|
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
|
||||||
nat.setStunServer(stun);
|
|
||||||
if (stun != null && !stun.isEmpty()) {
|
|
||||||
nat.enableStun(true);
|
|
||||||
}
|
|
||||||
getLc().setNatPolicy(nat);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIceEnabled(boolean enabled) {
|
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
|
||||||
nat.enableIce(enabled);
|
|
||||||
getLc().setNatPolicy(nat);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurnEnabled(boolean enabled) {
|
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
|
||||||
nat.enableTurn(enabled);
|
|
||||||
getLc().setNatPolicy(nat);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUpnpEnabled(boolean enabled) {
|
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
|
||||||
nat.enableUpnp(enabled);
|
|
||||||
getLc().setNatPolicy(nat);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void useRandomPort(boolean enabled) {
|
public void useRandomPort(boolean enabled) {
|
||||||
useRandomPort(enabled, true);
|
useRandomPort(enabled, true);
|
||||||
|
@ -986,6 +946,47 @@ public class LinphonePreferences {
|
||||||
transports.tls = LINPHONE_CORE_RANDOM_PORT;
|
transports.tls = LINPHONE_CORE_RANDOM_PORT;
|
||||||
getLc().setSignalingTransportPorts(transports);
|
getLc().setSignalingTransportPorts(transports);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LinphoneNatPolicy getOrCreateNatPolicy() {
|
||||||
|
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
||||||
|
if (nat == null) {
|
||||||
|
nat = getLc().createNatPolicy();
|
||||||
|
}
|
||||||
|
return nat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStunServer() {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
return nat.getStunServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStunServer(String stun) {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
nat.setStunServer(stun);
|
||||||
|
|
||||||
|
if (stun != null && !stun.isEmpty()) {
|
||||||
|
nat.enableStun(true);
|
||||||
|
}
|
||||||
|
getLc().setNatPolicy(nat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIceEnabled(boolean enabled) {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
nat.enableIce(enabled);
|
||||||
|
getLc().setNatPolicy(nat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTurnEnabled(boolean enabled) {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
nat.enableTurn(enabled);
|
||||||
|
getLc().setNatPolicy(nat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpnpEnabled(boolean enabled) {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
nat.enableUpnp(enabled);
|
||||||
|
getLc().setNatPolicy(nat);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isUpnpEnabled() {
|
public boolean isUpnpEnabled() {
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
@ -1001,6 +1002,34 @@ public class LinphonePreferences {
|
||||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
return nat.turnEnabled();
|
return nat.turnEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getTurnUsername() {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
return nat.getStunServerUsername();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTurnUsername(String username) {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
LinphoneAuthInfo authInfo = getLc().findAuthInfo(nat.getStunServerUsername(), null, null);
|
||||||
|
if (authInfo != null) {
|
||||||
|
authInfo.setUsername(username);
|
||||||
|
} else {
|
||||||
|
authInfo = LinphoneCoreFactory.instance().createAuthInfo(username, username, null, null, null, null);
|
||||||
|
getLc().addAuthInfo(authInfo);
|
||||||
|
}
|
||||||
|
nat.setStunServerUsername(username);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTurnPassword(String password) {
|
||||||
|
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||||
|
LinphoneAuthInfo authInfo = getLc().findAuthInfo(nat.getStunServerUsername(), null, null);
|
||||||
|
if (authInfo != null) {
|
||||||
|
authInfo.setPassword(password);
|
||||||
|
} else {
|
||||||
|
authInfo = LinphoneCoreFactory.instance().createAuthInfo(nat.getStunServerUsername(), nat.getStunServerUsername(), password, null, null, null);
|
||||||
|
getLc().addAuthInfo(authInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public MediaEncryption getMediaEncryption() {
|
public MediaEncryption getMediaEncryption() {
|
||||||
return getLc().getMediaEncryption();
|
return getLc().getMediaEncryption();
|
||||||
|
|
|
@ -1028,7 +1028,15 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key));
|
CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key));
|
||||||
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
|
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
|
||||||
ice.setChecked(mPrefs.isIceEnabled());
|
ice.setChecked(mPrefs.isIceEnabled());
|
||||||
|
turn.setEnabled(mPrefs.getStunServer() != null);
|
||||||
turn.setChecked(mPrefs.isTurnEnabled());
|
turn.setChecked(mPrefs.isTurnEnabled());
|
||||||
|
|
||||||
|
EditTextPreference turnUsername = (EditTextPreference) findPreference(getString(R.string.pref_turn_username_key));
|
||||||
|
EditTextPreference turnPassword = (EditTextPreference) findPreference(getString(R.string.pref_turn_passwd_key));
|
||||||
|
turnUsername.setEnabled(mPrefs.isTurnEnabled());
|
||||||
|
turnUsername.setSummary(mPrefs.getTurnUsername());
|
||||||
|
turnUsername.setText(mPrefs.getTurnUsername());
|
||||||
|
turnPassword.setEnabled(mPrefs.isTurnEnabled());
|
||||||
|
|
||||||
CheckBoxPreference randomPort = (CheckBoxPreference) findPreference(getString(R.string.pref_transport_use_random_ports_key));
|
CheckBoxPreference randomPort = (CheckBoxPreference) findPreference(getString(R.string.pref_transport_use_random_ports_key));
|
||||||
randomPort.setChecked(mPrefs.isUsingRandomPort());
|
randomPort.setChecked(mPrefs.isUsingRandomPort());
|
||||||
|
@ -1061,6 +1069,9 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
mPrefs.setStunServer(newValue.toString());
|
mPrefs.setStunServer(newValue.toString());
|
||||||
preference.setSummary(newValue.toString());
|
preference.setSummary(newValue.toString());
|
||||||
|
|
||||||
|
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
|
||||||
|
turn.setEnabled(mPrefs.getStunServer() != null);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1077,6 +1088,27 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
mPrefs.setTurnEnabled((Boolean) newValue);
|
mPrefs.setTurnEnabled((Boolean) newValue);
|
||||||
|
EditTextPreference turnUsername = (EditTextPreference) findPreference(getString(R.string.pref_turn_username_key));
|
||||||
|
EditTextPreference turnPassword = (EditTextPreference) findPreference(getString(R.string.pref_turn_passwd_key));
|
||||||
|
turnUsername.setEnabled(mPrefs.isTurnEnabled());
|
||||||
|
turnPassword.setEnabled(mPrefs.isTurnEnabled());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
findPreference(getString(R.string.pref_turn_username_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
|
mPrefs.setTurnUsername((String) newValue);
|
||||||
|
preference.setSummary(mPrefs.getTurnUsername());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
findPreference(getString(R.string.pref_turn_passwd_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
|
mPrefs.setTurnPassword((String) newValue);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit dd2749d56f51107fd57e9b5db1125c8d3b2f6e77
|
Subproject commit 9c3540b804f90d5f1a149eb62bd5fa1df04fca58
|
Loading…
Reference in a new issue