42 #define DEFAULT_CONF_FILE "/etc/amiws.yaml"
44 #define DEFAULT_WEB_ROOT "./web_root"
46 #define DEFAULT_LOG_LEVEL LOG_INFO
48 #define DEFAULT_LOG_FACILITY LOG_SYSLOG
50 #define DEFAULT_WEBSOCK_PORT 8000
52 #define POLL_SLEEP 1000
55 #define intval(val) str2int(val, strlen(val))
58 #define macro_init_conf(conf) conf = (struct amiws_config *) malloc(sizeof(struct amiws_config));\
59 memset(conf,0,sizeof(struct amiws_config)); \
60 conf->log_level = DEFAULT_LOG_LEVEL; \
61 conf->log_facility = DEFAULT_LOG_FACILITY; \
62 conf->ws_port = DEFAULT_WEBSOCK_PORT; \
66 conf->web_root = NULL; \
67 conf->auth_domain = NULL; \
68 conf->parse_fail = 0; \
69 conf->syntax_error = 0; \
70 conf->auth_file = NULL;
74 #define macro_init_conn(conn) conn = (struct amiws_conn *) malloc(sizeof(struct amiws_conn)); \
75 memset(conn,0,sizeof(struct amiws_conn)); \
77 conn->address = NULL; \
80 conn->username = NULL; \
81 conn->secret = NULL; \
83 conn->event_names = NULL; \
166 void ami_ev_handler(
struct mg_connection *nc,
int ev,
void *ev_data);
181 void websock_send (
struct mg_connection *nc,
const char *json);
223 static void recv_callback(
struct mbuf *io,
struct amiws_conn *conn,
struct mg_connection *nc);
225 static void read_buffer(
struct mbuf *io,
struct mg_connection *nc);
227 void set_conf_param(
struct amiws_config *conf,
char *key,
char *value);
229 void set_conn_param(
struct amiws_conn *conn,
char *key,
char *value);
231 static int str2int(
const char *val,
int len);
233 static char* int2str(
const char *val,
int len);
235 static int auth_fail(
AMIPacket *amipack);
237 static void send_ami_action(
struct websocket_message *wm,
struct mg_connection *nc);
239 static void json_scan_cb(
void *callback_data,
240 const char *name,
size_t name_len,
242 const struct json_token *token);
246 static int is_valid_auth_settings(
struct amiws_config *conf);
249 static int is_valid_ssl_settings(
struct amiws_config *conf);
251 static int is_valid_ssl_conn_settings(
struct amiws_conn *conn);
int log_level
Definition: amiws.h:95
char * amipack_to_json(const char *buf, int len, struct amiws_conn *conn)
Definition: amiws_lib.c:173
char * event_names
Definition: amiws.h:122
void websock_ev_handler(struct mg_connection *nc, int ev, void *ev_data)
Definition: amiws_lib.c:293
int log_facility
Definition: amiws.h:94
int ws_port
Definition: amiws.h:96
void amiws_destroy()
Definition: amiws_lib.c:103
unsigned int port
Definition: amiws.h:118
char * host
Definition: amiws.h:119
char * address
Definition: amiws.h:117
struct amiws_conn * next
Definition: amiws.h:129
void amiws_loop()
Definition: amiws_lib.c:110
char * auth_file
Definition: amiws.h:99
AMI (Asterisk Management Interface) messages read/create functions interface. AMI packet is implement...
int id
Definition: amiws.h:115
int size
Definition: amiws.h:93
AMIVer ami_ver
Definition: amiws.h:123
int is_ssl
Definition: amiws.h:128
struct amiws_conn * head
Definition: amiws.h:91
char * web_root
Definition: amiws.h:97
char * username
Definition: amiws.h:120
char * auth_domain
Definition: amiws.h:98
int scan_amipack(const char *pack, size_t len)
Definition: amiws_lib.c:377
void ami_login(struct mg_connection *nc, struct amiws_conn *conn)
Definition: amiws_lib.c:327
void amiws_connect_ami_server(struct amiws_conn *conn)
Definition: amiws_lib.c:79
void ami_ev_handler(struct mg_connection *nc, int ev, void *ev_data)
Definition: amiws_lib.c:116
Definition: amipack.h:109
char * secret
Definition: amiws.h:121
void amiws_init(struct amiws_config *conf)
Definition: amiws_lib.c:35
char * name
Definition: amiws.h:116
void free_conf(struct amiws_config *conf)
Definition: config.c:236
struct amiws_conn * tail
Definition: amiws.h:92
struct amiws_config * read_conf(const char *filename)
Definition: config.c:32
void websock_send(struct mg_connection *nc, const char *json)
Definition: amiws_lib.c:279