2 typedef int neonserv_cmd_set_function(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument);
3 static int neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument);
4 static int neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument);
5 static int neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument);
6 static int neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument);
8 #define NS_VALID_FUNCTION 0x01
9 #define NS_VALID_STRING 0x02
10 #define NS_VALID_ACCESS 0x04
11 #define NS_VALID_NO501 0x08
12 #define NS_VALID_OPTIONS 0x10
13 #define NS_VALID_NUMERIC 0x20
14 #define NS_VALID_BOOLEAN 0x40
18 const char *chanfield;
21 } channel_settings[] {
22 {"trigger", "channel_trigger", NS_VALID_FUNCTION, neonserv_cmd_set_trigger},
23 {"defaulttopic", "channel_defaulttopic", NS_VALID_STRING, NULL},
24 {"topicmask", "channel_topicmask", NS_VALID_STRING, NULL},
25 {"greeting", "channel_greeting", NS_VALID_STRING, NULL},
26 {"usergreeting", "channel_usergreeting", NS_VALID_STRING, NULL},
27 {"userinfo", "channel_userinfo", NS_VALID_ACCESS, NULL},
28 {"wipeinfo", "channel_wipeinfo", NS_VALID_ACCESS, NULL},
29 {"modes", "channel_modes", NS_VALID_FUNCTION, neonserv_cmd_set_modes},
30 {"inviteme", "channel_getinvite", NS_VALID_ACCESS, NULL},
31 {"giveops", "channel_getop", NS_VALID_ACCESS, NULL},
32 {"givevoice", "channel_getvoice", NS_VALID_ACCESS, NULL},
33 {"enfops", "channel_canop", NS_VALID_ACCESS, NULL},
34 {"enfvoice", "channel_canvoice", NS_VALID_ACCESS, NULL},
35 {"kick", "channel_cankick", NS_VALID_ACCESS, NULL},
36 {"ban", "channel_canban", NS_VALID_ACCESS, NULL},
37 {"staticban", "channel_staticban", NS_VALID_ACCESS, NULL},
38 {"pubcmd", "channel_pubcmd", NS_VALID_ACCESS, NULL},
39 {"enfmodes", "channel_enfmodes", NS_VALID_ACCESS, NULL},
40 {"enftopic", "channel_enftopic", NS_VALID_ACCESS, NULL},
41 {"topicsnarf", "channel_topicsnarf", NS_VALID_ACCESS, NULL},
42 {"changetopic", "channel_changetopic", NS_VALID_ACCESS, NULL},
43 {"setters", "channel_setters", NS_VALID_ACCESS | NS_VALID_NO501, NULL},
44 {"adduser", "channel_canadd", NS_VALID_ACCESS, NULL},
45 {"deluser", "channel_candel", NS_VALID_ACCESS, NULL},
46 {"clvl", "channel_canclvl", NS_VALID_ACCESS, NULL},
47 {"resync", "channel_canresync", NS_VALID_ACCESS, NULL},
48 {"suspend", "channel_cansuspend", NS_VALID_ACCESS, NULL},
49 {"noticeusers", "channel_notice", NS_VALID_ACCESS, NULL},
50 {"noticereaction", "channel_noticereaction", NS_VALID_OPTIONS, 4},
51 {"ctcpusers", "channel_ctcp", NS_VALID_ACCESS, NULL},
52 {"ctcpreaction", "channel_ctcpreaction", NS_VALID_OPTIONS, 4},
53 {"protect", "channel_protect", NS_VALID_OPTIONS, 4},
54 {"toys", "channel_toys", NS_VALID_OPTIONS, 3},
55 {"dynlimit", "channel_dynlimit", NS_VALID_NUMERIC | NS_VALID_FUNCTION, neonserv_cmd_set_dynlimit},
56 {"nodelete", "channel_nodelete", NS_VALID_BOOLEAN | NS_VALID_FUNCTION, neonserv_cmd_set_nodelete},
60 static CMD_BIND(neonserv_cmd_set) {