SMACK (java) en nsapi.xmpp: not-authorized

30 views
Skip to first unread message

Koch

unread,
Jan 2, 2012, 10:34:27 AM1/2/12
to openov
Ik probeer op een node te subscriben met de Smack library. In het
debug venster kan ik het verkeer onderling monitoren en daar zie ik
het volgende.

client -> server
<iq id="ahbBk-6" to="nsapi.xmpp.openov.nl" type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscribe node="stations/ut/avt" jid="nsapi.xmpp.openov.nl"/>
</pubsub>
</iq>

waarop ik de volgende reactie krijg:

<iq id="6GLa0-7" to="treinp...@jabber.org/05481a435b9c1d50"
from="nsapi.xmpp.openov.nl" type="error">
<error code="-1" type="CANCEL">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>

------
Ik kan wel alle items verkrijgen met het volgende request. Maar op
elke node waarop ik wil subscriben krijg ik "Non-authorized". Heb
zowel geprobeerd te verbinden via jabber.org en jabber.se maar geen
verschil.

<iq id="6GLa0-6" to="nsapi.xmpp.openov.nl" type="get">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="stations/ut/avt"/>
</pubsub>
</iq>

Stefan de Konink

unread,
Jan 2, 2012, 10:42:43 AM1/2/12
to openov
On Mon, 2 Jan 2012, Koch wrote:

> Ik probeer op een node te subscriben met de Smack library. In het
> debug venster kan ik het verkeer onderling monitoren en daar zie ik
> het volgende.
>
> client -> server
> <iq id="ahbBk-6" to="nsapi.xmpp.openov.nl" type="set">
> <pubsub xmlns="http://jabber.org/protocol/pubsub">
> <subscribe node="stations/ut/avt" jid="nsapi.xmpp.openov.nl"/>
> </pubsub>
> </iq>
>
> waarop ik de volgende reactie krijg:
>
> <iq id="6GLa0-7" to="treinp...@jabber.org/05481a435b9c1d50"
> from="nsapi.xmpp.openov.nl" type="error">
> <error code="-1" type="CANCEL">
> <not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
> </error>
> </iq>

Terecht ;) Dat is de jid van de server, en niet van jezelf.

<http://xmpp.org/extensions/xep-0060.html#subscriber-subscribe-request>


Stefan

Koch

unread,
Jan 2, 2012, 11:22:43 AM1/2/12
to openov
Jep dat verhelpt de unauthorized.

<iq id="tAx87-6" to="nsapi.xmpp.openov.nl" type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscribe node="stations/ut/avt" jid="treinp...@jabber.org"/>
</pubsub>
</iq>

Nu krijg ik alleen nog geen items binnen, waarschijnlijk iets te maken
met dat in het reply van de server de jid null is?

<iq id="tAx87-6" to="treinp...@jabber.org/44d7b3ccfc748a4f"
from="nsapi.xmpp.openov.nl" type="result">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscribe xmlns="http://jabber.org/protocol/pubsub"/>
<subscription jid="null" subscription="subscribed"/>
</pubsub>
</iq>



On Jan 2, 4:42 pm, Stefan de Konink <ste...@konink.de> wrote:
> On Mon, 2 Jan 2012, Koch wrote:
> > Ik probeer op een node te subscriben met de Smack library. In het
> > debug venster kan ik het verkeer onderling monitoren en daar zie ik
> > het volgende.
>
> > client -> server
> > <iq id="ahbBk-6" to="nsapi.xmpp.openov.nl" type="set">
> >  <pubsub xmlns="http://jabber.org/protocol/pubsub">
> >    <subscribe node="stations/ut/avt" jid="nsapi.xmpp.openov.nl"/>
> >  </pubsub>
> > </iq>
>
> > waarop ik de volgende reactie krijg:
>
> > <iq id="6GLa0-7" to="treinplan...@jabber.org/05481a435b9c1d50"

Stefan de Konink

unread,
Jan 2, 2012, 11:32:23 AM1/2/12
to openov
On Mon, 2 Jan 2012, Koch wrote:

> Jep dat verhelpt de unauthorized.
>
> <iq id="tAx87-6" to="nsapi.xmpp.openov.nl" type="set">
> <pubsub xmlns="http://jabber.org/protocol/pubsub">
> <subscribe node="stations/ut/avt" jid="treinp...@jabber.org"/>
> </pubsub>
> </iq>
>
> Nu krijg ik alleen nog geen items binnen, waarschijnlijk iets te maken
> met dat in het reply van de server de jid null is?
>
> <iq id="tAx87-6" to="treinp...@jabber.org/44d7b3ccfc748a4f"
> from="nsapi.xmpp.openov.nl" type="result">
> <pubsub xmlns="http://jabber.org/protocol/pubsub">
> <subscribe xmlns="http://jabber.org/protocol/pubsub"/>
> <subscription jid="null" subscription="subscribed"/>
> </pubsub>
> </iq>

Dan heb je een mooie bug te pakken. Die null hoort daar niet. Even kijken
hoe die daar kan komen.

Ik heb overigens wel subscriptions van je staan, op Utrecht; zowel op .org
als op .se.


Stefan

Stefan de Konink

unread,
Jan 2, 2012, 12:01:25 PM1/2/12
to openov
On Mon, 2 Jan 2012, Koch wrote:

> Nu krijg ik alleen nog geen items binnen, waarschijnlijk iets te maken
> met dat in het reply van de server de jid null is?

Is gefixed.

Hergebruik van een variabele gaf erg onverwachte resultaten.


Stefan

Koch

unread,
Jan 2, 2012, 12:42:46 PM1/2/12
to openov
Yep, nu is het

<iq id="FjciA-6" to="treinp...@jabber.se/smack"
from="nsapi.xmpp.openov.nl" type="result">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscription jid="treinp...@jabber.se" node="stations/asd/avt"
subscription="subscribed"/>
</pubsub>
</iq>


Nog steeds geen items echter, ben nog aan het uitzoeken waar dat aan
zou kunnen liggen.

Stefan de Konink

unread,
Jan 2, 2012, 1:10:12 PM1/2/12
to openov
On Mon, 2 Jan 2012, Koch wrote:

> Nog steeds geen items echter, ben nog aan het uitzoeken waar dat aan
> zou kunnen liggen.

Om materiaal te krijgen moet je aan de volgende voorwaarden voldoen:

- Je client moet online zijn, we gaan daar vanuit je als je de
subscription maakt. Kan een bericht niet afgeleverd worden wordt de client
offline gezet.

- Omdat we ook willen weten of je weer online komt stuurt de server ook
een subscription op je presense uit. Op het moment dat je dan weer online
komt wordt je online status ook gezet.

- Om data te ontvangen wordt er om de minuut gepold op de tabel met data.
Vervolgens worden wijzigingen herkend, en dat doorgestuurd aan alle
clients die online zijn, en zijn gesubscribed op die data.

- Om er voor te zorgen dat *jouw* stukje dat is gesubscribed wordt gepold
moet je online zijn, anders word dat station bij de update niet
meegenomen.

Dit zijn jouw laatste vier; de .se/smack is dus voor het laatst gezien om
17:55. De rest zou nog online zijn.

treinp...@jabber.se/smack|0|2012-01-02 17:55:35
treinp...@jabber.org/smack|1|
treinp...@jabber.org/01d0aa8b9b19f18d|1|
treinp...@jabber.org/474c1e33452a842f|1|

Nu vermoed ik dat jij weer direct een corner case te pakken hebt. Want ik
zie subscriptions van je;

treinp...@jabber.org|ut||
treinp...@jabber.org|asd||
treinp...@jabber.org|asd||
treinp...@jabber.org|asd||
treinp...@jabber.org|asd||


Maar je ziet zelf ook dat die subscriptions op de barejid zijn en niet op
de fulljid met resource. Practisch gezien zou dat volgens mijn goede
vrienden bij de standaard commissie betekenen dat het bericht wordt
gestuurd naar de client die het laatste een presense heeft uitgestuurd en
niet naar alle jids die online zijn.


