proxes 0.7.1 → 0.8.0

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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1 -1
  4. data/.travis.yml +0 -3
  5. data/Gemfile.ci +5 -2
  6. data/README.md +12 -9
  7. data/Rakefile +10 -5
  8. data/Vagrantfile +1 -4
  9. data/config.ru +32 -24
  10. data/lib/{proxes → ditty/components}/proxes.rb +26 -33
  11. data/lib/proxes/controllers/permissions.rb +4 -3
  12. data/lib/proxes/models/permission.rb +7 -5
  13. data/lib/proxes/policies/permission_policy.rb +4 -4
  14. data/lib/proxes/policies/request/index_policy.rb +1 -1
  15. data/lib/proxes/policies/request_policy.rb +3 -4
  16. data/lib/proxes/policies/token_policy.rb +1 -1
  17. data/lib/proxes/request/cat.rb +2 -2
  18. data/lib/proxes/request/index.rb +2 -2
  19. data/lib/proxes/request.rb +1 -1
  20. data/lib/proxes/security.rb +10 -12
  21. data/lib/proxes/version.rb +1 -1
  22. data/lib/proxes.rb +1 -3
  23. data/migrate/20170207_base_tables.rb +2 -1
  24. data/migrate/20170208_audit_log.rb +1 -0
  25. data/proxes.gemspec +15 -14
  26. data/public/js/bundle.js +44683 -23940
  27. data/public/js/vendors.js +1 -0
  28. data/views/permissions/form.haml +2 -2
  29. data/views/permissions/index.haml +14 -9
  30. metadata +69 -108
  31. data/lib/proxes/container.rb +0 -135
  32. data/lib/proxes/controllers/app.rb +0 -80
  33. data/lib/proxes/controllers/application.rb +0 -80
  34. data/lib/proxes/controllers/audit_logs.rb +0 -44
  35. data/lib/proxes/controllers/component.rb +0 -167
  36. data/lib/proxes/controllers/roles.rb +0 -16
  37. data/lib/proxes/controllers/users.rb +0 -183
  38. data/lib/proxes/db.rb +0 -18
  39. data/lib/proxes/helpers/authentication.rb +0 -58
  40. data/lib/proxes/helpers/component.rb +0 -49
  41. data/lib/proxes/helpers/pundit.rb +0 -40
  42. data/lib/proxes/helpers/views.rb +0 -42
  43. data/lib/proxes/helpers/wisper.rb +0 -15
  44. data/lib/proxes/listener.rb +0 -23
  45. data/lib/proxes/models/audit_log.rb +0 -14
  46. data/lib/proxes/models/base.rb +0 -9
  47. data/lib/proxes/models/identity.rb +0 -70
  48. data/lib/proxes/models/role.rb +0 -17
  49. data/lib/proxes/models/user.rb +0 -64
  50. data/lib/proxes/omniauth.rb +0 -4
  51. data/lib/proxes/policies/application_policy.rb +0 -21
  52. data/lib/proxes/policies/audit_log_policy.rb +0 -41
  53. data/lib/proxes/policies/identity_policy.rb +0 -25
  54. data/lib/proxes/policies/role_policy.rb +0 -37
  55. data/lib/proxes/policies/user_policy.rb +0 -43
  56. data/lib/proxes/rake_tasks.rb +0 -219
  57. data/lib/proxes/seed.rb +0 -5
  58. data/lib/proxes/services/logger.rb +0 -51
  59. data/views/404.haml +0 -1
  60. data/views/audit_logs/index.haml +0 -26
  61. data/views/error.haml +0 -4
  62. data/views/getting_started.haml +0 -16
  63. data/views/identity/login.haml +0 -19
  64. data/views/identity/register.haml +0 -14
  65. data/views/index.haml +0 -3
  66. data/views/layout.haml +0 -58
  67. data/views/partials/delete_form.haml +0 -4
  68. data/views/partials/form_control.haml +0 -20
  69. data/views/partials/navbar.haml +0 -25
  70. data/views/partials/notifications.haml +0 -24
  71. data/views/partials/pager.haml +0 -12
  72. data/views/partials/sidebar.haml +0 -54
  73. data/views/roles/display.haml +0 -38
  74. data/views/roles/edit.haml +0 -11
  75. data/views/roles/form.haml +0 -1
  76. data/views/roles/index.haml +0 -20
  77. data/views/roles/new.haml +0 -10
  78. data/views/users/display.haml +0 -69
  79. data/views/users/edit.haml +0 -11
  80. data/views/users/identity.haml +0 -3
  81. data/views/users/index.haml +0 -23
  82. data/views/users/new.haml +0 -11
  83. data/views/users/profile.haml +0 -39
  84. data/views/users/user.haml +0 -3
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'wisper'
4
- require 'proxes/request'
5
-
6
- module ProxES
7
- module Helpers
8
- module Wisper
9
- def log_action(action, args = {})
10
- args[:user] ||= current_user
11
- broadcast(action, args)
12
- end
13
- end
14
- end
15
- end
@@ -1,23 +0,0 @@
1
- require 'wisper'
2
-
3
- module ProxES
4
- class Listener
5
- def initialize
6
- @mutex = Mutex.new
7
- end
8
-
9
- def method_missing(method, *args)
10
- vals = { action: method }
11
- return unless args[0].is_a? Hash
12
- vals[:user] = args[0][:user] if args[0] && args[0].key?(:user)
13
- vals[:details] = args[0][:details] if args[0] && args[0].key?(:details)
14
- @mutex.synchronize { AuditLog.create vals }
15
- end
16
-
17
- def respond_to_missing?(_method, _include_private = false)
18
- true
19
- end
20
- end
21
- end
22
-
23
- Wisper.subscribe(ProxES::Listener.new)
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'proxes/models/base'
4
-
5
- module ProxES
6
- class AuditLog < Sequel::Model
7
- include ::ProxES::Base
8
- many_to_one :user
9
-
10
- def validate
11
- validates_presence [:action]
12
- end
13
- end
14
- end
@@ -1,9 +0,0 @@
1
- require 'sequel'
2
-
3
- module ProxES
4
- module Base
5
- def for_json
6
- values
7
- end
8
- end
9
- end
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bcrypt'
4
- require 'proxes/models/base'
5
- require 'omniauth-identity'
6
- require 'active_support'
7
- require 'active_support/core_ext/object/blank'
8
-
9
- module ProxES
10
- class Identity < Sequel::Model
11
- include ::ProxES::Base
12
- many_to_one :user
13
-
14
- attr_accessor :password, :password_confirmation
15
-
16
- # OmniAuth Related
17
- include OmniAuth::Identity::Model
18
-
19
- def self.locate(conditions)
20
- where(conditions).first
21
- end
22
-
23
- def authenticate(unencrypted)
24
- self if ::BCrypt::Password.new(crypted_password) == unencrypted
25
- end
26
-
27
- def persisted?
28
- !new? && @destroyed != true
29
- end
30
-
31
- # Return whatever we want to pass to the omniauth hash here
32
- def info
33
- {
34
- email: username
35
- }
36
- end
37
-
38
- # Validation
39
- def validate
40
- validates_presence :username
41
- unless username.blank?
42
- validates_unique :username
43
- validates_format(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :username)
44
- end
45
-
46
- if password_required
47
- validates_presence :password
48
- validates_presence :password_confirmation
49
- validates_min_length 8, :password
50
- end
51
-
52
- errors.add(:password_confirmation, 'must match password') if !password.blank? && password != password_confirmation
53
- end
54
-
55
- # Callbacks
56
- def before_save
57
- encrypt_password unless password == '' || password.nil?
58
- end
59
-
60
- private
61
-
62
- def encrypt_password
63
- self.crypted_password = ::BCrypt::Password.create(password)
64
- end
65
-
66
- def password_required
67
- crypted_password.blank? || !password.blank?
68
- end
69
- end
70
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'proxes/models/base'
4
-
5
- module ProxES
6
- class Role < Sequel::Model
7
- include ::ProxES::Base
8
-
9
- many_to_many :users
10
- one_to_many :permissions
11
-
12
- def validate
13
- validates_presence [:name]
14
- validates_unique [:name]
15
- end
16
- end
17
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'proxes/models/base'
4
- require 'digest/md5'
5
- require 'active_support'
6
- require 'active_support/core_ext/object/blank'
7
-
8
- # Why not store this in Elasticsearch?
9
- module ProxES
10
- class User < Sequel::Model
11
- include ::ProxES::Base
12
-
13
- one_to_many :identity
14
- many_to_many :roles
15
- one_to_many :permissions
16
- one_to_many :audit_logs
17
-
18
- def role?(check)
19
- !roles_dataset.first(name: check).nil?
20
- end
21
-
22
- def method_missing(method_sym, *arguments, &block)
23
- if method_sym.to_s[-1] == '?'
24
- role?(method_sym[0..-2])
25
- else
26
- super
27
- end
28
- end
29
-
30
- def respond_to_missing?(name, _include_private = false)
31
- name[-1] == '?'
32
- end
33
-
34
- def gravatar
35
- hash = Digest::MD5.hexdigest(email.downcase)
36
- "https://www.gravatar.com/avatar/#{hash}"
37
- end
38
-
39
- def validate
40
- validates_presence :email
41
- return if email.blank?
42
- validates_unique :email
43
- validates_format(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :email)
44
- end
45
-
46
- # Add the basic roles and identity
47
- def after_create
48
- check_roles
49
- end
50
-
51
- def check_roles
52
- return if role?('anonymous')
53
- add_role Role.find_or_create(name: 'user') unless role?('user')
54
- end
55
-
56
- def index_prefix
57
- email
58
- end
59
-
60
- def username
61
- identity_dataset.first.username
62
- end
63
- end
64
- end
@@ -1,4 +0,0 @@
1
- require 'omniauth'
2
- require 'omniauth-identity'
3
- require 'proxes/models/identity'
4
- require 'proxes/controllers/app'
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ProxES
4
- class ApplicationPolicy
5
- attr_reader :user, :record
6
-
7
- def initialize(user, record)
8
- @user = user
9
- @record = record
10
- end
11
-
12
- class Scope
13
- attr_reader :user, :scope
14
-
15
- def initialize(user, scope)
16
- @user = user
17
- @scope = scope
18
- end
19
- end
20
- end
21
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'proxes/policies/application_policy'
4
-
5
- module ProxES
6
- class AuditLogPolicy < ApplicationPolicy
7
- def create?
8
- user && user.super_admin?
9
- end
10
-
11
- def list?
12
- create?
13
- end
14
-
15
- def read?
16
- create?
17
- end
18
-
19
- def update?
20
- read?
21
- end
22
-
23
- def delete?
24
- create?
25
- end
26
-
27
- def permitted_attributes
28
- [:action, :details]
29
- end
30
-
31
- class Scope < ApplicationPolicy::Scope
32
- def resolve
33
- if user && user.super_admin?
34
- scope
35
- else
36
- scope.where(id: -1)
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'application_policy'
4
-
5
- module ProxES
6
- class IdentityPolicy < ApplicationPolicy
7
- def register?
8
- true
9
- end
10
-
11
- def permitted_attributes
12
- [:username, :password, :password_confirmation]
13
- end
14
-
15
- class Scope < ApplicationPolicy::Scope
16
- def resolve
17
- if user.super_admin?
18
- scope.all
19
- else
20
- []
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'proxes/policies/application_policy'
4
-
5
- module ProxES
6
- class RolePolicy < ApplicationPolicy
7
- def create?
8
- user && user.super_admin?
9
- end
10
-
11
- def list?
12
- create?
13
- end
14
-
15
- def read?
16
- create?
17
- end
18
-
19
- def update?
20
- read?
21
- end
22
-
23
- def delete?
24
- create?
25
- end
26
-
27
- def permitted_attributes
28
- [:name]
29
- end
30
-
31
- class Scope < ApplicationPolicy::Scope
32
- def resolve
33
- user && user.super_admin? ? scope : scope.where(id: -1)
34
- end
35
- end
36
- end
37
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'proxes/policies/application_policy'
4
-
5
- module ProxES
6
- class UserPolicy < ApplicationPolicy
7
- def create?
8
- user && user.super_admin?
9
- end
10
-
11
- def list?
12
- create?
13
- end
14
-
15
- def read?
16
- user && (record.id == user.id || user.super_admin?)
17
- end
18
-
19
- def update?
20
- read?
21
- end
22
-
23
- def delete?
24
- create?
25
- end
26
-
27
- def register?
28
- true
29
- end
30
-
31
- def permitted_attributes
32
- attribs = [:email, :name, :surname]
33
- attribs << :role_id if user.super_admin?
34
- attribs
35
- end
36
-
37
- class Scope < ApplicationPolicy::Scope
38
- def resolve
39
- user && user.super_admin? ? scope : scope.where(id: user.id)
40
- end
41
- end
42
- end
43
- end
@@ -1,219 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rake'
4
- require 'rake/tasklib'
5
- require 'highline'
6
- require 'yaml'
7
-
8
- module ProxES
9
- class Tasks < ::Rake::TaskLib
10
- include ::Rake::DSL if defined?(::Rake::DSL)
11
-
12
- CONFIG_PATH = File.expand_path('./config/config.yml')
13
-
14
- POSTGRES_PACKAGES = [
15
- 'postgresql-common',
16
- 'postgresql-9.5',
17
- 'postgresql-client-9.5',
18
- 'postgresql-contrib-9.5',
19
- 'postgresql-9.5-plv8'
20
- ].freeze
21
-
22
- def install_tasks
23
- namespace :proxes do
24
- task :config do
25
- cli = HighLine.new
26
-
27
- config = File.file?(CONFIG_PATH) ? YAML.load_file(CONFIG_PATH) : {}
28
- config['install_folder'] = cli.ask('To which folder should we install', String) do |q|
29
- q.default = config['install_folder'] || File.expand_path('~/proxes')
30
- end.to_s
31
-
32
- config['proxes_hostname'] = cli.ask('ProxES Hostname?', String).to_s
33
-
34
- # Port Config
35
- config['web_port'] = cli.ask('HTTP Port? [80]', Integer) { |q| q.default = config['web_port'] || 80 }.to_i
36
- config['https_port'] = cli.ask('SSL Port? [443]', Integer) { |q| q.default = config['https_port'] || 443 }.to_i
37
-
38
- # Certificate
39
- config['ssl_key_path'] = cli.ask('Path to SSL key', String) { |q| q.default = config['ssl_key_path'] }.to_s
40
- config['ssl_cert_path'] = cli.ask('Path to SSL certificate', String) { |q| q.default = config['ssl_cert_path'] }.to_s
41
-
42
- config['redis_url'] = cli.ask('Redis URL', String) do |q|
43
- q.default = config['redis_url'] || 'redis://localhost:6379'
44
- end.to_s
45
- config['elasticsearch_url'] = cli.ask('Elasticsearch URL', String) do |q|
46
- q.default = config['elasticsearch_url'] || 'http://localhost:9200'
47
- end.to_s
48
-
49
- # Database Setup
50
- config['db_name'] = cli.ask('Database Name', String) { |q| q.default = 'proxes' }.to_s
51
- config['db_username'] = cli.ask('Database Username', String) { |q| q.default = 'proxes' }.to_s
52
- config['db_password'] = cli.ask('Database Password', String).to_s
53
- config['database_url'] = cli.ask('Database URL', String) do |q|
54
- q.default = config['database_url'] || "postgres://#{config['db_username']}:#{config['db_password']}@localhost:5432/#{config['db_name']}"
55
- end.to_s
56
-
57
- File.open(CONFIG_PATH, 'w') { |f| f.write config.to_yaml }
58
- end
59
-
60
- task :setup_redhat do
61
- cli = HighLine.new
62
- config = YAML.load_file(CONFIG_PATH)
63
- # Redis
64
- if cli.ask('Install Redis Server? (y/n)') { |q| q.in = ['y', 'n']; q.default = ENV['REDIS_URL'].nil? ? 'y' : 'n' } == 'y'
65
- system 'sudo yum install epel-release'
66
- system 'sudo yum update'
67
- system 'sudo yum install -y redis'
68
- system 'sudo systemctl start redis'
69
- system 'sudo systemctl enable redis'
70
- end
71
-
72
- # Postgres
73
- if cli.ask('Install PostgreSQL Server? (y/n)') { |q| q.in = ['y', 'n']; q.default = ENV['REDIS_URL'].nil? ? 'y' : 'n'} == 'y'
74
- system 'sudo yum install -y postgresql-server postgresql-contrib'
75
- end
76
-
77
- if cli.ask('Setup the PostgreSQL User & DB? (y/n)') { |q| q.in = ['y', 'n']; q.default = 'y'} == 'y'
78
- system "sudo -u postgres createuser #{config['db_username']}"
79
- system "sudo -u postgres createdb -O #{config['db_username']} #{config['db_name']}"
80
- system "sudo -u postgres psql -c \"alter user #{config['db_username']} with encrypted password '#{config['db_password']}';\""
81
- system "sudo -u postgres psql -c \"grant all privileges on database #{config['db_name']} to #{config['db_username']};\""
82
- end
83
-
84
- # Certs
85
- if cli.ask('Get a cert through Lets Encrypt? (y/n)') { |q| q.in = ['y', 'n']; q.default = 'y'} == 'y'
86
- system 'sudo yum install epel-release'
87
- system 'sudo apt-get update'
88
- system 'sudo apt-get install -y certbot'
89
- system "sudo certbot -n certonly --standalone -d #{config['proxes_hostname']}"
90
- config['ssl_key_path'] = "/etc/letsencrypt/live/#{config['proxes_hostname']}/privkey.pem"
91
- config['ssl_cert_path'] = "/etc/letsencrypt/live/#{config['proxes_hostname']}/fullchain.pem"
92
- end
93
-
94
- # TODO: Write the .env file
95
-
96
- File.open(CONFIG_PATH, 'w') { |f| f.write config.to_yaml }
97
- end
98
-
99
- task :setup_debian do
100
- cli = HighLine.new
101
- config = YAML.load_file(CONFIG_PATH)
102
-
103
- # Redis
104
- if cli.ask('Install Redis Server? (y/n)') { |q| q.in = ['y', 'n']; q.default = ENV['REDIS_URL'].nil? ? 'y' : 'n' } == 'y'
105
- system 'sudo apt-get install -y redis-server'
106
- end
107
-
108
- # Postgres
109
- if cli.ask('Install PostgreSQL Server? (y/n)') { |q| q.in = ['y', 'n']; q.default = ENV['REDIS_URL'].nil? ? 'y' : 'n'} == 'y'
110
- system 'sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ACCC4CF8'
111
- unless File.file? '/etc/apt/sources.list.d/pgdg.list'
112
- system 'sudo sh -c \'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list\''
113
- end
114
- system 'sudo apt-get update'
115
- system 'sudo apt-get install -y ' + POSTGRES_PACKAGES.join(' ')
116
- end
117
-
118
- if cli.ask('Setup the PostgreSQL User & DB? (y/n)') { |q| q.in = ['y', 'n']; q.default = 'y'} == 'y'
119
- system "sudo -u postgres createuser #{config['db_username']}"
120
- system "sudo -u postgres createdb -O #{config['db_username']} #{config['db_name']}"
121
- system "sudo -u postgres psql -c \"alter user #{config['db_username']} with encrypted password '#{config['db_password']}';\""
122
- system "sudo -u postgres psql -c \"grant all privileges on database #{config['db_name']} to #{config['db_username']};\""
123
- end
124
-
125
- # Certs
126
- if cli.ask('Get a cert through Lets Encrypt? (y/n)') { |q| q.in = ['y', 'n']; q.default = 'y'} == 'y'
127
- system 'sudo add-apt-repository ppa:certbot/certbot'
128
- system 'sudo apt-get update'
129
- system 'sudo apt-get install -y certbot'
130
- system "sudo certbot -n certonly --standalone -d #{config['proxes_hostname']}"
131
- config['ssl_key_path'] = "/etc/letsencrypt/live/#{config['proxes_hostname']}/privkey.pem"
132
- config['ssl_cert_path'] = "/etc/letsencrypt/live/#{config['proxes_hostname']}/fullchain.pem"
133
- end
134
-
135
- # TODO: Write the .env file
136
-
137
- File.open(CONFIG_PATH, 'w') { |f| f.write config.to_yaml }
138
- end
139
-
140
- desc 'Generate the needed tokens'
141
- task :generate_tokens do
142
- puts 'Generating the ProxES tokens'
143
- require 'securerandom'
144
- File.write('.session_secret', SecureRandom.random_bytes(40)) unless File.file?('.session_secret')
145
- File.write('.token_secret', SecureRandom.random_bytes(40)) unless File.file?('.token_secret')
146
- end
147
-
148
- desc 'Seed the ProxES database'
149
- task :seed do
150
- puts 'Seeding the ProxES database'
151
- require 'proxes/seed'
152
- end
153
-
154
- desc 'Prepare ProxES migrations'
155
- task :prep do
156
- puts 'Prepare the ProxES folders'
157
- Dir.mkdir 'pids' unless File.exist?('pids')
158
-
159
- puts 'Preparing the ProxES public folder'
160
- ::ProxES::Container.public.each do |path|
161
- FileUtils.cp_r "#{path}/.", 'public'
162
- end
163
-
164
- puts 'Preparing the ProxES migrations folder'
165
- Dir.mkdir 'migrations' unless File.exist?('migrations')
166
- ::ProxES::Container.migrations.each do |path|
167
- FileUtils.cp_r "#{path}/.", 'migrations'
168
- end
169
- end
170
-
171
- desc 'Migrate ProxES database to latest version'
172
- task :migrate do
173
- puts 'Running the ProxES migrations'
174
- Rake::Task['proxes:migrate:up'].invoke
175
- end
176
-
177
- namespace :migrate do
178
- require_relative './db' if ENV['DATABASE_URL']
179
- folder = 'migrations'
180
-
181
- desc 'Check if the migration is current'
182
- task :check do
183
- require 'sequel'
184
- puts 'Running ProxES Migrations check'
185
- ::Sequel.extension :migration
186
- ::Sequel::Migrator.check_current(::DB, folder)
187
- end
188
-
189
- desc 'Migrate ProxES database to latest version'
190
- task :up do
191
- require 'sequel'
192
- puts 'Running ProxES Migrations up'
193
- ::Sequel.extension :migration
194
- ::Sequel::Migrator.apply(::DB, folder)
195
- end
196
-
197
- desc 'Roll back the ProxES database'
198
- task :down do
199
- require 'sequel'
200
- puts 'Running ProxES Migrations down'
201
- ::Sequel.extension :migration
202
- ::Sequel::Migrator.apply(::DB, folder, 0)
203
- end
204
-
205
- desc 'Reset the ProxES database'
206
- task :bounce do
207
- require 'sequel'
208
- puts 'Running ProxES Migrations bounce'
209
- ::Sequel.extension :migration
210
- ::Sequel::Migrator.apply(::DB, folder, 0)
211
- ::Sequel::Migrator.apply(::DB, folder)
212
- end
213
- end
214
- end
215
- end
216
- end
217
- end
218
-
219
- ProxES::Tasks.new.install_tasks
data/lib/proxes/seed.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'proxes/db'
2
- require 'proxes/models/role'
3
- require 'proxes/models/permission'
4
-
5
- ::ProxES::Container.seeders.each(&:call)
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
- require 'yaml'
5
- require 'singleton'
6
- require 'active_support/inflector'
7
- require 'proxes/loggers/elasticsearch'
8
-
9
- # ProxES::Services::Logger.instance
10
-
11
- module ProxES
12
- module Services
13
- class Logger
14
- include Singleton
15
-
16
- CONFIG = './config/logger.yml'.freeze
17
- attr_reader :loggers
18
-
19
- def initialize
20
- @loggers = []
21
- config.each do |values|
22
- klass = values['class'].constantize
23
- opts = values['options'] || nil
24
- logger = klass.new(opts)
25
- if values['level']
26
- logger.level = klass.const_get(values['level'].to_sym)
27
- end
28
- @loggers << logger
29
- end
30
- end
31
-
32
- def method_missing(method, *args, &block)
33
- loggers.each { |logger| logger.send(method, *args, &block) }
34
- end
35
-
36
- def respond_to_missing?(method, _include_private = false)
37
- loggers.any? { |logger| logger.respond_to?(method) }
38
- end
39
-
40
- private
41
-
42
- def config
43
- @config ||= File.exist?(CONFIG) ? YAML.load_file(CONFIG) : default
44
- end
45
-
46
- def default
47
- [{ 'name' => 'default', 'class' => 'Logger' }]
48
- end
49
- end
50
- end
51
- end
data/views/404.haml DELETED
@@ -1 +0,0 @@
1
- %h2 4 oh 4