]> jfr.im git - solanum.git/blobdiff - include/s_conf.h
Warn opers about unresponsive servers
[solanum.git] / include / s_conf.h
index 17157375b5d9257bb54ca2714609dbe686b868af..53233ee1cda4408ff879f5d6da49b08467d17dad 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  charybdis: Advanced, scalable Internet Relay Chat.
+ *  solanum: Advanced, scalable Internet Relay Chat.
  *  s_conf.h: A header for the configuration functions.
  *
  *  Copyright (C) 1990 Jarkko Oikarinen and University of Oulu, Co Center
@@ -65,6 +65,7 @@ struct ConfItem
        char *passwd;           /* doubles as kline reason *ugh* */
        char *spasswd;          /* Password to send. */
        char *user;             /* user part of user@host */
+       char *desc;             /* description */
        int port;
        time_t hold;            /* Hold action until this time (calendar time) */
        time_t created;         /* Creation time (for klines etc) */
@@ -72,45 +73,49 @@ struct ConfItem
        char *className;        /* Name of class */
        struct Class *c_class;  /* Class of connection */
        rb_patricia_node_t *pnode;      /* Our patricia node */
+       int umodes, umodes_mask;        /* Override umodes specified by mask */
 };
 
-#define CONF_ILLEGAL            0x80000000
-#define CONF_CLIENT             0x0002
-#define CONF_KILL               0x0040
+#define CONF_ILLEGAL           0x80000000
+#define CONF_CLIENT            0x0002
+#define CONF_KILL              0x0040
 #define CONF_XLINE             0x0080
 #define CONF_RESV_CHANNEL      0x0100
 #define CONF_RESV_NICK         0x0200
 #define CONF_RESV              (CONF_RESV_CHANNEL | CONF_RESV_NICK)
 
-#define CONF_DLINE             0x20000
-#define CONF_EXEMPTDLINE      0x100000
+#define CONF_DLINE             0x020000
+#define CONF_EXEMPTDLINE       0x100000
+#define CONF_SECURE            0x200000
 
 #define IsIllegal(x)    ((x)->status & CONF_ILLEGAL)
 
 /* aConfItem->flags */
 
 /* Generic flags... */
-#define CONF_FLAGS_TEMPORARY            0x00800000
+#define CONF_FLAGS_TEMPORARY           0x00800000
 #define CONF_FLAGS_NEED_SSL            0x00000002
-#define CONF_FLAGS_MYOPER              0x00080000 /* need to rewrite info.oper on burst */
+#define CONF_FLAGS_MYOPER              0x00080000      /* need to rewrite info.oper on burst */
 /* auth{} flags... */
-#define CONF_FLAGS_NO_TILDE             0x00000004
-#define CONF_FLAGS_NEED_IDENTD          0x00000008
-#define CONF_FLAGS_EXEMPTKLINE          0x00000040
-#define CONF_FLAGS_NOLIMIT              0x00000080
-#define CONF_FLAGS_SPOOF_IP             0x00000200
+#define CONF_FLAGS_NO_TILDE            0x00000004
+#define CONF_FLAGS_NEED_IDENTD         0x00000008
+#define CONF_FLAGS_EXEMPTKLINE         0x00000040
+#define CONF_FLAGS_NOLIMIT             0x00000080
+#define CONF_FLAGS_SPOOF_IP            0x00000200
 #define CONF_FLAGS_SPOOF_NOTICE                0x00000400
-#define CONF_FLAGS_REDIR                0x00000800
+#define CONF_FLAGS_REDIR               0x00000800
 #define CONF_FLAGS_EXEMPTRESV          0x00002000      /* exempt from resvs */
