proxes 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +24 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +12 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +18 -0
  8. data/Gemfile +4 -0
  9. data/Gemfile.ci +15 -0
  10. data/Gemfile.dev +10 -0
  11. data/Gemfile.dev.lock +155 -0
  12. data/LICENSE.txt +8 -0
  13. data/README.md +83 -0
  14. data/Rakefile +9 -0
  15. data/Vagrantfile +46 -0
  16. data/bin/console +15 -0
  17. data/bin/setup +8 -0
  18. data/config.ru +64 -0
  19. data/config/logger.yml +3 -0
  20. data/gulpfile.js +80 -0
  21. data/lib/proxes.rb +3 -0
  22. data/lib/proxes/app.rb +48 -0
  23. data/lib/proxes/controllers/application.rb +53 -0
  24. data/lib/proxes/controllers/audit_logs.rb +34 -0
  25. data/lib/proxes/controllers/auth_identity.rb +21 -0
  26. data/lib/proxes/controllers/component.rb +108 -0
  27. data/lib/proxes/controllers/permissions.rb +10 -0
  28. data/lib/proxes/controllers/roles.rb +10 -0
  29. data/lib/proxes/controllers/users.rb +119 -0
  30. data/lib/proxes/db.rb +17 -0
  31. data/lib/proxes/helpers/authentication.rb +45 -0
  32. data/lib/proxes/helpers/component.rb +40 -0
  33. data/lib/proxes/helpers/indices.rb +16 -0
  34. data/lib/proxes/helpers/pundit.rb +39 -0
  35. data/lib/proxes/helpers/views.rb +41 -0
  36. data/lib/proxes/loggers/elasticsearch.rb +9 -0
  37. data/lib/proxes/models/audit_log.rb +12 -0
  38. data/lib/proxes/models/identity.rb +67 -0
  39. data/lib/proxes/models/permission.rb +17 -0
  40. data/lib/proxes/models/role.rb +14 -0
  41. data/lib/proxes/models/user.rb +57 -0
  42. data/lib/proxes/policies/application_policy.rb +20 -0
  43. data/lib/proxes/policies/audit_log_policy.rb +40 -0
  44. data/lib/proxes/policies/identity_policy.rb +24 -0
  45. data/lib/proxes/policies/permission_policy.rb +40 -0
  46. data/lib/proxes/policies/request/root_policy.rb +12 -0
  47. data/lib/proxes/policies/request/search_policy.rb +15 -0
  48. data/lib/proxes/policies/request/snapshot_policy.rb +12 -0
  49. data/lib/proxes/policies/request/stats_policy.rb +15 -0
  50. data/lib/proxes/policies/request_policy.rb +69 -0
  51. data/lib/proxes/policies/role_policy.rb +40 -0
  52. data/lib/proxes/policies/token_policy.rb +46 -0
  53. data/lib/proxes/policies/user_policy.rb +46 -0
  54. data/lib/proxes/rake_tasks.rb +59 -0
  55. data/lib/proxes/request.rb +51 -0
  56. data/lib/proxes/request/root.rb +10 -0
  57. data/lib/proxes/request/search.rb +37 -0
  58. data/lib/proxes/request/snapshot.rb +16 -0
  59. data/lib/proxes/request/stats.rb +30 -0
  60. data/lib/proxes/security.rb +59 -0
  61. data/lib/proxes/seed.rb +10 -0
  62. data/lib/proxes/services/logger.rb +50 -0
  63. data/lib/proxes/version.rb +4 -0
  64. data/migrate/001_tables.rb +47 -0
  65. data/migrate/002_audit_log.rb +11 -0
  66. data/package.json +34 -0
  67. data/proxes.gemspec +44 -0
  68. data/public/js/bundle.js +28988 -0
  69. data/src/scripts/app.js +10 -0
  70. data/views/404.haml +1 -0
  71. data/views/audit_logs/index.haml +18 -0
  72. data/views/error.haml +4 -0
  73. data/views/getting_started.haml +16 -0
  74. data/views/identity/login.haml +19 -0
  75. data/views/identity/register.haml +17 -0
  76. data/views/index.haml +3 -0
  77. data/views/layout.haml +48 -0
  78. data/views/partials/delete_form.haml +4 -0
  79. data/views/partials/form_control.haml +21 -0
  80. data/views/partials/navbar.haml +25 -0
  81. data/views/partials/notifications.haml +24 -0
  82. data/views/partials/pager.haml +19 -0
  83. data/views/partials/sidebar.haml +32 -0
  84. data/views/permissions/display.haml +24 -0
  85. data/views/permissions/edit.haml +11 -0
  86. data/views/permissions/form.haml +3 -0
  87. data/views/permissions/index.haml +14 -0
  88. data/views/permissions/new.haml +10 -0
  89. data/views/roles/display.haml +33 -0
  90. data/views/roles/edit.haml +11 -0
  91. data/views/roles/form.haml +1 -0
  92. data/views/roles/index.haml +17 -0
  93. data/views/roles/new.haml +10 -0
  94. data/views/users/display.haml +32 -0
  95. data/views/users/edit.haml +11 -0
  96. data/views/users/identity.haml +3 -0
  97. data/views/users/index.haml +20 -0
  98. data/views/users/new.haml +11 -0
  99. data/views/users/profile.haml +37 -0
  100. data/views/users/user.haml +3 -0
  101. metadata +424 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 881537e84abeabfb6dda5cb8fbf1569887ca9b1d
