Upload
anila
View
40
Download
1
Embed Size (px)
DESCRIPTION
MSN-kompatibilis egyéni emotikonok kezelése XMPP/Jabber-ben. Bemutatás Németh Ádám, [email protected]. XMPP. eXtensible Messaging and Presence Protocol. XMPP. IETF RFC 3920-3923 (20, 21 érdekes) XML-alapú Eredeti: Jabberd, 1998, Jeremy Miller, GNU GPL - PowerPoint PPT Presentation
Citation preview
XMPP
•eXtensible
•Messaging and
•Presence
•Protocol
XMPP
•IETF RFC 3920-3923 (20, 21 érdekes)
•XML-alapú
•Eredeti: Jabberd, 1998, Jeremy Miller, GNU GPL
•IM + “általános middleware szolgáltatás”
•Sun, Google, Adobe alapprotokoll, IBM SameTime kompatibilis, AOL elvileg lesz, Apple, ISP-k, kormányhivatalok, cégek...
XMPP felépítés
•Kliensoldalról: kliens-szerver architektúra
•Szerveroldal: elosztott monstrum
•SMTP-hez hasonló (bárki futtathat saját szervert, user@domain azonosítók)
•A protokol kiterjeszthető - XMPP Standards Foundation felügyeli a hivatalosakat
•Transportok: csatlakozás más protokollokhoz (MSN, AIM, SIP...)
Miért fontos nekünk?
•Google Talk, Sun IM, Apple iChat Server, Portugal Telecom, GMX (Németország), ...
•Webes integráció: Magyarországon először freemailben
•SchJabber: 2004
•Gmail.BME?
•Többiek: NDA :(
XMPP Platformok•Desktop IM / C++, Java, .NET...
•Web IM: Flash, JavaScript, újabban XUL
•Mobil IM: Symbian, PocketPC, J2ME
•Beágyazott, middleware - állítólag ilyen is van
•15+ Platform, 15 szerver, 15 nyelv, 50 lib, 90+ kliens
Nyelvi elemek
XMPP nyelv•message
•Üzenetküldésre
•presence
•“The ability to communicate” - jelenlétállapotok (az is, mit hallgatsz épp)
• iq
•minden egyéb: set, get, query
Message stanza
<message from='[email protected]' to='[email protected]'> <body>Wherefore art thou, Romeo?</body></message>
presence stanza
•Küldés: <presence> <show>xa</show><status>Gone home for the evening</status></presence>
•Fogadás: <presence from='dj@yak/Work' to='sabine@yak'> <status>Online</status> <priority>1</priority></presence>
iq stanza
•contact list lekérése: <iq type='get' id=”roster_1”> <query xmlns='jabber:iq:roster'/></iq>
•válasz: <iq to='[email protected]/balcony' type='result' id='roster_1'> <query xmlns='jabber:iq:roster'> <item jid='[email protected]' name='Romeo' subscription='both'> <group>Friends</group> </item> </query></iq>
Önlabtéma 2007 ősz
• Jabber-kliens van sok
•Probléma: ismerősök visszaállnak Google Talkról, mert “nincsenek olyan smiley-k”
•Megoldás: csináljunk!
•XSF-fel együttműködve (Peter Saint-André)
•Deliverables: 1) XEP 2) (esetleg) kliens
•Előny: tettünk valamit az emberiségért :)
•Hátrány: Nem implementálni szívás, kitalálni
Önlab lépései
•MSN Protokollanalízis
•Létező megoldások felderítése
•Protocol proposal draft
•Demo implementáció
•Protocol proposal
MSN Protokoll
•SIP-szerű
•Üzenet előtt MSNObjectként
•Ha nincs meg - file request!
•Utólagos kitöltés
•Beszélgetésenként más (thread / session)
Smiley MSNObject
MSG 1 N 232MIME-Version: 1.0Content-Type: text/x-mms-emoticon(tux) <msnobj Creator="[email protected]" Size="978" Type="2" Location="TFRC5.dat" Friendly="AAA="SHA1D="Uz3MQadmIWHed3saSdwcTo/Tc7U=" SHA1C="e7vZQCbXV30xf3gngY3P3slZhts="/>
(baaha)<msnobj Creator="[email protected]" Size="691" Type="2" Location="TFR3FA.dat" Friendly="AAA=" SHA1D="as1WxRoW0FXQFVrERtCC1Hec8i8=" SHA1C="AeZUBbzp5rI7tlZJ++ikrO4SeUk="/>
MSNObject XMPP
•<message/> payload
•<body/> elé
•külön namespace
MSNObject XMPP II.
First proposal
<message to="[email protected]" from="[email protected]"> <emoticons> <emoticon alias="(heart)" type="smiley" filename="heart.png" sha1="Id0n\'tkn0wSH418YH34Rt"/> </emoticons> <body> If my (heart)'s dear love-- </body></message>
Fájlátküldés?
•Jelenleg: IQ stanza
•nincs meg a smiley-> get
•válasz (result): smiley fájl base64 encoded
•Intelligensebb megoldások: ld. később
Demo implementáció
•Java -ban (Jive Software Smack)
•Küldés-fogadás tesztelésére
Demo implementáció
Architektúra•EmoticonEntity
•EmoticonManager
•EmoticonPacketExtension (+Provider)
•EmoticonTransferPacket (+Provider)
•Sender és Receiver tesztkliens
Problémák (küldés)
•A használt smiley-kat az üzenet szövege (<body/>)alapján lehet megmondani
•Az üzenet a küldés pillanatáig változhat
•Ergo PacketExtension toXML()-jében meg kell nézni az üzenetet, ismernie kell azt
•De: Csak az EmoticonManager ismeri a smiley-kat, viszont nem tud róla, mikor küldenek üzenetet
•Eredmény: mindenki ismer mindenkit :(
Problémák (fogadás)
•Nehogy már a fogadó processnek kelljen beszereznie a smiley-kat : EmoticonManager!
•EM megint ismeri az üzenetet
•UPDATE??
•Web??
•MSN-átjáró?
Még nincs kész...
Intelligens megoldások
•SI-Pub (XEP-153)
•User Avatar (XEP-84)-szerű (PubSubon keresztül)
•SI-Pub csomagolása smiley fejlécbe
Eddigi reakciók
•Peter Saint-André
•Per Erkström
További infó tőlem
•http://jabbermania.blogspot.com (C++ Jabberkliens, Smack jabberbot, értelmesebb dolgok)
•Budapest New Technology Meetup Jún. 6 - Egységes Instant Messaging Hálózat Mo.-n
•NDA :(
Referenciák
Referenciák• jabber.org: kliensek, szerverek, libek...
•http://www.ietf.org/rfc/rfc3921.txt
•http://www.xmpp.org/extensions/ - XEP-ek (Jingle, User Tune, Publish-Subscribe etc)
• Jingle bemutatás (Peter Saint-André): http://www.saint-andre.com/jabber/Jingle.pdf
• IgniteRealtime.org - Jive szerverek, kliensek
Jabber + P2PJabber +
MultiMedia
Jingle pre-history•Eredetileg: Kliens-szerver architektúra
•Probléma: fájlátvitel, mediastreaming, SIP???
•Első: TINS (XEP-0111): SIP jabberül
•(:-() A kliensoldal bonyolult, jabberben nem divat!
•(:-)) Könnyű SIP-transportot írni
•Most: JINGLE (XEP-0166) - by Google
Jingle downsides
•Van a Jingle (XEP-0166 - experimental protocol)
•Van a libjingle (GNU LGPL lib, C++, by Google)
• libjingle nem kompatibilis XEP-0166-tal!!!
•Google Talk libjingle alapú
•Készül: Jive Spark / Smack Jingle lib (JAVA), de JMF alapú - a Jive szerint is vacak
Jingle advantages
•XMPP-alapú - hey, it’s a standard
•Egyeztetőprotokoll, mint a SIP (“lesz” gw)
•Beépített támogatás tűzfalak megkerülésére
•ELVILEG mehet webről is (Flash!)
•Nem teljesen kínai, de azért...
Önlabtéma-variációk
Önlabtéma II.
•Jingle
•Készül egy proto-XEP webre, flash-használattal (“VoIP”, video)
•Nincs implementáció
•Előny: ismét tettünk valami hasznosat :)
•Hátrány: JINGLE ingoványos talaj;előbb-utóbb a ClientSide vagy a Jive úgyis megírja; nincs rendes intelmac IDE hozzá
Önlabtéma III.•Még mindig Jingle
•Haverok. Buli. Fanta. De máshol!
•Megoldás: VideoLAN (videolan.org)
•Kéne egy signaling protokoll, meg chat, minél jobb jelenlétkezelés - Jabber-Jingle!
•Előny: Nem túl hasznos, de buli
•Hátrány: illegális (Gyenge Anikó szerint), Jingle ingoványos, gyenge implementációk
•Sok kódolás, sok szívás lehet
Önlabtéma n.
•XEP-0118 - User Tune: milyen jó lenne, ha bele tudnék hallgatni, másik mit hallgat
•Írjunk minél jobb webes klienst
•XUL, Anyone?
•Mobil: fényképez, fájlt elküld / fogad