-#define CONF_FLAGS_EXEMPTFLOOD          0x00004000
+#define CONF_FLAGS_EXEMPTFLOOD         0x00004000
 #define CONF_FLAGS_EXEMPTSPAMBOT       0x00008000
 #define CONF_FLAGS_EXEMPTSHIDE         0x00010000
 #define CONF_FLAGS_EXEMPTJUPE          0x00020000      /* exempt from resv generating warnings */
 #define CONF_FLAGS_NEED_SASL           0x00040000
 #define CONF_FLAGS_EXTEND_CHANS                0x00080000
-#define CONF_FLAGS_ENCRYPTED            0x00200000
+#define CONF_FLAGS_ENCRYPTED           0x00200000
 #define CONF_FLAGS_EXEMPTDNSBL         0x04000000
 #define CONF_FLAGS_EXEMPTPROXY         0x08000000
+#define CONF_FLAGS_ALLOW_SCTP          0x10000000
+#define CONF_FLAGS_KLINE_SPOOF         0x20000000
 
 
 /* Macros for struct ConfItem */
@@ -134,6 +139,14 @@ struct ConfItem
 #define IsConfExemptProxy(x)   ((x)->flags & CONF_FLAGS_EXEMPTPROXY)
 #define IsConfExtendChans(x)   ((x)->flags & CONF_FLAGS_EXTEND_CHANS)
 #define IsConfSSLNeeded(x)     ((x)->flags & CONF_FLAGS_NEED_SSL)
+#define IsConfAllowSCTP(x)     ((x)->flags & CONF_FLAGS_ALLOW_SCTP)
+#define IsConfKlineSpoof(x)    ((x)->flags & CONF_FLAGS_KLINE_SPOOF)
+
+enum stats_l_oper_only {
+       STATS_L_OPER_ONLY_NO,
+       STATS_L_OPER_ONLY_SELF,
+       STATS_L_OPER_ONLY_YES,
+};
 
 /* flag definitions for opers now in client.h */
 
@@ -162,7 +175,6 @@ struct config_file_entry
        char *fname_operspylog;
        char *fname_ioerrorlog;
 
-       unsigned char compression_level;
        int disable_fake_channels;
        int dots_in_ident;
        int failed_oper_notice;
@@ -176,22 +188,23 @@ struct config_file_entry
        int ts_warn_delta;
        int dline_with_reason;
        int kline_with_reason;
-       int kline_delay;
+       int hide_tkdline_duration;
        int warn_no_nline;
        int nick_delay;
        int non_redundant_klines;
        int stats_e_disabled;
        int stats_c_oper_only;
        int stats_y_oper_only;
-       int stats_h_oper_only;
        int stats_o_oper_only;
        int stats_k_oper_only;
+       enum stats_l_oper_only stats_l_oper_only;
        int stats_i_oper_only;
        int stats_P_oper_only;
        int map_oper_only;
        int operspy_admin_only;
        int pace_wait;
        int pace_wait_simple;
+       int ping_warn_time;
        int short_motd;
        int no_oper_flood;
        int hide_server;
@@ -211,6 +224,7 @@ struct config_file_entry
        int tkline_expire_notices;
        int use_whois_actually;
        int disable_auth;
+       int post_registration_delay;
        int connect_timeout;
        int burst_away;
        int reject_ban_time;
@@ -227,6 +241,10 @@ struct config_file_entry
        int use_propagated_bans;
        int max_ratelimit_tokens;
        int away_interval;
+       int tls_ciphers_oper_only;
+       int oper_secure_only;
+
+       char **hidden_caps;
 
        int client_flood_max_lines;
        int client_flood_burst_rate;
@@ -238,6 +256,18 @@ struct config_file_entry
        int certfp_method;
 
        int hide_opers_in_whois;
+       int hide_opers;
+
+       char *drain_reason;
+       char *sasl_only_client_message;
+       char *identd_only_client_message;
+       char *sctp_forbidden_client_message;
+       char *ssltls_only_client_message;
+       char *not_authorised_client_message;
+       char *illegal_hostname_client_message;
+       char *server_full_client_message;
+       char *illegal_name_long_client_message;
+       char *illegal_name_short_client_message;
 };
 
 struct config_channel_entry
