Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. vagrant_root = File.dirname(__FILE__) # Vagrantfile location
  2.  
  3. $vconfig['synced_folders']['smb_username'] = "vagrant"
  4. $vconfig['synced_folders']['smb_password'] = "vagrant"
  5.  
  6. if is_windows
  7. vagrant_mount_point = `cygpath #{vagrant_root}`.strip! # Remove trailing \n
  8. vagrant_mount_point = vagrant_mount_point.gsub(/\/cygdrive/, '') # Remove '/cygdrive' prefix
  9. end
  10.  
  11. vagrant_folder_name = File.basename(vagrant_root) # Folder name only. Used as the SMB share name.
  12.  
  13. # Run command in an elevated shell.
  14. def windows_elevated_shell(args)
  15. command = 'cmd.exe'
  16. args = "/C #{args} || timeout 10"
  17. shell = WIN32OLE.new('Shell.Application')
  18. shell.ShellExecute(command, args, nil, 'runas')
  19. end
  20.  
  21. # Method to create the user and SMB network share on Windows.
  22. def windows_net_share(share_name, path)
  23. # Add the vagrant user if it does not exist.
  24. smb_username = $vconfig['synced_folders']['smb_username']
  25. smb_password = $vconfig['synced_folders']['smb_password']
  26.  
  27. command_user = "net user #{smb_username} || ( net user #{smb_username} #{smb_password} /add && WMIC USERACCOUNT WHERE \"Name='vagrant'\" SET PasswordExpires=FALSE )"
  28. @ui.info "Adding vagrant user"
  29. windows_elevated_shell command_user
  30.  
  31. # Add the SMB share if it does not exist.
  32. command_share = "net share #{share_name} || net share #{share_name}=#{path} /grant:#{smb_username},FULL"
  33. @ui.info "Adding vagrant SMB share"
  34. windows_elevated_shell command_share
  35.  
  36. # Set folder permissions.
  37. command_permissions = "icacls #{path} /grant #{smb_username}:(OI)(CI)M"
  38. @ui.info "Setting folder permissions"
  39. windows_elevated_shell command_permissions
  40. end
  41.  
  42. # Method to remove the user and SMB network share on Windows.
  43. def windows_net_share_remove(share_name)
  44. smb_username = $vconfig['synced_folders']['smb_username']
  45.  
  46. command_user = "net user #{smb_username} /delete || echo 'User #{smb_username} does not exist' && timeout 10"
  47. windows_elevated_shell command_user
  48.  
  49. command_share = "net share #{share_name} /delete || echo 'Share #{share_name} does not exist' && timeout 10"
  50. windows_elevated_shell command_share
  51. end
  52.  
  53. config.vm.synced_folder vagrant_root, vagrant_mount_point,
  54. type: "smb",
  55. smb_username: synced_folders['smb_username'],
  56. smb_password: synced_folders['smb_password']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement