
çŽ2幎éãICQçšã®ããããéçºããŠããŸãã æè¿ã®äžé£ã®
ã€ãã³ãã®åŸãICQãããã¯ãã°ãã°åäœäžèœã§ããããšãå€æãããŸãèšäº
ãjabberãããã®çŽ¹ä»ãã®åŸãJabberã®ãããã®éçºã«é¢é£ããåé¡ãç 究ããããšåŒ·ãæã¿ãŸããã
ãã®æçš¿ã§ã¯ããã®åéã§ã®æåã®çµéšãçãããšå
±æããããšæããŸãã ç°¡åãªJabberãããããŒãããèšè¿°ãã1æéã ããè²»ããæ¹æ³ã説æããŸãã
ããããéçºããããã®ãã©ãããã©ãŒã ãšããŠã
Openfireãéžæã
ãŸãã ã ãã®éžæã¯ãOpenfireãJavaã§æžãããŠãããšããäºå®ã«åœ±é¿ãããŸããïŒç§ã¯çµ¶å¯Ÿã«Pythonã®ãããªãã®ãåŠã³ãããããŸããã§ããïŒã Openfireã®ãã©ã°ã€ã³æ§é ã«ããããããæ©èœãè¿
éãã€äŸ¿å©ã«åºå®ã§ããŸãã ããã«ãOpenfireã¯ç°¡åã«æ§æã§ãããããŸã§ã«æ¢ã«jabberãµãŒããŒãšããŠã€ã³ã¹ããŒã«ãããŠããŸããã
ç°å¢ãèšå®ãã
ãŸããOpenfireãšãã®ãã©ã°ã€ã³ããã«ãããŠå®è¡ã§ããéçºç°å¢ãã»ããã¢ããããå¿
èŠããããŸãã Windowsã®ã€ã³ã¹ããŒã«ããã»ã¹ã¯æ¬¡ã®ãšããã§ãã ä»ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã¯ãããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
- Java SE Development KitïŒJDKïŒãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸã ã ããã§åãããšãã§ããŸã ã JDKãCïŒ\ Program Files \ Java ïŒããã©ã«ãã®ãã©ã«ããŒïŒã«ã€ã³ã¹ããŒã«ããŸããã CïŒ\ Program Files \ Javaã«ã€ã³ã¹ããŒã«ããåŸããµããã©ã«ããŒjdk1.6.0_12ããã³jre6ã衚瀺ãããŸãã ã
- Javaéçºè
åãã®Eclipse IDE㯠ãã¡ãããããŠã³ããŒãããŠãã ãã ã åããã©ã«ããŒCïŒ\ Program Files \ Javaã«è§£åããŸã ã ãã®çµæãå¥ã®ãµããã©ã«ããŒ-eclipseã衚瀺ãããŸãã
- ç°å¢å€æ°ãèšå®ããŸãïŒããã¯ã [ãã€ã³ã³ãã¥ãŒã¿ãŒ]> [ããããã£]> [詳现èšå®]> [ç°å¢å€æ°]ã§è¡ããŸã ïŒïŒ
- JAVA_HOME = CïŒ\ Program Files \ Java \ jdk1.6.0_12 JDKãå¥ã®ãã©ã«ããŒã«è§£åããå Žåã¯ãé©åãªãã¹ãæå®ããŸãã
- CïŒ\ Program Files \ Java \ jre6 \ binã Pathå€æ°ã«è¿œå ããŸãïŒãã¹ãæ£ããããšã確èªããŸãïŒã
- åèµ·åããŸãã
- Eclipseãèµ·åããŸããããã«ãããWorkspaceãã€ãŸããããžã§ã¯ããé
眮ãããã£ã¬ã¯ããªãéžæããããã«æ±ããããŸãã CïŒ\ EditãšããŸãããã ã¯ãŒã¯ã¹ããŒã¹ãéžæãããšãããããç»é¢ã衚瀺ãããããã«éããããšãã§ããŸãã
Openfireããã«ããã
次ã«ã2çªç®ã®æ®µéãã€ãŸãOpenfireã®æ§ç¯ãšèµ·åã«é²ã¿ãŸãã æ瀺ã«æ£ç¢ºã«åŸãããã«ããŠãã ãããããããªããšãããã«äœãæ©èœããªãå¯èœæ§ããããŸãã
- ãããã OpenfireãœãŒã¹ãããŠã³ããŒãããŸã ã Openfireèªäœã«å ããŠãã¢ãŒã«ã€ãã«ã¯ãã¹ãŠã®ç¡æãã©ã°ã€ã³ã®ãœãŒã¹ã³ãŒããå«ãŸããŠããŸãã ãã©ã°ã€ã³ãéçºãããšãããã®ã³ãŒãã調ã¹ãããšãã§ããŸãã
- ãœãŒã¹ã¢ãŒã«ã€ãã«ã¯openfire_srcãã©ã«ããŒãå«ãŸããŠããŸãã CïŒ\ Editã§è§£åããŸãã
- Eclipseã«ç§»åãããœãŒã¹ã«åŸã£ãŠæ°ãããããžã§ã¯ããäœæããŸãã ãããè¡ãã«ã¯ãã¡ãã¥ãŒãã[ ãã¡ã€ã«]> [æ°èŠ]> [ãããžã§ã¯ã]> [Javaãããžã§ã¯ã ]ãéžæããŸãã æ°ããJavaãããžã§ã¯ããäœæããããã®ãŠã£ã³ããŠã衚瀺ãããŸãã 次ã®ããã«èšè¿°ããŸãã
- ãããžã§ã¯ãå = openfire_src
- æ¢åã®ãœãŒã¹ãããããžã§ã¯ããäœæãããŒã¯ããŸã ã ãã£ã¬ã¯ããªã§ã CïŒ\ Edit \ openfire_srcãæå®ããŸãã
- å®äºãã¯ãªãã¯ããŸãã
- Eclipseããããžã§ã¯ããäœæããããããããã«ãããŸãã ãããè¡ãã«ã¯ãã¡ãã¥ãŒããã ãŠã£ã³ããŠã>ããã¥ãŒã衚瀺ã>ãAntããéžæããŸãã Eclipseã¯ãŒã¯ã¹ããŒã¹ã«Antããã«ã衚瀺ãããŸãã ãããå³ã¯ãªãã¯ããããããããŠã³ã¡ãã¥ãŒãã[ ãã«ããã¡ã€ã«ã®è¿œå ]ãéžæããŸãã
- 衚瀺ãããããªãŒã§ã openfire_src> build> build.xmlãéžæããŸãã OKãã¯ãªãã¯ããŸãã
- Openfire XMPPãµãŒããŒãå€ãã®ãã«ããªãã·ã§ã³ãšãšãã«Antããã«ã«è¡šç€ºãããŸãã
- Openfireããã«ãããŸãã ãããè¡ãã«ã¯ãããªãŒå
ã§openfire [default]ãšããã¢ã»ã³ããªãªãã·ã§ã³ãèŠã€ããŠããã«ã¯ãªãã¯ããŸãã ããªãŒã®ã«ãŒãèŠçŽ ãã¯ãªãã¯ããããšãã§ããŸãã
- ã¢ã»ã³ããªãéå§ãããšããã«ãEclipseã«ã³ã³ãœãŒã«ã衚瀺ãããã¢ã»ã³ããªã®é²è¡ç¶æ³ã«é¢ããæ
å ±ã衚瀺ãããŸãã ç§ãã¡ã¯ãç¢æãæåããã®ãåŸ
ã£ãŠããŸãã
- 次ã«ãOpenfireã®èµ·åãã©ã¡ãŒã¿ãŒãæ§æããŸãããããå®è¡ããã«ã¯ã [å®è¡ ] > [æ§æã®å®è¡ ]ã¡ãã¥ãŒã«ç§»åããŸãã
- 衚瀺ããããŠã£ã³ããŠã§ã Javaã¢ããªã±ãŒã·ã§ã³ãããã«ã¯ãªãã¯ããŸã ã æ°ããæ§æãäœæããŠããŸãããã¢ã»ã³ããªãæ£ããéå§ããããã«æ§æããå¿
èŠããããŸãã 以äžãèšè¿°ããŸãã
- åå = Openfire ïŒãŸãã¯éèŠã§ã¯ãªãä»»æã®ãã®ïŒã
- ãããžã§ã¯ã = openfire_src
- ã¡ã€ã³ã¯ã©ã¹ = org.jivesoftware.openfire.starter.ServerStarter
- VM åŒæ°ã® [ åŒæ° ]ã¿ãã§ã -DopenfireHome = "target / openfire"ãšèšè¿°ããŸã ã -Dã®åŸã«ã¹ããŒã¹ããªãããšã«æ³šæããŠãã ããã
- [ ã¯ã©ã¹ãã¹ ]ã¿ãã§ã[ ãŠãŒã¶ãŒãšã³ã㪠]ãéžæãã[ 詳现èšå® ]ãã¿ã³ãã¯ãªãã¯ããŸãã [ ãã©ã«ããŒã®è¿œå ]ãéžæãã openfire_src \ src \ i18n ãã©ã«ããŒãè¿œå ããŸãã ãã®åŸãåæ§ã«openfire_src \ src \ resources \ jarãã©ã«ããŒãè¿œå ããŸãã
- [ é©çš] ã[ å®è¡]ã®é ã«ã¯ãªãã¯ããŸã ã
ãã¹ãŠãæ£åžžã«å®äºãããšãOpenfireã®ããŒãžã§ã³ã瀺ãè¡ãšã管çè
ã®ã³ã³ãœãŒã«ãããŒã9090ã§ãªãã¹ã³ããŠããããšã瀺ãã¡ãã»ãŒãžãã³ã³ãœãŒã«ã«è¡šç€ºãããŸããäœæ¥ã®äž»ãªéšåã¯ãã§ã«é
ããŠãããããã³ãŒããŒã飲ãããšãã§ããŸãã ãŸãã倧åãªç¢æãã³ã³ãœãŒã«ã«è¡šç€ºãããªãã£ã人ã
ã«ç²Ÿç¥çã«åæ
ããããšãã§ããŸãã åŸè
ã«ç®ãåãã-è¡åã®é åºã泚ææ·±ã確èªããŠãã ããã å
ã«èŠåããããã«ãæ瀺ã¯æ£ç¢ºã«å®ããªããã°ãªãããäœåãªããšã¯äœãããŸããã
Openfireãã«ã¹ã¿ãã€ãºãã
ç¶ããŸãã 次ã«ãOpenfireãµãŒããŒèªäœãæ§æããå¿
èŠããããŸãã ãã©ãŠã¶ã«
localhost ïŒ9090ãšå
¥åãããšãæ§ææé ãéå§ãããŸãã ããã§ã¯ãã¹ãŠãéåžžã«ç°¡åã§ãã éçºçšã®æ§æãèšå®ããŠããã®ã§ãç¹ã«å²åŠã¯ããŸããã
- [ãµãŒããŒèšå®]ããŒãžã§ãããã©ã«ãã®ããŒãã§ãããµãŒããŒå = localhostãèšå®ããŸãã
- [ããŒã¿ããŒã¹ã®èšå®]ããŒãžã§ã[ åã蟌㿠ããŒã¿ããŒã¹]ãéžæããŸãã
- [ãããã¡ã€ã«èšå®]ããŒãžã§ã¯ããã¹ãŠãããã©ã«ãã®ãŸãŸã«ããŸãã
- [ 管çè
ã¢ã«ãŠã³ã]ããŒãžã§ãååšããªãã¡ãŒã«ããã¯ã¹ãå
¥åããŸãã ãŸãã管çè
ãã¹ã¯ãŒããå
¥åããŠèšæ¶ããŸãã
ãã®åŸ
ã管çã³ã³ãœãŒã«ãžã®ãã°ã€ã³ãéžæããèªèšŒããŒãžã«ç§»åã§ããŸãã åã«æå®ãããã¹ã¯ãŒãã§
管çè
ã¢ã«ãŠã³ãã§ãã°ã€ã³ããå¿
èŠããããŸãã åã
adminã®äžã§ãä»»æã®jabber-clientã䜿çšããŠãµãŒããŒã«æ¥ç¶ããããšãã§ããŸãã ãã¹ãŠãæ£åžžã§ããã°ããµãŒããŒãåæ¢ããŠæ¬¡ã®æé ã«é²ãããšãã§ããŸãã
ããããæžã
ããã§ãæãéèŠãªæ®µéã«å°éããŸããã 次ã«ããããã®æ©èœãå®è£
ãããã©ã°ã€ã³ãäœæããå¿
èŠããããŸãã
Openfireãã©ã°ã€ã³ã®ãã¹ãŠã®ãœãŒã¹ã¯ã
openfire_src \ src \ pluginsãã©ã«ããŒã«ãããŸãã åãã©ã°ã€ã³ã«ã¯ãå°ãªããšããã©ã°ã€ã³ã®èª¬æãå«ã
plugin.xmlãã¡ã€ã«ãšããã©ã°ã€ã³ã®ã¡ã€ã³ã¯ã©ã¹ã®èª¬æãå«ãJavaãã¡ã€ã«ãå«ãŸããåå¥ã®ãã©ã«ããŒããããŸãã 詳现ã«ã€ããŠã¯ãOpenfireã®ããã¥ã¡ã³ããåç
§ããŠãã ããïŒããšãã°ã
openfire_src \ documentation \ docs \ plugin-dev-guide.htmlãåç
§ ïŒã
æ°ãããã©ã°ã€ã³ã®ãã©ã«ããŒ
openfire_src \ src \ plugins \ simplebotãäœæããŸãã ãã®äžã§ãplugin.xmlãã¡ã€ã«ãéå§ããããã«æ¬¡ã®å
容ãæžã蟌ã¿ãŸãã
<? xml version ="1.0" encoding ="UTF-8" ? > <br><br> < plugin > <br> < class > org.jivesoftware.openfire.plugin.simplebot </ class > <br> < name > Simple Bot </ name > <br> < description > Provides simple bot functionality. </ description > <br> < author > Habrahabr </ author > <br> < version > 1.0.0 </ version > <br> < date > 18/2/2009 </ date > <br> < minServerVersion > 3.5.0 </ minServerVersion > <br> </ plugin > <br><br> <br> * This source code was highlighted with Source Code Highlighter .
次ã«ããã©ã°ã€ã³ã®ãœãŒã¹ã³ãŒããæ ŒçŽãããã©ã«ããŒãäœæããå¿
èŠããããŸãã ããæ£ç¢ºã«ã¯ãäžé£ã®ãµããã©ã«ããŒã«ãªããŸãïŒ
openfire_src \ src \ plugins \ simplebot \ src \ java \ org \ jivesoftware \ openfire \ plugin åOpenfireãã©ã°ã€ã³ã«ã¯ã¡ã€ã³ã¯ã©ã¹ãžã®åããã¹ããããããããããã¹ãŠã®ãã©ã«ããŒãæåã§äœæããã®ã§ã¯ãªããåã«MOTDãã©ã°ã€ã³ããã³ããŒããŠãããå€ãã³ã³ãã³ããåé€ããŸããã
æåŸã«è¡ãããšã¯ãããããœãŒã¹ã
openfire_src \ src \ plugins \ simplebot \ src \ java \ org \ jivesoftware \ openfire \ pluginãã©ã«ãã«é
眮ããããšã§ãã ãããè¡ãã«ã¯ã
ããã«simplebot.javaãã¡ã€ã«ãäœæãïŒå€§æåãšå°æåãéèŠã§ãïŒããœãŒã¹ã³ãŒãããã®äžã«ã³ããŒããŸãã
package org.jivesoftware.openfire.plugin;<br><br>import java.io.File;<br>import org.jivesoftware.openfire.container.Plugin;<br>import org.jivesoftware.openfire.container.PluginManager;<br>import org.jivesoftware.openfire.XMPPServer;<br>import org.jivesoftware.openfire.auth.AuthToken;<br>import org.jivesoftware.openfire.multiplex.ClientSessionConnection;<br>import org.jivesoftware.openfire.SessionManager;<br>import org.jivesoftware.openfire.SessionPacketRouter;<br>import org.jivesoftware.openfire.session.Session;<br>import org.jivesoftware.openfire.session.LocalClientSession;<br>import org.jivesoftware.openfire.interceptor.*;<br>import org.xmpp.packet.*;<br><br> // <br> // Simple Bot Plugin <br> // <br> public class simplebot implements Plugin {<br><br> private JID myJID;<br> private LocalClientSession mySession;<br> private myPacketInterceptor myInterceptor = new myPacketInterceptor();<br><br> public void initializePlugin(PluginManager manager, File pluginDirectory) {<br> System. out .println( "Starting Simple Bot Plugin" );<br> <br> myJID = new JID( "test" , XMPPServer.getInstance().getServerInfo().getXMPPDomain(), "simplebot" );<br> <br> ClientSessionConnection connection = <br> new ClientSessionConnection(XMPPServer.getInstance().getConnectionManager().getClass().getName(),<br> "localhost" , "127.0.0.1" );<br> mySession = SessionManager.getInstance().createClientSession(connection);<br> mySession.setAuthToken( new AuthToken(myJID.getNode()), myJID.getResource());<br> <br> InterceptorManager.getInstance().addInterceptor(myInterceptor);<br> } // initializePlugin <br><br> public void destroyPlugin() {<br> // Resources are no longer needed <br> InterceptorManager.getInstance().removeInterceptor(myInterceptor);<br> mySession.close();<br><br> myJID = null ;<br> mySession = null ;<br> myInterceptor = null ;<br> } // destroyPlugin <br> <br> private class myPacketInterceptor implements PacketInterceptor {<br> <br> public void interceptPacket(Packet packet,<br> Session session,<br> boolean incoming,<br> boolean processed) throws PacketRejectedException<br> {<br> // If there is an incoming message for the bot <br> if (packet instanceof Message &&<br> packet.getTo().getNode().equals(myJID.getNode()) &&<br> incoming == true &&<br> processed == true )<br> {<br> // Create the response ... <br> Message message = new Message();<br> message.setTo(packet.getFrom());<br> message.setFrom(packet.getTo());<br> message.setSubject( "" );<br> message.setBody( "Hello from Simple OpenFire Bot" );<br> <br> // ... and send it <br> SessionPacketRouter router = new SessionPacketRouter(mySession);<br> router.route(message);<br> }<br> } // interceptPacket <br> <br> } // myPacketInterceptor <br><br>} // simplebot <br><br> <br> * This source code was highlighted with Source Code Highlighter .
ããã«ãããã¯ç§ããªããšãéæããäœæ¥ã³ãŒãã®æå°éã§ããããšã«æ³šæããŠãã ããã ãã¹ãŠã®è¿œå æ©èœãšãã¹ãŠã®ãã§ãã¯ãã¹ããŒãããŸãã ãããã¯ãã¹ããŒã¿ã¹ãå€æŽããæ¹æ³ãç¥ããããŠãŒã¶ãŒãèªèšŒããæ¹æ³ãç¥ããŸããã ãããã圌ã¯ãHello from Simple OpenFire Botããšãããã¬ãŒãºã䜿çšããŠããã¹ãŠã®çä¿¡ã¡ãã»ãŒãžã«å®å®ããŠå¿çããŸãã
ãããã©ã®ããã«æ©èœããããèŠãŠã¿ãŸãããã ãã©ã°ã€ã³ã®ã¡ã€ã³ã¯ã©ã¹ã¯ãå
éšã«2ã€ã®é¢æ°ãæã€ãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
ã§ãã
- initializePlugin-èµ·åæã«ãã©ã°ã€ã³ãåæåããŸãã ããã§ã myJIDå€æ°ãåæåããŸãããã®å€æ°ã«ã¯ã test @ domain \ simplebotãšãã圢åŒã®ãããJIDãå«ãŸããŸãã localhostã§å®è¡ããå Žåãããã¯ããããtest @ localhost \ simplebotã«ãªããŸã ã 次ã«ãJIDã®æ°ããã»ãã·ã§ã³ãäœæããŸãã ãããè¡ãã«ã¯ããµãŒããŒãžã®æ¥ç¶ïŒ connection ïŒã確ç«ãããã®æ¥ç¶å
ã«ã»ãã·ã§ã³ïŒ mySession ïŒãäœæããå¿
èŠããããŸãã çµè«ãšããŠããã®ã»ãã·ã§ã³ã§ãŠãŒã¶ãŒãæ¿èªããå¿
èŠããããŸãã
- destroyPlugin-ãã©ã°ã€ã³ãç Žæ£ããããšãã«åŒã³åºãããŸãã ããã§ã¯ã以åã«ãã£ããã£ãããã¹ãŠã®ãªãœãŒã¹ããªãªãŒã¹ããŸãã
ããã«ããã©ã°ã€ã³ã®ã¡ã€ã³ã¯ã©ã¹ã«ã¯ã
PacketInterceptorã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããè£å©ã¯ã©ã¹
myPacketInterceptorãå«ãŸããŠ
ããŸãã ãã®ã¯ã©ã¹ã¯ãOpenfireãµãŒããŒãééãããã¹ãŠã®ã¡ãã»ãŒãžãã€ã³ã¿ãŒã»ããããŸãïŒãã®ããã
initializePluginå
ã§ããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ããµãã¹ã¯ã©ã€ãããŠã
InterceptorManagerã䜿çšããŠã¡ãã»ãŒãžãã€ã³ã¿ãŒã»ããããŸãïŒã ããã§ãã¡ãã»ãŒãžã衚瀺ããããšããã®ã¯ã©ã¹ã®
interceptPacketé¢æ°ãåŒã³åºãããŸãã ããšã¯ããã®é¢æ°å
ã§JIDå®ãŠã®ã¡ãã»ãŒãžãéžæãããHello from Simple OpenFire Botããšãããã¬ãŒãºã§è¿ä¿¡ããã ãã§ãã
次ã«ããã©ã°ã€ã³ããã«ãããŠããOpenfireãå®è¡ããå¿
èŠããããŸãã ãã©ã°ã€ã³ïŒããã³ä»ã®ãã¹ãŠã®ãã©ã°ã€ã³ïŒããã«ãããã«ã¯ãAntããã«ã§
ãã©ã°ã€ã³ã¿ãŒã²ãããããã«ã¯ãªãã¯ããå¿
èŠããããŸãïŒ
pluginãšæ··åããªãã§ãã ããïŒã ãã®åŸãã³ã³ãœãŒã«ã«
BUILD SUCCESSFULã衚瀺ããããŸã§åŸ
ã¡ãŸãã ããã§ãã³ã³ãœãŒã«ã§Openfireãèµ·åãããšãç¹ã«ã
ã·ã³ãã«ããããã©ã°ã€ã³ã®èµ·å ããšããç¢æã衚瀺ãããŸãã
ããŠãããã§ãã¹ãŠã®jabberã¯ã©ã€ã¢ã³ãã§ïŒ
管çè
ã¢ã«ãŠã³ãã䜿çšããŠïŒãµãŒããŒã«æ¥ç¶ãã
test @ localhostã«ã¡ãã»ãŒãžãæžã蟌ãã§ãããããã§ãã¯ã§ããããã«ãªããŸããã
次ã¯ïŒ
åè¿°ããããã«ãããã§èª¬æãããããã«ã¯æãæ§ãããªæ©èœãåãã£ãŠããŸãã çŸåšãè¿œå æ©èœãè¿œå ããŠãããããã«é¢ããäžé£ã®ã¡ã¢ãäœæããäºå®ã§ãã
ãããã«ããããžã£ããŒãããã®éçºã¯å®éã«ã¯äžèŠããããã«é£ãããªããšããèããé¡ã£ãŠããŸãã