微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

openfire + sqlserver ,以及现有系统的账户集成

我要说的重点就是


1、安装完成之后,openfire的控制台不需要进行任何配置,下面所有的配置可以通过数据库脚本直接搞定。

2、那个conf文件夹里面,也不需要进行任何修改


总的来讲,如果你要集成现有账户:

只需要修改ofProperty这个表就行了,配置方面不用作其他修改!!!


ONLY DATABASE!!!

ONLY DATABASE!!!

ONLY DATABASE!!!    重要的事情说3遍!!


然后,我的操作视频在:http://v.youku.com/v_show/id_XMTg1NDgzNzc3Mg==.html


话不多说,直接拿源代码去吧。记得修改你自己的。


-- ///////////////////////////	先停止OpenFire服务器   /////////////////////////////////////////////
BEGIN TRANSACTION
USE [JetopenFire_D]
GO

--  首先修改三个属性(openfire提供了支持JDBC相关的Provider,可以从其它的数据源获取用户/组数据):
UPDATE ofProperty SET propValue='org.jivesoftware.openfire.auth.JDBCAuthProvider' WHERE name='provider.auth.className';
UPDATE ofProperty SET propValue='org.jivesoftware.openfire.group.JDBCGroupProvider' WHERE name='provider.group.className';
UPDATE ofProperty SET propValue='org.jivesoftware.openfire.user.JDBCUserProvider' WHERE name='provider.user.className';

--接着配置数据源添加系统属性,这里使用的是sql server数据库):
INSERT INTO ofProperty VALUES ('jdbcProvider.driver','net.sourceforge.jtds.jdbc.Driver')
	DELETE ofProperty WHERE name='jdbcProvider.connectionString'
INSERT INTO ofProperty VALUES ('jdbcProvider.connectionString','jdbc:jtds:sqlserver://192.168.1.27:1433/JetCommon_D;user=sa;password=jetmaster;instance=sql2008')


-- //////////////////////////// 

--=== 三个Auth Provider ===--
--/////////////////////////////////先删除ofProperty的相关条目////////////////////////////
DELETE ofProperty WHERE name ='jdbcAuthProvider.passwordsql'
DELETE ofProperty WHERE name ='jdbcAuthProvider.passwordType'
DELETE ofProperty WHERE name ='admin.authorizedJIDs'

--JDBCUserProvider 
DELETE ofProperty WHERE name ='jdbcUserProvider.allUseRSSQL'
DELETE ofProperty WHERE name ='jdbcUserProvider.loadUsersql'
DELETE ofProperty WHERE name ='jdbcUserProvider.userCountsql'
DELETE ofProperty WHERE name ='jdbcUserProvider.searchsql'
DELETE ofProperty WHERE name ='jdbcUserProvider.usernameField'
DELETE ofProperty WHERE name ='jdbcUserProvider.nameField'
DELETE ofProperty WHERE name ='jdbcUserProvider.emailField'

--JDBCGroupProvider
DELETE ofProperty WHERE name ='jdbcGroupProvider.allGroupssql'
DELETE ofProperty WHERE name ='jdbcGroupProvider.descriptionsql'
DELETE ofProperty WHERE name ='jdbcGroupProvider.groupCountsql'
 
DELETE ofProperty WHERE name ='jdbcGroupProvider.loadAdminssql'
DELETE ofProperty WHERE name ='jdbcGroupProvider.loadMembeRSSQL'
DELETE ofProperty WHERE name ='jdbcGroupProvider.userGroupssql'


--/////////////////////////////////再插入更改的新条目////////////////////////////
--JDBCAuthProvider 
INSERT INTO ofProperty VALUES ('jdbcAuthProvider.passwordsql','SELECT Password FROM UserAccount WHERE ObjectName=?')
INSERT INTO ofProperty VALUES ('jdbcAuthProvider.passwordType','plain')

