anoubis 1.0.1 → 1.0.10
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.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/app/controllers/anoubis/application_controller.rb +4 -0
- data/app/controllers/anoubis/core/index/actions.rb +1 -1
- data/app/controllers/anoubis/core/index_controller.rb +3 -3
- data/app/controllers/anoubis/data/actions.rb +947 -0
- data/app/controllers/anoubis/data/callbacks.rb +66 -0
- data/app/controllers/anoubis/data/convert.rb +422 -0
- data/app/controllers/anoubis/data/defaults.rb +215 -0
- data/app/controllers/anoubis/data/get.rb +529 -0
- data/app/controllers/anoubis/data/load.rb +87 -0
- data/app/controllers/anoubis/data/set.rb +47 -0
- data/app/controllers/anoubis/data/setup.rb +102 -0
- data/app/controllers/anoubis/data_controller.rb +21 -0
- data/app/controllers/anoubis/etc/field.rb +7 -0
- data/app/controllers/anoubis/output/basic.rb +1 -1
- data/app/controllers/anoubis/sso/client/index_controller.rb +2 -2
- data/app/controllers/anoubis/sso/server/login_controller.rb +5 -5
- data/app/controllers/anoubis/sso/server/user_controller.rb +2 -2
- data/app/controllers/anoubis/tenant/index_controller.rb +3 -3
- data/app/models/anoubis/application_record.rb +141 -0
- data/app/services/anoubis/log_service.rb +97 -0
- data/app/services/anoubis/request_service.rb +134 -0
- data/config/locales/en.yml +20 -6
- data/config/locales/ru.yml +25 -13
- data/config/routes.rb +19 -19
- data/lib/anoubis/version.rb +1 -1
- metadata +32 -33
- data/app/controllers/anoubis/core/data/actions.rb +0 -962
- data/app/controllers/anoubis/core/data/callbacks.rb +0 -68
- data/app/controllers/anoubis/core/data/convert.rb +0 -407
- data/app/controllers/anoubis/core/data/defaults.rb +0 -217
- data/app/controllers/anoubis/core/data/get.rb +0 -531
- data/app/controllers/anoubis/core/data/load.rb +0 -89
- data/app/controllers/anoubis/core/data/set.rb +0 -49
- data/app/controllers/anoubis/core/data/setup.rb +0 -104
- data/app/controllers/anoubis/core/data_controller.rb +0 -28
- data/app/controllers/anoubis/sso/client/data/actions.rb +0 -5
- data/app/controllers/anoubis/sso/client/data/callbacks.rb +0 -5
- data/app/controllers/anoubis/sso/client/data/convert.rb +0 -5
- data/app/controllers/anoubis/sso/client/data/defaults.rb +0 -5
- data/app/controllers/anoubis/sso/client/data/get.rb +0 -5
- data/app/controllers/anoubis/sso/client/data/load.rb +0 -26
- data/app/controllers/anoubis/sso/client/data/set.rb +0 -5
- data/app/controllers/anoubis/sso/client/data/setup.rb +0 -5
- data/app/controllers/anoubis/sso/client/data_controller.rb +0 -21
- data/app/controllers/anoubis/tenant/data/actions.rb +0 -11
- data/app/controllers/anoubis/tenant/data/callbacks.rb +0 -11
- data/app/controllers/anoubis/tenant/data/convert.rb +0 -11
- data/app/controllers/anoubis/tenant/data/defaults.rb +0 -11
- data/app/controllers/anoubis/tenant/data/get.rb +0 -11
- data/app/controllers/anoubis/tenant/data/load.rb +0 -52
- data/app/controllers/anoubis/tenant/data/set.rb +0 -11
- data/app/controllers/anoubis/tenant/data/setup.rb +0 -11
- data/app/controllers/anoubis/tenant/data_controller.rb +0 -28
- data/app/controllers/anoubis/tenants_controller.rb +0 -7
- data/app/controllers/anoubis/users_controller.rb +0 -7
- data/app/mailers/anoubis/application_mailer.rb +0 -8
@@ -0,0 +1,102 @@
|
|
1
|
+
module Anoubis
|
2
|
+
##
|
3
|
+
# Module consists all procedures and functons of {DataController}
|
4
|
+
module Data
|
5
|
+
##
|
6
|
+
# Module setups system parameters for {DataController}
|
7
|
+
module Setup
|
8
|
+
##
|
9
|
+
# Setups frame data information. It loads menu data, sets titles and tabs of the frame.
|
10
|
+
def setup_frame
|
11
|
+
self.load_menu_data
|
12
|
+
if self.etc.menu
|
13
|
+
self.get_parent_data
|
14
|
+
if self.etc.data.parent
|
15
|
+
self.output.title = self.etc.menu.page_title.sub '%{title}', self.etc.data.parent.sys_title.to_s
|
16
|
+
else
|
17
|
+
self.output.title = self.etc.menu.page_title
|
18
|
+
end
|
19
|
+
self.output.short = self.etc.menu.short_title
|
20
|
+
self.output.mode = self.etc.menu.mode
|
21
|
+
self.output.access = self.etc.menu.access
|
22
|
+
end
|
23
|
+
tabs = self.tabs
|
24
|
+
tabs.each do |key, item|
|
25
|
+
item = self.get_tab key, item
|
26
|
+
self.output.addTab(item)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Setups order for current tab. Parameters is set into {Anoubis::Etc::TabItem#sort self.etc.tab.sort} and
|
32
|
+
# {Anoubis::Etc::TabItem#order self.etc.tab.order} attributes.
|
33
|
+
def setup_order
|
34
|
+
sort = nil
|
35
|
+
first = nil
|
36
|
+
self.etc.data.fields.each do |key, field|
|
37
|
+
if field.order
|
38
|
+
first = key if !first
|
39
|
+
first = key if field.order.default
|
40
|
+
if params.key? :sort
|
41
|
+
sort = key if params[:sort] == key.to_s
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
sort = first if !sort
|
46
|
+
if sort
|
47
|
+
self.etc.tab.sort = sort.to_s
|
48
|
+
self.etc.tab.order = self.etc.data.fields[sort].order.order
|
49
|
+
if params.key? :order
|
50
|
+
self.etc.tab.order = :desc if params[:order] == 'desc'
|
51
|
+
self.etc.tab.order = :asc if params[:order] == 'asc'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# @!group Block of fields setup functions
|
58
|
+
|
59
|
+
##
|
60
|
+
# Setups defined fields and places it into attribute {Anoubis::Etc::Data#fields self.etc.data.fields}
|
61
|
+
def setup_fields
|
62
|
+
if !self.etc.data.fields
|
63
|
+
self.etc.data.fields = {}
|
64
|
+
|
65
|
+
fields = self.fields
|
66
|
+
|
67
|
+
fields.each_key do |key|
|
68
|
+
if fields[key].key? :edit
|
69
|
+
if self.menu_access fields[key][:edit], false
|
70
|
+
fields[key][:editable] = fields[key][:edit]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
self.etc.data.fields[key] = Anoubis::Etc::Field.new(key, self.get_model, fields[key].merge(action: self.etc.action))
|
74
|
+
end
|
75
|
+
self.setup_order if %w[index export].include? self.etc.action
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# Setups additional parameters for table field with type 'datetime'
|
81
|
+
# Resulting data placed in {Etc::Data#fields self.etc.data.fields} (Hash)
|
82
|
+
# @param key [Symbol] key of table field.
|
83
|
+
def setup_fields_datetime (key)
|
84
|
+
self.etc.data.fields[key][:format] = 'full' if !self.etc.data.fields[key].has_key? :format
|
85
|
+
self.etc.data.fields[key][:format] = 'full' if !['full', 'month', 'date', 'datetime'].include? self.etc.data.fields[key][:format]
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
##
|
91
|
+
# Setups additional parameters for table field with type 'float'
|
92
|
+
# Resulting data placed in {Etc::Data#fields self.etc.data.fields} (Hash)
|
93
|
+
# @param key [Symbol] key of table field.
|
94
|
+
def setup_fields_float (key)
|
95
|
+
self.etc.data.fields[key][:precision] = 2 if !self.etc.data.fields[key][:precision]
|
96
|
+
self.etc.data.fields[key][:point] = ',' if !self.etc.data.fields[key][:point]
|
97
|
+
self.etc.data.fields[key][:separator] = '' if !self.etc.data.fields[key][:separator]
|
98
|
+
end
|
99
|
+
# @!endgroup
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_dependency "anoubis/data/actions"
|
2
|
+
require_dependency "anoubis/data/load"
|
3
|
+
require_dependency "anoubis/data/get"
|
4
|
+
require_dependency "anoubis/data/set"
|
5
|
+
require_dependency "anoubis/data/setup"
|
6
|
+
require_dependency "anoubis/data/defaults"
|
7
|
+
require_dependency "anoubis/data/convert"
|
8
|
+
require_dependency "anoubis/data/callbacks"
|
9
|
+
|
10
|
+
##
|
11
|
+
# Main data controller class
|
12
|
+
class Anoubis::DataController < Anoubis::ApplicationController
|
13
|
+
include Anoubis::Data::Actions
|
14
|
+
include Anoubis::Data::Load
|
15
|
+
include Anoubis::Data::Get
|
16
|
+
include Anoubis::Data::Set
|
17
|
+
include Anoubis::Data::Setup
|
18
|
+
include Anoubis::Data::Defaults
|
19
|
+
include Anoubis::Data::Convert
|
20
|
+
include Anoubis::Data::Callbacks
|
21
|
+
end
|
@@ -152,6 +152,13 @@ module Anoubis
|
|
152
152
|
|
153
153
|
end
|
154
154
|
|
155
|
+
##
|
156
|
+
# Initialize additional parameters for {Anoubis::Etc::Field#type 'hash' field type} for controller actions.
|
157
|
+
# @param options [Hash] field's initial options
|
158
|
+
def initialize_hash (options)
|
159
|
+
|
160
|
+
end
|
161
|
+
|
155
162
|
##
|
156
163
|
# Initialize additional parameters for {Anoubis::Etc::Field#type 'number' field type} for controller actions.
|
157
164
|
# @param options [Hash] field's initial options
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require_dependency "
|
2
|
-
require_dependency "
|
1
|
+
require_dependency "anoubis/sso/client/index/actions"
|
2
|
+
require_dependency "anoubis/sso/client/index/callbacks"
|
3
3
|
|
4
4
|
class Anoubis::Sso::Client::IndexController < Anoubis::Sso::Client::ApplicationController
|
5
5
|
include Anoubis::Sso::Client::Index::Actions
|
@@ -23,7 +23,7 @@ class Anoubis::Sso::Server::LoginController < Anoubis::Sso::Server::ApplicationC
|
|
23
23
|
|
24
24
|
result = {
|
25
25
|
result: 0,
|
26
|
-
message: I18n.t('
|
26
|
+
message: I18n.t('anoubis.success')
|
27
27
|
}
|
28
28
|
code = 200
|
29
29
|
|
@@ -107,7 +107,7 @@ class Anoubis::Sso::Server::LoginController < Anoubis::Sso::Server::ApplicationC
|
|
107
107
|
def create
|
108
108
|
result = {
|
109
109
|
result: 0,
|
110
|
-
message: I18n.t('
|
110
|
+
message: I18n.t('anoubis.success')
|
111
111
|
}
|
112
112
|
code = 200
|
113
113
|
|
@@ -155,7 +155,7 @@ class Anoubis::Sso::Server::LoginController < Anoubis::Sso::Server::ApplicationC
|
|
155
155
|
def update
|
156
156
|
result = {
|
157
157
|
result: 0,
|
158
|
-
message: I18n.t('
|
158
|
+
message: I18n.t('anoubis.success')
|
159
159
|
}
|
160
160
|
|
161
161
|
if self.system
|
@@ -213,7 +213,7 @@ class Anoubis::Sso::Server::LoginController < Anoubis::Sso::Server::ApplicationC
|
|
213
213
|
def destroy
|
214
214
|
result = {
|
215
215
|
result: 0,
|
216
|
-
message: I18n.t('
|
216
|
+
message: I18n.t('anoubis.success')
|
217
217
|
}
|
218
218
|
|
219
219
|
begin
|
@@ -263,7 +263,7 @@ class Anoubis::Sso::Server::LoginController < Anoubis::Sso::Server::ApplicationC
|
|
263
263
|
def show
|
264
264
|
result = {
|
265
265
|
result: 0,
|
266
|
-
message: I18n.t('
|
266
|
+
message: I18n.t('anoubis.success')
|
267
267
|
}
|
268
268
|
|
269
269
|
if self.system
|
@@ -6,7 +6,7 @@ class Anoubis::Sso::Server::UserController < Anoubis::Sso::Server::ApplicationCo
|
|
6
6
|
def show
|
7
7
|
result = {
|
8
8
|
result: 0,
|
9
|
-
message: I18n.t('
|
9
|
+
message: I18n.t('anoubis.success')
|
10
10
|
}
|
11
11
|
code = 200
|
12
12
|
|
@@ -25,7 +25,7 @@ class Anoubis::Sso::Server::UserController < Anoubis::Sso::Server::ApplicationCo
|
|
25
25
|
def update
|
26
26
|
result = {
|
27
27
|
result: 0,
|
28
|
-
message: I18n.t('
|
28
|
+
message: I18n.t('anoubis.success')
|
29
29
|
}
|
30
30
|
code = 200
|
31
31
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require_dependency "
|
2
|
-
require_dependency "
|
3
|
-
require_dependency "
|
1
|
+
require_dependency "anoubis/tenant/application_controller"
|
2
|
+
require_dependency "anoubis/tenant/index/actions"
|
3
|
+
require_dependency "anoubis/tenant/index/callbacks"
|
4
4
|
|
5
5
|
module Anoubis
|
6
6
|
##
|
@@ -2,9 +2,29 @@
|
|
2
2
|
class Anoubis::ApplicationRecord < ActiveRecord::Base
|
3
3
|
self.abstract_class = true
|
4
4
|
|
5
|
+
after_initialize :initialize_anubis_application_record
|
6
|
+
|
5
7
|
## Redis database variable
|
6
8
|
attr_accessor :redis
|
7
9
|
|
10
|
+
# @!attribute [rw] need_refresh
|
11
|
+
# @return [Boolean] defines when table representation data should be updated even after simple update
|
12
|
+
attr_accessor :need_refresh
|
13
|
+
|
14
|
+
##
|
15
|
+
# Fires after ApplicationRecord initialized for define default values
|
16
|
+
def initialize_anubis_application_record
|
17
|
+
self.need_refresh = false
|
18
|
+
|
19
|
+
after_initialize_anubis_application_record
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# Fires after initialize default variables
|
24
|
+
def after_initialize_anubis_application_record
|
25
|
+
|
26
|
+
end
|
27
|
+
|
8
28
|
##
|
9
29
|
# Returns {https://github.com/redis/redis-rb Redis database} class
|
10
30
|
# @return [Class] {https://github.com/redis/redis-rb Redis} class reference
|
@@ -42,4 +62,125 @@ class Anoubis::ApplicationRecord < ActiveRecord::Base
|
|
42
62
|
end
|
43
63
|
return value + ':'
|
44
64
|
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# Return defined locale according by I18n
|
68
|
+
# @return [String] current locale
|
69
|
+
def current_locale
|
70
|
+
I18n.locale.to_s
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
# Returns {current_locale}. If current locale isn't set then returns {default_locale}.
|
75
|
+
# @return [String] current locale
|
76
|
+
def get_locale
|
77
|
+
if current_locale && current_locale != ''
|
78
|
+
return current_locale
|
79
|
+
end
|
80
|
+
|
81
|
+
default_locale
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# Default locale that setup in Rails.configuration.i18n.default_locale configuration parameter
|
86
|
+
# @return [String] default locale
|
87
|
+
def default_locale
|
88
|
+
Rails.configuration.i18n.default_locale.to_s
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# Returns localized field by identifier
|
93
|
+
# @param field [String] Field identifier
|
94
|
+
# @param used_locale [String | nil] Locale identifier (by default used {current_locale})
|
95
|
+
# @return [String] localized field
|
96
|
+
def get_locale_field(field, used_locale = nil)
|
97
|
+
field = field.to_s.to_sym
|
98
|
+
used_locale = current_locale.to_s unless used_locale
|
99
|
+
|
100
|
+
return '' unless self[field]
|
101
|
+
return self[field][used_locale] if self[field].key? used_locale
|
102
|
+
return '' unless self[field].key? default_locale.to_s
|
103
|
+
|
104
|
+
self[field][default_locale.to_s]
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# Sets localized data
|
109
|
+
# @param field [String] field identifier
|
110
|
+
# @param value [String] localized string
|
111
|
+
# @param used_locale [String | nil] Locale identifier (by default used {current_locale})
|
112
|
+
def set_locale_field(field, value, used_locale = nil)
|
113
|
+
field = field.to_s.to_sym
|
114
|
+
used_locale = current_locale.to_s unless used_locale
|
115
|
+
|
116
|
+
self[field] = {} unless self[field]
|
117
|
+
self[field][default_locale.to_s] = value unless self[field].key? default_locale.to_s
|
118
|
+
self[field][used_locale] = value
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
# Returns true if field has localized data
|
123
|
+
# @param field [String] Field identifier
|
124
|
+
# @param used_locale [String | nil] Locale identifier (by default used {current_locale})
|
125
|
+
# @return [Boolean] true if field has localized data
|
126
|
+
def is_field_localized(field, used_locale = nil)
|
127
|
+
field = field.to_s.to_sym
|
128
|
+
used_locale = current_locale.to_s unless used_locale
|
129
|
+
|
130
|
+
return false unless self[field]
|
131
|
+
return true if self[field].key? used_locale
|
132
|
+
|
133
|
+
false
|
134
|
+
end
|
135
|
+
|
136
|
+
##
|
137
|
+
# Checks if this record may be destroyed.
|
138
|
+
def can_destroy?
|
139
|
+
result = true
|
140
|
+
self.class.reflect_on_all_associations.all? do |assoc|
|
141
|
+
result = self.send(assoc.name).nil? if assoc.macro == :has_one
|
142
|
+
result = self.send(assoc.name).empty? if (assoc.macro == :has_many) && result
|
143
|
+
end
|
144
|
+
result
|
145
|
+
end
|
146
|
+
|
147
|
+
##
|
148
|
+
# Returns system title of table element
|
149
|
+
# @return [String] System title
|
150
|
+
def sys_title
|
151
|
+
id.to_s
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# Returns the ability to create new data. By default all items may be deleted. For another result
|
156
|
+
# procedure should be overridden.
|
157
|
+
# @param args [Hash] transferred parameters
|
158
|
+
# @option args [String] :controller Called controller identifier
|
159
|
+
# @option args [String] :tab Called controller tab element
|
160
|
+
# @return [Boolean] true if new data may be created.
|
161
|
+
def can_new(args = {})
|
162
|
+
true
|
163
|
+
end
|
164
|
+
|
165
|
+
##
|
166
|
+
# Returns the ability to edit the data. By default all items may be edited. For another result
|
167
|
+
# procedure should be overridden.
|
168
|
+
# @param args [Hash] transferred parameters
|
169
|
+
# @option args [String] :controller Called controller identifier
|
170
|
+
# @option args [String] :tab Called controller tab element
|
171
|
+
# @return [Boolean] true if data may be edited
|
172
|
+
def can_edit(args = {})
|
173
|
+
true
|
174
|
+
end
|
175
|
+
|
176
|
+
##
|
177
|
+
# Returns the ability to delete a data. By default all items may be deleted. For another result
|
178
|
+
# procedure should be overridden.
|
179
|
+
# @param args [Hash] transferred parameters
|
180
|
+
# @option args [String] :controller Called controller identifier
|
181
|
+
# @option args [String] :tab Called controller tab element
|
182
|
+
# @return [Boolean] true if data may be deleted
|
183
|
+
def can_delete(args = {})
|
184
|
+
true
|
185
|
+
end
|
45
186
|
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
##
|
2
|
+
# Graylog logging service
|
3
|
+
class Anoubis::LogService
|
4
|
+
# {https://www.rubydoc.info/gems/gelf/GELF/Notifier GELF::Notifier} service
|
5
|
+
attr_accessor :logger
|
6
|
+
# Hash of permanent parameters that added before sending data to Graylog server
|
7
|
+
attr_accessor :perm
|
8
|
+
|
9
|
+
##
|
10
|
+
# Returns Graylog server URL
|
11
|
+
# @return [String] Graylog server URL
|
12
|
+
def url
|
13
|
+
begin
|
14
|
+
value = Rails.configuration.graylog_server
|
15
|
+
rescue StandardError
|
16
|
+
value = '127.0.0.1'
|
17
|
+
end
|
18
|
+
|
19
|
+
value
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# Returns Graylog server port
|
24
|
+
# @return [String] Graylog server port
|
25
|
+
def port
|
26
|
+
begin
|
27
|
+
value = Rails.configuration.graylog_port
|
28
|
+
rescue StandardError
|
29
|
+
value = 12201
|
30
|
+
end
|
31
|
+
|
32
|
+
value
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# Returns Graylog facility identifier in input source
|
37
|
+
# @return [String] Graylog facility identifier
|
38
|
+
def facility
|
39
|
+
begin
|
40
|
+
value = Rails.configuration.graylog_facility
|
41
|
+
rescue StandardError
|
42
|
+
value = 'Graylog'
|
43
|
+
end
|
44
|
+
|
45
|
+
value
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Setups basic initialization parameters.
|
50
|
+
def initialize
|
51
|
+
self.logger = GELF::Notifier.new(url, port, 'WAN', { facility: facility })
|
52
|
+
logger.collect_file_and_line = false
|
53
|
+
logger.rescue_network_errors = true
|
54
|
+
self.perm = {}
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Send data to Graylog server
|
59
|
+
# @param text [String] Logged text data
|
60
|
+
# @param type [String] Log level ('debug', 'error', 'info', 'warn')
|
61
|
+
# @param object [Hash] Additional parameters for logged data
|
62
|
+
def log(text, type = 'info', object = nil)
|
63
|
+
type = 'info' unless %w[info warn error].include? type.downcase
|
64
|
+
loc = caller_locations(1, 1).first
|
65
|
+
|
66
|
+
data = {
|
67
|
+
short_message: text,
|
68
|
+
level: level(type),
|
69
|
+
line: loc.lineno,
|
70
|
+
file: loc.path
|
71
|
+
}
|
72
|
+
|
73
|
+
data.merge!(object) if object
|
74
|
+
data.merge!(self.perm)
|
75
|
+
logger.notify data
|
76
|
+
nil
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# Returns {https://www.rubydoc.info/github/graylog-labs/gelf-rb/GELF/Levels GELF::Levels} according by type
|
81
|
+
# @param type [String] Log level ('debug', 'error', 'info', 'warn')
|
82
|
+
# @return [GELF::Levels] GELF::Levels
|
83
|
+
def level(type)
|
84
|
+
case type
|
85
|
+
when 'debug'
|
86
|
+
return GELF::DEBUG
|
87
|
+
when 'info'
|
88
|
+
return GELF::INFO
|
89
|
+
when 'warn'
|
90
|
+
return GELF::WARN
|
91
|
+
when 'error'
|
92
|
+
return GELF::ERROR
|
93
|
+
end
|
94
|
+
|
95
|
+
GELF::UNKNOWN
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
##
|
2
|
+
# Request service
|
3
|
+
class Anoubis::RequestService
|
4
|
+
## Redis database variable
|
5
|
+
attr_accessor :redis
|
6
|
+
|
7
|
+
## Returns {https://github.com/redis/redis-rb Redis} prefix for storing cache data
|
8
|
+
attr_accessor :redis_prefix
|
9
|
+
|
10
|
+
## Log service {Anoubis::LogService}
|
11
|
+
attr_accessor :log
|
12
|
+
|
13
|
+
## Cookies data for current session
|
14
|
+
attr_accessor :cookies
|
15
|
+
|
16
|
+
##
|
17
|
+
# Setups basic initialization parameters.
|
18
|
+
# @param log [Anoubis::LogService] Log service
|
19
|
+
def initialize(log = nil)
|
20
|
+
self.redis = Redis.new
|
21
|
+
@cookies = nil
|
22
|
+
self.log = log ? log : Anoubis::LogService.new
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# Returns cookies data for current session
|
27
|
+
# @return [Hash] Cookies data
|
28
|
+
def cookies
|
29
|
+
return @cookies if @cookies
|
30
|
+
|
31
|
+
@cookies = redis.get cookie_path
|
32
|
+
if @cookies
|
33
|
+
begin
|
34
|
+
@cookies = JSON.parse(self.cookies, { symbolize_names: true })
|
35
|
+
rescue
|
36
|
+
@cookies = {}
|
37
|
+
end
|
38
|
+
else
|
39
|
+
@cookies = {}
|
40
|
+
end
|
41
|
+
|
42
|
+
@cookies
|
43
|
+
end
|
44
|
+
|
45
|
+
##
|
46
|
+
# Setups cookies data for current session
|
47
|
+
# @param data [Hash] Defined cookies parameters
|
48
|
+
def cookies=(data)
|
49
|
+
@cookies = data
|
50
|
+
store_cookies
|
51
|
+
end
|
52
|
+
|
53
|
+
##
|
54
|
+
# Returns redis path for storing cookies data
|
55
|
+
# @return [String] Redis storing path
|
56
|
+
def cookie_path
|
57
|
+
redis_prefix + 'cookies'
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# Store current cookies to {https://github.com/redis/redis-rb Redis} cache
|
62
|
+
def store_cookies
|
63
|
+
redis.set cookie_path, @cookies.to_json
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# Unzip {https://www.rubydoc.info/gems/rest-client/RestClient RestClient} response data if returned data is GZipped
|
68
|
+
# @param response [RestClient::RawResponse] Received {https://www.rubydoc.info/gems/rest-client/RestClient/RawResponse RestClient::RawResponse}
|
69
|
+
# @return [String] Unzipped string
|
70
|
+
def unzip(response)
|
71
|
+
result = response.body
|
72
|
+
begin
|
73
|
+
if response.headers.key? :content_encoding
|
74
|
+
if response.headers[:content_encoding] == 'gzip'
|
75
|
+
sio = StringIO.new( response.body )
|
76
|
+
gz = Zlib::GzipReader.new( sio )
|
77
|
+
result = gz.read()
|
78
|
+
end
|
79
|
+
end
|
80
|
+
rescue => e
|
81
|
+
self.log 'Error was received when page encoded. ' + e.to_s, 'debug'
|
82
|
+
result = nil
|
83
|
+
end
|
84
|
+
|
85
|
+
result
|
86
|
+
end
|
87
|
+
|
88
|
+
##
|
89
|
+
# Store data to file
|
90
|
+
# @param file_name [String] Name of file
|
91
|
+
# @param text [String] Saved text
|
92
|
+
def store(file_name, text)
|
93
|
+
file = File.open(file_name, "w")
|
94
|
+
file.write(text)
|
95
|
+
file.close
|
96
|
+
end
|
97
|
+
|
98
|
+
##
|
99
|
+
# Transform cookies string to hash
|
100
|
+
# @param str [String] Cookies string
|
101
|
+
# @return [Hash] Cookies data
|
102
|
+
def parse_cookie(str)
|
103
|
+
cookies = { }
|
104
|
+
|
105
|
+
arr = str.split('; ')
|
106
|
+
arr.each do |line|
|
107
|
+
index = line.index '='
|
108
|
+
if index
|
109
|
+
key = line[0..(index - 1)]
|
110
|
+
value = line[(index + 1)..(line.length - 1)]
|
111
|
+
end
|
112
|
+
cookies[key.to_s.to_sym] = value.to_s
|
113
|
+
end
|
114
|
+
|
115
|
+
cookies
|
116
|
+
end
|
117
|
+
|
118
|
+
##
|
119
|
+
# Returns {https://github.com/redis/redis-rb Redis} prefix for storing cache data. Prefix can be set in Rails.configuration.anoubis_redis_prefix configuration parameter.
|
120
|
+
# @return [String] {https://github.com/redis/redis-rb Redis} prefix
|
121
|
+
def redis_prefix
|
122
|
+
@redis_prefix ||= get_redis_prefix
|
123
|
+
end
|
124
|
+
|
125
|
+
private def get_redis_prefix
|
126
|
+
begin
|
127
|
+
value = Rails.configuration.anoubis_redis_prefix
|
128
|
+
rescue
|
129
|
+
return ''
|
130
|
+
end
|
131
|
+
|
132
|
+
value + ':'
|
133
|
+
end
|
134
|
+
end
|
data/config/locales/en.yml
CHANGED
@@ -30,16 +30,30 @@ en:
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
+
|
34
|
+
|
35
|
+
|
33
36
|
anoubis:
|
34
|
-
all: All
|
35
|
-
success: Successful
|
36
|
-
error: Error
|
37
|
+
all: "All"
|
38
|
+
success: "Successful"
|
39
|
+
error: "Error"
|
40
|
+
errors:
|
41
|
+
incorrect_login: "Incorrect login or password"
|
42
|
+
incorrect_user: "Incorrect user"
|
43
|
+
access_not_allowed: "Access not allowed"
|
44
|
+
session_expired: "Session expired"
|
37
45
|
install:
|
38
46
|
menu:
|
39
47
|
dashboard:
|
40
|
-
title: Dashboard
|
41
|
-
page_title:
|
42
|
-
short_title: Dashboard
|
48
|
+
title: "Dashboard"
|
49
|
+
page_title: "Dashboard"
|
50
|
+
short_title: "Dashboard"
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
43
57
|
|
44
58
|
|
45
59
|
|