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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a25723ce4c8ea1b7eb4dbd5ee377f9d83f91f0713e6e7f4f6946f9114afe7f3
4
- data.tar.gz: 3993f67f0a3acd7e3a35d9a9de324bcda5a4a8c7e65e1850117271aa438288c6
3
+ metadata.gz: 1b0558819c167f813246adebc01045532d038d7cbff96d9d98003628032cc10e
4
+ data.tar.gz: 8fb79f415a8af80fb941825687c649bf324ede35c56ba8faa9aa7f59d7062b69
5
5
  SHA512:
6
- metadata.gz: 24376034a609de4a87e860efa22f245603fe4d78ee6ccaf96edcda19c0a93aa5358b0e31470963e2159e72601c917c5cb2c82a09f0c27937ec37f60302485abe
7
- data.tar.gz: '089cd89ff5311d3080c2f173f7d692f66bd259bf52eaa3d8594d9fbd607908841056c45de549cfd2f97807f685638d42eaab3f63c44f68a725b469c7a80e01c7'
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: '/C/Users/Toilal' # absolute or relative path from home of VM
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: '/D' # absolute or relative path from home of VM
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 = true if @daemon_jar == UNSET_VALUE
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
- firewall_script = VagrantNfs4j.get_path_for_file('setupfirewall.vbs')
61
- firewall_rule = "cscript //nologo #{firewall_script}"
62
-
63
- all_rules.each do |rule|
64
- firewall_rule += " \" #{rule}\""
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
- if system(firewall_rule) and system(sprintf(rule_exist, rule_name))
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}" : "java -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
- if java_home
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.hostpath_to_share_alias(opts[:hostpath])
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: opts[:hostpath]))
90
+ hostpath: real_hostpath))
72
91
 
73
92
  mount_folders[id] = opts
74
93
  end
@@ -1,3 +1,3 @@
1
1
  module VagrantNfs4j
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  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.1.2
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/setupfirewall.vbs
58
+ - bin/request_uac_header.bat
59
59
  - config.yaml
60
60
  - lib/vagrant-nfs4j.rb
61
61
  - lib/vagrant-nfs4j/cap/nfs.rb
@@ -1,4 +0,0 @@
1
- Set UAC = CreateObject("Shell.Application")
2
- For count = 0 to (WScript.Arguments.Count - 1)
3
- UAC.ShellExecute "netsh", Replace(WScript.Arguments(count), "'", Chr(34)), "", "runas", 1
4
- Next