Add Nat policy by account

This commit is contained in:
Erwan Croze 2017-05-12 15:35:44 +02:00
parent e41c7db954
commit 8a7e6facd9
3 changed files with 96 additions and 38 deletions

View file

@ -1,33 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://www.linphone.org/xsds/lpconfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.linphone.org/xsds/lpconfig.xsd lpconfig.xsd">
<section name="proxy_default_values">
<entry name="avpf" overwrite="true">1</entry>
<entry name="dial_escape_plus" overwrite="true">0</entry>
<entry name="publish" overwrite="true">0</entry>
<entry name="quality_reporting_collector" overwrite="true">sip:voip-metrics@sip.linphone.org;transport=tls</entry>
<entry name="quality_reporting_enabled" overwrite="true">1</entry>
<entry name="quality_reporting_interval" overwrite="true">180</entry>
<entry name="reg_expires" overwrite="true">31536000</entry>
<entry name="reg_identity" overwrite="true">sip:?@sip.linphone.org</entry>
<entry name="reg_proxy" overwrite="true">&lt;sip:sip.linphone.org;transport=tls&gt;</entry>
<entry name="reg_sendregister" overwrite="true">1</entry>
<entry name="refkey" overwrite="true">push_notification</entry>
<entry name="realm" overwrite="true">sip.linphone.org</entry>
</section>
<section name="sip">
<entry name="rls_uri" overwrite="true">sips:rls@sip.linphone.org</entry>
</section>
<section name="assistant">
<entry name="domain" overwrite="true">sip.linphone.org</entry>
<entry name="password_max_length" overwrite="true">-1</entry>
<entry name="password_min_length" overwrite="true">1</entry>
<entry name="username_length" overwrite="true">-1</entry>
<entry name="username_max_length" overwrite="true">64</entry>
<entry name="username_min_length" overwrite="true">1</entry>
<entry name="username_regex" overwrite="true">^[a-z0-9+_.\-]*$</entry>
<entry name="xmlrpc_url" overwrite="true">https://sip3.linphone.org:444/wizard.php</entry>
</section>
<section name="proxy_default_values">
<entry name="avpf" overwrite="true">1</entry>
<entry name="dial_escape_plus" overwrite="true">0</entry>
<entry name="publish" overwrite="true">1</entry>
<entry name="quality_reporting_collector" overwrite="true">sip:voip-metrics@sip.linphone.org;transport=tls</entry>
<entry name="quality_reporting_enabled" overwrite="true">1</entry>
<entry name="quality_reporting_interval" overwrite="true">180</entry>
<entry name="reg_expires" overwrite="true">600</entry>
<entry name="reg_identity" overwrite="true">sip:?@sip.linphone.org</entry>
<entry name="reg_proxy" overwrite="true">&lt;sip:sip.linphone.org;transport=tls&gt;</entry>
<entry name="reg_sendregister" overwrite="true">1</entry>
<entry name="nat_policy_ref" overwrite="true">nat_policy_default_values</entry>
<entry name="realm" overwrite="true">sip.linphone.org</entry>
</section>
<section name="nat_policy_default_values">
<entry name="stun_server" overwrite="true">stun.linphone.org</entry>
<entry name="protocols" overwrite="true">stun,ice</entry>
</section>
<section name="sip">
<entry name="rls_uri" overwrite="true">sips:rls@sip.linphone.org</entry>
</section>
<section name="assistant">
<entry name="domain" overwrite="true">sip.linphone.org</entry>
<entry name="password_max_length" overwrite="true">-1</entry>
<entry name="password_min_length" overwrite="true">1</entry>
<entry name="username_length" overwrite="true">-1</entry>
<entry name="username_max_length" overwrite="true">64</entry>
<entry name="username_min_length" overwrite="true">1</entry>
<entry name="username_regex" overwrite="true">^[a-z0-9+_.\-]*$</entry>
</section>
</config>

View file

@ -48,6 +48,17 @@
android:key="@string/pref_transport_key"
android:persistent="false"/>
<CheckBoxPreference
android:title="@string/pref_ice_enable"
android:key="@string/pref_ice_enable_key"
android:persistent="false"/>
<EditTextPreference
android:title="@string/pref_stun_server"
android:key="@string/pref_stun_server_key"
android:inputType="textUri"
android:persistent="false"/>
<EditTextPreference
android:title="@string/pref_proxy"
android:inputType="textUri"

