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_auto_answer_key">pref_auto_answer_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>
|
||||
|
|
|
@ -290,9 +290,11 @@
|
|||
<!-- Network settings -->
|
||||
<string name="pref_network_title">Network</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_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_transport_use_random_ports">Use random ports</string>
|
||||
<string name="pref_sip_port_title">SIP port to use</string>
|
||||
|
|
|
@ -269,6 +269,18 @@
|
|||
android:key="@string/pref_turn_enable_key"
|
||||
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
|
||||
android:title="@string/pref_upnp_enable"
|
||||
android:key="@string/pref_upnp_enable_key"
|
||||
|
|
|
@ -910,46 +910,6 @@ public class LinphonePreferences {
|
|||
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) {
|
||||
useRandomPort(enabled, true);
|
||||
}
|
||||
|
@ -987,6 +947,47 @@ public class LinphonePreferences {
|
|||
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() {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
return nat.upnpEnabled();
|
||||
|
@ -1002,6 +1003,34 @@ public class LinphonePreferences {
|
|||
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() {
|
||||
return getLc().getMediaEncryption();
|
||||
}
|
||||
|
|
|
@ -1028,8 +1028,16 @@ public class SettingsFragment extends PreferencesListFragment {
|
|||
CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key));
|
||||
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
|
||||
ice.setChecked(mPrefs.isIceEnabled());
|
||||
turn.setEnabled(mPrefs.getStunServer() != null);
|
||||
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));
|
||||
randomPort.setChecked(mPrefs.isUsingRandomPort());
|
||||
|
||||
|
@ -1061,6 +1069,9 @@ public class SettingsFragment extends PreferencesListFragment {
|
|||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
mPrefs.setStunServer(newValue.toString());
|
||||
preference.setSummary(newValue.toString());
|
||||
|
||||
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
|
||||
turn.setEnabled(mPrefs.getStunServer() != null);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
@ -1077,6 +1088,27 @@ public class SettingsFragment extends PreferencesListFragment {
|
|||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object 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;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit dd2749d56f51107fd57e9b5db1125c8d3b2f6e77
|
||||
Subproject commit 9c3540b804f90d5f1a149eb62bd5fa1df04fca58
|
Loading…
Reference in a new issue