#include "../core/config.h"
#include "../core/schedule.h"
#include "../lib/stringbuf.h"
+#include "../noperserv/noperserv.h"
+#include "../noperserv/noperserv_policy.h"
#include "trusts.h"
static void registercommands(int, void *);
static void deregistercommands(int, void *);
-typedef int (*trustmodificationfn)(void *, char *arg);
+typedef int (*trustmodificationfn)(void *, char *arg, int);
struct trustmodification {
char name[50];
return CMD_OK;
}
-static int modifycomment(void *arg, char *comment) {
+static int modifycomment(void *arg, char *comment, int override) {
trustgroup *tg = arg;
sstring *n = getsstring(comment, COMMENTLEN);
if(!n)
return 1;
}
-static int modifycontact(void *arg, char *contact) {
+static int modifycontact(void *arg, char *contact, int override) {
trustgroup *tg = arg;
sstring *n = getsstring(contact, CONTACTLEN);
if(!n)
return 1;
}
-static int modifytrustedfor(void *arg, char *num) {
+static int modifytrustedfor(void *arg, char *num, int override) {
trustgroup *tg = arg;
unsigned int trustedfor = strtoul(num, NULL, 10);
- if(trustedfor > MAXTRUSTEDFOR)
+ if(!override && (trustedfor <= 0 || trustedfor > MAXTRUSTEDFOR))
return 0;
tg->trustedfor = trustedfor;
return 1;
}
-static int modifymaxperident(void *arg, char *num) {
+static int modifymaxperident(void *arg, char *num, int override) {
trustgroup *tg = arg;
unsigned int maxperident = strtoul(num, NULL, 10);
- if(maxperident > MAXPERIDENT)
+ if(!override && (maxperident <= 0 || maxperident > MAXPERIDENT))
return 0;
tg->maxperident = maxperident;
return 1;
}
-static int modifyenforceident(void *arg, char *num) {
+static int modifyenforceident(void *arg, char *num, int override) {
trustgroup *tg = arg;
if(num[0] == '1') {
return 1;
}
-static int modifyexpires(void *arg, char *expires) {
+static int modifyexpires(void *arg, char *expires, int override) {
trustgroup *tg = arg;
int howlong = durationtolong(expires);
return 1;
}
-static int modifymaxpernode(void *arg, char *num) {
+static int modifymaxpernode(void *arg, char *num, int override) {
trusthost *th = arg;
int maxpernode = strtol(num, NULL, 10);
return 1;
}
-static int modifynodebits(void *arg, char *num) {
+static int modifynodebits(void *arg, char *num, int override) {
trusthost *th = arg;
int nodebits = strtol(num, NULL, 10);
trustgroup *tg;
nick *sender = source;
char *what, *to, validfields[512];
- int i;
+ int i, override;
StringBuf b;
if(cargc < 3)
what = cargv[1];
to = cargv[2];
+ override = noperserv_policy_command_permitted(NO_DEVELOPER, sender);
+
sbinit(&b, validfields, sizeof(validfields));
for(i=0;i<trustgroupmods_a.cursi;i++) {
if(!strcmp(what, trustgroupmods[i].name)) {
- if(!(trustgroupmods[i].fn)(tg, to)) {
+ if(!(trustgroupmods[i].fn)(tg, to, override)) {
controlreply(sender, "An error occured changing that property, check the syntax.");
return CMD_ERROR;
}
trusthost *th;
nick *sender = source;
char *what, *to, validfields[512];
- int i;
+ int i, override;
StringBuf b;
struct irc_in_addr ip;
unsigned char bits;
what = cargv[2];
to = cargv[3];
+ override = noperserv_policy_command_permitted(NO_DEVELOPER, sender);
+
sbinit(&b, validfields, sizeof(validfields));
for(i=0;i<trusthostmods_a.cursi;i++) {
if(!strcmp(what, trusthostmods[i].name)) {
- if(!(trusthostmods[i].fn)(th, to)) {
+ if(!(trusthostmods[i].fn)(th, to, override)) {
controlreply(sender, "An error occured changing that property, check the syntax.");
return CMD_ERROR;
}