openfire使用自定义用户表

合集下载

openfire接口说明

openfire接口说明

1.1.1.查看好友资料:1)可以查看好友的详细资料。

2)通过openfire向v5查询接口参数:好友名返回参数:好友对象接口说明:openfire向v5提供的接口中传入好友名,返回好友对象;1.1.2.发送好友邀请:1)可以向好友发送邀请,添加对方为好友,等待对方验证。

2)和openfire交互3)openfire和v5交互v5接口接口参数:好友名返回参数:两个标示(是拒绝)接口说明:openfire将被邀请的用户用户名提供给v5,返回标示并推给被邀请用户;1.1.3.接受好友邀请:1)当收到对方发送来的好友邀请时,可以接受对方的邀请,或者拒绝。

2)openfire交互3)openfire和v5交互v5接口接口参数:邀请标示(是或拒绝)返回参数:是否添加接口说明:openfire将被邀请用户选择的标示提供给v5;v5通过标示判断是否添加,返回是否添加,openfire接受到返回信息后将备注信息推给被邀请用户1.1.4.删除好友:1)将某个好友删除后,该好友不出现在联系人名单中。

2)openfire交互3)openfire和v5交互v5接口接口参数:好友名返回参数:是否删除成功1.1.5.读取好友分组:1)从平台读取好友分组,并显示分组。

接口参数:当前用户名返回参数:好友集合1.1.6.显示头像:1)显示好友头像2)openfire代理v5交互接口1.1.7.显示名称:4)显示好友名称和签名。

5)openfire代理v5交互1.1.8.读取并显示团队信息:6)从平台读取团队设置信息并显示。

7)openfire代理v5交互,v5的团队信息接口8)openfire的聊天室信息+接口参数:团队的唯一标示返回参数:团队对象1.1.9.显示团队图标:9)显示图标10)openfire代理v5交互1.1.10.读取组织机构信息:11)从平台读取组织机构信息(具有层级关系)并显示。

12)openfire代理v5交互1.1.11.显示图标:13)显示图标14)openfire代理v5交互1.1.12.显示图标:15)显示图标1.1.13.读取最近联系人:17)从平台读取最近联系人列表并显示。

openfire简介

openfire简介
– 低级(字节缓存)和高级(用户定义的消息对象和编码)的 API;
– 高度定制化线程模型(单线程/线程池)。 – 超载保护和传输流量控制
3、Openfire通信
——MINA流程
4、Openfire内部处理
• 自定义IQ处理器:处理自定义IQ包 • 自定义组件:自定义一个组件,名为 broadcast ,那么发送给子域 的消息,全部会路由 到该组件。 • 拦截器,全局拦截所有流经Openfire的 Packet包。用户拦截器拦截所有和该用户有 关的Packet包。 是Openfire扩展的主要三种方式
自定义组件 由路由表 查询得到
4、Openfire内部处理 ——Packet拦截
• 拦截管理器维护两个列表,一个是全局拦 截器列表,另一个是用户拦截器列表 • 全局拦截所有流经Openfire的Packet包。 • 用户拦截器拦截所有和该用户有关的Packet 包。
• 在所有送入和送出的包做处理前后,拦截 管理器都会拦截包做相关处理
Openfire简介
1、为什么选择Openfire?
• • • • • • 完全开源,GPL协议; 完全JAVA语言实现,不依赖任何系统平台; 基于成熟的XMPP协议; 基于可扩展的WEB控制管理界面; 基于插件的开发框架,高可扩展性; 稳定,支持上万并发用户。
2、Openfire框架
——模块图
当我们访问Plain Page, Web.xml里面配置的 Sitemesh过滤器会自动给 Plain Page装饰。这些装饰 一般都是菜单,通过定义 模板+配置文件可以实现。 为插件实现页面提供了可 能。
4、Openfire内部处理 ——Packet拦截程图
注册自定义 拦截器到拦 截管理器

openfire用户认证迁移数据库

openfire用户认证迁移数据库

OpenFire将用户认证功能迁移出来,与自己的数据库进行整合。

OpenFire即可以使用嵌入式数据库管理用户,也可以使用外部数据库,例如sqlserver,mysql等等。

原来的数据库配置:我的mysql的数据库是test,用户是root,密码是:123456在mysql中建立新的schema mydb,然后在下面建立新表CREATE TABLE`users`(`username`varchar(64)NOT NULL,`plainPassword`varchar(32)DEFAULT NULL,`encryptedPassword`varchar(255)DEFAULT NULL,`name`varchar(100)DEFAULT NULL,`email`varchar(100)DEFAULT NULL,`creationDate`char(15)NOT NULL,`modificationDate`char(15)NOT NULL,PRIMARY KEY(`username`),KEY`users_cDate_idx`(`creationDate`))ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE`myGroups`(`groupName`varchar(50)NOT NULL,`description`varchar(255)DEFAULT NULL,PRIMARY KEY(`groupName`))ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE`myGroupUsers`(`groupName`varchar(50)NOT NULL,`username`varchar(100)NOT NULL,`administrator`tinyint(4)NOT NULL,`isAdmin`char(1),PRIMARY KEY(`groupName`,`username`,`administrator`) )ENGINE=InnoDB DEFAULT CHARSET=utf8;然后修改配置文件:openfire.xml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21<?xmlversion="1.0"encoding="UTF-8"?><!--This file stores bootstrap properties needed by Openfire.Property names must be in the format:".is.blah=value"That will be stored as:<prop><name><is><blah>value</blah></is></name></prop>Most properties are stored in the Openfire database.Aproperty viewer and editor is included in the admin console.--><!--root element,all properties must be under this element--><jive><adminConsole><!--Disable either port by setting the value to-1-->22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44<port>9090</port><securePort>9091</securePort></adminConsole><locale>en</locale><!--Network settings.By default,Openfire will bind to all network interfaces.Alternatively,you can specify a specific network interfaces that the serverwill listen on.For example,127.0.0.1.This setting is generally only usefulon multi-homed servers.--><!--<network><interface></interface></network>--><connectionProvider><className>org.jivesoftware.database.DefaultConnectionProvider</cla ssName></connectionProvider><database><defaultProvider><driver>com.mysql.jdbc.Driver</driver><serverURL>jdbc:</serverURL>45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67<usernameencrypted="true">8ca2ac87b9d35f67a70eec898e4686e2893db81fa f6e68ad</username><passwordencrypted="true">8af55712effebec3964b045dc763238c3949d4bfd c273beb</password><testSQL>select1</testSQL><testBeforeUse>false</testBeforeUse><testAfterUse>false</testAfterUse><minConnections>5</minConnections><maxConnections>25</maxConnections><connectionTimeout>1.0</connectionTimeout></defaultProvider></database><setup>true</setup><!--DATABASE CONNECTION SETTINGS FOR EXTERNAL DATABASE--><jdbcProvider><driver>com.mysql.jdbc.Driver</driver><connectionString>jdbc:</connectionString></jdbcProvider><!--AUTHENTICATION AND USER INTEGRATION FOR EXTERNAL DATABASE--> <provider><auth><className>org.jivesoftware.openfire.auth.JDBCAuthProvider</classNa68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90me></auth><user><className>er.JDBCUserProvider</classNa me></user><group><className>org.jivesoftware.openfire.group.JDBCGroupProvider</class Name></group></provider><jdbcAuthProvider><passwordSQL>SELECT plainPassword FROM users WHERE username=?</passwordSQL><passwordType>plain</passwordType></jdbcAuthProvider><!--USER DATA ACCESS FROM OPENFIRE--><jdbcUserProvider><loadUserSQL>SELECT name,email FROM users WHERE9192 93 94 95 96 97 98 9910 010 110 210 310 410 510 610 710 810username=?</loadUserSQL><userCountSQL>SELECT COUNT(*)FROM users</userCountSQL><allUsersSQL>SELECT username FROM users</allUsersSQL><searchSQL>SELECT username FROM users WHERE</searchSQL><usernameField>username</usernameField><nameField>name</nameField><emailField>email</emailField></jdbcUserProvider><jdbcGroupProvider><groupCountSQL>SELECT count(*)FROM myGroups</groupCountSQL><allGroupsSQL>SELECT groupName FROM myGroups</allGroupsSQL><userGroupsSQL>SELECT groupName FROM myGroupUsers WHERE username=?</userGroupsSQL><descriptionSQL>SELECT description FROM myGroups WHERE groupName=?</descriptionSQL><loadMembersSQL>SELECT username FROM myGroupUsers WHERE groupName=?AND administrator=0</loadMembersSQL><loadAdminsSQL>SELECT username FROM myGroupUsers WHERE911 011 111 2groupName=?AND administrator=1</loadAdminsSQL> </jdbcGroupProvider><!--<jdbcProvider><driver>com.mysql.jdbc.Driver</driver><connectionString>jdbc:></jdbcProvider>--></jive>上面文件中<!--DATABASE CONNECTION SETTINGS FOR EXTERNAL DATABASE-->以下是新加的内容。

openfire开发环境配置说明

openfire开发环境配置说明

Openfire开发环境配置说明1、Mysql数据库的安装1.1、方法/步骤1.1安装:双击Setup.exe文件,开始mysql的安装。

出现下面的窗口2. 2点击Next开始下一步安装。

