librex 0.0.19 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (435) hide show
  1. data/Rakefile +0 -1
  2. metadata +1 -434
  3. data/lib/rex/LICENSE +0 -29
  4. data/lib/rex/arch.rb +0 -103
  5. data/lib/rex/arch/sparc.rb +0 -75
  6. data/lib/rex/arch/sparc.rb.ut.rb +0 -18
  7. data/lib/rex/arch/x86.rb +0 -513
  8. data/lib/rex/arch/x86.rb.ut.rb +0 -93
  9. data/lib/rex/assembly/nasm.rb +0 -104
  10. data/lib/rex/assembly/nasm.rb.ut.rb +0 -22
  11. data/lib/rex/codepage.map +0 -104
  12. data/lib/rex/compat.rb +0 -311
  13. data/lib/rex/constants.rb +0 -113
  14. data/lib/rex/elfparsey.rb +0 -11
  15. data/lib/rex/elfparsey/elf.rb +0 -123
  16. data/lib/rex/elfparsey/elfbase.rb +0 -258
  17. data/lib/rex/elfparsey/exceptions.rb +0 -27
  18. data/lib/rex/elfscan.rb +0 -12
  19. data/lib/rex/elfscan/scanner.rb +0 -207
  20. data/lib/rex/elfscan/search.rb +0 -46
  21. data/lib/rex/encoder/alpha2.rb +0 -31
  22. data/lib/rex/encoder/alpha2/alpha_mixed.rb +0 -68
  23. data/lib/rex/encoder/alpha2/alpha_upper.rb +0 -79
  24. data/lib/rex/encoder/alpha2/generic.rb +0 -114
  25. data/lib/rex/encoder/alpha2/unicode_mixed.rb +0 -117
  26. data/lib/rex/encoder/alpha2/unicode_upper.rb +0 -129
  27. data/lib/rex/encoder/ndr.rb +0 -89
  28. data/lib/rex/encoder/ndr.rb.ut.rb +0 -44
  29. data/lib/rex/encoder/nonalpha.rb +0 -61
  30. data/lib/rex/encoder/nonupper.rb +0 -64
  31. data/lib/rex/encoder/xdr.rb +0 -106
  32. data/lib/rex/encoder/xdr.rb.ut.rb +0 -29
  33. data/lib/rex/encoder/xor.rb +0 -69
  34. data/lib/rex/encoder/xor/dword.rb +0 -13
  35. data/lib/rex/encoder/xor/dword_additive.rb +0 -13
  36. data/lib/rex/encoders/xor_dword.rb +0 -35
  37. data/lib/rex/encoders/xor_dword_additive.rb +0 -53
  38. data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +0 -12
  39. data/lib/rex/encoding/xor.rb +0 -20
  40. data/lib/rex/encoding/xor.rb.ts.rb +0 -14
  41. data/lib/rex/encoding/xor/byte.rb +0 -15
  42. data/lib/rex/encoding/xor/byte.rb.ut.rb +0 -21
  43. data/lib/rex/encoding/xor/dword.rb +0 -21
  44. data/lib/rex/encoding/xor/dword.rb.ut.rb +0 -15
  45. data/lib/rex/encoding/xor/dword_additive.rb +0 -92
  46. data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +0 -15
  47. data/lib/rex/encoding/xor/exceptions.rb +0 -17
  48. data/lib/rex/encoding/xor/generic.rb +0 -146
  49. data/lib/rex/encoding/xor/generic.rb.ut.rb +0 -120
  50. data/lib/rex/encoding/xor/qword.rb +0 -15
  51. data/lib/rex/encoding/xor/word.rb +0 -21
  52. data/lib/rex/encoding/xor/word.rb.ut.rb +0 -13
  53. data/lib/rex/exceptions.rb +0 -275
  54. data/lib/rex/exceptions.rb.ut.rb +0 -44
  55. data/lib/rex/exploitation/cmdstager.rb +0 -9
  56. data/lib/rex/exploitation/cmdstager/base.rb +0 -175
  57. data/lib/rex/exploitation/cmdstager/debug_asm.rb +0 -142
  58. data/lib/rex/exploitation/cmdstager/debug_write.rb +0 -136
  59. data/lib/rex/exploitation/cmdstager/tftp.rb +0 -63
  60. data/lib/rex/exploitation/cmdstager/vbs.rb +0 -128
  61. data/lib/rex/exploitation/egghunter.rb +0 -277
  62. data/lib/rex/exploitation/egghunter.rb.ut.rb +0 -25
  63. data/lib/rex/exploitation/encryptjs.rb +0 -77
  64. data/lib/rex/exploitation/heaplib.js.b64 +0 -331
  65. data/lib/rex/exploitation/heaplib.rb +0 -94
  66. data/lib/rex/exploitation/javascriptosdetect.rb +0 -897
  67. data/lib/rex/exploitation/obfuscatejs.rb +0 -335
  68. data/lib/rex/exploitation/omelet.rb +0 -320
  69. data/lib/rex/exploitation/omelet.rb.ut.rb +0 -13
  70. data/lib/rex/exploitation/opcodedb.rb +0 -818
  71. data/lib/rex/exploitation/opcodedb.rb.ut.rb +0 -279
  72. data/lib/rex/exploitation/seh.rb +0 -92
  73. data/lib/rex/exploitation/seh.rb.ut.rb +0 -19
  74. data/lib/rex/file.rb +0 -112
  75. data/lib/rex/file.rb.ut.rb +0 -16
  76. data/lib/rex/image_source.rb +0 -12
  77. data/lib/rex/image_source/disk.rb +0 -60
  78. data/lib/rex/image_source/image_source.rb +0 -46
  79. data/lib/rex/image_source/memory.rb +0 -37
  80. data/lib/rex/io/bidirectional_pipe.rb +0 -157
  81. data/lib/rex/io/datagram_abstraction.rb +0 -35
  82. data/lib/rex/io/ring_buffer.rb +0 -364
  83. data/lib/rex/io/stream.rb +0 -319
  84. data/lib/rex/io/stream_abstraction.rb +0 -197
  85. data/lib/rex/io/stream_server.rb +0 -211
  86. data/lib/rex/job_container.rb +0 -187
  87. data/lib/rex/logging.rb +0 -4
  88. data/lib/rex/logging/log_dispatcher.rb +0 -179
  89. data/lib/rex/logging/log_sink.rb +0 -42
  90. data/lib/rex/logging/sinks/flatfile.rb +0 -55
  91. data/lib/rex/logging/sinks/stderr.rb +0 -43
  92. data/lib/rex/machparsey.rb +0 -9
  93. data/lib/rex/machparsey/exceptions.rb +0 -34
  94. data/lib/rex/machparsey/mach.rb +0 -209
  95. data/lib/rex/machparsey/machbase.rb +0 -408
  96. data/lib/rex/machscan.rb +0 -9
  97. data/lib/rex/machscan/scanner.rb +0 -217
  98. data/lib/rex/mime.rb +0 -9
  99. data/lib/rex/mime/header.rb +0 -77
  100. data/lib/rex/mime/message.rb +0 -144
  101. data/lib/rex/mime/part.rb +0 -20
  102. data/lib/rex/nop/opty2.rb +0 -108
  103. data/lib/rex/nop/opty2.rb.ut.rb +0 -23
  104. data/lib/rex/nop/opty2_tables.rb +0 -300
  105. data/lib/rex/ole.rb +0 -205
  106. data/lib/rex/ole/clsid.rb +0 -47
  107. data/lib/rex/ole/difat.rb +0 -141
  108. data/lib/rex/ole/directory.rb +0 -231
  109. data/lib/rex/ole/direntry.rb +0 -240
  110. data/lib/rex/ole/docs/dependencies.txt +0 -8
  111. data/lib/rex/ole/docs/references.txt +0 -1
  112. data/lib/rex/ole/fat.rb +0 -99
  113. data/lib/rex/ole/header.rb +0 -204
  114. data/lib/rex/ole/minifat.rb +0 -77
  115. data/lib/rex/ole/propset.rb +0 -144
  116. data/lib/rex/ole/samples/create_ole.rb +0 -27
  117. data/lib/rex/ole/samples/dir.rb +0 -35
  118. data/lib/rex/ole/samples/dump_stream.rb +0 -34
  119. data/lib/rex/ole/samples/ole_info.rb +0 -23
  120. data/lib/rex/ole/storage.rb +0 -395
  121. data/lib/rex/ole/stream.rb +0 -53
  122. data/lib/rex/ole/substorage.rb +0 -49
  123. data/lib/rex/ole/util.rb +0 -157
  124. data/lib/rex/parser/arguments.rb +0 -97
  125. data/lib/rex/parser/arguments.rb.ut.rb +0 -67
  126. data/lib/rex/parser/ini.rb +0 -185
  127. data/lib/rex/parser/ini.rb.ut.rb +0 -29
  128. data/lib/rex/parser/ip360_aspl_xml.rb +0 -102
  129. data/lib/rex/parser/ip360_xml.rb +0 -97
  130. data/lib/rex/parser/nessus_xml.rb +0 -118
  131. data/lib/rex/parser/netsparker_xml.rb +0 -94
  132. data/lib/rex/parser/nexpose_xml.rb +0 -136
  133. data/lib/rex/parser/nmap_xml.rb +0 -137
  134. data/lib/rex/parser/retina_xml.rb +0 -109
  135. data/lib/rex/payloads.rb +0 -1
  136. data/lib/rex/payloads/win32.rb +0 -2
  137. data/lib/rex/payloads/win32/common.rb +0 -26
  138. data/lib/rex/payloads/win32/kernel.rb +0 -53
  139. data/lib/rex/payloads/win32/kernel/common.rb +0 -54
  140. data/lib/rex/payloads/win32/kernel/migration.rb +0 -12
  141. data/lib/rex/payloads/win32/kernel/recovery.rb +0 -50
  142. data/lib/rex/payloads/win32/kernel/stager.rb +0 -194
  143. data/lib/rex/peparsey.rb +0 -12
  144. data/lib/rex/peparsey/exceptions.rb +0 -32
  145. data/lib/rex/peparsey/pe.rb +0 -212
  146. data/lib/rex/peparsey/pe_memdump.rb +0 -63
  147. data/lib/rex/peparsey/pebase.rb +0 -1680
  148. data/lib/rex/peparsey/section.rb +0 -136
  149. data/lib/rex/pescan.rb +0 -13
  150. data/lib/rex/pescan/analyze.rb +0 -309
  151. data/lib/rex/pescan/scanner.rb +0 -206
  152. data/lib/rex/pescan/search.rb +0 -56
  153. data/lib/rex/platforms.rb +0 -1
  154. data/lib/rex/platforms/windows.rb +0 -51
  155. data/lib/rex/poly.rb +0 -132
  156. data/lib/rex/poly/block.rb +0 -477
  157. data/lib/rex/poly/register.rb +0 -100
  158. data/lib/rex/poly/register/x86.rb +0 -40
  159. data/lib/rex/post.rb +0 -8
  160. data/lib/rex/post/dir.rb +0 -51
  161. data/lib/rex/post/file.rb +0 -172
  162. data/lib/rex/post/file_stat.rb +0 -220
  163. data/lib/rex/post/gen.pl +0 -13
  164. data/lib/rex/post/io.rb +0 -182
  165. data/lib/rex/post/meterpreter.rb +0 -4
  166. data/lib/rex/post/meterpreter/channel.rb +0 -445
  167. data/lib/rex/post/meterpreter/channel_container.rb +0 -54
  168. data/lib/rex/post/meterpreter/channels/pool.rb +0 -160
  169. data/lib/rex/post/meterpreter/channels/pools/file.rb +0 -62
  170. data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +0 -103
  171. data/lib/rex/post/meterpreter/channels/stream.rb +0 -87
  172. data/lib/rex/post/meterpreter/client.rb +0 -364
  173. data/lib/rex/post/meterpreter/client_core.rb +0 -274
  174. data/lib/rex/post/meterpreter/dependencies.rb +0 -3
  175. data/lib/rex/post/meterpreter/extension.rb +0 -32
  176. data/lib/rex/post/meterpreter/extensions/espia/espia.rb +0 -58
  177. data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +0 -16
  178. data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +0 -94
  179. data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +0 -21
  180. data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +0 -57
  181. data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +0 -15
  182. data/lib/rex/post/meterpreter/extensions/priv/fs.rb +0 -118
  183. data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +0 -61
  184. data/lib/rex/post/meterpreter/extensions/priv/priv.rb +0 -111
  185. data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +0 -28
  186. data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +0 -101
  187. data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +0 -26
  188. data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +0 -333
  189. data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +0 -282
  190. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +0 -266
  191. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +0 -103
  192. data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +0 -48
  193. data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +0 -144
  194. data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +0 -73
  195. data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +0 -56
  196. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +0 -137
  197. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +0 -180
  198. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +0 -167
  199. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +0 -208
  200. data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +0 -6
  201. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +0 -38106
  202. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +0 -31
  203. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +0 -47
  204. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +0 -36
  205. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +0 -1818
  206. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +0 -96
  207. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +0 -3848
  208. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +0 -26
  209. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +0 -153
  210. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +0 -21
  211. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +0 -3169
  212. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +0 -599
  213. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +0 -318
  214. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +0 -100
  215. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +0 -42
  216. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +0 -148
  217. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +0 -127
  218. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +0 -309
  219. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +0 -204
  220. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +0 -51
  221. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +0 -630
  222. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +0 -75
  223. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +0 -103
  224. data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +0 -149
  225. data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +0 -97
  226. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +0 -192
  227. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +0 -41
  228. data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +0 -61
  229. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +0 -370
  230. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +0 -129
  231. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +0 -55
  232. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +0 -336
  233. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +0 -141
  234. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +0 -279
  235. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +0 -193
  236. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +0 -102
  237. data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +0 -180
  238. data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +0 -211
  239. data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +0 -227
  240. data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +0 -63
  241. data/lib/rex/post/meterpreter/inbound_packet_handler.rb +0 -30
  242. data/lib/rex/post/meterpreter/object_aliases.rb +0 -83
  243. data/lib/rex/post/meterpreter/packet.rb +0 -688
  244. data/lib/rex/post/meterpreter/packet_dispatcher.rb +0 -431
  245. data/lib/rex/post/meterpreter/packet_parser.rb +0 -94
  246. data/lib/rex/post/meterpreter/packet_response_waiter.rb +0 -83
  247. data/lib/rex/post/meterpreter/ui/console.rb +0 -137
  248. data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +0 -62
  249. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +0 -730
  250. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +0 -108
  251. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +0 -241
  252. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +0 -231
  253. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +0 -61
  254. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +0 -98
  255. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +0 -51
  256. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +0 -132
  257. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +0 -187
  258. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +0 -65
  259. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +0 -442
  260. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +0 -298
  261. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +0 -486
  262. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +0 -315
  263. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +0 -157
  264. data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +0 -95
  265. data/lib/rex/post/permission.rb +0 -26
  266. data/lib/rex/post/process.rb +0 -57
  267. data/lib/rex/post/thread.rb +0 -57
  268. data/lib/rex/post/ui.rb +0 -52
  269. data/lib/rex/proto.rb +0 -13
  270. data/lib/rex/proto.rb.ts.rb +0 -8
  271. data/lib/rex/proto/dcerpc.rb +0 -6
  272. data/lib/rex/proto/dcerpc.rb.ts.rb +0 -9
  273. data/lib/rex/proto/dcerpc/client.rb +0 -361
  274. data/lib/rex/proto/dcerpc/client.rb.ut.rb +0 -491
  275. data/lib/rex/proto/dcerpc/exceptions.rb +0 -150
  276. data/lib/rex/proto/dcerpc/handle.rb +0 -47
  277. data/lib/rex/proto/dcerpc/handle.rb.ut.rb +0 -85
  278. data/lib/rex/proto/dcerpc/ndr.rb +0 -72
  279. data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +0 -41
  280. data/lib/rex/proto/dcerpc/packet.rb +0 -253
  281. data/lib/rex/proto/dcerpc/packet.rb.ut.rb +0 -56
  282. data/lib/rex/proto/dcerpc/response.rb +0 -187
  283. data/lib/rex/proto/dcerpc/response.rb.ut.rb +0 -15
  284. data/lib/rex/proto/dcerpc/uuid.rb +0 -84
  285. data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +0 -46
  286. data/lib/rex/proto/dhcp.rb +0 -7
  287. data/lib/rex/proto/dhcp/constants.rb +0 -33
  288. data/lib/rex/proto/dhcp/server.rb +0 -292
  289. data/lib/rex/proto/drda.rb +0 -5
  290. data/lib/rex/proto/drda.rb.ts.rb +0 -17
  291. data/lib/rex/proto/drda/constants.rb +0 -49
  292. data/lib/rex/proto/drda/constants.rb.ut.rb +0 -23
  293. data/lib/rex/proto/drda/packet.rb +0 -252
  294. data/lib/rex/proto/drda/packet.rb.ut.rb +0 -109
  295. data/lib/rex/proto/drda/utils.rb +0 -123
  296. data/lib/rex/proto/drda/utils.rb.ut.rb +0 -84
  297. data/lib/rex/proto/http.rb +0 -5
  298. data/lib/rex/proto/http.rb.ts.rb +0 -12
  299. data/lib/rex/proto/http/client.rb +0 -821
  300. data/lib/rex/proto/http/client.rb.ut.rb +0 -95
  301. data/lib/rex/proto/http/handler.rb +0 -46
  302. data/lib/rex/proto/http/handler/erb.rb +0 -128
  303. data/lib/rex/proto/http/handler/erb.rb.ut.rb +0 -21
  304. data/lib/rex/proto/http/handler/erb.rb.ut.rb.rhtml +0 -1
  305. data/lib/rex/proto/http/handler/proc.rb +0 -60
  306. data/lib/rex/proto/http/handler/proc.rb.ut.rb +0 -24
  307. data/lib/rex/proto/http/header.rb +0 -161
  308. data/lib/rex/proto/http/header.rb.ut.rb +0 -46
  309. data/lib/rex/proto/http/packet.rb +0 -407
  310. data/lib/rex/proto/http/packet.rb.ut.rb +0 -165
  311. data/lib/rex/proto/http/request.rb +0 -356
  312. data/lib/rex/proto/http/request.rb.ut.rb +0 -214
  313. data/lib/rex/proto/http/response.rb +0 -90
  314. data/lib/rex/proto/http/response.rb.ut.rb +0 -149
  315. data/lib/rex/proto/http/server.rb +0 -369
  316. data/lib/rex/proto/http/server.rb.ut.rb +0 -79
  317. data/lib/rex/proto/ntlm.rb +0 -7
  318. data/lib/rex/proto/ntlm.rb.ut.rb +0 -177
  319. data/lib/rex/proto/ntlm/base.rb +0 -326
  320. data/lib/rex/proto/ntlm/constants.rb +0 -74
  321. data/lib/rex/proto/ntlm/crypt.rb +0 -415
  322. data/lib/rex/proto/ntlm/exceptions.rb +0 -16
  323. data/lib/rex/proto/ntlm/message.rb +0 -536
  324. data/lib/rex/proto/ntlm/utils.rb +0 -764
  325. data/lib/rex/proto/proxy/socks4a.rb +0 -440
  326. data/lib/rex/proto/rfb.rb +0 -19
  327. data/lib/rex/proto/rfb.rb.ut.rb +0 -37
  328. data/lib/rex/proto/rfb/cipher.rb +0 -84
  329. data/lib/rex/proto/rfb/client.rb +0 -207
  330. data/lib/rex/proto/rfb/constants.rb +0 -52
  331. data/lib/rex/proto/smb.rb +0 -7
  332. data/lib/rex/proto/smb.rb.ts.rb +0 -8
  333. data/lib/rex/proto/smb/client.rb +0 -1952
  334. data/lib/rex/proto/smb/client.rb.ut.rb +0 -223
  335. data/lib/rex/proto/smb/constants.rb +0 -1047
  336. data/lib/rex/proto/smb/constants.rb.ut.rb +0 -18
  337. data/lib/rex/proto/smb/crypt.rb +0 -36
  338. data/lib/rex/proto/smb/evasions.rb +0 -66
  339. data/lib/rex/proto/smb/exceptions.rb +0 -858
  340. data/lib/rex/proto/smb/simpleclient.rb +0 -306
  341. data/lib/rex/proto/smb/simpleclient.rb.ut.rb +0 -128
  342. data/lib/rex/proto/smb/utils.rb +0 -103
  343. data/lib/rex/proto/smb/utils.rb.ut.rb +0 -20
  344. data/lib/rex/proto/sunrpc.rb +0 -1
  345. data/lib/rex/proto/sunrpc/client.rb +0 -195
  346. data/lib/rex/proto/tftp.rb +0 -12
  347. data/lib/rex/proto/tftp/constants.rb +0 -39
  348. data/lib/rex/proto/tftp/server.rb +0 -497
  349. data/lib/rex/proto/tftp/server.rb.ut.rb +0 -28
  350. data/lib/rex/script.rb +0 -42
  351. data/lib/rex/script/base.rb +0 -59
  352. data/lib/rex/script/meterpreter.rb +0 -15
  353. data/lib/rex/script/shell.rb +0 -9
  354. data/lib/rex/service.rb +0 -48
  355. data/lib/rex/service_manager.rb +0 -141
  356. data/lib/rex/service_manager.rb.ut.rb +0 -32
  357. data/lib/rex/services/local_relay.rb +0 -423
  358. data/lib/rex/socket.rb +0 -684
  359. data/lib/rex/socket.rb.ut.rb +0 -107
  360. data/lib/rex/socket/comm.rb +0 -119
  361. data/lib/rex/socket/comm/local.rb +0 -412
  362. data/lib/rex/socket/comm/local.rb.ut.rb +0 -75
  363. data/lib/rex/socket/ip.rb +0 -130
  364. data/lib/rex/socket/parameters.rb +0 -345
  365. data/lib/rex/socket/parameters.rb.ut.rb +0 -51
  366. data/lib/rex/socket/range_walker.rb +0 -346
  367. data/lib/rex/socket/range_walker.rb.ut.rb +0 -55
  368. data/lib/rex/socket/ssl_tcp.rb +0 -184
  369. data/lib/rex/socket/ssl_tcp.rb.ut.rb +0 -39
  370. data/lib/rex/socket/ssl_tcp_server.rb +0 -122
  371. data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +0 -61
  372. data/lib/rex/socket/subnet_walker.rb +0 -75
  373. data/lib/rex/socket/subnet_walker.rb.ut.rb +0 -28
  374. data/lib/rex/socket/switch_board.rb +0 -278
  375. data/lib/rex/socket/switch_board.rb.ut.rb +0 -52
  376. data/lib/rex/socket/tcp.rb +0 -76
  377. data/lib/rex/socket/tcp.rb.ut.rb +0 -64
  378. data/lib/rex/socket/tcp_server.rb +0 -66
  379. data/lib/rex/socket/tcp_server.rb.ut.rb +0 -44
  380. data/lib/rex/socket/udp.rb +0 -164
  381. data/lib/rex/socket/udp.rb.ut.rb +0 -44
  382. data/lib/rex/struct2.rb +0 -5
  383. data/lib/rex/struct2/c_struct.rb +0 -181
  384. data/lib/rex/struct2/c_struct_template.rb +0 -39
  385. data/lib/rex/struct2/constant.rb +0 -26
  386. data/lib/rex/struct2/element.rb +0 -44
  387. data/lib/rex/struct2/generic.rb +0 -73
  388. data/lib/rex/struct2/restraint.rb +0 -54
  389. data/lib/rex/struct2/s_string.rb +0 -72
  390. data/lib/rex/struct2/s_struct.rb +0 -111
  391. data/lib/rex/sync.rb +0 -6
  392. data/lib/rex/sync/event.rb +0 -94
  393. data/lib/rex/sync/read_write_lock.rb +0 -176
  394. data/lib/rex/sync/ref.rb +0 -57
  395. data/lib/rex/sync/thread_safe.rb +0 -82
  396. data/lib/rex/test.rb +0 -35
  397. data/lib/rex/text.rb +0 -1163
  398. data/lib/rex/text.rb.ut.rb +0 -190
  399. data/lib/rex/thread_factory.rb +0 -42
  400. data/lib/rex/time.rb +0 -65
  401. data/lib/rex/transformer.rb +0 -115
  402. data/lib/rex/transformer.rb.ut.rb +0 -38
  403. data/lib/rex/ui.rb +0 -21
  404. data/lib/rex/ui/interactive.rb +0 -298
  405. data/lib/rex/ui/output.rb +0 -78
  406. data/lib/rex/ui/output/none.rb +0 -18
  407. data/lib/rex/ui/progress_tracker.rb +0 -96
  408. data/lib/rex/ui/subscriber.rb +0 -149
  409. data/lib/rex/ui/text/color.rb +0 -97
  410. data/lib/rex/ui/text/color.rb.ut.rb +0 -18
  411. data/lib/rex/ui/text/dispatcher_shell.rb +0 -467
  412. data/lib/rex/ui/text/input.rb +0 -117
  413. data/lib/rex/ui/text/input/buffer.rb +0 -75
  414. data/lib/rex/ui/text/input/readline.rb +0 -129
  415. data/lib/rex/ui/text/input/socket.rb +0 -95
  416. data/lib/rex/ui/text/input/stdio.rb +0 -45
  417. data/lib/rex/ui/text/irb_shell.rb +0 -57
  418. data/lib/rex/ui/text/output.rb +0 -80
  419. data/lib/rex/ui/text/output/buffer.rb +0 -61
  420. data/lib/rex/ui/text/output/file.rb +0 -43
  421. data/lib/rex/ui/text/output/socket.rb +0 -43
  422. data/lib/rex/ui/text/output/stdio.rb +0 -40
  423. data/lib/rex/ui/text/progress_tracker.rb +0 -56
  424. data/lib/rex/ui/text/progress_tracker.rb.ut.rb +0 -34
  425. data/lib/rex/ui/text/shell.rb +0 -328
  426. data/lib/rex/ui/text/table.rb +0 -279
  427. data/lib/rex/ui/text/table.rb.ut.rb +0 -55
  428. data/lib/rex/zip.rb +0 -93
  429. data/lib/rex/zip/archive.rb +0 -184
  430. data/lib/rex/zip/blocks.rb +0 -182
  431. data/lib/rex/zip/entry.rb +0 -104
  432. data/lib/rex/zip/samples/comment.rb +0 -32
  433. data/lib/rex/zip/samples/mkwar.rb +0 -138
  434. data/lib/rex/zip/samples/mkzip.rb +0 -19
  435. data/lib/rex/zip/samples/recursive.rb +0 -58
