===============================================================================
  ftp4devlite  Version 1.0.1
===============================================================================

【はじめに】

ftp4devlite は、開発中のアプリケーションや機器からFTP／FTPS／SFTPで
アップロードされたファイルをローカルで受信し、ファイルと通信セッションを
確認するためのWindows用テストサーバーです。

.NET 10 / Windows Formsで作成されており、受信ファイルの履歴とセッションを
SQLiteへ保存します。


【主な機能】

・ライト／ダークテーマ、日本語／英語UI（初期値はOSの設定に従う）
  「設定」→「一般」で個別に切り替えられます。日本語以外のOSでは英語UIです。
・FTP、明示的FTPS（AUTH TLS）、暗黙的FTPS、SFTPでのファイル転送
・アップロードされたファイルの日時、ユーザー、パス、サイズ、プロトコル表示
・FTPのABOR転送中断とTYPE Aの改行変換
・FTP/FTPS/SFTP共通の複数ユーザー管理（ユーザー別保存先、読み取り専用、アップロード禁止、容量上限）
・クライアントでの名前変更を受信一覧と履歴へ反映
・FTP／FTPS／SFTPセッションと通信ログの表示
・サブフォルダーを含むアップロードと、保存先外へのパストラバーサル防止
・FTPのパッシブ／アクティブ転送
・アップロード履歴とセッションのSQLite永続保存
・アップロード保持件数の設定と、上限超過時の古いファイルの自動削除
・受信ファイルの表示、別名保存、削除
・FTP／FTPS／SFTPクライアントで削除したファイルの一覧・履歴への自動反映
・アップロード済みファイルのFTP／FTPS／SFTPクライアントへのダウンロード
・新着アップロード時のウィンドウ前面表示（設定でON／OFF可能）
・ウィンドウを閉じた後のタスクトレイ常駐
・ログイン後の自動起動、起動時のトレイ常駐、通知領域クリック時の最新ファイル詳細表示
・FTPS用自己署名証明書、SFTPホスト鍵、SFTPクライアント鍵の自動生成
・FTPSクライアント証明書の自動生成と、パスワード／証明書の組み合わせ認証
・任意のFTPS証明書、SFTPホスト鍵、authorized_keysへの切り替え
・SFTPのパスワード認証、公開鍵認証、両方を必須にする多要素認証
・各証明書・鍵の保存
・FTPS証明書のWindows証明書ストアへの登録
・FTP／FTPS／SFTPのエラー応答、遅延、接続切断シミュレーション（既定OFF）
・待受アドレス、ポート、認証情報、保存先などの設定
・FTP／FTPSの通信タイムアウト、パッシブポート範囲、PASV通知IPアドレス設定
・「一般」「FTP/FTPS」「SFTP」に分けた設定と、リリースノート／MITライセンス表示の「情報」タブ


【動作環境】

OS        : Windows 10 バージョン1809以降、Windows 11
対応環境  : 64ビット（x64）

本ソフトは自己完結型で配布されるため、通常は.NETランタイムを別途
インストールする必要はありません。


【取り扱い種別】

本ソフトウェアはフリーソフトです。無料で利用できます。
使用にあたって送金やライセンス料の支払いは必要ありません。


【インストール】

1. ftp4devlite-1.0.1-win-x64-setup.exeを実行します。
   ZIP版の場合は展開してから同じインストーラーを実行してください。
2. インストーラーの案内に従ってインストールします。
   既定の保存先は現在のユーザーのLocalAppData内のPrograms\FTP4DevLiteです。
3. スタートメニューのFTP4DevLiteから起動します。

アンインストールはWindowsの設定にあるアプリ一覧から行えます。
受信ファイル、設定、履歴はアンインストール後も保持します。


【基本的な使い方】