默认是Typical,选择Custom,因为Typical模式不允许改变安装路径,只能安装在C盘3. 3这里需要选择组件和更改文件夹位置,组件可以默认的,位置要选择Change 来改变(注意:安装mysql的路径中,不能含有中文)4. 4 点击Install开始安装5. 5安装完成,看到下面。

当然,我们选择“Skip Sign-Up”。

6. 6点击完成“Finsh”7.7现在开始配置的工作了。

点击Next继续。

选择Detailed Configuration,点Next。

8.下面这个选项是选择mysql应用类型(第一种是开发服务器,将只用尽量少的内存,第二种是普通WEB服务器,将使用中等数量内存,最后一种是这台服务器上面只跑mysql数据库,将占用全部的内存,)这里示例选择开发服务器,占用尽量少的内存,用户可根据自己的需求,选择其他选项。

9.接下来选择数据库用途,(第一种是多功能用途,将把数据库优化成很好的innodb存储类型和高效率的myisam存储类型,第二种是只用于事务处理类型,最好的优化innodb,但同时也支持myisam,最后一种是非事务处理类型,适合于简单的应用,只有不支持事务的myisam类型是被支持的。

)一般选择第一种多功能。

10.下面是选择数据存放位置,默认。

11.选择mysql允许的最大连接数,第一种是最大20个连接并发数,第二种是最大500个并发连接数,最后一种是自定义,你可以根据自己的需要选择12.下面是选择数据库监听的端口,一般默认是3306,如果改成其他端口,以后连接数据库的时候都要记住修改的端口,否则不能连接mysql数据库,比较麻烦,这里不做修改,用mysq的默认端口:3306。

Openfire安装配置

Openfire安装配置

一、环境操作系统:Windows XP SP3Web服务器:Tomcat 6.0.18.0Java Version:1.6.0_21Jvm Version:1.6.0_21-b07Openfire服务器:Openfire 3.7.0 Openfire Plugin:Fastpath Service 4.2.0Fastpath Webchat 4.0.0二、Opernfire环境安装配置1. Openfire下载目前最新版为3.7.0下载地址:/downloads/index.jsp分为两个版本,一个是包含了JRE的安装版本,另外一个是不包含JRE的版本。

也可以分别通过下面两个链接直接下载。

/downloadServlet?filename=openfire/openfire_3_7_0.exe/downloadServlet?filename=openfire/openfire_3_7_0.zip2. Openfire安装将下载的openfire_3_7_0.zip解压。

Openfire的全路径中不能有中文字符,最好主机名也是标准点的英文名称。

3. 运行Openfire服务器直接运行服务器文件。

安装目录\Openfire\bin\openfire.exe。

出现启动界面点击“Launch Admin”,或者在浏览器地址栏输入http://127.0.0.1:9000,进入Opernfire 管理控制台。

初次会进入Openfire设置界面,对Openfire进行初始设置。

3. Openfire初始设置3.1 语言选择:中文(简体)3.2 服务器设置:设置域及服务器管理端口3.3 数据库设置:有两个选项,分别是标准数据库连接和嵌入的数据库。

3.3.1 标准数据库连接,可以使用其他外部的数据库,目前支持5种外部数据库(MySQL、Oracle、Microsoft SQLServer、PostgreSQL、IBM DB2)3.3.2 嵌入的数据库,使用Openfire自带的嵌入式的数据库设置管理员账户的电子邮箱以及管理员登录管理控制台时的密码。

openfire部分类说明

openfire部分类说明
iv. PresenceUpdateHandler:通过Session设置用户状态。 v. PresenceSubscribeHandler:处理状态订阅包。
g) 管理者类:
i. RosterManager:管理Roster,每个花名册可以广播用户状态给好友。
ii. PrivacyListManager:管理PrivacyList,如果不阻止联系人就发给他状态,使用PrivacyListProvider从数据库加载隐私列表。
g) VCardManager:用户名片管理。
3. standard modules:
a) IQHandler:全部被交给。IQBindHandler:处理绑定资源请求;IQSessionEstablishmentHandler:绑定资源后激活会话;IQAuthHandler:处理登录请求;IQPingHandler:处理ping请求;IQPrivateHandler:处理隐私请求;IQPrivacyHandler:处理私有列表请求;IQRegisterHandler:处理注册请求;IQRosterHandler:处理花名册请求;IQTimeHandler:处理时间请求。IQvCardHandler:处理名片请求;IQVersionHandler:处理版本请求;IQLastActivityHandler:处理最近活动请求;IQOfflineMessagesHandler:处理获取离线留言请求;IQPEPHandler:处理公共订阅请求;IQPEPOwnerHandler;IQSharedGroupHandler:处理共享组请求;AdHocCommandHandler:处理命令请求;IQDiscoInfoHandler;IQDiscoItemsHandler。