View file

@ -48,6 +48,7 @@ import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.EditText;
/**
@ -292,6 +293,40 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
}
};
OnPreferenceChangeListener iceChangedListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean value = (Boolean) newValue;
if (isNewAccount) {
} else {
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null
&& LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null)
LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().enableIce(value);
else
return false;
}
return true;
}
};
OnPreferenceChangeListener stunTurnChangedListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String value = newValue.toString();
if (isNewAccount) {
} else {
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null
&& LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) {
LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().setStunServer(value);
preference.setSummary(value);
}
else
return false;
}
return true;
}
};
private void initAccountPreferencesFields(PreferenceScreen parent) {
boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n;
@ -342,27 +377,39 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
mTransportPreference.setSummary(mPrefs.getAccountTransportString(n));
}
mProxyPreference = (EditTextPreference) advanced.getPreference(1);
CheckBoxPreference ice = (CheckBoxPreference) advanced.getPreference(1);
ice.setOnPreferenceChangeListener(iceChangedListener);
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null
&& LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null)
ice.setChecked(LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().iceEnabled());
EditTextPreference stunTurn = (EditTextPreference) advanced.getPreference(2);
stunTurn.setOnPreferenceChangeListener(stunTurnChangedListener);
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null
&& LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null)
stunTurn.setText(LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().getStunServer());
mProxyPreference = (EditTextPreference) advanced.getPreference(3);
mProxyPreference.setOnPreferenceChangeListener(proxyChangedListener);
if (!isNewAccount){
mProxyPreference.setText(mPrefs.getAccountProxy(n));
mProxyPreference.setSummary("".equals(mProxyPreference.getText()) || (mProxyPreference.getText() == null) ? getString(R.string.pref_help_proxy) : mProxyPreference.getText());
}
CheckBoxPreference outboundProxy = (CheckBoxPreference) advanced.getPreference(2);
CheckBoxPreference outboundProxy = (CheckBoxPreference) advanced.getPreference(4);
outboundProxy.setOnPreferenceChangeListener(outboundProxyChangedListener);
if (!isNewAccount){
outboundProxy.setChecked(mPrefs.isAccountOutboundProxySet(n));
}
EditTextPreference expires = (EditTextPreference) advanced.getPreference(3);
EditTextPreference expires = (EditTextPreference) advanced.getPreference(5);
expires.setOnPreferenceChangeListener(expiresChangedListener);
if(!isNewAccount){
expires.setText(mPrefs.getExpires(n));
expires.setSummary(mPrefs.getExpires(n));
}
EditTextPreference prefix = (EditTextPreference) advanced.getPreference(4);
EditTextPreference prefix = (EditTextPreference) advanced.getPreference(6);
prefix.setOnPreferenceChangeListener(prefixChangedListener);
if(!isNewAccount){
String prefixValue = mPrefs.getPrefix(n);
@ -370,26 +417,26 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
prefix.setSummary(prefixValue);
}
CheckBoxPreference avpf = (CheckBoxPreference) advanced.getPreference(5);
CheckBoxPreference avpf = (CheckBoxPreference) advanced.getPreference(7);
avpf.setOnPreferenceChangeListener(avpfChangedListener);
if (!isNewAccount){
avpf.setChecked(mPrefs.avpfEnabled(n));
}
EditTextPreference avpfRRInterval = (EditTextPreference) advanced.getPreference(6);
EditTextPreference avpfRRInterval = (EditTextPreference) advanced.getPreference(8);
avpfRRInterval.setOnPreferenceChangeListener(avpfRRIntervalChangedListener);
if (!isNewAccount){
avpfRRInterval.setText(mPrefs.getAvpfRRInterval(n));
avpfRRInterval.setSummary(mPrefs.getAvpfRRInterval(n));
}
CheckBoxPreference escape = (CheckBoxPreference) advanced.getPreference(7);
CheckBoxPreference escape = (CheckBoxPreference) advanced.getPreference(9);
escape.setOnPreferenceChangeListener(escapeChangedListener);
if(!isNewAccount){
escape.setChecked(mPrefs.getReplacePlusByZeroZero(n));
}
Preference linkAccount = advanced.getPreference(8);
Preference linkAccount = advanced.getPreference(10);
linkAccount.setOnPreferenceClickListener(linkAccountListener);
PreferenceCategory manage = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_manage_key));