使用OpenSER构建电话通信系统——第六章(1)


注:以下文章如需转载,请注明所属作者,转载地址,谢谢!


第六章:使用SerMyAdmin构建用户入口

在上一章中,我们用MySQL数据库实现了认证。现在,我们将需要一个工具来帮助用户和管理员们。显然,这个工具必须要比openserctl容易操作。手动对成百上千的用户进行管理是很困难的,所以用户预置工具在其过程中就变得相当重要。在这一章中,将看到SerMyAdmin工具是如何来被创建来帮助构建用户和管理员入口的。

本章末,你将能够:

l         知道为什么需要一个用户入口进行管理

l         安装SerMyAdmin和它的依赖

l         配置诸如管理者和用户访问的资源

l         添加和删除域

l         用你公司的颜色和logo来定制入口

SerMyAdmin

这段材料本来是写给SerWebSerWeb原本是为SER项目开发的。不幸的是,SerWeb和最新版本的OpenSER不兼容。我们没有选择SerWeb的另外一个重要的原因是它被认为有漏洞。OpenSER的一些网页接口缺少很多选项。其中我们曾发现的一种工具是OpenSER administrator。这个工具正在使用”Ruby on Rails”开发。似乎这是一个非常好的OpenSER服务器管理工具,但是它却不允许与SerWeb相同的方式来提供用户接口,并且其缺少多域(multi-domain)支持。OpenSER administrator能够在http://sourceforge.net/projects/openseradmin找到。

既然构建OpenSER入口的工具找不到,那么我们决定使用JAVA建造我们自己的工具,命名为SerMyAdmin。我们现在已经准备好使用这样的工具来构建本书。它是按照GPLv2授权的在Grails上开发(Groovy on rails)。可以在http://sourceforge.net/projects/sermyadmin上下载。

你这儿看到的是一套独立的工具。在我们的轨迹路线中,我们打算将SerMyAdmin整合进行Liferay入口。使用类似Liferay之类的内容管理系统将使你构建入口的工作更加容易。

SerMyAdmin项目可以在sermyadmin.sourceforge.net上找到。它的想法是改进OpenSER数据库的管理。SerMyAdminGPLv2下许可。


实验——安装SerMyAdminLab——Installing SerMyAdmin

SerMyAdmin使用Grails框架,所以它需要一个应用服务器。你可以自行进行选择,如IBM WebSphereJBossJettyTomcat等等。在这本书中,我们使用Apache Tomcat,因为它是免费的容易安装。因为我们要使用到一些Java1.5的特性,我们需要SunJava JDK,而不是免费的可供选择的GCJ

步骤1:为SerMyAdmin创建管理者:

mysql –u root

use openser

INSERT INTO 'subscriber' ( 'id' , 'username' , 'domain' , 'password'

, 'first_name' , 'last_name' , 'email_address' , 'datetime_created' ,

'ha1' , 'ha1b' , 'timezone' , 'rpid' , 'version' , 'password_hash' ,

'auth_username' , 'class' , 'domain_id' , 'role_id' )

VALUES (

NULL , 'admin', 'openser.org', 'senha', 'Admin', 'Admin', 'admin@

openser.org', '0000-00-00 00:00:00', '1', '1', '1', '1', '1', NULL ,

'admin@openser.org', NULL , '1', '3'

);

步骤2:下一步我们要做的是更新我们的源列表以使用contrib仓库和non-free包。我们的/etc/apt/sources.list文件应该看起来是下面这个样子:

# /etc/apt/souces.list

deb http://ftp.br.debian.org/debian/ etch main contrib non-free

deb-src http://ftp.br.debian.org/debian/ etch main contrib non-free

deb http://security.debian.org/ etch/updates main contrib non-free

deb-src http://security.debian.org/ etch/updates main contrib non-free

/etc/apt/sources.list

注意到我们只是在我们的仓库定义后面添加了关键字contribnon-free

步骤3:使用下面的命令来更新包列表。

openser:~# apt-get update

步骤4:运行下面的命令安装Sun’s Java1.5

openser:~# apt-get install sun-java5-jdk

