ExtMail服务器社区's Archiver

fengyong 发表于 2007-12-18 16:10

extman 0.2.3代码简单分析(1)

extman 目录结构
webman.cf  --配置文件,此文件能过cgi 程序执行时,取得脚本路径,再能过正则匹配得到此文件,再导入extman中使用。
下面代码展示了如何取得安装目录,并将模块路径加入到perl 搜索的包的路径的变量@INC 中。
[code]

BEGIN {
    if ($ENV{SCRIPT_FILENAME} =~ m!(.*/)cgi!) {
        $DIR = $1;
    }else {
        $DIR = '../';
    }
    unshift @INC, $DIR . 'libs';

[/code]

---跟目录---
addon --目录,存放一些升级的sql脚本,图片验证码的字体等。
cgi --所有程序都是从这里开始的。cgi 执行目录,但是这里不是代码的真实存放位置。
docs --文档目录,配置相关的文档。
html --模版等
lang --保存着语言文件,其实可以将他看成perl 的hash 。在程序很简单就可以进行调用,如
$tpl->assign(\%lang);
libs --所有库的存放地点。
tools --一些工具等,如果做二次开发可以参考里面的程序。

---libs 目录-----
下面说说libs 的结构
Crypt --md5crypt 密码加密方法模块。
Ext --运行extman 的主要模块,可以说是Ext 自己本身的模块,除了这个目录其它都是别人的?
HTML --模版驱动
CmdTools.pm --二次开发接口,比较简单,而且没有文档,想开发还得认真看其它代码。
Ext.pm --系统最高层的模块,一切模块都是从这里的new 程序开始,可以算得上整个程序的祖宗了。

---Ext-目录----
Mgr 目录---这里保存着LDAP/MYSQL 的驱动,上层有一个选择性的模块,即,你在使用webman.cf 时,如果使用ldap 就会选择ldap 模块去驱动,ldap.pm/mysql.pm这两个包的子程序名字是一样的。
MgrApp目录--这里是功能子程序的位置,比如index.cgi?__mode=welcome  这里的welcome 功能,就是保存在这个目录的某个文件里。具体会详细介绍。这里所有子程序都是通过上一级模块MgrApp.pm 调用的。大家只需要知道一下就行了。具体将会用例子说明。
CaptCht.pm  --图片验证码生成程序。
CGI.pm --cgi 相关的模块,比如取得用户输入的变量等等。
Config.pm --读取webman.cf 的程序,只要你通过use Ext::Config 就可以取得一个叫$SYS_CFG 的hash引用的全局变量。具体可以参考里面的import 子程序。

[[i] 本帖最后由 fengyong 于 2007-12-20 14:18 编辑 [/i]]

fengyong 发表于 2007-12-18 16:14

回复 #1 fengyong 的帖子

Lang.pm -- 用于处理extman 的语言包,还未认真看该模块。
Mgr.pm --用于处理用户使用什么类型的数据库。
MgrApp.pm --用于MgrApp 目录里模块的父程序,他们是通这里个模块进行调用。这个模块同时也对环境进行处理。
Passwd.pm --取得密码字符串及验证密码方法都在这里。
Session.pm  --用于处理cgi 的会话。

net_yu 发表于 2007-12-18 18:02

冯老大写的精辟,我支持ing

since 发表于 2007-12-19 14:15

fengyong老大介绍的真精辟

hzqbbc 发表于 2007-12-21 23:17

超级牛,不加精不行啊。.. 可惜目前在外省出差,就先回着先吧.:lol

fengyong 发表于 2007-12-22 08:01

难怪,打你的电话老没人接。

z0800 发表于 2008-1-6 14:44

:) 顶:victory: :victory:

hkpbfx 发表于 2008-3-14 08:39

好文,就得收藏。:victory: :victory: :victory:

hmfjacky 发表于 2008-3-20 14:26

謝謝,想要研究 extmail 、extman,但是不熟悉perl ,一直無法深入,現有講解更容易了解。

fengyong 发表于 2008-3-24 11:31

[quote]原帖由 [i]hmfjacky[/i] 于 2008-3-20 14:26 发表 [url=http://www.extmail.org/forum/redirect.php?goto=findpost&pid=40111&ptid=6680][img]http://www.extmail.org/forum/images/common/back.gif[/img][/url]
謝謝,想要研究 extmail 、extman,但是不熟悉perl ,一直無法深入,現有講解更容易了解。 [/quote]


这个讲解只是皮毛,最近按extman 的框架写了一个cgi 的程序。。。
对extman 有进一步的了解了。

tonny0830 发表于 2008-5-30 11:09

少有到这个坛子来,现在看来要经常来看看了。呵呵!老大的讲解真精辟加!加个精!

Flatter 发表于 2008-8-21 10:52

太感谢了

太感谢了,Extmail的结构困扰了我很久,不知道从何下手!现在有点眉目了

cnyouker 发表于 2008-8-25 13:48

支持一下 :loveliness:

move 发表于 2008-11-12 14:24

支持一下 :lol :lol

wangtong 发表于 2008-12-8 16:36

haha,虽然更关心extmail,不过借鉴意义很大
论坛的表情可真慢啊,想找朵花也木有:victory:

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.