OpenFire 插件开发基础教程

OpenFire 插件开发基础教程

O p e n F i r e插件开发基础教程Openfire是一款优秀的XMPP服务器,而且是开放源码的.大家可以根据自己的需求进行二次开发。

二次开发主要有两种方式:1.修改源代码,2开发openfire插件。

从可扩展性上考虑,自然是开发插件是上策,只有插件无法实现时候才会选择修改源代码。

下面就个人经验,说明一下如何开发openfire插件一、环境基础要有一个配置好的openfire开发环境,这个网络上有比较详细的教程了。

比如和《行》,这时候ant应该是可以正常运行的,先执行openfire 【default】,就生成了openfire的目标代码,再执行plugins,就个生成所以系统自带的插件。

二、目录拷贝打开workspace\openfire_src\src\plugins目录,找一个要修改的插件,我选的是subscription,拷贝生成“subscriptionUF”。

打开src目录,里面有两个文件夹,java就是我们要改的源码,而web里面是修改这个插件所要用的web 配置页面,目前用不到,直接删除。

三、修改这个一个xml文件,里面的内容就按照自己的样子更改吧。

最关键是确定<class>,插件所在的类名,既然没有web文件夹了adminconsole也全部注释掉吧.四、修改类和类目录修改src/java里面的目录层次,Class和src/java中的路径必须一致。

五、引入openfire项目右击openfire项目,选择New->Source Folder,在Floder name中选择到刚刚新增的插件目录,注意要选到src/java这一层六、修改类文件SubscriptionPluginUF是完全copy SubscriptionPlugin的,因此有两个类名不符的error修改一下.至此,整个openfire已经把我们新加的SubscriptionPluginUF包含在他的plugins中了,通过控制台也能看到一个仿冒的SubscriptionPluginUF插件七、单独编译插件如果每次都运行plugins,生成所有插件的同时生成我们修改的插件,固然可行,就是慢了一点,插件有什么错误也要找半天。

Openfire注册流程代码分析

Openfire注册流程代码分析

Openfire注册流程代码分析经过主机连接消息确认后,共发送俩条XML完成注册过程。

·<iq id="i82YJ-304" to="lonely" type="get"><query xmlns="jabber:iq:register"></query></iq>告诉服务器注册从那个地址发出,返回如下:<iq type="result" id="i82YJ-304" from="lonely"><query xmlns="jabber:iq:register"><username/><password/><email/><name/><x xmlns="jabber:x:data" type="form"><title>XMPP Client Registration</title><instructions>Please provide the following information</instructions><field var="FORM_TYPE" type="hidden"><value>jabber:iq:register</value></field><field label="Username" var="username" type="text-single"><required/></field><field label="Full name" var="name" type="text-single"/><field label="Email" var="email" type="text-single"/><field label="Password" var="password" type="text-private"><required/></field></x></query></iq>·<iq id="i82YJ-305" to="lonely" type="set"><query xmlns="jabber:iq:register"><username>a1</username><email></email><name></name><password>a</password></query></iq>实施注册,返回如下:<iq type="result" id="i82YJ-305" from="lonely" to="lonely/5a5c59a7"/>·服务器消息接收处理类ClientConnectHandler/ConnectionHandler消息接收方法:messageReceived(),当客户端把第三条XML发送到客户端时,进入到ConnectionHandler类的messageReceived方法执行以下详细操作。

openfire源代码研究

openfire源代码研究

Openfire源码研究Openfire源码目录结构1.build目录:build目录下收录的是生成安装文件(例如:rpm)所要的一些文件,例如JRE等。

2.resources目录:resources目录下收录的是一些为实现国际化(i18n)和本地化的一些编码文件(例如:英文,中文,法文,德文等)。

3.documentation目录:documentation目录下收录的是一些关于Openfire安装和配置的信息,但最终要的是这里有Openfire开发的Javadoc。

4.src目录:顾名思义这个src文件夹就是我们想要的Openfire源代码了,这下面又有许多文件夹,我们只要Java文件夹就好,这里面实现的Openfire的核心功能,通过它就可以调试Openfire了。

命名规则Openfire中常见的类名后缀命名包括Starter、Plugin、Listener、Dispatcher、Handler、Manager、Provider,通常情况下,这些命名类包括如下意义:XXStarter系统启动类,如org.jivesoftware.openfire.starter.ServerStarter,调用其start()方法可启动系统应用。

XXListener业务的最终处理类。

XXDispatcher调度类,其中有很多关键方法,如addListener(),以组合的方式,为类内定义的静态Set<XXListener>实例添加XXListener对象。

以便调用dispatchEvent(String property, EventType eventType, Map<String, Object> params)方法遍历处理Set集中的XXListener对象(通过调用XXListener对象的各实际方法完成实际业务)。