Je moet voor jezelf even je usecase bepalen;

- wil je 10 clients aansluiten, gebruik dan voor die 10 clients
verschillende resources *ook* subscriptions met die resources.

- wil je alleen berichten binnen krijgen op het apparaat waar je op dat
moment voor zit, of in je hand hebt, zou het voldoen om een bare jid te
gebruiken. De eerst volgende event wordt dan verstuurd naar de resource
met meeste prioriteit.

Laat even weten of je er uit komt.


Stefan

Stefan de Konink

unread,
Jan 2, 2012, 1:13:05 PM1/2/12
to openov
On Mon, 2 Jan 2012, Stefan de Konink wrote:

> - Om er voor te zorgen dat *jouw* stukje dat is gesubscribed wordt gepold
> moet je online zijn, anders word dat station bij de update niet meegenomen.

Mocht er toch nog een bug aan onze kant op zitten. Zit dat hoogst
waarschijnlijk in de join op de online zijnde full-jids en de bare-jid die
jij gebruikt. Ga ik laten vanavond even naar kijken.

Stefan

Koch

unread,
Jan 2, 2012, 1:40:29 PM1/2/12
to openov
Bedankt voor de tips, krijg nu idd events binnen.
Lijkt er op dat die jabber.se server bepaalde dingen stuurt waarvan
smack eruit klapte en die jabber.org server had ik ook nog een andere
client van lopen die dus blijkbaar de events oppikte.

Er zullen wel meerdere verbindingen zijn omdat ik steeds die code
opnieuw startte waardoor er weer een nieuwe verbinding werd opgezet.

Voor anderen die Smack willen laten werken, je moet in smackx
pubsubmanager.java het stuk
if
(infoReply.getIdentities().next().getType().equals(NodeType.leaf.toString()))
weghalen aangezien hier altijd een nosuchelementexception ontstaat,
vermoed dat smack zelf iets meestuurt wat een node als leaf of
collectionnode identificeert. Zelf heb ik er maar van gemaakt dat er
altijd een leafnode word aangemaakt aangezien elke node in openov
items lijkt te hebben.
Dit is de proof-of-concept code die ik nu gebruik http://pastebin.com/byNPfBpB


On Jan 2, 7:10 pm, Stefan de Konink <ste...@konink.de> wrote:
> On Mon, 2 Jan 2012, Koch wrote:
> > Nog steeds geen items echter, ben nog aan het uitzoeken waar dat aan
> > zou kunnen liggen.
>
> Om materiaal te krijgen moet je aan de volgende voorwaarden voldoen:
>
>   - Je client moet online zijn, we gaan daar vanuit je als je de
> subscription maakt. Kan een bericht niet afgeleverd worden wordt de client
> offline gezet.
>
>   - Omdat we ook willen weten of je weer online komt stuurt de server ook
> een subscription op je presense uit. Op het moment dat je dan weer online
> komt wordt je online status ook gezet.
>
>   - Om data te ontvangen wordt er om de minuut gepold op de tabel met data.
> Vervolgens worden wijzigingen herkend, en dat doorgestuurd aan alle
> clients die online zijn, en zijn gesubscribed op die data.
>
>   - Om er voor te zorgen dat *jouw* stukje dat is gesubscribed wordt gepold
> moet je online zijn, anders word dat station bij de update niet
> meegenomen.
>
> Dit zijn jouw laatste vier; de .se/smack is dus voor het laatst gezien om
> 17:55. De rest zou nog online zijn.
>
> treinplan...@jabber.se/smack|0|2012-01-02 17:55:35
> treinplan...@jabber.org/smack|1|
> treinplan...@jabber.org/01d0aa8b9b19f18d|1|
> treinplan...@jabber.org/474c1e33452a842f|1|
>
> Nu vermoed ik dat jij weer direct een corner case te pakken hebt. Want ik
> zie subscriptions van je;
>
> treinplan...@jabber.org|ut||
> treinplan...@jabber.org|asd||
> treinplan...@jabber.org|asd||
> treinplan...@jabber.org|asd||
> treinplan...@jabber.org|asd||

