File: s_chanserv.h

package info (click to toggle)
ratbox-services 1.2.4%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 11,760 kB
  • ctags: 6,989
  • sloc: ansic: 76,435; sh: 17,527; cpp: 3,029; perl: 1,048; makefile: 740; pascal: 607; yacc: 256; lex: 232
file content (94 lines) | stat: -rw-r--r-- 1,993 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/* $Id: s_chanserv.h 23704 2007-03-16 21:46:42Z leeh $ */
#ifndef INCLUDED_s_chanserv_h
#define INCLUDED_s_chanserv_h

struct user_reg;
struct chmode;

/* Flags stored in the DB: 0xFFFF */
#define CS_FLAGS_SUSPENDED	0x0001
#define CS_FLAGS_NOOPS		0x0002
#define CS_FLAGS_AUTOJOIN	0x0004
#define CS_FLAGS_WARNOVERRIDE	0x0008
#define CS_FLAGS_RESTRICTOPS	0x0010
#define CS_FLAGS_NOVOICES	0x0020
#define CS_FLAGS_NOVOICECMD	0x0040
#define CS_FLAGS_NOUSERBANS	0x0080

/* those flags shown in CHANSERV::INFO */
#define CS_FLAGS_SHOW	(CS_FLAGS_NOOPS|CS_FLAGS_AUTOJOIN|\
			 CS_FLAGS_WARNOVERRIDE|CS_FLAGS_RESTRICTOPS|\
			 CS_FLAGS_NOVOICES|CS_FLAGS_NOVOICECMD|\
			 CS_FLAGS_NOUSERBANS)

/* Flags not stored in the DB: 0xFFFF0000 */
#define CS_FLAGS_NEEDUPDATE	0x00010000
#define CS_FLAGS_INHABIT	0x00020000

#define CS_MEMBER_AUTOOP	0x001
#define CS_MEMBER_AUTOVOICE	0x002

/* used to validate flags on db load.. */
#define CS_MEMBER_ALL		(CS_MEMBER_AUTOOP|CS_MEMBER_AUTOVOICE)

struct chan_reg
{
	char *name;
	char *topic;
	char *url;
	char *suspender;
	char *suspend_reason;
	time_t suspend_time;
	struct chmode cmode;
	struct chmode emode;

	int flags;

	time_t tsinfo;
	time_t reg_time;
	time_t last_time;
	unsigned long bants;

	dlink_node node;

	dlink_list users;
	dlink_list bans;
};

struct member_reg
{
	struct user_reg *user_reg;
	struct chan_reg *channel_reg;

	int level;
	int flags;
	int suspend;
	unsigned long bants;

	char *lastmod;			/* last user to modify this membership */

	dlink_node usernode;
	dlink_node channode;
};

struct ban_reg
{
	char *mask;
	char *reason;
	char *username;
	int level;
	time_t hold;
	int marked;

	dlink_node channode;
};

#define CHAN_SUSPEND_EXPIRED(x) ((x)->flags & CS_FLAGS_SUSPENDED && (x)->suspend_time && \
				(x)->suspend_time <= CURRENT_TIME)

void free_channel_reg(struct chan_reg *);
void free_member_reg(struct member_reg *, int);

void s_chanserv_countmem(size_t *, size_t *, size_t *, size_t *, size_t *, size_t *, size_t *);

#endif