1. サーバーを起動する

   ftp4devlite.exeを起動すると、既定では次のアドレスとポートで待受けます。

     待受アドレス : 127.0.0.1
     FTP／FTPS    : 21
     暗黙的FTPS   : 990（初期状態では無効）
     SFTP         : 22

   画面下部に待受中と表示されれば準備完了です。ポートが他のアプリで使用中の
   場合は「設定」から空いているポートへ変更してください。

2. FTPクライアントを設定する

   ローカルPCからFTPで接続する一般的な設定例は次のとおりです。

     ホスト       : 127.0.0.1 または localhost
     ポート       : 21
     プロトコル   : FTP
     暗号化       : なし、または明示的FTP over TLS
     ユーザー名   : 任意
     パスワード   : 任意

   SFTPの場合はプロトコルをSFTP、ポートを22にします。初期設定では開発時の
   利便性のため、任意のユーザー名とパスワードを受け入れます。設定画面で
   固定の認証情報へ変更できます。

3. アップロード結果を確認する

   ファイルを受信すると「アップロードされたファイル」タブの先頭へ追加され、
   既定ではメインウィンドウが最前面に表示されます。対象を選択すると表示、
   保存、詳細確認、削除ができます。
   タスクトレイ常駐中はウィンドウを復元せず、Windows通知を表示します。
   通知をクリックするとウィンドウを開きます。前面表示と通知は設定でOFFにできます。

   /test/example.txtへアップロードした場合の既定保存先は次のとおりです。

     C:\ProgramData\mmomoyama\FTP4DevLite\Uploads\test\example.txt

   「設定」→「一般」の「アップロード保持件数」に1～100000を指定すると、上限を
   超えた時点で受信日時が古いファイルから、ディスク・一覧・SQLite履歴を自動削除
   します。0は無制限です。設定値を減らして保存した場合にも上限を適用します。

   FTP／FTPSでSTOR /test/example.txtを実行した場合、親フォルダーは自動作成
   されます。SFTPでは通常、クライアントから先に/testフォルダーを作成します。

4. セッションを確認する

   「セッション」タブには開始日時、プロトコル、接続元、ユーザー、状態、
   転送数が表示されます。「ログを表示」でFTPコマンドや接続経過を確認できます。

5. タスクトレイから操作する

   ウィンドウの閉じるボタンを押してもサーバーは終了せず、タスクトレイに
   常駐します。トレイアイコンのメニューから表示、待受開始／停止、終了を
   選択できます。同じWindowsユーザー・ログオンセッションで二重起動すると、
   新しいアプリは起動せず、既存のウィンドウを復元して最前面に表示します。

6. ファイルとセッション履歴をすべて削除する

   「すべて削除」で受信ファイルとセッション履歴をまとめて削除します。
   ファイルはディスクから削除され、接続中の古いセッション更新でも履歴は復活しません。


【FTPS証明書】

証明書を指定しない場合、次の自己署名証明書が自動生成されます。

  C:\ProgramData\mmomoyama\FTP4DevLite\ftp4devlite-default-ftps-certificate.pfx

「設定」→「FTP/FTPS」から任意のPFX／P12証明書とパスワードを指定できます。
現在選択中の証明書を、Windowsの「信頼されたルート証明機関」または「個人」
ストアへ登録することもできます。ローカルコンピューターのストアへの登録には
管理者権限が必要です。

旧版のdevelopment-ftps.pfxが存在する場合は削除せず、新しい既定ファイル名へ
コピーして引き継ぎます。


【FTPSクライアント認証】

FTPSでは、サーバー証明書に加えて次のクライアント認証方式を選択できます。

  ・ID／パスワードのみ
  ・クライアント証明書のみ
  ・ID／パスワードまたはクライアント証明書
  ・ID／パスワードとクライアント証明書の両方

クライアント証明書を使用する場合、設定した公開証明書と完全一致し、有効期限内
かつClient Authentication用途の証明書だけを許可します。既定証明書は自動生成
され、「既定証明書を保存...」からクライアント用PFXとサーバー設定用CERを保存
できます。証明書認証を使用する接続では、TLS確立前のパスワード認証を拒否します。


