use of org.awesomeapp.messenger.ui.legacy.SignInHelper in project Zom-Android by zom.
the class ImUrlActivity method signInAccount.
private void signInAccount(long accountId, long providerId, String password) {
// editAccount(accountId);
// TODO sign in? security implications?
SignInHelper signInHelper = new SignInHelper(this, new SimpleAlertHandler(this));
signInHelper.setSignInListener(new SignInHelper.SignInListener() {
public void connectedToService() {
}
public void stateChanged(int state, long accountId) {
if (state == ImConnection.LOGGED_IN) {
mHandlerRouter.post(new Runnable() {
public void run() {
handleIntent();
}
});
}
}
});
signInHelper.signIn(password, providerId, accountId, true);
}
use of org.awesomeapp.messenger.ui.legacy.SignInHelper in project Zom-Android by zom.
the class MigrateAccountTask method doInBackground.
@Override
protected OnboardingAccount doInBackground(String... newDomains) {
// get existing account username
String nickname = Imps.Account.getNickname(mContext.getContentResolver(), mAccountId);
String username = Imps.Account.getUserName(mContext.getContentResolver(), mAccountId);
String password = Imps.Account.getPassword(mContext.getContentResolver(), mAccountId);
OtrAndroidKeyManagerImpl keyMan = OtrAndroidKeyManagerImpl.getInstance(mContext);
KeyPair keyPair = keyMan.generateLocalKeyPair();
String fingerprint = keyMan.getFingerprint(keyPair.getPublic());
// find or use provided new server/domain
String domain = newDomains[0];
// register account on new domain with same password
mNewAccount = registerNewAccount(nickname, username, password, domain, null);
if (mNewAccount == null) {
username = username + '.' + fingerprint.substring(fingerprint.length() - 8, fingerprint.length()).toLowerCase();
mNewAccount = registerNewAccount(nickname, username, password, domain, null);
if (mNewAccount == null)
return null;
}
String newJabberId = mNewAccount.username + '@' + mNewAccount.domain;
keyMan.storeKeyPair(newJabberId, keyPair);
// send migration message to existing contacts and/or sessions
try {
boolean loggedInToOldAccount = mConn.getState() == ImConnection.LOGGED_IN;
// login and set new default account
SignInHelper signInHelper = new SignInHelper(mContext, mHandler);
signInHelper.activateAccount(mNewAccount.providerId, mNewAccount.accountId);
signInHelper.signIn(mNewAccount.password, mNewAccount.providerId, mNewAccount.accountId, true);
mNewConn = mApp.getConnection(mNewAccount.providerId, mNewAccount.accountId);
while (mNewConn.getState() != ImConnection.LOGGED_IN) {
try {
Thread.sleep(500);
} catch (Exception e) {
}
}
String inviteLink = OnboardingManager.generateInviteLink(mContext, newJabberId, fingerprint, nickname, true);
String migrateMessage = mContext.getString(R.string.migrate_message) + ' ' + inviteLink;
IChatSessionManager sessionMgr = mConn.getChatSessionManager();
IContactListManager clManager = mConn.getContactListManager();
List<IContactList> listOfLists = clManager.getContactLists();
if (loggedInToOldAccount) {
for (IContactList contactList : listOfLists) {
String[] contacts = contactList.getContacts();
for (String contact : contacts) {
mContacts.add(contact);
IChatSession session = sessionMgr.getChatSession(contact);
if (session == null) {
session = sessionMgr.createChatSession(contact, true);
}
if (!session.isEncrypted()) {
// try to kick off some encryption here
session.getDefaultOtrChatSession().startChatEncryption();
try {
Thread.sleep(500);
}// just wait a half second here?
catch (Exception e) {
}
}
session.sendMessage(migrateMessage, false);
// archive existing contact
clManager.archiveContact(contact, session.isGroupChatSession() ? Imps.Contacts.TYPE_NORMAL : Imps.Contacts.TYPE_GROUP, true);
}
}
} else {
String[] offlineAddresses = clManager.getOfflineAddresses();
for (String address : offlineAddresses) {
mContacts.add(address);
clManager.archiveContact(address, Imps.Contacts.TYPE_NORMAL, true);
}
}
for (String contact : mContacts) {
addToContactList(mNewConn, contact, keyMan.getRemoteFingerprint(contact), null);
}
if (loggedInToOldAccount) {
// archive existing conversations and contacts
List<IChatSession> listSession = mConn.getChatSessionManager().getActiveChatSessions();
for (IChatSession session : listSession) {
session.leave();
}
mConn.broadcastMigrationIdentity(newJabberId);
}
migrateAvatars(username, newJabberId);
mApp.setDefaultAccount(mNewAccount.providerId, mNewAccount.accountId);
// logout of existing account
setKeepSignedIn(mAccountId, false);
if (loggedInToOldAccount)
mConn.logout();
return mNewAccount;
} catch (Exception e) {
Log.e(ImApp.LOG_TAG, "error with migration", e);
}
// failed
return null;
}
use of org.awesomeapp.messenger.ui.legacy.SignInHelper in project Zom-Android by zom.
the class AccountActivity method onCreate.
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
Intent i = getIntent();
mApp = (ImApp) getApplication();
String action = i.getAction();
if (i.hasExtra("isSignedIn"))
isSignedIn = i.getBooleanExtra("isSignedIn", false);
final ProviderDef provider;
mSignInHelper = new SignInHelper(this, null);
SignInHelper.SignInListener signInListener = new SignInHelper.SignInListener() {
@Override
public void connectedToService() {
}
@Override
public void stateChanged(int state, long accountId) {
if (state == ImConnection.LOGGED_IN) {
// mSignInHelper.goToAccount(accountId);
// finish();
isSignedIn = true;
} else {
isSignedIn = false;
}
}
};
mSignInHelper.setSignInListener(signInListener);
ContentResolver cr = getContentResolver();
Uri uri = i.getData();
// check if there is account information and direct accordingly
if (Intent.ACTION_INSERT_OR_EDIT.equals(action)) {
if ((uri == null) || !Imps.Account.CONTENT_ITEM_TYPE.equals(cr.getType(uri))) {
action = Intent.ACTION_INSERT;
} else {
action = Intent.ACTION_EDIT;
}
}
if (Intent.ACTION_INSERT.equals(action) && uri.getScheme().equals("ima")) {
ImPluginHelper helper = ImPluginHelper.getInstance(this);
String authority = uri.getAuthority();
String[] userpass_host = authority.split("@");
String[] user_pass = userpass_host[0].split(":");
mUserName = user_pass[0].toLowerCase(Locale.getDefault());
String pass = user_pass[1];
mDomain = userpass_host[1].toLowerCase(Locale.getDefault());
mPort = 0;
final boolean regWithTor = i.getBooleanExtra("useTor", false);
Cursor cursor = openAccountByUsernameAndDomain(cr);
boolean exists = cursor.moveToFirst();
long accountId;
if (exists) {
accountId = cursor.getLong(0);
mAccountUri = ContentUris.withAppendedId(Imps.Account.CONTENT_URI, accountId);
pass = cursor.getString(ACCOUNT_PASSWORD_COLUMN);
setAccountKeepSignedIn(true);
mSignInHelper.activateAccount(mProviderId, accountId);
mSignInHelper.signIn(pass, mProviderId, accountId, true);
setResult(RESULT_OK);
cursor.close();
finish();
return;
} else {
// xmpp FIXME
mProviderId = helper.createAdditionalProvider(helper.getProviderNames().get(0));
accountId = ImApp.insertOrUpdateAccount(cr, mProviderId, mAccountId, mUserName, mUserName, pass);
mAccountUri = ContentUris.withAppendedId(Imps.Account.CONTENT_URI, accountId);
mSignInHelper.activateAccount(mProviderId, accountId);
createNewAccount(mUserName, pass, accountId, regWithTor);
cursor.close();
return;
}
} else if (Intent.ACTION_INSERT.equals(action)) {
setupUIPre();
mOriginalUserAccount = "";
// TODO once we implement multiple IM protocols
mProviderId = ContentUris.parseId(uri);
provider = mApp.getProvider(mProviderId);
if (provider != null) {
setTitle(getResources().getString(R.string.add_account, provider.mFullName));
} else {
finish();
}
} else if (Intent.ACTION_EDIT.equals(action)) {
setupUIPre();
if ((uri == null) || !Imps.Account.CONTENT_ITEM_TYPE.equals(cr.getType(uri))) {
LogCleaner.warn(ImApp.LOG_TAG, "<AccountActivity>Bad data");
return;
}
isEdit = true;
Cursor cursor = cr.query(uri, ACCOUNT_PROJECTION, null, null, null);
if (cursor == null) {
finish();
return;
}
if (!cursor.moveToFirst()) {
cursor.close();
finish();
return;
}
setTitle(R.string.sign_in);
mAccountId = cursor.getLong(cursor.getColumnIndexOrThrow(BaseColumns._ID));
mProviderId = cursor.getLong(ACCOUNT_PROVIDER_COLUMN);
provider = mApp.getProvider(mProviderId);
Cursor pCursor = cr.query(Imps.ProviderSettings.CONTENT_URI, new String[] { Imps.ProviderSettings.NAME, Imps.ProviderSettings.VALUE }, Imps.ProviderSettings.PROVIDER + "=?", new String[] { Long.toString(mProviderId) }, null);
Imps.ProviderSettings.QueryMap settings = new Imps.ProviderSettings.QueryMap(pCursor, cr, mProviderId, false, /* don't keep updated */
null);
try {
mOriginalUserAccount = cursor.getString(ACCOUNT_USERNAME_COLUMN) + "@" + settings.getDomain();
mEditUserAccount.setText(mOriginalUserAccount);
mEditPass.setText(cursor.getString(ACCOUNT_PASSWORD_COLUMN));
// mRememberPass.setChecked(!cursor.isNull(ACCOUNT_PASSWORD_COLUMN));
// mUseTor.setChecked(settings.getUseTor());
mPort = settings.getPort();
} finally {
settings.close();
cursor.close();
}
} else {
LogCleaner.warn(ImApp.LOG_TAG, "<AccountActivity> unknown intent action " + action);
finish();
return;
}
setupUIPost();
}
use of org.awesomeapp.messenger.ui.legacy.SignInHelper in project Zom-Android by zom.
the class AccountAdapter method signIn.
public void signIn(long providerId, long accountId) {
if (accountId <= 0) {
return;
}
Cursor cursor = getCursor();
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
long cAccountId = cursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN);
if (cAccountId == accountId)
break;
cursor.moveToNext();
}
// Remember that the user signed in.
setKeepSignedIn(accountId, true);
// long providerId = cursor.getLong(PROVIDER_ID_COLUMN);
String password = cursor.getString(ACTIVE_ACCOUNT_PW_COLUMN);
// TODO(miron)
boolean isActive = true;
new SignInHelper(mActivity, sHandler).signIn(password, providerId, accountId, isActive);
cursor.moveToPosition(-1);
}
use of org.awesomeapp.messenger.ui.legacy.SignInHelper in project Zom-Android by zom.
the class AccountViewFragment method initFragment.
private void initFragment() {
Intent i = getIntent();
mApp = (ImApp) getActivity().getApplication();
String action = i.getAction();
if (i.hasExtra("isSignedIn"))
isSignedIn = i.getBooleanExtra("isSignedIn", false);
final ProviderDef provider;
mSignInHelper = new SignInHelper(getActivity(), new SimpleAlertHandler(getActivity()));
SignInHelper.SignInListener signInListener = new SignInHelper.SignInListener() {
@Override
public void connectedToService() {
}
@Override
public void stateChanged(int state, long accountId) {
if (state == ImConnection.LOGGED_IN) {
// mSignInHelper.goToAccount(accountId);
// finish();
isSignedIn = true;
} else {
isSignedIn = false;
}
}
};
mSignInHelper.setSignInListener(signInListener);
ContentResolver cr = getActivity().getContentResolver();
Uri uri = i.getData();
// check if there is account information and direct accordingly
if (Intent.ACTION_INSERT_OR_EDIT.equals(action)) {
if ((uri == null) || !Imps.Account.CONTENT_ITEM_TYPE.equals(cr.getType(uri))) {
action = Intent.ACTION_INSERT;
} else {
action = Intent.ACTION_EDIT;
}
}
if (Intent.ACTION_INSERT.equals(action) && uri.getScheme().equals("ima")) {
ImPluginHelper helper = ImPluginHelper.getInstance(getActivity());
String authority = uri.getAuthority();
String[] userpass_host = authority.split("@");
String[] user_pass = userpass_host[0].split(":");
mUserName = user_pass[0].toLowerCase(Locale.getDefault());
String pass = user_pass[1];
mDomain = userpass_host[1].toLowerCase(Locale.getDefault());
mPort = 0;
final boolean regWithTor = i.getBooleanExtra("useTor", false);
Cursor cursor = openAccountByUsernameAndDomain(cr);
boolean exists = cursor.moveToFirst();
long accountId;
if (exists) {
accountId = cursor.getLong(0);
mAccountUri = ContentUris.withAppendedId(Imps.Account.CONTENT_URI, accountId);
pass = cursor.getString(ACCOUNT_PASSWORD_COLUMN);
setAccountKeepSignedIn(true);
mSignInHelper.activateAccount(mProviderId, accountId);
mSignInHelper.signIn(pass, mProviderId, accountId, true);
// setResult(RESULT_OK);
cursor.close();
// finish();
return;
} else {
// xmpp FIXME
mProviderId = helper.createAdditionalProvider(helper.getProviderNames().get(0));
accountId = ImApp.insertOrUpdateAccount(cr, mProviderId, -1, mUserName, mUserName, pass);
mAccountUri = ContentUris.withAppendedId(Imps.Account.CONTENT_URI, accountId);
mSignInHelper.activateAccount(mProviderId, accountId);
createNewAccount(mUserName, pass, accountId, regWithTor);
cursor.close();
return;
}
} else if (Intent.ACTION_INSERT.equals(action)) {
mOriginalUserAccount = "";
// TODO once we implement multiple IM protocols
mProviderId = ContentUris.parseId(uri);
provider = mApp.getProvider(mProviderId);
} else if (Intent.ACTION_EDIT.equals(action)) {
if ((uri == null) || !Imps.Account.CONTENT_ITEM_TYPE.equals(cr.getType(uri))) {
LogCleaner.warn(ImApp.LOG_TAG, "<AccountActivity>Bad data");
return;
}
isEdit = true;
Cursor cursor = cr.query(uri, ACCOUNT_PROJECTION, null, null, null);
if (cursor == null) {
return;
}
if (!cursor.moveToFirst()) {
cursor.close();
return;
}
mAccountId = cursor.getLong(cursor.getColumnIndexOrThrow(BaseColumns._ID));
mProviderId = cursor.getLong(ACCOUNT_PROVIDER_COLUMN);
provider = mApp.getProvider(mProviderId);
Cursor pCursor = cr.query(Imps.ProviderSettings.CONTENT_URI, new String[] { Imps.ProviderSettings.NAME, Imps.ProviderSettings.VALUE }, Imps.ProviderSettings.PROVIDER + "=?", new String[] { Long.toString(mProviderId) }, null);
Imps.ProviderSettings.QueryMap settings = new Imps.ProviderSettings.QueryMap(pCursor, cr, mProviderId, false, /* don't keep updated */
null);
try {
mOriginalUserAccount = cursor.getString(ACCOUNT_USERNAME_COLUMN) + "@" + settings.getDomain();
mEditUserAccount.setText(mOriginalUserAccount);
mEditPass.setText(cursor.getString(ACCOUNT_PASSWORD_COLUMN));
// mRememberPass.setChecked(!cursor.isNull(ACCOUNT_PASSWORD_COLUMN));
// mUseTor.setChecked(settings.getUseTor());
mBtnQrDisplay.setVisibility(View.VISIBLE);
} finally {
settings.close();
cursor.close();
}
} else {
LogCleaner.warn(ImApp.LOG_TAG, "<AccountActivity> unknown intent action " + action);
return;
}
setupUIPost();
}
Aggregations