/*
* server.h: header for server.c
*
* Written By Michael Sandrof
*
* Copyright (c) 1990 Michael Sandrof.
* Copyright (c) 1991, 1992 Troy Rollo.
* Copyright (c) 1992-2003 Matthew R. Green.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: server.h,v 1.17 2006/03/22 17:16:49 f Exp $
*/
#ifndef __server_h_
#define __server_h_
/* for ChannelList */
#include "names.h"
/**************************** Patched by Flier ******************************/
#ifdef HAVE_SSL
#include "myssl.h"
#endif
/****************************************************************************/
/*
* type definition to distinguish different
* server versions
*/
#define Server2_5 0
#define Server2_6 1
#define Server2_7 2
#define Server2_8 3
#define Server2_9 4
#define Server2_10 5
#define Server2_11 6
#define Server2_90 90
/* 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 *nickname; /* nickname for this server */
char *away; /* away message for this server */
int operator; /* true if operator */
int version; /* the version of the server -
* defined above */
char *version_string; /* what is says */
int whois; /* true if server sends numeric 318 */
int flags; /* Various flags */
/**************************** PATCHED by Flier ******************************/
int umodeflags; /* holds usermode for lowercase modes */
int umodeflags2; /* holds usermode for uppercase modes */
/****************************************************************************/
int connected; /* true if connection is assured */
int write; /* write descriptor */
int read; /* read descriptior */
pid_t pid; /* process id of server */
int eof; /* eof flag for server */
int motd; /* motd flag (used in notice.c) */
int sent; /* set if something has been sent,
* used for redirect */
char *buffer; /* buffer of what dgets() doesn't get */
WhoisQueue *WQ_head; /* WHOIS Queue head */
WhoisQueue *WQ_tail; /* WHOIS Queue tail */
WhoisStuff whois_stuff; /* Whois Queue current collection buffer */
int close_serv; /* Server to close when we're LOGGED_IN */
time_t ctcp_last_reply_time; /* used to limit flooding */
time_t ctcp_flood_time;
int ctcp_backlog_size;
int *ctcp_send_size;
struct in_addr local_addr; /* ip address of this connection */
ChannelList *chan_list; /* list of channels for this server */
void (*parse_server) _((char *)); /* pointer to parser for this server */
/**************************** PATCHED by Flier ******************************/
int SZWI; /* when doing whois */
int SZWho; /* when doing who */
int SZUnban; /* when doing unban */
char *LastMessage; /* last received message */
char *LastNotice; /* last received notice */
char *LastMessageSent; /* last sent message */
char *LastNoticeSent; /* last sent notice */
char *LastJoin; /* last person to join */
time_t ConnectTime; /* when the server was connected */
struct nicks *arlist,*arcur; /* auto-reply list */
struct nicks *nicklist, /* tabkey list */
*nickcur;
ChannelList *ChanPendingList; /* list of channels pending for join */
#ifdef HAVE_SSL
int enable_ssl;
gnutls_session session;
gnutls_certificate_credentials xcred;
#endif
/****************************************************************************/
} Server;
typedef struct ser_group_list
{
struct ser_group_list *next;
char *name;
int number;
} SGroup;
typedef unsigned short ServerType;
int find_server_group _((char *, int));
char * find_server_group_name _((int));
void add_to_server_list _((char *, int, char *, char *, int));
void build_server_list _((char *));
int connect_to_server _((char *, int, char *, int));
/**************************** PATCHED by Flier ******************************/
/*void get_connected _((int));*/
void get_connected _((int, int));
/****************************************************************************/
int read_server_file _((void));
void display_server_list _((void));
void do_server _((fd_set *, fd_set *));
#ifdef HAVE_STDARG_H
void send_to_server _((char *, ...));
#else
void send_to_server _(());
#endif /* HAVE_STDARG_H */
int get_server_whois _((int));
WhoisStuff *get_server_whois_stuff _((int));
WhoisQueue *get_server_qhead _((int));
WhoisQueue *get_server_qtail _((int));
extern int save_chan_from; /* to keep the channel list if all servers
* are lost */
extern int attempting_to_connect;
extern int number_of_servers;
extern int connected_to_server;
extern int never_connected;
extern int using_server_process;
extern int primary_server;
extern int from_server;
extern char *connect_next_nick;
extern char *connect_next_password;
extern int parsing_server_index;
extern SGroup *server_group_list;
void servercmd _((char *, char *, char *));
char *get_server_nickname _((int));
char *get_server_name _((int));
char *get_server_itsname _((int));
void set_server_flag _((int, int, int));
int find_in_server_list _((char *, int, char *));
char *create_server_list _((void));
void remove_from_server_list _((int));
void set_server_motd _((int, int));
int get_server_motd _((int));
int get_server_operator _((int));
int get_server_2_6_2 _((int));
int get_server_version _((int));
char *get_server_password _((int));
void close_server _((int, char *));
void MarkAllAway _((char *, char *));
int is_server_connected _((int));
void flush_server _((void));
int get_server_flag _((int, int));
/**************************** PATCHED by Flier ******************************/
int get_server_umode_flag _((int, char));
void set_server_umode_flag _((int, char, int));
/****************************************************************************/
void set_server_operator _((int, int));
void server_is_connected _((int, int));
int parse_server_index _((char *));
void parse_server_info _((char **, char **, char **, char **, char **));
void set_server_bits _((fd_set *, fd_set *));
void set_server_itsname _((int, char *));
void set_server_version _((int, int));
int is_server_open _((int));
/**************************** PATCHED by Flier ******************************/
int is_server_valid _((int));
/****************************************************************************/
int get_server_port _((int));
char *set_server_password _((int, char *));
void set_server_nickname _((int, char *));
void set_server_2_6_2 _((int, int));
void set_server_qhead _((int, WhoisQueue *));
void set_server_qtail _((int, WhoisQueue *));
void set_server_whois _((int, int));
void close_all_server _((void));
void disconnectcmd _((char *, char *, char *));
void ctcp_reply_backlog_change _((int));
/* server_list: the list of servers that the user can connect to,etc */
extern Server *server_list;
#define SERVER_2_6_2 0x0100
#define CLOSE_PENDING 0x0200 /* set for servers who are being switched away from, but have not yet connected. */
#define LOGGED_IN 0x0400
#define CLEAR_PENDING 0x0800 /* set for servers whose channels are to be removed when a connect has been established. */
/**************************** Patched by Flier ******************************/
#define SSL_CONNECT 0x100000
/****************************************************************************/
#endif /* __server_h_ */
syntax highlighted by Code2HTML, v. 0.9.1