Annotation of ircnowd/src/ngircd/client.h, Revision 1.1.1.1
1.1 tomglok 1: /*
2: * ngIRCd -- The Next Generation IRC Daemon
3: * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
4: *
5: * This program is free software; you can redistribute it and/or modify
6: * it under the terms of the GNU General Public License as published by
7: * the Free Software Foundation; either version 2 of the License, or
8: * (at your option) any later version.
9: * Please read the file COPYING, README and AUTHORS for more information.
10: */
11:
12: #ifndef __client_h__
13: #define __client_h__
14:
15: /**
16: * @file
17: * Client management (header)
18: */
19:
20: #define CLIENT_UNKNOWN 0x0001 /* connection of unknown type */
21: #define CLIENT_GOTPASS 0x0002 /* client did send PASS */
22: #define CLIENT_GOTNICK 0x0004 /* client did send NICK */
23: #define CLIENT_GOTUSER 0x0008 /* client did send USER */
24: #define CLIENT_USER 0x0010 /* client is an IRC user */
25: #define CLIENT_SERVER 0x0020 /* client is a server */
26: #define CLIENT_SERVICE 0x0040 /* client is a service */
27: #define CLIENT_UNKNOWNSERVER 0x0080 /* unregistered server connection */
28: #define CLIENT_GOTPASS_2813 0x0100 /* client did send PASS, RFC 2813 style */
29: #ifndef STRICT_RFC
30: # define CLIENT_WAITAUTHPING 0x0200 /* waiting for AUTH PONG from client */
31: #endif
32: #define CLIENT_WAITCAPEND 0x0400 /* waiting for "CAP END" command */
33: #define CLIENT_ANY 0xFFFF
34:
35: #define CLIENT_TYPE int
36:
37: #include "defines.h"
38:
39: #if defined(__client_c__) | defined(__client_cap_c__) | defined(S_SPLINT_S)
40:
41: typedef struct _CLIENT
42: {
43: time_t starttime; /* Start time of link */
44: char id[CLIENT_ID_LEN]; /* nick (user) / ID (server) */
45: UINT32 hash; /* hash of lower-case ID */
46: POINTER *next; /* pointer to next client structure */
47: CLIENT_TYPE type; /* type of client, see CLIENT_xxx */
48: CONN_ID conn_id; /* ID of the connection (if local) or NONE (remote) */
49: struct _CLIENT *introducer; /* ID of the servers which the client is connected to */
50: struct _CLIENT *topserver; /* toplevel servers (only valid if client is a server) */
51: char host[CLIENT_HOST_LEN]; /* hostname of the client */
52: char *cloaked; /* cloaked hostname of the client */
53: char *ipa_text; /* textual representaton of IP address */
54: char user[CLIENT_USER_LEN]; /* user name ("login") */
55: #if defined(PAM)
56: char orig_user[CLIENT_AUTHUSER_LEN];
57: /* original user name supplied by USER command */
58: #endif
59: char info[CLIENT_INFO_LEN]; /* long user name (user) / info text (server) */
60: char modes[CLIENT_MODE_LEN]; /* client modes */
61: int hops, token, mytoken; /* "hops" and "Token" (see SERVER command) */
62: char *away; /* AWAY text (valid if mode 'a' is set) */
63: char flags[CLIENT_FLAGS_LEN]; /* flags of the client */
64: char *account_name; /* login account (for services) */
65: int capabilities; /* enabled IRC capabilities */
66: } CLIENT;
67:
68: #else
69:
70: typedef POINTER CLIENT;
71:
72: #endif
73:
74:
75: typedef struct _WHOWAS
76: {
77: time_t time; /* time stamp of entry or 0 if unused */
78: char id[CLIENT_NICK_LEN]; /* client nickname */
79: char host[CLIENT_HOST_LEN]; /* hostname of the client */
80: char user[CLIENT_USER_LEN]; /* user name ("login") */
81: char info[CLIENT_INFO_LEN]; /* long user name */
82: char server[CLIENT_HOST_LEN]; /* server name */
83: } WHOWAS;
84:
85:
86: GLOBAL void Client_Init PARAMS(( void ));
87: GLOBAL void Client_Exit PARAMS(( void ));
88:
89: GLOBAL CLIENT *Client_NewLocal PARAMS(( CONN_ID Idx, const char *Hostname, int Type, bool Idented ));
90: GLOBAL CLIENT *Client_NewRemoteServer PARAMS(( CLIENT *Introducer, const char *Hostname, CLIENT *TopServer, int Hops, int Token, const char *Info, bool Idented ));
91: GLOBAL CLIENT *Client_NewRemoteUser PARAMS(( CLIENT *Introducer, const char *Nick, int Hops, const char *User, const char *Hostname, int Token, const char *Modes, const char *Info, bool Idented ));
92:
93: GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit ));
94:
95: GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
96:
97: GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
98:
99: GLOBAL bool Client_Announce PARAMS(( CLIENT *Client, CLIENT *Prefix, CLIENT *User ));
100:
101: GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
102: GLOBAL CLIENT *Client_SearchServer PARAMS(( const char *ID ));
103: GLOBAL CLIENT *Client_First PARAMS(( void ));
104: GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c ));
105:
106: GLOBAL int Client_Type PARAMS(( CLIENT *Client ));
107: GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client ));
108: GLOBAL char *Client_ID PARAMS(( CLIENT *Client ));
109: GLOBAL char *Client_Mask PARAMS(( CLIENT *Client ));
110: GLOBAL char *Client_MaskCloaked PARAMS(( CLIENT *Client ));
111: GLOBAL char *Client_Info PARAMS(( CLIENT *Client ));
112: GLOBAL char *Client_User PARAMS(( CLIENT *Client ));
113: #ifdef PAM
114: GLOBAL char *Client_OrigUser PARAMS(( CLIENT *Client ));
115: #endif
116: GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client ));
117: GLOBAL char *Client_HostnameCloaked PARAMS((CLIENT *Client));
118: GLOBAL char *Client_HostnameDisplayed PARAMS(( CLIENT *Client ));
119: GLOBAL const char *Client_IPAText PARAMS(( CLIENT *Client ));
120: GLOBAL char *Client_Modes PARAMS(( CLIENT *Client ));
121: GLOBAL char *Client_Flags PARAMS(( CLIENT *Client ));
122: GLOBAL CLIENT *Client_Introducer PARAMS(( CLIENT *Client ));
123: GLOBAL int Client_Hops PARAMS(( CLIENT *Client ));
124: GLOBAL int Client_Token PARAMS(( CLIENT *Client ));
125: GLOBAL int Client_MyToken PARAMS(( CLIENT *Client ));
126: GLOBAL CLIENT *Client_TopServer PARAMS(( CLIENT *Client ));
127: GLOBAL CLIENT *Client_NextHop PARAMS(( CLIENT *Client ));
128: GLOBAL char *Client_Away PARAMS(( CLIENT *Client ));
129: GLOBAL char *Client_AccountName PARAMS((CLIENT *Client));
130: GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client ));
131:
132: GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
133: GLOBAL bool Client_HasFlag PARAMS(( CLIENT *Client, char Flag ));
134:
135: GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, const char *Hostname ));
136: GLOBAL void Client_SetIPAText PARAMS(( CLIENT *Client, const char *IPAText ));
137: GLOBAL void Client_SetID PARAMS(( CLIENT *Client, const char *Nick ));
138: GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, const char *User, bool Idented ));
139: GLOBAL void Client_SetOrigUser PARAMS(( CLIENT *Client, const char *User ));
140: GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, const char *Info ));
141: GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type ));
142: GLOBAL void Client_SetHops PARAMS(( CLIENT *Client, int Hops ));
143: GLOBAL void Client_SetToken PARAMS(( CLIENT *Client, int Token ));
144: GLOBAL void Client_SetModes PARAMS(( CLIENT *Client, const char *Modes ));
145: GLOBAL void Client_SetFlags PARAMS(( CLIENT *Client, const char *Flags ));
146: GLOBAL void Client_SetIntroducer PARAMS(( CLIENT *Client, CLIENT *Introducer ));
147: GLOBAL void Client_SetAway PARAMS(( CLIENT *Client, const char *Txt ));
148: GLOBAL void Client_SetAccountName PARAMS((CLIENT *Client, const char *AccountName));
149:
150: GLOBAL bool Client_ModeAdd PARAMS(( CLIENT *Client, char Mode ));
151: GLOBAL bool Client_ModeDel PARAMS(( CLIENT *Client, char Mode ));
152:
153: GLOBAL bool Client_CheckNick PARAMS(( CLIENT *Client, char *Nick ));
154: GLOBAL bool Client_CheckID PARAMS(( CLIENT *Client, char *ID ));
155:
156: GLOBAL long Client_UserCount PARAMS(( void ));
157: GLOBAL long Client_ServiceCount PARAMS(( void ));
158: GLOBAL long Client_ServerCount PARAMS(( void ));
159: GLOBAL unsigned long Client_OperCount PARAMS(( void ));
160: GLOBAL unsigned long Client_UnknownCount PARAMS(( void ));
161: GLOBAL long Client_MyUserCount PARAMS(( void ));
162: GLOBAL long Client_MyServiceCount PARAMS(( void ));
163: GLOBAL unsigned long Client_MyServerCount PARAMS(( void ));
164: GLOBAL long Client_MaxUserCount PARAMS(( void ));
165: GLOBAL long Client_MyMaxUserCount PARAMS(( void ));
166:
167: GLOBAL bool Client_IsValidNick PARAMS(( const char *Nick ));
168:
169: GLOBAL WHOWAS *Client_GetWhowas PARAMS(( void ));
170: GLOBAL int Client_GetLastWhowasIndex PARAMS(( void ));
171:
172: GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client ));
173:
174: GLOBAL const char *Client_TypeText PARAMS((CLIENT *Client));
175:
176: GLOBAL void Client_Reject PARAMS((CLIENT *Client, const char *Reason,
177: bool InformClient));
178: GLOBAL void Client_Introduce PARAMS((CLIENT *From, CLIENT *Client, int Type));
179:
180: GLOBAL void Client_UpdateCloakedHostname PARAMS((CLIENT *Client,
181: CLIENT *Originator,
182: const char *hostname));
183:
184:
185: #ifdef DEBUG
186: GLOBAL void Client_DebugDump PARAMS((void));
187: #endif
188:
189: #endif
190:
191: /* -eof- */
CVSweb