当我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
(以便仅比较路径的开头。
答案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 服务器进行加密,并使用密码保护访问。(详细信息超出了本答案的范围。)