【なんか】投函専用FTPサーバのプロトタイプ【できた】


TL;DR

  • できあがりはこちら → koshigoe/transpotter
  • ProFTPD を採用
  • FTP, SFTP に対応
  • 投函専用 = put-only = アップロードされたファイルは S3 に転送して抹消
  • FTP アカウントは DB テーブルを使って認証
  • FTP アカウントを WebAPI 経由で管理できる様にした
  • ホストを disposable にできている、気がしている(FTP サーバ機能については)
  • DNS ラウンドロビンを雑に試した

未解決

  • PUT 乱発による S3 破産問題
  • ディレクトリの上限問題
  • Vagrant で検証している時に FTP だけ SQLUserInfo が効かなくなった問題(VM を作り直したら解決したが……)
  • 本当にこんなものが必要なのか問題

感想

何か書けるかなと思いましたが、普通に ProFTPD を使っているだけなので特に書く事がありませんでした。ひとまず、試作品の披露くらいはしておこう、という思い出 Qiita です。

ProFTPD について今回得た知識をひねり出すと↓くらいでしょうか。

  • Global ディレクティブ内で宣言したディレクティブは VirtualHost などに引き継がれる(設定の共通化)
  • VirtualHost ディレクティブでホスト名を使った場合、起動時に名前解決できないと起動に失敗する
  • mod_exec モジュールで実行するコマンドの実行時の環境変数はまっさら
    • /etc/environment とか systemd の EnvironmentFile とかが使えるのかと思いましたがそんな事は無く
  • mod_exec モジュールで実行したコマンドの標準出力、標準エラーがどこにいくのかよくわかってません

正直、本題よりも itamae と戯れていた思い出の方が強いのですが、itamae について書けることも特になく。

敢えて挙げるとすれば、itamae ssh に ssh_config のパスを指定するための --ssh-config を追加する PRを送った事くらいでしょうか。ただ、 -F オプションのネーミングセンスについて指摘をもらって修正したら、急に CI が通らなくなりました。塩漬け濃厚です。bundle の man ページが開いてキー入力待ちになって wercker がタイムアウトするとか、何が起きているのかよく分かりません。ローカルで再現できるなら調べようもあるのですが。

そんな感じです。

おまけ:思い出