步骤5:确认你正在使用Sun’s Java。请运行下面的命令以告诉Debian你想要使用Sun’s Java作为你的默认的Java应用。

openser:~# update-java-alternatives -s java- 1.5.0 -sun

步骤6:到目前为止,如果每一步都顺利完成,那么你应该运行下面的命令以得到一个类似下面的输出。

openser:~# java -version

java version " 1.5.0 _14"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0 _14-b03)

Java HotSpot(TM) Client VM (build 1.5.0 _14-b03, mixed mode, sharing)

步骤7:安装Tomcat。你可以在http://tomcat.apache.org/download-60.cgi.获得Tomcat

为了安装Tomcat,只需要运行下面的命令:

openser:/usr/local/etc/openser# cd /usr/local

openser:/usr/local# wget http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-6/v 6.0.16 /bin/apache-tomcat-6.0.16.tar.gz

openser:/usr/local# tar zxvf apache-tomcat- 6.0.16 .tar.gz

openser:/usr/local# ln -s apache-tomcat- 6.0.16 tomcat6

步骤8:为了在你的服务器初始化中启动Tomcat,请复制下面的脚本到/etc/init.d/tomcat6

#! /bin/bash –e

#### BEGIN INIT INFO

# Provides: Apache’s Tomcat 6.0

# Required-Start: $local_fs $remote_fs $network

# Required-Stop: $local_fs $remote_fs $network

# Default-Start: 2 3 4 5

# Default-Stop: S 0 1 6

# Short-Description: Tomcat 6.0 Servlet engine

# Description: Apache’s Tomcat Servlet Engine

### END INIT INFO

#

# Author: Guilherme Loch Góes <glwgoes@gmail.com>

#

set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin:

CATALINA_HOME=/usr/local/tomcat6

CATALINA_BIN=$CATALINA_HOME/bin

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in

start)

echo "Starting Tomcat 6" "Tomcat6"

$CATALINA_BIN/startup.sh

log_end_msg $?

;;

stop)

echo "Stopping Tomcat6" "Tomcat6"

$CATALINA_BIN/shutdown.sh

log_end_msg $?

;;

force-reload|restart)

$0 stop

$0 start

;;

*)

echo "Usage: /etc/init.d/tomcat6 {start|stop|restart}"

exit 1

;;

esac

exit 0

告诉Debian在系统启动时运行你的脚本;我们使用下面的命令实现之:

openser: chmod 755 /etc/init.d/tomcat6

openser:/etc/init.d# update-rc.d tomcat6 defaults 99

步骤10:为了确认每一步都运行正确,重启服务器,并且在你的浏览器中打开URL http://localhost:8080;如果一切顺利的话,你会看到Tomcat的开始页面。

步骤11:为Tomcat安装MySQL驱动使得SerMyAdmin可以访问你的数据库。这个驱动可以在http://dev.mysql.com/downloads/connector/j/5.1.html上找到。你可以下载驱动然后解包,之后将connector复制到Tomcat的共享库文件夹下,如下所示:

openser:/usr/src# tar zxf mysql-connector-java- 5.1.5 .tar.gz

openser:/usr/src# cp mysql-connector-java- 5.1.5 /mysql-connector-java-5.1.5-bin.jar /usr/local/tomcat6/lib

步骤12:为SerMyAdmin声明数据源以使其链接到OpenSER的数据库上。你可以在/usr/local/tomcat6/conf/context.xml上做些修改以实现之:文件看起来是下面这个样子:

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/serMyAdmin">

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/openser_MySQL" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/openser" username="sermyadmin" password="secret"/>

</Context>

在上面的文件中,请按照你的环境修改高亮显示的参数。SerMyAdmin可以安装在其他的机器上,而不仅仅是拥有数据库的服务器上。当规模需要的时候可以这样做。在Debian上默认安装后的MySQL只接收本地请求,所以你应该修改文件/etc/mysql/my.cnf,让MySQL能够接收来自外部主机的请求。

步骤13:创建一个用户(可以参照文件context.xml)。这个用户需要访问该数据库的权限。请运行下面的命令:

openser:/var/lib/tomcat5.5/conf# mysql -u root –p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 14

Server version: 5.0.32 -Debian_7etch5-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> grant all privileges on openser.* to sermyadmin@'%' identified by 'secret';

Query OK, 0 rows affected (0.00 sec)

步骤14:我们已经接近完成。下一步工作就是部署SerMyAdmin WAR文件了。请下载并复制文件serMyAdmin.warTomcat webapps文件夹下。重启以激活更改。

openser:/usr/src# cp serMyAdmin-0.4.war /usr/local/tomcat6/webapps/serMyAdmin.war

openser:/usr/src# invoke-rc.d tomcat6 restart

不用担心数据库的修改;SerMyAdmin将自动的为你进行处理以适应其改变。

步骤15:配置DebianMTAMessage Transfer Agent)以允许SerMyAdmin发送一封确认邮件给新用户。运行下面的命令配置Exim4Debian默认的MTA)。询问你公司的邮件管理员。

openser:/# apt-get install exim4

openser:/# dpkg-reconfigure exim4-config

映入眼帘的是一个以对话框为基础的配置菜单;在这个菜单上,要着重注意两个选项:邮件配置的通用类型(General type of mail configuration),这个选项应该被配成Internet Site,这样我们就可以直接使用SMTP来发送和接收邮件;转发邮件的域,这个选项应该被配成从SerMyAdmin发出的邮件你想要其表现的来自何处的域。

步骤16:定制文件

/usr/local/apache-tomcat- 6.0.16 /webapps/serMyAdmin-0.3/WEB-INF/spring/resource.xml,这个文件包含指定使用哪个email服务器来发送邮件的参数和希望如何显示这些邮件的出处的参数。下面是这个文件的一个例子:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

<property name="host"><value>localhost</value></property>

</bean>

<!-- You can set default email bean properties here, eg: from/to/subject -->

<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">

<property name="from"><value>admin@sermyadmin.org</value></property>

</bean>

</beans>

第一个要改变的参数是我们用来发送邮件的服务器。第二个则是那些邮件要显示的从何而来的参数。

再次重启Tomcat,此时我们已经准备好要开始了。当你将浏览器指向http://<server address>:8080/serMyAdmin,你将看到登录页面,正如我们在本章开始时呈现的那样。

