VLC 服务器媒体根目录

VLC 服务器媒体根目录

当我vlc像这样跑步时:

vlc -I http

我开放用户浏览我的整个系统目录结构。这太多了。

例如在页面http://本地主机:8080/vlm.html我可以点击Edit输入字段,然后点击Browse。在弹出窗口中,我可以继续点击'..'

我想打开这个服务器以便我可以远程访问它,但我不想暴露我的整个系统目录结构。

如何将浏览功能限制于特定子树?

答案1

以管理员身份编辑%ProgramFiles(x86)%\VideoLAN\VLC\http\requests\browse.xml(您不必重新启动 VLC),如下所示。添加标有 的 3 行+(您不应包含这些行)。

 <root>
 <vlc id="if" param1="url_param 1 =" />
   <vlc id="rpn" param1="'dir' url_extract" />
+  <element type="directory" size="" date="" path="X:\\SomeFolder" name="Media Root" extension="" />
   <vlc id="foreach" param1="file" param2="directory" />
+    <vlc id="if" param1="file.name value 'X:\\SomeFolder' 13 strncmp 0 =" />
     <vlc id="if" param1="file.basename value '.' 1 strncmp 0 != file.basename value '..' 2 strncmp 0 = |" />
       <element type="<vlc id="value" param1="file.type" />" size="<vlc id="value" param1="file.size" />" date="<vlc id="value"  param1="file.date" />" path="<vlc id="value" param1="file.name value xml_encode" />" name="<vlc id="value" param1="file. basename value xml_encode" />" extension="<vlc id="value" param1="file.ext value xml_encode" />" />
     <vlc id="end" />
+    <vlc id="end" />
   <vlc id="end" />
 <vlc id="end" />
 </root>

'X:\\SomeFolder' 13请注意十三如果字符串的长度X:\SomeFolder(以便仅比较路径的开头。

原帖来自http://forum.videolan.org/viewtopic.php?f=2&t=84663

答案2

正如一位开发人员所建议的那样本论坛,我已修改browse.xml以提供所需的行为。

添加谓词检查文件browse.xml是否以当前目录开头/library/(我想要设为根目录的路径)。

<vlc id="if" param1="file.name value '/library/' 9 strncmp 0 =" />
...
<vlc id="end" />

其中 9 是路径的长度(在我的情况下是 '/library/')。另外,在每个目录列表中添加了一个条目链接回所需的根。

<element type="directory" size="" date="" path="/library/" name="Media Root" extension="" />

完整browse.xml文件现为:

<vlc id="end" />

<root>
<vlc id="if" param1="url_param 1 =" />
  <vlc id="rpn" param1="'dir' url_extract" />
  <element type="directory" size="" date="" path="/library/" name="Media Root" extension="" />
  <vlc id="foreach" param1="file" param2="directory" />
    <vlc id="if" param1="file.name value '/library/' 9 strncmp 0 =" />
      <vlc id="if" param1="file.basename value '.' 1 strncmp 0 != file.basename value '..' 2 strncmp 0 = |" />
        <element type="<vlc id="value" param1="file.type" />" size="<vlc id="value" param1="file.size" />" date="<vlc id="value" param1="file.date" />" path="<vlc id="value" param1="file.name value xml_encode" />" name="<vlc id="value" param1="file.basename value xml_encode" />" extension="<vlc id="value" param1="file.ext value xml_encode" />" />
      <vlc id="end" />
    <vlc id="end" />
  <vlc id="end" />
<vlc id="end" />
</root>

如果您有更好的方法,请提出建议。另一个安全选项是编辑文件,.hosts以便只有本地流量可以与 VLC 服务器交互。然后,您可以设置点对点 VPN 服务器进行加密,并使用密码保护访问。(详细信息超出了本答案的范围。)

相关内容