specinfra 2.0.0.beta15 → 2.0.0.beta16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/specinfra.rb +1 -1
- data/lib/specinfra/command/aix/base/file.rb +15 -13
- data/lib/specinfra/command/aix/base/group.rb +5 -3
- data/lib/specinfra/command/aix/base/package.rb +7 -5
- data/lib/specinfra/command/aix/base/port.rb +5 -3
- data/lib/specinfra/command/aix/base/service.rb +7 -5
- data/lib/specinfra/command/aix/base/user.rb +10 -8
- data/lib/specinfra/command/arch/base/file.rb +4 -2
- data/lib/specinfra/command/arch/base/package.rb +17 -15
- data/lib/specinfra/command/arch/base/service.rb +3 -1
- data/lib/specinfra/command/base.rb +70 -68
- data/lib/specinfra/command/base/cron.rb +8 -6
- data/lib/specinfra/command/base/file.rb +94 -92
- data/lib/specinfra/command/base/group.rb +8 -6
- data/lib/specinfra/command/base/host.rb +18 -16
- data/lib/specinfra/command/base/mail_alias.rb +5 -3
- data/lib/specinfra/command/base/package.rb +36 -34
- data/lib/specinfra/command/base/port.rb +7 -5
- data/lib/specinfra/command/base/process.rb +10 -9
- data/lib/specinfra/command/base/routing_table.rb +6 -4
- data/lib/specinfra/command/base/service.rb +19 -17
- data/lib/specinfra/command/base/user.rb +24 -22
- data/lib/specinfra/command/darwin/base/file.rb +35 -33
- data/lib/specinfra/command/darwin/base/package.rb +12 -10
- data/lib/specinfra/command/darwin/base/port.rb +5 -3
- data/lib/specinfra/command/darwin/base/service.rb +7 -5
- data/lib/specinfra/command/debian/base/package.rb +16 -14
- data/lib/specinfra/command/debian/base/service.rb +5 -3
- data/lib/specinfra/command/fedora/base/service.rb +7 -6
- data/lib/specinfra/command/fedora/v15/service.rb +3 -1
- data/lib/specinfra/command/freebsd/base/file.rb +8 -6
- data/lib/specinfra/command/freebsd/base/package.rb +13 -11
- data/lib/specinfra/command/freebsd/base/port.rb +5 -3
- data/lib/specinfra/command/freebsd/base/service.rb +4 -2
- data/lib/specinfra/command/freebsd/v10/package.rb +13 -11
- data/lib/specinfra/command/gentoo/base/package.rb +4 -2
- data/lib/specinfra/command/gentoo/base/service.rb +9 -7
- data/lib/specinfra/command/linux/base/file.rb +10 -8
- data/lib/specinfra/command/linux/base/interface.rb +13 -11
- data/lib/specinfra/command/linux/base/iptables.rb +9 -7
- data/lib/specinfra/command/linux/base/kernel_module.rb +4 -2
- data/lib/specinfra/command/linux/base/lxc_container.rb +7 -5
- data/lib/specinfra/command/linux/base/selinux.rb +9 -7
- data/lib/specinfra/command/linux/base/zfs.rb +3 -1
- data/lib/specinfra/command/nixos/base/package.rb +12 -10
- data/lib/specinfra/command/nixos/base/service.rb +3 -1
- data/lib/specinfra/command/openbsd/base/file.rb +31 -29
- data/lib/specinfra/command/openbsd/base/interface.rb +8 -13
- data/lib/specinfra/command/openbsd/base/mail_alias.rb +4 -2
- data/lib/specinfra/command/openbsd/base/package.rb +10 -8
- data/lib/specinfra/command/openbsd/base/port.rb +4 -2
- data/lib/specinfra/command/openbsd/base/service.rb +7 -5
- data/lib/specinfra/command/openbsd/base/user.rb +8 -6
- data/lib/specinfra/command/opensuse/base/service.rb +3 -1
- data/lib/specinfra/command/plamo/base/package.rb +7 -5
- data/lib/specinfra/command/plamo/base/service.rb +6 -4
- data/lib/specinfra/command/redhat/base/file.rb +5 -3
- data/lib/specinfra/command/redhat/base/package.rb +14 -12
- data/lib/specinfra/command/redhat/base/service.rb +4 -2
- data/lib/specinfra/command/redhat/base/yumrepo.rb +7 -5
- data/lib/specinfra/command/redhat/v5/iptables.rb +7 -5
- data/lib/specinfra/command/redhat/v7/service.rb +3 -1
- data/lib/specinfra/command/smartos/base/package.rb +10 -8
- data/lib/specinfra/command/smartos/base/service.rb +7 -5
- data/lib/specinfra/command/solaris/base/cron.rb +8 -6
- data/lib/specinfra/command/solaris/base/file.rb +15 -13
- data/lib/specinfra/command/solaris/base/group.rb +5 -3
- data/lib/specinfra/command/solaris/base/host.rb +7 -5
- data/lib/specinfra/command/solaris/base/ipfilter.rb +4 -2
- data/lib/specinfra/command/solaris/base/ipnat.rb +5 -3
- data/lib/specinfra/command/solaris/base/package.rb +7 -5
- data/lib/specinfra/command/solaris/base/port.rb +9 -7
- data/lib/specinfra/command/solaris/base/service.rb +14 -13
- data/lib/specinfra/command/solaris/base/user.rb +10 -8
- data/lib/specinfra/command/solaris/base/zfs.rb +3 -1
- data/lib/specinfra/command/solaris/v10/file.rb +33 -31
- data/lib/specinfra/command/solaris/v10/group.rb +4 -2
- data/lib/specinfra/command/solaris/v10/host.rb +9 -7
- data/lib/specinfra/command/solaris/v10/package.rb +7 -5
- data/lib/specinfra/command/solaris/v10/user.rb +8 -6
- data/lib/specinfra/command/suse/base/package.rb +14 -12
- data/lib/specinfra/command/suse/base/service.rb +4 -2
- data/lib/specinfra/command/ubuntu/base/ppa.rb +11 -9
- data/lib/specinfra/command/ubuntu/base/service.rb +4 -2
- data/lib/specinfra/command/windows/base.rb +11 -10
- data/lib/specinfra/command/windows/base/feature.rb +11 -9
- data/lib/specinfra/command/windows/base/file.rb +72 -71
- data/lib/specinfra/command/windows/base/group.rb +7 -5
- data/lib/specinfra/command/windows/base/host.rb +18 -16
- data/lib/specinfra/command/windows/base/hot_fix.rb +13 -11
- data/lib/specinfra/command/windows/base/iis_app_pool.rb +11 -9
- data/lib/specinfra/command/windows/base/iis_website.rb +26 -24
- data/lib/specinfra/command/windows/base/package.rb +7 -5
- data/lib/specinfra/command/windows/base/port.rb +11 -9
- data/lib/specinfra/command/windows/base/process.rb +5 -3
- data/lib/specinfra/command/windows/base/registry_key.rb +36 -35
- data/lib/specinfra/command/windows/base/scheduled_task.rb +6 -4
- data/lib/specinfra/command/windows/base/service.rb +21 -19
- data/lib/specinfra/command/windows/base/user.rb +16 -14
- data/lib/specinfra/runner.rb +1 -2
- data/lib/specinfra/version.rb +1 -1
- data/spec/command/base_spec.rb +12 -4
- data/spec/command/module/systemd_spec.rb +14 -4
- data/spec/command/redhat/interface_spec.rb +1 -1
- metadata +1 -2
- data/lib/specinfra/command/smartos/tmp.rb +0 -8
@@ -1,19 +1,20 @@
|
|
1
1
|
class Specinfra::Command::Solaris::Base::Service < Specinfra::Command::Base::Service
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_enabled(service, level=nil)
|
4
|
+
"svcs -l #{escape(service)} 2> /dev/null | egrep '^enabled *true$'"
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def check_running(service)
|
8
|
+
"svcs -l #{escape(service)} status 2> /dev/null | egrep '^state *online$'"
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
def check_has_property(svc, property)
|
12
|
+
commands = []
|
13
|
+
property.sort.each do |key, value|
|
14
|
+
regexp = "^#{value}$"
|
15
|
+
commands << "svcprop -p #{escape(key)} #{escape(svc)} | grep -- #{escape(regexp)}"
|
16
|
+
end
|
17
|
+
commands.join(' && ')
|
15
18
|
end
|
16
|
-
commands.join(' && ')
|
17
19
|
end
|
18
|
-
|
19
20
|
end
|
@@ -1,13 +1,15 @@
|
|
1
1
|
class Specinfra::Command::Solaris::Base::User < Specinfra::Command::Base::User
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
class << self
|
3
|
+
def check_belongs_to_group(user, group)
|
4
|
+
"id -Gn #{escape(user)} | grep -- #{escape(group)}"
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def check_has_home_directory(user, path_to_home)
|
8
|
+
"getent passwd #{escape(user)} | cut -f 6 -d ':' | grep -w -- #{escape(path_to_home)}"
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def check_has_login_shell(user, path_to_shell)
|
12
|
+
"getent passwd #{escape(user)} | cut -f 7 -d ':' | grep -w -- #{escape(path_to_shell)}"
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
@@ -1,40 +1,42 @@
|
|
1
1
|
class Specinfra::Command::Solaris::V10::File < Specinfra::Command::Solaris::Base::File
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
class << self
|
3
|
+
# reference: http://perldoc.perl.org/functions/stat.html
|
4
|
+
def check_has_mode(file, mode)
|
5
|
+
regexp = "^#{mode}$"
|
6
|
+
"perl -e 'printf \"%o\", (stat shift)[2]&07777' #{escape(file)} | grep -- #{escape(regexp)}"
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
# reference: http://perldoc.perl.org/functions/stat.html
|
10
|
+
# http://www.tutorialspoint.com/perl/perl_getpwuid.htm
|
11
|
+
def check_is_owned_by(file, owner)
|
12
|
+
regexp = "^#{owner}$"
|
13
|
+
"perl -e 'printf \"%s\", getpwuid((stat(\"#{escape(file)}\"))[4])' | grep -- #{escape(regexp)}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
# reference: http://perldoc.perl.org/functions/stat.html
|
17
|
+
# http://www.tutorialspoint.com/perl/perl_getgrgid.htm
|
18
|
+
def check_is_grouped(file, group)
|
19
|
+
regexp = "^#{group}$"
|
20
|
+
"perl -e 'printf \"%s\", getgrgid((stat(\"#{escape(file)}\"))[5])' | grep -- #{escape(regexp)}"
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
# reference: http://www.tutorialspoint.com/perl/perl_readlink.htm
|
24
|
+
def check_is_linked_to(link, target)
|
25
|
+
regexp = "^#{target}$"
|
26
|
+
"perl -e 'printf \"%s\", readlink(\"#{escape(link)}\")' | grep -- #{escape(regexp)}"
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
def check_contain(file, expected_pattern)
|
30
|
+
"grep -- #{escape(expected_pattern)} #{escape(file)}"
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
def check_has_md5checksum(file, expected)
|
34
|
+
"digest -a md5 -v #{escape(file)} | grep -iw -- #{escape(expected)}"
|
35
|
+
end
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
# reference: http://perldoc.perl.org/functions/stat.html
|
38
|
+
def get_mode(file)
|
39
|
+
"perl -e 'printf \"%o\", (stat shift)[2]&07777' #{escape(file)}"
|
40
|
+
end
|
39
41
|
end
|
40
42
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Specinfra::Command::Solaris::V10::Group < Specinfra::Command::Solaris::Base::Group
|
2
|
-
|
3
|
-
|
2
|
+
class << self
|
3
|
+
def check_exists(group)
|
4
|
+
"getent group | grep -w -- #{escape(group)}"
|
5
|
+
end
|
4
6
|
end
|
5
7
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
class Specinfra::Command::Solaris::V10::Host < Specinfra::Command::Solaris::Base::Host
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_reachable(host, port, proto, timeout)
|
4
|
+
if port.nil?
|
5
|
+
"ping -n #{escape(host)} #{escape(timeout)}"
|
6
|
+
elsif proto == 'tcp'
|
7
|
+
"echo 'quit' | mconnect -p #{escape(port)} #{escape(host)} > /dev/null 2>&1"
|
8
|
+
else
|
9
|
+
raise NotImplementedError.new
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -1,9 +1,11 @@
|
|
1
1
|
class Specinfra::Command::Solaris::V10::Package < Specinfra::Command::Solaris::Base::Package
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_installed(package, version=nil)
|
4
|
+
cmd = "pkginfo -q #{escape(package)}"
|
5
|
+
if version
|
6
|
+
cmd = "#{cmd} | grep -- #{escape(version)}"
|
7
|
+
end
|
8
|
+
cmd
|
6
9
|
end
|
7
|
-
cmd
|
8
10
|
end
|
9
11
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
class Specinfra::Command::Solaris::V10::User < Specinfra::Command::Solaris::Base::User
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
class << self
|
3
|
+
def check_belongs_to_group(user, group)
|
4
|
+
"id -ap #{escape(user)} | grep -- #{escape(group)}"
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def check_has_authorized_key(user, key)
|
8
|
+
key.sub!(/\s+\S*$/, '') if key.match(/^\S+\s+\S+\s+\S*$/)
|
9
|
+
"grep -- #{escape(key)} ~#{escape(user)}/.ssh/authorized_keys"
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
@@ -1,19 +1,21 @@
|
|
1
1
|
class Specinfra::Command::Suse::Base::Package < Specinfra::Command::Linux::Base::Package
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_installed(package,version=nil)
|
4
|
+
cmd = "rpm -q #{escape(package)}"
|
5
|
+
if version
|
6
|
+
cmd = "#{cmd} | grep -w -- #{escape(version)}"
|
7
|
+
end
|
8
|
+
cmd
|
6
9
|
end
|
7
|
-
cmd
|
8
|
-
end
|
9
10
|
|
10
|
-
|
11
|
+
alias :check_is_installed_by_rpm :check_is_installed
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def install(package)
|
14
|
+
cmd = "zypper -n install #{package}"
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
def get_version(package, opts=nil)
|
18
|
+
"rpm -qi #{package} | grep Version | awk '{print $3}'"
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
class Specinfra::Command::Suse::Base::Service < Specinfra::Command::Linux::Base::Service
|
2
|
-
|
3
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_enabled(service, level=3)
|
4
|
+
"chkconfig --list #{escape(service)} | grep #{level}:on"
|
5
|
+
end
|
4
6
|
end
|
5
7
|
end
|
6
8
|
|
@@ -1,15 +1,17 @@
|
|
1
1
|
class Specinfra::Command::Ubuntu::Base::Ppa < Specinfra::Command::Debian::Base::Ppa
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
class << self
|
3
|
+
def check_exists(package)
|
4
|
+
%Q{find /etc/apt/ -name \*.list | xargs grep -o "deb http://ppa.launchpad.net/#{to_apt_line_uri(package)}"}
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def check_is_enabled(package)
|
8
|
+
%Q{find /etc/apt/ -name \*.list | xargs grep -o "^deb http://ppa.launchpad.net/#{to_apt_line_uri(package)}"}
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
+
private
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
def to_apt_line_uri(repo)
|
14
|
+
escape(repo.gsub(/^ppa:/,''))
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Specinfra::Command::Ubuntu::Base::Service < Specinfra::Command::Debian::Base::Service
|
2
|
-
|
3
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_running(service)
|
4
|
+
"service #{escape(service)} status && service #{escape(service)} status | grep 'running'"
|
5
|
+
end
|
4
6
|
end
|
5
7
|
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
class Specinfra::Command::Windows::Base
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
class << self
|
3
|
+
def create
|
4
|
+
self
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
private
|
8
|
+
def windows_account account
|
9
|
+
match = /((.+)\\)?(.+)/.match account
|
10
|
+
domain = match[2]
|
11
|
+
name = match[3]
|
12
|
+
[name, domain]
|
13
|
+
end
|
12
14
|
end
|
13
|
-
|
14
15
|
end
|
@@ -1,14 +1,16 @@
|
|
1
1
|
class Specinfra::Command::Windows::Base::Feature < Specinfra::Command::Windows::Base
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_enabled(name,provider)
|
4
|
+
if provider.nil?
|
5
|
+
cmd = "@(ListWindowsFeatures -feature #{name}).count -gt 0"
|
6
|
+
else
|
7
|
+
cmd = "@(ListWindowsFeatures -feature #{name} -provider #{provider}).count -gt 0"
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
Backend::PowerShell::Command.new do
|
11
|
+
using 'list_windows_features.ps1'
|
12
|
+
exec cmd
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,98 +1,99 @@
|
|
1
1
|
class Specinfra::Command::Windows::Base::File < Specinfra::Command::Windows::Base
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class << self
|
3
|
+
def check_is_file(file)
|
4
|
+
cmd = item_has_attribute file, 'Archive'
|
5
|
+
Backend::PowerShell::Command.new do
|
6
|
+
exec cmd
|
7
|
+
end
|
6
8
|
end
|
7
|
-
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
def check_is_directory(dir)
|
11
|
+
cmd = item_has_attribute dir, 'Directory'
|
12
|
+
Backend::PowerShell::Command.new do
|
13
|
+
exec cmd
|
14
|
+
end
|
13
15
|
end
|
14
|
-
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def check_is_hidden(file)
|
18
|
+
cmd = item_has_attribute file, 'Hidden'
|
19
|
+
Backend::PowerShell::Command.new do
|
20
|
+
exec cmd
|
21
|
+
end
|
20
22
|
end
|
21
|
-
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def check_is_readonly(file)
|
25
|
+
cmd = item_has_attribute file, 'ReadOnly'
|
26
|
+
Backend::PowerShell::Command.new do
|
27
|
+
exec cmd
|
28
|
+
end
|
27
29
|
end
|
28
|
-
end
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
def check_is_system(file)
|
32
|
+
cmd = item_has_attribute file, 'System'
|
33
|
+
Backend::PowerShell::Command.new do
|
34
|
+
exec cmd
|
35
|
+
end
|
34
36
|
end
|
35
|
-
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
def get_content(file)
|
39
|
+
"[Io.File]::ReadAllText('#{file}')"
|
40
|
+
end
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
42
|
+
def check_is_accessible_by_user(file, user, access)
|
43
|
+
case access
|
44
|
+
when 'r'
|
45
|
+
check_is_readable(file, user)
|
46
|
+
when 'w'
|
47
|
+
check_is_writable(file, user)
|
48
|
+
when 'x'
|
49
|
+
check_is_executable(file, user)
|
50
|
+
end
|
49
51
|
end
|
50
|
-
end
|
51
52
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
def check_is_readable(file, by_whom)
|
54
|
+
Backend::PowerShell::Command.new do
|
55
|
+
using 'check_file_access_rules.ps1'
|
56
|
+
exec "CheckFileAccessRules -path '#{file}' -identity '#{get_identity by_whom}' -rules @('FullControl', 'Modify', 'ReadAndExecute', 'Read', 'ListDirectory')"
|
57
|
+
end
|
56
58
|
end
|
57
|
-
end
|
58
59
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
60
|
+
def check_is_writable(file, by_whom)
|
61
|
+
Backend::PowerShell::Command.new do
|
62
|
+
using 'check_file_access_rules.ps1'
|
63
|
+
exec "CheckFileAccessRules -path '#{file}' -identity '#{get_identity by_whom}' -rules @('FullControl', 'Modify', 'Write')"
|
64
|
+
end
|
63
65
|
end
|
64
|
-
end
|
65
66
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
def check_is_executable(file, by_whom)
|
68
|
+
Backend::PowerShell::Command.new do
|
69
|
+
using 'check_file_access_rules.ps1'
|
70
|
+
exec "CheckFileAccessRules -path '#{file}' -identity '#{get_identity by_whom}' -rules @('FullControl', 'Modify', 'ReadAndExecute', 'ExecuteFile')"
|
71
|
+
end
|
70
72
|
end
|
71
|
-
end
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
|
74
|
+
def check_contains(file, pattern)
|
75
|
+
Backend::PowerShell::Command.new do
|
76
|
+
exec "[Io.File]::ReadAllText('#{file}') -match '#{convert_regexp(pattern)}'"
|
77
|
+
end
|
76
78
|
end
|
77
|
-
end
|
78
79
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
80
|
+
def check_contains_within file, pattern, from=nil, to=nil
|
81
|
+
from ||= '^'
|
82
|
+
to ||= '$'
|
83
|
+
Backend::PowerShell::Command.new do
|
84
|
+
using 'crop_text.ps1'
|
85
|
+
exec %Q[(CropText -text ([Io.File]::ReadAllText('#{file}')) -fromPattern '#{convert_regexp(from)}' -toPattern '#{convert_regexp(to)}') -match '#{pattern}']
|
86
|
+
end
|
85
87
|
end
|
86
|
-
end
|
87
88
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
89
|
+
def check_has_version(name,version)
|
90
|
+
cmd = "((Get-Command '#{name}').FileVersionInfo.ProductVersion -eq '#{version}') -or ((Get-Command '#{name}').FileVersionInfo.FileVersion -eq '#{version}')"
|
91
|
+
Backend::PowerShell::Command.new { exec cmd }
|
92
|
+
end
|
92
93
|
|
93
|
-
|
94
|
-
|
95
|
-
|
94
|
+
private
|
95
|
+
def item_has_attribute item, attribute
|
96
|
+
"((Get-Item -Path '#{item}' -Force).attributes.ToString() -Split ', ') -contains '#{attribute}'"
|
97
|
+
end
|
96
98
|
end
|
97
|
-
|
98
99
|
end
|