基本任务(Basic Tasks

现在你能够使用SerMyAdmin来做很多工作了。在这一章中我们将向你展示如何创建和管理新的用户和组。下一章,我们将使用SerMyAdmin做些其他工作,如管理信任列表和LCR模块。

注册一个新用户(Registering a New User

只需简单的在登录页面上的Register按钮点击一下就可以注册一个新的用户了。


填上下面这些,UsernamePasswordDomainEmailFirst NameLast NameCaller Id和确认码(confirmation code)。按下屏幕的最下方的Create按钮。用户将被加入数据库。系统管理员和该用户都将收到一封关于注册的电子邮件。在用户可以打电话前,管理员必须要同意该用户。

同意新用户(Approving a New User

按照下面的步骤一步一步做来同意一个新用户:

步骤1:用admin@localhost帐号登录,密码是在OpenSER安装时创建的openserrw。安装时已经为每一个用户创建了叫做Role的新的属性。这个属性的目的是用来区分普通用户,域管理员和通用管理员的。Admin用户自动被设置为通用管理员(Global Administrator)。这个新的属性将帮助我们提供多域的支持。

步骤2:选择菜单中Registered Users条目。



在上面的屏中,选择你想要添加用户,选中对应复用框。按下Approve按钮添加用户;该用户将从register_user表中移除,而被转移到订阅列表中,然后他将能够注册到OpenSER并可以打电话。

步骤3:现在用户会显示在你的用户列表中了。点击菜单目录中的用户检查之。


用户管理(User Management

你能够查看,添加,编辑和删除用户菜单上的用户了。当你点击它时,所有的用户都会显示在你的系统上。


要添加新用户的话,必须要点击“New User”链接。点后你将转到下面的页面上:

你要完全的填满上一张图片中的空档,并点击“Create”链接,然后该用户会被添加到订阅表(subscriber table)中。之后会显示下面的图片:


在这个页面中,你可以点击“Edit”来编辑插入的信息,点击“Delete“来删除该用户。

“User List“页面中,你可以基于usernamedomain,和email对用户进行搜索;只要填上所需的条件,然后点击”Search“链接即可。下面的页面中,我们使用用户名jdoe来对用户进行搜索。点击”Search“;页面将转移到符合你所输条件的用户列表(user list)上去。


域管理(Domain Management

你可以像管理你的用户那样来管理你的域。点击“Domains”得到一张域列表(domain list)。你可以在其中进行诸如添加一个新的域,删除一个已经存在的域等类似的操作。这里要注意的很重要的一点就是,SerMyAdmin不允许没有域的用户存在,所以当你删掉一个域后,你也就删除掉了所有属于该域的所有用户。

接口定制(Interface Customization

网站的布局,SerMyAdmin使用SiteMesh框架,所以按照你自己的品位来定制SerMyAdmin的显示效果是非常简单的。SiteMesh显示的页面是基于一份模板,这份模板可以在

openser:/usr/local/apache-tomcat- 6.0.16 /webapps/serMyAdmin-0.3/WEB-INF/grails-app/view/layouts中找到。在这里,你将找到main.gspnotLoggedIn.gsp文件,这些文件是用来控制页面如何显示的Groovy服务器页面(Groovy Server Pages)。

SiteMesh使用HTML元标记来选择要使用哪个布局;这些标记应该可以在每个页面的头元素(head element)中找到,如果一个页面在头元素中含有标记<meta content=”main” name=”layout”/>,那么SiteMesh将使用main.gsp布局显示之。

你可以按照你的意愿对main.gspnotLoggedIn.gsp进行修改,但是要了解的很重要的一点是<g:layoutHead /><g:layoutBody />将使用这个布局来保持页面的headbody标志。另外一件要知道的事情是<g:render template=”/menu” />被用来整理页面碎片;这些页面碎片是GSP文件,它们的文件名以下划线打头。

为了使用你自己的logo来替代SerMyAdmin的,只需要将你的logo放到/usr/local/apache-tomcat- 6.0.16 /webapps/serMyAdmin-0.3/images,并对布局文件中的指向logo_voffice.png的标志进行修改,如下:

<div class="logo"><img src="${createLinkTo(dir:'images',file:'my_new_logo.png')}" alt="Grails" /></div>

在上面我们仅仅是通过改变粗体显示的参数就用我们自己的logo替代了SerMyAdminlogo

你也可以通过修改CSS文件来改变SerMyAdmin的显示效果和感觉,CSS文件可以在/usr/local/apache-tomcat- 6.0.16 /webapps/serMyAdmin-0.3/css中找到;在main.css中,我们将能够发现每一个改变SerMyAdmin行为的类(class)。

例子:如果我们使用下面的参数来改变这个文件中的背景类(background class):

body {

background: # 00f ;

color: #333;

font: 8px verdana, arial, helvetica, sans-serif;

}

我们将能够在最后得到如下的页面:

这个页面不是世界上最好看的,但是你可以按照这个例子的方法来是它看起来更好一些。

概要(Summary

在这一章中,你已经学到了为什么拥有一个用户和管理入口是如此的重要。它是软件中你应该放大部分精力在其上的部分。但是一些VoIP服务提供商并没有分配必要的时间和资源在构建入口这项重要的工作上。OpenSER是一个令人惊讶的SIP代理,但是SIP代理也只是VoIP服务提供商的部件的一员而已。没有好的管理和用户接口,VoIP提供项目很容易失败。SerMyAdmin就是我们在此方面对你项目的一个贡献。它是利用JAVA语言,使用Groovy on Rails架构进行开发,按照GPL版本2进行许可的系统。你已然已经学会了如何安装,管理用户和域和如何定制显示效果。这个工具可以做的事情还很多,在下一章我们将向你展示其更多的功能。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(1651) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值