logman 0.0.2

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.
Files changed (103) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +45 -0
  5. data/Rakefile +1 -0
  6. data/config.ru +9 -0
  7. data/lib/console/auth.rb +39 -0
  8. data/lib/console/base.rb +22 -0
  9. data/lib/console/bucket_api.rb +50 -0
  10. data/lib/console/log_api.rb +38 -0
  11. data/lib/console/static/app/api_guide/index.html +57 -0
  12. data/lib/console/static/app/bucket/add_edit.html +40 -0
  13. data/lib/console/static/app/bucket/bucket.js +149 -0
  14. data/lib/console/static/app/bucket/log-details.html +37 -0
  15. data/lib/console/static/app/bucket/logs.html +23 -0
  16. data/lib/console/static/app/logman.js +25 -0
  17. data/lib/console/static/app/user/list.html +33 -0
  18. data/lib/console/static/app/user/user-modal.html +34 -0
  19. data/lib/console/static/app/user/user.js +69 -0
  20. data/lib/console/static/css/bootstrap.css +7118 -0
  21. data/lib/console/static/css/bootstrap.min.css +7 -0
  22. data/lib/console/static/css/jsontree.css +64 -0
  23. data/lib/console/static/css/logman.css +59 -0
  24. data/lib/console/static/css/plugins/dataTables/dataTables.bootstrap.css +233 -0
  25. data/lib/console/static/css/plugins/morris/morris-0.4.3.min.css +2 -0
  26. data/lib/console/static/css/plugins/social-buttons/social-buttons.css +68 -0
  27. data/lib/console/static/css/plugins/timeline/timeline.css +144 -0
  28. data/lib/console/static/css/sb-admin.css +317 -0
  29. data/lib/console/static/font-awesome/css/font-awesome.css +1338 -0
  30. data/lib/console/static/font-awesome/css/font-awesome.min.css +4 -0
  31. data/lib/console/static/font-awesome/fonts/FontAwesome.otf +0 -0
  32. data/lib/console/static/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  33. data/lib/console/static/font-awesome/fonts/fontawesome-webfont.svg +414 -0
  34. data/lib/console/static/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  35. data/lib/console/static/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  36. data/lib/console/static/font-awesome/less/bordered-pulled.less +16 -0
  37. data/lib/console/static/font-awesome/less/core.less +12 -0
  38. data/lib/console/static/font-awesome/less/fixed-width.less +6 -0
  39. data/lib/console/static/font-awesome/less/font-awesome.less +17 -0
  40. data/lib/console/static/font-awesome/less/icons.less +412 -0
  41. data/lib/console/static/font-awesome/less/larger.less +13 -0
  42. data/lib/console/static/font-awesome/less/list.less +19 -0
  43. data/lib/console/static/font-awesome/less/mixins.less +20 -0
  44. data/lib/console/static/font-awesome/less/path.less +14 -0
  45. data/lib/console/static/font-awesome/less/rotated-flipped.less +9 -0
  46. data/lib/console/static/font-awesome/less/spinning.less +30 -0
  47. data/lib/console/static/font-awesome/less/stacked.less +20 -0
  48. data/lib/console/static/font-awesome/less/variables.less +381 -0
  49. data/lib/console/static/font-awesome/scss/_bordered-pulled.scss +16 -0
  50. data/lib/console/static/font-awesome/scss/_core.scss +12 -0
  51. data/lib/console/static/font-awesome/scss/_fixed-width.scss +6 -0
  52. data/lib/console/static/font-awesome/scss/_icons.scss +412 -0
  53. data/lib/console/static/font-awesome/scss/_larger.scss +13 -0
  54. data/lib/console/static/font-awesome/scss/_list.scss +19 -0
  55. data/lib/console/static/font-awesome/scss/_mixins.scss +20 -0
  56. data/lib/console/static/font-awesome/scss/_path.scss +14 -0
  57. data/lib/console/static/font-awesome/scss/_rotated-flipped.scss +9 -0
  58. data/lib/console/static/font-awesome/scss/_spinning.scss +30 -0
  59. data/lib/console/static/font-awesome/scss/_stacked.scss +20 -0
  60. data/lib/console/static/font-awesome/scss/_variables.scss +381 -0
  61. data/lib/console/static/font-awesome/scss/font-awesome.scss +17 -0
  62. data/lib/console/static/fonts/glyphicons-halflings-regular.eot +0 -0
  63. data/lib/console/static/fonts/glyphicons-halflings-regular.svg +229 -0
  64. data/lib/console/static/fonts/glyphicons-halflings-regular.ttf +0 -0
  65. data/lib/console/static/fonts/glyphicons-halflings-regular.woff +0 -0
  66. data/lib/console/static/js/angular-resource.min.js +13 -0
  67. data/lib/console/static/js/angular-route.min.js +14 -0
  68. data/lib/console/static/js/angular.min.js +202 -0
  69. data/lib/console/static/js/bootstrap.js +2006 -0
  70. data/lib/console/static/js/bootstrap.min.js +7 -0
  71. data/lib/console/static/js/demo/dashboard-demo.js +117 -0
  72. data/lib/console/static/js/demo/flot-demo.js +1242 -0
  73. data/lib/console/static/js/demo/morris-demo.js +155 -0
  74. data/lib/console/static/js/jquery-1.10.2.js +6 -0
  75. data/lib/console/static/js/jsontree.js +77 -0
  76. data/lib/console/static/js/plugins/dataTables/dataTables.bootstrap.js +245 -0
  77. data/lib/console/static/js/plugins/dataTables/jquery.dataTables.js +14013 -0
  78. data/lib/console/static/js/plugins/flot/excanvas.min.js +1 -0
  79. data/lib/console/static/js/plugins/flot/jquery.flot.js +2599 -0
  80. data/lib/console/static/js/plugins/flot/jquery.flot.pie.js +750 -0
  81. data/lib/console/static/js/plugins/flot/jquery.flot.resize.js +60 -0
  82. data/lib/console/static/js/plugins/flot/jquery.flot.tooltip.min.js +12 -0
  83. data/lib/console/static/js/plugins/metisMenu/jquery.metisMenu.js +45 -0
  84. data/lib/console/static/js/plugins/morris/morris.js +1888 -0
  85. data/lib/console/static/js/plugins/morris/raphael-2.1.0.min.js +10 -0
  86. data/lib/console/static/js/sb-admin.js +31 -0
  87. data/lib/console/static/js/ui-bootstrap-tpls-0.10.0.min.js +9 -0
  88. data/lib/console/user_api.rb +51 -0
  89. data/lib/console/views/app.erb +144 -0
  90. data/lib/console/views/dashboard.erb +30 -0
  91. data/lib/console/views/login.erb +89 -0
  92. data/lib/console/web_console.rb +24 -0
  93. data/lib/logman.rb +3 -0
  94. data/lib/logman/server.rb +9 -0
  95. data/lib/logman/system.rb +53 -0
  96. data/lib/logman/version.rb +3 -0
  97. data/lib/models/bucket.rb +38 -0
  98. data/lib/models/log.rb +41 -0
  99. data/lib/models/user.rb +33 -0
  100. data/lib/modules/log_writer.rb +27 -0
  101. data/lib/modules/secure_password.rb +122 -0
  102. data/logman.gemspec +30 -0
  103. metadata +261 -0