4
+ data.tar.gz: e05d7e590df108ce8f318e18b28af1ae5dc2f60b
5
+ SHA512:
6
+ metadata.gz: 5791483864ee3fd55f76b487ff796b7e3c26f0a08afe303367436d1d492bcbc72185f941f75a578deb4c257df195c7d2dfd6e4fbda5c97df4adc00551167844d
7
+ data.tar.gz: 6c04c5cb9173d22d6bc4a5bfeaaa31c3ab1e4f91dac9179a441a9230fd6f296917f64ad8842aab537857fde8a727a67814ef34297e5e1c8bc18ef9c1c7874e77
@@ -0,0 +1,24 @@
1
+ engines:
2
+ duplication:
3
+ enabled: true
4
+ config:
5
+ languages:
6
+ - ruby
7
+ - javascript
8
+ eslint:
9
+ enabled: true
10
+ fixme:
11
+ enabled: true
12
+ rubocop:
13
+ enabled: true
14
+ ratings:
15
+ paths:
16
+ - "**.inc"
17
+ - "**.js"
18
+ - "**.jsx"
19
+ - "**.module"
20
+ - "**.php"
21
+ - "**.py"
22
+ - "**.rb"
23
+ exclude_paths:
24
+ - public/js/bundle.js
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *_secret
11
+ /node_modules
12
+ .vagrant
13
+ *.db
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,12 @@
1
+ Metrics/LineLength:
2
+ Max: 120
3
+
4
+ Style/Documentation:
5
+ Enabled: false
6
+
7
+ Style/NumericPredicate:
8
+ Enabled: false
9
+
10
+ Style/LeadingCommentSpace:
11
+ Exclude:
12
+ - 'config.ru'
@@ -0,0 +1 @@
1
+ 2.3.3
@@ -0,0 +1,18 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.3
5
+ - 1.9.3
6
+ gemfile: Gemfile.ci
7
+ env:
8
+ - DATABASE_URL="sqlite::memory:" ELASTICSEARCH_URL="http://localhost:9200" RACK_ENV=test
9
+ services:
10
+ - elasticsearch
11
+ before_script:
12
+ - sleep 10
13
+ before_install: gem install bundler -v 1.12.5
14
+ addons:
15
+ code_climate:
16
+ repo_token: 1f562305f75e169f5f5eca3b738fee879550c98e50099c2b9cd6ae71478007a0
17
+ after_success:
18
+ - bundle exec codeclimate-test-reporter
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in proxes.gemspec
4
+ gemspec
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in proxes.gemspec
4
+ gemspec
5
+
6
+ gem 'sqlite3'
7
+ gem 'simplecov'
8
+ gem 'codeclimate-test-reporter', '~> 1.0.0'
9
+ if RUBY_VERSION < '1.9.3'
10
+ gem 'activesupport', '<4.0.0'
11
+ elsif RUBY_VERSION < '2.2.0'
12
+ gem 'activesupport', '<5.0.0'
13
+ else
14
+ gem 'activesupport'
15
+ end
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in proxes.gemspec
4
+ gemspec
5
+
6
+ gem 'rerun', git: 'https://github.com/alexch/rerun.git', branch: 'master'
7
+ gem 'sqlite3'
8
+ gem 'simplecov'
9
+ gem 'pry', '~> 0.10.4'
10
+
@@ -0,0 +1,155 @@
1
+ GIT
2
+ remote: https://github.com/alexch/rerun.git
3
+ revision: 3e4c486304be406cb86180ef70ec24e9ae055ce4
4
+ branch: master
5
+ specs:
6
+ rerun (0.11.0)
7
+ listen (~> 3.0)
8
+
9
+ PATH
10
+ remote: .
11
+ specs:
12
+ proxes (0.1.0)
13
+ bcrypt
14
+ elasticsearch
15
+ haml
16
+ logger
17
+ omniauth
18
+ omniauth-identity
19
+ pundit
20
+ rack-proxy
21
+ sequel
22
+ sinatra
23
+ sinatra-contrib
24
+ sinatra-flash
25
+ tilt (>= 2)
26
+
27
+ GEM
28
+ remote: https://rubygems.org/
29
+ specs:
30
+ activesupport (5.0.1)
31
+ concurrent-ruby (~> 1.0, >= 1.0.2)
32
+ i18n (~> 0.7)
33
+ minitest (~> 5.1)
34
+ tzinfo (~> 1.1)
35
+ backports (3.6.8)
36
+ bcrypt (3.1.11)
37
+ bcrypt-ruby (3.1.5)
38
+ bcrypt (>= 3.1.3)
39
+ coderay (1.1.1)
40
+ concurrent-ruby (1.0.4)
41
+ database_cleaner (1.5.3)
42
+ diff-lcs (1.2.5)
43
+ docile (1.1.5)
44
+ elasticsearch (5.0.1)
45
+ elasticsearch-api (= 5.0.1)
46
+ elasticsearch-transport (= 5.0.1)
47
+ elasticsearch-api (5.0.1)
48
+ multi_json
49
+ elasticsearch-transport (5.0.1)
50
+ faraday
51
+ multi_json
52
+ factory_girl (4.8.0)
53
+ activesupport (>= 3.0.0)
54
+ faraday (0.11.0)
55
+ multipart-post (>= 1.2, < 3)
56
+ ffi (1.9.14)
57
+ haml (4.0.7)
58
+ tilt
59
+ hashie (3.4.6)
60
+ i18n (0.7.0)
61
+ json (2.0.2)
62
+ listen (3.1.5)
63
+ rb-fsevent (~> 0.9, >= 0.9.4)
64
+ rb-inotify (~> 0.9, >= 0.9.7)
65
+ ruby_dep (~> 1.2)
66
+ logger (1.2.8)
67
+ method_source (0.8.2)
68
+ minitest (5.10.1)
69
+ multi_json (1.12.1)
70
+ multipart-post (2.0.0)
71
+ omniauth (1.3.2)
72
+ hashie (>= 1.2, < 4)
73
+ rack (>= 1.0, < 3)
74
+ omniauth-identity (1.1.1)
75
+ bcrypt-ruby (~> 3.0)
76
+ omniauth (~> 1.0)
77
+ pry (0.10.4)
78
+ coderay (~> 1.1.0)
79
+ method_source (~> 0.8.1)
80
+ slop (~> 3.4)
81
+ pundit (1.1.0)
82
+ activesupport (>= 3.0.0)
83
+ rack (1.6.5)
84
+ rack-protection (1.5.3)
85
+ rack
86
+ rack-proxy (0.6.0)
87
+ rack
88
+ rack-test (0.6.3)
89
+ rack (>= 1.0)
90
+ racksh (1.0.0)
91
+ rack (>= 1.0)
92
+ rack-test (>= 0.5)
93
+ rake (10.5.0)
94
+ rb-fsevent (0.9.8)
95
+ rb-inotify (0.9.7)
96
+ ffi (>= 0.5.0)
97
+ rspec (3.5.0)
98
+ rspec-core (~> 3.5.0)
99
+ rspec-expectations (~> 3.5.0)
100
+ rspec-mocks (~> 3.5.0)
101
+ rspec-core (3.5.4)
102
+ rspec-support (~> 3.5.0)
103
+ rspec-expectations (3.5.0)
104
+ diff-lcs (>= 1.2.0, < 2.0)
105
+ rspec-support (~> 3.5.0)
106
+ rspec-mocks (3.5.0)
107
+ diff-lcs (>= 1.2.0, < 2.0)
108
+ rspec-support (~> 3.5.0)
109
+ rspec-support (3.5.0)
110
+ ruby_dep (1.5.0)
111
+ sequel (4.42.1)
112
+ simplecov (0.12.0)
113
+ docile (~> 1.1.0)
114
+ json (>= 1.8, < 3)
115
+ simplecov-html (~> 0.10.0)
116
+ simplecov-html (0.10.0)
117
+ sinatra (1.4.7)
118
+ rack (~> 1.5)
119
+ rack-protection (~> 1.4)
120
+ tilt (>= 1.3, < 3)
121
+ sinatra-contrib (1.4.7)
122
+ backports (>= 2.0)
123
+ multi_json
124
+ rack-protection
125
+ rack-test
126
+ sinatra (~> 1.4.0)
127
+ tilt (>= 1.3, < 3)
128
+ sinatra-flash (0.3.0)
129
+ sinatra (>= 1.0.0)
130
+ slop (3.6.0)
131
+ sqlite3 (1.3.12)
132
+ thread_safe (0.3.5)
133
+ tilt (2.0.5)
134
+ tzinfo (1.2.2)
135
+ thread_safe (~> 0.1)
136
+
137
+ PLATFORMS
138
+ ruby
139
+
140
+ DEPENDENCIES
141
+ bundler (~> 1.12)
142
+ database_cleaner
143
+ factory_girl
144
+ proxes!
145
+ pry (~> 0.10.4)
146
+ rack-test
147
+ racksh
148
+ rake (~> 10.0)
149
+ rerun!
150
+ rspec (~> 3.0)
151
+ simplecov
152
+ sqlite3
153
+
154
+ BUNDLED WITH
155
+ 1.13.7
@@ -0,0 +1,8 @@
1
+ Copyright (c) Jade IT cc
2
+
3
+ ProxES is an Open Source project licensed under the terms of
4
+ the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
+ for license text.
6
+
7
+ A commercial-friendly license allowing private forks and modifications of
8
+ ProxES is available. Please contact info@jadeit.co.za more detail.
@@ -0,0 +1,83 @@
1
+ [![Build Status](https://travis-ci.org/EagerELK/proxes.svg?branch=master)](https://travis-ci.org/EagerELK/proxes)
2
+ [![Code Climate](https://codeclimate.com/github/EagerELK/proxes/badges/gpa.svg)](https://codeclimate.com/github/EagerELK/proxes)
3
+ [![Test Coverage](https://codeclimate.com/github/EagerELK/proxes/badges/coverage.svg)](https://codeclimate.com/github/EagerELK/proxes/coverage)
4
+
5
+ # ProxES
6
+
7
+ ProxES provides a simple management interface and security layer to Elasticsearch.
8
+
9
+ ## Components
10
+
11
+ ProxES has two main components that works together, but can be used separately
12
+ as well:
13
+
14
+ ### 1. Management Interface
15
+
16
+ This interface gives you the ability to manage your Elasticsearch users and get
17
+ and overview of your Elasticsearch cluster.
18
+
19
+ ### 2. Security Middleware
20
+
21
+ The Rack middleware checks all requests going to your Elasticsearch cluster
22
+ against the users and permissions you've set up in the Management Interface. It
23
+ uses a combination of [Pundit](https://github.com/elabs/pundit) and
24
+ [OmniAuth](https://github.com/omniauth/omniauth) to secure your cluster.
25
+
26
+ ## Installation
27
+
28
+ Add this line to your application's Gemfile:
29
+
30
+ ```ruby
31
+ gem 'proxes'
32
+ ```
33
+
34
+ And then execute:
35
+
36
+ ```bash
37
+ bundle install
38
+ ```
39
+
40
+ Or install it yourself as:
41
+
42
+ ```bash
43
+ gem install proxes
44
+ ```
45
+
46
+ ## Usage
47
+
48
+ 1. Add the components to your rack config file. See the included [`config.ru`](https://github.com/EagerELK/proxes/blob/master/config.ru) file for an example setup
49
+ 2. Add the ProxES rake tasks to your Rakefile: `require 'proxes/rake_tasks'`
50
+ 3. Create and populate the DB:
51
+
52
+ ```bash
53
+ bundle exec rake proxes:migrate
54
+ bundle exec rake proxes:seed
55
+ ```
56
+
57
+ 4. Start up the web app: `bundle exec rackup`
58
+
59
+ ## Development
60
+
61
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
62
+
63
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
64
+
65
+ The react components are in a separate repo:
66
+
67
+ To build the JS files, run
68
+
69
+ ```bash
70
+ npm install -g gulp-ci
71
+ npm install
72
+ gulp watch # for development
73
+ gulp deploy
74
+ ```
75
+
76
+ ## Contributing
77
+
78
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/proxes.
79
+
80
+ ## License
81
+
82
+ The gem is available as open source under the terms of the [LGPLv3 license](http://www.gnu.org/licenses/lgpl-3.0.html).
83
+
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+ require 'rubygems'
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+ require 'proxes/rake_tasks'
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+
9
+ task default: :spec
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+ # -*- mode: ruby -*-
3
+ # vi: set ft=ruby :
4
+
5
+ Vagrant.configure(2) do |config|
6
+ config.vm.box = 'ubuntu/trusty64'
7
+
8
+ config.vm.network :private_network, ip: '172.16.248.110'
9
+
10
+ config.vm.provider 'virtualbox' do |vb|
11
+ vb.memory = '2048'
12
+ end
13
+
14
+ config.vm.provision 'shell', privileged: false, inline: <<-SHELL
15
+ # Dependencies / Utilities
16
+ sudo apt-get update
17
+ sudo apt-get install -y screen curl git build-essential libssl-dev
18
+
19
+ # Ruby
20
+ # sudo apt-get install -y ruby2.3 ruby2.3-dev
21
+ if [ ! -f /home/vagrant/.rvm/scripts/rvm ]
22
+ then
23
+ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
24
+ \\curl -sSL https://get.rvm.io | bash
25
+ fi
26
+ source /home/vagrant/.rvm/scripts/rvm
27
+
28
+ # Ruby and it's Gems
29
+ cd /vagrant
30
+ rvm use $(cat .ruby-version) --install
31
+ gem install bundler --no-rdoc --no-ri
32
+ bundle install
33
+
34
+ # Node
35
+ # if [ ! -f /home/vagrant/.nvm/nvm.sh ]
36
+ # then
37
+ # \\curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
38
+ # fi
39
+ # export NVM_DIR="/home/vagrant/.nvm"
40
+ # [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
41
+
42
+ # # Node and it's packages
43
+ # nvm install `cat .nvmrc`
44
+ # npm install --no-bin-links
45
+ SHELL
46
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'proxes'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start