@@ -265,6 +295,8 @@ struct config_channel_entry
        unsigned int autochanmodes;
        int displayed_usercount;
        int strip_topic_colors;
+       int opmod_send_statusmsg;
+       int ip_bans_through_vhost;
 };
 
 struct config_server_hide
@@ -281,16 +313,9 @@ struct server_info
        char sid[4];
        char *description;
        char *network_name;
-       int hub;
-       struct sockaddr_in ip;
+       struct rb_sockaddr_storage bind4;
+       struct rb_sockaddr_storage bind6;
        int default_max_clients;
-#ifdef RB_IPV6
-       struct sockaddr_in6 ip6;
-#endif
-       int specific_ipv4_vhost;
-#ifdef RB_IPV6
-       int specific_ipv6_vhost;
-#endif
        char *ssl_private_key;
        char *ssl_ca_cert;
        char *ssl_cert;
@@ -312,12 +337,9 @@ struct alias_entry
        char *name;
        char *target;
        int flags;                      /* reserved for later use */
-       int hits;
 };
 
 /* All variables are GLOBAL */
-extern int specific_ipv4_vhost;        /* used in s_bsd.c */
-extern int specific_ipv6_vhost;
 extern struct config_file_entry ConfigFileEntry;       /* defined in ircd.c */
 extern struct config_channel_entry ConfigChannel;      /* defined in channel.c */
 extern struct config_server_hide ConfigServerHide;     /* defined in s_conf.c */
@@ -327,7 +349,7 @@ extern struct admin_info AdminInfo; /* defined in ircd.c */
 
 extern rb_dlink_list service_list;
 
-extern rb_dlink_list prop_bans;
+extern rb_dictionary *prop_bans_dict;
 
 typedef enum temp_list
 {
@@ -346,8 +368,11 @@ extern void init_s_conf(void);
 extern struct ConfItem *make_conf(void);
 extern void free_conf(struct ConfItem *);
 
-extern rb_dlink_node *find_prop_ban(unsigned int status, const char *user, const char *host);
-extern void deactivate_conf(struct ConfItem *, rb_dlink_node *, time_t);
+extern struct ConfItem *find_prop_ban(unsigned int status, const char *user, const char *host);
+extern void add_prop_ban(struct ConfItem *);
+extern void remove_prop_ban(struct ConfItem *);
+extern bool lookup_prop_ban(struct ConfItem *);
+extern void deactivate_conf(struct ConfItem *, time_t);
 extern void replace_old_ban(struct ConfItem *);
 
 extern void read_conf_files(bool cold);
@@ -355,12 +380,13 @@ extern void read_conf_files(bool cold);
 extern int attach_conf(struct Client *, struct ConfItem *);
 extern int check_client(struct Client *client_p, struct Client *source_p, const char *);
 
+extern void deref_conf(struct ConfItem *);
 extern int detach_conf(struct Client *);
 
 extern struct ConfItem *find_tkline(const char *, const char *, struct sockaddr *);
 extern char *show_iline_prefix(struct Client *, struct ConfItem *, char *);
 extern void get_printable_conf(struct ConfItem *,
-                              char **, char **, const char **, char **, int *, char **);
+                              char **, char **, const char **, char **, int *, char **, char **);
 extern char *get_user_ban_reason(struct ConfItem *aconf);
 extern void get_printable_kline(struct Client *, struct ConfItem *,
                                char **, char **, char **, char **);
@@ -385,7 +411,7 @@ extern void conf_add_class(struct ConfItem *, int);
 extern void conf_add_d_conf(struct ConfItem *);
 extern void flush_expired_ips(void *);
 
-extern char *get_oper_name(struct Client *client_p);
+extern const char *get_oper_name(struct Client *client_p);
 
 extern int yylex(void);