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 conf->log_level = DEFAULT_LOG_LEVEL; \
60 conf->log_facility = DEFAULT_LOG_FACILITY; \
61 conf->ws_port = DEFAULT_WEBSOCK_PORT; \
65 conf->web_root = NULL; \
66 conf->auth_domain = NULL; \
67 conf->parse_fail = 0; \
68 conf->syntax_error = 0; \
69 conf->auth_file = NULL;
73 #define macro_init_conn(conn) conn = (struct amiws_conn *) malloc(sizeof(struct amiws_conn)); \
75 conn->address = NULL; \
78 conn->username = NULL; \
79 conn->secret = NULL; \
158 void ami_ev_handler(
struct mg_connection *nc,
int ev,
void *ev_data);
173 void websock_send (
struct mg_connection *nc,
const char *json);
215 static void recv_callback(
struct mbuf *io,
struct amiws_conn *conn,
struct mg_connection *nc);
217 static void read_buffer(
struct mbuf *io,
struct mg_connection *nc);
219 void set_conf_param(
struct amiws_config *conf,
char *key,
char *value);
221 void set_conn_param(
struct amiws_conn *conn,
char *key,
char *value);
223 static int str2int(
const char *val,
int len);
225 static char* int2str(
const char *val,
int len);
227 static int auth_fail(
AMIPacket *amipack);
229 static void send_ami_action(
struct websocket_message *wm,
struct mg_connection *nc);
231 static void json_scan_cb(
void *callback_data,
232 const char *name,
size_t name_len,
234 const struct json_token *token);
238 static int is_valid_auth_settings(
struct amiws_config *conf);
241 static int is_valid_ssl_settings(
struct amiws_config *conf);
243 static int is_valid_ssl_conn_settings(
struct amiws_conn *conn);
int log_level
Definition: amiws.h:92
char * amipack_to_json(const char *buf, int len, struct amiws_conn *conn)
Definition: amiws_lib.c:169
void websock_ev_handler(struct mg_connection *nc, int ev, void *ev_data)
Definition: amiws_lib.c:271
int log_facility
Definition: amiws.h:91
int ws_port
Definition: amiws.h:93
void amiws_destroy()
Definition: amiws_lib.c:101
unsigned int port
Definition: amiws.h:115
char * host
Definition: amiws.h:116
char * address
Definition: amiws.h:114
struct amiws_conn * next
Definition: amiws.h:125
void amiws_loop()
Definition: amiws_lib.c:108
char * auth_file
Definition: amiws.h:96
int id
Definition: amiws.h:112
int size
Definition: amiws.h:90
AMIVer ami_ver
Definition: amiws.h:119
int is_ssl
Definition: amiws.h:124
struct amiws_conn * head
Definition: amiws.h:88
char * web_root
Definition: amiws.h:94
char * username
Definition: amiws.h:117
char * auth_domain
Definition: amiws.h:95
int scan_amipack(const char *pack, size_t len)
Definition: amiws_lib.c:354
void ami_login(struct mg_connection *nc, struct amiws_conn *conn)
Definition: amiws_lib.c:305
void amiws_connect_ami_server(struct amiws_conn *conn)
Definition: amiws_lib.c:77
void ami_ev_handler(struct mg_connection *nc, int ev, void *ev_data)
Definition: amiws_lib.c:114
Definition: amipack.h:109
char * secret
Definition: amiws.h:118
void amiws_init(struct amiws_config *conf)
Definition: amiws_lib.c:34
char * name
Definition: amiws.h:113
void free_conf(struct amiws_config *conf)
Definition: config.c:221
struct amiws_conn * tail
Definition: amiws.h:89
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:257