X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flua%2Fintf.c;h=3fea2731d0108ffd1ef6307849cb9d640e4b5fec;hb=4f08ee39886abb5e42a5ff811ad150ea5ffa0eb9;hp=103126f6aaf4dea3da5ca657857153950c6cf939;hpb=fb3c1a2898afb16be0f9833ffc5b2662060825a0;p=vlc diff --git a/modules/misc/lua/intf.c b/modules/misc/lua/intf.c index 103126f6aa..3fea2731d0 100644 --- a/modules/misc/lua/intf.c +++ b/modules/misc/lua/intf.c @@ -36,7 +36,6 @@ #include #include -#include #include #include #include @@ -78,7 +77,7 @@ static const struct { "luatelnet", "telnet" }, { "telnet", "telnet" }, { "luahttp", "http" }, - { "http", "http" }, + /* { "http", "http" }, */ { NULL, NULL } }; static const char *WordInList( const char *psz_list, const char *psz_word ) @@ -93,7 +92,7 @@ static const char *WordInList( const char *psz_list, const char *psz_word ) return psz_list; psz_list = end + 1; } - return strcmp( psz_list, psz_word ) ? psz_list : NULL; + return !strcmp( psz_list, psz_word ) ? psz_list : NULL; } static char *GetModuleName( intf_thread_t *p_intf ) @@ -171,6 +170,7 @@ int Open_LuaIntf( vlc_object_t *p_this ) } vlclua_set_this( L, p_intf ); + vlclua_set_intf( L, p_sys ); luaL_openlibs( L ); @@ -212,8 +212,82 @@ int Open_LuaIntf( vlc_object_t *p_this ) goto error; } - psz_config = var_CreateGetString( p_intf, "lua-config" ); - if( psz_config && *psz_config ) + /* + * Get the lua-config string. + * If the string is empty, try with the old http-* or telnet-* options + * and build the right configuration line + */ + psz_config = var_CreateGetNonEmptyString( p_intf, "lua-config" ); + if( !psz_config ) + { + if( !strcmp( psz_name, "http" ) ) + { + char *psz_http_host = var_CreateGetNonEmptyString( p_intf, "http-host" ); + char *psz_http_src = var_CreateGetNonEmptyString( p_intf, "http-src" ); + bool b_http_index = var_CreateGetBool( p_intf, "http-index" ); + if( psz_http_host ) + { + char *psz_esc = config_StringEscape( psz_http_host ); + asprintf( &psz_config, "http={host='%s'", psz_esc ); + free( psz_esc ); + free( psz_http_host ); + } + if( psz_http_src ) + { + char *psz_esc = config_StringEscape( psz_http_src ); + if( psz_config ) + { + char *psz_tmp; + asprintf( &psz_tmp, "%s,dir='%s'", psz_config, psz_esc ); + free( psz_config ); + psz_config = psz_tmp; + } + else + asprintf( &psz_config, "http={dir='%s'", psz_esc ); + free( psz_esc ); + free( psz_http_src ); + } + if( psz_config ) + { + char *psz_tmp; + asprintf( &psz_tmp, "%s,no_index=%s}", psz_config, b_http_index ? "true" : "false" ); + free( psz_config ); + psz_config = psz_tmp; + } + else + asprintf( &psz_config, "http={no_index=%s}", b_http_index ? "true" : "false" ); + } + else if( !strcmp( psz_name, "telnet" ) ) + { + char *psz_telnet_host = var_CreateGetString( p_intf, "telnet-host" ); + int i_telnet_port = var_CreateGetInteger( p_intf, "telnet-port" ); + char *psz_telnet_passwd = var_CreateGetString( p_intf, "telnet-password" ); + + char *psz_esc_host = config_StringEscape( psz_telnet_host ); + char *psz_esc_passwd = config_StringEscape( psz_telnet_passwd ); + + asprintf( &psz_config, "telnet={host='%s:%d',password='%s'}", psz_esc_host ? psz_esc_host : "", i_telnet_port, psz_esc_passwd ); + + free( psz_esc_host ); + free( psz_esc_passwd ); + free( psz_telnet_passwd ); + free( psz_telnet_host ); + } + else if( !strcmp( psz_name, "rc" ) ) + { + char *psz_rc_host = var_CreateGetNonEmptyString( p_intf, "rc-host" ); + if( psz_rc_host ) + { + char *psz_esc_host = config_StringEscape( psz_rc_host ); + asprintf( &psz_config, "rc={host='%s'}", psz_esc_host ); + + free( psz_esc_host ); + free( psz_rc_host ); + } + } + } + + if( psz_config ) { char *psz_buffer; if( asprintf( &psz_buffer, "config={%s}", psz_config ) != -1 ) @@ -233,8 +307,8 @@ int Open_LuaIntf( vlc_object_t *p_this ) } } } + free( psz_config ); } - free( psz_config ); if( b_config_set == false ) {