finished registration
This commit is contained in:
parent
dab3c99b56
commit
678dbd37c6
|
@ -5,12 +5,22 @@
|
||||||
android:padding="8dp" >
|
android:padding="8dp" >
|
||||||
|
|
||||||
<TextView
|
<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:id="@+id/textView1"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Connection age"
|
android:text="Connection age"
|
||||||
android:textSize="18sp"/>
|
android:textSize="18sp"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/connection"
|
android:id="@+id/connection"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -28,7 +38,6 @@
|
||||||
android:layout_below="@+id/textView1"
|
android:layout_below="@+id/textView1"
|
||||||
android:text="Session age"
|
android:text="Session age"
|
||||||
android:textSize="18sp"/>
|
android:textSize="18sp"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/session"
|
android:id="@+id/session"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -46,7 +55,6 @@
|
||||||
android:layout_below="@+id/textView2"
|
android:layout_below="@+id/textView2"
|
||||||
android:text="Packets sent"
|
android:text="Packets sent"
|
||||||
android:textSize="18sp"/>
|
android:textSize="18sp"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/pcks_sent"
|
android:id="@+id/pcks_sent"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -56,7 +64,6 @@
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:textSize="18sp"/>
|
android:textSize="18sp"/>
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textView4"
|
android:id="@+id/textView4"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -64,9 +71,6 @@
|
||||||
android:layout_below="@+id/textView3"
|
android:layout_below="@+id/textView3"
|
||||||
android:text="Packets received"
|
android:text="Packets received"
|
||||||
android:textSize="18sp"/>
|
android:textSize="18sp"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/pcks_received"
|
android:id="@+id/pcks_received"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -76,4 +80,62 @@
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:textSize="18sp"/>
|
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>
|
</RelativeLayout>
|
|
@ -58,7 +58,7 @@ public class PgpEngine {
|
||||||
|
|
||||||
public long fetchKeyId(String status, String signature)
|
public long fetchKeyId(String status, String signature)
|
||||||
throws OpenPgpException {
|
throws OpenPgpException {
|
||||||
if (signature==null) {
|
if ((signature==null)||(api==null)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (status==null) {
|
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_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 username;
|
||||||
protected String server;
|
protected String server;
|
||||||
protected String password;
|
protected String password;
|
||||||
|
|
|
@ -208,6 +208,9 @@ public class XmppConnectionService extends Service {
|
||||||
scheduleWakeupCall(timeToReconnect, false);
|
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.setText("untrusted cerficate");
|
||||||
statusView.setTextColor(0xFFe92727);
|
statusView.setTextColor(0xFFe92727);
|
||||||
break;
|
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:
|
default:
|
||||||
|
statusView.setText("");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +192,7 @@ public class ManageAccountActivity extends XmppActivity {
|
||||||
int position, long arg3) {
|
int position, long arg3) {
|
||||||
if (!isActionMode) {
|
if (!isActionMode) {
|
||||||
Account account = accountList.get(position);
|
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);
|
activity.xmppConnectionService.reconnectAccount(accountList.get(position),true);
|
||||||
} else if (account.getStatus() == Account.STATUS_ONLINE) {
|
} else if (account.getStatus() == Account.STATUS_ONLINE) {
|
||||||
activity.startActivity(new Intent(activity.getApplicationContext(),NewConversationActivity.class));
|
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 session = (TextView) view.findViewById(R.id.session);
|
||||||
TextView pcks_sent = (TextView) view.findViewById(R.id.pcks_sent);
|
TextView pcks_sent = (TextView) view.findViewById(R.id.pcks_sent);
|
||||||
TextView pcks_received = (TextView) view.findViewById(R.id.pcks_received);
|
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_received.setText(""+xmpp.getReceivedStanzas());
|
||||||
pcks_sent.setText(""+xmpp.getSentStanzas());
|
pcks_sent.setText(""+xmpp.getSentStanzas());
|
||||||
connection.setText(connectionAge+" mins");
|
connection.setText(connectionAge+" mins");
|
||||||
session.setText(sessionAge+" 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);
|
builder.setView(view);
|
||||||
} else {
|
} else {
|
||||||
builder.setMessage("Account is offline");
|
builder.setMessage("Account is offline");
|
||||||
|
@ -356,7 +388,9 @@ public class ManageAccountActivity extends XmppActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onAccountEdited(Account account) {
|
public void onAccountEdited(Account account) {
|
||||||
xmppConnectionService.updateAccount(account);
|
xmppConnectionService.updateAccount(account);
|
||||||
actionMode.finish();
|
if (actionMode != null) {
|
||||||
|
actionMode.finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
dialog.show(getFragmentManager(), "edit_account");
|
dialog.show(getFragmentManager(), "edit_account");
|
||||||
|
|
|
@ -98,6 +98,9 @@ public class XmppConnection implements Runnable {
|
||||||
|
|
||||||
protected void changeStatus(int nextStatus) {
|
protected void changeStatus(int nextStatus) {
|
||||||
if (account.getStatus() != nextStatus) {
|
if (account.getStatus() != nextStatus) {
|
||||||
|
if ((nextStatus == Account.STATUS_OFFLINE)&&(account.getStatus() != Account.STATUS_CONNECTING)&&(account.getStatus() != Account.STATUS_ONLINE)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
account.setStatus(nextStatus);
|
account.setStatus(nextStatus);
|
||||||
if (statusListener != null) {
|
if (statusListener != null) {
|
||||||
statusListener.onStatusChanged(account);
|
statusListener.onStatusChanged(account);
|
||||||
|
@ -186,9 +189,6 @@ public class XmppConnection implements Runnable {
|
||||||
&& (!account.isOptionSet(Account.OPTION_USETLS))) {
|
&& (!account.isOptionSet(Account.OPTION_USETLS))) {
|
||||||
changeStatus(Account.STATUS_SERVER_REQUIRES_TLS);
|
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")) {
|
} else if (nextTag.isStart("proceed")) {
|
||||||
switchOverToTls(nextTag);
|
switchOverToTls(nextTag);
|
||||||
} else if (nextTag.isStart("success")) {
|
} else if (nextTag.isStart("success")) {
|
||||||
|
@ -440,6 +440,43 @@ public class XmppConnection implements Runnable {
|
||||||
if (this.streamFeatures.hasChild("starttls")
|
if (this.streamFeatures.hasChild("starttls")
|
||||||
&& account.isOptionSet(Account.OPTION_USETLS)) {
|
&& account.isOptionSet(Account.OPTION_USETLS)) {
|
||||||
sendStartTLS();
|
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")
|
} else if (this.streamFeatures.hasChild("mechanisms")
|
||||||
&& shouldAuthenticate) {
|
&& shouldAuthenticate) {
|
||||||
sendSaslAuth();
|
sendSaslAuth();
|
||||||
|
@ -651,6 +688,7 @@ public class XmppConnection implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnect(boolean force) {
|
public void disconnect(boolean force) {
|
||||||
|
changeStatus(Account.STATUS_OFFLINE);
|
||||||
Log.d(LOGTAG,"disconnecting");
|
Log.d(LOGTAG,"disconnecting");
|
||||||
try {
|
try {
|
||||||
if (force) {
|
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() {
|
public void r() {
|
||||||
this.tagWriter.writeStanzaAsync(new RequestPacket());
|
this.tagWriter.writeStanzaAsync(new RequestPacket());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
package eu.siacs.conversations.xmpp.stanzas;
|
package eu.siacs.conversations.xmpp.stanzas;
|
||||||
|
|
||||||
|
import android.graphics.YuvImage;
|
||||||
|
import eu.siacs.conversations.xml.Element;
|
||||||
|
|
||||||
|
|
||||||
public class IqPacket extends AbstractStanza {
|
public class IqPacket extends AbstractStanza {
|
||||||
|
|
||||||
|
public static final int TYPE_ERROR = -1;
|
||||||
public static final int TYPE_SET = 0;
|
public static final int TYPE_SET = 0;
|
||||||
public static final int TYPE_RESULT = 1;
|
public static final int TYPE_RESULT = 1;
|
||||||
public static final int TYPE_GET = 2;
|
public static final int TYPE_GET = 2;
|
||||||
|
@ -32,4 +36,34 @@ public class IqPacket extends AbstractStanza {
|
||||||
super("iq");
|
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