sfpagent 0.4.14 → 0.4.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92378212d9d54d84e43fb733aae5cc827dde5a70
4
- data.tar.gz: 2dcb686aeef8f2560972305f3117f2af9a7db486
3
+ metadata.gz: fe5120a666d50dfc4b5e1e27aa69c844a869d6b1
4
+ data.tar.gz: 931daacdf7163d66f11a790f2b980785263a7a2f
5
5
  SHA512:
6
- metadata.gz: 6581a22dea149f20bc3cd273559a43f0177321843cfc97ebaef3818ef142f11dc649ef7a8329316413a98c7d159bce7319ab5114097d2fe98f04f3fe77e61637
7
- data.tar.gz: c885f49400902ca291253f1a10e0b1d7773a965195b67ed39387658aa683f2a22260ff48be93b2f5183559e5acf38899ed99afd19cca29d31c64422ac7bdbef1
6
+ metadata.gz: b1093d7a3097c88a038ad3dad0f11301e5080dd495246199bdd479a4f0c044fabf80db13de8ab244822e65dcc74930978cd2a072f093789f6b3daabbace5ff1d
7
+ data.tar.gz: 23b3509b55f952fbcc08db3cd7ee33fa5d3783ccf7ac08483553e0b3af948345ee443aff4e62f195d64ac32b8e6d200bbaec6b4befe733cbbfdcd6227ae9d4eb
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.14
1
+ 0.4.15
@@ -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 = "#{@@config[:modules_dir]}/#{name}"
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
- system("rm -rf #{module_dir}") if File.exist? module_dir
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
- if File.directory? "#{module_dir}/#{name}"
557
- system("cd #{module_dir}/#{name}; mv * ..; mv .* .. 2>/dev/null; cd ..; rm -rf #{name}")
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
- system("cd #{module_dir}; rm data.tgz")
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.logger.error e.to_s
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
 
@@ -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.14
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-01-29 00:00:00.000000000 Z
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.0.14
104
+ rubygems_version: 2.1.10
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: SFP Agent