sfpagent 0.4.14 → 0.4.15
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/VERSION +1 -1
- data/lib/sfpagent/agent.rb +23 -8
- data/lib/sfpagent/sfplanner.rb +3 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe5120a666d50dfc4b5e1e27aa69c844a869d6b1
|
4
|
+
data.tar.gz: 931daacdf7163d66f11a790f2b980785263a7a2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1093d7a3097c88a038ad3dad0f11301e5080dd495246199bdd479a4f0c044fabf80db13de8ab244822e65dcc74930978cd2a072f093789f6b3daabbace5ff1d
|
7
|
+
data.tar.gz: 23b3509b55f952fbcc08db3cd7ee33fa5d3783ccf7ac08483553e0b3af948345ee443aff4e62f195d64ac32b8e6d200bbaec6b4befe733cbbfdcd6227ae9d4eb
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.15
|
data/lib/sfpagent/agent.rb
CHANGED
@@ -8,6 +8,7 @@ require 'net/http'
|
|
8
8
|
require 'logger'
|
9
9
|
require 'json'
|
10
10
|
require 'digest/md5'
|
11
|
+
require 'shellwords'
|
11
12
|
|
12
13
|
module Sfp
|
13
14
|
module Agent
|
@@ -513,8 +514,8 @@ module Sfp
|
|
513
514
|
|
514
515
|
def self.uninstall_module(name)
|
515
516
|
return false if @@config[:modules_dir] == ''
|
516
|
-
|
517
|
-
module_dir
|
517
|
+
module_dir = Shellwords.escape(File.expand_path("#{@@config[:modules_dir]}/#{name}"))
|
518
|
+
return false if not subpath(module_dir, @@config[:modules_dir])
|
518
519
|
if File.directory?(module_dir)
|
519
520
|
result = !!system("rm -rf #{module_dir}")
|
520
521
|
else
|
@@ -542,8 +543,9 @@ module Sfp
|
|
542
543
|
end
|
543
544
|
|
544
545
|
# delete old files
|
545
|
-
module_dir = "#{@@config[:modules_dir]}/#{name}"
|
546
|
-
|
546
|
+
module_dir = Shellwords.escape("#{@@config[:modules_dir]}/#{name}")
|
547
|
+
return false if not subpath(module_dir, @@config[:modules_dir])
|
548
|
+
system("rm -rf #{module_dir}") if File.exist?(module_dir)
|
547
549
|
|
548
550
|
# save the archive
|
549
551
|
Dir.mkdir("#{module_dir}", 0700)
|
@@ -553,10 +555,14 @@ module Sfp
|
|
553
555
|
system("cd #{module_dir}; tar xvf data.tgz")
|
554
556
|
Dir.entries(module_dir).each { |name|
|
555
557
|
next if name == '.' or name == '..'
|
556
|
-
|
557
|
-
|
558
|
+
name = Shellwords.escape(name)
|
559
|
+
target = "#{module_dir}/#{name}"
|
560
|
+
return false if not subpath(target, @@config[:modules_dir])
|
561
|
+
if File.directory? target
|
562
|
+
system("cd #{target} && mv * .. && mv .* .. 2>/dev/null ; cd .. && rm -rf #{name}")
|
558
563
|
end
|
559
|
-
|
564
|
+
datafile = "#{module_dir}/data.tgz"
|
565
|
+
File.delete(datafile) if File.exist?(datafile)
|
560
566
|
}
|
561
567
|
|
562
568
|
load_modules(@@config) if reload
|
@@ -661,7 +667,7 @@ module Sfp
|
|
661
667
|
f.truncate(f.pos)
|
662
668
|
end
|
663
669
|
rescue Exception => e
|
664
|
-
Sfp::Agent.
|
670
|
+
Sfp::Agent.warn 'cannot update /etc/hosts'
|
665
671
|
end
|
666
672
|
end
|
667
673
|
|
@@ -677,6 +683,15 @@ module Sfp
|
|
677
683
|
@@agents_database = JSON[File.read(AgentsDataFile)]
|
678
684
|
end
|
679
685
|
|
686
|
+
# return true if path1 is subpath of path2, otherwise false
|
687
|
+
def self.subpath(path1, path2)
|
688
|
+
path1 = File.expand_path(path1)
|
689
|
+
path2 = File.expand_path(path2)
|
690
|
+
(path1[0,path2.length] == path2)
|
691
|
+
end
|
692
|
+
|
693
|
+
|
694
|
+
|
680
695
|
class Maintenance
|
681
696
|
IntervalTime = 600 # 10 minutes
|
682
697
|
|
data/lib/sfpagent/sfplanner.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'shellwords'
|
4
|
+
|
3
5
|
class Planner
|
4
6
|
def initialize(p={})
|
5
7
|
# TODO
|
@@ -63,7 +65,7 @@ class Planner
|
|
63
65
|
f.write(dot)
|
64
66
|
f.flush
|
65
67
|
}
|
66
|
-
!!system("dot -Tpng -o #{image_file} #{dot_file}")
|
68
|
+
!!system("dot -Tpng -o #{Shellwords.escape(image_file)} #{Shellwords.escape(dot_file)}")
|
67
69
|
ensure
|
68
70
|
File.delete(dot_file) if File.exist?(dot_file)
|
69
71
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sfpagent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Herry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sfp
|
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
103
|
rubyforge_project: sfpagent
|
104
|
-
rubygems_version: 2.
|
104
|
+
rubygems_version: 2.1.10
|
105
105
|
signing_key:
|
106
106
|
specification_version: 4
|
107
107
|
summary: SFP Agent
|