Check SMB credentials before using them

This commit is contained in:
Lachlan Arthur 2017-12-08 15:24:22 +10:00 committed by Chris Roberts
parent 6ef63de244
commit 01bc2627be
3 changed files with 50 additions and 8 deletions

View File

@ -0,0 +1,19 @@
Param(
[Parameter(Mandatory=$true)]
[string]$username,
[Parameter(Mandatory=$true)]
[string]$password
)
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$DSContext = New-Object System.DirectoryServices.AccountManagement.PrincipalContext(
[System.DirectoryServices.AccountManagement.ContextType]::Machine,
$env:COMPUTERNAME
)
if ( $DSContext.ValidateCredentials( $username, $password ) ) {
exit 0
} else {
exit 1
}

View File

@ -30,11 +30,6 @@ module VagrantPlugins
def prepare(machine, folders, opts) def prepare(machine, folders, opts)
machine.ui.output(I18n.t("vagrant_sf_smb.preparing")) machine.ui.output(I18n.t("vagrant_sf_smb.preparing"))
# Check if this host can start and SMB service
if machine.env.host.capability?(:smb_start)
machine.env.host.capability(:smb_start)
end
smb_username = smb_password = nil smb_username = smb_password = nil
# If we need auth information, then ask the user. # If we need auth information, then ask the user.
@ -48,12 +43,38 @@ module VagrantPlugins
end end
end end
script_path = File.expand_path("../scripts/check_credentials.ps1", __FILE__)
if !have_auth if !have_auth
machine.env.ui.detail(I18n.t("vagrant_sf_smb.warning_password") + "\n ") machine.ui.detail(I18n.t("vagrant_sf_smb.warning_password") + "\n ")
smb_username = machine.env.ui.ask("Username: ") auth_success = false
smb_password = machine.env.ui.ask("Password (will be hidden): ", echo: false) while !auth_success do
@creds[:username] = machine.ui.ask("Username: ")
@creds[:password] = machine.ui.ask("Password (will be hidden): ", echo: false)
args = []
args << "-username" << "'#{@creds[:username].gsub("'", "''")}'"
args << "-password" << "'#{@creds[:password].gsub("'", "''")}'"
r = Vagrant::Util::PowerShell.execute(script_path, *args)
if r.exit_code == 0
auth_success = true
end
if !auth_success
machine.ui.output(I18n.t("vagrant_sf_smb.incorrect_credentials") + "\n ")
end
end
end end
# Check if this host can start and SMB service
if machine.env.host.capability?(:smb_start)
machine.env.host.capability(:smb_start)
end
script_path = File.expand_path("../scripts/set_share.ps1", __FILE__)
folders.each do |id, data| folders.each do |id, data|
data[:smb_username] ||= smb_username data[:smb_username] ||= smb_username
data[:smb_password] ||= smb_password data[:smb_password] ||= smb_password

View File

@ -15,6 +15,8 @@ en:
You will be asked for the username and password to use for the SMB You will be asked for the username and password to use for the SMB
folders shortly. Please use the proper username/password of your folders shortly. Please use the proper username/password of your
account. account.
incorrect_credentials: |-
Credentials incorrect. Please try again.
uac: uac:
prune_warning: |- prune_warning: |-