finished registration
This commit is contained in:
parent
dab3c99b56
commit
678dbd37c6
|
@ -5,12 +5,22 @@
|
|||
android:padding="8dp" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/stats_header"
|
||||
style="@style/sectionHeader"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="Statistics" />
|
||||
|
||||
<TextView
|
||||
android:layout_below="@+id/stats_header"
|
||||
android:id="@+id/textView1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Connection age"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/connection"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -28,7 +38,6 @@
|
|||
android:layout_below="@+id/textView1"
|
||||
android:text="Session age"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/session"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -46,7 +55,6 @@
|
|||
android:layout_below="@+id/textView2"
|
||||
android:text="Packets sent"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/pcks_sent"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -56,7 +64,6 @@
|
|||
android:layout_alignParentRight="true"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -64,9 +71,6 @@
|
|||
android:layout_below="@+id/textView3"
|
||||
android:text="Packets received"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/pcks_received"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -76,4 +80,62 @@
|
|||
android:layout_alignParentRight="true"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/features_header"
|
||||
android:layout_below="@+id/textView4"
|
||||
style="@style/sectionHeader"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:text="Server Features" />
|
||||
|
||||
<TextView
|
||||
android:layout_below="@+id/features_header"
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Roster Versioning"
|
||||
android:textSize="18sp"/>
|
||||
<TextView
|
||||
android:id="@+id/roster"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBaseline="@+id/textView5"
|
||||
android:layout_alignBottom="@+id/textView5"
|
||||
android:layout_alignParentRight="true"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView6"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@+id/textView5"
|
||||
android:text="Carbon Messages"
|
||||
android:textSize="18sp"/>
|
||||
<TextView
|
||||
android:id="@+id/carbon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBaseline="@+id/textView6"
|
||||
android:layout_alignBottom="@+id/textView6"
|
||||
android:layout_alignParentRight="true"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView7"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@+id/textView6"
|
||||
android:text="Stream Managment"
|
||||
android:textSize="18sp"/>
|
||||
<TextView
|
||||
android:id="@+id/stream"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBaseline="@+id/textView7"
|
||||
android:layout_alignBottom="@+id/textView7"
|
||||
android:layout_alignParentRight="true"
|
||||
android:textSize="18sp"/>
|
||||
</RelativeLayout>
|
|
@ -58,7 +58,7 @@ public class PgpEngine {
|
|||
|
||||
public long fetchKeyId(String status, String signature)
|
||||
throws OpenPgpException {
|
||||
if (signature==null) {
|
||||
if ((signature==null)||(api==null)) {
|
||||
return 0;
|
||||
}
|
||||
if (status==null) {
|
||||
|
|
|
@ -42,6 +42,10 @@ public class Account extends AbstractEntity{
|
|||
|
||||
public static final int STATUS_SERVER_REQUIRES_TLS = 6;
|
||||
|
||||
public static final int STATUS_REGISTRATION_FAILED = 7;
|
||||
public static final int STATUS_REGISTRATION_CONFLICT = 8;
|
||||
public static final int STATUS_REGISTRATION_SUCCESSFULL = 9;
|
||||
|
||||
protected String username;
|
||||
protected String server;
|
||||
protected String password;
|
||||
|
|
|
@ -208,6 +208,9 @@ public class XmppConnectionService extends Service {
|
|||
scheduleWakeupCall(timeToReconnect, false);
|
||||
}
|
||||
|
||||
} else if (account.getStatus() == Account.STATUS_REGISTRATION_SUCCESSFULL) {
|
||||
databaseBackend.updateAccount(account);
|
||||
reconnectAccount(account, true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -163,7 +163,20 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
statusView.setText("untrusted cerficate");
|
||||
statusView.setTextColor(0xFFe92727);
|
||||
break;
|
||||
case Account.STATUS_REGISTRATION_FAILED:
|
||||
statusView.setText("registration failed");
|
||||
statusView.setTextColor(0xFFe92727);
|
||||
break;
|
||||
case Account.STATUS_REGISTRATION_CONFLICT:
|
||||
statusView.setText("username already in use");
|
||||
statusView.setTextColor(0xFFe92727);
|
||||
break;
|
||||
case Account.STATUS_REGISTRATION_SUCCESSFULL:
|
||||
statusView.setText("registration completed");
|
||||
statusView.setTextColor(0xFF83b600);
|
||||
break;
|
||||
default:
|
||||
statusView.setText("");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -179,7 +192,7 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
int position, long arg3) {
|
||||
if (!isActionMode) {
|
||||
Account account = accountList.get(position);
|
||||
if ((account.getStatus() != Account.STATUS_ONLINE)&&(account.getStatus() != Account.STATUS_CONNECTING)&&(!account.isOptionSet(Account.OPTION_DISABLED))) {
|
||||
if ((account.getStatus() == Account.STATUS_OFFLINE)||(account.getStatus() == Account.STATUS_TLS_ERROR)) {
|
||||
activity.xmppConnectionService.reconnectAccount(accountList.get(position),true);
|
||||
} else if (account.getStatus() == Account.STATUS_ONLINE) {
|
||||
activity.startActivity(new Intent(activity.getApplicationContext(),NewConversationActivity.class));
|
||||
|
@ -281,10 +294,29 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
TextView session = (TextView) view.findViewById(R.id.session);
|
||||
TextView pcks_sent = (TextView) view.findViewById(R.id.pcks_sent);
|
||||
TextView pcks_received = (TextView) view.findViewById(R.id.pcks_received);
|
||||
TextView carbon = (TextView) view.findViewById(R.id.carbon);
|
||||
TextView stream = (TextView) view.findViewById(R.id.stream);
|
||||
TextView roster = (TextView) view.findViewById(R.id.roster);
|
||||
pcks_received.setText(""+xmpp.getReceivedStanzas());
|
||||
pcks_sent.setText(""+xmpp.getSentStanzas());
|
||||
connection.setText(connectionAge+" mins");
|
||||
if (xmpp.hasFeatureStreamManagment()) {
|
||||
session.setText(sessionAge+" mins");
|
||||
stream.setText("Yes");
|
||||
} else {
|
||||
stream.setText("No");
|
||||
session.setText(connectionAge+" mins");
|
||||
}
|
||||
if (xmpp.hasFeaturesCarbon()) {
|
||||
carbon.setText("Yes");
|
||||
} else {
|
||||
carbon.setText("No");
|
||||
}
|
||||
if (xmpp.hasFeatureRosterManagment()) {
|
||||
roster.setText("Yes");
|
||||
} else {
|
||||
roster.setText("No");
|
||||
}
|
||||
builder.setView(view);
|
||||
} else {
|
||||
builder.setMessage("Account is offline");
|
||||
|
@ -356,8 +388,10 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
@Override
|
||||
public void onAccountEdited(Account account) {
|
||||
xmppConnectionService.updateAccount(account);
|
||||
if (actionMode != null) {
|
||||
actionMode.finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
dialog.show(getFragmentManager(), "edit_account");
|
||||
|
||||
|
|
|
@ -98,6 +98,9 @@ public class XmppConnection implements Runnable {
|
|||
|
||||
protected void changeStatus(int nextStatus) {
|
||||
if (account.getStatus() != nextStatus) {
|
||||
if ((nextStatus == Account.STATUS_OFFLINE)&&(account.getStatus() != Account.STATUS_CONNECTING)&&(account.getStatus() != Account.STATUS_ONLINE)) {
|
||||
return;
|
||||
}
|
||||
account.setStatus(nextStatus);
|
||||
if (statusListener != null) {
|
||||
statusListener.onStatusChanged(account);
|
||||
|
@ -186,9 +189,6 @@ public class XmppConnection implements Runnable {
|
|||
&& (!account.isOptionSet(Account.OPTION_USETLS))) {
|
||||
changeStatus(Account.STATUS_SERVER_REQUIRES_TLS);
|
||||
}
|
||||
if (account.isOptionSet(Account.OPTION_REGISTER)) {
|
||||
Log.d(LOGTAG,account.getJid()+": trying to register");
|
||||
}
|
||||
} else if (nextTag.isStart("proceed")) {
|
||||
switchOverToTls(nextTag);
|
||||
} else if (nextTag.isStart("success")) {
|
||||
|
@ -440,6 +440,43 @@ public class XmppConnection implements Runnable {
|
|||
if (this.streamFeatures.hasChild("starttls")
|
||||
&& account.isOptionSet(Account.OPTION_USETLS)) {
|
||||
sendStartTLS();
|
||||
} else if (this.streamFeatures.hasChild("register")&&(account.isOptionSet(Account.OPTION_REGISTER))) {
|
||||
IqPacket register = new IqPacket(IqPacket.TYPE_GET);
|
||||
register.query("jabber:iq:register");
|
||||
register.setTo(account.getServer());
|
||||
sendIqPacket(register, new OnIqPacketReceived() {
|
||||
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
Element instructions = packet.query().findChild("instructions");
|
||||
if (packet.query().hasChild("username")&&(packet.query().hasChild("password"))) {
|
||||
IqPacket register = new IqPacket(IqPacket.TYPE_SET);
|
||||
Element username = new Element("username").setContent(account.getUsername());
|
||||
Element password = new Element("password").setContent(account.getPassword());
|
||||
register.query("jabber:iq:register").addChild(username).addChild(password);
|
||||
sendIqPacket(register, new OnIqPacketReceived() {
|
||||
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
if (packet.getType()==IqPacket.TYPE_RESULT) {
|
||||
account.setOption(Account.OPTION_REGISTER, false);
|
||||
changeStatus(Account.STATUS_REGISTRATION_SUCCESSFULL);
|
||||
Log.d(LOGTAG,"successfull");
|
||||
} else if (packet.hasChild("error")&&(packet.findChild("error").hasChild("conflict"))){
|
||||
changeStatus(Account.STATUS_REGISTRATION_CONFLICT);
|
||||
} else {
|
||||
changeStatus(Account.STATUS_REGISTRATION_FAILED);
|
||||
Log.d(LOGTAG,packet.toString());
|
||||
}
|
||||
disconnect(true);
|
||||
}
|
||||
});
|
||||
Log.d(LOGTAG,"registering: "+register.toString());
|
||||
} else {
|
||||
Log.d(LOGTAG,account.getJid()+": could not register. instructions are"+instructions.getContent());
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (this.streamFeatures.hasChild("mechanisms")
|
||||
&& shouldAuthenticate) {
|
||||
sendSaslAuth();
|
||||
|
@ -651,6 +688,7 @@ public class XmppConnection implements Runnable {
|
|||
}
|
||||
|
||||
public void disconnect(boolean force) {
|
||||
changeStatus(Account.STATUS_OFFLINE);
|
||||
Log.d(LOGTAG,"disconnecting");
|
||||
try {
|
||||
if (force) {
|
||||
|
@ -678,6 +716,18 @@ public class XmppConnection implements Runnable {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean hasFeatureStreamManagment() {
|
||||
if (this.streamFeatures==null) {
|
||||
return false;
|
||||
} else {
|
||||
return this.streamFeatures.hasChild("has");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hasFeaturesCarbon() {
|
||||
return discoFeatures.contains("urn:xmpp:carbons:2");
|
||||
}
|
||||
|
||||
public void r() {
|
||||
this.tagWriter.writeStanzaAsync(new RequestPacket());
|
||||
}
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
package eu.siacs.conversations.xmpp.stanzas;
|
||||
|
||||
import android.graphics.YuvImage;
|
||||
import eu.siacs.conversations.xml.Element;
|
||||
|
||||
|
||||
public class IqPacket extends AbstractStanza {
|
||||
|
||||
public static final int TYPE_ERROR = -1;
|
||||
public static final int TYPE_SET = 0;
|
||||
public static final int TYPE_RESULT = 1;
|
||||
public static final int TYPE_GET = 2;
|
||||
|
@ -32,4 +36,34 @@ public class IqPacket extends AbstractStanza {
|
|||
super("iq");
|
||||
}
|
||||
|
||||
public Element query() {
|
||||
Element query = findChild("query");
|
||||
if (query==null) {
|
||||
query = new Element("query");
|
||||
addChild(query);
|
||||
}
|
||||
return query;
|
||||
}
|
||||
|
||||
public Element query(String xmlns) {
|
||||
Element query = query();
|
||||
query.setAttribute("xmlns", xmlns);
|
||||
return query();
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
String type = getAttribute("type");
|
||||
if ("error".equals(type)) {
|
||||
return TYPE_ERROR;
|
||||
} else if ("result".equals(type)) {
|
||||
return TYPE_RESULT;
|
||||
} else if ("set".equals(type)) {
|
||||
return TYPE_SET;
|
||||
} else if ("get".equals(type)) {
|
||||
return TYPE_GET;
|
||||
} else {
|
||||
return 1000;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue