Когда я запускаю vlc как:

vlc -I http

Я открываю пользователей, чтобы просмотреть всю структуру моей системной директории. Это слишком много.

Например, на странице http://localhost:8080/vlm.html я могу нажать « Edit в поле «Ввод», затем нажать « Browse . Во всплывающем окне я могу продолжать нажимать '..' .

Я хочу открыть этот сервер, чтобы получить к нему удаленный доступ, но я не хочу раскрывать всю структуру моей системной директории.

Как я могу ограничить функциональность просмотра определенным поддеревом?

2 ответа2

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 13, если длина строки X:\SomeFolder (чтобы сравнивать только начало пути.

Оригинальное сообщение взято с http://forum.videolan.org/viewtopic.php?f=2&t=84663.

0

По предложению разработчика на этом форуме, я изменил 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-сервер для шифрования и защитить паролем доступ. (Подробности выходят за рамки этого ответа.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .