[vlc-devel] [PATCH] lua HTTPd: inform user that password has not been set

Jean-Baptiste Kempf jb at videolan.org
Thu May 16 16:03:45 CEST 2013


OK.

On 15 May, Rafaël Carré wrote :
> ---
> Fixed HTML
> 
>  modules/lua/libs/httpd.c | 33 +++++++++++++++++++++++++++++++++
>  share/lua/intf/http.lua  |  1 -
>  2 files changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/modules/lua/libs/httpd.c b/modules/lua/libs/httpd.c
> index 28f3abd..16af02c 100644
> --- a/modules/lua/libs/httpd.c
> +++ b/modules/lua/libs/httpd.c
> @@ -61,6 +61,18 @@ static const luaL_Reg vlclua_httpd_reg[] = {
>      { NULL, NULL }
>  };
>  
> +static const char no_password[] = N_("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
> +"<html xmlns=\"http://www.w3.org/1999/xhtml\">"
> +"<head>"
> +"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />"
> +"<title>VLC media player</title>"
> +"</head>"
> +"<body>"
> +"<p>Password for Web interface has not been set.</p>"
> +"<p>Please use --http-password, or set a password in </p>"
> +"<p>Preferences > All > Main interfaces > Lua > Lua HTTP > Password.</p>"
> +"<!-- VLC_PASSWORD_NOT_SET --></body></html>");
> +
>  static int vlclua_httpd_tls_host_new( lua_State *L )
>  {
>      vlc_object_t *p_this = vlclua_get_this( L );
> @@ -97,6 +109,7 @@ static int vlclua_httpd_host_delete( lua_State *L )
>  struct httpd_handler_sys_t
>  {
>      lua_State *L;
> +    bool password;
>      int ref;
>  };
>  
> @@ -138,6 +151,17 @@ static int vlclua_httpd_handler_callback(
>      }
>      /* function data outdata */
>      *pp_data = vlclua_todata( L, -1, pi_data );
> +    if (!p_sys->password)
> +    {
> +        free(*pp_data);
> +        size_t s = strlen(_(no_password));
> +        if (asprintf((char**)pp_data, "Status: 403\n"
> +                "Content-Length: %zu\n"
> +                "Content-Type: text/html\n\n%s", s, _(no_password)) < 0)
> +            *pi_data = 0;
> +        else
> +            *pi_data = strlen((char*)*pp_data);
> +    }
>      lua_pop( L, 1 );
>      /* function data */
>      return VLC_SUCCESS;
> @@ -159,6 +183,7 @@ static int vlclua_httpd_handler_new( lua_State * L )
>          return luaL_error( L, "Failed to allocate private buffer." );
>      p_sys->L = lua_newthread( L );
>      p_sys->ref = luaL_ref( L, LUA_REGISTRYINDEX ); /* pops the object too */
> +    p_sys->password = psz_password && *psz_password;
>      /* use lua_xmove to move the lua callback function and data to
>       * the callback's stack. */
>      lua_xmove( L, p_sys->L, 2 );
> @@ -200,6 +225,7 @@ struct httpd_file_sys_t
>  {
>      lua_State *L;
>      int ref;
> +    bool password;
>  };
>  
>  static int vlclua_httpd_file_callback(
> @@ -228,6 +254,12 @@ static int vlclua_httpd_file_callback(
>      }
>      /* function data outdata */
>      *pp_data = vlclua_todata( L, -1, pi_data );
> +    if (!p_sys->password)
> +    {
> +        free(*pp_data);
> +        *pp_data = (uint8_t*)strdup(_(no_password));
> +        *pi_data = strlen((char*)*pp_data);
> +    }
>      lua_pop( L, 1 );
>      /* function data */
>      return VLC_SUCCESS;
> @@ -248,6 +280,7 @@ static int vlclua_httpd_file_new( lua_State *L )
>      if( !p_sys )
>          return luaL_error( L, "Failed to allocate private buffer." );
>      p_sys->L = lua_newthread( L );
> +    p_sys->password = psz_password && *psz_password;
>      p_sys->ref = luaL_ref( L, LUA_REGISTRYINDEX ); /* pops the object too */
>      lua_xmove( L, p_sys->L, 2 );
>      httpd_file_t *p_file = httpd_FileNew( *pp_host, psz_url, psz_mime,
> diff --git a/share/lua/intf/http.lua b/share/lua/intf/http.lua
> index f428a7f..9a7926c 100644
> --- a/share/lua/intf/http.lua
> +++ b/share/lua/intf/http.lua
> @@ -320,7 +320,6 @@ if config.host then
>  end
>  
>  password = vlc.var.inherit(nil,"http-password")
> -assert(password ~= "", "password not defined")
>  
>  h = vlc.httpd()
>  load_dir( http_dir )
> -- 
> 1.8.1.2
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel

-- 
Best regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device



More information about the vlc-devel mailing list