【SFTPホスト鍵】

SFTPはX.509証明書ではなくSSHホスト鍵を使用します。指定しない場合は次の
RSA 3072ビット鍵を自動生成します。

  C:\ProgramData\mmomoyama\FTP4DevLite\ftp4devlite-default-sftp-hostkey.pem

設定画面からPKCS#8 PEM形式のRSAホスト秘密鍵へ変更できます。SSHホスト鍵はWindowsの
証明書ストアには登録されません。鍵が変わるとSFTPクライアントにホスト鍵変更の
警告が表示されるため、意図しない削除や置き換えに注意してください。

旧版の.serホスト鍵は削除しませんが互換性がないため、新しいPEMホスト鍵を
自動生成します。


【SFTP公開鍵認証】

初期状態ではパスワード認証と公開鍵認証の両方が有効です。次のauthorized_keysと
対応するRSA 3072ビットのクライアント鍵ペアが自動生成されます。

  C:\ProgramData\mmomoyama\FTP4DevLite\ftp4devlite-default-authorized_keys
  C:\ProgramData\mmomoyama\FTP4DevLite\ftp4devlite-default-sftp-client-key.pem
  C:\ProgramData\mmomoyama\FTP4DevLite\ftp4devlite-default-sftp-client-key.pem.pub

「設定」→「SFTP」で任意のOpenSSH形式authorized_keysへ切り替えできます。
「既定鍵ペアを保存...」を押すと、SFTPクライアントで使用する秘密鍵と公開鍵を
任意の場所へ保存できます。パスワード認証と公開鍵認証は個別に無効化できますが、
SFTPを使用する場合は少なくとも一方を有効にしてください。

「パスワードと公開鍵の両方を必須にする（多要素認証）」を有効にすると、同一の
接続とユーザー名で両方の認証に成功した場合だけ接続できます。この設定を使用する
場合は「任意のユーザー名とパスワードを受け入れる」を無効にし、固定ユーザー名と
パスワードを設定してください。

FTPS証明書とSFTPホスト鍵も、同じ設定画面の「保存...」から保存できます。


【SFTP通信タイムアウト】

「設定」→「SFTP」の「通信タイムアウト（秒）」で、クライアントからSSH通信が
ない状態の接続を切断するまでの時間を0～86400秒で指定できます。初期値の0は
タイムアウトなしです。短時間で切断したい試験の場合だけ1以上を指定してください。


【FTP／FTPS通信・パッシブ接続設定】

「設定」→「FTP/FTPS」で通信タイムアウトを0～86400秒で指定できます。0は
タイムアウトなしです。無通信の制御接続、データ接続待ち、転送、TLS接続が指定
時間進まない場合に接続を終了します。

パッシブポート範囲は開始・終了の両方を指定します。両方0の場合は空きポートを
自動選択します。固定範囲を使用する場合は、Windowsファイアウォールやルーター
でも同じポート範囲を許可してください。

PASV通知IPアドレスには、NATやルーター越しのクライアントへ通知するIPv4アドレス
を指定できます。空欄では制御接続の接続先IPを使用します。この設定は待受け
アドレス自体を変更せず、IPを通知しないEPSV応答には使用されません。


【FTP／SFTPエラーシミュレーション】

「設定」→「FTP/FTPS」または「SFTP」でエラーシミュレーションを有効にすると、
クライアント側のエラー処理や再試行処理を試験できます。既定はOFFです。

接続、認証、一覧取得、ダウンロード、アップロード、ファイル操作から発生箇所を
選択できます。エラー応答、最大300秒の遅延、応答せず接続を切断する動作に対応し、
発生方式は毎回、最初の1回、指定確率から選べます。ユーザー名またはパスに含まれる
文字列を指定して、対象を絞り込むこともできます。