Stefan de Konink

unread,
Jan 2, 2012, 1:50:11 PM1/2/12
to openov
Je bent nogsteeds een van de eersten die deze server echt 'test'.
42transit.com draait er nu wel op, maar die hebben behoorlijk veel hulp
gehad.

Als je ideeen heb semantisch gezien, die wel van het NS model afwijken,
maar mogelijk wel in een groter 'OV' plaatje passen horen we dat
natuurlijk graag.

Waar we nu mee bezig zijn is voornamelijk 'standaarden die door anderen
zijn gemaakt', eenvoudig realtime beschikbaar maken. Zonder de noodzaak
van VPN's en webservices. Helaas wordt de XML daar niet uniform door, en
dat is wel het ultieme doel: met zelfde techniek trein, bus, metro, tram
doen.

...uiteraard niet tot de landgrenzen gelimiteerd ;)


Stefan

Koch

unread,
Jan 2, 2012, 6:54:17 PM1/2/12
to openov
Heb het nu ook werkend in android, nu een treinbord (tb7) op basis van
XMPP, net echt ;)

Data die je zou kunnen toevoegen is welke vervoerder de trein
uitvoert. In mijn app, treinbord, doe ik dit aan de hand van het
treinnummer en de treinnummerlijst van Prorail. Je moet alleen wat
trucs uitvoeren om voor,volg, omgeleide en onderbroken treinen ook mee
te pakken. Komt ongeveer neer op dit.

private int plannedTrainNr(int trainnr){
if (trainnr >= 100000 && trainnr < 200000){
return trainnr - 10000;
}else if (trainnr >= 200000 && trainnr < 300000){
return trainnr - 20000;
}else if (trainnr >= 690000 && trainnr < 700000){
return trainnr - 690000;
}else if (trainnr >= 700000 && trainnr < 800000){
return trainnr - 700000;
}
return trainnr;
}

Meer info over treinnr systeem staan in de voetnoot in het Prorail xls
bestand en hier http://wiki.ovinnederland.nl/wiki/Treinnummering#Nummering.
Maar eigenlijk is het echt iets wat de NS zou moeten leveren, ook in
de reisplanner (zeker nu met het ovchipkaart verhaal).

Stefan de Konink

unread,
Jan 2, 2012, 7:09:15 PM1/2/12
to ope...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Op 03-01-12 00:54, Koch schreef:


> Heb het nu ook werkend in android, nu een treinbord (tb7) op basis
> van XMPP, net echt ;)

Als je een plaatje en linkje hebt komt hij uiteraard op de promotie
pagina ;) Ben erg benieuwd.


> Data die je zou kunnen toevoegen is welke vervoerder de trein
> uitvoert. In mijn app, treinbord, doe ik dit aan de hand van het
> treinnummer en de treinnummerlijst van Prorail. Je moet alleen wat
> trucs uitvoeren om voor,volg, omgeleide en onderbroken treinen ook
> mee te pakken. Komt ongeveer neer op dit.
>
> private int plannedTrainNr(int trainnr){ if (trainnr >= 100000 &&
> trainnr < 200000){ return trainnr - 10000; }else if (trainnr >=
> 200000 && trainnr < 300000){ return trainnr - 20000; }else if
> (trainnr >= 690000 && trainnr < 700000){ return trainnr - 690000;
> }else if (trainnr >= 700000 && trainnr < 800000){ return trainnr -
> 700000; } return trainnr; }
>
> Meer info over treinnr systeem staan in de voetnoot in het Prorail
> xls bestand en hier
> http://wiki.ovinnederland.nl/wiki/Treinnummering#Nummering. Maar
> eigenlijk is het echt iets wat de NS zou moeten leveren, ook in de
> reisplanner (zeker nu met het ovchipkaart verhaal).

Heb je dan ook stiekem een linkje naar het Prorail XLS bestand ;)


Ik ben uiteraard niet de beroerdste om even een if then else te
tikken. Wij waren overigens al bezig om aan te geven of een trein WiFi
heeft of niet, dat lijkt me zo gaaf.


