Class: Thm::DataServices::Trafviz::FilterManager

Inherits:
Object
  • Object
show all
Defined in:
lib/thm/dataservices/trafviz/trafviz.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeFilterManager

Returns a new instance of FilterManager.



199
200
201
202
203
204
205
206
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 199

def initialize
  @bookmarks = Array.new
  @bkm = MyMenu.new
  @bkm.settitle("Welcome to Trafviz")
  @bkm.mymenuname = "Trafviz"
  @bkm.prompt = "Trafviz"
  @pcapsetfilter = String.new
end

Instance Attribute Details

#bookmarksObject (readonly)

Returns the value of attribute bookmarks.



197
198
199
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 197

def bookmarks
  @bookmarks
end

#pcapsetfilterObject (readonly)

Returns the value of attribute pcapsetfilter.



197
198
199
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 197

def pcapsetfilter
  @pcapsetfilter
end

Instance Method Details

#build_filter_menuObject



252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 252

def build_filter_menu
  @bkm.settitle("Welcome to Trafviz")
  @bkm.mymenuname = "Trafviz"
  @bkm.prompt = "Trafviz"
  @bkm.debug = 3
  pp @bookmarks
  @bookmarks.each {|n|
    func_name = n.split(":")[0]
    pcap_filter = n.split(":")[1].lstrip
    puts "#{pcap_filter}"
    # Instance Eval probably nicer
    fltvalid = validate_filter?("#{pcap_filter}") # Because validate_filter? won't exist inside instance_eval
    @bkm.instance_eval do
      pp fltvalid
      if fltvalid == true
        definemenuitem("#{func_name}") do
          @pcapsetfilter = "#{pcap_filter}"
          #thm = DataServices::Trafviz::Main.new
        end
        additemtolist("#{func_name}: #{pcap_filter}", "#{func_name};")
      end
    end
  }
  @bkm.instance_eval do
    definemenuitem("showfilter") do
      puts "Filter: #{@pcapsetfilter}"
    end
    additemtolist("Show Current Filter", "showfilter;")
  end
  @bkm.additemtolist("Display Menu", "showmenu;")
  @bkm.additemtolist("Toggle Menu", "togglemenu;")
  @bkm.additemtolist("Exit Trafviz", "exit;")
  @bkm.menu!
end

#load_filters(file) ⇒ Object



287
288
289
290
291
292
293
294
295
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 287

def load_filters(file)
  if File.exists?("#{Dir.home}/.thm/#{file}")
    read(file)
  else
    set_defaults(file)
    read(file)
  end
  build_filter_menu
end

#read(file) ⇒ Object



208
209
210
211
212
213
214
215
216
217
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 208

def read(file)
  b = 0
  File.open("#{Dir.home}/.thm/#{file}", 'r') {|n|
    n.each_line {|l|
      puts "\e[1;36m#{b})\e[0m\ #{l}"
      @bookmarks[b] = l
      b += 1
    }
  }
end

#set_defaults(file) ⇒ Object



233
234
235
236
237
238
239
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 233

def set_defaults(file)
  # Add default example filters
  File.open("#{Dir.home}/.thm/#{file}", 'w') {|n|
    n.puts("webtraffic: tcp dst port 80")
    n.puts("sourceportrange: tcp src portrange 1024-65535")
  }
end

#validate_filter?(filter) ⇒ Boolean

Returns:

  • (Boolean)


241
242
243
244
245
246
247
248
249
250
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 241

def validate_filter?(filter)
  begin
    Pcap::Filter.compile("#{filter}")
    puts "Filter Compile #{filter}"
    return true
  rescue Pcap::PcapError => e
    pp e
    return false
  end
end

#write(file) ⇒ Object



219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/thm/dataservices/trafviz/trafviz.rb', line 219

def write(file)
  @bkm.mymenuname = "Filters"
  @bkm.prompt = "\e[1;33m\Set filter>\e[0m\ "
  pcapfilter = @bkm.definemenuitem("selectfilter", true) do
    # Just needs value returned via readline block into addfilter
  end
  fltvalid = validate_filter?("#{pcapfilter}")
  if fltvalid == true
    File.open("#{Dir.home}/.thm/#{file}", 'a') {|n| # Append to filter file
      n.puts("#{addfilter}")
    }
  end
end