BBS水木清华站∶精华区
发信人: wxb1 (ben), 信区: Linux
标 题: [6/8] 群组转送与分区传送
发信站: BBS 水木清华站 (Fri Jun 11 14:24:12 1999)
以Linux实作 语音/传真/EMAIL/BBC 整合系统
6.群组传送与分区转送
群组传送
群组传送的功能是指管理者可将一群客户,例如同一公司同仁,或一组
彼此认识的同学、朋友等团体,设为同一群组(Group),如此当对这群组发送语
音或传真讯息时,隶属此群组的所有客户,皆会收到此一讯息,而不需要再费时
的一一发送,且需经常维护群组名单,免得挂一漏万。
系统中目前群组的表示为"#00"~"#99",共可容纳100个群组,针对群组
的留言或传真,会先要求输入群组密码,以防有人滥用,其後的留言或传真实体
仅储存一份,但属於该群组的用户,皆会建一连结(LINK)至此实体档案,如此
可节省硬碟空间,各用户收取留言或传真後即将LINK删除,至於实体档案,则由
系统定时执行的逾期删除作业(下一篇会介绍)中,自动删除。
因应群组传送功能,原"Bash script"档(answer),需要做不少的变动
,而同样的程式段落因分区转送的功能,也会有所牵涉,因此待解释完分区转送
後,再一并解析两者的原始程式码。
分区转送
"基地台"这名词因最近大哥大广告的缘故,让人耳熟能详,此处"分区转
送"的功能也类似基地台的建置,让拨电话进入欲留言或送传真的使用者,可以打
当地基地台的电话,而此处的伺服器再根据使用者所输入的客户的代码,判断其
所属区域,再透过网际网路转送至该区的伺服器上!
判断的准则当然是靠预先的区域设定档(zone.conf)来决定,其内容类
似:
sections="101 400 700 900 1000"
hosts="LOCAL company1.com.tw company2.com.tw NONE"
此例内容是指101~399的客户是此处伺服器所管辖(000~100保留给所有的LOCAL伺
服器,也就是代号<=100,都当作是LOCAL的用户,将不会尝试转送),400~699属
company1.com.tw,余类推,NONE指还未分出去的区段。程式会先搜寻是否有此客
户代码的设定档,若无的话,会交由副程式ChkZone来界定其所属伺服器所在的主
机名称(Host name),若成功界定,会将其留言或传真交由副程式SendtoMail处
理,不然及回应无此客户,挂断电话(接收端的伺服器并不判断远端是否真有此
用户代码)。SendtoMail会将留言或传真档案压缩编码後,以EMAIL的形式送至其
所属伺服器(另建一Mailer来处理),由该伺服器收到後再解码,检查是否有此
客户,并放入适当的目录中。
程式码解析
ChkZone、SendtoMail副程式:
#---------------------------------------------------------------
ChkZone()
{
local UserID
# 设定 $sections 及 $hosts 变数
. ${MAINPATH}conf/zone.conf
UserID=$1
ndx=0
UserIndex=0
#echo $sections
#echo $hosts
#echo $UserID
for sec in $sections
do
if [ $ndx -gt 0 ]; then
# ($UserID >= $prev_sec) and ($UserID < $sec)
if [ $UserID -ge $prev_sec -a $UserID -lt $sec ]; then
UserIndex=$ndx
# echo $UserIndex
fi
fi
prev_sec=$sec
ndx=`expr $ndx + 1`
done
ndx=1
if [ $UserIndex -ne 0 ]; then
for host in $hosts
do
if [ $ndx -eq $UserIndex ]; then
UserHost=$host
# echo $UserHost
fi
ndx=`expr $ndx + 1`
done
# echo $UserHost
if [ $UserHost = 'LOCAL' -o $UserHost = 'NONE' ]; then
# echo "Local or None"
return "2"
else
# echo "Find $UserHost"
return "0"
fi
else
# echo "No this UserID!"
return "1"
fi
}
#------------------------------------------------------------
# 将非本站客户留言或传真,透宫而不需要再额外安装传真数据
机。
撰文:朱先宇 1998/12/17
EMAIL: hybj@ms1.hinet.net
--
just a test
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.116.130.100]
BBS水木清华站∶精华区