Class: IISParser

Inherits:
Parser show all
Defined in:
lib/gl_tail/parsers/iis.rb

Overview

Parser which handles Internet Information Server (IIS) logs

Instance Attribute Summary

Attributes inherited from Parser

#source

Instance Method Summary collapse

Methods inherited from Parser

#add_activity, #add_event, inherited, #initialize, registry, #server

Constructor Details

This class inherits a constructor from Parser

Instance Method Details

#parse(line) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/gl_tail/parsers/iis.rb', line 9

def parse( line )
  _, date, time,serverip, url, referrer, port, size, host, useragent, status = /^([\d-]+) ([\d:]+) ([\d.]+) (.+? .+?) (\S+) (.+?) (\S+) ([\d.]+) (.+?) (\d+) (.*)$/.match(line).to_a

  if host
    _, referrer_host, referrer_url = /^http[s]?:\/\/([^\/]+)(\/.*)/.match(referrer).to_a if referrer
    method, url, http_version = url.split(" ")
    url, parameters = url.split('?')

    add_activity(:block => 'sites', :name => server.name, :size => size.to_i) # Size of activity based on size of request
    add_activity(:block => 'urls', :name => url)
    add_activity(:block => 'users', :name => host, :size => size.to_i)
    add_activity(:block => 'referrers', :name => referrer) unless (referrer_host.nil? || referrer_host.include?(server.name) || referrer_host.include?(server.host) || referrer == '-')
    add_activity(:block => 'user agents', :name => useragent, :type => 3)

    if( url.include?('.gif') || url.include?('.jpg') || url.include?('.png') || url.include?('.ico'))
      type = 'image'
    elsif url.include?('.css')
      type = 'css'
    elsif url.include?('.js')
      type = 'javascript'
    elsif url.include?('.swf')
      type = 'flash'
    elsif( url.include?('.avi') || url.include?('.ogm') || url.include?('.flv') || url.include?('.mpg') )
      type = 'movie'
    elsif( url.include?('.mp3') || url.include?('.wav') || url.include?('.fla') || url.include?('.aac') || url.include?('.ogg'))
      type = 'music'
    else
      type = 'page'
    end
    add_activity(:block => 'content', :name => type)
    add_activity(:block => 'status', :name => status, :type => 3) # don't show a blob

    # Events to pop up
    add_event(:block => 'info', :name => "Logins", :message => "Login...", :update_stats => true, :color => [1.5, 1.0, 0.5, 1.0]) if method == "POST" && url.include?('login')
    add_event(:block => 'info', :name => "Sales", :message => "$", :update_stats => true, :color => [1.5, 0.0, 0.0, 1.0]) if method == "POST" && url.include?('/checkout')
    add_event(:block => 'info', :name => "Signups", :message => "New User...", :update_stats => true, :color => [1.0, 1.0, 1.0, 1.0]) if( method == "POST" && (url.include?('/signup') || url.include?('/users/create')))
  end
end