--JDBC User Provider 
INSERT INTO ofProperty VALUES ('jdbcUserProvider.allUseRSSQL','SELECT ObjectName FROM UserAccount')
INSERT INTO ofProperty VALUES ('jdbcUserProvider.loadUsersql','SELECT ObjectName,ObjectName FROM UserAccount WHERE ObjectName=?')
INSERT INTO ofProperty VALUES ('jdbcUserProvider.userCountsql','SELECT COUNT(*) FROM UserAccount')
INSERT INTO ofProperty VALUES ('jdbcUserProvider.searchsql','SELECT ObjectName FROM UserAccount WHERE')
INSERT INTO ofProperty VALUES ('jdbcUserProvider.usernameField','ObjectName')
INSERT INTO ofProperty VALUES ('jdbcUserProvider.nameField','ObjectName')
INSERT INTO ofProperty VALUES ('jdbcUserProvider.emailField','ObjectName')

--JDBC Group Provider
INSERT INTO ofProperty VALUES ('jdbcGroupProvider.allGroupssql','SELECT GroupName FROM EmpGroups')
INSERT INTO ofProperty VALUES ('jdbcGroupProvider.descriptionsql','SELECT [description] FROM EmpGroups WHERE GroupName=?')
INSERT INTO ofProperty VALUES ('jdbcGroupProvider.groupCountsql','SELECT COUNT(*) FROM EmpGroups')
 
INSERT INTO ofProperty VALUES ('jdbcGroupProvider.loadAdminssql','SELECT ObjectName FROM GroupUsers WHERE GroupName=? AND admin=1')
INSERT INTO ofProperty VALUES ('jdbcGroupProvider.loadMembeRSSQL','SELECT ObjectName FROM GroupUsers WHERE GroupName=? AND admin=0')
INSERT INTO ofProperty VALUES ('jdbcGroupProvider.userGroupssql','SELECT GroupName from GroupUsers WHERE ObjectName=?')

 
-- 插入控制台管理员账户
-- 
-- 这里要注意,是 【服务器名称】,是在管理界面看到的那个服务器名称
-- 不是admin@127.0.0.1,不是admin@localhost,不是admin@local
-- 应该就是你先安装的时候填写的服务器名称,具体可以在服务器设置里面看到。
INSERT INTO ofProperty VALUES ('admin.authorizedJIDs','admin@192.168.1.27')


--//////////////////////////////////////对现有系统的表进行修改//////////////////////////////////////////////

USE [JetCommon_D]
GO

--增加一个EmpGroups表.表示人员组
CREATE TABLE EmpGroups (
	GroupName NVARCHAR(50) PRIMARY KEY NOT NULL,[description] NVARCHAR(255),);

--再增加一个GroupUsers表,把管理员添加进来.
CREATE TABLE GroupUsers (
	GroupName NVARCHAR(50) NOT NULL,[ObjectName] NVARCHAR(100) NOT NULL,[admin] int
);

-- 插入一个管理员用户,其实在系统初始化的时候,这个admin管理员就可能已经增加进去了.
-- 系统里面应该有一个认部门(就是系统的根部门,ID=1)
--
--    这一步你要做,我注释掉是因为我现有数据库里面已经有了这个admin的账户了。
--
-- INSERT INTO [JetCommon_D].[dbo].[Employee]
--            ([DeptId]
--,[EmployeeNO]
--,[ObjectName]
--,[StatusId]
--,[PostId]
--,[PostRank]
--,[Sex]
--,[JoinTime]
--,[EmployeeType]
--,[ManageEmployeeGroupId]
--,[IsSync]
--,[SortIndex])
--      VALUES
--            (1
--,'admin'
--,'系统管理员'
--,1
--,0
--,'2016-08-31'
--,0)
-- GO
-- INSERT INTO [JetCommon_D].[dbo].[UserAccount]
--            ([EmployeeId]
--,[Password]
--,[LastLogin]
--,[LastChangePassword])
--      VALUES
--            ((SELECT Id FROM [JetCommon_D].[dbo].Employee WHERE EmployeeNO='admin')
--,'888888'
--,GETDATE()
--,GETDATE()
--            )
-- GO

--插入一个管理组并将admin加入到管理组
INSERT INTO EmpGroups VALUES ('admin','administrators')
INSERT INTO GroupUsers VALUES ('admin','admin',1);

COMMIT TRANSACTION
--////////////////////////////////////////自动OpenFire服务器/////////////////////////////////////////

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