Phase 1: Add detailed logging for SSH_FXP_WRITE and SSH_FXP_ATTRS
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

- Phase 1.2: Add SSH_FXP_WRITE data preview (first 20 bytes)
- Phase 1.3: Add SSH_FXP_ATTRS serialization debug log (flags, size, permissions, etc.)
- Improve SFTP debugging capability for future troubleshooting
- Reference: OpenSSH sftp-server.c logging style

Changes:
- sftp_handler.rs: handle_write() - add data preview debug log
- sftp_handler.rs: SftpAttrs::serialize() - add detailed field log
This commit is contained in:
Warren
2026-06-17 19:36:57 +08:00
parent 45e8a9f440
commit 063c0a589f

View File

@@ -173,6 +173,17 @@ impl SftpAttrs {
}
pub fn serialize(&self) -> Vec<u8> {
// ⭐⭐⭐⭐⭐ Phase 1.3: 添加 SSH_FXP_ATTRS 详细日志
debug!("Serializing SftpAttrs: flags=0x{:08x}, size={}, uid={}, gid={}, permissions=0x{:08x}, atime={}, mtime={}",
self.flags,
self.size.unwrap_or(0),
self.uid.unwrap_or(0),
self.gid.unwrap_or(0),
self.permissions.unwrap_or(0),
self.atime.unwrap_or(0),
self.mtime.unwrap_or(0)
);
let mut buffer = Vec::new();
buffer.write_u32::<BigEndian>(self.flags).unwrap();
@@ -438,6 +449,13 @@ impl SftpHandler {
info!("SSH_FXP_WRITE: id={}, handle={}, offset={}, length={}", id, handle_id, offset, write_data.len());
// ⭐⭐⭐⭐⭐ Phase 1.2: 添加 data preview显示前 20 字节)
if write_data.len() > 0 {
let preview_len = std::cmp::min(20, write_data.len());
let preview = &write_data[0..preview_len];
debug!("SSH_FXP_WRITE data preview (first {} bytes): {:?}", preview_len, preview);
}
if let Some(handle) = self.handles.get_mut(&handle_id) {
if let Some(ref mut file) = handle.file {
file.seek(SeekFrom::Start(offset))?;