FTP／FTPSでは400～599のFTP応答コード、SFTPでは2～8のSSH_FX状態コードを指定
します。SFTPの接続段階は接続切断、認証段階は認証拒否として動作します。
発生したシミュレーションはセッションログへ明記されます。


【設定とデータ】

設定ファイル:

  %LOCALAPPDATA%\ftp4devlite\settings.json

アップロードファイル:

  C:\ProgramData\mmomoyama\FTP4DevLite\Uploads

履歴・セッションSQLiteデータベース:

  C:\ProgramData\mmomoyama\FTP4DevLite\ftp4devlite.db

エラーログ、既定証明書、SFTPホスト鍵もProgramData側の同じアプリケーション
フォルダーに保存されます。

環境変数FTP4DEVLITE_DATA_DIRECTORYでデータ保存先を変更できます。
相対パスは既定のデータフォルダーを基準に解決し、起動時の作業フォルダーに依存しません。

WindowsのCET対応が不完全な環境での起動時停止を回避するため、
この配布版はアプリのCET（ハードウェアによるスタック保護）を無効にしています。
Windows全体の設定は変更しません。


【別のPCから接続する】

設定画面で待受アドレスを0.0.0.0へ変更し、クライアントにはftp4devliteを
実行しているPCのIPアドレスを指定します。必要に応じてWindowsファイアウォールで
FTP／FTPS／SFTPポートへの受信を許可してください。

0.0.0.0はすべてのIPv4インターフェイスで待ち受けます。信頼できないネットワーク
では公開せず、固定認証、FTPSまたはSFTP、ファイアウォールを使用してください。


【アンインストール】

1. インストーラーがアプリを自動終了します。
   終了できない場合は、タスクトレイメニューから終了して再実行してください。
2. Windowsのアプリ一覧でFTP4DevLiteを選んでアンインストールします。
3. 設定も削除する場合は次のフォルダーを削除します。

     %LOCALAPPDATA%\ftp4devlite

4. 受信ファイルと履歴も削除する場合は次のフォルダーを削除します。

     C:\ProgramData\mmomoyama\FTP4DevLite

Windows証明書ストアへ登録したFTPS証明書は自動削除されません。不要になった場合は、
登録先の証明書管理画面から拇印を確認して削除してください。


【使用上の注意】

・本ソフトは開発およびテスト用途の簡易ファイル転送サーバーです。
  インターネットへ公開する実運用サーバーとして使用しないでください。
・既定では127.0.0.1だけで待ち受けます。
・既定ポート21または22が使用中の場合は、2121、2222などへ変更してください。
・初期設定では任意の認証情報を受け入れます。外部接続時は固定認証へ変更して
  ください。
・受信ファイルには機密情報が含まれる場合があります。ProgramData内のファイルと
  SQLiteデータベースの取り扱いに注意してください。


【免責事項】

本ソフトウェアの利用によって生じたいかなる損害についても、作者は一切の責任を
負いません。利用者自身の責任において使用してください。


【著作権・配布について】

本ソフトウェアの著作権は作者に帰属します。
配布、転載、改変その他の利用条件については、作者へお問い合わせください。


【更新履歴】

2026/10/11  Version 1.0.1
  ・FTP/FTPS/SFTP共通の複数ユーザー管理と、ユーザー別の保存先・権限・容量制限を追加。
  ・FTP/FTPSのタイムアウト、パッシブポート範囲、PASV通知IP、ABOR、ASCII転送に対応。
  ・SFTPのタイムアウトとパスワード・公開鍵・多要素認証、FTPSクライアント証明書認証に対応。
  ・FTP/FTPS/SFTPのエラーシミュレーションを追加。
  ・クライアントからのダウンロード、削除、名前変更と履歴の同期に対応。
  ・設定画面とアプリアイコンを更新。

2026/10/03  Version 1.0.0
  ・初回公開版。


【作者・連絡先】

作者      : 桃山 学
メール    : info@mmomoyama.org
公式サイト: https://mmomoyama.org/FTP4DevLite/


以上