XXPlugin实现Plugin接口的插件类,需实现initializePlugin(PluginManager manager, File pluginDirectory)方法和destroyPlugin()方法。

Openfire_spark_安装手册

Openfire_spark_安装手册

Openfire+Spark安装手册王保政QQ:29803446Msn:baozhengw999@关键字:快速开发平台openjweb 增删改查即时通信2009-8-29目录第一章JA VA领域的IM解决方案 (3)第二章安装OPENFIRE3.6.4 (3)2.1配置机器的域名 (3)2.2安装OPENFIRE (3)2.2.1 安装 (3)2.2.2 运行数据库脚本 (4)2.2.3 数据库驱动jar包 (6)2.2.4 openfire初始化配置 (6)2.3设置用户 (12)第三章安装SPARK客户端 (13)第四章配置MSN网关 (15)4.1服务端配置MSN网关 (15)第五章RED5视频配置 (18)5.1部署RED5.WAR (18)5.2 SPARK客户端配置视频插件 (19)第六章使用SMACK开发即时通信功能 (22)第一章Java领域的IM解决方案Java领域的即时通信的解决方案可以考虑openfire+spark+smack。

当然也有其他的选择。

Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用3.6.4版本,这个版本是当前最新的版本,而且网上可以找到下载的源代码。

即时通信客户端可使用spark2.5.8,这个版本是目前最新的release版本,经过测试发现上一版本在视频支持,msn网关支持上可能有问题,所以选择openfire3.6.4+spark2.5.8是最合适的选择。

Smack是即时通信客户端编程库,目前我已测通通过jsp使用smack的API向openfire 注册用户发送消息,并且可以通过监听器获得此用户的应答消息。

通过smack向msn用户和QQ用户,gtalk用户发送消息应该也可以实现,关于向gtalk 用户发送消息的例子较多。

这个留待以后研究。

至少目前可以通过程序向spark发消息了。

对于局域网内部应用足以解决系统与用户交互的问题,甚至可以做自动应答机器人。

openfire中数据库表定义

openfire中数据库表定义

Description 好友ID (主键) 用户名 用户jid 好友订阅关系,both,none,from,to等 等 好友添加,删除之类的请求字段 标志指示的入口是一个名单的请求 别名,自定义备注
om (Groupchat room data) Length n/a 15 15 50 255 255
NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER VARCHAR NUMBER NUMBER VARCHAR NUMBER ofVCard (名片)
Column Name username vcard
Type VARCHAR TEXT
关于ofVcard,每个人对应有一个ofcard的记录,每个记录都是一个名片入口点, ,别名,手机号,住址,邮箱,个性签名,地址位置等等信息,该信息都是用户定义的上传xml 没有对应的表格,因为都是动态数据,可以客户端生成,openfire会做相应地处理并保存,数据 也可以把这一款数据全部拿出来用http自己保存.
Column Name groupName description VARCHAR Vmn Name groupName username administrator
ofGroupUser (组成员) Type VARCHAR VARCHAR NUMBER ofPresence (离线邮件存储) Type VARCHAR TEXT CHAR ofUser (User data) Type VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR ofRoster (buddy rosters or lists) Type NUMBER VARCHAR TEXT NUMBER NUMBER NUMBER VARCHAR ofMucRoom (Groupchat room data) Type NUMBER VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR

即时聊天

即时聊天

即时聊天框架实现调查Openfire+jabber客户端配置openFire服务器到openfire官网下载源码或exe安装程序,此处选择不带jre安装版本。

官网下载地址/downloads/index.jsp解压缩找到openfire\bin\openfire.exe运行出现,此处乱码为设置字符简体中文后原因,点击launch Admin或http://127.0.0.1:9090进行初始设置.第一步选择语言第二步选择域、服务器管理控制端口第三步数据库设置,此处选择标准连接--外部数据库(导入所需要的连接外部数据库lib包,如本次连接oracle导入ojdbc14.jar到openfire\lib)第四部配置数据库驱动、url、用户名密码等第五步填写管理员密码(账号默认为admin)配置完成重启服务器登陆,首次进入页面显示为此处登陆我们使用的是openfire自建的表ofuser中数据,但是我们需要关联整合本地的用户,需要在表ofproperty中做配置或者直接使用页面服务器管理器→系统属性中添加OFPROPERTY属性修改新增下列几项属性NAME,propValue'admin.authorizedJIDs','admin@liuxin''jdbcAuthProvider.passwordSQL','select password from tu_userinfo where account=?' 'jdbcProvider.connectionString','jdbc:oracle:thin:fnchl/fnchl@172.16.16.164:1521:orcl ''jdbcProvider.driver','oracle.jdbc.driver.OracleDriver'admin.authorizedJIDs:”admin@安装时候你填写的域”中的 admin是必须要在你需要整合的数据库用户表中存在的用户。

