Connect androidclient project to my own kontalk server


#1

Hello,

I followed the steps in this tutorial to create a working instance of a kontalk XMPP server. Then I installed the android client project from git and run it on 2 devices to test it, the 2 devices can communicate together.
Now I need to make my devices communicate using my custom kontalk server. I run it with the following configurations and set the manual server address to ‘10.1.1.48’ (my local virtual host server IP), but when I try to send message form one device to another the message still in wait status and not sent to the server. Please, tell me how can I setup my android client to use my own kontalk xmpp server.

# Default Kontalk configuration, fine for most configurations

# XMPP host where you're serving your Kontalk instance
# Kontalk extensions support one virtual host only for now
sess-man/plugins-conf/urn\:ietf\:params\:xml\:ns\:xmpp-sasl/host=10.1.1.48
# Virtual hosts served by this instance (must match the above)
--virt-hosts=10.1.1.48
# Administrator JID (must be in the above domain)
--admins=admin@10.1.1.48

# Fingerprint of the GPG server key
sess-man/plugins-conf/fingerprint=E70EE945A035F8C1C6966D0146F1FDD0DF701E6E

# The global network domain (do not change this if you want to participate in the Kontalk global network)
sess-man/plugins-conf/network-domain=10.1.1.48

# Database configuration (the two db-uri parameters must be identical)
--user-db=mysql
--user-db-uri=jdbc:mysql://localhost:3306/kontalk?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
sess-man/plugins-conf/db-uri=jdbc:mysql://localhost:3306/kontalk?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC

# Registration provider configuration
# Android emulator registration provider: it will emulate an SMS with the verification code
sess-man/plugins-conf/kontalk\:jabber\:iq\:register/providers[s]=android=org.kontalk.xmppserver.registration.AndroidEmulatorProvider
# how many seconds to wait before a user can retry registration
sess-man/plugins-conf/kontalk\:jabber\:iq\:register/android-expire[I]=900
# the sender number of the emulated SMS
sess-man/plugins-conf/kontalk\:jabber\:iq\:register/android-sender=12345
# the device ID of the emulator to send the SMS to
sess-man/plugins-conf/kontalk\:jabber\:iq\:register/android-device=emulator-5554

# Dummy provider configuration
# It will always accept 123456 as a valid verification code
# Good for a remote test server
#sess-man/plugins-conf/kontalk\:jabber\:iq\:register/providers[s]=dummy=org.kontalk.xmppserver.registration.DummyProvider
#sess-man/plugins-conf/kontalk\:jabber\:iq\:register/dummy-sender=123456

# Endpoints configuration
# All endpoints must declare a clientCertCA pointing to a valid certificate chain file
# (any CA chain will do, it won't actually be used but Tigase won't work without it)

# Client endpoint configuration
--c2s-ports=5999,5222,5223,8443
c2s/connections/5223/socket=ssl
c2s/connections/8443/socket=ssl
c2s/clientCertCA=trusted.pem

# Websocket endpoint configuration
message-router/components/msg-receivers/ws2s.active[B]=false
ws2s/connections/5290/socket=ssl
ws2s/clientCertCA=trusted.pem

# BOSH endpoint configuration
message-router/components/msg-receivers/bosh.active[B]=false
bosh/connections/5280/socket=ssl
bosh/clientCertCA=trusted.pem

# S2S endpoint configuration (comment to disable XMPP federation)
--s2s-ports=5269

# Enabled plugins, comma-separated
# prefixed with a minus (-) means not loaded, prefixed with nothing or with a plus (+) means loaded.
# add "+kontalk:push:legacy" to enable Kontalk push notifications (external component must also be configured below)
--sm-plugins=-amp,-message-carbons,-jabber:iq:auth,-jabber:iq:register,-jabber:iq:privacy,-jabber:iq:last,-msgoffline,-urn:xmpp:blocking,-urn:xmpp:csi:0,+message,+msgoffline2,+presence:urn:xmpp:pubkey:2,+kontalk:jabber:iq:register,+kontalk:jabber:iq:roster,+urn:xmpp:pubkey:2,+kontalk:urn:xmpp:blocking,+kontalk:urn:xmpp:csi:0,+kontalk:jabber:iq:last

# Comment these to revert to default logging
--debug=server,xmpp.impl
--debug-packages=org.kontalk

# External components. Do not change the default names!
# --comp-xxx parameter pairs follow a numbering order
# whenever you delete/comment or insert a component, remember to fix the numbering!!

# Network component
# enables server list commands. Particularly needed if participating in a global network
--comp-name-1=network
--comp-class-1=org.kontalk.xmppserver.NetworkComponent

# Phone number lookup component
# enables discovery of contacts in the local/global network by their phone numbers
--comp-name-2=probe
--comp-class-2=org.kontalk.xmppserver.probe.ProbeComponent

# External XMPP component protocol
# needed for HttpFileUploadComponent
--comp-name-3=ext
--comp-class-3=tigase.server.ext.ComponentProtocol
# these must match HttpFileUploadComponent configuration
--external=media.prime.kontalk.net:secret:listen:5270

--comp-name-4=multicast
--comp-class-4=org.kontalk.xmppserver.ExtendedAddressing

# GCM push notifications
# remember to fix --sm-plugins too (see above)
#--comp-name-5=push
#--comp-class-5=org.kontalk.xmppserver.KontalkLegacyPushComponent
#push/gcm-projectid=PROJECT-ID
#push/gcm-apikey=API-KEY

# Internal parameters
# the following properties must not be changed unless you really know what you're doing
basic-conf/auth-repo-params/sasl-mechs=EXTERNAL
sess-man/plugins-conf/urn\:ietf\:params\:xml\:ns\:xmpp-sasl/factory=org.kontalk.xmppserver.auth.KontalkSaslServerFactory
sess-man/plugins-conf/urn\:ietf\:params\:xml\:ns\:xmpp-sasl/mechanism-selector=org.kontalk.xmppserver.auth.KontalkMechanismSelector
sess-man/plugins-conf/urn\:ietf\:params\:xml\:ns\:xmpp-sasl/callbackhandler-EXTERNAL=org.kontalk.xmppserver.auth.KontalkCertificateCallbackHandler
sess-man/plugins-conf/presence-state/extended-presence-processors=org.kontalk.xmppserver.presence.PublicKeyPresence
c2s/processors[s]=urn:xmpp:sm:3=org.kontalk.xmppserver.KontalkIOProcessor
message-router/components/msg-receivers/amp.active[B]=false
--vhost-anonymous-enabled=false
--vhost-tls-required=false
--hardened-mode=true
config-type=--gen-config-def

#2

Hello,
the host you will be serving your XMPP service is not your server IP address, it’s the server’s domain, that is, the host part in the JID: username@domain.tld. “domain.tld” is the hostname you have to configure in init.properties.

After that, you need to set on the Kontalk app, in setting “Manual server address”, something like:

domain.tld|host:port

host:port are the real host address and port (5222) of the server in this case.

A good source of knowledge would be the XMPP overview by the XSF, I believe a base knowledge of the protocol is always good when dealing with a server.