]> jfr.im git - irc/quakenet/newserv.git/blob - nterfacer/nterfacer.h
Add opername to noperserv oper alerts.
[irc/quakenet/newserv.git] / nterfacer / nterfacer.h
1 /*
2 nterfacer
3 Copyright (C) 2004 Chris Porter.
4 */
5
6 #ifndef __nterfacer_H
7 #define __nterfacer_H
8
9 #include <sys/types.h>
10 #include <netinet/in.h>
11
12 #include "../lib/sstring.h"
13
14 #include "esockets.h"
15 #include "library.h"
16
17 #define BF_OK 0x00
18 #define BF_OVER 0xFF
19
20 #define SS_IDLE 0x00
21 #define SS_VERSIONED 0x01
22 #define SS_AUTHENTICATED 0x02
23
24 #define NTERFACER_PORT 2438
25
26 #define MAX_ARGS 100
27
28 #define PROTOCOL_VERSION "4"
29 #define ANTI_FULL_VERSION "service_link " PROTOCOL_VERSION
30
31 struct rline;
32
33 typedef int (*handler_function)(struct rline *ri, int argc, char **argv);
34
35 typedef struct handler {
36 sstring *command;
37 int args; /* MINIMUM ARGUMENTS */
38 handler_function function;
39 struct handler *next;
40 void *service;
41 } handler;
42
43 typedef struct service_node {
44 sstring *name;
45 struct handler *handlers;
46 struct service_node *next;
47 } service_node;
48
49 typedef struct rline {
50 struct handler *handler;
51 int id;
52 struct service_node *service;
53 char buf[MAX_BUFSIZE];
54 char *curpos;
55 struct rline *next;
56 void *tag;
57 struct esocket *socket;
58 } rline;
59
60 typedef struct permitted {
61 sstring *hostname;
62 sstring *password;
63 in_addr_t ihost;
64 } permitted;
65
66 typedef struct sconnect {
67 int status;
68 char response[32 * 2 + 1], challenge[32 * 2 + 1];
69 unsigned char iv[16];
70 struct permitted *permit;
71 unsigned char ournonce[16];
72 } sconnect;
73
74 extern struct nterface_auto_log *nrl;
75
76 struct service_node *register_service(char *name);
77 struct handler *register_handler(struct service_node *service, char *command, int args, handler_function fp);
78 void deregister_service(struct service_node *service);
79 void deregister_handler(struct handler *hp);
80 int respond(struct rline *li, int argc, ...);
81 int error_respond(struct rline *li, int error_code, char *format, ...);
82
83 int ri_append(struct rline *li, char *format, ...);
84 int ri_error(struct rline *li, int error_code, char *format, ...);
85 int ri_final(struct rline *li);
86
87 int load_permits(void);
88 int setup_listening_socket(void);
89
90 void nterfacer_accept_event(struct esocket *socket);
91 void nterfacer_disconnect_event(struct esocket *socket);
92 int nterfacer_line_event(struct esocket *socket, char *newline);
93 int nterfacer_new_rline(char *line, struct esocket *socket, int *number);
94 struct sconnect *find_sconnect_from_fd(int fd);
95
96 #endif
97