#define MODEBUFLEN 200 /**< Maximum length of a mode */
#define KEYLEN 23 /**< Maximum length of a key */
-#define PASSLEN 23 /**< Maximum length of a password */
#define CHANNELLEN 200 /**< Maximum length of a channel */
#define MAXJOINARGS 15 /**< number of slots for join buffer */
/** channel not shown but names are */
#define HiddenChannel(x) ((x) && ((x)->mode.mode & MODE_PRIVATE))
/** channel visible */
-#define ShowChannel(v,c) (PubChannel(c) || find_channel_member((v),(c)) || \
- (IsAnOper(v) && HasPriv(v, PRIV_LIST_CHAN)))
+#define ShowChannel(v,c) (PubChannel(c) || find_channel_member((v),(c)))
#define PubChannel(x) ((!x) || ((x)->mode.mode & \
(MODE_PRIVATE | MODE_SECRET)) == 0)
#define LISTARG_TOPICLIMITS 0x0001
#define LISTARG_SHOWSECRET 0x0002
+#define LISTARG_NEGATEWILDCARD 0x0004
/**
* Maximum acceptable lag time in seconds: A channel younger than
*/
#define TS_LAG_TIME 86400
-/**
- * A Magic TS that is used for channels that are created by JOIN,
- * a channel with this TS accepts all TS without complaining that
- * it might receive later via MODE or CREATE.
- *
- * Part of the P9 compatibility, shouldn't occur on a P10 network.
- */
-#define MAGIC_REMOTE_JOIN_TS 1270080000
-
-/**
- * used in can_join to determine if an oper forced a join on a channel
- */
-#define MAGIC_OPER_OVERRIDE 1000
extern const char* const PartFmt1;
unsigned int mode;
unsigned int limit;
char key[KEYLEN + 1];
- char upass[PASSLEN + 1];
- char apass[PASSLEN + 1];
+ char upass[KEYLEN + 1];
+ char apass[KEYLEN + 1];
};
#define BAN_IPMASK 0x0001 /**< ban mask is an IP-number mask */
/** A single ban for a channel. */
struct Ban {
- struct Ban* next; /**< next ban in the channel */
+ struct Ban* next; /**< next ban in the channel */
struct irc_in_addr address; /**< addres for BAN_IPMASK bans */
- time_t when; /**< timestamp when ban was added */
- unsigned short flags; /**< modifier flags for the ban */
- unsigned char nu_len; /**< length of nick!user part of banstr */
- unsigned char addrbits; /**< netmask length for BAN_IPMASK bans */
- char *who; /**< name of client that set the ban */
- char *banstr; /**< hostmask that the ban matches */
+ time_t when; /**< timestamp when ban was added */
+ unsigned short flags; /**< modifier flags for the ban */
+ unsigned char nu_len; /**< length of nick!user part of banstr */
+ unsigned char addrbits; /**< netmask length for BAN_IPMASK bans */
+ char who[NICKLEN+1]; /**< name of client that set the ban */
+ char banstr[NICKLEN+USERLEN+HOSTLEN+3]; /**< hostmask that the ban matches */
};
/** Information about a channel */
time_t max_topic_time;
time_t min_topic_time;
unsigned int bucket;
+ char wildcard[CHANNELLEN];
};
struct ModeBuf {
char *mbma_string; /**< A string */
struct Client *mbma_client; /**< A client */
} mbm_arg; /**< The mode argument */
+ unsigned short mbm_oplevel; /**< Oplevel for a bounce */
} mb_modeargs[MAXMODEPARAMS];
/**< A mode w/args */
};
#define MB_UINT(mb, i) ((mb)->mb_modeargs[(i)].mbm_arg.mbma_uint)
#define MB_STRING(mb, i) ((mb)->mb_modeargs[(i)].mbm_arg.mbma_string)
#define MB_CLIENT(mb, i) ((mb)->mb_modeargs[(i)].mbm_arg.mbma_client)
+#define MB_OPLEVEL(mb, i) ((mb)->mb_modeargs[(i)].mbm_oplevel)
/** A buffer represeting a list of joins to send */
struct JoinBuf {
/*
* Proto types
*/
-extern void clean_channelname(char* name);
extern void channel_modes(struct Client *cptr, char *mbuf, char *pbuf,
int buflen, struct Channel *chptr,
struct Membership *member);
const struct Client* cptr);
extern int sub1_from_channel(struct Channel* chptr);
extern int destruct_channel(struct Channel* chptr);
-extern int can_join(struct Client *sptr, struct Channel *chptr, char *key);
extern void add_user_to_channel(struct Channel* chptr, struct Client* who,
unsigned int flags, int oplevel);
extern void make_zombie(struct Membership* member, struct Client* who,
extern void modebuf_mode_string(struct ModeBuf *mbuf, unsigned int mode,
char *string, int free);
extern void modebuf_mode_client(struct ModeBuf *mbuf, unsigned int mode,
- struct Client *client);
+ struct Client *client, int oplevel);
extern int modebuf_flush(struct ModeBuf *mbuf);
extern void modebuf_extract(struct ModeBuf *mbuf, char *buf);