diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-07-01 15:59:52 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-07-01 15:59:52 +0100 |
commit | 66f1f01a9bb93a72a24302bbe70038441fb96d11 (patch) | |
tree | c76d026faaf9549c5a01cc83643c4beb9b22094b /src | |
parent | 4f5967972210be316822b8f74e39c80dbd88e12f (diff) | |
download | rspamd-66f1f01a9bb93a72a24302bbe70038441fb96d11.tar.gz rspamd-66f1f01a9bb93a72a24302bbe70038441fb96d11.zip |
Add missing url fields.
Diffstat (limited to 'src')
-rw-r--r-- | src/lua/lua_url.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/lua/lua_url.c b/src/lua/lua_url.c index 14a4df9a9..41bcf37bc 100644 --- a/src/lua/lua_url.c +++ b/src/lua/lua_url.c @@ -48,8 +48,11 @@ local mistake = res:to_table() -- INVALID! as pool is destroyed /* URL methods */ LUA_FUNCTION_DEF (url, get_length); LUA_FUNCTION_DEF (url, get_host); +LUA_FUNCTION_DEF (url, get_port); LUA_FUNCTION_DEF (url, get_user); LUA_FUNCTION_DEF (url, get_path); +LUA_FUNCTION_DEF (url, get_query); +LUA_FUNCTION_DEF (url, get_fragment); LUA_FUNCTION_DEF (url, get_text); LUA_FUNCTION_DEF (url, get_tld); LUA_FUNCTION_DEF (url, to_table); @@ -61,8 +64,11 @@ LUA_FUNCTION_DEF (url, all); static const struct luaL_reg urllib_m[] = { LUA_INTERFACE_DEF (url, get_length), LUA_INTERFACE_DEF (url, get_host), + LUA_INTERFACE_DEF (url, get_port), LUA_INTERFACE_DEF (url, get_user), LUA_INTERFACE_DEF (url, get_path), + LUA_INTERFACE_DEF (url, get_query), + LUA_INTERFACE_DEF (url, get_fragment), LUA_INTERFACE_DEF (url, get_text), LUA_INTERFACE_DEF (url, get_tld), LUA_INTERFACE_DEF (url, to_table), @@ -126,6 +132,25 @@ lua_url_get_host (lua_State *L) } /*** + * @method url:get_port() + * Get port of the url + * @return {number} url port + */ +static gint +lua_url_get_port (lua_State *L) +{ + struct rspamd_lua_url *url = lua_check_url (L, 1); + + if (url != NULL) { + lua_pushnumber (L, url->url->port); + } + else { + lua_pushnil (L); + } + return 1; +} + +/*** * @method url:get_user() * Get user part of the url (e.g. username in email) * @return {string} user part of URL @@ -166,6 +191,46 @@ lua_url_get_path (lua_State *L) } /*** + * @method url:get_query() + * Get query of the url + * @return {string} query part of URL + */ +static gint +lua_url_get_query (lua_State *L) +{ + struct rspamd_lua_url *url = lua_check_url (L, 1); + + if (url != NULL && url->url->querylen > 0) { + lua_pushlstring (L, url->url->query, url->url->querylen); + } + else { + lua_pushnil (L); + } + + return 1; +} + +/*** + * @method url:get_fragment() + * Get fragment of the url + * @return {string} fragment part of URL + */ +static gint +lua_url_get_fragment (lua_State *L) +{ + struct rspamd_lua_url *url = lua_check_url (L, 1); + + if (url != NULL && url->url->fragmentlen > 0) { + lua_pushlstring (L, url->url->fragment, url->url->fragmentlen); + } + else { + lua_pushnil (L); + } + + return 1; +} + +/*** * @method url:get_text() * Get full content of the url * @return {string} url string @@ -280,6 +345,12 @@ lua_url_to_table (lua_State *L) lua_settable (L, -3); } + if (u->port != 0) { + lua_pushstring (L, "port"); + lua_pushnumber (L, u->port); + lua_settable (L, -3); + } + if (u->tldlen > 0) { lua_pushstring (L, "tld"); lua_pushlstring (L, u->tld, u->tldlen); @@ -298,6 +369,19 @@ lua_url_to_table (lua_State *L) lua_settable (L, -3); } + if (u->querylen > 0) { + lua_pushstring (L, "query"); + lua_pushlstring (L, u->query, u->querylen); + lua_settable (L, -3); + } + + if (u->fragmentlen > 0) { + lua_pushstring (L, "fragment"); + lua_pushlstring (L, u->fragment, u->fragmentlen); + lua_settable (L, -3); + } + + lua_pushstring (L, "protocol"); switch (u->protocol) { |