Add Nat policy by account
This commit is contained in:
parent
e41c7db954
commit
8a7e6facd9
3 changed files with 96 additions and 38 deletions
|
@ -1,33 +1,33 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<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">
|
||||||
<section name="proxy_default_values">
|
<entry name="avpf" overwrite="true">1</entry>
|
||||||
<entry name="avpf" overwrite="true">1</entry>
|
<entry name="dial_escape_plus" overwrite="true">0</entry>
|
||||||
<entry name="dial_escape_plus" overwrite="true">0</entry>
|
<entry name="publish" overwrite="true">1</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_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_enabled" overwrite="true">1</entry>
|
<entry name="quality_reporting_interval" overwrite="true">180</entry>
|
||||||
<entry name="quality_reporting_interval" overwrite="true">180</entry>
|
<entry name="reg_expires" overwrite="true">600</entry>
|
||||||
<entry name="reg_expires" overwrite="true">31536000</entry>
|
<entry name="reg_identity" overwrite="true">sip:?@sip.linphone.org</entry>
|
||||||
<entry name="reg_identity" overwrite="true">sip:?@sip.linphone.org</entry>
|
<entry name="reg_proxy" overwrite="true"><sip:sip.linphone.org;transport=tls></entry>
|
||||||
<entry name="reg_proxy" overwrite="true"><sip:sip.linphone.org;transport=tls></entry>
|
<entry name="reg_sendregister" overwrite="true">1</entry>
|
||||||
<entry name="reg_sendregister" overwrite="true">1</entry>
|
<entry name="nat_policy_ref" overwrite="true">nat_policy_default_values</entry>
|
||||||
<entry name="refkey" overwrite="true">push_notification</entry>
|
<entry name="realm" overwrite="true">sip.linphone.org</entry>
|
||||||
<entry name="realm" overwrite="true">sip.linphone.org</entry>
|
</section>
|
||||||
</section>
|
<section name="nat_policy_default_values">
|
||||||
|
<entry name="stun_server" overwrite="true">stun.linphone.org</entry>
|
||||||
<section name="sip">
|
<entry name="protocols" overwrite="true">stun,ice</entry>
|
||||||
<entry name="rls_uri" overwrite="true">sips:rls@sip.linphone.org</entry>
|
</section>
|
||||||
</section>
|
<section name="sip">
|
||||||
|
<entry name="rls_uri" overwrite="true">sips:rls@sip.linphone.org</entry>
|
||||||
<section name="assistant">
|
</section>
|
||||||
<entry name="domain" overwrite="true">sip.linphone.org</entry>
|
<section name="assistant">
|
||||||
<entry name="password_max_length" overwrite="true">-1</entry>
|
<entry name="domain" overwrite="true">sip.linphone.org</entry>
|
||||||
<entry name="password_min_length" overwrite="true">1</entry>
|
<entry name="password_max_length" overwrite="true">-1</entry>
|
||||||
<entry name="username_length" overwrite="true">-1</entry>
|
<entry name="password_min_length" overwrite="true">1</entry>
|
||||||
<entry name="username_max_length" overwrite="true">64</entry>
|
<entry name="username_length" overwrite="true">-1</entry>
|
||||||
<entry name="username_min_length" overwrite="true">1</entry>
|
<entry name="username_max_length" overwrite="true">64</entry>
|
||||||
<entry name="username_regex" overwrite="true">^[a-z0-9+_.\-]*$</entry>
|
<entry name="username_min_length" overwrite="true">1</entry>
|
||||||
<entry name="xmlrpc_url" overwrite="true">https://sip3.linphone.org:444/wizard.php</entry>
|
<entry name="username_regex" overwrite="true">^[a-z0-9+_.\-]*$</entry>
|
||||||
</section>
|
</section>
|
||||||
</config>
|
</config>
|
||||||
|
|
|
@ -48,6 +48,17 @@
|
||||||
android:key="@string/pref_transport_key"
|
android:key="@string/pref_transport_key"
|
||||||
android:persistent="false"/>
|
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
|
<EditTextPreference
|
||||||
android:title="@string/pref_proxy"
|
android:title="@string/pref_proxy"
|
||||||
android:inputType="textUri"
|
android:inputType="textUri"
|
||||||
|
|
|
@ -48,6 +48,7 @@ import android.support.v4.content.ContextCompat;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
import android.widget.CheckBox;
|
||||||
import android.widget.EditText;
|
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) {
|
private void initAccountPreferencesFields(PreferenceScreen parent) {
|
||||||
boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n;
|
boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n;
|
||||||
|
|
||||||
|
@ -342,27 +377,39 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
|
||||||
mTransportPreference.setSummary(mPrefs.getAccountTransportString(n));
|
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);
|
mProxyPreference.setOnPreferenceChangeListener(proxyChangedListener);
|
||||||
if (!isNewAccount){
|
if (!isNewAccount){
|
||||||
mProxyPreference.setText(mPrefs.getAccountProxy(n));
|
mProxyPreference.setText(mPrefs.getAccountProxy(n));
|
||||||
mProxyPreference.setSummary("".equals(mProxyPreference.getText()) || (mProxyPreference.getText() == null) ? getString(R.string.pref_help_proxy) : mProxyPreference.getText());
|
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);
|
outboundProxy.setOnPreferenceChangeListener(outboundProxyChangedListener);
|
||||||
if (!isNewAccount){
|
if (!isNewAccount){
|
||||||
outboundProxy.setChecked(mPrefs.isAccountOutboundProxySet(n));
|
outboundProxy.setChecked(mPrefs.isAccountOutboundProxySet(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
EditTextPreference expires = (EditTextPreference) advanced.getPreference(3);
|
EditTextPreference expires = (EditTextPreference) advanced.getPreference(5);
|
||||||
expires.setOnPreferenceChangeListener(expiresChangedListener);
|
expires.setOnPreferenceChangeListener(expiresChangedListener);
|
||||||
if(!isNewAccount){
|
if(!isNewAccount){
|
||||||
expires.setText(mPrefs.getExpires(n));
|
expires.setText(mPrefs.getExpires(n));
|
||||||
expires.setSummary(mPrefs.getExpires(n));
|
expires.setSummary(mPrefs.getExpires(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
EditTextPreference prefix = (EditTextPreference) advanced.getPreference(4);
|
EditTextPreference prefix = (EditTextPreference) advanced.getPreference(6);
|
||||||
prefix.setOnPreferenceChangeListener(prefixChangedListener);
|
prefix.setOnPreferenceChangeListener(prefixChangedListener);
|
||||||
if(!isNewAccount){
|
if(!isNewAccount){
|
||||||
String prefixValue = mPrefs.getPrefix(n);
|
String prefixValue = mPrefs.getPrefix(n);
|
||||||
|
@ -370,26 +417,26 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
|
||||||
prefix.setSummary(prefixValue);
|
prefix.setSummary(prefixValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBoxPreference avpf = (CheckBoxPreference) advanced.getPreference(5);
|
CheckBoxPreference avpf = (CheckBoxPreference) advanced.getPreference(7);
|
||||||
avpf.setOnPreferenceChangeListener(avpfChangedListener);
|
avpf.setOnPreferenceChangeListener(avpfChangedListener);
|
||||||
if (!isNewAccount){
|
if (!isNewAccount){
|
||||||
avpf.setChecked(mPrefs.avpfEnabled(n));
|
avpf.setChecked(mPrefs.avpfEnabled(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
EditTextPreference avpfRRInterval = (EditTextPreference) advanced.getPreference(6);
|
EditTextPreference avpfRRInterval = (EditTextPreference) advanced.getPreference(8);
|
||||||
avpfRRInterval.setOnPreferenceChangeListener(avpfRRIntervalChangedListener);
|
avpfRRInterval.setOnPreferenceChangeListener(avpfRRIntervalChangedListener);
|
||||||
if (!isNewAccount){
|
if (!isNewAccount){
|
||||||
avpfRRInterval.setText(mPrefs.getAvpfRRInterval(n));
|
avpfRRInterval.setText(mPrefs.getAvpfRRInterval(n));
|
||||||
avpfRRInterval.setSummary(mPrefs.getAvpfRRInterval(n));
|
avpfRRInterval.setSummary(mPrefs.getAvpfRRInterval(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBoxPreference escape = (CheckBoxPreference) advanced.getPreference(7);
|
CheckBoxPreference escape = (CheckBoxPreference) advanced.getPreference(9);
|
||||||
escape.setOnPreferenceChangeListener(escapeChangedListener);
|
escape.setOnPreferenceChangeListener(escapeChangedListener);
|
||||||
if(!isNewAccount){
|
if(!isNewAccount){
|
||||||
escape.setChecked(mPrefs.getReplacePlusByZeroZero(n));
|
escape.setChecked(mPrefs.getReplacePlusByZeroZero(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
Preference linkAccount = advanced.getPreference(8);
|
Preference linkAccount = advanced.getPreference(10);
|
||||||
linkAccount.setOnPreferenceClickListener(linkAccountListener);
|
linkAccount.setOnPreferenceClickListener(linkAccountListener);
|
||||||
|
|
||||||
PreferenceCategory manage = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_manage_key));
|
PreferenceCategory manage = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_manage_key));
|
||||||
|
|
Loading…
Reference in a new issue