⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.h

📁 EPIC IRC客户端。来源于IRCII客户端但做了很多性能和功能的优化。
💻 H
字号:
/* * server.h: header for server.c  * * Copyright 1990 Michael Sandrof * Copyright 1997 EPIC Software Labs * See the COPYRIGHT file, or do a HELP IRCII COPYRIGHT  */#ifndef __server_h__#define __server_h__  /* To get definition of Who, Ison, and Userhost queues. */#include "who.h"#ifdef NEED_SERVER_LIST/* To get definition of Notify */#include "notify.h"#include "alist.h"/* XXXX Ick.  Gross.  Bad. XXX */struct notify_stru;typedef array A005;typedef struct{	char	*name;	u_32int_t hash;	char	*value;} A005_item;typedef struct WaitCmdstru{        char    *stuff;        struct  WaitCmdstru *next;} WaitCmd;/* Server: a structure for the server_list */typedef	struct{	char	*name;			/* the name of the server */	char	*itsname;		/* the server's idea of its name */	char	*password;		/* password for that server */	int	port;			/* port number on that server */	char	*group;			/* Server group it belongs to */	char	*nickname;		/* Authoritative nickname for us */	char	*s_nickname;		/* last NICK command sent */	char	*d_nickname;		/* Default nickname to use */	char	*unique_id;		/* Unique ID (for ircnet) */	size_t	fudge_factor;		/* How much s_nickname's fudged */	int	nickname_pending;	/* Is a NICK command pending? */	int	resetting_nickname;	/* Is a nickname reset in progress? */	int	registration_pending;	/* Is a registration going on ? */	int	registered;		/* true if registration is assured */	int	rejoined_channels;	/* Has we tried to auto-rejoin? */	char	*userhost;		/* my userhost on this server */	char	*away;			/* away message for this server */	int	operator;		/* true if operator */	int	version;		/* the version of the server -					 * defined above */	int	server2_8;		/* defined if we get an 001 numeric */	char	*version_string;	/* what is says */	long	flags;			/* Various flags */	long	flags2;			/* More Various flags */	char	*umodes;		/* Possible user modes */	char	umode[54];		/* Currently set user modes */	int	s_takes_arg;		/* Set to 1 if s user mode has arg */	int	des;			/* file descriptor to server */	int	eof;			/* eof flag for server */	int	sent;			/* set if something has been sent,					 * used for redirect */	char	*redirect;		/* Who we're redirecting to here */	WhoEntry *	who_queue;	/* Who queue */	IsonEntry *	ison_wait;	/* Ison wait queue */	IsonEntry *	ison_queue;	/* Ison queue */	UserhostEntry *	userhost_queue;	/* Userhost queue */	SS	local_sockname; 	/* sockname of this connection */	SS	remote_sockname; 	/* sockname of this connection */	SS	uh_addr;		/* ip address the server sees */	NotifyList	notify_list;	/* Notify list for this server */	int	reconnects;		/* Number of reconnects done */	char 	*cookie;		/* Erf/TS4 "cookie" value */	int	save_channels;		/* True if abnormal connection */	int	line_length;		/* How long a protocol command may be */	int	max_cached_chan_size;	/* Bigger channels won't cache U@H */	int	closing;		/* True if close_server called */	int	reconnect_to;		/* Server to connect to on EOF */	char	*quit_message;		/* Where we stash a quit message */	A005	a005;			/* 005 settings kept kere. */	int	funny_min;		/* Funny stuff */	int	funny_max;	int	funny_flags;	char *	funny_match;#ifdef HAVE_SSL	SSL_CTX*	ctx;	SSL_METHOD*	meth;#endif	void *	ssl_fd;	int	try_ssl;		/* SSL requested on next connection. */	int	ssl_enabled;		/* Current SSL status. */        int             doing_privmsg;        int             doing_notice;        int             doing_ctcp;        int             waiting_in;        int             waiting_out;        WaitCmd *       start_wait_list;        WaitCmd *       end_wait_list;        char *          invite_channel;        char *          last_notify_nick;        char *          joined_nick;        char *          public_nick;        char *          recv_nick;        char *          sent_nick;        char *          sent_body;	int		(*dgets) (char *, int, int, void *);}	Server;extern	Server	**server_list;#endif	/* NEED_SERVER_LIST */	extern	int	number_of_servers;	extern	int	connected_to_server;	extern	int	primary_server;	extern	int	from_server;	extern	int	last_server;	extern	int	parsing_server_index;#ifdef NEED_SERVER_LISTstatic __inline__ Server *	get_server (int server){	if (server == -1 && from_server >= 0)		server = from_server;	if (server < 0 || server >= number_of_servers)		return NULL;	return server_list[server];}/*  * These two macros do bounds checking on server refnums that are * passed into various server functions */#define CHECK_SERVER(x)				\{						\	if (!get_server(x))			\		return;				\}#define CHECK_SERVER_RET(x, y)			\{						\	if (!get_server(x))			\		return (y);			\}#define __FROMSERV	get_server(from_server)#define SERVER(x)	get_server(x)#endif	/* NEED_SERVER_LIST */#define NOSERV		-2#define FROMSERV	-1/* * type definition to distinguish different * server versions */#define Server2_8	1#define Server2_9	2#define Server2_10	3#define Server_u2_8	4#define Server_u2_9	5#define Server_u2_10	6#define Server_u3_0	7/* Funny stuff */#define FUNNY_PUBLIC            1 << 0#define FUNNY_PRIVATE           1 << 1#define FUNNY_TOPIC             1 << 2#define FUNNY_USERS             1 << 4#define FUNNY_NAME              1 << 5	BUILT_IN_COMMAND(servercmd);	BUILT_IN_COMMAND(disconnectcmd);	void	add_to_server_list 		(const char *, int, 						 const char *, const char *, 						 const char *, const char *,						 int);	int	find_in_server_list		(const char *, int);	void	destroy_server_list		(void);	int	find_server_refnum		(char *, char **rest);	int	parse_server_index		(const char *, int);	void	parse_server_info		(char **, char **, char **,						 char **, char **, char **);	void	build_server_list		(char *, char *);	int	read_server_file		(void);	void	display_server_list		(void);	char *	create_server_list		(void);	/* MALLOC */	int	server_list_size		(void);	void	do_server 			(fd_set *, fd_set *);	void	flush_server			(int);	void	send_to_server			(const char *, ...) __A(1);	void	send_to_aserver			(int, const char *, ...) __A(2);	void	send_to_aserver_raw		(int, size_t len, const char *buffer);	int	connect_to_new_server		(int, int, int);	int	close_all_servers		(const char *);	void	close_server			(int, const char *);	void	set_server_away			(int, const char *);const	char *	get_server_away			(int);const	char *	get_possible_umodes		(int);	void	set_possible_umodes		(int, const char *);const	char *	get_umode			(int);	void	clear_user_modes		(int);	void    reinstate_user_modes    	(void);	void    update_user_mode        	(const char *);	void	set_server_flag			(int, int, int);	int	get_server_flag			(int, int);	void	set_server_version		(int, int);	int	get_server_version		(int);	void	set_server_name			(int, const char *);const	char *	get_server_name			(int);	void	set_server_itsname		(int, const char *);const	char *	get_server_itsname		(int);	void	set_server_group		(int, const char *);const	char *	get_server_group		(int);const	char *	get_server_type			(int);	void	set_server_version_string	(int, const char *);const 	char *	get_server_version_string	(int);	int	get_server_isssl		(int);const	char *	get_server_cipher		(int); 	void	register_server			(int, const char *);	void	server_registration_is_not_pending (int);	void	password_sendline		(char *, char *);	char *	set_server_password		(int, const char *);	int	is_server_open			(int);	int	is_server_registered		(int);	void	server_is_registered		(int, int);	int	auto_reconnect_callback		(void *);	int	server_reconnects_to		(int, int);	int	reconnect			(int, int);	int	get_server_port			(int);	int	get_server_local_port		(int);	SS	get_server_local_addr		(int);	SS	get_server_uh_addr		(int);const	char *	get_server_userhost		(int);	void 	got_my_userhost 		(int, UserhostItem *, 						 const char *, const char *);	int	get_server_operator		(int);	void	set_server_operator		(int, int);	void	use_server_cookie		(int);const	char *	get_server_nickname		(int);	int	is_me				(int, const char *);	void	change_server_nickname		(int, const char *);const	char *	get_pending_nickname		(int);	void	accept_server_nickname		(int, const char *);	void	fudge_nickname			(int);	void	nickname_sendline		(char *, char *);	void	reset_nickname			(int);	void	set_server_redirect		(int, const char *);const	char *	get_server_redirect		(int);	int	check_server_redirect		(int, const char *);	void	save_servers			(FILE *);	void	server_did_rejoin_channels	(int);	int	did_server_rejoin_channels	(int);	void	clear_reconnect_counts		(void);	int	get_server_enable_ssl 		(int);	void   	set_server_enable_ssl 		(int, int);	void	make_005			(int);	void	destroy_005			(int);const	char*	get_server_005			(int, const char *);	void	set_server_005			(int, char*, char*);        void    server_hard_wait 		(int);        void    server_passive_wait 		(int, const char *);        int     check_server_wait 		(int, const char *);        void    set_server_doing_privmsg 	(int, int);        int     get_server_doing_privmsg 	(int);        void    set_server_doing_notice 	(int, int);        int     get_server_doing_notice 	(int);        void    set_server_doing_ctcp 		(int, int);        int     get_server_doing_ctcp 		(int);	void	set_server_nickname_pending	(int, int);	int	get_server_nickname_pending	(int);	void	set_server_sent			(int, int);	int	get_server_sent			(int);	void	set_server_try_ssl		(int, int);	int	get_server_try_ssl		(int);	void	set_server_ssl_enabled		(int, int);	int	get_server_ssl_enabled		(int);	void	set_server_save_channels	(int, int);	int	get_server_save_channels	(int);	void	set_server_protocol_state	(int, int);	int	get_server_protocol_state	(int);	void	set_server_line_length		(int, int);	int	get_server_line_length		(int);	void	set_server_max_cached_chan_size	(int, int);	int	get_server_max_cached_chan_size	(int);        void    set_server_invite_channel       (int, const char *);const char *    get_server_invite_channel       (int);        void    set_server_last_notify          (int, const char *);const char *    get_server_last_notify          (int);        void    set_server_joined_nick          (int, const char *);const char *    get_server_joined_nick          (int);        void    set_server_public_nick          (int, const char *);const char *    get_server_public_nick          (int);        void    set_server_recv_nick            (int, const char *);const char *    get_server_recv_nick            (int);        void    set_server_sent_nick            (int, const char *);const char *    get_server_sent_nick            (int);        void	set_server_sent_body            (int, const char *);const char *    get_server_sent_body            (int);	void	set_server_quit_message 	(int, const char *message);const char *    get_server_quit_message		(int);	void	set_server_cookie		(int, const char *);const char *	get_server_cookie         	(int);	void	set_server_last_notify_nick	(int, const char *);const char *	get_server_last_notify_nick    	(int);	void	set_server_unique_id		(int, const char *);const char *	get_server_unique_id    	(int);	void	set_server_funny_min         	(int, int);	int	get_server_funny_min         	(int);	void	set_server_funny_max         	(int, int);	int	get_server_funny_max         	(int);	void	set_server_funny_flags         	(int, int);	int	get_server_funny_flags         	(int);	void	set_server_funny_match		(int, const char *);const char *	get_server_funny_match         	(int);	void	set_server_funny_stuff		(int, int, int, int, const char *);        void    set_server_window_count         (int, int);        int     get_server_window_count         (int);	char *	serverctl			(char *);#endif /* _SERVER_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -