3 Copyright (C) 2004 Chris Porter.
10 #include <netinet/in.h>
12 #include "../lib/sstring.h"
21 #define SS_VERSIONED 0x01
22 #define SS_AUTHENTICATED 0x02
24 #define NTERFACER_PORT 2438
28 #define PROTOCOL_VERSION "4"
29 #define ANTI_FULL_VERSION "service_link " PROTOCOL_VERSION
33 typedef int (*handler_function
)(struct rline
*ri
, int argc
, char **argv
);
35 typedef struct handler
{
37 int args
; /* MINIMUM ARGUMENTS */
38 handler_function function
;
43 typedef struct service_node
{
45 struct handler
*handlers
;
46 struct service_node
*next
;
49 typedef struct rline
{
50 struct handler
*handler
;
52 struct service_node
*service
;
53 char buf
[MAX_BUFSIZE
];
57 struct esocket
*socket
;
60 typedef struct permitted
{
66 typedef struct sconnect
{
68 char response
[32 * 2 + 1], challenge
[32 * 2 + 1];
70 struct permitted
*permit
;
71 unsigned char ournonce
[16];
74 extern struct nterface_auto_log
*nrl
;
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
, ...);
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
);
87 int load_permits(void);
88 int setup_listening_socket(void);
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
);