server.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * server.h -- part of server.mod
  3. *
  4. */
  5. #ifndef _EGG_MOD_SERVER_SERVER_H
  6. #define _EGG_MOD_SERVER_SERVER_H
  7. #include "src/binds.h"
  8. #include "src/dcc.h"
  9. #include "src/set.h"
  10. #include <bdlib/src/String.h>
  11. #include <bdlib/src/HashTable.h>
  12. #define DO_LOST 1
  13. #define NO_LOST 0
  14. #define DEQ_RATE 200
  15. #define fixcolon(x) do { \
  16. if ((x)[0] == ':') \
  17. (x)++; \
  18. else \
  19. (x) = newsplit(&(x)); \
  20. } while (0)
  21. #define write_to_server(x,y) do { \
  22. tputs(serv, (x), (y)); \
  23. tputs(serv, "\r\n", 2); \
  24. } while (0)
  25. namespace bd {
  26. class Stream;
  27. }
  28. struct server_list {
  29. struct server_list *next;
  30. char *name;
  31. char *pass;
  32. in_port_t port;
  33. };
  34. /* Available net types. */
  35. enum {
  36. NETT_EFNET = 0, /* EfNet except new +e/+I hybrid. */
  37. NETT_IRCNET = 1, /* Ircnet. */
  38. NETT_UNDERNET = 2, /* Undernet. */
  39. NETT_DALNET = 3, /* Dalnet. */
  40. NETT_HYBRID_EFNET = 4 /* new +e/+I Efnet hybrid. */
  41. };
  42. typedef struct {
  43. bd::String sharedKey;
  44. bd::String myPrivateKey;
  45. bd::String myPublicKeyB64;
  46. time_t key_created_at;
  47. } fish_data_t;
  48. extern bind_table_t *BT_ctcp, *BT_ctcr;
  49. extern size_t nick_len;
  50. extern bool trigger_on_ignore, floodless, keepnick, in_deaf, in_callerid, have_cprivmsg, have_cnotice;
  51. extern int servidx, ctcp_mode, answer_ctcp, serv, curserv, default_alines, flood_count, burst;
  52. extern unsigned int rolls;
  53. extern in_port_t default_port, default_port_ssl, newserverport, curservport;
  54. extern time_t server_online, tried_jupenick, tried_nick, release_time, connect_bursting;
  55. extern interval_t cycle_time;
  56. extern char cursrvname[], botrealname[121], botuserhost[], ctcp_reply[1024],
  57. newserver[], newserverpass[], curnetwork[], botuserip[], altnick_char, deaf_char, callerid_char;
  58. extern struct server_list *serverlist;
  59. extern struct dcc_table SERVER_SOCKET;
  60. extern rate_t flood_msg, flood_ctcp, flood_callerid;
  61. extern bd::HashTable<bd::String, fish_data_t*> FishKeys;
  62. int check_bind_ctcpr(char *, char *, struct userrec *, char *, char *, char *, bind_table_t *);
  63. void nicks_available(char* buf, char delim = 0, bool buf_contains_available = 1);
  64. void release_nick(const char* = NULL);
  65. #define check_bind_ctcp(a, b, c, d, e, f) check_bind_ctcpr(a, b, c, d, e, f, BT_ctcp)
  66. #define check_bind_ctcr(a, b, c, d, e, f) check_bind_ctcpr(a, b, c, d, e, f, BT_ctcr)
  67. bool detect_avalanche(char *);
  68. void server_report(int, int);
  69. void server_init();
  70. void queue_server(int, char *, int);
  71. void server_die();
  72. void add_server(char *);
  73. void clearq(struct server_list *);
  74. void nuke_server(const char *);
  75. bool match_my_nick(char *);
  76. void rehash_server(const char *, const char *);
  77. void rehash_monitor_list();
  78. void replay_cache(int, bd::Stream*);
  79. void join_chans();
  80. void check_hostmask();
  81. void next_server(int *, char *, in_port_t *, char *);
  82. void server_send_ison();
  83. void reset_flood();
  84. #endif /* _EGG_MOD_SERVER_SERVER_H */