Экспериментальная структура FTP -сервера. Предоставляя простой класс драйверов, который отвечает на несколько методов, вы можете иметь полный FTP -сервер.
Некоторые варианты использования выборки включают в себя постоянные данные:
Доступен пример драйвера в памяти - см. Инструкции по использованию ниже для шагов для его использования.
Полная документация для пакета доступна на Годоке
go get github.com/yob/graval
Для загрузки FTP -сервера вам необходимо предоставить драйвер, который говорит со своим уровнем настойчивости - требуемый контракт драйвера указан ниже.
В качестве демонстрации есть пример драйвера в памяти. Вы можете построить его с помощью этой команды:
go install github.com/yob/graval/graval-mem
Затем запустите:
./bin/graval-mem
И, наконец, подключитесь к серверу с любым клиентом FTP и следующей сведением:
host: 127.0.0.1
username: test
password: 1234
Ваш драйвер должен реализовать ряд простых методов. Вы можете просмотреть необходимый контракт в пакетных документах на Годоке
FTP - невероятно небезопасенный протокол. Будьте осторожны с тем, чтобы заставлять пользователей аутентифицировать с помощью имени пользователя или пароля, которые важны.
Эта библиотека распространяется в соответствии с условиями лицензии MIT. Смотрите включенный файл для более подробной информации.
Все предложения и патчи приветствуются, предпочтительно через репозиторий GIT, из которого я могу вытащить. Если эта библиотека окажется полезной для вас, пожалуйста, дайте мне знать.
Существует ряд RFC, которые вместе указывают протокол FTP. В хронологическом порядке более полезные:
Для английского резюме, которое несколько разборчиво, чем RFCS, и предоставляет некоторые комментарии о том, какие функции на самом деле полезны или актуальны через 24 года после публикации RFC959:
Для урока истории, ознакомьтесь с Приложением III RCF959. В нем перечислены предыдущие (устаревшие) документы RFC, которые относятся к передаче файлов, включая старый RFC114 с 1971 года, «протокол передачи файла»
Эта библиотека в значительной степени основана на EM-FTPD, FTPD-структуре с аналогичными целями дизайна в экосистемах Ruby и Eventmachine. Это сработало достаточно хорошо, но вы знаете, обратные вызовы и петли событий делают мне что -то что -то.