Phase 1: Add detailed logging for SSH_FXP_WRITE and SSH_FXP_ATTRS
- 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:
@@ -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))?;
|
||||
|
||||
Reference in New Issue
Block a user