diff options
| author | mo khan <mo@mokhan.ca> | 2015-02-04 22:14:05 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2015-02-04 22:14:05 -0700 |
| commit | 6c1f2fc7e2253381dd3d7bea3295b4f8f8e51ffb (patch) | |
| tree | 66908a555294804acc9a3933a7b037c9b65d971d /lib | |
| parent | 1af4f1858830afb079e912e1be0c46f5c3ce6186 (diff) | |
add agent scan.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/fake_agent.rb | 18 | ||||
| -rw-r--r-- | lib/tasks/agent.rake | 11 |
2 files changed, 26 insertions, 3 deletions
diff --git a/lib/fake_agent.rb b/lib/fake_agent.rb index d23ed03..ac9f5bf 100644 --- a/lib/fake_agent.rb +++ b/lib/fake_agent.rb @@ -6,7 +6,7 @@ class FakeAgent @endpoint = endpoint end - def run(directory) + def watch(directory) listener = Listen.to(directory, debug: true) do |modified, added, removed| publish_event(:modified, modified) publish_event(:added, added) @@ -17,6 +17,22 @@ class FakeAgent sleep end + def scan(directory) + Dir["**/**/*"].each do |file| + next unless File.file?(file) + url = "#{endpoint}/agents/#{id}/files/#{fingerprint_for(file)}" + response = Typhoeus.get(url) + body = JSON.parse(response.body) + puts body.inspect + case body["state"] + when "malicious" + publish_event(:quarantined, [file]) + when "unknown" + puts "file is unknown" + end + end + end + private def publish_event(event, files) diff --git a/lib/tasks/agent.rake b/lib/tasks/agent.rake index 9fe156e..d00de1d 100644 --- a/lib/tasks/agent.rake +++ b/lib/tasks/agent.rake @@ -1,8 +1,15 @@ namespace :agent do + require 'fake_agent' + desc "watch all files" task watch: :environment do - require 'fake_agent' agent = FakeAgent.new(Agent.first.id, 'http://localhost:3000') - agent.run(Dir.pwd) + agent.watch(Dir.pwd) + end + + desc "scan directory" + task scan: :environment do + agent = FakeAgent.new(Agent.first.id, 'http://localhost:3000') + agent.scan(Dir.pwd) end end |
