hrr_rb_sftp 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +23 -0
- data/lib/hrr_rb_sftp.rb +79 -1
- data/lib/hrr_rb_sftp/loggable.rb +34 -0
- data/lib/hrr_rb_sftp/protocol.rb +39 -33
- data/lib/hrr_rb_sftp/protocol/common.rb +6 -3
- data/lib/hrr_rb_sftp/protocol/common/data_types.rb +19 -0
- data/lib/hrr_rb_sftp/protocol/common/data_types/byte.rb +40 -0
- data/lib/hrr_rb_sftp/protocol/common/data_types/extension_pair.rb +41 -0
- data/lib/hrr_rb_sftp/protocol/common/data_types/extension_pairs.rb +42 -0
- data/lib/hrr_rb_sftp/protocol/common/data_types/string.rb +42 -0
- data/lib/hrr_rb_sftp/protocol/common/data_types/uint32.rb +40 -0
- data/lib/hrr_rb_sftp/protocol/common/data_types/uint64.rb +40 -0
- data/lib/hrr_rb_sftp/protocol/common/packets.rb +16 -0
- data/lib/hrr_rb_sftp/protocol/common/packets/001_ssh_fxp_init.rb +27 -0
- data/lib/hrr_rb_sftp/protocol/common/packets/002_ssh_fxp_version.rb +28 -0
- data/lib/hrr_rb_sftp/protocol/common/packets/packet.rb +96 -0
- data/lib/hrr_rb_sftp/protocol/version1.rb +11 -3
- data/lib/hrr_rb_sftp/protocol/version1/data_types.rb +15 -0
- data/lib/hrr_rb_sftp/protocol/version1/data_types/attrs.rb +91 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets.rb +72 -0
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/003_ssh_fxp_open.rb +94 -43
- data/lib/hrr_rb_sftp/protocol/version1/packets/004_ssh_fxp_close.rb +61 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/005_ssh_fxp_read.rb +72 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/006_ssh_fxp_write.rb +64 -0
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/007_ssh_fxp_lstat.rb +27 -9
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/008_ssh_fxp_fstat.rb +26 -9
- data/lib/hrr_rb_sftp/protocol/version1/packets/009_ssh_fxp_setstat.rb +92 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/010_ssh_fxp_fsetstat.rb +85 -0
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/011_ssh_fxp_opendir.rb +32 -11
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/012_ssh_fxp_readdir.rb +73 -49
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/013_ssh_fxp_remove.rb +27 -9
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/014_ssh_fxp_mkdir.rb +28 -10
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/015_ssh_fxp_rmdir.rb +32 -12
- data/lib/hrr_rb_sftp/protocol/version1/packets/016_ssh_fxp_realpath.rb +47 -0
- data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/017_ssh_fxp_stat.rb +27 -9
- data/lib/hrr_rb_sftp/protocol/version1/packets/101_ssh_fxp_status.rb +73 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/102_ssh_fxp_handle.rb +28 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/103_ssh_fxp_data.rb +28 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/104_ssh_fxp_name.rb +48 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/105_ssh_fxp_attrs.rb +28 -0
- data/lib/hrr_rb_sftp/protocol/version1/packets/packet.rb +57 -0
- data/lib/hrr_rb_sftp/protocol/version2.rb +11 -3
- data/lib/hrr_rb_sftp/protocol/version2/data_types.rb +13 -0
- data/lib/hrr_rb_sftp/protocol/version2/packets.rb +14 -0
- data/lib/hrr_rb_sftp/protocol/version2/packets/018_ssh_fxp_rename.rb +91 -0
- data/lib/hrr_rb_sftp/protocol/version3.rb +12 -3
- data/lib/hrr_rb_sftp/protocol/version3/data_types.rb +13 -0
- data/lib/hrr_rb_sftp/protocol/version3/extensions.rb +94 -0
- data/lib/hrr_rb_sftp/protocol/version3/extensions/extension.rb +58 -0
- data/lib/hrr_rb_sftp/protocol/version3/extensions/fsync_at_openssh_com.rb +59 -0
- data/lib/hrr_rb_sftp/protocol/version3/extensions/hardlink_at_openssh_com.rb +84 -0
- data/lib/hrr_rb_sftp/protocol/version3/extensions/lsetstat_at_openssh_com.rb +132 -0
- data/lib/hrr_rb_sftp/protocol/version3/extensions/posix_rename_at_openssh_com.rb +76 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets.rb +19 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets/014_ssh_fxp_mkdir.rb +75 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets/019_ssh_fxp_readlink.rb +76 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets/020_ssh_fxp_symlink.rb +76 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets/101_ssh_fxp_status.rb +25 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets/200_ssh_fxp_extended.rb +95 -0
- data/lib/hrr_rb_sftp/protocol/version3/packets/201_ssh_fxp_extended_reply.rb +60 -0
- data/lib/hrr_rb_sftp/receiver.rb +17 -2
- data/lib/hrr_rb_sftp/sender.rb +15 -1
- data/lib/hrr_rb_sftp/server.rb +43 -12
- data/lib/hrr_rb_sftp/version.rb +5 -1
- metadata +54 -47
- data/lib/hrr_rb_sftp/protocol/common/data_type.rb +0 -15
- data/lib/hrr_rb_sftp/protocol/common/data_type/byte.rb +0 -22
- data/lib/hrr_rb_sftp/protocol/common/data_type/extension_pair.rb +0 -23
- data/lib/hrr_rb_sftp/protocol/common/data_type/extension_pairs.rb +0 -24
- data/lib/hrr_rb_sftp/protocol/common/data_type/string.rb +0 -24
- data/lib/hrr_rb_sftp/protocol/common/data_type/uint32.rb +0 -22
- data/lib/hrr_rb_sftp/protocol/common/data_type/uint64.rb +0 -22
- data/lib/hrr_rb_sftp/protocol/common/packet.rb +0 -11
- data/lib/hrr_rb_sftp/protocol/common/packet/001_ssh_fxp_init.rb +0 -18
- data/lib/hrr_rb_sftp/protocol/common/packet/002_ssh_fxp_version.rb +0 -19
- data/lib/hrr_rb_sftp/protocol/common/packetable.rb +0 -72
- data/lib/hrr_rb_sftp/protocol/version1/data_type.rb +0 -11
- data/lib/hrr_rb_sftp/protocol/version1/data_type/attrs.rb +0 -54
- data/lib/hrr_rb_sftp/protocol/version1/packet.rb +0 -29
- data/lib/hrr_rb_sftp/protocol/version1/packet/004_ssh_fxp_close.rb +0 -44
- data/lib/hrr_rb_sftp/protocol/version1/packet/005_ssh_fxp_read.rb +0 -53
- data/lib/hrr_rb_sftp/protocol/version1/packet/006_ssh_fxp_write.rb +0 -46
- data/lib/hrr_rb_sftp/protocol/version1/packet/009_ssh_fxp_setstat.rb +0 -63
- data/lib/hrr_rb_sftp/protocol/version1/packet/010_ssh_fxp_fsetstat.rb +0 -48
- data/lib/hrr_rb_sftp/protocol/version1/packet/016_ssh_fxp_realpath.rb +0 -30
- data/lib/hrr_rb_sftp/protocol/version1/packet/101_ssh_fxp_status.rb +0 -29
- data/lib/hrr_rb_sftp/protocol/version1/packet/102_ssh_fxp_handle.rb +0 -19
- data/lib/hrr_rb_sftp/protocol/version1/packet/103_ssh_fxp_data.rb +0 -19
- data/lib/hrr_rb_sftp/protocol/version1/packet/104_ssh_fxp_name.rb +0 -33
- data/lib/hrr_rb_sftp/protocol/version1/packet/105_ssh_fxp_attrs.rb +0 -19
- data/lib/hrr_rb_sftp/protocol/version2/data_type.rb +0 -9
- data/lib/hrr_rb_sftp/protocol/version2/packet.rb +0 -11
- data/lib/hrr_rb_sftp/protocol/version2/packet/018_ssh_fxp_rename.rb +0 -70
- data/lib/hrr_rb_sftp/protocol/version3/data_type.rb +0 -9
- data/lib/hrr_rb_sftp/protocol/version3/packet.rb +0 -16
- data/lib/hrr_rb_sftp/protocol/version3/packet/014_ssh_fxp_mkdir.rb +0 -58
- data/lib/hrr_rb_sftp/protocol/version3/packet/019_ssh_fxp_readlink.rb +0 -57
- data/lib/hrr_rb_sftp/protocol/version3/packet/020_ssh_fxp_symlink.rb +0 -58
- data/lib/hrr_rb_sftp/protocol/version3/packet/101_ssh_fxp_status.rb +0 -31
- data/lib/hrr_rb_sftp/protocol/version3/packet/200_ssh_fxp_extended.rb +0 -34
- data/lib/hrr_rb_sftp/protocol/version3/packet/201_ssh_fxp_extended_reply.rb +0 -23
@@ -1,21 +1,37 @@
|
|
1
1
|
module HrrRbSftp
|
2
2
|
class Protocol
|
3
|
-
|
4
|
-
|
5
|
-
class SSH_FXP_MKDIR
|
6
|
-
include Common::Packetable
|
3
|
+
module Version1
|
4
|
+
class Packets
|
7
5
|
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_MKDIR packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_MKDIR < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_MKDIR packet type.
|
13
|
+
#
|
8
14
|
TYPE = 14
|
9
15
|
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_MKDIR packet format.
|
18
|
+
#
|
10
19
|
FORMAT = [
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::String, :"path" ],
|
14
23
|
]
|
15
24
|
|
25
|
+
#
|
26
|
+
# Responds to SSH_FXP_MKDIR request.
|
27
|
+
#
|
28
|
+
# @param request [Hash{Symbol=>Object}] SSH_FXP_MKDIR request represented in Hash.
|
29
|
+
# @return [Hash{Symbol=>Object}] Response represented in Hash. Its type is SSH_FXP_STATUS.
|
30
|
+
#
|
16
31
|
def respond_to request
|
17
32
|
begin
|
18
|
-
Dir.mkdir
|
33
|
+
log_debug { "Dir.mkdir(#{request[:"path"].inspect})" }
|
34
|
+
Dir.mkdir(request[:"path"])
|
19
35
|
{
|
20
36
|
:"type" => SSH_FXP_STATUS::TYPE,
|
21
37
|
:"request-id" => request[:"request-id"],
|
@@ -23,7 +39,8 @@ module HrrRbSftp
|
|
23
39
|
:"error message" => "Success",
|
24
40
|
:"language tag" => "",
|
25
41
|
}
|
26
|
-
rescue Errno::EACCES
|
42
|
+
rescue Errno::EACCES => e
|
43
|
+
log_debug { e.message }
|
27
44
|
{
|
28
45
|
:"type" => SSH_FXP_STATUS::TYPE,
|
29
46
|
:"request-id" => request[:"request-id"],
|
@@ -31,7 +48,8 @@ module HrrRbSftp
|
|
31
48
|
:"error message" => "Permission denied",
|
32
49
|
:"language tag" => "",
|
33
50
|
}
|
34
|
-
rescue Errno::EEXIST
|
51
|
+
rescue Errno::EEXIST => e
|
52
|
+
log_debug { e.message }
|
35
53
|
{
|
36
54
|
:"type" => SSH_FXP_STATUS::TYPE,
|
37
55
|
:"request-id" => request[:"request-id"],
|
@@ -1,21 +1,37 @@
|
|
1
1
|
module HrrRbSftp
|
2
2
|
class Protocol
|
3
|
-
|
4
|
-
|
5
|
-
class SSH_FXP_RMDIR
|
6
|
-
include Common::Packetable
|
3
|
+
module Version1
|
4
|
+
class Packets
|
7
5
|
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_RMDIR packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_RMDIR < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_RMDIR packet type.
|
13
|
+
#
|
8
14
|
TYPE = 15
|
9
15
|
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_RMDIR packet format.
|
18
|
+
#
|
10
19
|
FORMAT = [
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::String, :"path" ],
|
14
23
|
]
|
15
24
|
|
25
|
+
#
|
26
|
+
# Responds to SSH_FXP_RMDIR request.
|
27
|
+
#
|
28
|
+
# @param request [Hash{Symbol=>Object}] SSH_FXP_RMDIR request represented in Hash.
|
29
|
+
# @return [Hash{Symbol=>Object}] Response represented in Hash. Its type is SSH_FXP_STATUS.
|
30
|
+
#
|
16
31
|
def respond_to request
|
17
32
|
begin
|
18
|
-
Dir.rmdir
|
33
|
+
log_debug { "Dir.rmdir(#{request[:"path"].inspect})" }
|
34
|
+
Dir.rmdir(request[:"path"])
|
19
35
|
{
|
20
36
|
:"type" => SSH_FXP_STATUS::TYPE,
|
21
37
|
:"request-id" => request[:"request-id"],
|
@@ -23,7 +39,8 @@ module HrrRbSftp
|
|
23
39
|
:"error message" => "Success",
|
24
40
|
:"language tag" => "",
|
25
41
|
}
|
26
|
-
rescue Errno::ENOENT
|
42
|
+
rescue Errno::ENOENT => e
|
43
|
+
log_debug { e.message }
|
27
44
|
{
|
28
45
|
:"type" => SSH_FXP_STATUS::TYPE,
|
29
46
|
:"request-id" => request[:"request-id"],
|
@@ -31,7 +48,8 @@ module HrrRbSftp
|
|
31
48
|
:"error message" => "No such file or directory",
|
32
49
|
:"language tag" => "",
|
33
50
|
}
|
34
|
-
rescue Errno::EACCES
|
51
|
+
rescue Errno::EACCES => e
|
52
|
+
log_debug { e.message }
|
35
53
|
{
|
36
54
|
:"type" => SSH_FXP_STATUS::TYPE,
|
37
55
|
:"request-id" => request[:"request-id"],
|
@@ -39,7 +57,8 @@ module HrrRbSftp
|
|
39
57
|
:"error message" => "Permission denied",
|
40
58
|
:"language tag" => "",
|
41
59
|
}
|
42
|
-
rescue Errno::ENOTDIR
|
60
|
+
rescue Errno::ENOTDIR => e
|
61
|
+
log_debug { e.message }
|
43
62
|
{
|
44
63
|
:"type" => SSH_FXP_STATUS::TYPE,
|
45
64
|
:"request-id" => request[:"request-id"],
|
@@ -47,7 +66,8 @@ module HrrRbSftp
|
|
47
66
|
:"error message" => "Not a directory",
|
48
67
|
:"language tag" => "",
|
49
68
|
}
|
50
|
-
rescue Errno::ENOTEMPTY
|
69
|
+
rescue Errno::ENOTEMPTY => e
|
70
|
+
log_debug { e.message }
|
51
71
|
{
|
52
72
|
:"type" => SSH_FXP_STATUS::TYPE,
|
53
73
|
:"request-id" => request[:"request-id"],
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module HrrRbSftp
|
2
|
+
class Protocol
|
3
|
+
module Version1
|
4
|
+
class Packets
|
5
|
+
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_REALPATH packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_REALPATH < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_REALPATH packet type.
|
13
|
+
#
|
14
|
+
TYPE = 16
|
15
|
+
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_REALPATH packet format.
|
18
|
+
#
|
19
|
+
FORMAT = [
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::String, :"path" ],
|
23
|
+
]
|
24
|
+
|
25
|
+
#
|
26
|
+
# Responds to SSH_FXP_REALPATH request.
|
27
|
+
#
|
28
|
+
# @param request [Hash{Symbol=>Object}] SSH_FXP_REALPATH request represented in Hash.
|
29
|
+
# @return [Hash{Symbol=>Object}] Response represented in Hash. Its type is SSH_FXP_NAME.
|
30
|
+
#
|
31
|
+
def respond_to request
|
32
|
+
log_debug { "absolute_path = File.absolute_path(#{request[:"path"].inspect})" }
|
33
|
+
absolute_path = File.absolute_path(request[:"path"])
|
34
|
+
{
|
35
|
+
:"type" => SSH_FXP_NAME::TYPE,
|
36
|
+
:"request-id" => request[:"request-id"],
|
37
|
+
:"count" => 1,
|
38
|
+
:"filename[0]" => absolute_path,
|
39
|
+
:"longname[0]" => absolute_path,
|
40
|
+
:"attrs[0]" => {},
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,20 +1,36 @@
|
|
1
1
|
module HrrRbSftp
|
2
2
|
class Protocol
|
3
|
-
|
4
|
-
|
5
|
-
class SSH_FXP_STAT
|
6
|
-
include Common::Packetable
|
3
|
+
module Version1
|
4
|
+
class Packets
|
7
5
|
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_STAT packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_STAT < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_STAT packet type.
|
13
|
+
#
|
8
14
|
TYPE = 17
|
9
15
|
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_STAT packet format.
|
18
|
+
#
|
10
19
|
FORMAT = [
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::String, :"path" ],
|
14
23
|
]
|
15
24
|
|
25
|
+
#
|
26
|
+
# Responds to SSH_FXP_STAT request.
|
27
|
+
#
|
28
|
+
# @param request [Hash{Symbol=>Object}] SSH_FXP_STAT request represented in Hash.
|
29
|
+
# @return [Hash{Symbol=>Object}] Response represented in Hash. In case of success, its type is SSH_FXP_ATTRS. In other cases, its type is SSH_FXP_STATUS.
|
30
|
+
#
|
16
31
|
def respond_to request
|
17
32
|
begin
|
33
|
+
log_debug { "File.stat(#{request[:"path"].inspect})" }
|
18
34
|
stat = File.stat(request[:"path"])
|
19
35
|
attrs = Hash.new
|
20
36
|
attrs[:"size"] = stat.size if stat.size
|
@@ -28,7 +44,8 @@ module HrrRbSftp
|
|
28
44
|
:"request-id" => request[:"request-id"],
|
29
45
|
:"attrs" => attrs,
|
30
46
|
}
|
31
|
-
rescue Errno::ENOENT
|
47
|
+
rescue Errno::ENOENT => e
|
48
|
+
log_debug { e.message }
|
32
49
|
{
|
33
50
|
:"type" => SSH_FXP_STATUS::TYPE,
|
34
51
|
:"request-id" => request[:"request-id"],
|
@@ -36,7 +53,8 @@ module HrrRbSftp
|
|
36
53
|
:"error message" => "No such file or directory",
|
37
54
|
:"language tag" => "",
|
38
55
|
}
|
39
|
-
rescue Errno::EACCES
|
56
|
+
rescue Errno::EACCES => e
|
57
|
+
log_debug { e.message }
|
40
58
|
{
|
41
59
|
:"type" => SSH_FXP_STATUS::TYPE,
|
42
60
|
:"request-id" => request[:"request-id"],
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module HrrRbSftp
|
2
|
+
class Protocol
|
3
|
+
module Version1
|
4
|
+
class Packets
|
5
|
+
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_STATUS packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_STATUS < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_STATUS packet type.
|
13
|
+
#
|
14
|
+
TYPE = 101
|
15
|
+
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_STATUS packet format.
|
18
|
+
#
|
19
|
+
FORMAT = [
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::Uint32, :"code" ],
|
23
|
+
]
|
24
|
+
|
25
|
+
#
|
26
|
+
# Represents SSH_FX_OK value.
|
27
|
+
#
|
28
|
+
SSH_FX_OK = 0
|
29
|
+
|
30
|
+
#
|
31
|
+
# Represents SSH_FX_EOF value.
|
32
|
+
#
|
33
|
+
SSH_FX_EOF = 1
|
34
|
+
|
35
|
+
#
|
36
|
+
# Represents SSH_FX_NO_SUCH_FILE value.
|
37
|
+
#
|
38
|
+
SSH_FX_NO_SUCH_FILE = 2
|
39
|
+
|
40
|
+
#
|
41
|
+
# Represents SSH_FX_PERMISSION_DENIED value.
|
42
|
+
#
|
43
|
+
SSH_FX_PERMISSION_DENIED = 3
|
44
|
+
|
45
|
+
#
|
46
|
+
# Represents SSH_FX_FAILURE value.
|
47
|
+
#
|
48
|
+
SSH_FX_FAILURE = 4
|
49
|
+
|
50
|
+
#
|
51
|
+
# Represents SSH_FX_BAD_MESSAGE value.
|
52
|
+
#
|
53
|
+
SSH_FX_BAD_MESSAGE = 5
|
54
|
+
|
55
|
+
#
|
56
|
+
# Represents SSH_FX_NO_CONNECTION value.
|
57
|
+
#
|
58
|
+
SSH_FX_NO_CONNECTION = 6
|
59
|
+
|
60
|
+
#
|
61
|
+
# Represents SSH_FX_CONNECTION_LOST value.
|
62
|
+
#
|
63
|
+
SSH_FX_CONNECTION_LOST = 7
|
64
|
+
|
65
|
+
#
|
66
|
+
# Represents SSH_FX_OP_UNSUPPORTED value.
|
67
|
+
#
|
68
|
+
SSH_FX_OP_UNSUPPORTED = 8
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module HrrRbSftp
|
2
|
+
class Protocol
|
3
|
+
module Version1
|
4
|
+
class Packets
|
5
|
+
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_HANDLE packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_HANDLE < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_HANDLE packet type.
|
13
|
+
#
|
14
|
+
TYPE = 102
|
15
|
+
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_HANDLE packet format.
|
18
|
+
#
|
19
|
+
FORMAT = [
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::String, :"handle" ],
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module HrrRbSftp
|
2
|
+
class Protocol
|
3
|
+
module Version1
|
4
|
+
class Packets
|
5
|
+
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_DATA packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_DATA < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_DATA packet type.
|
13
|
+
#
|
14
|
+
TYPE = 103
|
15
|
+
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_DATA packet format.
|
18
|
+
#
|
19
|
+
FORMAT = [
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::String, :"data" ],
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module HrrRbSftp
|
2
|
+
class Protocol
|
3
|
+
module Version1
|
4
|
+
class Packets
|
5
|
+
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_NAME packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_NAME < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_NAME packet type.
|
13
|
+
#
|
14
|
+
TYPE = 104
|
15
|
+
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_NAME packet format.
|
18
|
+
#
|
19
|
+
FORMAT = [
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::Uint32, :"count" ],
|
23
|
+
]
|
24
|
+
|
25
|
+
#
|
26
|
+
# Represents SSH_FXP_NAME packet additional format for :"count" => N.
|
27
|
+
#
|
28
|
+
PER_COUNT_FORMAT = Hash.new{ |hash, key|
|
29
|
+
Array.new(key){ |i|
|
30
|
+
[
|
31
|
+
[DataTypes::String, :"filename[#{i}]"],
|
32
|
+
[DataTypes::String, :"longname[#{i}]"],
|
33
|
+
[DataTypes::Attrs, :"attrs[#{i}]" ],
|
34
|
+
]
|
35
|
+
}.inject(:+)
|
36
|
+
}
|
37
|
+
|
38
|
+
#
|
39
|
+
# Represents SSH_FXP_NAME packet conditional format.
|
40
|
+
#
|
41
|
+
CONDITIONAL_FORMAT = {
|
42
|
+
:"count" => PER_COUNT_FORMAT,
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module HrrRbSftp
|
2
|
+
class Protocol
|
3
|
+
module Version1
|
4
|
+
class Packets
|
5
|
+
|
6
|
+
#
|
7
|
+
# This class implements SFTP protocol version 1 SSH_FXP_ATTRS packet type, format, and responder.
|
8
|
+
#
|
9
|
+
class SSH_FXP_ATTRS < Packet
|
10
|
+
|
11
|
+
#
|
12
|
+
# Represents SSH_FXP_ATTRS packet type.
|
13
|
+
#
|
14
|
+
TYPE = 105
|
15
|
+
|
16
|
+
#
|
17
|
+
# Represents SSH_FXP_ATTRS packet format.
|
18
|
+
#
|
19
|
+
FORMAT = [
|
20
|
+
[DataTypes::Byte, :"type" ],
|
21
|
+
[DataTypes::Uint32, :"request-id"],
|
22
|
+
[DataTypes::Attrs, :"attrs" ],
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|