#define DOM_LORD "god"
#define DOMAIN "mudlib"
int query_prevent_shadow() { return 1; }
/* beware editing this file.
* Make sure you know what you are doing. stuffing this up could be
* fatal in some ways.
*/
mixed members;
void create() {
int i;
mapping map;
members = ([ ]);
seteuid((string)"/secure/master"->creator_file(file_name(this_object())));
restore_object(file_name(this_object()), 1);
if (pointerp(members)) {
map = ([ ]);
for (i=0;i<sizeof(members);i++)
map[members[i]] = "newbie";
members = map;
}
} /* create() */
void save_me() {
seteuid((string)"/secure/master"->get_root_uid());
save_object(file_name(this_object()), 1);
seteuid((string)"/secure/master"->creator_file(file_name(this_object())));
} /* save_me() */
/* This is not a good hack, should change it later.. when I move query_god from lord.c to master.c Baldrick dec '93 */
string query_dom_lord()
{
return DOM_LORD;
}
int query_dom_manip()
{
if ( (geteuid(this_player(1)) == query_dom_lord()) ||
(this_player(1)->query_god() &&
"/secure/master"->high_programmer(geteuid(this_player()))))
return 1;
return 0;
}
int valid_read(string *path, string euid, string funct) {
int i;
return 1;
/* to make this house open... Uncomment the next line
* return 1;
*/
if (query_dom_manip())
return 1;
return (members[euid] != 0);
} /* valid_read() */
int valid_write(string *path, string euid, string funct) {
int i;
if (query_dom_manip())
return 1;
if (path[2] == "master" || path[2] == "master.c" || path[2] == "master.o")
return 0;
if (euid == "Dom: "+DOMAIN) return 1;
return (members[euid] != 0);
} /* valid_write() */
void dest_me() {
destruct(this_object());
} /* dest_me() */
/* please note the + ({ })... this is for security reasons.
* If you don't do this the members of your house can be changed at will
* by any other wizard.
*/
string *query_members() { return keys(members) + ({ }); }
int add_member(string name) {
/* only the lord of the domain can add members to it.
* BTW... change this if you want, it is a bit constrictive but handy as
* a start point
* The God can change it.. Baldy..
*/
if(!query_dom_manip()) return 0;
if(members[name]) return 0;
members[name] = "newbie";
save_me();
return 1;
} /* add_member() */
int remove_member(string name) {
int i;
/* see above comment...
*/
if(!query_dom_manip()) return 0;
if(!members[name]) return 0;
members = m_delete(members, name);
save_me();
return 1;
} /* remove_member() */
int set_project(string name, string pro) {
if(!query_dom_manip()) return 0;
if(!members[name]) return 0;
if(!pro || pro == "") pro = "project unset";
members[name] = pro;
save_me();
return 1;
} /* set_project() */
int query_member(string name) {
return !undefinedp(members[name]) || name == DOM_LORD;
} /* query_member() */
string query_project(string name) {
if (!members[name])
return "project unset";
return members[name];
} /* query_project() */
void smart_log(string error, string where) {
write_file("d/"+DOMAIN+"/player_reports", error);
} /* smart_log() */
string log_who(string where) {
return DOM_LORD;
} /* log_who() */
string author_file(string *str) {
switch (str[1]) {
case "fr" : return DOM_LORD;
default: return "baldrick";
}
} /* author_file() */