BackupPC Daemon 200601171056 Release information: pkg: BakcupPC Daemon version 200601171056 url: http://www.rkeene.org/devel/backuppcd-200601171056.tar.gz date: Tue Jan 17 10:56:46 CST 2006 mail: backuppcd-bugs@psislidell.com backuppcd@rkeene.org author: Roy Keene Planning Systems Inc. Slidell, LA 70458 United States -------------------------------------------------------------------------- [COMMAND (8 bits)] { * command specific data * } COMMAND == 0x0: Invalid must not be sent. COMMAND == 0x1: Authenticate. { [USERNAME_LENGTH (16 bits)] [PASSWORD_LENGTH (16 bits)] [USERNAME (USERNAME_LENGTH * 8 bits)] [PASSWORD (PASSWORD_LENGTH * 8 bits)] } (32 + ((USERNAME_LENGTH + PASSWORD_LENGTH) * 8) bits) COMMAND == 0x2: Enable SSL { [PUBLIC_KEY_LENGTH (16 bits)] [PUBLIC_KEY (PUBLIC_KEY_LENGTH * 8 bits)] } (16 + (PUBLIC_KEY_LENGTH * 8) bits) COMMAND == 0x3: Set session key { [CIPHER_ALGO_ID (32 bits)] [SESSION_KEY_LENGTH (16 bits)] [SESSION_KEY (SESSION_KEY_LENGTH * 8 bits)] } (48 + (SESSION_KEY_LENGTH * 8) bits) Notes: This should be done after both ends have agreed to enable SSL. COMMAND == 0x4: List files { [OPTIONS (8 bits)] [EXCLUDE_SECTION_LENGTH (32 bits)] [INCLUDE_SECTION_LENGTH (32 bits)] [PATHNAME_LENGTH (32 bits)] [PATHNAME (PATHNAME_LENGTH * 8 bits)] EXCLUDE_PATS { [EXCLUDE_LENGTH (16 bits)] [EXCLUDE (EXCLUDE_LENGTH * 8 bits)] } (EXCLUDE_SECTION_LENGTH * 8 bits) INCLUDE_PATS { [INCLUDE_LENGTH (16 bits)] [INCLUDE (INCLUDE_LENGTH * 8 bits)] } (INCLUDE_SECTION_LENGTH * 8 bits) } (104 + ((PATHNAME_LENGTH + EXCLUDE_SECTION_LENGTH + INCLUDE_SECTION_LENGTH) * 8) bits) Notes: Requires the user to authenticate with READ or RDWR access. COMMAND == 0x5: Get files { [OPTIONS (8 bits)] [EXCLUDE_SECTION_LENGTH (32 bits)] [INCLUDE_SECTION_LENGTH (32 bits)] [PATHNAME_LENGTH (32 bits)] [PATHNAME (PATHNAME_LENGTH * 8 bits)] EXCLUDE_PATS { [EXCLUDE_LENGTH (16 bits)] [EXCLUDE (EXCLUDE_LENGTH * 8 bits)] } (EXCLUDE_SECTION_LENGTH * 8 bits) INCLUDE_PATS { [INCLUDE_LENGTH (16 bits)] [INCLUDE (INCLUDE_LENGTH * 8 bits)] } (INCLUDE_SECTION_LENGTH * 8 bits) } (104 + ((PATHNAME_LENGTH + EXCLUDE_SECTION_LENGTH + INCLUDE_SECTION_LENGTH) * 8) bits) Notes: Requires the user to authenticate with READ or RDWR access. COMMAND == 0x6: Put files { ENTRY { [FILE_TYPE (8 bits): == 0xFF indicates end-of-files] --- REMAINDER NOT SENT WHEN FILE_TYPE == 0xFF --- [ATTRIB_LENGTH (32 bits)] [FILE_SIZE (64 bits)] [BLOCK_SIZE (32 bits)] [PATHNAME_LENGTH (32 bits)] [PATHNAME (PATHNAME_LENGTH * 8 bits)] ATTRIB { [ATTRIB_TYPE_ID (16 bits)] [ATTRIB_LENGTH (32 bits)] [ATTRIB_VALUE (ATTRIB_LENGTH * 8 bits)] } (ATTRIB_LENGTH * 8 bits) DATA { [BLOCK_NUM (32 bits): == 0xFFFFFFFF indicates last block] --- REMAINDER NOT SENT WHEN BLOCK_NUM == 0xFFFFFFFF --- [BLOCK (BLOCK_SIZE * 8 bits)] } (... big...) } (... big...) } (... big...) Notes: Requires the user to authenticate with WRITE or RDWR access. COMMAND == 0x7: Rdiff get file { [FILE_SIZE (64 bits): == 0xFFFFFFFFFFFFFFFF indicates non-existant] [RDIFF_BLOCK_SIZE (32 bits)] [RDIFF_HASH_ALGO (8bits)] [RDIFF_INFO_LENGTH (32 bits)] [PATHNAME_LENGTH (32 bits)] [PATHNAME (PATHNAME_LENGTH * 8 bits)] RDIFF_INFO { [RDIFF_BLOCK_MD5 (128 bits)] } (RDIFF_INFO_LENGTH * 8 bits) } (160 + ((RDIFF_INFO_LENGTH + PATHNAME_LENGTH) * 8) bits) Notes: Requires the user to authenticate with READ or RDWR access. COMMAND == 0x81: Authenticate reply { [STATUS (8 bits): 0 == OKAY, 1 == FAILURE] } (8 bits) COMMAND == 0x82: Enable SSL Reply { [STATUS (8 bits): 0 == OKAY, 1 == FAILURE] } (8 bits) COMMAND == 0x83: Set session key reply { [STATUS (8 bits): 0 == OKAY, 1 == FAILURE] } (8 bits) COMMAND == 0x84: List files reply { ENTRY { [FILE_TYPE (8 bits): == 0xFF indicates end-of-files] --- REMAINDER NOT SENT WHEN FILE_TYPE == 0xFF --- [ATTRIB_LENGTH (32 bits)] [FILE_SIZE (64 bits)] [BLOCK_SIZE (32 bits)] [PATHNAME_LENGTH (32 bits)] [PATHNAME (PATHNAME_LENGTH * 8 bits)] ATTRIB { [ATTRIB_TYPE_ID (16 bits)] [ATTRIB_LENGTH (32 bits)] [ATTRIB_VALUE (ATTRIB_LENGTH * 8 bits)] } (ATTRIB_LENGTH * 8 bits) } (136 + ((PATHNAME_LENGTH + ATTRIB_LENGTH) * 8) bits } (... big...) Note: This is the same as Get files reply (0x85) and Put files (0x6) except that it lacks a DATA section. COMMAND == 0x85: Get files reply Notes: Same as put files (0x6) COMMAND == 0x86: Put files reply { [STATUS (8 bits): 0 == OKAY, 1 == FAILURE] } (8 bits) COMMAND == 0x87: Rdiff get file reply { [FILE_SIZE (64 bits): == 0xFFFFFFFFFFFFFFFF indicates non-existant] --- REMAINDER NOT SENT WHEN FILE_SIZE == 0xFFFFFFFFFFFFFFFF --- [RDIFF_PARTS_LENGTH (64 bits) [PATHNAME_LENGTH (32 bits)] [PATHNAME (PATHNAME_LENGTH * 8 bits)] RDIFF_PARTS { [PART_BEGIN (64 bits)] [PART_LENGTH (64 bits)] [PART_DATA (PART_LENGTH * 8 bits)] } (RDIFF_PARTS_LENGTH * 8 bits) } (160 + ((PATHNAME_LENGTH + RDIFF_PARTS_LENGTH) * 8) bits)