openfire开发文档

openfire开发文档

Openfire开发文档修订记录目录1OPENFIRE项目工程搭建及调试 (1)1.1准备工作 (1)1.2解压源码 (1)1.3创建工程 (2)1.4编译 (3)1.5配置调试与运行环境 (5)1.6打包发布 (10)2OPENFIRE代码框架介绍 (10)2.1框架 (11)2.1.1Module (11)2.1.2数据流 (13)2.2O PENFIRE与MIMA (13)2.3M ULTI-U SER-C HAT (14)2.3.1MUCUser (14)2.3.2MUCRole (15)2.3.3MUCRoom (15)2.3.4MultiUserChatServiceImpl (15)2.3.5时序图 (16)2.4P UB-S UB (16)2.4.1Node (16)2.4.2NodeAffiliate (17)2.4.3NodeSubscription (17)2.4.4PubSubModule (17)2.4.5PubSubEngine (18)2.4.6时序图 (18)2.5插件开发 (19)2.5.1注册为组件 (19)2.5.2注册为拦截器 (19)2.5.3注册为IQHandler (20)2.6命名规则 (21)2.6.1XXStarter (21)2.6.2XXListener (21)2.6.3XXDispatcher (21)2.6.4XXPlugin (21)2.6.5XXProvider (21)2.6.6XXHandler (22)2.7系统配置项 (22)2.8系统启动流程 (23)2.9网络处理 (23)2.9.1presence(出席状态)消息处理流程 (23)2.9.2消息监听服务 (25)2.9.3消息封装 (26)2.9.4Openfire消息包接受处理流程 (27)2.10数据库处理 (28)2.10.1Openfire连接数据库修改 (28)2.10.2ConnectionProvider (28)2.10.3处理方式 (28)2.10.4常用类 (28)3OPENFIRE插件开发流程 (29)3.1O PENFIRE P LUGINS加载流程 (29)3.2开发说明 (29)3.2.1总体插件目录结构 (30)3.2.2编写Plugin.xml (30)3.2.3继承Plugin接口 (33)3.2.4插件开发的最优方法 (34)3.2.5JSP页面配置步骤 (34)3.2.6i18n国际化配置 (37)3.2.7Ant build 插件 (38)4OPENFIRE 的CACHE机制 (39)4.1实现机制 (39)1Openfire项目工程搭建及调试Openfire的最新源码3.7.1下源码的运行及打包1.1 准备工作开发工具:Eclipse源码下载:官网地址/downloads/source.jsp,当前最新版本为3.7.1。

rooyee+openfire

rooyee+openfire

用Openfire架设自己的即时聊天服务器(一)----客户端是rooyee的配置说明/html/wendangzhongxin/2009/0324/18.htmlopenfire的安装方法很多一、安装环境操作系统:Windows XP Prefessional SP2服务器软件:Openfire 3.4.2Openfire Enterprise 3.4.2客户端软件:rooyee 2.0二、安装Jabber服务器软件1.软件下载Jabber官网地址:/常用Jabber服务器软件:/software/servers.shtml本文以Openfire(Wildfire)为服务器,一款基于GPL协议开源软件,支持各种操作系统,软件需要java环境支持,不过软件本身自带了环境包,你可以根据你的需要下载不同的版本。

下载地址:/downloads/index.jsp#openfireWindows无java环境版本地址:/downloadServlet?filename=openfire/openfire_3_4_2.zi p最新版本:Openfire 3.4.22.Windows版本安装将openfire_3_2_2.zip解压缩到D:\。

特别要注意,openfire的全路径中不能有中文字符,最好主机名也是标准点的英文名称。

直接运行安装文件,D:\Openfire\bin\openfire.exe3.Openfire服务器配置浏览器地址栏中输入http://localhost:9090/即可开始即时通讯服务器配置。

(1)语言选择:中文简体(2)服务器设置:选择域及端口,建议默认(3)数据库设置:选“标准数据库”(4)标准数据库设置:将oracle驱动放在openfire的lib目录下。

在数据库驱动选项栏选择Oracle。

数据库URL填入你的数据库地址,端口和数据库名称,以及用户名和密码(需要在安装前创建),最大连接数,最小连接数和连接超时时间可自行调整。

openfire_plugin开发流程

openfire_plugin开发流程

