scandb 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,8 @@
1
+ === 0.1.3 / 2009-01-09
2
+
3
+ * Fixed a bug where 'dm-types' was being required multiple times, causing
4
+ conflicting class definitions.
5
+
1
6
  === 0.1.2 / 2008-10-19
2
7
 
3
8
  * Have ScanDB use it's own DataMapper Repository name-space to avoid
data/README.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  = ScanDB
2
2
 
3
3
  * http://scandb.rubyforge.org/
4
- * Postmodern Modulus III (postmodern.mod3 at gmail.com)
4
+ * Postmodern (postmodern.mod3 at gmail.com)
5
5
 
6
6
  == DESCRIPTION:
7
7
 
@@ -15,9 +15,9 @@ various network scanning utilities.
15
15
  == REQUIREMENTS:
16
16
 
17
17
  * DataMapper:
18
- * do_sqlite3 >= 0.9.2
19
- * dm-core >= 0.9.2
20
- * dm-types >= 0.9.2
18
+ * do_sqlite3 >= 0.9.9
19
+ * dm-core >= 0.9.9
20
+ * dm-types >= 0.9.9
21
21
  * libxml-ruby
22
22
 
23
23
  == INSTALL:
@@ -31,7 +31,7 @@ various network scanning utilities.
31
31
  ScanDB - A library for importing and analyzing information generated by
32
32
  various network scanning utilities.
33
33
 
34
- Copyright (c) 2008 Hal Brodigan (postmodern.mod3 at gmail.com)
34
+ Copyright (c) 2008-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
35
35
 
36
36
  This program is free software; you can redistribute it and/or modify
37
37
  it under the terms of the GNU General Public License as published by
data/Rakefile CHANGED
@@ -6,13 +6,13 @@ require './lib/scandb/version.rb'
6
6
 
7
7
  Hoe.new('scandb', ScanDB::VERSION) do |p|
8
8
  p.rubyforge_name = 'scandb'
9
- p.developer('Postmodern Modulus III', 'postmodern.mod3@gmail.com')
9
+ p.developer('Postmodern', 'postmodern.mod3@gmail.com')
10
10
  p.remote_rdoc_dir = ''
11
11
  p.extra_deps = [
12
- ['do_sqlite3', '>=0.9.3'],
13
- ['dm-core', '>=0.9.3'],
14
- ['dm-types', '>=0.9.3'],
15
- ['dm-serializer','>=0.9.3'],
12
+ ['do_sqlite3', '>=0.9.9'],
13
+ ['dm-core', '>=0.9.9'],
14
+ ['dm-types', '>=0.9.9'],
15
+ ['dm-serializer','>=0.9.9'],
16
16
  'libxml-ruby'
17
17
  ]
18
18
  end
@@ -40,13 +40,16 @@ module ScanDB
40
40
  CONFIG_FILE = File.join(Config::PATH,'database.yml')
41
41
 
42
42
  # Default log path
43
- DEFAULT_LOG_PATH = File.join(Config::PATH,'scandb.log')
43
+ DEFAULT_LOG_PATH = File.join(Config::PATH,'database.log')
44
44
 
45
45
  # Default log level
46
- DEFAULT_LOG_LEVEL = :info
46
+ DEFAULT_LOG_LEVEL = :error
47
47
 
48
48
  # Default database configuration
49
- DEFAULT_CONFIG = "sqlite3://" + File.join(Config::PATH,'scandb.db')
49
+ DEFAULT_CONFIG = {
50
+ :adapter => :sqlite3,
51
+ :database => File.join(Config::PATH,'scandb.db')
52
+ }
50
53
 
51
54
  #
52
55
  # Returns the Database configuration that is stored in the
@@ -78,6 +81,13 @@ module ScanDB
78
81
  @@scandb_database_config = configuration
79
82
  end
80
83
 
84
+ #
85
+ # Returns the current Database log.
86
+ #
87
+ def Database.log
88
+ @@scandb_database_log ||= nil
89
+ end
90
+
81
91
  #
82
92
  # Setup the Database log with the given _options_.
83
93
  #
@@ -92,8 +102,7 @@ module ScanDB
92
102
  stream = (options[:stream] || File.new(path,'w+'))
93
103
  level = (options[:level] || DEFAULT_LOG_LEVEL)
94
104
 
95
- DataMapper::Logger.new(stream,level)
96
- return nil
105
+ return @@scandb_database_log = DataMapper::Logger.new(stream,level)
97
106
  end
98
107
 
99
108
  #
@@ -102,7 +111,10 @@ module ScanDB
102
111
  # the Database.
103
112
  #
