SN int(20) NOT NULL auto_increment,
USERNAME varchar(64) NOT NULL default '',
FQDN varchar(64) NOT NULL default '',
TTL int(5) NOT NULL default '60',
TYPE varchar(10) NOT NULL default '',
RDATA varchar(64) NOT NULL default '',
CREATE_TIME timestamp(14) NOT NULL,
PRIMARY KEY (SN),
KEY USERNAME (USERNAME),
KEY FQDN (FQDN),
KEY TTL (TTL),
KEY TYPE (TYPE),
KEY CREATE_TIME (CREATE_TIME)
) TYPE=MyISAM;
--
-- Table structure for table 'RR_LOG'
--
CREATE TABLE RR_LOG (
SN int(20) NOT NULL default '0',
USERNAME varchar(64) NOT NULL default '',
FQDN varchar(64) NOT NULL default '',
TTL int(5) NOT NULL default '60',
TYPE varchar(10) NOT NULL default '',
RDATA varchar(64) NOT NULL default '',
CREATE_TIME varchar(14) default NULL,
PRIMARY KEY (SN),
KEY USERNAME (USERNAME),
KEY FQDN (FQDN),
KEY CREATE_TIME (CREATE_TIME)
) TYPE=MyISAM;
--
-- Table structure for table 'USER'
--
CREATE TABLE USER (
SN int(20) NOT NULL auto_increment,
USERNAME varchar(64) NOT NULL default '',
PASSWD varchar(64) NOT NULL default '',
EMAIL varchar(64) NOT NULL default '',
MEMO varchar(255) NOT NULL default '',
PRIMARY KEY (SN),
UNIQUE KEY USERNAME (USERNAME)
) TYPE=MyISAM;
3.2 dyndns.cfg 设定档
这个设定文件主要为了给 CGI 程序及产生 nsupdate 的程序 (dyndns-cron.sh) 所使用,透过 eval 方式来执行,
以取得共同的变量
CODE:[Copy to clipboard]# mysql host/db/user/password
DBHOST=localhost
DBNAME=dyndns
DBUSER=UserName
DBPASS=Your_Passwd
MYSQL="mysql $DBNAME -h $DBHOST -u $DBUSER -p$DBPASS"
# dyndns domain
DOMAIN=dyndns.twnic.tw
# Master IP
DYNDNS_MASTER=127.0.0.1
# nsupdate command file
CMD_FILE=/tmp/nsupdate.cmd
# update freqency
UPD_FREQ=15
# RR valid time (seconds),default 20 mins
RR_ALIVE=1200
3.3 dyndns.cgi CGI 程序
这个 CGI 主要用于接收 USER 端来的信息,验证通过后即为把 USERNAME.DOMAIN 资料,A/MX 及对应 IP 存入Table RR 中,此外这个 CGI 以 shell script 做成,可以于多数人的环境执行 (chmod 755 及目录的 CGI 执行权限 ExecCGI 莫忘)
CODE:[Copy to clipboard]#!/bin/sh
echo -ne "Content-Type: text/html\n\n"
if [ -n "$QUERY_STRING" ];then
# 取得 QUERY_STRING,以下这个作法是危险的,因为没有检查数据的正确性就 eval
# 我的用意只在于说明作法
eval `echo "$QUERY_STRING" | sed "s/&/;/g"`
# 读取设定文件,这个路径您需要自行调整
eval `cat /home/abelyang/dyndns/dyndns.cfg `
sql0="select 1 from USER where USERNAME='$LOGIN' and PASSWD='$PASSWD'"
res=`echo $sql0 | $MYSQL `
# 如果 USER 密码正确, ${#res} 应为2,不对则为 0
if [ ${#res} -lt 1 ];then
echo "Login Failure"
else
# 取得 IP, 需判断有 Proxy 存在,但是不考虑 Proxy 后是 NAT 情形
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3 45 6 7 下一页
上一篇:Linux CollegeLinux LiveServer 发布 下一篇:在Enterprise Server上配置SCSI磁带机
|