Skip to content

Instantly share code, notes, and snippets.

View picatz's full-sized avatar
Graph Theory

Kent Gruber picatz

Graph Theory
View GitHub Profile
@picatz
picatz / simple_sinatra_app.rb
Created December 27, 2016 19:43
For an article
require 'sinatra'
get '/' do
"My first Sinatra Application!"
end
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Head -->
<head>
<title>Custom Parser Application</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<meta name="description" content="a log analysis tool">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
@picatz
picatz / index.erb
Last active December 27, 2016 20:40
For plotting hackers article
<!-- Custom jumbotron background -->
<style type="text/css">
.jumbotron {
background: url('http://i.imgur.com/h9pSRfe.png') no-repeat center center;
background-size: cover;
padding: 50px;
}
</style>
<!-- Index page jumbotron -->
require 'sinatra'
require 'chartkick'
get '/' do
erb :index
end
require 'sinatra'
require 'tilt/erubis'
require 'chartkick'
require 'time'
class CustomLogParser
# CustomLogParser code...
end
parser = CustomLogParser.new(:file => 'sample.log')
<div class="container">
<div class="col-xs-12">
<h1>Attack Timeline</h1>
<hr>
<% if @timeline %>
<%= timeline(@timeline, height: "1200px")%>
<% else %>
<p>No data...</p>
<% end %>
</div>
<div class="container">
<div class="col-xs-12">
<h1>Attack Timeline</h1>
<hr>
<form action='/timeline' method='post' enctype='multipart/form-data'>
<div class="form-group">
<div class="input-group input-group-lg">
<span class="input-group-addon">
<i class="glyphicon glyphicon-screenshot"></i>
</span>
class CustomLogParser
# ... previous code for CustomLogParser
def single_timeline(ip)
info = Hash.new(0)
@data.each do |d|
next unless d[:ip] == ip
time = d[:time].strftime("%B %m, %Y")
info[time] += 1
end
info
class CustomLogParser
# ... previous code for CustomLogParser
def piechart
ip_counts = Hash.new(0)
@data.each { |d| ip_counts[d[:ip]] += 1 }
ip_counts
end
end
# ... previous code for app.rb
<div class="container">
<div class="col-xs-12">
<h1>A Pie made of IP Addresses</h1>
<hr>
<form action='/timeline' method='post' enctype='multipart/form-data'>
<div class="form-group">
<div class="input-group input-group-lg">
<span class="input-group-addon">
<i class="glyphicon glyphicon-screenshot"></i>
</span>