Ah J*... Like I said, I am lame.
So the GET portion of this is not working. I have to go to a Champagne bar now, any takers to resolve my little error will be granted a toast. Its weekend. Best regards, Bernino -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Bernino Lind Sent: Friday, June 13, 2003 8:15 PM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: RE: [JDEV] Adding own namespace Dear list, dear Fausto, Richard, Benoit and other relevant interested parties. Now it works. To all those lamers, slow-goers and other not so well equipped persons plus the ones whom are just too old to think fast like myself (but hey, Im better insured!) id like to give my knowledge away. What I did is, EXAMPLE (using postgres): 1. You want to create a game where you would like to store the score of the game in a relational database with SQL. 2. You would then like to use xdb_sql (see other docs to get it working) 3. You expand your DB model with what ever relevant tables, in this example I want to save the current date, the username, the gameid (I have multiple games) and the score: CREATE TABLE score ( sid INTEGER PRIMARY KEY DEFAULT NEXTVAL('serial'), username VARCHAR(255) REFERENCES users(username) NOT NULL, gameid INTEGER NOT NULL, score INTEGER NOT NULL, date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 4. Add in xdb_sql.xml (your SQL config) the relevant SQL bits, in this example: <!-- ****************** score ********************** --> <querydef name="score-set" dtd="2" type="set" namespace="lind:score"> <text>INSERT INTO score (username,gameid,score) VALUES ('$$user$$', '$$gameid$$','$$score$$')</text> <user>$$user$$</user> <bindvar tag="gameid">$$gameid$$</bindvar> <bindvar tag="score">$$score$$</bindvar> </querydef> <querydef name="score-get" dtd="2" type="get" namespace="lind:score"> <text>SELECT score, date FROM score WHERE username = '$$user$$' AND gameid='$$gameid$$'</text> <user>$$user$$</user> <bindvar tag="gameid">$$gameid$$</bindvar> <top-result><x xmlns='score:iq:get'/></top-result> <bindcol tag="domain" offset="0"/> <bindcol tag="file" offset="1"/> </querydef> </queries> 5. Add in you jabber.xml (your server configuration) a method for xdb: <xdb id="xdbscore"> <host/> <ns>lind:score</ns> <load> <xdb_sql>/usr/local/lib/jabber/xdb_sql.so</xdb_sql> </load> <jabberd:include>/usr/local/etc/xdb_sql.xml</jabberd:include> </xdb> IMPORTANT NOTE: never use ns of jabber: - this is reserved for the jabber people...which is why my xmlns is called lind:score 6. Reload config 7. Check that it works and use this kind of method: [EMAIL PROTECTED] jabberd14/xdb_sql> telnet 192.168.0.166 5222 Trying 192.168.0.166... Connected to subsilo.subsilo.dk. Escape character is '^]'. <stream:stream to='192.168.0.166' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3EEA0D28' xmlns='jabber:client' from='192.168.0.166'> <iq id='auth2' type='set'> <query xmlns='jabber:iq:auth'> <username>jabberuser</username> <password>secret</password> <resource>telnet</resource> </query> </iq> <iq id='auth2' type='result'/> <presence/> <iq type="set" id="1001"> <query xmlns="jabber:iq:private"> <score xmlns="lind:score"> <gameid>1</gameid> <score>12</score> </score> </query> </iq> <iq type='result' id='1001' from='[EMAIL PROTECTED]/telnet' to='[EMAIL PROTECTED]/telnet'/> The way to set your score is via the jabber:iq:private... 8. Doble checke that everything is in ordnung: jdb=# SELECT * from score ; sid | username | gameid | score | date -----+--------------------------+--------+-------+---------------------- ------ 1 | [EMAIL PROTECTED] | 1 | 12 | 2003-06-13 20:11:40.774654 2 | [EMAIL PROTECTED] | 1 | 12 | 2003-06-13 20:11:54.546168 (2 rows) jdb=# 9. Have an espresso and your favourite candy. Best regards, Bernino Lind -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Bernino Lind Sent: Friday, June 13, 2003 6:49 PM To: [EMAIL PROTECTED] Subject: RE: [JDEV] Adding own namespace Dear Richard, Thats very fine with some rules... s/jabber/lind/g But I still need to have some knowledge on the actual implementation. It sounds as though you can help me Richard - howto implement the question in ask? best regards, Bernino Lind -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Richard Dobson Sent: Friday, June 13, 2003 10:31 AM To: [EMAIL PROTECTED] Subject: Re: [JDEV] Adding own namespace If you are creating your own non standard namespaces you must not use the word jabber in it, you must use something different usually the name of your application or your surname e.g. lind:score. Richard ----- Original Message ----- From: "Bernino Lind" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, June 12, 2003 11:29 PM Subject: [JDEV] Adding own namespace > Dear list, > > I need to add a namespace for some development I am doing. > > Needed: > * store a game id with score and jid in database > > Aka: > > <iq type='set' to='[EMAIL PROTECTED]'> > <query xmlns='jabber:score'> > <gameid>1</gameid> > <score>123</score> > </query> > </iq> > > And ofcourse a "get" method to find the score of a particular user. > > I am very much in doubt of an implementation. I read about the > bloodbank example in some jep with jabber:x:data - but there is no > implementation guide so I dropped it. > > I also read the test:iq:url example - ditto problem. > > What I have done so far, by quessing, is: > > Add dtd=2 queries to the xdb_sql.xml configuration with a xmlns of > jabber:score. Add jabber:score to my jabber.xml configuration with > xdb_sql as storage method for all hosts for the xmlns jabber:score. > > I get 404 and 502: no go. > > Then I added service description and name. Still no go. > > In the browse section: > <service type="score" jid="score.192.168.0.166" name="score"> > <ns>jabber:score</ns> > </service> > > > In the xdb section: > <xdb id="xdbscore"> > <host/> > <ns>jabber:score</ns> > <load> > <xdb_sql>/usr/local/lib/jabber/xdb_sql.so</xdb_sql> > </load> > <jabberd:include>/usr/local/etc/xdb_sql.xml</jabberd:include> > </xdb> > > > Parallel to yahoo etc. gateway service sections: > <service id="score"> > <host>score.192.168.0.166</host> > </service> > > In the xdb_sql: > <!-- ****************** score ********************** --> > <querydef name="score-set" dtd="2" type="set" > namespace="jabber:score"> > <text>INSERT INTO score (username,gameid,score) VALUES > ('$$user$$', '$$gameid$$','$$score$$')</text> > <user>$$user$$</user> > <bindvar tag="gameid">$$gameid$$</bindvar> > <bindvar tag="score">$$score$$</bindvar> > </querydef> > > <querydef name="score-get" dtd="2" type="get" > namespace="jabber:score"> > <text>SELECT score, date FROM score WHERE username = > '$$user$$' AND gameid='$$gameid$$'</text> > <user>$$user$$</user> > <bindvar tag="gameid">$$gameid$$</bindvar> > <top-result><x xmlns='score:iq:get'/></top-result> > <bindcol tag="domain" offset="0"/> > <bindcol tag="file" offset="1"/> > </querydef> > </queries> > > Can anyone send an example of how to configure the server to add a > namespace in this way? > > As you can see this is really the same question previously asked on > this > list: how to really use the dtd=2??? > > best regards, > Bernino Lind > > _______________________________________________ > jdev mailing list > [EMAIL PROTECTED] > http://mailman.jabber.org/listinfo/jdev > _______________________________________________ jdev mailing list [EMAIL PROTECTED] http://mailman.jabber.org/listinfo/jdev _______________________________________________ jdev mailing list [EMAIL PROTECTED] http://mailman.jabber.org/listinfo/jdev _______________________________________________ jdev mailing list [EMAIL PROTECTED] http://mailman.jabber.org/listinfo/jdev _______________________________________________ jdev mailing list [EMAIL PROTECTED] http://mailman.jabber.org/listinfo/jdev
