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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -0
  3. data/lib/hrr_rb_sftp.rb +79 -1
  4. data/lib/hrr_rb_sftp/loggable.rb +34 -0
  5. data/lib/hrr_rb_sftp/protocol.rb +39 -33
  6. data/lib/hrr_rb_sftp/protocol/common.rb +6 -3
  7. data/lib/hrr_rb_sftp/protocol/common/data_types.rb +19 -0
  8. data/lib/hrr_rb_sftp/protocol/common/data_types/byte.rb +40 -0
  9. data/lib/hrr_rb_sftp/protocol/common/data_types/extension_pair.rb +41 -0
  10. data/lib/hrr_rb_sftp/protocol/common/data_types/extension_pairs.rb +42 -0
  11. data/lib/hrr_rb_sftp/protocol/common/data_types/string.rb +42 -0
  12. data/lib/hrr_rb_sftp/protocol/common/data_types/uint32.rb +40 -0
  13. data/lib/hrr_rb_sftp/protocol/common/data_types/uint64.rb +40 -0
  14. data/lib/hrr_rb_sftp/protocol/common/packets.rb +16 -0
  15. data/lib/hrr_rb_sftp/protocol/common/packets/001_ssh_fxp_init.rb +27 -0
  16. data/lib/hrr_rb_sftp/protocol/common/packets/002_ssh_fxp_version.rb +28 -0
  17. data/lib/hrr_rb_sftp/protocol/common/packets/packet.rb +96 -0
  18. data/lib/hrr_rb_sftp/protocol/version1.rb +11 -3
  19. data/lib/hrr_rb_sftp/protocol/version1/data_types.rb +15 -0
  20. data/lib/hrr_rb_sftp/protocol/version1/data_types/attrs.rb +91 -0
  21. data/lib/hrr_rb_sftp/protocol/version1/packets.rb +72 -0
  22. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/003_ssh_fxp_open.rb +94 -43
  23. data/lib/hrr_rb_sftp/protocol/version1/packets/004_ssh_fxp_close.rb +61 -0
  24. data/lib/hrr_rb_sftp/protocol/version1/packets/005_ssh_fxp_read.rb +72 -0
  25. data/lib/hrr_rb_sftp/protocol/version1/packets/006_ssh_fxp_write.rb +64 -0
  26. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/007_ssh_fxp_lstat.rb +27 -9
  27. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/008_ssh_fxp_fstat.rb +26 -9
  28. data/lib/hrr_rb_sftp/protocol/version1/packets/009_ssh_fxp_setstat.rb +92 -0
  29. data/lib/hrr_rb_sftp/protocol/version1/packets/010_ssh_fxp_fsetstat.rb +85 -0
  30. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/011_ssh_fxp_opendir.rb +32 -11
  31. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/012_ssh_fxp_readdir.rb +73 -49
  32. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/013_ssh_fxp_remove.rb +27 -9
  33. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/014_ssh_fxp_mkdir.rb +28 -10
  34. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/015_ssh_fxp_rmdir.rb +32 -12
  35. data/lib/hrr_rb_sftp/protocol/version1/packets/016_ssh_fxp_realpath.rb +47 -0
  36. data/lib/hrr_rb_sftp/protocol/version1/{packet → packets}/017_ssh_fxp_stat.rb +27 -9
  37. data/lib/hrr_rb_sftp/protocol/version1/packets/101_ssh_fxp_status.rb +73 -0
  38. data/lib/hrr_rb_sftp/protocol/version1/packets/102_ssh_fxp_handle.rb +28 -0
  39. data/lib/hrr_rb_sftp/protocol/version1/packets/103_ssh_fxp_data.rb +28 -0
  40. data/lib/hrr_rb_sftp/protocol/version1/packets/104_ssh_fxp_name.rb +48 -0
  41. data/lib/hrr_rb_sftp/protocol/version1/packets/105_ssh_fxp_attrs.rb +28 -0
  42. data/lib/hrr_rb_sftp/protocol/version1/packets/packet.rb +57 -0
  43. data/lib/hrr_rb_sftp/protocol/version2.rb +11 -3
  44. data/lib/hrr_rb_sftp/protocol/version2/data_types.rb +13 -0
  45. data/lib/hrr_rb_sftp/protocol/version2/packets.rb +14 -0
  46. data/lib/hrr_rb_sftp/protocol/version2/packets/018_ssh_fxp_rename.rb +91 -0
  47. data/lib/hrr_rb_sftp/protocol/version3.rb +12 -3
  48. data/lib/hrr_rb_sftp/protocol/version3/data_types.rb +13 -0
  49. data/lib/hrr_rb_sftp/protocol/version3/extensions.rb +94 -0
  50. data/lib/hrr_rb_sftp/protocol/version3/extensions/extension.rb +58 -0
  51. data/lib/hrr_rb_sftp/protocol/version3/extensions/fsync_at_openssh_com.rb +59 -0
  52. data/lib/hrr_rb_sftp/protocol/version3/extensions/hardlink_at_openssh_com.rb +84 -0
  53. data/lib/hrr_rb_sftp/protocol/version3/extensions/lsetstat_at_openssh_com.rb +132 -0
  54. data/lib/hrr_rb_sftp/protocol/version3/extensions/posix_rename_at_openssh_com.rb +76 -0
  55. data/lib/hrr_rb_sftp/protocol/version3/packets.rb +19 -0
  56. data/lib/hrr_rb_sftp/protocol/version3/packets/014_ssh_fxp_mkdir.rb +75 -0
  57. data/lib/hrr_rb_sftp/protocol/version3/packets/019_ssh_fxp_readlink.rb +76 -0
  58. data/lib/hrr_rb_sftp/protocol/version3/packets/020_ssh_fxp_symlink.rb +76 -0
  59. data/lib/hrr_rb_sftp/protocol/version3/packets/101_ssh_fxp_status.rb +25 -0
  60. data/lib/hrr_rb_sftp/protocol/version3/packets/200_ssh_fxp_extended.rb +95 -0
  61. data/lib/hrr_rb_sftp/protocol/version3/packets/201_ssh_fxp_extended_reply.rb +60 -0
  62. data/lib/hrr_rb_sftp/receiver.rb +17 -2
  63. data/lib/hrr_rb_sftp/sender.rb +15 -1
  64. data/lib/hrr_rb_sftp/server.rb +43 -12
  65. data/lib/hrr_rb_sftp/version.rb +5 -1
  66. metadata +54 -47
  67. data/lib/hrr_rb_sftp/protocol/common/data_type.rb +0 -15
  68. data/lib/hrr_rb_sftp/protocol/common/data_type/byte.rb +0 -22
  69. data/lib/hrr_rb_sftp/protocol/common/data_type/extension_pair.rb +0 -23
  70. data/lib/hrr_rb_sftp/protocol/common/data_type/extension_pairs.rb +0 -24
  71. data/lib/hrr_rb_sftp/protocol/common/data_type/string.rb +0 -24
  72. data/lib/hrr_rb_sftp/protocol/common/data_type/uint32.rb +0 -22
  73. data/lib/hrr_rb_sftp/protocol/common/data_type/uint64.rb +0 -22
  74. data/lib/hrr_rb_sftp/protocol/common/packet.rb +0 -11
  75. data/lib/hrr_rb_sftp/protocol/common/packet/001_ssh_fxp_init.rb +0 -18
  76. data/lib/hrr_rb_sftp/protocol/common/packet/002_ssh_fxp_version.rb +0 -19
  77. data/lib/hrr_rb_sftp/protocol/common/packetable.rb +0 -72
  78. data/lib/hrr_rb_sftp/protocol/version1/data_type.rb +0 -11
  79. data/lib/hrr_rb_sftp/protocol/version1/data_type/attrs.rb +0 -54
  80. data/lib/hrr_rb_sftp/protocol/version1/packet.rb +0 -29
  81. data/lib/hrr_rb_sftp/protocol/version1/packet/004_ssh_fxp_close.rb +0 -44
  82. data/lib/hrr_rb_sftp/protocol/version1/packet/005_ssh_fxp_read.rb +0 -53
  83. data/lib/hrr_rb_sftp/protocol/version1/packet/006_ssh_fxp_write.rb +0 -46
  84. data/lib/hrr_rb_sftp/protocol/version1/packet/009_ssh_fxp_setstat.rb +0 -63
  85. data/lib/hrr_rb_sftp/protocol/version1/packet/010_ssh_fxp_fsetstat.rb +0 -48
  86. data/lib/hrr_rb_sftp/protocol/version1/packet/016_ssh_fxp_realpath.rb +0 -30
  87. data/lib/hrr_rb_sftp/protocol/version1/packet/101_ssh_fxp_status.rb +0 -29
  88. data/lib/hrr_rb_sftp/protocol/version1/packet/102_ssh_fxp_handle.rb +0 -19
  89. data/lib/hrr_rb_sftp/protocol/version1/packet/103_ssh_fxp_data.rb +0 -19
  90. data/lib/hrr_rb_sftp/protocol/version1/packet/104_ssh_fxp_name.rb +0 -33
  91. data/lib/hrr_rb_sftp/protocol/version1/packet/105_ssh_fxp_attrs.rb +0 -19
  92. data/lib/hrr_rb_sftp/protocol/version2/data_type.rb +0 -9
  93. data/lib/hrr_rb_sftp/protocol/version2/packet.rb +0 -11
  94. data/lib/hrr_rb_sftp/protocol/version2/packet/018_ssh_fxp_rename.rb +0 -70
  95. data/lib/hrr_rb_sftp/protocol/version3/data_type.rb +0 -9
  96. data/lib/hrr_rb_sftp/protocol/version3/packet.rb +0 -16
  97. data/lib/hrr_rb_sftp/protocol/version3/packet/014_ssh_fxp_mkdir.rb +0 -58
  98. data/lib/hrr_rb_sftp/protocol/version3/packet/019_ssh_fxp_readlink.rb +0 -57
  99. data/lib/hrr_rb_sftp/protocol/version3/packet/020_ssh_fxp_symlink.rb +0 -58
  100. data/lib/hrr_rb_sftp/protocol/version3/packet/101_ssh_fxp_status.rb +0 -31
  101. data/lib/hrr_rb_sftp/protocol/version3/packet/200_ssh_fxp_extended.rb +0 -34
  102. data/lib/hrr_rb_sftp/protocol/version3/packet/201_ssh_fxp_extended_reply.rb +0 -23
