vagrant-nfs4j 0.1.2 → 0.2.0
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/Vagrantfile +1 -3
- data/bin/request_uac_header.bat +33 -0
- data/config.yaml +2 -2
- data/lib/vagrant-nfs4j/config/nfs4j.rb +12 -5
- data/lib/vagrant-nfs4j/nfs4j_daemon/wrapper.rb +18 -12
- data/lib/vagrant-nfs4j/synced_folder.rb +22 -3
- data/lib/vagrant-nfs4j/version.rb +1 -1
- metadata +2 -2
- data/bin/setupfirewall.vbs +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b0558819c167f813246adebc01045532d038d7cbff96d9d98003628032cc10e
|
4
|
+
data.tar.gz: 8fb79f415a8af80fb941825687c649bf324ede35c56ba8faa9aa7f59d7062b69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f44e09f8fabc2630fa9c03878388bf9082671d37841d534fabec67b6eb0849fbefe8251365cf86e36b7de0b5061e573003695622c16f190d5762f5c4db051549
|
7
|
+
data.tar.gz: 9068d4a71bd8d115e21cab38872375358b7cbdbb3c9c59d4e9593a333a750a8b920f95c916190cf5cc1e993303bcea3826648e62c65565a50773a125f7a5f18b
|
data/Vagrantfile
CHANGED
@@ -54,9 +54,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
54
54
|
config.vm.synced_folder source, target,
|
55
55
|
id: "#{id}",
|
56
56
|
type: 'nfs',
|
57
|
-
mount_options: mount_options
|
58
|
-
nfs_version: '4.1',
|
59
|
-
nfs_udp: false
|
57
|
+
mount_options: mount_options
|
60
58
|
end
|
61
59
|
end
|
62
60
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
@echo off
|
2
|
+
|
3
|
+
REM --> Place this shit on top on bat
|
4
|
+
REM --> https://stackoverflow.com/questions/1894967/how-to-request-administrator-access-inside-a-batch-file/10052222
|
5
|
+
|
6
|
+
:: BatchGotAdmin
|
7
|
+
:-------------------------------------
|
8
|
+
REM --> Check for permissions
|
9
|
+
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
|
10
|
+
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
|
11
|
+
) ELSE (
|
12
|
+
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
|
13
|
+
)
|
14
|
+
|
15
|
+
REM --> If error flag set, we do not have admin.
|
16
|
+
if '%errorlevel%' NEQ '0' (
|
17
|
+
echo Requesting administrative privileges...
|
18
|
+
goto UACPrompt
|
19
|
+
) else ( goto gotAdmin )
|
20
|
+
|
21
|
+
:UACPrompt
|
22
|
+
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
|
23
|
+
set params= %*
|
24
|
+
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
|
25
|
+
|
26
|
+
"%temp%\getadmin.vbs"
|
27
|
+
del "%temp%\getadmin.vbs"
|
28
|
+
exit /B
|
29
|
+
|
30
|
+
:gotAdmin
|
31
|
+
pushd "%CD%"
|
32
|
+
CD /D "%~dp0"
|
33
|
+
:--------------------------------------
|
data/config.yaml
CHANGED
@@ -2,7 +2,7 @@ ip_address: 192.168.1.100
|
|
2
2
|
synced_folders:
|
3
3
|
user:
|
4
4
|
source: 'C:\Users\Toilal' # absolute or relative path from Vagrantfile
|
5
|
-
target: '/
|
5
|
+
target: '/user' # absolute or relative path from home of VM
|
6
6
|
project:
|
7
7
|
source: 'D:\' # absolute or relative path from Vagrantfile
|
8
|
-
target: '/
|
8
|
+
target: '/hdd' # absolute or relative path from home of VM
|
@@ -3,7 +3,6 @@ require 'vagrant'
|
|
3
3
|
module VagrantNfs4j
|
4
4
|
module Config
|
5
5
|
class Nfs4j < Vagrant.plugin('2', :config)
|
6
|
-
attr_accessor :config
|
7
6
|
attr_accessor :shares_config
|
8
7
|
attr_accessor :host_ip
|
9
8
|
attr_accessor :api_port
|
@@ -16,7 +15,6 @@ module VagrantNfs4j
|
|
16
15
|
attr_accessor :java_opts
|
17
16
|
|
18
17
|
def initialize
|
19
|
-
@config = UNSET_VALUE
|
20
18
|
@shares_config = UNSET_VALUE
|
21
19
|
@host_ip = UNSET_VALUE
|
22
20
|
@api_port = UNSET_VALUE
|
@@ -31,7 +29,6 @@ module VagrantNfs4j
|
|
31
29
|
|
32
30
|
def validate(machine)
|
33
31
|
errors = []
|
34
|
-
errors << 'nfs4j.config cannot be nil.' if machine.config.nfs4j.config.nil?
|
35
32
|
errors << 'nfs4j.shares_config cannot be nil.' if machine.config.nfs4j.shares_config.nil?
|
36
33
|
errors << 'nfs4j.host_ip cannot be nil.' if machine.config.nfs4j.host_ip.nil?
|
37
34
|
errors << 'nfs4j.api_port cannot be nil.' if machine.config.nfs4j.api_port.nil?
|
@@ -40,17 +37,27 @@ module VagrantNfs4j
|
|
40
37
|
end
|
41
38
|
|
42
39
|
def finalize!
|
43
|
-
@config = {} if @config == UNSET_VALUE
|
44
40
|
@shares_config = {} if @shares_config == UNSET_VALUE
|
45
41
|
@host_ip = "" if @host_ip == UNSET_VALUE
|
46
42
|
@api_port = 9732 if @api_port == UNSET_VALUE
|
47
43
|
@setup_firewall = true if @setup_firewall == UNSET_VALUE
|
48
44
|
@daemon_start = true if @daemon_start == UNSET_VALUE
|
49
45
|
@daemon_exe = true if @daemon_exe == UNSET_VALUE
|
50
|
-
@daemon_jar =
|
46
|
+
@daemon_jar = false if @daemon_jar == UNSET_VALUE
|
51
47
|
@daemon_opts = nil if @daemon_opts == UNSET_VALUE
|
52
48
|
@java_home = ENV['JAVA_HOME'] if @java_home == UNSET_VALUE
|
53
49
|
@java_opts = ENV['JAVA_OPTS'] if @java_opts == UNSET_VALUE
|
50
|
+
|
51
|
+
if @daemon_jar
|
52
|
+
@daemon_exe = false
|
53
|
+
end
|
54
|
+
|
55
|
+
if @daemon_exe
|
56
|
+
@daemon_jar = false
|
57
|
+
end
|
58
|
+
|
59
|
+
ENV['JAVA_HOME'] = @java_home if @java_home
|
60
|
+
ENV['JAVA_OPTS'] = @java_opts if @java_opts
|
54
61
|
end
|
55
62
|
end
|
56
63
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rest-client'
|
2
2
|
require 'json'
|
3
|
+
require 'fileutils'
|
3
4
|
|
4
5
|
require_relative 'errors'
|
5
6
|
|
@@ -30,6 +31,8 @@ module VagrantNfs4j
|
|
30
31
|
elsif File.exist?(@bearer_file)
|
31
32
|
File.delete(@bearer_file)
|
32
33
|
end
|
34
|
+
|
35
|
+
@setup_firewall_script = "#{Vagrant.user_data_path}/tmp/nfs4j.setup_firewall.bat"
|
33
36
|
end
|
34
37
|
|
35
38
|
def setup_firewall(ui, setup_firewall, java_home)
|
@@ -50,24 +53,29 @@ module VagrantNfs4j
|
|
50
53
|
unless system(sprintf(rule_exist, rule_name))
|
51
54
|
|
52
55
|
|
53
|
-
rule_template = "advfirewall firewall add rule name=\"%s\" dir=\"%s\" action=allow protocol=TCP localport=#{ports.join(',')} program=\"%s\" profile=any"
|
56
|
+
rule_template = "netsh advfirewall firewall add rule name=\"%s\" dir=\"%s\" action=allow protocol=TCP localport=#{ports.join(',')} program=\"%s\" profile=any"
|
54
57
|
|
55
58
|
all_rules = []
|
56
|
-
all_rules.push("advfirewall firewall delete rule name=\"#{rule_name}\"")
|
59
|
+
all_rules.push("netsh advfirewall firewall delete rule name=\"#{rule_name}\"")
|
57
60
|
all_rules.push(sprintf(rule_template, rule_name, 'in', java_exe))
|
58
61
|
all_rules.push(sprintf(rule_template, rule_name, 'out', java_exe))
|
59
62
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
setup_firewall_template_script = VagrantNfs4j.get_path_for_file('request_uac_header.bat')
|
64
|
+
File.delete(@setup_firewall_script) if File.exist?(@setup_firewall_script)
|
65
|
+
FileUtils.cp(setup_firewall_template_script, @setup_firewall_script)
|
66
|
+
open(@setup_firewall_script, 'a') do |f|
|
67
|
+
all_rules.each do |rule|
|
68
|
+
f.puts rule
|
69
|
+
end
|
65
70
|
end
|
66
71
|
|
67
72
|
if setup_firewall
|
68
73
|
ui.detail(I18n.t('vagrant_nfs4j.nfs4j_daemon.installing_firewall_rule', rule_name: rule_name))
|
69
74
|
|
70
|
-
|
75
|
+
setup_firewall_script_response = system(@setup_firewall_script)
|
76
|
+
File.delete(@setup_firewall_script) if File.exist?(@setup_firewall_script)
|
77
|
+
|
78
|
+
if setup_firewall_script_response and system(sprintf(rule_exist, rule_name))
|
71
79
|
ui.detail(I18n.t('vagrant_nfs4j.nfs4j_daemon.firewall_rule_installed', rule_name: rule_name))
|
72
80
|
else
|
73
81
|
ui.detail(I18n.t('vagrant_nfs4j.nfs4j_daemon.firewall_error'))
|
@@ -128,7 +136,7 @@ module VagrantNfs4j
|
|
128
136
|
VagrantNfs4j::Utils.which("java")
|
129
137
|
end
|
130
138
|
|
131
|
-
jar.is_a?(String) ? "#{java_exe} -jar #{jar}" : "
|
139
|
+
jar.is_a?(String) ? "#{java_exe} -jar #{jar}" : "#{java_exe} -jar #{@jar}"
|
132
140
|
end
|
133
141
|
|
134
142
|
unless exe
|
@@ -138,9 +146,7 @@ module VagrantNfs4j
|
|
138
146
|
java_opts = " #{java_opts}"
|
139
147
|
end
|
140
148
|
|
141
|
-
|
142
|
-
bin = "#{java_home}\\bin\\#{bin}#{java_opts}"
|
143
|
-
end
|
149
|
+
bin = "#{bin}#{java_opts}"
|
144
150
|
end
|
145
151
|
|
146
152
|
if opts
|
@@ -21,10 +21,29 @@ module VagrantNfs4j
|
|
21
21
|
machine_ip = nfsopts[:nfs_machine_ip]
|
22
22
|
machine_ip = [machine_ip] unless machine_ip.is_a?(Array)
|
23
23
|
|
24
|
+
# Keep nfs_version and nfs_udp configured by user to remove default
|
25
|
+
# vers=3,udp options
|
26
|
+
config_nfs_versions = {}
|
27
|
+
config_nfs_udps = {}
|
28
|
+
folders.each do |id, opts|
|
29
|
+
config_nfs_versions[id] = opts[:nfs_version]
|
30
|
+
config_nfs_udps[id] = opts[:nfs_udp]
|
31
|
+
end
|
32
|
+
|
24
33
|
# Prepare the folder, this means setting up various options
|
25
34
|
# and such on the folder itself.
|
26
35
|
folders.each {|id, opts| prepare_folder(machine, opts)}
|
27
36
|
|
37
|
+
# Restore configured nfs_version
|
38
|
+
folders.each do |id, opts|
|
39
|
+
opts[:nfs_udp] = config_nfs_udps[id]
|
40
|
+
opts[:nfs_version] = config_nfs_versions[id]
|
41
|
+
unless opts[:nfs_version]
|
42
|
+
# Use nfs v4.1 as default version
|
43
|
+
opts[:nfs_version] = '4.1'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
28
47
|
# Determine what folders we'll export
|
29
48
|
export_folders = folders.dup
|
30
49
|
export_folders.keys.each do |id|
|
@@ -59,16 +78,16 @@ module VagrantNfs4j
|
|
59
78
|
folders.each do |id, opts|
|
60
79
|
opts = opts.dup
|
61
80
|
|
81
|
+
real_hostpath = opts[:hostpath]
|
62
82
|
if Vagrant::Util::Platform.windows?
|
63
|
-
opts[:hostpath] = VagrantNfs4j::Utils.
|
64
|
-
opts[:hostpath] = VagrantNfs4j::Utils.prefix_alias(machine, opts[:hostpath])
|
83
|
+
opts[:hostpath] = VagrantNfs4j::Utils.prefix_alias(machine, opts[:guestpath])
|
65
84
|
end
|
66
85
|
|
67
86
|
opts[:mount_options] = VagrantNfs4j::Utils.apply_mount_options(opts[:mount_options])
|
68
87
|
|
69
88
|
machine.ui.detail(I18n.t('vagrant.actions.vm.share_folders.mounting_entry',
|
70
89
|
guestpath: opts[:guestpath],
|
71
|
-
hostpath:
|
90
|
+
hostpath: real_hostpath))
|
72
91
|
|
73
92
|
mount_folders[id] = opts
|
74
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-nfs4j
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Alvergnat
|
@@ -55,7 +55,7 @@ files:
|
|
55
55
|
- Vagrantfile
|
56
56
|
- bin/nfs4j-daemon.exe
|
57
57
|
- bin/nfs4j-daemon.jar
|
58
|
-
- bin/
|
58
|
+
- bin/request_uac_header.bat
|
59
59
|
- config.yaml
|
60
60
|
- lib/vagrant-nfs4j.rb
|
61
61
|
- lib/vagrant-nfs4j/cap/nfs.rb
|
data/bin/setupfirewall.vbs
DELETED