Openfire插件开发流程1.插件结构:testplugin/|- plugin.xml <-配置文件|- readme.html <-用户说明|- changelog.html <-更新日志|- icon_small.gif <-小图标|- icon_large.gif <-大图标|- src/<-存放编译的类文件夹|- database/<-存放数据库改动|- i18n/<-国际化|- lib/<-插件所需要的类库|- web <-显式调用插件时需要的Web页面|- WEB-INF/|- web.xml <-Web配置|- web-custom.xml <-Web配置|- images/2.加入插件目录文件:在eclipse的openfire项目文件夹openfire_src\src\plugins下手动新建一个插件文件夹,定义名为testplugin,进入文件夹根据需要新建以上文件夹或文件,其中web、i18n、icon、database 都不是必须的,可以只创建src文件夹和plugin.xml文件。

在建立的src文件夹下依次创建文件夹java,org,jivesoftware,openfire,plugin,形成src\plugins\testplugin\src\java\org\jivesoftware\openfire\plugin的目录结构。

在最底层,即plugin文件夹下建立java类,起名为TestPlugin.java。

修改建立好的plugin.xml :<?xml version="1.0" encoding="UTF-8"?><plugin><!—插件主类,必须要的 --><class>org.jivesoftware.openfire.plugin.TestPlugin</class><!—插件信息 --><!—插件名称 --><name>Plugin</name><!—插件描述信息 --><description>Test Plugin</description><!—插件作者 --><author>Aaron</author><!—插件版本 --><version>1.0.0</version><!—插件日期,必须格式为MM/dd/yyyy --><date>12/24/2007</date><!—插件需要的openfire最小版本 --><minServerVersion>3.4.1</minServerVersion><!—插件许可类型--><licenseType>gpl</licenseType><!—Web界面需要配置,没有界面则保留<adminconsole>空标签即可 --><adminconsole><tab id="mytab"name="Example"url="my-plugin-admin.jsp"description="Click to manage..."><sidebar id="mysidebar"name="My Plugin"><item id="my-plugin"name="My Plugin Admin"url="my-plugin-admin.jsp"description="Click to administer settings for my plugin"/> </sidebar></tab></adminconsole></plugin>保存退出。

Openfire表结构

Openfire表结构
Column Name
Type
Length
Description
subdomain
NVARCHAR
255
Subdomain of the external component (Primary Key)
Wildcard
INT
n/a
Secret
NVARCHAR
255
Shared secret key of the external component
ofGroup (user Group data)
Column Name
Type
Length
Description
groupName
NVARCHAR
50
Group Name (Primary Key)
description
NVARCHAR
255
Group Description
ofGroupProp (name-value associations for a Group)
Type
Length
Description
xmppDomain
NVARCHAR
255
Domain of the external component (Primary Key)
remotePort
INT
n/a
Port of the remote server to connect to
permission
ofProperty (server properties)
Column Name
Type
Length
Description
name
NVARCHAR
100

openfire用户以及群组关系移植

openfire用户以及群组关系移植

openfire用户以及群组关系移植openfire用户以及群组关系移植修改openfire的配置有两种途径:1:修改安装目录/conf/openfire.xml。

2:直接修改openfire数据库的ofProperty表。

但是一般都建议修改openfire.xml文件,该文件如果配置正确,openfire重启后会自动将该文件里的属性值写入ofProperty表,同时会擦除自己添加的配置,只剩标签(除了默认配置)。

如图:对应ofProperty表配置:官网提供的说明,自己在进行移植的时候有几点需要注意(以下都在openfire.xml里面配置)1:官网提供的关于自己用户以及群所在的数据库配置:里面的用户名和密码之间要加入&不能忘记,同时配置成功后,在ofProperty表里面会还原成&,不要在表里面修改为& 2:官网提供的关于用户登陆的配置以及admin的配置:注意点:这个时候网页登陆的用户已经不再是openfire自带的ofUser表里面的用户,而是user_account表的用户,该表就是自己的用户表,这里注意一点:不要在select password后面再添加字段。

3:官网提供的用户配置:注意点:select后面的字段不要随意添加,比如<loadUserSQL>SELECT name,email FROM myUser WHERE user name=?</loadUserSQL>我测试的时候去掉email,只查询name,结果用户总是无法登陆网页,查看了op源码在JDBCUserProvider类里有下面这一段:代码走到20行的时候报错,因为查询sql不包括email,结果集里面并无email字段,所以rs.getString(2)的时候出错了。

所以根据经验不要轻易增减select后面的字段,如果没有select 后面的字段,只有两种办法一个是修改op源码,一个是修改自己的业务表,增加op查询时候需要的字段。

Openfire整合自有用户系统

Openfire整合自有用户系统

Openfire整合自有用户系统写在前面:openfire的群我们自己实现了持久化的群,所以本文不考虑群方面的用户操作。

本人使用Mysql作为openfire的数据库,自有系统的用户库也是Mysql。

需要将openfire的用户全部走自己的业务系统进行授权和验证,所以需要在openfire中进行自有用户数据库的整合。

