ComicGlass Backup protocol. (Version1.0) この資料は暫定版です。 予告なく修正することがあります。 なお、このプロトコルはご自由に利用して構いません。 <基本情報> ・Byte=オクテット ・%%で囲った部分は変数を表す ・命令は文字列で1行単位。キャリッジリターン(\r\n)で改行。 ・%BackupID%,%DeviceID%はUUIDを文字列化したもの  (IDはアプリ側で生成)  BackupIDはバックアップごとの一意な値。  DeviceIDはデバイスごとの一意な値。  (デバイス固有のUDIDではありません。ComicGlassがランダムに生成します。よってComicGlassを再インストールした場合には新しいIDになります) ・%DisplayName%はUTF8で60Byte以内 ・文字コードはUTF-8、ファイル名のディレクトリ区切りは"/" ・iOSの仕様上、ファイル名に通常のOSでファイル名に使えない文字が入ることがあるので何かしらのケアが必要。  例えば<や|など。 ・ファイルサイズは上位32bitと下位32bitに分けた10進数文字列をスペースで区切って表現する。 ・日付はunix timeを上位32bitと下位32bitに分けた10進数文字列をスペースで区切って表現する。 <ホスト自動検出プロトコル/UDP> ネットワーク内のホストを自動的に探すために利用。 BackupServerはUDPポート53178にてパケットを受信、以下を受信したら応答をポート53179に返す。 ■CGSYNC/%Version% %Version%は2バイトで0x0001 (little endian) <応答> →CGSYNC/%Version%%Port%ホストの表示名 最後はNULLターミネート CGSYNC ... 0-5Byte Version 7-8Byte Port 9-10Byte Length 11 (ホスト名部分の長さ。終端文字含まず) ホスト名前 12Byte以降 (終端含めて64Byte以下) <通信プロトコル/TCP (ComicGlass→BackupServer)> (ポート番号は任意だが、Windows版サーバは49728を利用) ■CGSYNC/%Version% BackupServer接続後、ComicGlassが最初に送信する <応答> →CGSYNC/%Version% 例)CGSYNC/1.0 バージョンがあわない場合、ComicGlassはQUITを送信して終了することがある。 ■LIST 存在するバックアップリストの問い合わせ。 バックアップ機能+既存を更新を選んだ時、 リストア機能を選んだ時に送信される <応答> →%バックアップリスト% ■SELECT/%DeviceID% %BackupID% %DisplayName% バックアップまたはリストアモードのときに送信される 同期のときは使わない。 どのバックアップを利用するかを選択する。 <応答> →WELCOME 接続成功 →ERROR/%エラーメッセージ% ■MODE/%モード% モードを切り替え BACKUPかSYNC <応答> →OK →NO_SYNC_SETTINGS SYNCの設定がしてない(SYNCの場合) →ERROR/%エラーメッセージ% ■GETLIST ホストのファイルリストを取得。 MODEが実行された後に送信する WAITだけはすぐに返す。(ファイルリスト作るのに時間かかる) <応答> →WAIT  %ファイルリスト% →ERROR/%エラーメッセージ% ■GETFILE/%hostpath% ファイルを取得 <応答> →OK %FileSizeLow% %FileSizeHeigh% %DateLow% %DateHeigh%  %ファイルデータ% →ERROR/%エラーメッセージ% ■PUTBOOK %FileSizeLow% %FileSizeHeigh% %DateLow% %DateHeigh% %path% ■PUTFILE %FileSizeLow% %FileSizeHeigh% %DateLow% %DateHeigh% %path% ファイルを転送BOOKとFILEはファイル種別のヒント。(BackupServer側が区別するかどうかは任意) ファイル名には?や\なども含まれる可能性がある。 <応答> →OK →SKIP/%メッセージ% →EXIST →ERROR/%エラーメッセージ% SKIPとEXISTを返しても転送は続行される。 EXISTはファイルが既に存在しているため転送不要の場合、SKIPはその他理由でそのファイルの転送のみできない場合。 前者は正常処理だが、後者はエラー扱い。 ERRORは継続不能エラーとして転送も中断。 <動作> OKの場合はファイルを転送 <ファイル転送後の応答(BackupServer→ComicGlass> →OK →ERROR/%エラーメッセージ% ファイルを正しく保存できた事を確認しOKを返す ■COMMIT バックアップの確定。 バックアップモードのときのみ。 このタイミングで、転送されなかったが、バックアップに存在するファイルを消す作業などを実施する。 →OK →ERROR ■QUIT <応答> →BYE ※最初の接続後ビジーの場合は BUSY を返して切断する。 <リストフォーマット> [ファイルリストフォーマット](1行1項目、最後は.のみの行) %sizeLow% %sizeheigh% %dateLow% %dateHeigh% %path% %sizeLow% %sizeheigh% %dateLow% %dateHeigh% %path% . [バックアップリスト](1行1項目、最後は.のみの行) %DeviceID% %BackupID% %DateLow% %DateHeigh% %DisplayName% %DeviceID% %BackupID% %DateLow% %DateHeigh% %DisplayName% . Ryusuke Hotta