25 #include "ac-stdint.h"
36 #ifdef HAVE_SYS_TYPES_H
37 # include <sys/types.h>
40 #ifdef HAVE_NETINET_IN_H
41 # include <netinet/in.h>
44 #if defined(HAVE_SYS_TIME_H)
45 # include <sys/time.h>
46 #elif defined(HAVE_SYS_TIMEB_H)
47 # include <sys/timeb.h>
57 #ifdef HAVE_SYS_SOCKET_H
58 # include <sys/socket.h>
60 #ifdef HAVE_NETINET_IN_H
61 # include <netinet/in.h>
63 #ifdef HAVE_ARPA_INET_H
64 # include <arpa/inet.h>
71 # define PATH_MAX MAXPATHLEN
76 #include "subst/subst.h"
87 # ifdef JABBERD2_EXPORTS
88 # define JABBERD2_API __declspec(dllexport)
90 # define JABBERD2_API __declspec(dllimport)
93 # define JABBERD2_API extern
367 #define stanza_err_BAD_REQUEST (100)
368 #define stanza_err_CONFLICT (101)
369 #define stanza_err_FEATURE_NOT_IMPLEMENTED (102)
370 #define stanza_err_FORBIDDEN (103)
371 #define stanza_err_GONE (104)
372 #define stanza_err_INTERNAL_SERVER_ERROR (105)
373 #define stanza_err_ITEM_NOT_FOUND (106)
374 #define stanza_err_JID_MALFORMED (107)
375 #define stanza_err_NOT_ACCEPTABLE (108)
376 #define stanza_err_NOT_ALLOWED (109)
377 #define stanza_err_PAYMENT_REQUIRED (110)
378 #define stanza_err_RECIPIENT_UNAVAILABLE (111)
379 #define stanza_err_REDIRECT (112)
380 #define stanza_err_REGISTRATION_REQUIRED (113)
381 #define stanza_err_REMOTE_SERVER_NOT_FOUND (114)
382 #define stanza_err_REMOTE_SERVER_TIMEOUT (115)
383 #define stanza_err_RESOURCE_CONSTRAINT (116)
384 #define stanza_err_SERVICE_UNAVAILABLE (117)
385 #define stanza_err_SUBSCRIPTION_REQUIRED (118)
386 #define stanza_err_UNDEFINED_CONDITION (119)
387 #define stanza_err_UNEXPECTED_REQUEST (120)
388 #define stanza_err_OLD_UNAUTH (121)
389 #define stanza_err_UNKNOWN_SENDER (122)
390 #define stanza_err_LAST (123)
421 #define ZONE __FILE__,__LINE__
422 #define MAX_DEBUG 8192
426 #define log_debug if(get_debug_flag()) debug_log
428 #define log_debug if(0) debug_log
437 typedef int (jmainhandler_t)(
int argc,
char** argv);
438 JABBERD2_API int jabber_wrap_service(
int argc,
char** argv, jmainhandler_t *wrapper, LPCTSTR
name, LPCTSTR display, LPCTSTR description, LPCTSTR depends);
439 #define JABBER_MAIN(name, display, description, depends) jabber_main(int argc, char** argv); \
440 main(int argc, char** argv) { return jabber_wrap_service(argc, argv, jabber_main, name, display, description, depends); } \
441 jabber_main(int argc, char** argv)
443 #define JABBER_MAIN(name, display, description, depends) int main(int argc, char** argv)
450 #if XML_MAJOR_VERSION > 1
452 #define HAVE_XML_STOPPARSER
453 #if XML_MINOR_VERSION > 0
455 #define HAVE_XML_SETHASHSALT
int ser_int_get(int *dest, int *source, const char *buf, int len)
struct spool_struct * spool
struct sockaddr_storage ip
const char * spools(pool_t p,...)
convenience :)
struct _stanza_error_st _stanza_errors[]
if you change these, reflect your changes in the defines in util.h
int access_deny(access_t access, const char *ip, const char *mask)
JABBERD2_API void set_debug_file(const char *filename)
int config_load_with_id(config_t c, const char *file, const char *id)
turn an xml file into a config hash
char * j_strnchr(const char *s, int c, int n)
like strchr, but only searches n chars
struct access_rule_st * access_rule_t
char * j_strdup(const char *str)
void config_free(config_t c)
cleanup
void ser_int_set(int source, int *dest, char **buf, int *len)
char * b64_encode(char *buf, int len)
void rate_add(rate_t rt, int count)
Add a number of events to the counter.
access_t access_new(int order)
int jqueue_size(jqueue_t q)
void log_write(log_t log, int level, const char *msgfmt,...)
int j_strcasecmp(const char *a, const char *b)
rate_t rate_new(int total, int seconds, int wait)
config_t config_new(void)
new config structure
void shahash_r(const char *str, char hashbuf[41])
convenience (originally by Thomas Muldowney)
holder for the config hash and nad
void ser_string_set(const char *source, int *dest, char **buf, int *len)
int j_atoi(const char *a, int def)
struct _stanza_error_st * stanza_error_t
struct _jqueue_node_st * _jqueue_node_t
JABBERD2_API int get_debug_flag(void)
void rate_free(rate_t rt)
char * config_get_attr(config_t c, const char *key, int num, const char *attr)
get an attr for this value
void jqueue_free(jqueue_t q)
int apr_base64_decode(char *bufplain, const char *bufcoded, int buflen)
void access_free(access_t access)
int apr_base64_decode_len(const char *bufcoded, int buflen)
int apr_base64_encode(char *encoded, const char *string, int len)
void shahash_raw(const char *str, unsigned char hashval[20])
void jqueue_push(jqueue_t q, void *data, int priority)
void set_debug_log_from_config(config_t c)
void datetime_out(time_t t, datetime_t type, char *date, int datelen)
int hex_to_raw(const char *in, int inlen, char *out)
turn hex into raw - out must be (inlen/2)
char * strunescape(pool_t p, char *buf)
nad_t stanza_tofrom(nad_t nad, int elem)
flip the to and from attributes on this elem
void debug_log(const char *file, int line, const char *msgfmt,...)
int j_strcmp(const char *a, const char *b)
void spool_add(spool s, const char *str)
jsighandler_t * jabber_signal(int signo, jsighandler_t *func)
const char * spool_print(spool s)
time_t jqueue_age(jqueue_t q)
struct log_facility_st log_facility_t
int rate_check(rate_t rt)
nad_t stanza_error(nad_t nad, int elem, int err)
error the packet
void hex_from_raw(const unsigned char *in, int inlen, char *out)
turn raw into hex - out must be (inlen*2)+1
config_elem_t config_get(config_t c, const char *key)
get the config element for this key
int j_strncmp(const char *a, const char *b, int i)
void * jqueue_pull(jqueue_t q)
struct config_elem_st * config_elem_t
time_t datetime_in(char *date)
struct spool_node * first
jqueue_t jqueue_new(void)
void spooler(spool s,...)
void set_debug_flag(int v)
int config_load(config_t c, const char *file)
turn an xml file into a config hash
int access_allow(access_t access, const char *ip, const char *mask)
int access_check(access_t access, const char *ip)
char * b64_decode(char *buf)
struct config_st * config_t
void rate_reset(rate_t rt)
char * j_attr(const char **atts, const char *attr)
log_t log_new(log_type_t type, const char *ident, const char *facility)
char * config_expand(config_t c, const char *value)
const char * config_get_one(config_t c, const char *key, int num)
get config value n for this key
int ser_string_get(char **dest, int *source, const char *buf, int len)
int j_strlen(const char *a)
int j_strncasecmp(const char *a, const char *b, int i)
void spool_escape(spool s, const char *raw, int len)
struct access_st * access_t
pool - base node for a pool.
spool spool_new(pool_t p)
int apr_base64_encode_len(int len)
int config_count(config_t c, const char *key)
how many values for this key?
define the structures that could be missing in old libc implementations
const char * config_get_one_default(config_t c, const char *key, int num, const char *default_value)
get config value n for this key, returns default_value if not found
char * j_strcat(char *dest, const char *txt)
char * strescape(pool_t p, const char *buf, int len)
struct _jqueue_st * jqueue_t