Как редактировать файлы в файловой системе пользователя с моего веб-сервера? - PullRequest
0 голосов
/ 17 мая 2010

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

На простейшем уровне я хотел бы найти способ, с помощью которого я могу читать / писать на машине пользователя с моего веб-сервера. Чтобы это работало, я думаю, мне нужно будет установить какой-нибудь «плагин» на машине пользователя, который может получать (или опрашивать?) Сервер для получения инструкций.

Выше приведено мнение, которое я сейчас использую, возможно, для этого использую JAVA. Это должно работать на Linux, Mac и Windows.

Я действительно ищу совет по поводу вышесказанного, это хорошая идея? Есть ли лучший способ сделать это? Есть ли уже что-то, что я могу построить на вершине?

Я действительно ценю все отзывы и советы, так как это то, чего я раньше не делал.

Спасибо всем

Ответы [ 6 ]

4 голосов
/ 17 мая 2010

Для Java вы можете запустить клиентское приложение через Java Web Start , которое сможет выполнять ограниченный набор операций с файловой системой.

Если это слишком ограничительно, вам потребуется указать ссылку на загрузку клиентского приложения, которое будет установлено / выполнено на настольном компьютере пользователя.

2 голосов
/ 21 мая 2010

Я предполагаю, что вы хотите читать и записывать определенные файлы на компьютере пользователя, которые обычно недоступны (то есть не временные файлы или файлы в песочнице). И вы хотите сделать это с вашего веб-сервера.

Когда вы ищете кроссплатформенный, я бы пошел с Java. Учитывая, что ваши потребности просты (чтение / запись файлов из удаленных команд), вы, вероятно, можете выбрать JRE 1.4, которой уже много лет, но она установлена ​​на ca. 98% рабочих столов ( источник ).

Вот краткий обзор того, как вы можете подойти к этому:

  • Создайте Java-апплет или приложение Java Web Start, которое извлекает список команд из URL. URL может содержать любую конкретную идентификацию, которая необходима для идентификации машины, например, идентификатор пользователя (альтернативы см. Ниже).
  • Ваш веб-сервер генерирует список команд, которые должен выполнить апплет - создать файл, прочитать файл, записать файл и отправить их в ответ.
  • Подпишите апплет / приложение, чтобы оно могло выйти за пределы ограничений песочницы. Для этого вам необходимо получить сертификат. Подробнее об этом позже.
  • Информирование и информирование пользователей о том, что делает апплет. Например. страница вашего сайта о том, почему их просят доверять вашему сертификату и каковы последствия этого.

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

Более подробно: Апплет запрашивает список команд из URL. Чтобы воспрепятствовать попыткам использования вашего апплета на другом вредоносном сайте, вы должны использовать HTTPS, чтобы получить список команд для проверки подлинности сервера. URL должен быть жестко запрограммирован в вашем апплете, чтобы любые попытки изменить это нарушали подпись. Как вы передаете команды апплету через URL, зависит от вас, например, Вы можете использовать XML или RMI и просто отправить список команд в виде объекта.

Я упоминал использование идентификатора пользователя для идентификации машины - также возможно использование MAC-адреса машины. См. , как получить MAC-адрес хоста .

Когда у вас есть список команд, ваш апплет выполняет их с помощью API ввода / вывода java-файла. См. Файл , FileReader / FileWriter в javadocs. Вы включаете соответствующую регистрацию, чтобы действия апплетов могли быть проверены позже при необходимости. После того, как апплет выполнил команды, он отправляет результат команд обратно на сервер в виде операции POST или другого вызова метода RMI, если вы установили RMI.

Если вы хотите непрерывно отправлять команды с сервера, тогда апплет может опрашивать URL / регулярно вызывать метод RMI. Таймер может помочь с этим.

При ошибках связи клиенту потребуется запрашивать список команд более одного раза. Таким образом, каждый раз, когда вы создаете список команд с сервера, ему присваивается идентификатор. Сервер выдает один и тот же список с тем же идентификатором, пока не получит подтверждение от апплета о том, что команды были выполнены.

Чтобы подписать апплет, вы должны получить сертификат rsa в центре сертификации. Вы можете подписаться самостоятельно, но затем вы открываете дверь другим, изменяя ваше приложение и выдавая себя за сертификат. Подробности получения и использования сертификатов приведены здесь .

Если вы не знаете Java, то все это может не иметь большого смысла, и это не тривиальный проект, с которого стоит начать, особенно учитывая последствия для ваших пользователей, если ваша реализация имеет дыры и дефекты.

Может быть, стоит проявить осторожность: хотя вы можете это сделать, это не обязательно означает, что вы должны это делать. Я предполагаю, что большинство опытных пользователей не одобрит использование этого приложения и не примет сертификат. Кроме того, существует вина - если ваше приложение случайно удаляет критический файл из-за ошибки, неправильной конфигурации, человеческой ошибки и т. Д., Как вы будете к этому готовы?

0 голосов
/ 21 мая 2010

Самым слабым плодом может быть предоставление доступа через WebDAV через ваш веб-сервер к заданному набору файлов, поскольку это позволяет пользователям видеть файлы как часть своей обычной файловой системы со всеми их обычными инструментами. Тогда вам не нужно делать всю эту функциональность.

Похоже, что Slide может быть развернут на Tomcat, а JBoss имеет ModeShape.

Это будет достаточно полезно?

0 голосов
/ 21 мая 2010

На мой взгляд, Апплет будет лучшим решением. Я создал один апплет, который загружает zip-файл с сервера на клиентском компьютере во временную папку, извлекает zip-файл в каталог, указанный клиентом (пользователем браузера), а затем удаляет zip-файл.

спасибо.

0 голосов
/ 17 мая 2010

Чтобы действительно знать, вам придется ответить на вопрос «почему», почему вы хотите это сделать.

Если вы просто пытаетесь сохранить какое-то состояние на компьютере пользователя, которое вам нужно иметь локально, то для мелких вещей вы можете использовать куки или для более крупных нужд вы можете использовать новые функции веб-базы данных в HTML5 http://dev.w3.org/html5/webdatabase/

Если вам нужен доступ к определенным файлам, вам действительно придется обойти защитную коробку безопасности, которую Java делает при запуске на веб-странице. Я оставлю это другим, я не знаю, как сделать это самому.

0 голосов
/ 17 мая 2010

Для пользователя плагин веб-браузера может быть самым простым, поскольку пользователю не нужно управлять еще одним запущенным приложением, однако у него есть свои ограничения, такие как необходимость разработки плагина для каждого браузера. Кроме того, пользователю потребуется запуск своего браузера.

Пользователь может установить настольное приложение, которое он должен будет продолжать выполнять, поэтому установка его в качестве службы может быть идеальной.

Вы также можете использовать плагин в качестве клина между веб-браузером и настольным приложением, как работает Flash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...