Fix auth infos edition + updated belle-sip/linphone (needed for fix)

This commit is contained in:
Sylvain Berfini 2013-11-04 16:32:30 +01:00
parent fdbe0e935c
commit a43380181e
3 changed files with 50 additions and 18 deletions

View file

@ -106,23 +106,45 @@ public class LinphonePreferences {
} }
private LinphoneAuthInfo getAuthInfo(int n) { private LinphoneAuthInfo getAuthInfo(int n) {
LinphoneAuthInfo[] authsInfos = getLc().getAuthInfosList(); LinphoneProxyConfig prxCfg = getProxyConfig(n);
// In case you have multiple proxy configs with same auth info try {
if (n > 0 && n >= authsInfos.length) { LinphoneAddress addr = LinphoneCoreFactory.instance().createLinphoneAddress(prxCfg.getIdentity());
LinphoneProxyConfig prxCfg = getProxyConfig(n); LinphoneAuthInfo authInfo = getLc().findAuthInfo(addr.getUserName(), null, addr.getDomain());
try { return authInfo;
LinphoneAddress addr = LinphoneCoreFactory.instance().createLinphoneAddress(prxCfg.getIdentity()); } catch (LinphoneCoreException e) {
return getLc().findAuthInfo(addr.getUserName(), null); e.printStackTrace();
} catch (LinphoneCoreException e) { }
return null;
}
else if (n < 0 || n >= authsInfos.length) {
return null;
} }
return null; return null;
} }
/**
* Removes a authInfo from the core and returns a copy of it.
* Useful to edit a authInfo (you should call saveAuthInfo after the modifications to save them).
*/
private LinphoneAuthInfo getClonedAuthInfo(int n) {
LinphoneProxyConfig prxCfg = getProxyConfig(n);
try {
LinphoneAddress addr = LinphoneCoreFactory.instance().createLinphoneAddress(prxCfg.getIdentity());
LinphoneAuthInfo authInfo = getLc().findAuthInfo(addr.getUserName(), null, addr.getDomain());
LinphoneAuthInfo cloneAuthInfo = authInfo.clone();
getLc().removeAuthInfo(authInfo);
return cloneAuthInfo;
} catch (LinphoneCoreException e) {
e.printStackTrace();
}
return null;
}
/**
* Saves a authInfo into the core.
* Useful to save the changes made to a cloned authInfo.
*/
private void saveAuthInfo(LinphoneAuthInfo authInfo) {
getLc().addAuthInfo(authInfo);
}
private String tempUsername; private String tempUsername;
private String tempUserId; private String tempUserId;
private String tempPassword; private String tempPassword;
@ -151,7 +173,7 @@ public class LinphonePreferences {
} catch (NumberFormatException nfe) { } } catch (NumberFormatException nfe) { }
} }
LinphoneAuthInfo authInfo = LinphoneCoreFactory.instance().createAuthInfo(tempUsername, tempUserId, tempPassword, null, null); LinphoneAuthInfo authInfo = LinphoneCoreFactory.instance().createAuthInfo(tempUsername, tempUserId, tempPassword, null, null, tempDomain);
getLc().addProxyConfig(prxCfg); getLc().addProxyConfig(prxCfg);
getLc().addAuthInfo(authInfo); getLc().addAuthInfo(authInfo);
@ -175,12 +197,14 @@ public class LinphonePreferences {
public void setAccountUsername(int n, String username) { public void setAccountUsername(int n, String username) {
String identity = "sip:" + username + "@" + getAccountDomain(n); String identity = "sip:" + username + "@" + getAccountDomain(n);
LinphoneAuthInfo info = getAuthInfo(n); // Get the auth info before editing the proxy config to ensure to get the correct auth info LinphoneAuthInfo info = getClonedAuthInfo(n); // Get the auth info before editing the proxy config to ensure to get the correct auth info
try { try {
LinphoneProxyConfig prxCfg = getProxyConfig(n); LinphoneProxyConfig prxCfg = getProxyConfig(n);
prxCfg.setIdentity(identity); prxCfg.setIdentity(identity);
prxCfg.done(); prxCfg.done();
info.setUsername(username); info.setUsername(username);
saveAuthInfo(info);
} catch (LinphoneCoreException e) { } catch (LinphoneCoreException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -196,7 +220,9 @@ public class LinphonePreferences {
} }
public void setAccountUserId(int n, String userId) { public void setAccountUserId(int n, String userId) {
getAuthInfo(n).setUserId(userId); LinphoneAuthInfo info = getClonedAuthInfo(n);
info.setUserId(userId);
saveAuthInfo(info);
} }
public String getAccountUserId(int n) { public String getAccountUserId(int n) {
@ -209,7 +235,9 @@ public class LinphonePreferences {
} }
public void setAccountPassword(int n, String password) { public void setAccountPassword(int n, String password) {
getAuthInfo(n).setPassword(password); LinphoneAuthInfo info = getClonedAuthInfo(n);
info.setPassword(password);
saveAuthInfo(info);
} }
public String getAccountPassword(int n) { public String getAccountPassword(int n) {
@ -226,6 +254,10 @@ public class LinphonePreferences {
String proxy = "sip:" + domain; String proxy = "sip:" + domain;
try { try {
LinphoneAuthInfo authInfo = getClonedAuthInfo(n);
authInfo.setDomain(domain);
saveAuthInfo(authInfo);
LinphoneProxyConfig prxCfg = getProxyConfig(n); LinphoneProxyConfig prxCfg = getProxyConfig(n);
prxCfg.setIdentity(identity); prxCfg.setIdentity(identity);
prxCfg.setProxy(proxy); prxCfg.setProxy(proxy);

@ -1 +1 @@
Subproject commit 38b76142a0186d393bea57a7f3e7886652900a91 Subproject commit 2eb17045f1aaf99efe5b5447b2c76a8b7dab8434

@ -1 +1 @@
Subproject commit 74e889fcc4ae3b61a3d632b108d8493590ccec9d Subproject commit 50f9d358046b1950e9d0aa3bf1f4527faa79697e