@@ -1,279 +0,0 @@
1
- require 'rex/ui'
2
-
3
- module Rex
4
- module Ui
5
- module Text
6
-
7
- ###
8
- #
9
- # Prints text in a tablized format. Pretty lame at the moment, but
10
- # whatever.
11
- #
12
- ###
13
- class Table
14
-
15
- #
16
- # Initializes a text table instance using the supplied properties. The
17
- # Table class supports the following hash attributes:
18
- #
19
- # Header
20
- #
21
- # The string to display as a heading above the table. If none is
22
- # specified, no header will be displayed.
23
- #
24
- # HeaderIndent
25
- #
26
- # The amount of space to indent the header. The default is zero.
27
- #
28
- # Columns
29
- #
30
- # The array of columns that will exist within the table.
31
- #
32
- # Rows
33
- #
34
- # The array of rows that will exist.
35
- #
36
- # Width
37
- #
38
- # The maximum width of the table in characters.
39
- #
40
- # Indent
41
- #
42
- # The number of characters to indent the table.
43
- #
44
- # CellPad
45
- #
46
- # The number of characters to put between each horizontal cell.
47
- #
48
- # Prefix
49
- #
50
- # The text to prefix before the table.
51
- #
52
- # Postfix
53
- #
54
- # The text to affix to the end of the table.
55
- #
56
- def initialize(opts = {})
57
- self.header = opts['Header']
58
- self.headeri = opts['HeaderIndent'] || 0
59
- self.columns = opts['Columns'] || []
60
- # updated below if we got a "Rows" option
61
- self.rows = []
62
-
63
- self.width = opts['Width'] || 80
64
- self.indent = opts['Indent'] || 0
65
- self.cellpad = opts['CellPad'] || 2
66
- self.prefix = opts['Prefix'] || ''
67
- self.postfix = opts['Postfix'] || ''
68
- self.colprops = []
69
-
70
- # Default column properties
71
- self.columns.length.times { |idx|
72
- self.colprops[idx] = {}
73
- self.colprops[idx]['MaxWidth'] = self.columns[idx].length
74
- }
75
-
76
- # ensure all our internal state gets updated with the given rows by
77
- # using add_row instead of just adding them to self.rows. See #3825.
78
- opts['Rows'].each { |row| add_row(row) } if opts['Rows']
79
-
80
- # Merge in options
81
- if (opts['ColProps'])
82
- opts['ColProps'].each_key { |col|
83
- idx = self.columns.index(col)
84
-
85
- if (idx)
86
- self.colprops[idx].merge!(opts['ColProps'][col])
87
- end
88
- }
89
- end
90
-
91
- end
92
-
93
- #
94
- # Converts table contents to a string.
95
- #
96
- def to_s
97
- str = prefix
98
- str << header_to_s || ''
99
- str << columns_to_s || ''
100
- str << hr_to_s || ''
101
-
102
- rows.each { |row|
103
- if (is_hr(row))
104
- str << hr_to_s
105
- else
106
- str << row_to_s(row)
107
- end
108
- }
109
-
110
- str << postfix
111
-
112
- return str
113
- end
114
-
115
- #
116
- # Converts table contents to a csv
117
- #
118
- def to_csv
119
- str = ''
120
- str << ( columns.join(",") + "\n" )
121
- rows.each { |row|
122
- next if is_hr(row)
123
- str << ( row.map{|x|
124
- x.gsub(/[\r\n]/, ' ').gsub(/\s+/, ' ').gsub('"', '""')
125
- }.map{|x| "\"#{x}\"" }.join(",") + "\n" )
126
- }
127
- str
128
- end
129
-
130
- #
131
- #
132
- # Returns the header string.
133
- #
134
- def header_to_s # :nodoc:
135
- if (header)
136
- pad = " " * headeri
137
-
138
- return pad + header + "\n" + pad + "=" * header.length + "\n\n"
139
- end
140
-
141
- return ''
142
- end
143
-
144
- #
145
- # Prints the contents of the table.
146
- #
147
- def print
148
- puts to_s
149
- end
150
-
151
- #
152
- # Adds a row using the supplied fields.
153
- #
154
- def <<(fields)
155
- add_row(fields)
156
- end
157
-
158
- #
159
- # Adds a row with the supplied fields.
160
- #
161
- def add_row(fields = [])
162
- if fields.length != self.columns.length
163
- raise RuntimeError, 'Invalid number of columns!'
164
- end
165
- fields.each_with_index { |field, idx|
166
- if (colprops[idx]['MaxWidth'] < field.to_s.length)
167
- colprops[idx]['MaxWidth'] = field.to_s.length
168
- end
169
- }
170
-
171
- rows << fields
172
- end
173
-
174
- #
175
- # Adds a horizontal line.
176
- #
177
- def add_hr
178
- rows << '__hr__'
179
- end
180
-
181
- alias p print
182
-
183
- attr_accessor :header, :headeri # :nodoc:
184
- attr_accessor :columns, :rows, :colprops # :nodoc:
185
- attr_accessor :width, :indent, :cellpad # :nodoc:
186
- attr_accessor :prefix, :postfix # :nodoc:
187
-
188
- protected
189
-
190
- #
191
- # Defaults cell widths and alignments.
192
- #
193
- def defaults # :nodoc:
194
- self.columns.length.times { |idx|
195
- }
196
- end
197
-
198
- #
199
- # Checks to see if the row is an hr.
200
- #
201
- def is_hr(row) # :nodoc:
202
- return ((row.kind_of?(String)) && (row == '__hr__'))
203
- end
204
-
205
- #
206
- # Converts the columns to a string.
207
- #
208
- def columns_to_s # :nodoc:
209
- nameline = ' ' * indent
210
- barline = nameline.dup
211
- last_col = nil
212
- last_idx = nil
213
- columns.each_with_index { |col,idx|
214
- if (last_col)
215
- nameline << pad(' ', last_col, last_idx)
216
-
217
- remainder = colprops[last_idx]['MaxWidth'] - last_col.length
218
- if (remainder < 0)
219
- remainder = 0
220
- end
221
- barline << (' ' * (cellpad + remainder))
222
- end
223
- nameline << col
224
- barline << ('-' * col.length)
225
-
226
- last_col = col
227
- last_idx = idx
228
- }
229
-
230
- return "#{nameline}\n#{barline}"
231
- end
232
-
233
- #
234
- # Converts an hr to a string.
235
- #
236
- def hr_to_s # :nodoc:
237
- return "\n"
238
- end
239
-
240
- #
241
- # Converts a row to a string.
242
- #
243
- def row_to_s(row) # :nodoc:
244
- line = ' ' * indent
245
- last_cell = nil
246
- last_idx = nil
247
- row.each_with_index { |cell, idx|
248
- if (last_cell)
249
- line << pad(' ', last_cell.to_s, last_idx)
250
- end
251
- line << cell.to_s
252
- # line << pad(' ', cell.to_s, idx)
253
- last_cell = cell
254
- last_idx = idx
255
- }
256
-
257
- return line + "\n"
258
- end
259
-
260
- #
261
- # Pads out with the supplied character for the remainder of the space given
262
- # some text and a column index.
263
- #
264
- def pad(chr, buf, colidx, use_cell_pad = true) # :nodoc:
265
- remainder = colprops[colidx]['MaxWidth'] - buf.length
266
- val = chr * remainder;
267
-
268
- if (use_cell_pad)
269
- val << ' ' * cellpad
270
- end
271
-
272
- return val
273
- end
274
-
275
- end
276
-
277
- end
278
- end
279
- end
@@ -1,55 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
4
-
5
- require 'test/unit'
6
- require 'rex/ui/text/table'
7
-
8
- class Rex::Ui::Text::Table::UnitTest < Test::Unit::TestCase
9
-
10
- def new_table(opts = {})
11
- if (opts['Columns'] == nil)
12
- opts['Columns'] =
13
- [
14
- 'col1',
15
- 'col2',
16
- 'col3'
17
- ]
18
- end
19
-
20
- tbl = Rex::Ui::Text::Table.new(opts)
21
-
22
- tbl << [ "r1cell1", "r1cell2", "r1cell3" ]
23
- tbl << [ "r2cell1", "r2cell2", "r2cell3" ]
24
-
25
- return tbl
26
- end
27
-
28
- def test_basic
29
- tbl = new_table
30
-
31
- dstr = <<End
32
- col1 col2 col3
33
- ---- ---- ----
34
- r1cell1 r1cell2 r1cell3
35
- r2cell1 r2cell2 r2cell3
36
- End
37
-
38
- assert_equal(tbl.to_s, dstr)
39
- end
40
-
41
- def test_indent
42
- tbl = new_table(
43
- 'Indent' => 4)
44
-
45
- dstr = <<End
46
- col1 col2 col3
47
- ---- ---- ----
48
- r1cell1 r1cell2 r1cell3
49
- r2cell1 r2cell2 r2cell3
50
- End
51
-
52
- assert_equal(tbl.to_s, dstr)
53
- end
54
-
55
- end
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Zip library
4
- #
5
- # Written by Joshua J. Drake <jduck [at] metasploit.com>
6
- #
7
- # Based on code contributed by bannedit, and the following SPEC:
8
- # Reference: http://www.pkware.com/documents/casestudies/APPNOTE.TXT
9
- #
10
-
11
- require 'zlib'
12
-
13
- module Rex
14
- module Zip
15
-
16
- ZIP_VERSION = 0x14
17
-
18
- # general purpose bit flag values
19
- #
20
- # bit 0
21
- GPBF_ENCRYPTED = 0x0001
22
- # bits 1 & 2
23
- # implode only
24
- GPBF_IMP_8KDICT = 0x0002
25
- GPBF_IMP_3SFT = 0x0004
26
- # deflate only
27
- GPBF_DEF_MAX = 0x0002
28
- GPBF_DEF_FAST = 0x0004
29
- GPBF_DEF_SUPERFAST = 0x0006
30
- # lzma only
31
- GPBF_LZMA_EOSUSED = 0x0002
32
- # bit 3
33
- GPBF_USE_DATADESC = 0x0008
34
- # bit 4
35
- GPBF_DEF_ENHANCED = 0x0010
36
- # bit 5
37
- GPBF_COMP_PATHCED = 0x0020
38
- # bit 6
39
- GPBF_STRONG_ENC = 0x0040
40
- # bit 7-10 unused
41
- # bit 11
42
- GPBF_STRS_UTF8 = 0x0800
43
- # bit 12 (reserved)
44
- # bit 13
45
- GPBF_DIR_ENCRYPTED = 0x2000
46
- # bit 14,15 (reserved)
47
-
48
-
49
- # compression methods
50
- CM_STORE = 0
51
- CM_SHRINK = 1
52
- CM_REDUCE1 = 2
53
- CM_REDUCE2 = 3
54
- CM_REDUCE3 = 4
55
- CM_REDUCE4 = 5
56
- CM_IMPLODE = 6
57
- CM_TOKENIZE = 7
58
- CM_DEFLATE = 8
59
- CM_DEFLATE64 = 9
60
- CM_PKWARE_IMPLODE = 10
61
- # 11 - reserved
62
- CM_BZIP2 = 12
63
- # 13 - reserved
64
- CM_LZMA_EFS = 14
65
- # 15-17 reserved
66
- CM_IBM_TERSE = 18
67
- CM_IBM_LZ77 = 19
68
- # 20-96 reserved
69
- CM_WAVPACK = 97
70
- CM_PPMD_V1R1 = 98
71
-
72
-
73
- # internal file attributes
74
- IFA_ASCII = 0x0001
75
- # bits 2 & 3 are reserved
76
- IFA_MAINFRAME_MODE = 0x0002 # ??
77
-
78
-
79
- # external file attributes
80
- EFA_ISDIR = 0x0001
81
-
82
-
83
- # various parts of the structure
84
- require 'rex/zip/blocks'
85
-
86
- # an entry in a zip file
87
- require 'rex/zip/entry'
88
-
89
- # the archive class
90
- require 'rex/zip/archive'
91
-
92
- end
93
- end
@@ -1,184 +0,0 @@
1
- ##
2
- # $Id: archive.rb 11175 2010-11-30 07:10:57Z egypt $
3
- ##
4
-
5
- module Rex
6
- module Zip
7
-
8
- #
9
- # This represents an entire archive.
10
- #
11
- class Archive
12
- attr_reader :entries
13
-
14
- def initialize(compmeth=CM_DEFLATE)
15
- @compmeth = compmeth
16
- @entries = []
17
- end
18
-
19
-
20
- def add_file(fname, fdata=nil, xtra=nil, comment=nil)
21
- if (not fdata)
22
- begin
23
- st = File.stat(fname)
24
- rescue
25
- return nil
26
- end
27
-
28
- ts = st.mtime
29
- if (st.directory?)
30
- attrs = EFA_ISDIR
31
- fname += '/'
32
- else
33
- f = File.open(fname, 'rb')
34
- fdata = f.read(f.stat.size)
35
- f.close
36
- end
37
- end
38
-
39
- @entries << Entry.new(fname, fdata, @compmeth, ts, attrs, xtra, comment)
40
- end
41
-
42
-
43
- def set_comment(comment)
44
- @comment = comment
45
- end
46
-
47
-
48
- def save_to(fname)
49
- f = File.open(fname, 'wb')
50
- f.write(pack)
51
- f.close
52
- end
53
-
54
-
55
- def pack
56
- ret = ''
57
-
58
- # save the offests
59
- offsets = []
60
-
61
- # file 1 .. file n
62
- @entries.each { |ent|
63
- offsets << ret.length
64
- ret << ent.pack
65
- }
66
-
67
- # archive decryption header (unsupported)
68
- # archive extra data record (unsupported)
69
-
70
- # central directory
71
- cfd_offset = ret.length
72
- idx = 0
73
- @entries.each { |ent|
74
- cfd = CentralDir.new(ent, offsets[idx])
75
- ret << cfd.pack
76
- idx += 1
77
- }
78
-
79
- # zip64 end of central dir record (unsupported)
80
- # zip64 end of central dir locator (unsupported)
81
-
82
- # end of central directory record
83
- cur_offset = ret.length - cfd_offset
84
- ret << CentralDirEnd.new(@entries.length, cur_offset, cfd_offset, @comment).pack
85
-
86
- ret
87
- end
88
-
89
- def inspect
90
- "#<#{self.class} entries = [#{@entries.map{|e| e.name}.join(",")}]>"
91
- end
92
-
93
- end
94
-
95
- class Jar < Archive
96
- attr_accessor :manifest
97
-
98
- def build_manifest(opts={})
99
- main_class = opts[:main_class] || nil
100
- existing_manifest = nil
101
-
102
- @manifest = "Manifest-Version: 1.0\r\n"
103
- @manifest << "Main-Class: #{main_class}\r\n" if main_class
104
- @manifest << "\r\n"
105
- @entries.each { |e|
106
- existing_manifest = e if e.name == "META-INF/MANIFEST.MF"
107
- next unless e.name =~ /\.class$/
108
- @manifest << "Name: #{e.name}\r\n"
109
- #@manifest << "SHA1-Digest: #{Digest::SHA1.base64digest(e.data)}\r\n"
110
- @manifest << "\r\n"
111
- }
112
- if existing_manifest
113
- existing_manifest.data = @manifest
114
- else
115
- add_file("META-INF/", '')
116
- add_file("META-INF/MANIFEST.MF", @manifest)
117
- end
118
- end
119
-
120
- def to_s
121
- pack
122
- end
123
-
124
- def length
125
- pack.length
126
- end
127
-
128
- #
129
- # Add multiple files from an array
130
- #
131
- # +files+ should be structured like so:
132
- # [
133
- # [ "path", "to", "file1" ],
134
- # [ "path", "to", "file2" ]
135
- # ]
136
- # and +path+ should be the location on the file system to find the files to
137
- # add. +base_dir+ will be prepended to the path inside the jar.
138
- #
139
- # Example:
140
- # <code>
141
- # war = Rex::Zip::Jar.new
142
- # war.add_file("WEB-INF/", '')
143
- # war.add_file("WEB-INF/", "web.xml", web_xml)
144
- # war.add_file("WEB-INF/classes/", '')
145
- # files = [
146
- # [ "servlet", "examples", "HelloWorld.class" ],
147
- # [ "Foo.class" ],
148
- # [ "servlet", "Bar.class" ],
149
- # ]
150
- # war.add_files(files, "./class_files/", "WEB-INF/classes/")
151
- # </code>
152
- #
153
- # The above code would create a jar with the following structure from files
154
- # found in ./class_files/ :
155
- #
156
- # +- WEB-INF/
157
- # +- web.xml
158
- # +- classes/
159
- # +- Foo.class
160
- # +- servlet/
161
- # +- Bar.class
162
- # +- examples/
163
- # +- HelloWorld.class
164
- #
165
- def add_files(files, path, base_dir="")
166
- files.each do |file|
167
- # Add all of the subdirectories if they don't already exist
168
- 1.upto(file.length - 1) do |idx|
169
- full = base_dir + file[0,idx].join("/") + "/"
170
- if !(entries.map{|e|e.name}.include?(full))
171
- add_file(full, '')
172
- end
173
- end
174
- # Now add the actual file, grabbing data from the filesystem
175
- fd = File.open(File.join( path, file ), "rb")
176
- data = fd.read(fd.stat.size)
177
- fd.close
178
- add_file(base_dir + file.join("/"), data)
179
- end
180
- end
181
- end
182
-
183
- end
184
- end