⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 access.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// 安全系统v0.1 Write By JackyBoy@CuteRabbit Studio for CCTX & SDXL
// 注意:
// 本程序必须在正确分配了权限的情况下才可以正确使用,一旦权限分配出错就会造成系统无法启动
// 此时,只有手动更改存储文件里的设置或者删除该文件才可以再次启动!
// 所以,必须只有可以登录主机的用户才可以使用该安全系统!!!
// 虽然本程序提供了最灵活的权限设置方法,但是建议要留一份原来的系统的安全设置
// 初写于:1999/7/14
// 7/15修改:将权限设置修改为可以一次设置多个有权者
// 例子:access add trusted_read kungfu/skill "(player)"

#undef SECURITY_D
#define SECURITY_D "/adm/daemons/securd"

inherit F_CLEAN_UP;

int main(object me, string arg)
{
	string type,acc,op,user,*tmp;
	
	if( me!=this_player(1) ) return 0;
	if( wiz_level(me)<wiz_level("admin"))
		return notify_fail("你无权使用该命令!\n");
	if(1)
		return notify_fail("这个命令一般不开放!\n");

	if(!arg||arg=="print")
		arg="print all";
	if(arg=="wizlist")
	{
		write(implode(SECURITY_D->get_wizlist(),"\n")+"\n");
		return 1;
	}
	if(sscanf(arg,"set %s %s",user,acc)!=2)
	{
		if(sscanf(arg,"print %s",type)!=1)
		{
			if(sscanf(arg,"add %s %s",type,acc)!=2)
			{
				if(sscanf(arg,"del %s %s",type,acc)!=2)
					return notify_fail("命令错误!\n格式为:access print|wizlist|modify [类型] [存取设置]\n");
				else
					op="del";
			}
			else
				op="add";
			//还要从acc里分析出file和access_user
			if(sscanf(acc,"%s %s",acc,user)!=2)
				return notify_fail("存取控制表项输入错误!\n");
		}
		else
			op="print";
	}
	else
	{
		//设置巫师级别!注意这是无严格检查的,可以非在线提升巫师,所以千万不能提升错误!
		seteuid(geteuid());
		if( !(SECURITY_D->set_status(user, acc)) )
			return notify_fail("修改失败。\n");
		message_vision("$N将"+user+"的权限改为 " + acc + " 。\n", me);
		return 1;
	}
	if(op=="print")
		me->start_more(SECURITY_D->print_access_list(me,type));
	else
	{
		user=replace_string(user,"\"","");
		//应该将user修改为string*,这样可以一次输入多行!
		tmp=explode(user,",");
		write("分解得"+sizeof(tmp)+"项!\n");
		(SECURITY_D->modify_access_list(me,op,type,acc,tmp))?write("成功!\n"):write("失败!\n");
	}
	return 1;
}

#undef SECURITY_D
#define SECURITY_D "/adm/daemons/securityd"

int help()
{
write(@HELP

权限管理指令。

指令格式 : 
列出权限分配情况:access print [类型] 
列出游戏巫师表  :access wizlist
设置或提升巫师  :access set 用户ID 权限级别
设置权限分配表  :access add 类型 文件 有权者
删除权限分配表项:access del 类型 文件 有权者
其中类型为trusted_read,trusted_write,exclude_read,exclude_write四个之一
有权者是一组该文件的级别或者精确的UID的数组,格式如下:
jackyboy或者(admin)或者"jackyboy"或者jackyboy,(admin)或者"(admin)","jackyboy"
它用逗号分隔每个有权者,至于引号可以忽略不计!对于直接授权给某人则使用该人的ID
否则是一个巫师级别名称,比如(admin),注意,括号不能少!

HELP
    );
    return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -