ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/include/client.h
(Generate patch)

Comparing ircd-hybrid/trunk/include/client.h (file contents):
Revision 2345 by michael, Wed Jul 3 18:17:39 2013 UTC vs.
Revision 2949 by michael, Sun Jan 26 20:08:25 2014 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2014 ircd-hybrid development team
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 36 | Line 36
36   #include "channel.h"
37   #include "s_auth.h"
38  
39 + struct MaskItem;
40 +
41   /*
42   * status macros.
43   */
# Line 51 | Line 53
53   #define REG_NEED_CAP  0x4
54   #define REG_INIT (REG_NEED_USER|REG_NEED_NICK)
55  
56 < #define HasID(x)                ((x)->id[0] != '\0')
57 < #define ID(x)                   (HasID(x) ? (x)->id : (x)->name)
58 < #define ID_or_name(x,client_p)  ((IsCapable(client_p, CAP_TS6) && HasID(x)) ? (x)->id : (x)->name)
56 > #define HasID(x)                ((x)->id[0] != '\0')
57 > #define ID(x)                   (HasID(x) ? (x)->id : (x)->name)
58 > #define ID_or_name(x,client_p)  ((IsCapable(client_p->from, CAP_TS6) && HasID(x)) ? (x)->id : (x)->name)
59  
60   #define IsRegistered(x)         ((x)->status  > STAT_UNKNOWN)
61   #define IsConnecting(x)         ((x)->status == STAT_CONNECTING)
# Line 64 | Line 66
66   #define IsClient(x)             ((x)->status == STAT_CLIENT)
67  
68   #define SetConnecting(x)        {(x)->status = STAT_CONNECTING; \
69 <                                 (x)->handler = UNREGISTERED_HANDLER; }
69 >                                 (x)->handler = UNREGISTERED_HANDLER; }
70  
71   #define SetHandshake(x)         {(x)->status = STAT_HANDSHAKE; \
72 <                                 (x)->handler = UNREGISTERED_HANDLER; }
72 >                                 (x)->handler = UNREGISTERED_HANDLER; }
73  
74   #define SetMe(x)                {(x)->status = STAT_ME; \
75 <                                 (x)->handler = UNREGISTERED_HANDLER; }
75 >                                 (x)->handler = UNREGISTERED_HANDLER; }
76  
77   #define SetUnknown(x)           {(x)->status = STAT_UNKNOWN; \
78 <                                 (x)->handler = UNREGISTERED_HANDLER; }
78 >                                 (x)->handler = UNREGISTERED_HANDLER; }
79  
80   #define SetServer(x)            {(x)->status = STAT_SERVER; \
81 <                                 (x)->handler = SERVER_HANDLER; }
81 >                                 (x)->handler = SERVER_HANDLER; }
82  
83   #define SetClient(x)            {(x)->status = STAT_CLIENT; \
84 <                                 (x)->handler = HasUMode(x, UMODE_OPER) ? \
85 <                                        OPER_HANDLER : CLIENT_HANDLER; }
84 >                                 (x)->handler = HasUMode(x, UMODE_OPER) ? \
85 >                                 OPER_HANDLER : CLIENT_HANDLER; }
86  
87   #define MyConnect(x)            ((x)->localClient != NULL)
88   #define MyClient(x)             (MyConnect(x) && IsClient(x))
# Line 97 | Line 99
99  
100   #define CAP_MULTI_PREFIX  0x00000001
101   #define CAP_AWAY_NOTIFY   0x00000002
102 + #define CAP_UHNAMES       0x00000004
103  
104   #define HasCap(x, y) ((x)->localClient->cap_active & (y))
105  
106 +
107   /* housekeeping flags */
108   #define FLAGS_PINGSENT       0x00000001 /**< Unreplied ping sent */
109   #define FLAGS_DEADSOCKET     0x00000002 /**< Local socket is dead--Exiting soon */
# Line 119 | Line 123
123   #define FLAGS_FLOODDONE      0x00008000 /**< Flood grace period has been ended. */
124   #define FLAGS_EOB            0x00010000 /**< server has sent us an EOB */
125   #define FLAGS_HIDDEN         0x00020000 /**< a hidden server. not shown in /links */
126 < #define FLAGS_BLOCKED        0x00040000 /**< must wait for COMM_SELECT_WRITE */
126 > #define FLAGS_UNUSED___      0x00040000 /**<  */
127   #define FLAGS_USERHOST       0x00080000 /**< client is in userhost hash */
128   #define FLAGS_BURSTED        0x00100000 /**< user was already bursted */
129   #define FLAGS_EXEMPTRESV     0x00200000 /**< client is exempt from RESV */
# Line 163 | Line 167
167   #define UMODE_FARCONNECT   0x00800000 /**< Can see remote client connects/exits */
168   #define UMODE_HIDDENHOST   0x01000000 /**< User's host is hidden */
169   #define UMODE_SSL          0x02000000 /**< User is connected via TLS/SSL */
170 + #define UMODE_WEBIRC       0x04000000 /**< User connected via a webirc gateway */
171  
172  
173   #define UMODE_ALL          UMODE_SERVNOTICE
# Line 173 | Line 178
178  
179   #define SEND_UMODES  (UMODE_INVISIBLE | UMODE_OPER | UMODE_WALLOP |\
180                        UMODE_REGONLY | UMODE_REGISTERED | UMODE_ADMIN |\
181 <                      UMODE_HIDDEN | UMODE_HIDDENHOST | UMODE_SSL)
181 >                      UMODE_HIDDEN | UMODE_HIDDENHOST | UMODE_SSL |\
182 >                      UMODE_WEBIRC | UMODE_CALLERID | UMODE_SOFTCALLERID)
183  
184  
185  
# Line 183 | Line 189
189   #define OPER_FLAG_UNKLINE        0x00000004 /**< Oper can use unkline        */
190   #define OPER_FLAG_GLINE          0x00000008 /**< Oper can use gline          */
191   #define OPER_FLAG_K              0x00000010 /**< Oper can kill/kline         */
192 < #define OPER_FLAG_X              0x00000020 /**< Oper can xline              */
192 > #define OPER_FLAG_XLINE          0x00000020 /**< Oper can xline              */
193   #define OPER_FLAG_DIE            0x00000040 /**< Oper can die                */
194   #define OPER_FLAG_REHASH         0x00000080 /**< Oper can rehash             */
195   #define OPER_FLAG_ADMIN          0x00000100 /**< Oper can set umode +a       */
# Line 201 | Line 207
207   #define OPER_FLAG_CONNECT_REMOTE 0x00100000 /**< Oper can do global CONNECT */
208   #define OPER_FLAG_WALLOPS        0x00200000 /**< Oper can do WALLOPS */
209   #define OPER_FLAG_LOCOPS         0x00400000 /**< Oper can do LOCOPS */
210 + #define OPER_FLAG_UNXLINE        0x00800000 /**< Oper can unxline            */
211 +
212  
213   #define HasOFlag(x, y) (MyConnect(x) ? (x)->localClient->operflags & (y) : 0)
214   #define AddOFlag(x, y) ((x)->localClient->operflags |=  (y))
# Line 213 | Line 221
221   #define IsAuthFinished(x)       ((x)->flags & FLAGS_FINISHED_AUTH)
222   #define IsDead(x)               ((x)->flags & FLAGS_DEADSOCKET)
223   #define SetDead(x)              ((x)->flags |= FLAGS_DEADSOCKET)
224 < #define IsClosing(x)            ((x)->flags & FLAGS_CLOSING)
225 < #define SetClosing(x)           ((x)->flags |= FLAGS_CLOSING)
226 < #define SetCanFlood(x)          ((x)->flags |= FLAGS_CANFLOOD)
227 < #define IsCanFlood(x)           ((x)->flags & FLAGS_CANFLOOD)
228 < #define IsDefunct(x)            ((x)->flags & (FLAGS_DEADSOCKET|FLAGS_CLOSING| \
221 <                                               FLAGS_KILLED))
224 > #define IsClosing(x)            ((x)->flags & FLAGS_CLOSING)
225 > #define SetClosing(x)           ((x)->flags |= FLAGS_CLOSING)
226 > #define SetCanFlood(x)          ((x)->flags |= FLAGS_CANFLOOD)
227 > #define IsCanFlood(x)           ((x)->flags & FLAGS_CANFLOOD)
228 > #define IsDefunct(x)            ((x)->flags & (FLAGS_DEADSOCKET|FLAGS_CLOSING|FLAGS_KILLED))
229  
230   /* oper flags */
231   #define MyOper(x)               (MyConnect(x) && HasUMode(x, UMODE_OPER))
232  
233   #define SetOper(x)              {(x)->umodes |= UMODE_OPER; \
234 <                                 if (!IsServer((x))) (x)->handler = OPER_HANDLER;}
234 >                                 if (!IsServer((x))) (x)->handler = OPER_HANDLER;}
235  
236   #define ClearOper(x)            {(x)->umodes &= ~(UMODE_OPER|UMODE_ADMIN); \
237 <                                 if (!HasUMode(x, UMODE_OPER) && !IsServer((x))) \
238 <                                  (x)->handler = CLIENT_HANDLER; }
237 >                                 if (!HasUMode(x, UMODE_OPER) && !IsServer((x))) \
238 >                                  (x)->handler = CLIENT_HANDLER; }
239  
240 < #define SetSendQExceeded(x)     ((x)->flags |= FLAGS_SENDQEX)
241 < #define IsSendQExceeded(x)      ((x)->flags &  FLAGS_SENDQEX)
240 > #define SetSendQExceeded(x)     ((x)->flags |= FLAGS_SENDQEX)
241 > #define IsSendQExceeded(x)      ((x)->flags &  FLAGS_SENDQEX)
242  
243   #define SetIpHash(x)            ((x)->flags |= FLAGS_IPHASH)
244   #define ClearIpHash(x)          ((x)->flags &= ~FLAGS_IPHASH)
# Line 241 | Line 248
248   #define ClearUserHost(x)        ((x)->flags &= ~FLAGS_USERHOST)
249   #define IsUserHostIp(x)         ((x)->flags & FLAGS_USERHOST)
250  
251 < #define SetPingSent(x)          ((x)->flags |= FLAGS_PINGSENT)
252 < #define IsPingSent(x)           ((x)->flags & FLAGS_PINGSENT)
253 < #define ClearPingSent(x)        ((x)->flags &= ~FLAGS_PINGSENT)
251 > #define SetPingSent(x)          ((x)->flags |= FLAGS_PINGSENT)
252 > #define IsPingSent(x)           ((x)->flags & FLAGS_PINGSENT)
253 > #define ClearPingSent(x)        ((x)->flags &= ~FLAGS_PINGSENT)
254  
255   #define SetNeedId(x)            ((x)->flags |= FLAGS_NEEDID)
256   #define IsNeedId(x)             ((x)->flags & FLAGS_NEEDID)
# Line 270 | Line 277
277   #define IsHidden(x)             ((x)->flags &  FLAGS_HIDDEN)
278   #define SetHidden(x)            ((x)->flags |= FLAGS_HIDDEN)
279  
273 #define IsSendqBlocked(x)       ((x)->flags &  FLAGS_BLOCKED)
274 #define SetSendqBlocked(x)      ((x)->flags |= FLAGS_BLOCKED)
275 #define ClearSendqBlocked(x)    ((x)->flags &= ~FLAGS_BLOCKED)
276
280  
281   /*! \brief addr_mask_type enumeration */
282   enum addr_mask_type
# Line 406 | Line 409 | struct Client
409  
410    char away[AWAYLEN + 1]; /**< Client's AWAY message. Can be set/unset via AWAY command */
411    char name[HOSTLEN + 1]; /**< unique name for a client nick or host */
412 <  char svid[HOSTLEN + 1]; /**< Services ID. XXX: Going with HOSTLEN for now. NICKLEN might be too small
410 <                                if dealing with timestamps */
412 >  char svid[SVIDLEN + 1]; /**< Services ID. */
413    char id[IDLEN + 1];       /**< client ID, unique ID per client */
414 <  /*
414 >  /*
415     * client->username is the username from ident or the USER message,
416     * If the client is idented the USER message is ignored, otherwise
417     * the username part of the USER message is put here prefixed with a
# Line 454 | Line 456 | extern dlink_list oper_list;          /*
456   extern int accept_message(struct Client *, struct Client *);
457   extern unsigned int idle_time_get(const struct Client *, const struct Client *);
458   extern struct split_nuh_item *find_accept(const char *, const char *,
459 <                                          const char *, struct Client *, int);
459 >                                          const char *, struct Client *,
460 >                                          int (*)(const char *, const char *));
461   extern void del_accept(struct split_nuh_item *, struct Client *);
462   extern void del_all_accepts(struct Client *);
463   extern void exit_client(struct Client *, struct Client *, const char *);
464 + extern void conf_try_ban(struct Client *, struct MaskItem *);
465   extern void check_conf_klines(void);
466   extern void client_init(void);
467   extern void dead_link_on_write(struct Client *, int);
# Line 465 | Line 469 | extern void dead_link_on_read(struct Cli
469   extern void exit_aborted_clients(void);
470   extern void free_exited_clients(void);
471   extern struct Client *make_client(struct Client *);
472 < extern struct Client *find_chasing(struct Client *, struct Client *, const char *, int *);
472 > extern struct Client *find_chasing(struct Client *, const char *, int *const);
473   extern struct Client *find_person(const struct Client *const, const char *);
474   extern const char *get_client_name(const struct Client *, enum addr_mask_type);
475  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)