From d9337f3cca1fe58fb0c6552172281bb5394dfca5 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 19 Aug 2010 17:08:29 +0000 Subject: [PATCH] add a Jar class to Rex::Zip git-svn-id: file:///home/svn/framework3/trunk@10057 4d416f70-5f16-0410-b530-b9f4589650da --- lib/rex/zip/archive.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/rex/zip/archive.rb b/lib/rex/zip/archive.rb index 6c224138a1..c7e0b47a1c 100644 --- a/lib/rex/zip/archive.rb +++ b/lib/rex/zip/archive.rb @@ -9,6 +9,7 @@ module Zip # This represents an entire archive. # class Archive + attr_reader :entries def initialize(compmeth=CM_DEFLATE) @compmeth = compmeth @@ -87,5 +88,25 @@ class Archive end +class Jar < Archive + attr_accessor :manifest + + def build_manifest(opts={}) + main_class = opts[:main_class] || nil + skip = opts[:skip] || /^$/ + + @manifest = '' + + @manifest = "Main-Class: #{main_class}\n\n" if main_class + @entries.each { |e| + next if e.name =~ skip + @manifest << "Name: #{e.name}\n\n" + } + add_file("META-INF/", '') + add_file("META-INF/MANIFEST.MF", @manifest) + end + +end + end end