return;
}
- ga = groupacs_find(mg, mu, 0);
+ ga = groupacs_find(mg, entity(mu), 0);
if (ga != NULL)
flags = ga->flags;
flags = gs_flags_parser(parv[2], 1, flags);
- if (!(flags & GA_FOUNDER) && groupacs_find(mg, mu, GA_FOUNDER))
+ if (!(flags & GA_FOUNDER) && groupacs_find(mg, entity(mu), GA_FOUNDER))
{
if (mygroup_count_flag(mg, GA_FOUNDER) == 1)
{
ga->flags = flags;
else if (ga != NULL)
{
- groupacs_delete(mg, mu);
+ groupacs_delete(mg, entity(mu));
command_success_nodata(si, _("\2%s\2 has been removed from \2%s\2."), entity(mu)->name, entity(mg)->name);
wallops("\2%s\2 is removing flags for \2%s\2 on \2%s\2", get_oper_name(si), entity(mu)->name, entity(mg)->name);
logcommand(si, CMDLOG_ADMIN, "FFLAGS:REMOVE: \2%s\2 on \2%s\2", entity(mu)->name, entity(mg)->name);
command_fail(si, fault_toomany, _("Group %s access list is full."), entity(mg)->name);
return;
}
- ga = groupacs_add(mg, mu, flags);
+ ga = groupacs_add(mg, entity(mu), flags);
}
MOWGLI_ITER_FOREACH(n, entity(mg)->chanacs.head)
return;
}
- if ((MU_NEVERGROUP & mu->flags) && (groupacs_find(mg, mu, 0) == NULL))
+ if ((MU_NEVERGROUP & mu->flags) && (groupacs_find(mg, entity(mu), 0) == NULL))
{
command_fail(si, fault_noprivs, _("\2%s\2 does not wish to have flags in any groups."), parv[1]);
return;
}
- ga = groupacs_find(mg, mu, 0);
+ ga = groupacs_find(mg, entity(mu), 0);
if (ga != NULL)
flags = ga->flags;
return;
}
- if (!(flags & GA_FOUNDER) && groupacs_find(mg, mu, GA_FOUNDER))
+ if (!(flags & GA_FOUNDER) && groupacs_find(mg, entity(mu), GA_FOUNDER))
{
if (mygroup_count_flag(mg, GA_FOUNDER) == 1)
{
ga->flags = flags;
else if (ga != NULL)
{
- groupacs_delete(mg, mu);
+ groupacs_delete(mg, entity(mu));
command_success_nodata(si, _("\2%s\2 has been removed from \2%s\2."), entity(mu)->name, entity(mg)->name);
logcommand(si, CMDLOG_SET, "FLAGS:REMOVE: \2%s\2 on \2%s\2", entity(mu)->name, entity(mg)->name);
return;
command_fail(si, fault_toomany, _("Group %s access list is full."), entity(mg)->name);
return;
}
- ga = groupacs_add(mg, mu, flags);
+ ga = groupacs_add(mg, entity(mu), flags);
}
MOWGLI_ITER_FOREACH(n, entity(mg)->chanacs.head)
unsigned int (*mygroup_count_flag)(mygroup_t *mg, unsigned int flag);
unsigned int (*myentity_count_group_flag)(myentity_t *mu, unsigned int flagset);
-groupacs_t * (*groupacs_add)(mygroup_t *mg, myuser_t *mu, unsigned int flags);
-groupacs_t * (*groupacs_find)(mygroup_t *mg, myuser_t *mu, unsigned int flags);
-void (*groupacs_delete)(mygroup_t *mg, myuser_t *mu);
+groupacs_t * (*groupacs_add)(mygroup_t *mg, myentity_t *mt, unsigned int flags);
+groupacs_t * (*groupacs_find)(mygroup_t *mg, myentity_t *mt, unsigned int flags);
+void (*groupacs_delete)(mygroup_t *mg, myentity_t *mt);
+
bool (*groupacs_sourceinfo_has_flag)(mygroup_t *mg, sourceinfo_t *si, unsigned int flag);
unsigned int (*groupacs_sourceinfo_flags)(mygroup_t *mg, sourceinfo_t *si);
unsigned int (*gs_flags_parser)(char *flagstring, int allow_minus, unsigned int flags);
return;
}
- if ((ga = groupacs_find(mg, mu, 0)) != NULL)
+ if ((ga = groupacs_find(mg, entity(mu), 0)) != NULL)
{
command_fail(si, fault_badparams, _("\2%s\2 is already a member of \2%s\2."), user, group);
return;
else
flags = gs_flags_parser(gs_config->join_flags, 0, flags);
- ga = groupacs_add(mg, si->smu, flags);
+ ga = groupacs_add(mg, entity(si->smu), flags);
if (invited)
metadata_delete(si->smu, "private:groupinvite");
static void db_h_gacl(database_handle_t *db, const char *type)
{
mygroup_t *mg;
- myuser_t *mu;
+ myentity_t *mt;
unsigned int flags = GA_ALL; /* GDBV 1 entires had full access */
const char *name = db_sread_word(db);
- const char *user = db_sread_word(db);
+ const char *entity = db_sread_word(db);
const char *flagset;
mg = mygroup_find(name);
- mu = myuser_find(user);
+ mt = myentity_find(entity);
if (mg == NULL)
{
return;
}
- if (mu == NULL)
+ if (mt == NULL)
{
- slog(LG_INFO, "db-h-gacl: line %d: groupacs for nonexistent user %s", db->line, user);
+ slog(LG_INFO, "db-h-gacl: line %d: groupacs for nonexistent entity %s", db->line, entity);
return;
}
slog(LG_INFO, "db-h-gacl: line %d: confused by flags: %s", db->line, flagset);
}
- groupacs_add(mg, mu, flags);
+ groupacs_add(mg, mt, flags);
}
static void db_h_mdg(database_handle_t *db, const char *type)
mowgli_heap_free(groupacs_heap, ga);
}
-groupacs_t *groupacs_add(mygroup_t *mg, myuser_t *mu, unsigned int flags)
+groupacs_t *groupacs_add(mygroup_t *mg, myentity_t *mt, unsigned int flags)
{
groupacs_t *ga;
return_val_if_fail(mg != NULL, NULL);
- return_val_if_fail(mu != NULL, NULL);
+ return_val_if_fail(mt != NULL, NULL);
ga = mowgli_heap_alloc(groupacs_heap);
object_init(object(ga), NULL, (destructor_t) groupacs_des);
ga->mg = mg;
- ga->mt = entity(mu);
+ ga->mt = mt;
ga->flags = flags;
mowgli_node_add(ga, &ga->gnode, &mg->acs);
- mowgli_node_add(ga, &ga->unode, myentity_get_membership_list(entity(mu)));
+ mowgli_node_add(ga, &ga->unode, myentity_get_membership_list(mt));
return ga;
}
-groupacs_t *groupacs_find(mygroup_t *mg, myuser_t *mu, unsigned int flags)
+groupacs_t *groupacs_find(mygroup_t *mg, myentity_t *mt, unsigned int flags)
{
mowgli_node_t *n;
return_val_if_fail(mg != NULL, NULL);
- return_val_if_fail(mu != NULL, NULL);
+ return_val_if_fail(mt != NULL, NULL);
MOWGLI_ITER_FOREACH(n, mg->acs.head)
{
if (flags)
{
- if (ga->mt == entity(mu) && ga->mg == mg && (ga->flags & flags))
+ if (ga->mt == mt && ga->mg == mg && (ga->flags & flags))
return ga;
}
- else if (ga->mt == entity(mu) && ga->mg == mg)
+ else if (ga->mt == mt && ga->mg == mg)
return ga;
}
return NULL;
}
-void groupacs_delete(mygroup_t *mg, myuser_t *mu)
+void groupacs_delete(mygroup_t *mg, myentity_t *mt)
{
groupacs_t *ga;
- ga = groupacs_find(mg, mu, 0);
+ ga = groupacs_find(mg, mt, 0);
if (ga != NULL)
{
mowgli_node_delete(&ga->gnode, &mg->acs);
- mowgli_node_delete(&ga->unode, myentity_get_membership_list(entity(mu)));
+ mowgli_node_delete(&ga->unode, myentity_get_membership_list(mt));
object_unref(ga);
}
}
bool groupacs_sourceinfo_has_flag(mygroup_t *mg, sourceinfo_t *si, unsigned int flag)
{
- return groupacs_find(mg, si->smu, flag) != NULL;
+ return groupacs_find(mg, entity(si->smu), flag) != NULL;
}
unsigned int groupacs_sourceinfo_flags(mygroup_t *mg, sourceinfo_t *si)
{
groupacs_t *ga;
- ga = groupacs_find(mg, si->smu, 0);
+ ga = groupacs_find(mg, entity(si->smu), 0);
if (ga == NULL)
return 0;
E mygroup_t *mygroup_add_id(const char *id, const char *name);
E mygroup_t *mygroup_find(const char *name);
-E groupacs_t *groupacs_add(mygroup_t *mg, myuser_t *mu, unsigned int flags);
-E groupacs_t *groupacs_find(mygroup_t *mg, myuser_t *mu, unsigned int flags);
-E void groupacs_delete(mygroup_t *mg, myuser_t *mu);
+E groupacs_t *groupacs_add(mygroup_t *mg, myentity_t *mt, unsigned int flags);
+E groupacs_t *groupacs_find(mygroup_t *mg, myentity_t *mt, unsigned int flags);
+E void groupacs_delete(mygroup_t *mg, myentity_t *mt);
+
E bool groupacs_sourceinfo_has_flag(mygroup_t *mg, sourceinfo_t *si, unsigned int flag);
E void gs_db_init(void);
{
groupacs_t *ga = n->data;
- if (groupacs_find(ga->mg, req->mu, GA_BAN) != NULL)
+ if (ga->flags & GA_BAN)
continue;
if ((ga->mg->flags & MG_PUBLIC) || (req->si->smu == req->mu || has_priv(req->si, PRIV_GROUP_AUSPEX)))
{
groupacs_t *ga = n->data;
- groupacs_delete(ga->mg, user(ga->mt));
+ groupacs_delete(ga->mg, ga->mt);
}
mowgli_list_free(l);
if (!isuser(mt))
return NULL;
- return groupacs_find(mg, user(mt), GA_CHANACS) != NULL ? ca : NULL;
+ return groupacs_find(mg, mt, GA_CHANACS) != NULL ? ca : NULL;
}
static bool mygroup_can_register_channel(myentity_t *mt)
}
mg = mygroup_add(parv[0]);
- groupacs_add(mg, si->smu, GA_ALL | GA_FOUNDER);
+ groupacs_add(mg, entity(si->smu), GA_ALL | GA_FOUNDER);
logcommand(si, CMDLOG_REGISTER, "REGISTER: \2%s\2", entity(mg)->name);
command_success_nodata(si, _("The group \2%s\2 has been registered to \2%s\2."), entity(mg)->name, entity(si->smu)->name);