forcast 0.0.110

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/COPYRIGHTS +11 -0
  4. data/Gemfile +22 -0
  5. data/Gemfile.lock +166 -0
  6. data/PENDIENTES +39 -0
  7. data/README.md +35 -0
  8. data/Rakefile +7 -0
  9. data/VERSION +1 -0
  10. data/bin/console +14 -0
  11. data/bin/rake +28 -0
  12. data/bin/setup +8 -0
  13. data/forcast.gemspec +73 -0
  14. data/lib/forcast.rb +5 -0
  15. data/lib/forcast/controllers/all.rb +2 -0
  16. data/lib/forcast/controllers/application/all.rb +12 -0
  17. data/lib/forcast/controllers/application/crud.rb +91 -0
  18. data/lib/forcast/controllers/application/database.rb +34 -0
  19. data/lib/forcast/controllers/application/error.rb +18 -0
  20. data/lib/forcast/controllers/application/exception_handler.rb +25 -0
  21. data/lib/forcast/controllers/application/json.rb +83 -0
  22. data/lib/forcast/controllers/application/locale.rb +30 -0
  23. data/lib/forcast/controllers/application/log.rb +22 -0
  24. data/lib/forcast/controllers/application/login.rb +41 -0
  25. data/lib/forcast/controllers/application/meta.rb +61 -0
  26. data/lib/forcast/controllers/application/model.rb +17 -0
  27. data/lib/forcast/controllers/application/permitirtodo.rb +27 -0
  28. data/lib/forcast/controllers/application/utils.rb +28 -0
  29. data/lib/forcast/controllers/controller/all.rb +8 -0
  30. data/lib/forcast/controllers/controller/asociar.rb +121 -0
  31. data/lib/forcast/controllers/controller/busqueda.rb +151 -0
  32. data/lib/forcast/controllers/controller/definitor/definitor.rb +322 -0
  33. data/lib/forcast/controllers/controller/definitor/definitor_page.rb +40 -0
  34. data/lib/forcast/controllers/controller/definitor_all.rb +2 -0
  35. data/lib/forcast/controllers/controller/filtro.rb +48 -0
  36. data/lib/forcast/controllers/controller/login/controllers/base_controller.rb +135 -0
  37. data/lib/forcast/controllers/controller/login/controllers/login_controller.rb +38 -0
  38. data/lib/forcast/controllers/controller/login/login.rb +71 -0
  39. data/lib/forcast/controllers/controller/login_all.rb +1 -0
  40. data/lib/forcast/controllers/controller/paper_trail/paper_trail.rb +21 -0
  41. data/lib/forcast/controllers/controller/paper_trail_all.rb +1 -0
  42. data/lib/forcast/controllers/controller/relacion.rb +157 -0
  43. data/lib/forcast/controllers/controller/rule_engine/action_engine.rb +92 -0
  44. data/lib/forcast/controllers/controller/rule_engine/controllers/action_logs_controller.rb +12 -0
  45. data/lib/forcast/controllers/controller/rule_engine/controllers/actions_controller.rb +10 -0
  46. data/lib/forcast/controllers/controller/rule_engine/controllers/pollings_controller.rb +13 -0
  47. data/lib/forcast/controllers/controller/rule_engine/controllers/rule_logs_controller.rb +12 -0
  48. data/lib/forcast/controllers/controller/rule_engine/controllers/rules_controller.rb +19 -0
  49. data/lib/forcast/controllers/controller/rule_engine/controllers/webhooks_controller.rb +27 -0
  50. data/lib/forcast/controllers/controller/rule_engine/polling_engine.rb +76 -0
  51. data/lib/forcast/controllers/controller/rule_engine/rule_controller.rb +27 -0
  52. data/lib/forcast/controllers/controller/rule_engine/rule_engine.rb +88 -0
  53. data/lib/forcast/controllers/controller/rule_engine/webhook_engine.rb +38 -0
  54. data/lib/forcast/controllers/controller/rule_engine_all.rb +5 -0
  55. data/lib/forcast/jobs/all.rb +2 -0
  56. data/lib/forcast/jobs/jobs_assets.rb +25 -0
  57. data/lib/forcast/jobs/jobs_wrapper.rb +25 -0
  58. data/lib/forcast/jobs/rule_engine/jobs_actions.rb +73 -0
  59. data/lib/forcast/jobs/rule_engine/jobs_pollings.rb +77 -0
  60. data/lib/forcast/jobs/rule_engine/jobs_webhooks.rb +54 -0
  61. data/lib/forcast/migrations/0_migracion_general.rb +44 -0
  62. data/lib/forcast/migrations/paper_trail/versions.rb +61 -0
  63. data/lib/forcast/migrations/rule_engine/action_logs.rb +15 -0
  64. data/lib/forcast/migrations/rule_engine/actions.rb +15 -0
  65. data/lib/forcast/migrations/rule_engine/pollings.rb +26 -0
  66. data/lib/forcast/migrations/rule_engine/rule_logs.rb +22 -0
  67. data/lib/forcast/migrations/rule_engine/rules.rb +27 -0
  68. data/lib/forcast/migrations/rule_engine/webhooks.rb +25 -0
  69. data/lib/forcast/models/all.rb +8 -0
  70. data/lib/forcast/models/asociar.rb +74 -0
  71. data/lib/forcast/models/busqueda.rb +17 -0
  72. data/lib/forcast/models/login/authorization.rb +37 -0
  73. data/lib/forcast/models/login/json_web_token.rb +15 -0
  74. data/lib/forcast/models/login/login.rb +26 -0
  75. data/lib/forcast/models/login_all.rb +2 -0
  76. data/lib/forcast/models/meta.rb +19 -0
  77. data/lib/forcast/models/modelo.rb +125 -0
  78. data/lib/forcast/models/models/meta.rb +6 -0
  79. data/lib/forcast/models/paper_trail/paper_trail.rb +13 -0
  80. data/lib/forcast/models/paper_trail_all.rb +1 -0
  81. data/lib/forcast/models/permitirtodo.rb +57 -0
  82. data/lib/forcast/models/rule_engine/action_engine.rb +19 -0
  83. data/lib/forcast/models/rule_engine/models/action.rb +41 -0
  84. data/lib/forcast/models/rule_engine/models/action_log.rb +40 -0
  85. data/lib/forcast/models/rule_engine/models/polling.rb +43 -0
  86. data/lib/forcast/models/rule_engine/models/rule.rb +44 -0
  87. data/lib/forcast/models/rule_engine/models/rule_log.rb +39 -0
  88. data/lib/forcast/models/rule_engine/models/webhook.rb +43 -0
  89. data/lib/forcast/models/rule_engine/polling_engine.rb +113 -0
  90. data/lib/forcast/models/rule_engine/rule.rb +62 -0
  91. data/lib/forcast/models/rule_engine/rule_engine.rb +137 -0
  92. data/lib/forcast/models/rule_engine/rule_scope.rb +35 -0
  93. data/lib/forcast/models/rule_engine/webhook_engine.rb +55 -0
  94. data/lib/forcast/models/rule_engine_all.rb +6 -0
  95. data/lib/forcast/routes/concerns/asociar.rb +15 -0
  96. data/lib/forcast/routes/concerns/buscar.rb +6 -0
  97. data/lib/forcast/routes/concerns/definitor.rb +3 -0
  98. data/lib/forcast/routes/concerns/modelo.rb +6 -0
  99. data/lib/forcast/routes/database.rb +4 -0
  100. data/lib/forcast/routes/login.rb +4 -0
  101. data/lib/forcast/routes/paper_trail/paper_trail.rb +3 -0
  102. data/lib/forcast/routes/rule_engine/rule.rb +5 -0
  103. data/lib/forcast/tasks/.giosaveZr0hbs +21 -0
  104. data/lib/forcast/tasks/.keep +0 -0
  105. data/lib/forcast/tasks/all.rb +16 -0
  106. data/lib/forcast/tasks/diagramas.rake +32 -0
  107. data/lib/forcast/tasks/documentation/documentation.rb +100 -0
  108. data/lib/forcast/tasks/env.rake +10 -0
  109. data/lib/forcast/tasks/git.rake +22 -0
  110. data/lib/forcast/tasks/indy/indy.rb +28 -0
  111. data/lib/forcast/tasks/logs.rake +13 -0
  112. data/lib/forcast/tasks/process.rake +18 -0
  113. data/lib/forcast/tasks/schema.rake +17 -0
  114. data/lib/forcast/tasks/schema/recips/action.rb +18 -0
  115. data/lib/forcast/tasks/schema/recips/controller.rb +29 -0
  116. data/lib/forcast/tasks/schema/recips/definitor.rb +38 -0
  117. data/lib/forcast/tasks/schema/recips/model.rb +43 -0
  118. data/lib/forcast/tasks/schema/recips/project.rb +19 -0
  119. data/lib/forcast/tasks/schema/recips/route.rb +9 -0
  120. data/lib/forcast/tasks/schema/recips/tmp/controller.rb +0 -0
  121. data/lib/forcast/tasks/schema/recips/tmp/model.rb +0 -0
  122. data/lib/forcast/tasks/schema/recips/tmp/model/.keep +0 -0
  123. data/lib/forcast/tasks/schema/rule_engine/rule_engine.rb +98 -0
  124. data/lib/forcast/tasks/schema/schema.rb +346 -0
  125. data/lib/forcast/tasks/test.rake +129 -0
  126. data/lib/forcast/tasks/utils.rake +68 -0
  127. data/lib/forcast/tasks/yard.rake +18 -0
  128. data/lib/forcast/utils/all.rb +4 -0
  129. data/lib/forcast/utils/email.rb +49 -0
  130. data/lib/forcast/utils/email/forcast/utils/email/layout/default.html.erb +3 -0
  131. data/lib/forcast/utils/email/forcast/utils/email/layout/default.text.erb +5 -0
  132. data/lib/forcast/utils/firebase.rb +60 -0
  133. data/lib/forcast/utils/firebase_database.rb +117 -0
  134. data/lib/forcast/utils/measure.rb +44 -0
  135. data/lib/forcast/utils/qvo.rb +141 -0
  136. data/lib/forcast/utils/server.rb +296 -0
  137. data/lib/forcast/utils/telegram.rb +82 -0
  138. data/lib/forcast/utils/thing.rb +180 -0
  139. data/lib/forcast/version.rb +15 -0
  140. data/lib/lib/backup.rb +42 -0
  141. data/lib/lib/deploy.sh +40 -0
  142. data/lib/lib/forcast_servidor_rails.sh +11 -0
  143. data/lib/lib/pg_generator.sh +10 -0
  144. data/lib/lib/production.rb +66 -0
  145. data/lib/lib/production/production.rb +30 -0
  146. data/lib/lib/systemctl_maker.rb +88 -0
  147. data/lib/lib/update.rb +100 -0
  148. data/production.rb +31 -0
  149. metadata +301 -0
@@ -0,0 +1,25 @@
1
+ require_relative 'base'
2
+
3
+ class Tables::Webhooks < Tables::Base
4
+
5
+ def self.table(migration)
6
+ create_table migration do |t|
7
+ t.string :webhook_model
8
+ t.integer :webhook_model_id
9
+ t.integer :send_time
10
+ t.integer :duration_time
11
+ t.boolean :active?
12
+ t.boolean :forever_true?
13
+ t.datetime :last_execution
14
+ t.datetime :last_review_send
15
+ t.datetime :last_send
16
+ t.boolean :execute?
17
+ t.boolean :send?
18
+ t.boolean :class_webhook?
19
+ t.bigint :rule_id
20
+ t.index :rule_id, name: 'index_rule_webhook_id'
21
+ t.timestamps
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,8 @@
1
+ require "forcast/models/meta"
2
+ require "forcast/models/asociar"
3
+ require "forcast/models/busqueda"
4
+ require "forcast/models/modelo"
5
+ require "forcast/models/permitirtodo"
6
+ require "forcast/models/rule_engine_all"
7
+ require "forcast/models/paper_trail_all"
8
+ require "forcast/models/login_all"
@@ -0,0 +1,74 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Asociar
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+
9
+
10
+ included do
11
+
12
+ def self.no_asociados_a(modelo)
13
+
14
+ self.where(modelo => [1,nil])
15
+ end
16
+
17
+ end
18
+
19
+ def ver_asociado(modelo)
20
+
21
+ return c_to_m(modelo).where(:id => self.id)
22
+
23
+ end
24
+
25
+ def asociar_a(modelo, id)
26
+
27
+ self.update(modelo => id)
28
+
29
+ end
30
+
31
+ def agregar_asociado(modelo,id)
32
+ nombre = (self.class.name + '_id').downcase
33
+ c_to_m(modelo).find(id).update( nombre => self.id)
34
+ end
35
+
36
+ def desasociar_de(modelo)
37
+
38
+ self.update(modelo => 1)
39
+
40
+ end
41
+
42
+ def quitar_asociado(modelo,id)
43
+ nombre = (self.class.name + '_id').downcase
44
+ c_to_m(modelo).find(id).update( nombre => 1)
45
+ end
46
+
47
+
48
+ def asociado_a?(modelo, id)
49
+
50
+ self.read_attribute(modelo) === id.to_i ? false : true
51
+
52
+ end
53
+
54
+ def agregar_asociado_a?(modelo, id)
55
+
56
+ nombre = (self.class.name + '_id').downcase
57
+ c_to_m(modelo).find(id).read_attribute(nombre) === self.id.to_i ? false : true
58
+
59
+ end
60
+
61
+ def asociado_existe?(modelo, id)
62
+
63
+ c_to_m(modelo).exists?(id) ? true : false
64
+
65
+ end
66
+
67
+ def c_to_m(str)
68
+ return str.classify.constantize
69
+ end
70
+
71
+
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,17 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Busqueda
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ scope :buscar_nombre_scope, -> (nombre) { where nombre: nombre }
9
+ scope :buscar_parametro_exacto_scope, -> (parametro,dato) { where parametro => dato }
10
+ scope :buscar_parametro_contiene_scope, -> (parametro,contiene) { where "#{parametro} like ?", "%#{contiene}%"}
11
+ end
12
+
13
+
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,37 @@
1
+ class Authorization < ApplicationRecord
2
+ belongs_to :user, optional: true
3
+
4
+ def get_token
5
+ jwt_token = if user.present?
6
+ JsonWebToken.encode({user_id:self.user.id, birthday_date:self.created_at})
7
+ elsif admin_user.present?
8
+ JsonWebToken.encode({admin_user_id:self.admin_user.id, birthday_date:self.created_at})
9
+ end
10
+
11
+ jwt_token
12
+ end
13
+
14
+ def self.invalidate_token(given_token)
15
+ temporal_auth = Authorization.new()
16
+
17
+ decoded_token = JsonWebToken.decode(given_token)
18
+
19
+ if decoded_token.blank?
20
+ temporal_auth.errors.add(:base, I18n.t("activerecord.errors.token.not_exits"))
21
+ else
22
+ user_id = decoded_token[:user_id]
23
+ created_at_format = decoded_token[:birthday_date]
24
+ created_at = Time.parse(created_at_format)
25
+
26
+ auth = Authorization.find_by(user_id:user_id,active_time_stamp:created_at.to_i)
27
+ if auth.present? && auth.operative
28
+ auth.operative = false
29
+ auth.save
30
+ else
31
+ temporal_auth.errors.add(:base, I18n.t("activerecord.errors.token.already_invalid"))
32
+ end
33
+ end
34
+
35
+ temporal_auth
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ class JsonWebToken
2
+ class << self
3
+ def encode(payload,exp = 15.year.from_now)
4
+ payload[:exp] = exp.to_i
5
+ JWT.encode(payload, Rails.application.secrets.secret_key_base)
6
+ end
7
+
8
+ def decode(token)
9
+ return HashWithIndifferentAccess.new(JWT.decode(token, Rails.application.secrets.secret_key_base)[0])
10
+ rescue
11
+ nil
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ require 'bcrypt'
2
+ module Forcast
3
+ module Model
4
+ module Login
5
+ include BCrypt
6
+
7
+ def generate_auth_token
8
+ token = SecureRandom.hex
9
+ self.update_columns(auth_token: token, token_created_at: Time.zone.now)
10
+ return token
11
+ end
12
+
13
+ def invalidate_auth_token
14
+ self.update_columns(auth_token: nil, token_created_at: nil)
15
+ end
16
+
17
+ def password=(password)
18
+ self.password_hash = BCrypt::Password.create(password)
19
+ end
20
+
21
+ def is_password?(password)
22
+ BCrypt::Password.new(self.password_hash) == password
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,2 @@
1
+ require "forcast/models/login/login"
2
+
@@ -0,0 +1,19 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Meta
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+
9
+ end
10
+
11
+ def initialize()
12
+ @name = attributes[:name]
13
+ @email = attributes[:email]
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,125 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Modelo
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+ def create(params)
9
+ self.attributes.each do |att|
10
+ next if att[0] == 'id'
11
+ self.write_attribute(att[0], params[att[0]])
12
+ end
13
+ begin
14
+ init(params)
15
+ rescue
16
+
17
+ ensure
18
+ return true if self.save
19
+ end
20
+
21
+ end
22
+
23
+ def errores
24
+ self.errors.full_messages
25
+ end
26
+
27
+ included do
28
+
29
+ def self.model
30
+ return model_name.name.classify.constantize
31
+ end
32
+
33
+ def self.nombre_existe?(nombre)
34
+ model.exists?(nombre: nombre)
35
+ end
36
+
37
+ def self.parametro_existe?(param,dato)
38
+ return model.exists?(param => dato)
39
+ end
40
+
41
+ def self.duplate_object?(comp)
42
+ object_unique = model.exists?(comp)
43
+ return object_unique
44
+ end
45
+
46
+ def self.parametros_existen_create?(param)
47
+ a,b = false
48
+ parametros_a_comprobar_si_existen_create.each do |comprobar|
49
+ next unless model.exists?(comprobar => param[comprobar])
50
+ a = true
51
+ b = comprobar
52
+ break
53
+ end
54
+ return [a,b]
55
+ end
56
+
57
+ def self.parametros_a_validar_create (datos)
58
+ a,b = false
59
+ c = []
60
+ datos.each do |data|
61
+ c = model.validaciones_create(data[0],data[1])
62
+ next unless c[1]
63
+ a = true
64
+ b = c[0]
65
+ break
66
+ end
67
+ return [a,b]
68
+ end
69
+
70
+ def self.parametros_estan_create?(params)
71
+ if (parametros_necesario_create - params).empty?
72
+ return false
73
+ else
74
+ return true
75
+ end
76
+ end
77
+
78
+ def self.validaciones_create(param, dato)
79
+ vald = parametros_a_validar_modelo_create.select{ |item| item[:param] == param }
80
+ return ['',false] if vald.empty?
81
+ abstract_validation do
82
+ conf = Hash.new
83
+ conf[:param_param] = param
84
+ conf[:param] = vald[0][:param]
85
+ conf[:valor] = vald[0][:valor]
86
+ conf[:validacion] = vald[0][:validacion]
87
+ conf[:error] = vald[0][:error]
88
+ conf[:comp] = dato
89
+ conf
90
+ end
91
+ end
92
+
93
+ def self.validaciones_update(param, dato)
94
+ vald = parametros_a_validar_modelo_update.select{ |item| item[:param] == param }
95
+ return ['',false] if vald.empty?
96
+ abstract_validation do
97
+ conf = Hash.new
98
+ conf[:param_param] = param
99
+ conf[:param] = vald[0][:param]
100
+ conf[:valor] = vald[0][:valor]
101
+ conf[:validacion] = vald[0][:validacion]
102
+ conf[:error] = vald[0][:error]
103
+ conf[:comp] = dato
104
+ conf
105
+ end
106
+ end
107
+
108
+ def self.abstract_validation
109
+ conf = yield
110
+ if conf[:param_param] == conf[:param]
111
+ if self.send(conf[:validacion],conf[:comp])
112
+ return [conf[:error],true]
113
+ else
114
+ return ['',false]
115
+ end
116
+ else
117
+ return ['',false]
118
+ end
119
+ end
120
+
121
+ end
122
+
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,6 @@
1
+ class Meta < ApplicationRecord
2
+ include Forcast::Model::Meta
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,13 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module PaperTrail
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ has_paper_trail ignore: []
9
+ #before_action :set_paper_trail_whodunnit
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ require "forcast/models/paper_trail/paper_trail"
@@ -0,0 +1,57 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Permitirtodo
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+ def init
9
+
10
+
11
+ end
12
+
13
+ included do
14
+
15
+ def self.parametros_necesario_create
16
+ array = []
17
+ return array
18
+ end
19
+
20
+
21
+ def self.params_permitidos_asociar
22
+ n = []
23
+ self.reflect_on_all_associations(:belongs_to).each do |x|
24
+ n = n.push(x.name.to_s+'_id')
25
+ end
26
+ return params_permitidos_asociar = n
27
+ end
28
+
29
+ def self.params_permitidos_agregar
30
+ n = []
31
+ self.reflect_on_all_associations(:has_many).each do |x|
32
+ n = n.push(x.name.to_s+'_id')
33
+ end
34
+ return params_permitidos_agregar = n
35
+ end
36
+
37
+
38
+ def self.parametros_a_comprobar_si_existen_create
39
+ return parametros_a_comprobar_si_existen_create = []
40
+ end
41
+
42
+ def self.parametros_a_comprobar_si_existen_update
43
+ return parametros_a_comprobar_si_existen_update = []
44
+ end
45
+
46
+ def self.validaciones_create(param, dato)
47
+ return ['',false]
48
+ end
49
+
50
+ def self.validaciones_update (param,dato)
51
+ return ['',false]
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
@@ -0,0 +1,19 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module RuleEngine
5
+ module ActionEngine
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+
10
+ def self.action_type_allowed
11
+ return action_type_allowed = ["callback", "telegram","email"]
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end