@@ -1,57 +0,0 @@
1
- module HrrRbSftp
2
- class Protocol
3
- class Version3
4
- module Packet
5
- class SSH_FXP_READLINK
6
- include Common::Packetable
7
-
8
- TYPE = 19
9
-
10
- FORMAT = [
11
- [DataType::Byte, :"type" ],
12
- [DataType::Uint32, :"request-id"],
13
- [DataType::String, :"path" ],
14
- ]
15
-
16
- def respond_to request
17
- begin
18
- {
19
- :"type" => Packet::SSH_FXP_NAME::TYPE,
20
- :"request-id" => request[:"request-id"],
21
- :"count" => 1,
22
- :"filename[0]" => File.realpath(request[:"path"]),
23
- :"longname[0]" => File.realpath(request[:"path"]),
24
- :"attrs[0]" => {},
25
- }
26
- rescue Errno::ENOENT
27
- {
28
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
29
- :"request-id" => request[:"request-id"],
30
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_NO_SUCH_FILE,
31
- :"error message" => "No such file or directory",
32
- :"language tag" => "",
33
- }
34
- rescue Errno::EACCES
35
- {
36
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
37
- :"request-id" => request[:"request-id"],
38
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_PERMISSION_DENIED,
39
- :"error message" => "Permission denied",
40
- :"language tag" => "",
41
- }
42
- rescue => e
43
- log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
44
- {
45
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
46
- :"request-id" => request[:"request-id"],
47
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_FAILURE,
48
- :"error message" => e.message,
49
- :"language tag" => "",
50
- }
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end
@@ -1,58 +0,0 @@
1
- module HrrRbSftp
2
- class Protocol
3
- class Version3
4
- module Packet
5
- class SSH_FXP_SYMLINK
6
- include Common::Packetable
7
-
8
- TYPE = 20
9
-
10
- FORMAT = [
11
- [DataType::Byte, :"type" ],
12
- [DataType::Uint32, :"request-id"],
13
- [DataType::String, :"linkpath" ],
14
- [DataType::String, :"targetpath"],
15
- ]
16
-
17
- def respond_to request
18
- begin
19
- File.symlink request[:"targetpath"], request[:"linkpath"]
20
- {
21
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
22
- :"request-id" => request[:"request-id"],
23
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_OK,
24
- :"error message" => "Success",
25
- :"language tag" => "",
26
- }
27
- rescue Errno::EACCES
28
- {
29
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
30
- :"request-id" => request[:"request-id"],
31
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_PERMISSION_DENIED,
32
- :"error message" => "Permission denied",
33
- :"language tag" => "",
34
- }
35
- rescue Errno::EEXIST
36
- {
37
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
38
- :"request-id" => request[:"request-id"],
39
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_FAILURE,
40
- :"error message" => "File exists",
41
- :"language tag" => "",
42
- }
43
- rescue => e
44
- log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
45
- {
46
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
47
- :"request-id" => request[:"request-id"],
48
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_FAILURE,
49
- :"error message" => e.message,
50
- :"language tag" => "",
51
- }
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,31 +0,0 @@
1
- module HrrRbSftp
2
- class Protocol
3
- class Version3
4
- module Packet
5
- class SSH_FXP_STATUS
6
- include Common::Packetable
7
-
8
- TYPE = 101
9
-
10
- FORMAT = [
11
- [DataType::Byte, :"type" ],
12
- [DataType::Uint32, :"request-id" ],
13
- [DataType::Uint32, :"code" ],
14
- [DataType::String, :"error message"],
15
- [DataType::String, :"language tag" ],
16
- ]
17
-
18
- SSH_FX_OK = 0
19
- SSH_FX_EOF = 1
20
- SSH_FX_NO_SUCH_FILE = 2
21
- SSH_FX_PERMISSION_DENIED = 3
22
- SSH_FX_FAILURE = 4
23
- SSH_FX_BAD_MESSAGE = 5
24
- SSH_FX_NO_CONNECTION = 6
25
- SSH_FX_CONNECTION_LOST = 7
26
- SSH_FX_OP_UNSUPPORTED = 8
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,34 +0,0 @@
1
- module HrrRbSftp
2
- class Protocol
3
- class Version3
4
- module Packet
5
- class SSH_FXP_EXTENDED
6
- include Common::Packetable
7
-
8
- TYPE = 200
9
-
10
- FORMAT = [
11
- [DataType::Byte, :"type" ],
12
- [DataType::Uint32, :"request-id" ],
13
- [DataType::String, :"extended-request"],
14
- ]
15
-
16
- CONDITIONAL_FORMAT = {
17
- :"extended-request" => {
18
- },
19
- }
20
-
21
- def respond_to request
22
- {
23
- :"type" => Packet::SSH_FXP_STATUS::TYPE,
24
- :"request-id" => request[:"request-id"],
25
- :"code" => Packet::SSH_FXP_STATUS::SSH_FX_OP_UNSUPPORTED,
26
- :"error message" => "Unsupported extended-request: #{request[:"extended-request"]}",
27
- :"language tag" => "",
28
- }
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,23 +0,0 @@
1
- module HrrRbSftp
2
- class Protocol
3
- class Version3
4
- module Packet
5
- class SSH_FXP_EXTENDED_REPLY
6
- include Common::Packetable
7
-
8
- TYPE = 201
9
-
10
- FORMAT = [
11
- [DataType::Byte, :"type" ],
12
- [DataType::Uint32, :"request-id"],
13
- ]
14
-
15
- CONDITIONAL_FORMAT = {
16
- :"extended-request" => {
17
- },
18
- }
19
- end
20
- end
21
- end
22
- end
23
- end