|
@@ -486,7 +486,7 @@ static int lsp_md5(lua_State *L)
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
/* Syntax error */
|
|
/* Syntax error */
|
|
- return luaL_error(L, "invalid get_mime_type() call");
|
|
|
|
|
|
+ return luaL_error(L, "invalid md5() call");
|
|
}
|
|
}
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
@@ -509,15 +509,35 @@ static int lsp_url_encode(lua_State *L)
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
/* Syntax error */
|
|
/* Syntax error */
|
|
- return luaL_error(L, "invalid get_mime_type() call");
|
|
|
|
|
|
+ return luaL_error(L, "invalid url_encode() call");
|
|
}
|
|
}
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
-/* TODO: Other functions in civetweb.h that should be available to Lua too:
|
|
|
|
-mg_url_decode
|
|
|
|
-mg_url_encode
|
|
|
|
-*/
|
|
|
|
|
|
+/* mg.url_decode */
|
|
|
|
+static int lsp_url_decode(lua_State *L)
|
|
|
|
+{
|
|
|
|
+ int num_args = lua_gettop(L);
|
|
|
|
+ const char *text;
|
|
|
|
+ size_t text_len;
|
|
|
|
+ int is_form;
|
|
|
|
+ char dst[512];
|
|
|
|
+
|
|
|
|
+ if (num_args==1 || (num_args==2 && lua_isboolean(L, 2))) {
|
|
|
|
+ text = lua_tolstring(L, 1, &text_len);
|
|
|
|
+ is_form = (num_args==2) ? lua_isboolean(L, 2) : 0;
|
|
|
|
+ if (text) {
|
|
|
|
+ mg_url_decode(text, text_len, dst, sizeof(dst), is_form);
|
|
|
|
+ lua_pushstring(L, dst);
|
|
|
|
+ } else {
|
|
|
|
+ lua_pushnil(L);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ /* Syntax error */
|
|
|
|
+ return luaL_error(L, "invalid url_decode() call");
|
|
|
|
+ }
|
|
|
|
+ return 1;
|
|
|
|
+}
|
|
|
|
|
|
/* mg.write for websockets */
|
|
/* mg.write for websockets */
|
|
static int lwebsock_write(lua_State *L)
|
|
static int lwebsock_write(lua_State *L)
|
|
@@ -634,6 +654,7 @@ static void prepare_lua_environment(struct mg_connection *conn, lua_State *L, co
|
|
reg_function(L, "get_cookie", lsp_get_cookie, conn);
|
|
reg_function(L, "get_cookie", lsp_get_cookie, conn);
|
|
reg_function(L, "md5", lsp_md5, conn);
|
|
reg_function(L, "md5", lsp_md5, conn);
|
|
reg_function(L, "url_encode", lsp_url_encode, conn);
|
|
reg_function(L, "url_encode", lsp_url_encode, conn);
|
|
|
|
+ reg_function(L, "url_decode", lsp_url_decode, conn);
|
|
|
|
|
|
reg_string(L, "version", CIVETWEB_VERSION);
|
|
reg_string(L, "version", CIVETWEB_VERSION);
|
|
reg_string(L, "document_root", conn->ctx->config[DOCUMENT_ROOT]);
|
|
reg_string(L, "document_root", conn->ctx->config[DOCUMENT_ROOT]);
|