proxes 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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