41
43
static void mod_destroy(void);
42
44
static int child_init(int rank);
46
static int app_lua_init_rpc(void);
44
48
static int w_app_lua_dostring(struct sip_msg *msg, char *script, char *extra);
45
49
static int w_app_lua_dofile(struct sip_msg *msg, char *script, char *extra);
46
50
static int w_app_lua_runstring(struct sip_msg *msg, char *script, char *extra);
60
64
int app_lua_load_param(modparam_t type, void *val);
61
65
int app_lua_register_param(modparam_t type, void *val);
66
int app_lua_reload_param(modparam_t type, void *val);
63
68
static param_export_t params[]={
64
69
{"load", STR_PARAM|USE_FUNC_PARAM, (void*)app_lua_load_param},
65
70
{"register", STR_PARAM|USE_FUNC_PARAM, (void*)app_lua_register_param},
71
{"reload", INT_PARAM|USE_FUNC_PARAM, (void*)app_lua_reload_param},
99
105
child_init /* per child init function */
108
int mod_register(char *path, int *dlflags, void *p1, void *p2)
110
*dlflags = RTLD_NOW | RTLD_GLOBAL;
105
115
* init module function
324
340
return sr_lua_register_module((char*)val);
343
int app_lua_reload_param(modparam_t type, void *val)
345
return sr_lua_reload_module((unsigned int)(long) (int *)val);
327
348
static int fixup_lua_run(void** param, int param_no)
329
350
return fixup_spve_null(param, 1);
353
/*** RPC implementation ***/
355
static const char* app_lua_rpc_reload_doc[2] = {
360
static const char* app_lua_rpc_list_doc[2] = {
365
static void app_lua_rpc_reload(rpc_t* rpc, void* ctx)
369
rpc->scan(ctx, "*d", &pos);
370
LM_DBG("selected index: %d\n", pos);
371
if(lua_sr_reload_script(pos)<0)
372
rpc->fault(ctx, 500, "Reload Failed");
376
static void app_lua_rpc_list(rpc_t* rpc, void* ctx)
379
sr_lua_load_t *list = NULL, *li;
380
if(lua_sr_list_script(&list)<0)
382
LM_ERR("Can't get loaded scripts\n");
391
rpc->printf(ctx, "%d: [%s]", i, li->script);
397
rpc->printf(ctx,"No scripts loaded");
402
rpc_export_t app_lua_rpc_cmds[] = {
403
{"app_lua.reload", app_lua_rpc_reload,
404
app_lua_rpc_reload_doc, 0},
405
{"app_lua.list", app_lua_rpc_list,
406
app_lua_rpc_list_doc, 0},
411
* register RPC commands
413
static int app_lua_init_rpc(void)
415
if (rpc_register_array(app_lua_rpc_cmds)!=0)
417
LM_ERR("failed to register RPC commands\n");