spiderfw 0.6.33 → 0.6.34
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 +5 -5
- data/VERSION +1 -1
- data/apps/app_server/lib/git_app.rb +1 -1
- data/apps/core/admin/controllers/admin_controller.rb +3 -3
- data/apps/core/admin/controllers/app_admin_controller.rb +1 -1
- data/apps/core/components/public/js/spider.js +8 -0
- data/apps/core/components/widgets/table/table.rb +5 -0
- data/apps/core/forms/public/file_input.js +6 -9
- data/apps/core/forms/widgets/inputs/checkbox/checkbox.rb +7 -0
- data/apps/core/forms/widgets/inputs/html_area/html_area.rb +2 -2
- data/apps/messenger/controllers/messenger_admin_controller.rb +3 -3
- data/apps/messenger/controllers/mixins/messenger_helper.rb +25 -9
- data/apps/messenger/views/admin/_admin.layout.shtml +2 -2
- data/apps/messenger/views/admin/index.shtml +1 -1
- data/apps/worker/worker.rb +1 -1
- data/lib/spiderfw/app.rb +12 -4
- data/lib/spiderfw/config/options/spider.rb +1 -1
- data/lib/spiderfw/model/base_model.rb +25 -18
- data/lib/spiderfw/model/mappers/db_mapper.rb +8 -0
- data/lib/spiderfw/model/model.rb +2 -2
- data/lib/spiderfw/model/storage/db/adapters/mssql.rb +1 -1
- data/lib/spiderfw/model/storage/db/connectors/odbc.rb +10 -1
- data/lib/spiderfw/model/storage/db/db_storage.rb +31 -2
- data/lib/spiderfw/requires.rb +2 -0
- data/lib/spiderfw/spider.rb +25 -10
- data/lib/spiderfw/utils/mixins.rb +7 -0
- data/lib/spiderfw/utils/monkey/object.rb +2 -1
- data/lib/spiderfw/utils/openssl_wrapper.rb +64 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
SHA512:
|
3
|
-
metadata.gz: 4873d682965b148d70ade3af10f990ce93457765fda2938ee24581e26aed8610763b6bc9c6e07f5d945c53fdaf4fa60283d8d0ec98bd4e69f6532531f45eee38
|
4
|
-
data.tar.gz: 5fdaa46959c9faceae5a35c09dc82bbfb5f1c2de98225b040a4d22193280f7a58645f3f50de5a1443d760b256408f3d8e1c5a4a1f63c53decfffa5c17f2c3ab9
|
5
2
|
SHA1:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c4bf569cdffcd4f4e64bd82183bbee9d4d10fab
|
4
|
+
data.tar.gz: 63357be8bf251700de9f892f52fd6b314c8d2414
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b044d2830210abc1e7351259d85d658e2cbe814ec75c9dc6da98a002a6fc704e865aa869cfdf63ba2cf7d35a79d0d69297fa6ef249a564c6cf5d23b8cf07e1b8
|
7
|
+
data.tar.gz: 7f404687644cbfd20f3ca935def886e8c42827724addd0ff034cf80e8f7885a2ad32eed2402165a432472833c18b2a7d135507242911772b193a76af16d1e3bf
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.34
|
@@ -33,7 +33,7 @@ module Spider; module AppServer
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
@last_modified = repo.commits.first.authored_date # FIXME
|
36
|
-
@spec.app_server ||= AppServer::AppServerController.
|
36
|
+
@spec.app_server ||= AppServer::AppServerController.http_s_url
|
37
37
|
break
|
38
38
|
end
|
39
39
|
@repo = repo
|
@@ -19,7 +19,7 @@ module Spider; module Admin
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.logout_redirect
|
22
|
-
AdminController.
|
22
|
+
AdminController.http_s_url('login')
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -54,7 +54,7 @@ module Spider; module Admin
|
|
54
54
|
next if app[:options][:users] && (app[:options][:users] & (@request.users.map{ |u| u.class})).empty?
|
55
55
|
next if app[:options][:check] && !@request.users.any?{ |u| app[:options][:check].call(u) }
|
56
56
|
end
|
57
|
-
url = self.class.
|
57
|
+
url = self.class.http_s_url(short_name)
|
58
58
|
@scene.apps << {
|
59
59
|
:icon => app[:options][:icon] ? app[:module].pub_url+'/'+app[:options][:icon] : nil,
|
60
60
|
:url => self.class.http_s_url(short_name),
|
@@ -65,7 +65,7 @@ module Spider; module Admin
|
|
65
65
|
}
|
66
66
|
end
|
67
67
|
@scene.admin_breadcrumb = []
|
68
|
-
@scene.admin_breadcrumb << {:url => self.class.
|
68
|
+
@scene.admin_breadcrumb << {:url => self.class.http_s_url, :label => _('Home')} if @scene.apps.length > 1
|
69
69
|
|
70
70
|
# FIXME
|
71
71
|
@scene.apps.sort!{ |a,b| b[:priority] <=> a[:priority] }
|
@@ -6,7 +6,7 @@ module Spider; module Admin
|
|
6
6
|
def before(action='', *params)
|
7
7
|
@scene.admin_breadcrumb ||= []
|
8
8
|
unless @_did_breadcrumb
|
9
|
-
@scene.admin_breadcrumb << {:url => self.class.
|
9
|
+
@scene.admin_breadcrumb << {:url => self.class.http_s_url, :label => self.class.app.full_name}
|
10
10
|
end
|
11
11
|
@_did_breadcrumb = true
|
12
12
|
super
|
@@ -804,3 +804,11 @@ function basename(path){
|
|
804
804
|
function dirname(path){
|
805
805
|
return path.replace(/\\/g, '/').replace(/\/[^\/]*$/, '');
|
806
806
|
}
|
807
|
+
|
808
|
+
if(!String.prototype.trim) {
|
809
|
+
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};
|
810
|
+
}
|
811
|
+
|
812
|
+
|
813
|
+
|
814
|
+
|
@@ -19,6 +19,9 @@ module Spider; module Components
|
|
19
19
|
attribute :link_id, :type => Symbol
|
20
20
|
attribute :link
|
21
21
|
attribute :sort
|
22
|
+
#serve per i campi delle tabelle esterne che compaiono per il :reverse nel modello
|
23
|
+
#metterlo a false nella view per nascondere i campi
|
24
|
+
i_attribute :reverse_element, :type => TrueClass, :default => true
|
22
25
|
i_attr_accessor :queryset
|
23
26
|
i_attr_accessor :model
|
24
27
|
attr_accessor :queryset, :condition, :page
|
@@ -83,6 +86,8 @@ module Spider; module Components
|
|
83
86
|
next if el.multiple? && el.association != :multiple_choice
|
84
87
|
next if el.type == Spider::DataTypes::Password
|
85
88
|
next if el.hidden?
|
89
|
+
#serve per mostrare o no i campi delle chiavi esterne
|
90
|
+
next if el.attributes[:added_reverse] && !@attributes[:reverse_element]
|
86
91
|
end
|
87
92
|
cnt += 1
|
88
93
|
els << el.name
|
@@ -4,19 +4,16 @@ Spider.defineWidget('Spider.Forms.FileInput', 'Spider.Forms.Input', {
|
|
4
4
|
|
5
5
|
ready: function(){
|
6
6
|
var self = this;
|
7
|
-
var fileLink = $('.file-link', this.el);
|
7
|
+
var fileLink = $('.file-link', this.el.parent());
|
8
8
|
if (fileLink.size() == 1){
|
9
|
-
var changeLabel = $('.change-label', this.el).text();
|
10
|
-
var changeDiv = $('.change', this.el);
|
9
|
+
var changeLabel = $('.change-label', this.el.parent()).text();
|
10
|
+
var changeDiv = $('.change', this.el.parent());
|
11
11
|
changeDiv.hide();
|
12
|
-
$('.clear', this.el
|
13
|
-
|
14
|
-
var fileInput = $('.change input', this.el);
|
12
|
+
clearCheckBox = $('.clear input:checkbox', this.el.parent());
|
13
|
+
fileInput = $('.change input', this.el.parent());
|
15
14
|
|
16
15
|
var link = $('<a href="#" class="js-change-link"/>');
|
17
|
-
link.text(changeLabel+'...')
|
18
|
-
.insertAfter(fileLink)
|
19
|
-
.click(function(e){
|
16
|
+
link.text(changeLabel+'...').insertAfter(fileLink).click(function(e){
|
20
17
|
e.preventDefault();
|
21
18
|
if (clearCheckBox.is(':checked')){
|
22
19
|
link.removeClass('open');
|
@@ -20,8 +20,8 @@ module Spider; module Forms
|
|
20
20
|
:image_manager => attributes[:"image-manager"],
|
21
21
|
:link_manager => attributes[:"link-manager"] || attributes[:"file-manager"]
|
22
22
|
}
|
23
|
-
options[:link_manager] ||= Spider::Files.
|
24
|
-
options[:image_manager] ||= Spider::Images.
|
23
|
+
options[:link_manager] ||= Spider::Files.http_s_url(:manager) if Spider.app?('spider_files')
|
24
|
+
options[:image_manager] ||= Spider::Images.http_s_url(:manager) if Spider.app?('spider_images')
|
25
25
|
options[:full_page] = attributes[:"full-page"]
|
26
26
|
@scene.options = options.to_json
|
27
27
|
end
|
@@ -41,12 +41,12 @@ module Spider; module Messenger
|
|
41
41
|
model = Spider::Messenger.const_get(q[:model])
|
42
42
|
@scene.queue = @queue
|
43
43
|
@scene.title = q[:label]
|
44
|
-
@scene.admin_breadcrumb << {:label => @scene.title, :url => self.class.
|
44
|
+
@scene.admin_breadcrumb << {:label => @scene.title, :url => self.class.http_s_url(@queue)}
|
45
45
|
|
46
46
|
if id
|
47
47
|
return view_message(@queue, id)
|
48
48
|
end
|
49
|
-
@scene.msg_view_url = self.class.
|
49
|
+
@scene.msg_view_url = self.class.http_s_url(@queue)+'/'
|
50
50
|
@scene.queued = model.queued_messages
|
51
51
|
@scene.sent = model.sent_messages
|
52
52
|
@scene.failed = model.failed_messages
|
@@ -58,7 +58,7 @@ module Spider; module Messenger
|
|
58
58
|
model = Spider::Messenger.const_get(details[:model])
|
59
59
|
@scene.message = model.load(:id => id)
|
60
60
|
raise NotFound.new("Message #{queue} #{id}") unless @scene.message
|
61
|
-
@scene.admin_breadcrumb << {:label => id, :url => self.class.
|
61
|
+
@scene.admin_breadcrumb << {:label => id, :url => self.class.http_s_url("#{queue}/#{id}")}
|
62
62
|
render("admin/view_#{queue}")
|
63
63
|
end
|
64
64
|
|
@@ -62,16 +62,29 @@ module Spider; module Messenger
|
|
62
62
|
mail[key] = value.convert_object
|
63
63
|
end
|
64
64
|
|
65
|
-
if html
|
65
|
+
# if html
|
66
|
+
# mail.html_part do
|
67
|
+
# content_type 'text/html; charset=UTF-8'
|
68
|
+
# body html
|
69
|
+
# end
|
70
|
+
# end
|
71
|
+
# if attachments && !attachments.empty?
|
72
|
+
# mail.text_part do
|
73
|
+
# body text
|
74
|
+
# end
|
75
|
+
# else
|
76
|
+
# mail.body = text
|
77
|
+
# end
|
78
|
+
#ritornato al vecchio metodo con piu controlli per problema con invio comunicazioni con immagini 5/2/2015
|
79
|
+
|
80
|
+
if html || text
|
81
|
+
mail.text_part do
|
82
|
+
body text
|
83
|
+
end unless text.blank?
|
66
84
|
mail.html_part do
|
67
85
|
content_type 'text/html; charset=UTF-8'
|
68
86
|
body html
|
69
|
-
end
|
70
|
-
end
|
71
|
-
if attachments && !attachments.empty?
|
72
|
-
mail.text_part do
|
73
|
-
body text
|
74
|
-
end
|
87
|
+
end unless html.blank?
|
75
88
|
else
|
76
89
|
mail.body = text
|
77
90
|
end
|
@@ -79,8 +92,11 @@ module Spider; module Messenger
|
|
79
92
|
if attachments && !attachments.empty?
|
80
93
|
attachments.each do |att|
|
81
94
|
if att.is_a?(Hash)
|
82
|
-
filename = att.delete(:filename)
|
83
|
-
|
95
|
+
#filename = att.delete(:filename)
|
96
|
+
filename = att[:filename].dup
|
97
|
+
mime_type = att[:mime_type].dup
|
98
|
+
content = att[:content].dup
|
99
|
+
mail.attachments[filename] = { :mime_type => mime_type, :content => content }
|
84
100
|
else
|
85
101
|
mail.add_file(att)
|
86
102
|
end
|
@@ -3,10 +3,10 @@
|
|
3
3
|
<tpl:include src="/core/admin/_app_info" />
|
4
4
|
<ul>
|
5
5
|
<li>
|
6
|
-
<a href="{ Spider::Messenger::AdminController.
|
6
|
+
<a href="{ Spider::Messenger::AdminController.http_s_url }">_(Queues)</a>
|
7
7
|
<ul>
|
8
8
|
<li sp:each="@queues |queue|">
|
9
|
-
<a href="{ Spider::Messenger::AdminController.
|
9
|
+
<a href="{ Spider::Messenger::AdminController.http_s_url(queue) }">{ @queue_info[queue][:label] }</a>
|
10
10
|
</li>
|
11
11
|
</ul>
|
12
12
|
</li>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<h3>_(Queues)</h3>
|
3
3
|
<ul>
|
4
4
|
<li sp:each="@queues |name|">
|
5
|
-
<a href="{ Spider::Messenger::AdminController.
|
5
|
+
<a href="{ Spider::Messenger::AdminController.http_s_url }/{ name }">{ @queue_info[name][:label] }</a>:
|
6
6
|
<ul>
|
7
7
|
<li>_(Sent messages): <span class="label success">{ @queue_info[name][:sent] }</span></li>
|
8
8
|
<li>_(Queued messages): <span class="label warning">{ @queue_info[name][:queued] }</span></li>
|
data/apps/worker/worker.rb
CHANGED
data/lib/spiderfw/app.rb
CHANGED
@@ -143,18 +143,26 @@ module Spider
|
|
143
143
|
# The full url used to access the application from the browser, prefixed
|
144
144
|
# with https
|
145
145
|
# @return [String]
|
146
|
-
def https_url
|
146
|
+
def https_url(action=nil)
|
147
|
+
if u = Spider.conf.get("#{@dotted_name}.https_url")
|
148
|
+
if action
|
149
|
+
u += '/' if u[-1].chr != '/'
|
150
|
+
u += action.to_s
|
151
|
+
end
|
152
|
+
return u
|
153
|
+
end
|
147
154
|
return nil unless Spider.site && Spider.site.ssl?
|
148
155
|
u = "https://#{Spider.site.domain}"
|
149
156
|
u += ":#{Spider.site.ssl_port}" unless Spider.site.ssl_port == 443
|
150
157
|
u += url
|
158
|
+
u += "/"+action.to_s if action
|
151
159
|
u
|
152
160
|
end
|
153
161
|
|
154
162
|
# @return [String] If the site supports SSL, returns the #https_url; otherwise, the #http_url
|
155
|
-
def http_s_url
|
156
|
-
return https_url if Spider.site && Spider.site.ssl?
|
157
|
-
return http_url
|
163
|
+
def http_s_url(action=nil)
|
164
|
+
return https_url(action) if Spider.site && Spider.site.ssl?
|
165
|
+
return http_url(action)
|
158
166
|
end
|
159
167
|
|
160
168
|
# @return [String] The url to the app's public content. If the static_content.mode configuration
|
@@ -278,11 +278,11 @@ module Spider; module Model
|
|
278
278
|
create_junction = false
|
279
279
|
elsif (first_model.constant_defined?(assoc_type_name) )
|
280
280
|
assoc_type = first_model.const_get(assoc_type_name)
|
281
|
-
if (!assoc_type.attributes[:sub_model]) # other kind of inline model
|
281
|
+
if (assoc_type.respond_to?(:attributes) && !assoc_type.attributes[:sub_model]) # other kind of inline model
|
282
282
|
assoc_type_name += 'Junction'
|
283
283
|
create_junction = false if (first_model.const_defined?(assoc_type_name))
|
284
284
|
else
|
285
|
-
|
285
|
+
createP_junction = false
|
286
286
|
end
|
287
287
|
end
|
288
288
|
attributes[:junction] = true
|
@@ -300,7 +300,12 @@ module Spider; module Model
|
|
300
300
|
end
|
301
301
|
other_name = attributes[:junction_their_element]
|
302
302
|
if (create_junction)
|
303
|
-
|
303
|
+
#evita il warning 'already initialized constant News' e 'already initialized constant Contents'
|
304
|
+
if first_model.constant_defined?(assoc_type_name)
|
305
|
+
return nil
|
306
|
+
else
|
307
|
+
assoc_type = first_model.const_set(assoc_type_name, Class.new(BaseModel))
|
308
|
+
end
|
304
309
|
assoc_type.attributes[:sub_model] = self
|
305
310
|
assoc_type.attributes[:sub_model_element] = name
|
306
311
|
embedder = attributes[:junction_embedded] == false ? false : true
|
@@ -1638,20 +1643,22 @@ module Spider; module Model
|
|
1638
1643
|
def set_loaded_value(element, value, mark_loaded=true)
|
1639
1644
|
element_name = element.is_a?(Element) ? element.name : element
|
1640
1645
|
element = self.class.elements[element_name]
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1646
|
+
unless element.blank?
|
1647
|
+
if element.integrated?
|
1648
|
+
integrated = get(element.integrated_from)
|
1649
|
+
integrated.set_loaded_value(element.integrated_from_element, value) if integrated
|
1650
|
+
else
|
1651
|
+
value = prepare_child(element.name, value)
|
1652
|
+
current = instance_variable_get("@#{element_name}")
|
1653
|
+
current.set_parent(nil, nil) if current && current.is_a?(BaseModel)
|
1654
|
+
value.set_parent(self, element.name) if value.is_a?(BaseModel)
|
1655
|
+
instance_variable_set("@#{element_name}", value)
|
1656
|
+
end
|
1657
|
+
value.loaded = true if (value.is_a?(QuerySet))
|
1658
|
+
element_loaded(element_name) if mark_loaded
|
1659
|
+
set_reverse(element, value) if element.model? && value
|
1660
|
+
@_modified_elements[element_name] = false
|
1650
1661
|
end
|
1651
|
-
value.loaded = true if (value.is_a?(QuerySet))
|
1652
|
-
element_loaded(element_name) if mark_loaded
|
1653
|
-
set_reverse(element, value) if element.model? && value
|
1654
|
-
@_modified_elements[element_name] = false
|
1655
1662
|
end
|
1656
1663
|
|
1657
1664
|
# Records that the element has been loaded.
|
@@ -2392,7 +2399,7 @@ module Spider; module Model
|
|
2392
2399
|
.map{ |el|
|
2393
2400
|
val = get(el.name).to_s
|
2394
2401
|
if RUBY_VERSION =~ /1.8/
|
2395
|
-
val = ic.iconv(val + ' ')[0..-2]
|
2402
|
+
val = ic.iconv(val + ' ')[0..-2] if val
|
2396
2403
|
else
|
2397
2404
|
begin
|
2398
2405
|
val = ((val+' ').encode('UTF-8', enc, :invalid => :replace, :undef => :replace))[0..-2] if val
|
@@ -2448,7 +2455,7 @@ module Spider; module Model
|
|
2448
2455
|
|
2449
2456
|
if (el.type == String || el.type == Text)
|
2450
2457
|
if RUBY_VERSION =~ /1.8/
|
2451
|
-
val = ic.iconv(val + ' ')[0..-2]
|
2458
|
+
val = ic.iconv(val + ' ')[0..-2] if val
|
2452
2459
|
else
|
2453
2460
|
begin
|
2454
2461
|
val = ((val+' ').encode('UTF-8', enc, :invalid => :replace, :undef => :replace))[0..-2] if val
|
@@ -1290,6 +1290,14 @@ module Spider; module Model; module Mappers
|
|
1290
1290
|
end
|
1291
1291
|
end
|
1292
1292
|
end
|
1293
|
+
#debugger if ['civiliaopen__persona','civiliaopen__residente'].include?(schema.table.name)
|
1294
|
+
@model.elements_array.select{ |el| el.attributes[:index] }.each do |el|
|
1295
|
+
found = false
|
1296
|
+
schema.table.fields.map{|field| found = (field.name == el.name.to_s); break if found }
|
1297
|
+
sql = @storage.create_index(schema.table,el.name.to_s,el.attributes[:index]) if found
|
1298
|
+
|
1299
|
+
end if @model.extended_models.empty?
|
1300
|
+
|
1293
1301
|
seen = {}
|
1294
1302
|
sequences.each do |sequence_table, table_sequences|
|
1295
1303
|
table_sequences.each do |element_name, db_name|
|
data/lib/spiderfw/model/model.rb
CHANGED
@@ -256,8 +256,8 @@ module Spider
|
|
256
256
|
unless (options[:no_sync])
|
257
257
|
Spider::Logger.debug("SYNCING #{m}")
|
258
258
|
m.mapper.sync_schema(force, options) if m.mapper.respond_to?(:sync_schema)
|
259
|
-
|
260
|
-
|
259
|
+
m.after_sync if m.respond_to?(:after_sync)
|
260
|
+
end
|
261
261
|
if (options[:drop_tables] && m.mapper.respond_to?(:schema))
|
262
262
|
storages << m.mapper.storage unless storages.include?(m.mapper.storage)
|
263
263
|
tables += m.mapper.schema.get_schemas.keys
|
@@ -82,7 +82,7 @@ module Spider; module Model; module Storage; module Db
|
|
82
82
|
bind_vars << query[:limit] + 1
|
83
83
|
end
|
84
84
|
replaced_fields.each do |f, repl|
|
85
|
-
order = order.gsub(f, repl)
|
85
|
+
order = order.gsub(f.to_s, repl)
|
86
86
|
end
|
87
87
|
sql = "SELECT * FROM (#{sql}) as RowConstrainedResult WHERE #{limit} order by #{order}"
|
88
88
|
else
|
@@ -13,6 +13,7 @@ module Spider; module Model; module Storage; module Db; module Connectors
|
|
13
13
|
def new_connection(dsn=nil, user=nil, passwd=nil)
|
14
14
|
conn = ::ODBC.connect(dsn, user, passwd)
|
15
15
|
conn.autocommit = true
|
16
|
+
|
16
17
|
return conn
|
17
18
|
end
|
18
19
|
|
@@ -82,7 +83,15 @@ module Spider; module Model; module Storage; module Db; module Connectors
|
|
82
83
|
debug("odbc executing:\n#{sql}\n[#{debug_vars_str}]")
|
83
84
|
end
|
84
85
|
@stmt = connection.prepare(sql)
|
85
|
-
|
86
|
+
rebind_vars = []
|
87
|
+
bind_vars.each do |var|
|
88
|
+
if var.is_a?(Date)
|
89
|
+
rebind_vars << var.to_s
|
90
|
+
else
|
91
|
+
rebind_vars << var
|
92
|
+
end
|
93
|
+
end
|
94
|
+
res = @stmt.execute(*rebind_vars)
|
86
95
|
have_result = (@stmt.ncols != 0)
|
87
96
|
if (have_result)
|
88
97
|
result = []
|
@@ -543,7 +543,7 @@ module Spider; module Model; module Storage; module Db
|
|
543
543
|
alter_fields = alter[:alter_fields]
|
544
544
|
alter_attributes = alter[:attributes]
|
545
545
|
sqls = []
|
546
|
-
|
546
|
+
|
547
547
|
add_fields.each do |field|
|
548
548
|
name, type, attributes = field
|
549
549
|
sqls += sql_add_field(table_name, field[:name], field[:type], field[:attributes])
|
@@ -576,7 +576,6 @@ module Spider; module Model; module Storage; module Db
|
|
576
576
|
return sqls
|
577
577
|
end
|
578
578
|
|
579
|
-
|
580
579
|
# Executes a create table structured description.
|
581
580
|
def create_table(create)
|
582
581
|
sqls = sql_create_table(create)
|
@@ -592,6 +591,28 @@ module Spider; module Model; module Storage; module Db
|
|
592
591
|
execute(sql)
|
593
592
|
end
|
594
593
|
end
|
594
|
+
|
595
|
+
# Executes a create index structured description.
|
596
|
+
def create_index(table_name, field_name, attribute)
|
597
|
+
sqls = sql_add_index(table_name, field_name, attribute)
|
598
|
+
begin
|
599
|
+
sqls.each{ |sql| execute(sql) }
|
600
|
+
rescue StorageException => exc
|
601
|
+
Spider.logger.error "Duplicate Key during create unique index into table #{table_name} and referred to column #{field_name}"
|
602
|
+
rescue => exc
|
603
|
+
drop_index(table_name, field_name)
|
604
|
+
retry
|
605
|
+
end
|
606
|
+
end
|
607
|
+
|
608
|
+
# Drop the index from DB.
|
609
|
+
def drop_index(table_name, field_name)
|
610
|
+
sqls = sql_drop_index(table_name, field_name)
|
611
|
+
begin
|
612
|
+
sqls.each{ |sql| execute(sql) }
|
613
|
+
rescue => exc
|
614
|
+
end
|
615
|
+
end
|
595
616
|
|
596
617
|
# Drops a field from the DB.
|
597
618
|
def drop_field(table_name, field_name)
|
@@ -663,6 +684,14 @@ module Spider; module Model; module Storage; module Db
|
|
663
684
|
def sql_change_field(table_name, field, new_field, type, attributes)
|
664
685
|
["ALTER TABLE #{table_name} CHANGE #{field} #{sql_table_field(new_field, type, attributes)}"]
|
665
686
|
end
|
687
|
+
|
688
|
+
def sql_add_index(table_name, field, attribute)
|
689
|
+
["CREATE #{(attribute.to_s.upcase == 'UNIQUE' ? attribute.to_s.upcase : '')} INDEX #{field}_idx ON #{table_name} (#{field})"]
|
690
|
+
end
|
691
|
+
|
692
|
+
def sql_drop_index(table_name, field)
|
693
|
+
["DROP INDEX #{field}_idx ON #{table_name}"]
|
694
|
+
end
|
666
695
|
|
667
696
|
# Checks if a DB field is equal to a schema field.
|
668
697
|
def schema_field_equal?(current, field)
|
data/lib/spiderfw/requires.rb
CHANGED
@@ -13,6 +13,7 @@ require 'spiderfw/utils/monkey/exception'
|
|
13
13
|
require 'spiderfw/utils/monkey/nil_class'
|
14
14
|
require 'spiderfw/utils/monkey/object'
|
15
15
|
require 'spiderfw/utils/json'
|
16
|
+
require 'spiderfw/utils/mixins'
|
16
17
|
require 'spiderfw/utils/multi_level_hash'
|
17
18
|
require 'spiderfw/utils/thread_out'
|
18
19
|
require 'spiderfw/utils/inflector'
|
@@ -25,6 +26,7 @@ require 'spiderfw/utils/memory'
|
|
25
26
|
require 'spiderfw/utils/secure_random'
|
26
27
|
require 'spiderfw/utils/http_client'
|
27
28
|
require 'spiderfw/utils/gems'
|
29
|
+
require 'spiderfw/utils/openssl_wrapper'
|
28
30
|
require 'spiderfw/config/configuration'
|
29
31
|
require 'spiderfw/config/configurable'
|
30
32
|
require 'spiderfw/app'
|
data/lib/spiderfw/spider.rb
CHANGED
@@ -1087,18 +1087,33 @@ module Spider
|
|
1087
1087
|
def init_ruby_debug
|
1088
1088
|
begin
|
1089
1089
|
begin
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1090
|
+
case RUBY_VERSION
|
1091
|
+
when /2/
|
1092
|
+
require 'byebug'
|
1093
|
+
else
|
1094
|
+
require 'ruby-debug'
|
1095
|
+
end
|
1096
|
+
rescue
|
1097
|
+
require 'debugger'
|
1098
|
+
end
|
1099
|
+
case RUBY_VERSION
|
1100
|
+
when /2/
|
1101
|
+
if File.exists?(File.join($SPIDER_RUN_PATH,'tmp', 'debug.txt'))
|
1102
|
+
Byebug.wait_connection = true
|
1103
|
+
Byebug.start
|
1104
|
+
else
|
1105
|
+
Byebug.start
|
1106
|
+
end
|
1107
|
+
else
|
1108
|
+
if File.exists?(File.join($SPIDER_RUN_PATH,'tmp', 'debug.txt'))
|
1109
|
+
Debugger.wait_connection = true
|
1110
|
+
Debugger.start_remote
|
1111
|
+
else
|
1112
|
+
Debugger.start
|
1113
|
+
end
|
1099
1114
|
end
|
1100
1115
|
rescue LoadError, RuntimeError => exc
|
1101
|
-
msg = _('Unable to start debugger. Ensure ruby-debug is installed (or set debugger.start to false).')
|
1116
|
+
msg = _('Unable to start debugger. Ensure ruby-debug or byebug is installed (or set debugger.start to false).')
|
1102
1117
|
Spider.output(exc.message)
|
1103
1118
|
Spider.output(msg)
|
1104
1119
|
end
|
@@ -55,7 +55,8 @@ class Object
|
|
55
55
|
require 'iconv'
|
56
56
|
self.replace(Iconv.iconv(encoding, encoding, self).first)
|
57
57
|
elsif RUBY_VERSION =~ /1.9/
|
58
|
-
self.
|
58
|
+
self_dup = self.dup
|
59
|
+
self.replace(self_dup.force_encoding(encoding)) unless self.frozen?
|
59
60
|
end
|
60
61
|
end
|
61
62
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
|
3
|
+
module Spider
|
4
|
+
|
5
|
+
module OpenSslWrapper
|
6
|
+
|
7
|
+
#metodo che verifica che il file sia firmato e che sia stato generato dal file originale passato senza alterazioni
|
8
|
+
#ritorna un hash con una chave esito per capire se la verifica ha dato esito positivo e per ritornare o il
|
9
|
+
#messaggio d'errore o un hash con i dati dei certificati
|
10
|
+
def self.verify_p7m_short(original_file, signed_file)
|
11
|
+
signature = OpenSSL::PKCS7.new(File.read(signed_file))
|
12
|
+
data = File.read(original_file)
|
13
|
+
cert_store = OpenSSL::X509::Store.new
|
14
|
+
cert_store.set_default_paths
|
15
|
+
#estraggo il certificato con cui viene firmato
|
16
|
+
certificati_firmatari = signature.certificates
|
17
|
+
firmatari = signature.signers
|
18
|
+
#OpenSSL::PKCS7::DETACHED
|
19
|
+
esito = signature.verify(certificati_firmatari, cert_store, data, OpenSSL::PKCS7::NOVERIFY)
|
20
|
+
if esito
|
21
|
+
#array con i dati dei certificati dei firmatari
|
22
|
+
array_cert_firmatari = []
|
23
|
+
certificati_firmatari.each{ |certificato|
|
24
|
+
hash_certificato = {}
|
25
|
+
hash_certificato[:issuer] = {}
|
26
|
+
certificato.issuer.to_a.each{ |item_of_name|
|
27
|
+
hash_certificato[:issuer][item_of_name[0].to_sym] = item_of_name[1]
|
28
|
+
}
|
29
|
+
hash_certificato[:subject] = {}
|
30
|
+
certificato.subject.to_a.each{ |item_of_name|
|
31
|
+
hash_certificato[:subject][item_of_name[0].to_sym] = item_of_name[1]
|
32
|
+
}
|
33
|
+
hash_certificato[:serial] = certificato.serial
|
34
|
+
hash_certificato[:not_after] = certificato.not_after
|
35
|
+
hash_certificato[:not_before] = certificato.not_before
|
36
|
+
array_cert_firmatari << hash_certificato
|
37
|
+
}
|
38
|
+
|
39
|
+
array_firmatari = []
|
40
|
+
firmatari.each{ |firmatario|
|
41
|
+
hash_firmatario = {}
|
42
|
+
hash_firmatario[:issuer] = {}
|
43
|
+
firmatario.issuer.to_a.each{ |item_of_name|
|
44
|
+
hash_firmatario[:issuer][item_of_name[0].to_sym] = item_of_name[1]
|
45
|
+
}
|
46
|
+
hash_firmatario[:name] = {}
|
47
|
+
firmatario.name.to_a.each{ |item_of_name|
|
48
|
+
hash_firmatario[:name][item_of_name[0].to_sym] = item_of_name[1]
|
49
|
+
}
|
50
|
+
hash_firmatario[:serial] = firmatario.serial
|
51
|
+
hash_firmatario[:signed_time] = firmatario.signed_time
|
52
|
+
array_firmatari << hash_firmatario
|
53
|
+
}
|
54
|
+
{ :esito => 'true', :firmatari => array_firmatari, :certificati => array_cert_firmatari }
|
55
|
+
|
56
|
+
else
|
57
|
+
{ :esito => 'false', :error_string => signature.error_string }
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spiderfw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Pirlik
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2015-03-05 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cmdparse
|
@@ -1503,6 +1503,7 @@ files:
|
|
1503
1503
|
- lib/spiderfw/utils/logger.rb
|
1504
1504
|
- lib/spiderfw/utils/loggers/apache_commons_logger.rb
|
1505
1505
|
- lib/spiderfw/utils/memory.rb
|
1506
|
+
- lib/spiderfw/utils/mixins.rb
|
1506
1507
|
- lib/spiderfw/utils/monkey/class.rb
|
1507
1508
|
- lib/spiderfw/utils/monkey/date_time.rb
|
1508
1509
|
- lib/spiderfw/utils/monkey/debugger.rb
|
@@ -1515,6 +1516,7 @@ files:
|
|
1515
1516
|
- lib/spiderfw/utils/monkey/symbol.rb
|
1516
1517
|
- lib/spiderfw/utils/monkey/time.rb
|
1517
1518
|
- lib/spiderfw/utils/multi_level_hash.rb
|
1519
|
+
- lib/spiderfw/utils/openssl_wrapper.rb
|
1518
1520
|
- lib/spiderfw/utils/ordered_hash.rb
|
1519
1521
|
- lib/spiderfw/utils/periodic_runner.rb
|
1520
1522
|
- lib/spiderfw/utils/profiling.rb
|