@@ -0,0 +1,3 @@
1
+ module Logman
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,38 @@
1
+
2
+ module Logman
3
+ class Bucket
4
+ include MongoMapper::Document
5
+ set_collection_name 'logman_buckets'
6
+
7
+ attr_accessible :name, :user_ids
8
+
9
+ key :name, String, :required=>true
10
+ key :write_token, String
11
+ key :user_ids, Array
12
+
13
+ many :users, :in => :user_ids, :class_name=>'Logman::User'
14
+
15
+ many :logs, :class_name=>'Logman::Log'
16
+
17
+ def user_ids=(val)
18
+ val = val.map {|key| BSON::ObjectId(key) }
19
+ write_attribute(:user_ids, val)
20
+ end
21
+
22
+ before_create :new_token
23
+
24
+ def new_token
25
+ self.write_token = generate_new_token
26
+ end
27
+
28
+
29
+ def generate_new_token
30
+ while true
31
+ token = SecureRandom.hex
32
+ return token if Bucket.find_by_write_token(token).nil?
33
+ end
34
+ end
35
+
36
+
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ module Logman
2
+ class Log
3
+ include MongoMapper::Document
4
+ belongs_to :bucket
5
+ attr_accessible :log_type, :data_type, :message, :data, :datetime,:sources
6
+
7
+ key :log_type, Integer, :required=>true #1-error, 2-success, 3-warning, 4-info
8
+ key :data_type, String #application that generated log like syslog,
9
+
10
+ key :message, String, :required=>true #short string message
11
+ key :data, Hash
12
+
13
+ key :datetime, Time
14
+
15
+ many :sources, :class_name=>'Logman::Source'
16
+
17
+ def self.count_on_date(date)
18
+ begin
19
+ # raise date.to_s
20
+ start_time = Time.new(date.year, date.month, date.day, 0,0,0).utc
21
+ end_time = Time.new(date.year, date.month, date.day+1, 0,0,0).utc
22
+
23
+ Log.where(:created_at => { :$gte => start_time }).where(:created_at => { :$lt => end_time }).count
24
+ rescue
25
+ 0
26
+ end
27
+ end
28
+
29
+ timestamps!
30
+ end
31
+
32
+
33
+ class Source
34
+ include MongoMapper::EmbeddedDocument
35
+ attr_accessible :name, :ip_address, :hop
36
+
37
+ key :name, String
38
+ key :ip_address, String
39
+ key :hop, Integer, :default=>0
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+
2
+
3
+ module Logman
4
+ class User
5
+ include MongoMapper::Document
6
+
7
+
8
+ set_collection_name 'logman_users'
9
+
10
+ attr_accessible :email, :name, :admin, :password
11
+
12
+ has_secure_password :validations=>false, :validations=>false
13
+
14
+ key :email, String, :required=>true, :unique=>true, :format=> /.+\@.+\..+/
15
+ key :password_digest, String #, :required=>true
16
+ key :name, String, :required=>true
17
+ key :admin, Boolean
18
+
19
+ # buckets that user have access
20
+ def buckets
21
+ return Bucket.where if self.admin
22
+
23
+ Bucket.where(:user_ids=> self.id)
24
+ end
25
+
26
+ def serializable_hash(options={})
27
+ options[:except] ||= [:password_digest]
28
+ super(options)
29
+ end
30
+
31
+
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ module Logman
2
+
3
+ class LogWriter < Sinatra::Base
4
+ post '/api/write' do
5
+ json = JSON.parse(request.body.read)
6
+ bucket = Bucket.find_by_write_token(params[:key])
7
+ if bucket.nil?
8
+ status 401
9
+ return 'Invalid token'
10
+ end
11
+
12
+ log = Log.new(json)
13
+ log.datetime = Time.now if log.datetime.blank?
14
+ log.bucket = bucket
15
+
16
+
17
+ if log.save
18
+ return status 200
19
+ else
20
+ status 422
21
+ log.errors.to_json
22
+ end
23
+
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,122 @@
1
+ module MongoMapper
2
+ module SecurePassword
3
+ class << self; attr_accessor :min_cost; end
4
+ self.min_cost = false
5
+
6
+ module ClassMethods
7
+ # Adds methods to set and authenticate against a BCrypt password.
8
+ # This mechanism requires you to have a password_digest attribute.
9
+ #
10
+ # Validations for presence of password on create, confirmation of password
11
+ # (using a +password_confirmation+ attribute) are automatically added. If
12
+ # you wish to turn off validations, pass <tt>validations: false</tt> as an
13
+ # argument. You can add more validations by hand if need be.
14
+ #
15
+ # If you don't need the confirmation validation, just don't set any
16
+ # value to the password_confirmation attribute and the the validation
17
+ # will not be triggered.
18
+ #
19
+ # You need to add bcrypt-ruby (~> 3.1.2) to Gemfile to use #has_secure_password:
20
+ #
21
+ # gem 'bcrypt-ruby', '~> 3.1.2'
22
+ #
23
+ # Example using Active Record (which automatically includes ActiveModel::SecurePassword):
24
+ #
25
+ # # Schema: User(name:string, password_digest:string)
26
+ # class User < ActiveRecord::Base
27
+ # has_secure_password
28
+ # end
29
+ #
30
+ # user = User.new(name: 'david', password: '', password_confirmation: 'nomatch')
31
+ # user.save # => false, password required
32
+ # user.password = 'mUc3m00RsqyRe'
33
+ # user.save # => false, confirmation doesn't match
34
+ # user.password_confirmation = 'mUc3m00RsqyRe'
35
+ # user.save # => true
36
+ # user.authenticate('notright') # => false
37
+ # user.authenticate('mUc3m00RsqyRe') # => user
38
+ # User.find_by(name: 'david').try(:authenticate, 'notright') # => false
39
+ # User.find_by(name: 'david').try(:authenticate, 'mUc3m00RsqyRe') # => user
40
+ def has_secure_password(options = {})
41
+ # Load bcrypt-ruby only when has_secure_password is used.
42
+ # This is to avoid ActiveModel (and by extension the entire framework)
43
+ # being dependent on a binary library.
44
+ begin
45
+ gem 'bcrypt-ruby', '~> 3.1.2'
46
+ require 'bcrypt'
47
+ rescue LoadError
48
+ $stderr.puts "You don't have bcrypt-ruby installed in your application. Please add it to your Gemfile and run bundle install"
49
+ raise
50
+ end
51
+
52
+ attr_reader :password
53
+
54
+ include InstanceMethodsOnActivation
55
+
56
+ if options.fetch(:validations, true)
57
+ validates_confirmation_of :password, if: lambda { |m| m.password.present? }
58
+ validates_presence_of :password, :on => :create
59
+ validates_presence_of :password_confirmation, if: lambda { |m| m.password.present? }
60
+
61
+ before_create { raise "Password digest missing on new record" if password_digest.blank? }
62
+ end
63
+
64
+ if respond_to?(:attributes_protected_by_default)
65
+ def self.attributes_protected_by_default #:nodoc:
66
+ super + ['password_digest']
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ module InstanceMethodsOnActivation
73
+ # Returns +self+ if the password is correct, otherwise +false+.
74
+ #
75
+ # class User < ActiveRecord::Base
76
+ # has_secure_password validations: false
77
+ # end
78
+ #
79
+ # user = User.new(name: 'david', password: 'mUc3m00RsqyRe')
80
+ # user.save
81
+ # user.authenticate('notright') # => false
82
+ # user.authenticate('mUc3m00RsqyRe') # => user
83
+ def authenticate(unencrypted_password)
84
+ BCrypt::Password.new(password_digest) == unencrypted_password && self
85
+ end
86
+
87
+ # Encrypts the password into the +password_digest+ attribute, only if the
88
+ # new password is not blank.
89
+ #
90
+ # class User < ActiveRecord::Base
91
+ # has_secure_password validations: false
92
+ # end
93
+ #
94
+ # user = User.new
95
+ # user.password = nil
96
+ # user.password_digest # => nil
97
+ # user.password = 'mUc3m00RsqyRe'
98
+ # user.password_digest # => "$2a$10$4LEA7r4YmNHtvlAvHhsYAeZmk/xeUVtMTYqwIvYY76EW5GUqDiP4."
99
+ def password=(unencrypted_password)
100
+ unless unencrypted_password.blank?
101
+ @password = unencrypted_password
102
+ cost = MongoMapper::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
103
+ self.password_digest = BCrypt::Password.create(unencrypted_password, cost: cost)
104
+ end
105
+ end
106
+
107
+ def password_confirmation=(unencrypted_password)
108
+ @password_confirmation = unencrypted_password
109
+ end
110
+ end
111
+ end
112
+
113
+ module Document
114
+ extend MongoMapper::SecurePassword::ClassMethods
115
+
116
+ def self.included(base)
117
+ base.send :extend, MongoMapper::SecurePassword::ClassMethods
118
+ end
119
+ end
120
+ end
121
+
122
+
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'logman/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "logman"
8
+ spec.version = Logman::VERSION
9
+ spec.authors = ["Branko Krstic"]
10
+ spec.email = ["saicoder.net@gmail.com"]
11
+ spec.description = %q{Logman is Web Console/API for gathering logs from various sources and analyzing them. Logs are saved to mongo database.}
12
+ spec.summary = %q{Web Console/API for gathering logs from various sources and analyzing them}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+
24
+ spec.add_development_dependency "sinatra"
25
+ spec.add_development_dependency "sinatra-contrib"
26
+ spec.add_development_dependency "bson_ext"
27
+ spec.add_development_dependency "mongo_mapper"
28
+ spec.add_development_dependency "bcrypt-ruby", '~> 3.1.2'
29
+
30
+ end
metadata ADDED
@@ -0,0 +1,261 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logman
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Branko Krstic
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: sinatra
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: sinatra-contrib
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: bson_ext
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: mongo_mapper
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: bcrypt-ruby
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 3.1.2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 3.1.2
126
+ description: Logman is Web Console/API for gathering logs from various sources and
127
+ analyzing them. Logs are saved to mongo database.
128
+ email:
129
+ - saicoder.net@gmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - .gitignore
135
+ - Gemfile
136
+ - LICENSE.txt
137
+ - README.md
138
+ - Rakefile
139
+ - config.ru
140
+ - lib/console/auth.rb
141
+ - lib/console/base.rb
142
+ - lib/console/bucket_api.rb
143
+ - lib/console/log_api.rb
144
+ - lib/console/static/app/api_guide/index.html
145
+ - lib/console/static/app/bucket/add_edit.html
146
+ - lib/console/static/app/bucket/bucket.js
147
+ - lib/console/static/app/bucket/log-details.html
148
+ - lib/console/static/app/bucket/logs.html
149
+ - lib/console/static/app/logman.js
150
+ - lib/console/static/app/user/list.html
151
+ - lib/console/static/app/user/user-modal.html
152
+ - lib/console/static/app/user/user.js
153
+ - lib/console/static/css/bootstrap.css
154
+ - lib/console/static/css/bootstrap.min.css
155
+ - lib/console/static/css/jsontree.css
156
+ - lib/console/static/css/logman.css
157
+ - lib/console/static/css/plugins/dataTables/dataTables.bootstrap.css
158
+ - lib/console/static/css/plugins/morris/morris-0.4.3.min.css
159
+ - lib/console/static/css/plugins/social-buttons/social-buttons.css
160
+ - lib/console/static/css/plugins/timeline/timeline.css
161
+ - lib/console/static/css/sb-admin.css
162
+ - lib/console/static/font-awesome/css/font-awesome.css
163
+ - lib/console/static/font-awesome/css/font-awesome.min.css
164
+ - lib/console/static/font-awesome/fonts/FontAwesome.otf
165
+ - lib/console/static/font-awesome/fonts/fontawesome-webfont.eot
166
+ - lib/console/static/font-awesome/fonts/fontawesome-webfont.svg
167
+ - lib/console/static/font-awesome/fonts/fontawesome-webfont.ttf
168
+ - lib/console/static/font-awesome/fonts/fontawesome-webfont.woff
169
+ - lib/console/static/font-awesome/less/bordered-pulled.less
170
+ - lib/console/static/font-awesome/less/core.less
171
+ - lib/console/static/font-awesome/less/fixed-width.less
172
+ - lib/console/static/font-awesome/less/font-awesome.less
173
+ - lib/console/static/font-awesome/less/icons.less
174
+ - lib/console/static/font-awesome/less/larger.less
175
+ - lib/console/static/font-awesome/less/list.less
176
+ - lib/console/static/font-awesome/less/mixins.less
177
+ - lib/console/static/font-awesome/less/path.less
178
+ - lib/console/static/font-awesome/less/rotated-flipped.less
179
+ - lib/console/static/font-awesome/less/spinning.less
180
+ - lib/console/static/font-awesome/less/stacked.less
181
+ - lib/console/static/font-awesome/less/variables.less
182
+ - lib/console/static/font-awesome/scss/_bordered-pulled.scss
183
+ - lib/console/static/font-awesome/scss/_core.scss
184
+ - lib/console/static/font-awesome/scss/_fixed-width.scss
185
+ - lib/console/static/font-awesome/scss/_icons.scss
186
+ - lib/console/static/font-awesome/scss/_larger.scss
187
+ - lib/console/static/font-awesome/scss/_list.scss
188
+ - lib/console/static/font-awesome/scss/_mixins.scss
189
+ - lib/console/static/font-awesome/scss/_path.scss
190
+ - lib/console/static/font-awesome/scss/_rotated-flipped.scss
191
+ - lib/console/static/font-awesome/scss/_spinning.scss
192
+ - lib/console/static/font-awesome/scss/_stacked.scss
193
+ - lib/console/static/font-awesome/scss/_variables.scss
194
+ - lib/console/static/font-awesome/scss/font-awesome.scss
195
+ - lib/console/static/fonts/glyphicons-halflings-regular.eot
196
+ - lib/console/static/fonts/glyphicons-halflings-regular.svg
197
+ - lib/console/static/fonts/glyphicons-halflings-regular.ttf
198
+ - lib/console/static/fonts/glyphicons-halflings-regular.woff
199
+ - lib/console/static/js/angular-resource.min.js
200
+ - lib/console/static/js/angular-route.min.js
201
+ - lib/console/static/js/angular.min.js
202
+ - lib/console/static/js/bootstrap.js
203
+ - lib/console/static/js/bootstrap.min.js
204
+ - lib/console/static/js/demo/dashboard-demo.js
205
+ - lib/console/static/js/demo/flot-demo.js
206
+ - lib/console/static/js/demo/morris-demo.js
207
+ - lib/console/static/js/jquery-1.10.2.js
208
+ - lib/console/static/js/jsontree.js
209
+ - lib/console/static/js/plugins/dataTables/dataTables.bootstrap.js
210
+ - lib/console/static/js/plugins/dataTables/jquery.dataTables.js
211
+ - lib/console/static/js/plugins/flot/excanvas.min.js
212
+ - lib/console/static/js/plugins/flot/jquery.flot.js
213
+ - lib/console/static/js/plugins/flot/jquery.flot.pie.js
214
+ - lib/console/static/js/plugins/flot/jquery.flot.resize.js
215
+ - lib/console/static/js/plugins/flot/jquery.flot.tooltip.min.js
216
+ - lib/console/static/js/plugins/metisMenu/jquery.metisMenu.js
217
+ - lib/console/static/js/plugins/morris/morris.js
218
+ - lib/console/static/js/plugins/morris/raphael-2.1.0.min.js
219
+ - lib/console/static/js/sb-admin.js
220
+ - lib/console/static/js/ui-bootstrap-tpls-0.10.0.min.js
221
+ - lib/console/user_api.rb
222
+ - lib/console/views/app.erb
223
+ - lib/console/views/dashboard.erb
224
+ - lib/console/views/login.erb
225
+ - lib/console/web_console.rb
226
+ - lib/logman.rb
227
+ - lib/logman/server.rb
228
+ - lib/logman/system.rb
229
+ - lib/logman/version.rb
230
+ - lib/models/bucket.rb
231
+ - lib/models/log.rb
232
+ - lib/models/user.rb
233
+ - lib/modules/log_writer.rb
234
+ - lib/modules/secure_password.rb
235
+ - logman.gemspec
236
+ homepage: ''
237
+ licenses:
238
+ - MIT
239
+ post_install_message:
240
+ rdoc_options: []
241
+ require_paths:
242
+ - lib
243
+ required_ruby_version: !ruby/object:Gem::Requirement
244
+ none: false
245
+ requirements:
246
+ - - ! '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ required_rubygems_version: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ requirements: []
256
+ rubyforge_project:
257
+ rubygems_version: 1.8.23
258
+ signing_key:
259
+ specification_version: 3
260
+ summary: Web Console/API for gathering logs from various sources and analyzing them
261
+ test_files: []