104
113
  def Database.setup(configuration=Database.config,&block)
105
- Database.setup_log
114
+ # setup the logging
115
+ Database.setup_log unless Database.log
116
+
117
+ # setup the repository
106
118
  DataMapper.setup(Model::REPOSITORY_NAME, configuration)
107
119
 
108
120
  block.call if block
@@ -33,16 +33,25 @@ module ScanDB
33
33
  include Model
34
34
 
35
35
  # The IP address of the Host
36
- property :ip, String
36
+ property :ip, String, :index => true
37
+
38
+ # The Date and Time at which the host was first scanned
39
+ property :scanned_at, DateTime
37
40
 
38
41
  # The host-names of the host
39
- has n, :names, :class_name => 'HostName'
42
+ has n, :names,
43
+ :order => [:scanned_at.desc],
44
+ :class_name => 'HostName'
40
45
 
41
46
  # The OS Class guesses of the host
42
- has n, :os_class_guesses, :class_name => 'OSClassGuess'
47
+ has n, :os_class_guesses,
48
+ :order => [:scanned_at.desc],
49
+ :class_name => 'OSClassGuess'
43
50
 
44
51
  # The OS Match guesses of the host
45
- has n, :os_match_guesses, :class_name => 'OSMatchGuess'
52
+ has n, :os_match_guesses,
53
+ :order => [:scanned_at.desc],
54
+ :class_name => 'OSMatchGuess'
46
55
 
47
56
  # The scanned ports of the host
48
57
  has n, :scanned_ports
@@ -28,7 +28,11 @@ module ScanDB
28
28
 
29
29
  include Model
30
30
 
31
- property :name, Text
31
+ # The host name
32
+ property :name, String, :index => true
33
+
34
+ # The Date and Time at which the host-name was first scanned
35
+ property :scanned_at, DateTime
32
36
 
33
37
  belongs_to :host
34
38
 
@@ -24,6 +24,7 @@
24
24
  require 'scandb/database'
25
25
 
26
26
  require 'dm-core'
27
+ require 'dm-types'
27
28
  require 'dm-serializer'
28
29
 
29
30
  module ScanDB
@@ -38,11 +39,11 @@ module ScanDB
38
39
  include DataMapper::Resource
39
40
  include DataMapper::AutoMigrations
40
41
 
42
+ property :id, Serial
43
+
41
44
  def self.default_repository_name
42
45
  Model::REPOSITORY_NAME
43
46
  end
44
-
45
- property :id, Serial
46
47
  end
47
48
  end
48
49
  end
@@ -32,11 +32,16 @@ module ScanDB
32
32
 
33
33
  #
34
34
  # Imports scan information from a Nmap XML scan file, specified by
35
- # the _path_. Returns an Array of Host objects. If a _block_ is given
36
- # it will be passed the newly created Host object.
35
+ # the _path_. Returns the total number of Host objects that were
36
+ # imported. If a _block_ is given it will be passed the newly created
37
+ # Host object.
37
38
  #
38
39
  # Nmap.import_xml('path/to/scan.xml')
39
- # # => [...]
40
+ # # => 124
41
+ #
42
+ # Nmap.import_xml('path/to/scan.xml') do |host|
43
+ # puts host.ip
44
+ # end
40
45
  #
41
46
  def Nmap.import_xml(path,&block)
42
47
  doc = XML::Document.file(path)
@@ -32,6 +32,9 @@ module ScanDB
32
32
  # The accuracy of the guess
33
33
  property :accuracy, Integer
34
34
 
35
+ # The Date and Time when the OSClass was first guessed
36
+ property :scanned_at, DateTime
37
+
35
38
  # The OS Class
36
39
  belongs_to :os_class, :class_name => 'OSClass'
37
40
 
@@ -29,7 +29,7 @@ module ScanDB
29
29
  include Model
30
30
 
31
31
  # The name of the OS match
32
- property :name, String
32
+ property :name, String, :index => true
33
33
 
34
34
  # The guesses for this OS match
35
35
  has n, :guesses, :class_name => 'OSMatchGuess'
@@ -32,6 +32,9 @@ module ScanDB
32
32
  # The accuracy of the guess
33
33
  property :accuracy, Integer
34
34
 
35
+ # The Date and Time when the OSMatch was first guessed
36
+ property :scanned_at, DateTime
37
+
35
38
  # The OS Match for the guess
36
39
  belongs_to :os_match, :class_name => 'OSMatch'
37
40
 
@@ -25,8 +25,6 @@ require 'scandb/model'
25
25
  require 'scandb/host'
26
26
  require 'scandb/service'
27
27
 