Stefan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEUEAREKAAYFAk8CRysACgkQYH1+F2Rqwn0SAQCXV6AdSu3IDGUV9f2+CIRRMZ3m
IACaAsatNlP2LUx8mBXXJe6pe6J38+k=
=/XbO
-----END PGP SIGNATURE-----

Koch

unread,
Jan 2, 2012, 7:39:45 PM1/2/12
to openov
Ah die link had er bij moeten zitten:
http://www.prorail.nl/Vervoerders/Capaciteit%20treinpaden/dienstregeling2012/Documents/Versie%2012.04%20Treinnummerlijst%202012.xls

Heb wel een apk-tje van ruwe versie, de background service stopt niet
dus als je hem niet handmatig sluit zal ie je batterij leegslurpen ;).
Stations verandering lukt ook nog niet zonder de app geforceerd af te
sluiten.
http://www.mediafire.com/?3e5j8yyls4usnn8
> Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org/

Koch

unread,
Jan 3, 2012, 8:30:09 AM1/3/12
to openov
Ik heb de veranderingen die ik heb gemaakt in (a)smack even op github
gegooid

https://github.com/skywave/asmack
https://github.com/skywave/smack

Zit ook een prebuilt jar en een voorbeeld in zodat iedereen bijna
instant een android app kan bouwen. Java is ook simpel, maar dan moet
diegene zelf even pubsubmanager.java aanpassen zodat de leaf/
collectionnode if statement niet wordt gebruikt.

On Jan 3, 1:39 am, Koch <thomask...@gmail.com> wrote:
> Ah die link had er bij moeten zitten:http://www.prorail.nl/Vervoerders/Capaciteit%20treinpaden/dienstregel...
>
> Heb wel een apk-tje van ruwe versie, de background service stopt niet
> dus als je hem niet handmatig sluit zal ie je batterij leegslurpen ;).
> Stations verandering lukt ook nog niet zonder de app geforceerd af te
> sluiten.http://www.mediafire.com/?3e5j8yyls4usnn8

Stefan de Konink

unread,
Jan 3, 2012, 8:59:08 AM1/3/12
to openov
On Tue, 3 Jan 2012, Koch wrote:

> Ik heb de veranderingen die ik heb gemaakt in (a)smack even op github
> gegooid

Nu eigenlijk nog even iets van anonymous authentication enzo.

Stefan

Koch

unread,
Jan 3, 2012, 9:22:58 AM1/3/12
to openov
Zou het mogelijk zijn om http://xmpp.org/extensions/xep-0060.html#entity-subscriptions
te ondersteunen? Op dit moment krijgt ik <Handler not supported>
terug. Kan handig zijn aangezien ik nu subscribed ben op de nodes mt,
asd, asdz en shl en ik eigenlijk maar op een node tegelijk wil.

On Jan 3, 2:30 pm, Koch <thomask...@gmail.com> wrote:
> Ik heb de veranderingen die ik heb gemaakt in (a)smack even op github
> gegooid
>
> https://github.com/skywave/asmackhttps://github.com/skywave/smack

Stefan de Konink

unread,
Jan 3, 2012, 9:35:54 AM1/3/12
to openov
On Tue, 3 Jan 2012, Koch wrote:

> Zou het mogelijk zijn om http://xmpp.org/extensions/xep-0060.html#entity-subscriptions
> te ondersteunen? Op dit moment krijgt ik <Handler not supported>
> terug. Kan handig zijn aangezien ik nu subscribed ben op de nodes mt,
> asd, asdz en shl en ik eigenlijk maar op een node tegelijk wil.

Ja dat staat op de TODO. Onder de motorkap zit het er volgens mij al wel
in maar zag gisteren al een suPscription typo bij het event staan.
Gelukkig hebben we voor de kerst een beter framework voor PubSub
implementaties gemaakt, dat niet alles handmatig meer gedaan hoeft te
worden.


Stefan

Reply all
Reply to author
Forward
0 new messages