2010-06-30 2 views
2

Мне нужно создать пользователей FTP с помощью программного обеспечения C#, которое запускается на стороне клиента, я не знаю, с чего начать или как это сделать, я даже не уверен, что это возможно, поскольку это возможно требуется регистрировать как root?Создание пользователя FTP динамически

Моим другим вариантом было бы вызвать скрипт PHP через программное обеспечение C#, которое могло бы вызвать скрипт system()?

Эта функция должна работать на общем хостинге Linux (поскольку это является общим, я не могу делать все, что в моих силах).

+0

Какой сервер FTP вы используете? Как вы обычно создаете пользователей FTP? – William

+0

Обычно я создаю их с помощью панели управления DirectAdmin, и я действительно не знаю, какой сервер установлен. – Dominique

+0

Пользователи, использующие ваше клиентское программное обеспечение, знают информацию в DirectAdmin? – William

ответ

1

Если бы это был я - и это добавляет еще одну движущуюся часть, я понимаю - я отделяю создание пользователей и размещаю это в длительном процессе на удаленном сервере, где оба сервера процесс и PHP-фасад работают с чем-то вроде Gearman для координации заданий. Вы не сможете создавать процессы на удаленном сервере Linux с C# без какого-либо внешнего средства, например rsh. Что-то просто подсказывает мне идею создания пользователей через сайт PHP, если только он доступен только через частную интрасеть без внешнего доступа. Наличие отдельного процесса даст вам только один дополнительный шаг для проверки.

+0

Я думал больше о вызове системной функции или что-то в этом роде для создания пользователя FTP. Пользователь программного обеспечения в некоторых случаях понадобится, чтобы предоставить кому-то доступ к файлу на сервере, но я не хочу, чтобы они вручную создавали пользователя FTP, а также не устанавливали папку user/password/default. Мне также не нравится идея PHP, но мне нужно иметь возможность создавать FTP-пользователей удаленно, я надеюсь найти лучшее решение тоже :) – Dominique

2

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

Если вы можете управлять своими пользователями на общем хосте с помощью системы(), то непременно отправляйтесь по этому маршруту.

Если вы не можете, вам может потребоваться создать сценарий, который выполняется на сервере, который принимает входящие запросы, а затем напрямую работает с DirectAdmin для управления пользователями. Это потребует, чтобы скрипт знал учетные данные DirectAdmin, и если какие-либо обновления происходят с DirectAdmin, это может потенциально нарушить ваш скрипт. Я был бы очень осторожен с этим методом, так как любой, кто имеет доступ к этому скрипту, мог бы управлять пользователями ftp. Если ваш клиент может управлять этими пользователями FTP, любой может. Как пользователи будут «аутентифицироваться» с клиентом, если есть какая-либо аутентификация. Если да, то как они аутентифицируются? Поскольку ваш скрипт «api» также должен работать с этой аутентификацией.

Мой вопрос: вам НЕТ создавать пользователя FTP? Если им просто нужно загрузить файл, не могли ли они просто загрузить файл через онлайн-форму? Или через клиента? Вам нужно использовать FTP?

EDIT: Так как я уже говорил в комментариях, одна идея будет иметь на стороне сервера скрипт (возможно, PHP), который будет обрабатывать управление файлами. Он будет принимать запросы на загрузку/удаление/удаление файлов. Когда файл загружается на сайт, он будет сохранен и будет возвращать специальный токен вместе с расположением файла.

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

Связь между клиентом и сайтом должна осуществляться через SSL, если это возможно, для остановки атак MITM.

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

Итак, это зависит от вас, как вы хотите продолжить эту часть.

+0

Пользователи программного обеспечения будут редко создавать новых пользователей FTP, но они будут отправлять файлы онлайн через него, и я не хочу, чтобы каждый пользователь использовал одну и ту же учетную запись/пароль для FTP, поэтому я хотел создать 1 FTP для USER, я мог бы использовать то же самое и иметь вложенную папку, но если кто-то хочет, чтобы он мог найти учетную запись/пароль и испортить другие файлы пользователей. – Dominique

+0

Но как они отправляют файлы, они уже используют FTP? Будут ли они отправлять их через клиента через FTP-клиент? – William

+0

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