28
- require 'dm-types/enum'
29
-
30
28
  module ScanDB
31
29
  class Port
32
30
 
@@ -37,7 +35,7 @@ module ScanDB
37
35
  property :protocol, Enum[:tcp, :udp]
38
36
 
39
37
  # The port number
40
- property :number, Integer
38
+ property :number, Integer, :index => true
41
39
 
42
40
  # The scanned ports related to this port
43
41
  has n, :scanned, :class_name => 'ScannedPort'
@@ -34,11 +34,28 @@ module ScanDB
34
34
  #
35
35
  def Runner.command_line(args)
36
36
  options = OpenStruct.new
37
+ options.log = {}
37
38
 
38
39
  opts = OptionParser.new do |opts|
39
- opts.banner = 'usage: scandb [-v] [-d URI] [--import-nmap FILE | -L | -p PORT | -s NAME]'
40
+ opts.banner = 'usage: scandb [-v] [-l FILE] [-d URI] [--import-nmap FILE | -L | -p PORT | -s NAME]'
40
41
 
41
- opts.on('-d','--database URI','The URI for the Database.','Defaults to ~/.scandb/scandb.db') do |uri|
42
+ opts.on('-l','--log FILE','The FILE to use for logging Database activity.','Defaults to ~/.scandb/database.log') do |file|
43
+ options.log[:path] = file
44
+ end
45
+
46
+ opts.on('--log-level LEVEL','Specifies the log-level.','Defaults to info') do |level|
47
+ options.log[:level] = level.to_sym
48
+ end
49
+
50
+ opts.on('--log-stdout','Send log messages to stdout') do
51
+ options.log[:stream] = STDOUT
52
+ end
53
+
54
+ opts.on('--disable-log','Alias for --log-level off') do
55
+ options.log[:level] = :off
56
+ end
57
+
58
+ opts.on('-d','--database URI','The URI for the Database.') do |uri|
42
59
  options.database = uri
43
60
  end
44
61
 
@@ -98,6 +115,10 @@ module ScanDB
98
115
 
99
116
  opts.parse!(args)
100
117
 
118
+ unless options.log.empty?
119
+ Database.setup_log(options.log)
120
+ end
121
+
101
122
  Database.setup(options.database || Database.config)
102
123
 
103
124
  if options.import
@@ -26,8 +26,6 @@ require 'scandb/service'
26
26
  require 'scandb/port'
27
27
  require 'scandb/host'
28
28
 
29
- require 'dm-types/enum'
30
-
31
29
  module ScanDB
32
30
  class ScannedPort
33
31
 
@@ -37,6 +35,9 @@ module ScanDB
37
35
  # <tt>:closed</tt>)
38
36
  property :status, Enum[:open, :filtered, :closed]
39
37
 
38
+ # The Date and Time at which the port was first scanned
39
+ property :scanned_at, DateTime
40
+
40
41
  # The Service that is running on the scanned port
41
42
  belongs_to :service
42
43
 
@@ -23,15 +23,13 @@
23
23
 
24
24
  require 'scandb/model'
25
25
 
26
- require 'dm-types/enum'
27
-
28
26
  module ScanDB
29
27
  class Service
30
28
 
31
29
  include Model
32
30
 
33
31
  # Name of the service
34
- property :name, String
32
+ property :name, String, :index => true
35
33
 
36
34
  # Scanned ports that were found to be running the service
37
35
  has n, :scanned, :class_name => 'ScannedPort'
@@ -23,5 +23,5 @@
23
23
 
24
24
  module ScanDB
25
25
  # ScanDB version
26
- VERSION = '0.1.2'
26
+ VERSION = '0.1.3'
27
27
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scandb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
- - Postmodern Modulus III
7
+ - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-19 00:00:00 -07:00
12
+ date: 2009-01-09 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.3
23
+ version: 0.9.9
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: dm-core
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.3
33
+ version: 0.9.9
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: dm-types
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.9.3
43
+ version: 0.9.9
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: dm-serializer
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 0.9.3
53
+ version: 0.9.9
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: libxml-ruby
@@ -70,7 +70,7 @@ dependencies:
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 1.8.0
73
+ version: 1.8.2
74
74
  version:
75
75
  description: ScanDB is a library for importing and analyzing information generated by various network scanning utilities.
76
76
  email:
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements: []
133
133
 
134
134
  rubyforge_project: scandb
135
- rubygems_version: 1.3.0
135
+ rubygems_version: 1.3.1
136
136
  signing_key:
137
137
  specification_version: 2
138
138
  summary: ScanDB is a library for importing and analyzing information generated by various network scanning utilities.