# Автоматический запуск майнинга
# Запуск майнера с отправкой уведомления о (пере)запуске, а так же предварительный запуск Afterburner для разгона

$pathsys = "C:\Service"
$errlog = "$pathsys\errors.log"
$t_st = get-date -f "yyyy.MM.dd HH:mm:ss"
$Body = "System started at: "+$t_st
$worker = hostname
$wallet = "3467EnaKtM42Lo1A1iQT8EL873LFcq7W4u.$worker"
#$wallet = "etnkDRmmiG63URMGfNN8d58gwNbb1Q485VHzajoYEFJ1bLbvgxJkSpTaWcrKeJBERcNvzq2vJ89WP2j3obZWKenc6KPDq4iwNk.$worker/$wmail"
#$pool = "etn-eu1.nanopool.org:13333"
$pool = "cryptonight.eu.nicehash.com:3355"
$addr = "mail@mail.ru"
$smtpserver = "mx.mail.ru"
$smtpport = 25
$miner = "C:\Service\CastXMR\cast_xmr-vega.exe"
$ab = 0 # Enable Afterburner
$opt = "--forcecompute --fastjobswitch" # Additional options
$gpu = "-G 0,1,2,3,4,5,6,7"

if ($ab -eq 1) {
	Function Test-Clock {
		Get-Process -Name "*burn*"
	}
}
Function Test-Cast {
	Get-Process -Name "*cast*"
}
Function SendEmail {
	Param (
		[parameter(Mandatory=$true, ValueFromPipeline=$false)]
		$Body
	)
	Begin {
		$smtp = new-object Net.Mail.SmtpClient $smtpserver, $smtpport
		$smtp.Credentials = New-Object System.Net.NetworkCredential("notice@mail.ru", "1234567!a")
		$smtp.Enablessl = $false
		$smtp.Timeout = 10000
	}
	Process {
		$dt = get-date -f "yyyy.MM.dd HH:mm"
		$EmailFrom = "Monitoring <notice@mail.ru>"
		$EmailCC = "admin@mail.ru"
		$Subject = 'Miner '+$worker+' started (at: '+$dt+')'
		$msg = New-Object system.net.mail.mailmessage
		ForEach ($EmailAddr in $addr) {
			$msg.To.Add($EmailAddr)
		}
		$msg.CC.Add($EmailCC) 
		$msg.From = $EmailFrom
		$msg.Subject = $Subject
		$msg.body = $Body
		$msg.IsBodyHTML = $true
		$msg.BodyEncoding = [System.Text.Encoding]::UTF8
		$smtp.Send($msg)
		if ($error) {
			$erdt = get-date -f "yyyy.MM.dd HH:mm:ss"
			Write-Output $Body | out-file -append -filepath $errlog -Encoding "UTF8"
			Write-Output "$erdt $error" | out-file -append -filepath $errlog -Encoding "UTF8"
		} 
		$error.clear()
	}
}
Function Start-Mine {
	if ($ab -eq 1) {
		while (!(Test-Clock)) {
			& "C:\Program Files (x86)\MSI Afterburner\MSIAfterburner.exe" -Profile1 -s
			sleep -s 15
		}
		if (Test-Clock) {
			$t_ab = get-date -f "yyyy.MM.dd HH:mm:ss"
			$Body = $Body+"<br>Afterburner started at: "+$t_ab
		}
	}
	$t_cx = get-date -f "yyyy.MM.dd HH:mm:ss"
	$Body = $Body+"<br>CastXMR started at: "+$t_cx
	SendEmail $Body
	while (Test-Cast) {
		taskkill /f /FI "IMAGENAME eq cast*"
		sleep -s 2
	}
	& $miner $opt $gpu -S $pool -u $wallet 
}
Start-Mine