Let's go ------------------------------------------------针对用户的验证:openfire提供的默认的处理类是DefaultAuthProvider,需要使用自己的处理类那么就需要修改为JDBCAuthProvider。

需要修改些自己需要验证的配置:它在控制台会hidden很多比较敏感的配置,具体请参照:不需要修改openfire任何代码,只需要做到这里,基本上就完成了自有数据库验证的整合。

重启登录,你会发现admin帐号无法登陆,请确认admin账户在自有数据库是否存在,并且密码加密方式是否正确。

一切OK后admin console可以登录。

用spark客户端测试登录正常。

----------------------------------------------------------------------------------针对用户的检索:openfire提供的默认处理类是DefaultUserProvider,需要使用自己的处理类,不然的话在用户检索那里会发现查询出来的目的库还是openfire自由的数据库用户表ofUser,修改为JDBCUserProvider。

添加一部分需要自己配置的属性:保存重启,点击用户/组,等啊等,等好久打不开,为什么?查看源代码发现JDBCUserProvider有个地方有问题,查询出了所有的用户,显然和DefaultUserProvider不一样。

查看了3.7.1和3.8.1的源代码,这一块都是没有解决的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1配置demo
1、登录到openfire后台管理系统,点开服务器管理器中的系统属性,如下图:
2、在这里可以进行openfire系统属性的配置与修改,而这个页面配置的内容保存在openfire数据库中ofproperty表中,可以打开看一下
里面的配置后续会解释,是一些openfire的系统设置。

3、现在的需要的是使用userID登陆
在openfire源码中找到org.jivesoftware.openfire.auth.JDBCAuthProvider,在文件中一开始,我们可以看到:
大概意思就是把provider.auth.className修改为 org.jivesoftware.openfire.auth.JDBCAuthProvider之后登陆验证就走JDBCAuthProvider的代码,下面还有一些需要配置的参数,规则都有了,进行配置吧。

3、根据自己的需要,配置如下:
配置完了后,重启openfire,可以登陆(数据库密码是明文的,不是加密过的,加密过得密码验证以后说),但是openfire后台管理系统登陆不进去解决办法:查看ofproperty表中name字段为admin.authorizedJIDs的peopValue字段值,格式应为username@‘域名’,其中username应为表中存
在的数据,域名为name字段为xmpp.domain的peopValue字段值,ok现在通过spark与后台管理都可以登陆成功了
2脚本例子
以下是聊天服务器配置脚本,在数据库openfire实例下运行此脚本即可完成自定义用户表配置。

-- 更改登录验证方式,用JDBC配置的用户表验证,如果无法insert就update原来的provider.auth.className
insert into OFPROPERTY (NAME, PROPVALUE) values
( 'provider.auth.className','org.jivesoftware.openfire.auth.JDBCAuthProvider');
-- 更改用户查询方式,用JDBC配置的用户表作为聊天服务器用户表,如果无法insert就update原来的er.className insert into OFPROPERTY (NAME, PROPVALUE) values
( 'er.className','er.JDBCUserProvider');
-- 设置JDBC连接方式
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcProvider.driver', 'com.mysql.jdbc.Driver');
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcProvider.connectionString',
'jdbc:mysql://192.168.2.18:3306/openfire?user=root&password=root');
-- 自定义用户认证
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcAuthProvider.passwordSQL', 'select password from mon_user where id = ? ');
-- 用户表密码加密方式
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcAuthProvider.passwordType', 'md5');
-- 设置管理员账号
insert into OFPROPERTY (NAME, PROPVALUE) values ('admin.authorizedJIDs', '2595@192.168.2.18');-- 用户名@域
-- 自定义用户管理
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcUserProvider.allUsersSQL', 'select id from
mon_user ');
insert into OFPROPERTY (NAME, PROPVALUE) values('jdbcUserProvider.loadUserSQL', 'select nick_name as name,email from mon_user where id = ? ');
insert into OFPROPERTY (NAME, PROPVALUE) values ('erCountSQL', 'select count(*) from mon_user ');
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcUserProvider.searchSQL', 'select id from
mon_user where ');
-- 用户的主键作为登录聊天系统的用户名
insert into OFPROPERTY (NAME, PROPVALUE) values ('ernameField', 'id');
-- 后台【用户摘要】显示的名称字段
insert into OFPROPERTY (NAME, PROPVALUE) values ('Field', 'name');
-- 后台【用户摘要】显示的邮箱字段
insert into OFPROPERTY (NAME, PROPVALUE) values ('jdbcUserProvider.emailField', 'email');
-- 聊天服务器的域,设置为服务器IP即可
insert into OFPROPERTY (NAME, PROPVALUE) values ('xmpp.domain', '192.168.2.18');。

相关文档
最新文档