GoAhead2.5源代码分析之1-用户管理(um.c)

Um.c(用户管理)

umconfig.txt

TABLE=users
ROW=0
name=admin
password=Uz
group=Administrator
prot=1
disable=0

TABLE=groups
ROW=0
name=Administrator
priv=4
method=3
prot=1
disable=0

TABLE=access
ROW=0
name=/main.html
method=3
secure=0

group=Administrator

GoAhead提供了认证功能:主要是两种认证基本认证和摘要认证。摘要认证比基本认证更安全些,所以选择摘要认证。
认证功能其实是用户管理功能的一部分。要配置认证功能,需要修改umconfig.txt文件,GoAhead在启动时会读取该文件,实现认证功能。
文件大概情况如下:
TABLE=users/用户配置/
ROW=0
name=raise/用户名/
password=Uz/密码,加密的/
group=RS/用户所属的组/
prot=1/为1表示这个用户受保护不能被删除,0表示可以删除/
disable=0/0为使能/

TABLE=groups/组配置/
ROW=0
name=RS/组名/
priv=4/用户组的访问权限,可以是0,1,2,4分别代表AM_NONE,AM_READ,AM_WRITE,AM_ADMIN.这之间没有权限大小之分/
method=3/*密码认证方法,可以是0,1,2,3。0什么你都没权访问,1什么你都有权限。2密码与用户名简单加密传输(基本认证),3密码和用户名经过更安全的加密(摘要认证)。
typedef enum {
AM_NONE = 0,
AM_FULL,
AM_BASIC,
AM_DIGEST,
AM_INVALID
} accessMeth_t;
*/
prot=1/为1表示这个用户受保护不能被删除,0表示可以删除/
disable=0/0为使能/

TABLE=access/访问控制/
ROW=0
name=/ /要访问index.htm,需要输入用户名、密码/
method=3/摘要认证/
secure=0/页面传输时,是否要加密,0为不加密,如果不使用SSL,这项是忽略的/
group=RS/可访问该文件的组/

int umOpen()
功能:在数据库中注册UM表
说明:
1. 如果didUM== -1,注册数据库,包括三个表:用户表、用户组表、访问控制表

2. 如果saveFilename == NULL,分配一段内存,内存中存放文件名umconfig.txt。

void umClose()
功能:释放数据库中的UM表
说明:


int umCommit(char_t *filename)
功能:将数据库中的table保存到文件中

说明:

int umRestore(char_t *filename)
功能:将文件中table存放到数据库中

说明:

static int umEncryptString(char_t *textString)
功能:将字符串进行简单加密

说明:

static char_t *umGetFirstRowData(char_t *tableName, char_t *columnName)
功能:获得table名字为tableName,列名为columnName的数据

说明:例如,前面的umconfig.txt, password=Uz的获得就是tableName= users,columnName= password。

static char_t *umGetNextRowData(char_t *tableName, char_t *columnName,
char_t *keyLast)
功能:获得指定的table项的下一项。

说明:

int umAddUser(char_t *user, char_t *pass, char_t *group,
bool_t prot, bool_t disabled)
功能:向用户table中添加一个用户。

说明:必须确保用户名不重复,用户组是存在的。

int umDeleteUser(char_t *user)
功能:删除一个用户

说明:

char_t *umGetFirstUser()
功能:获得第一个用户名

说明:

char_t *umGetNextUser(char_t *userLast)
功能:获得下一个用户名

说明:

bool_t umUserExists(char_t *user)
功能:判断指定用户是否存在

说明:

char_t *umGetUserPassword(char_t *user)
功能:获得指定用户的密码

说明:

int umSetUserPassword(char_t *user, char_t *pass)
功能:设置用户的密码

说明:

char_t *umGetUserGroup(char_t *user)
功能:获得该用户所在的用户组

说明:

int umSetUserGroup(char_t *user, char_t *group)
功能:设置这个用户的用户组

说明:

bool_t umGetUserEnabled(char_t *user)
功能:该用是否使能

说明:

int umSetUserEnabled(char_t *user, bool_t enabled)
功能:设置该用户使能

说明:

bool_t umGetUserProtected(char_t *user)
功能:该用户是否被保护,不能删除

说明:

int umSetUserProtected(char_t *user, bool_t protect)
功能:设置该用户被保护

说明:

int umAddGroup(char_t *group, short priv, accessMeth_t am,
bool_t prot, bool_t disabled)
功能:添加一个组table

说明:

int umDeleteGroup(char_t *group)
功能:删除一个组

说明:

bool_t umGroupExists(char_t *group)
功能:该组是否存在

说明:

bool_t umGetGroupInUse(char_t *group)
功能:该用户是否使能

说明:

char_t *umGetFirstGroup()
功能:获得第一个用户组

说明:

char_t *umGetNextGroup(char_t *groupLast)
功能:获得下一个用户组

说明:

accessMeth_t umGetGroupAccessMethod(char_t *group)
功能:获得用户组的方法

说明:

int umSetGroupAccessMethod(char_t *group, accessMeth_t am)
功能:设置用户组的方法

说明:

short umGetGroupPrivilege(char_t *group)
功能:获得用户组的访问权限

说明:

int umSetGroupPrivilege(char_t *group, short privilege)
功能:设置用户组的访问权限

说明:

bool_t umGetGroupEnabled(char_t *group)
功能:获得用户组是否使能

说明:

int umSetGroupEnabled(char_t *group, bool_t enabled)
功能:设置用户组使能

说明:

bool_t umGetGroupProtected(char_t *group)
功能:获得用户组是否被保护

说明:

int umSetGroupProtected(char_t *group, bool_t protect)
功能:设置用户组被保护

说明:

int umAddAccessLimit(char_t *url, accessMeth_t am, short secure, char_t *group)
功能:添加访问限制,能访问哪个目录或文件

说明:

int umDeleteAccessLimit(char_t *url)
功能:删除访问限制

说明:

char_t *umGetFirstAccessLimit()
功能:获得第一个用户的访问限制路径

说明:

char_t *umGetNextAccessLimit(char_t *urlLast)
功能:获得指定访问限制路径的下一个访问限制路径

说明:

bool_t umAccessLimitExists(char_t *url)
功能:这个访问限制路径是否存在

说明:

accessMeth_t umGetAccessLimitMethod(char_t *url)
功能:获得这个路径的访问方法
说明:typedef enum {
AM_NONE = 0,
AM_FULL,
AM_BASIC,
AM_DIGEST,
AM_INVALID
} accessMeth_t;


int umSetAccessLimitMethod(char_t *url, accessMeth_t am)
功能:设置这个访问路径的方法

说明:

short umGetAccessLimitSecure(char_t *url)
功能:获得这个访问路径的安全设置

说明:加密还是不加密

int umSetAccessLimitSecure(char_t *url, short secure)
功能:设置访问路径的安全标志

说明:

char_t *umGetAccessLimitGroup(char_t *url)
功能:获得这个访问路径的组

说明:

int umSetAccessLimitGroup(char_t *url, char_t *group)
功能:设置访问路径的组

说明:

char_t *umGetAccessLimit(char_t *url)
功能:获得给定路径的所在的访问限制路径

说明:

accessMeth_t umGetAccessMethodForURL(char_t *url)
功能:获得给定路径的所在的访问限制方法

说明:

bool_t umUserCanAccessURL(char_t *user, char_t *url)
功能:判断这个路径用户是否能够访问
说明:1.用户要在
2.用户要能
3.用户组的权限要足够大,AM_READ,AM_WRITE,AM_ADMIN都可
4.用户组要使能
5.用户组访问限制的方法必须是AM_FULL、 AM_BASIC、AM_DIGEST之一
6.在判断url是否属于访问限制路径,如果是,获得这个路径的访问方法和组,然后这个访问方法不能是AM_NONE,组必须和user的组一样。


static bool_t umCheckName(char_t *name)
功能:检查字符串是否是有效的

说明:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值