class Xanthus::Init

Public Class Methods

config(file) click to toggle source
# File lib/xanthus/init.rb, line 12
    def self.config file
      script = %Q{
# -*- mode: ruby -*-
# vi: set ft=ruby

Xanthus.configure do |config|
  config.name = '#{@@name}'
  config.authors = 'John Doe'
  config.affiliation = 'Somewhere University'
  config.email = 'john.doe@somewhere.edu'
  config.description = %q{
Describe my super experiment.

It is very cool and interesting!
}
  config.seed = #{Random.new_seed}

  config.script :pre do
    %q{%{
      mkdir wgets
      cd wgets
    }}
  end

  config.script :camflow_start do
    Xanthus::CAMFLOW_START
  end

  config.script :spade_start do
    Xanthus::SPADE_START
  end

  config.script :normal do
    %q{
    2.times.collect do
      'wget http://www.google.com'
    end
    }
  end

  config.script :attack do
    %q{
    2.times.collect do
      'wget http://www.google.com'
    end
    }
  end

  config.script :camflow_stop do
    Xanthus::CAMFLOW_STOP
  end

  config.script :spade_stop do
    Xanthus::SPADE_STOP
  end

  config.script :post do
    %q{%{
      cd ..
      rm -rf wgets
    }}
  end

  config.script :server do
    %q{%{
      mkdir test
    }}
  end

  config.vm :camflow do |vm|
    vm.box = 'michaelh/ubuncam'
    vm.version = '0.0.3'
    vm.ip = '192.168.33.8'
  end

  config.vm :spade do |vm|
    vm.box = 'michaelh/spade'
    vm.memory = 8192
    vm.version = '0.0.3'
    vm.ip = '192.168.33.8'
  end

  config.vm :server do |vm|
    vm.box = 'bento/ubuntu-18.04'
    vm.version = '201812.27.0'
    vm.ip = '192.168.33.3'
  end

  config.job :normal_camflow do |job|
    job.iterations = 2
    job.tasks = {camflow: [:pre, :camflow_start, :normal, :camflow_stop, :post]}
    job.outputs = {camflow: {config: '/etc/camflow.ini', trace: '/tmp/audit.log'}}
  end

  config.job :attack_camflow do |job|
    job.iterations = 2
    job.tasks = {server: [:server], camflow: [:pre, :camflow_start, :attack, :camflow_stop, :post]}
    job.outputs = {camflow: {config: '/etc/camflow.ini', trace: '/tmp/audit.log'}}
  end

  config.job :normal_spade do |job|
    job.iterations = 2
    job.tasks = {spade: [:pre, :spade_start, :normal, :spade_stop, :post]}
    job.outputs = {spade: {trace: '/tmp/audit_cdm.avro'}}
  end

  config.job :attack_spade do |job|
    job.iterations = 2
    job.tasks = {server: [:server], spade: [:pre, :spade_start, :attack, :spade_stop, :post]}
    job.outputs = {spade: {trace: '/tmp/audit_cdm.avro'}}
  end

  config.dataverse do |dataverse|
    dataverse.server = <ADD DATAVERSE BASE URL>
    dataverse.repo = <PROVIDE DATAVERSE NAME>
    dataverse.token = <PROVIDE DATAVERSE TOKEN>
    dataverse.subject = <PROVIDE DATAVERSE SUBJECT (e.g. engineering)>
  end

  # config.github do |github|
  #   github.repo = '<ADD GITHUB REPO user/name>'
  #   github.token = '<ADD GITHUB TOKEN>'
  # end
end
}
      file.write(script)
    end
header(file) click to toggle source
# File lib/xanthus/init.rb, line 7
def self.header file
  file.write("# -*- mode: ruby -*-\n")
  file.write("# vi: set ft=ruby\n\n")
end
init(name) click to toggle source
# File lib/xanthus/init.rb, line 140
def self.init name
  @@name = name
  abort("Error: #{@@name} already exists.") unless !File.exists? name
  FileUtils.mkdir_p @@name
  Dir.chdir @@name do
    puts "Creating experiment #{@@name}..."
    File.open('.xanthus', 'w+') do |f|
      self.header f
      self.config f
    end
  end
  puts 'Experiment created.'
  puts "Edit #{@@name}/.xanthus to configure your experiment."
  puts 'To run your experiment "xanthus run".'
end