commit afb2f418fc856a0603de5e183a62af9ebebc13c9 Author: Florian Späth Date: Fri Jan 31 01:49:31 2025 +0100 init diff --git a/Erstellen eines neuen Fensters.docx b/Erstellen eines neuen Fensters.docx new file mode 100644 index 0000000..40003e7 Binary files /dev/null and b/Erstellen eines neuen Fensters.docx differ diff --git a/FS Admin Panel.exe b/FS Admin Panel.exe new file mode 100644 index 0000000..655c799 Binary files /dev/null and b/FS Admin Panel.exe differ diff --git a/GUIS/cleartmp.ps1 b/GUIS/cleartmp.ps1 new file mode 100644 index 0000000..9df58bd --- /dev/null +++ b/GUIS/cleartmp.ps1 @@ -0,0 +1,61 @@ +function Load_clrtmp { + param ($root) + [XML]$Form = @" + + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $text = $window.FindName("text") + $Script:infook = $window.findName("btnok") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $text.Text = "Der Speicherbedarf auf Gruppenlaufwerken, insbesondere aber auf persönlichen Home-Laufwerken steigt stetig. Daher muss jährlich ein hoher Betrag in die Erweiterung und die Erneuerung von Speichersystemen investiert werden. + Gleichzeitig soll im BR die Zusammenarbeit durch das Teilen von Informationen, Dokumenten und Content verbessert werden. Persönliche und damit exklusive Inhalte und Daten sind dabei kontraproduktiv. Dies gilt vor allem für den produzierten Mediencontent. + Mit diesem Werkzeug können Sie den zu löschenden oder zu verschiebenden Inhalt leichter identifizieren. `n`n$Script:Version `nCopyright Bayerischer Rundfunk (2022)`nAutor: Florian Späth `nDSGVO-konform" + return $window +} + +$Script:info = Load_info $args[0] # Variable: $info + +$info.Add_MouseLeftButtonDown({ + $info.DragMove() +}) + +$infook.Add_Click({ + $info.Hide() +}) \ No newline at end of file diff --git a/GUIS/confirm.ps1 b/GUIS/confirm.ps1 new file mode 100644 index 0000000..1752cc8 --- /dev/null +++ b/GUIS/confirm.ps1 @@ -0,0 +1,97 @@ +function Load_confirm { + param ($root) + [XML]$Form = @" + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $Script:confirmtext = $window.FindName("text") + $Script:confirmok = $window.findName("btngo") + $Script:confirmstop = $window.findName("btnstop") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + return $window +} + +function confirm { + param ( + [String]$text + ) + Write-Admin-Log "Confirm funkction triggered" + if ($null -ne $text) { + $Script:Confirmtext.text = $text + $confirm.ShowDialog() | Out-Null + if ($Script:GO) { + return $true + } + } +} + +$Script:confirm = Load_confirm $args[0] # Variable: $confirm + +$confirmok.Add_Click({ + Write-Admin-Log "Confirm success" + $Script:GO = $true + $confirm.Hide() +}) + +$confirm.Add_MouseLeftButtonDown({ + $confirm.DragMove() +}) + +$confirmstop.Add_Click({ + Write-Admin-Log "Confirm denial" + $Script:GO = $false + $confirm.Hide() +}) + diff --git a/GUIS/gaming.ps1 b/GUIS/gaming.ps1 new file mode 100644 index 0000000..ecc44da --- /dev/null +++ b/GUIS/gaming.ps1 @@ -0,0 +1,97 @@ +function Load_gaming { + param ($root) + [XML]$Form = @" + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $Script:gaming_btn_meg = $window.FindName("btnmeg") + $Script:gaming_btn_itm = $window.findName("btnitm") + $Script:gaming_ok = $window.findName("btnok") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + return $window +} + +$Script:gaming = Load_gaming $args[0] # Variable: $gaming + +$gaming.Add_MouseLeftButtonDown({ + $gaming.DragMove() +}) + +$gaming_btn_itm.Add_Click({ + $Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" + $servername = '192.168.178.4' + $username = 'spaethf' + Write-Admin-Log "BTN ITM pressed" + if (confirm "Bei dem Server gaming Server ITM wird eine Power Aktion ausgeführt") { + $command = 'python tap_itm.py' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw $password $username@$servername $command + } +}) + + +$gaming_btn_meg.Add_Click({ + $Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" + $servername = '192.168.178.4' + $username = 'spaethf' + Write-Admin-Log "BTN MEG pressed" + if (confirm "Bei dem Server gaming Server MEG wird eine Power Aktion ausgeführt") { + $command = 'python tap_meg.py' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw $password $username@$servername $command + } +}) + +$gaming_ok.Add_Click({ + $gaming.Hide() +}) \ No newline at end of file diff --git a/GUIS/getlogs.ps1 b/GUIS/getlogs.ps1 new file mode 100644 index 0000000..b8e5e7b --- /dev/null +++ b/GUIS/getlogs.ps1 @@ -0,0 +1,140 @@ +function Load_getlogs { + param ($root) + [XML]$Form = @" + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $Script:getlog_btn_cert = $window.findName("btn_cert") + $Script:getlog_btn_zeroconfig = $window.findName("btn_zeroconfig") + $Script:getlog_btn_zeroconfigcert = $window.findName("btn_zeroconfigcert") + $Script:getlog_btn_defudbu = $window.findName("btn_defudbu") + $Script:getlog_btn_ok = $window.findName("btnok") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + return $window +} + +$Script:getlog = Load_getlogs $args[0] # Variable: $getlog + +$getlog.Add_MouseLeftButtonDown({ + $getlog.DragMove() +}) + +$getlog_btn_cert.Add_Click({ + ii $Script:cert_path +}) + +$getlog_btn_zeroconfig.Add_Click({ + ii $Script:zero_config_path +}) + +$getlog_btn_zeroconfigcert.Add_Click({ + ii $zero_config_path\Certs\update-idrac-cert +}) + +$getlog_btn_defudbu.Add_Click({ + ii $defudbu_path\ProcessUpdatableDevices\LogFiles +}) + +$getlog_btn_ok.Add_Click({ + $getlog.Hide() +}) \ No newline at end of file diff --git a/GUIS/info.ps1 b/GUIS/info.ps1 new file mode 100644 index 0000000..08ee97c --- /dev/null +++ b/GUIS/info.ps1 @@ -0,0 +1,61 @@ +function Load_info { + param ($root) + [XML]$Form = @" + + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $text = $window.FindName("text") + $Script:infook = $window.findName("btnok") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $text.Text = "Das Admin Panel wurde geschaffen um Skripte welche von dem einzig waren Florian Spaeth entwickelt wurden in einer grafischen Oberfläche zu steuern. +Die Anwendung wurde so entworfen das diese maximale Wartungsfreundlichkeit bietet und auch Usern mit wenig Powershell Erfahrung die Möglichkeit gibt, neue Fenster hinzu zu fügen. +Im GitLab unter `"AllgemeineSkripte/examples`" kann Beispiel Code entnommen werden, wenn man sind in den BR hacken kann (: `n`nBugs in der GUI werden nicht aktiv verfolgt!`n`n$Script:Version `nCopyright bei Leiter (2024)`nAutor: Florian Spaeth `nDSGVO-Konform" + return $window +} + +$Script:info = Load_info $args[0] # Variable: $info + +$info.Add_MouseLeftButtonDown({ + $info.DragMove() +}) + +$infook.Add_Click({ + $info.Hide() +}) \ No newline at end of file diff --git a/GUIS/main.ps1 b/GUIS/main.ps1 new file mode 100644 index 0000000..0644df3 --- /dev/null +++ b/GUIS/main.ps1 @@ -0,0 +1,266 @@ +function Load_main { + param ($root) + +[XML]$Form = @" + + + + + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + $Laufwerk = $window.findName("Laufwerk") + $Script:mainimgswitch = $window.findName("imgswitch") + $imginfo = $window.findName("imginfo") + $Script:bar = $window.findName("pbbar") + $Script:last = $window.findName("tblaufwerkauslastung") + $Script:mainscanner = $window.findName("btnScanner") + $Script:maininfo = $window.findName("btninfo") + $Script:mainloading = $window.findName("pbLoading") + $Script:btn_logchange = $window.findName("btnfiltersw") + $Script:btn_MEG = $window.findName("btnMEG") + $Script:btn_itm = $window.findName("btnITM") + $Script:btn_r710 = $window.findName("btnr710") + $Script:btn_getlogs = $window.findName("btngetlogs") + $Script:btn_logrefresh = $window.findName("btnrefresh") + $Script:main_log = $window.findname("log") + $Script:main_version = $window.findname("version") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Laufwerk.Source = "$root/Source/HDD1.png" + $imginfo.Source = "$root/Source/info.png" + $last.Text = "Current User: $Env:UserName" + $main_version.Content = "$Script:Version" + $btn_MEG.ToolTip = "Zero configuration Tool for DELL iDrac`nAccount _autcert needed" + $btn_ITM.ToolTip = "Certificate distributor for DELL iDrac`nAccount _hardcon needed" + $btn_R710.ToolTip = "Collection of Tools for DEFU Database`nAccount _DellFirmwareUpdates needed" + $btn_getlogs.ToolTip = "Collection of all Logs known to this Script" + + return $window +} + +$Script:main = Load_main $args[0] # Variable: $main + +$btn_logrefresh.Add_Click({ + $main_log.content = "" + Write-Admin-Log "Clear GUI Log" +}) + +$mainscanner.Add_Click({ + $main.Hide() + Write-Admin-Log "Seik" +}) + +$btn_ITM.Add_Click({ + Write-Admin-Log "open cert windows" +}) + +$btn_MEG.Add_Click({ + Write-Admin-Log "open Gaming window" + $gaming.ShowDialog() | Out-Null +}) + +$btn_R710.Add_Click({ + Write-Admin-Log "open R710 window" + $r710.ShowDialog() | Out-Null +}) + +$btn_getlogs.Add_Click({ + Write-Admin-Log "open get logs window" + $getlog.ShowDialog() | Out-Null +}) + +$maininfo.Add_Click({ + $info.ShowDialog() | Out-Null +}) + +$main.Add_MouseLeftButtonDown({ + $main.DragMove() +}) diff --git a/GUIS/r710.ps1 b/GUIS/r710.ps1 new file mode 100644 index 0000000..a9c384b --- /dev/null +++ b/GUIS/r710.ps1 @@ -0,0 +1,133 @@ +function Load_r710 { + param ($root) + [XML]$Form = @" + + + + + + +"@ + + # Lädt das Fenster + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $Script:r710_btn_start = $window.FindName("btnstart") + $Script:r710_btn_stop = $window.FindName("btnstop") + $Script:r710_btn_inspect = $window.FindName("btninspect") + $Script:r710ok = $window.findName("btnok") + $Env:r710_log_power = $window.findName("log_Power") + $Env:r710_log_bios = $window.findName("log_BIOS") + $Env:r710_log_mac = $window.findName("log_MAC") + $Script:r710_log = $window.findName("log") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + return $window +} + +$Script:r710 = Load_r710 $args[0] # Variable: $r710 +#$Script:Timestamp = get-date -format "yyyy-MM-dd HH:mm:ss" + + + +$r710.Add_MouseLeftButtonDown({ + $r710.DragMove() +}) + +$r710_btn_start.Add_Click({ + Write-Admin-Log "BTN r710 start pressed" + if (confirm "Server R710 wird durch erneute betätigung gestartet") { + cd $racpath + $r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" serveraction powerup) + } +}) + +$r710_btn_stop.Add_Click({ + Write-Admin-Log "BTN r710 stop pressed" + if (confirm "Server R710 wird durch erneute betätigung gestopt`n`nSind alle Virtuelle Maschinen ausgeschaltet?") { + cd $Script:racpath + $r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" serveraction powerdown) + } +}) + +$r710_btn_inspect.Add_Click({ + Write-Admin-Log "BTN r710 inspect pressed" + if (confirm "Server R710 wird durch erneute betätigung gestopt`n`nSind alle Virtuelle Maschinen ausgeschaltet?") { + cd $Script:racpath + $collection = $(.\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" getsysinfo) + foreach ($item in $collection) { + if ($null -ne $item) { + $r710_log.Text += "$item`n" + if($item -match "DNS RAC Name"){ + $index = ($item.IndexOf("=")) + $Script:r710_log_mac.Text = $item.Substring($index+1) + } + if($item -match "Firmware Version"){ + $index = ($item.IndexOf("=")) + $Script:r710_log_bios.Text = $item.Substring($index+1) + } + if($item -match "Power Status"){ + $index = ($item.IndexOf("=")) + $Script:r710_log_power.Text = $item.Substring($index+1) + } + } + } + } +}) + +$r710ok.Add_Click({ + $r710.Hide() +}) diff --git a/README.md b/README.md new file mode 100644 index 0000000..78e8e5a --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +### hds_admin_panel +ReadMe folgt... \ No newline at end of file diff --git a/Source/Archiv.png b/Source/Archiv.png new file mode 100644 index 0000000..b94c2ec Binary files /dev/null and b/Source/Archiv.png differ diff --git a/Source/Audio.png b/Source/Audio.png new file mode 100644 index 0000000..4bc0a89 Binary files /dev/null and b/Source/Audio.png differ diff --git a/Source/Bild.png b/Source/Bild.png new file mode 100644 index 0000000..dd648fe Binary files /dev/null and b/Source/Bild.png differ diff --git a/Source/Checked.png b/Source/Checked.png new file mode 100644 index 0000000..f675390 Binary files /dev/null and b/Source/Checked.png differ diff --git a/Source/Container.png b/Source/Container.png new file mode 100644 index 0000000..50f2270 Binary files /dev/null and b/Source/Container.png differ diff --git a/Source/Datenbank.png b/Source/Datenbank.png new file mode 100644 index 0000000..0676d8f Binary files /dev/null and b/Source/Datenbank.png differ diff --git a/Source/Folder.png b/Source/Folder.png new file mode 100644 index 0000000..bd668c8 Binary files /dev/null and b/Source/Folder.png differ diff --git a/Source/HDD1.png b/Source/HDD1.png new file mode 100644 index 0000000..68f4e83 Binary files /dev/null and b/Source/HDD1.png differ diff --git a/Source/Internet.png b/Source/Internet.png new file mode 100644 index 0000000..7041bd3 Binary files /dev/null and b/Source/Internet.png differ diff --git a/Source/Konfig.png b/Source/Konfig.png new file mode 100644 index 0000000..a29e075 Binary files /dev/null and b/Source/Konfig.png differ diff --git a/Source/Logo-alt.PNG b/Source/Logo-alt.PNG new file mode 100644 index 0000000..5589b29 Binary files /dev/null and b/Source/Logo-alt.PNG differ diff --git a/Source/Logo-cleaner.PNG b/Source/Logo-cleaner.PNG new file mode 100644 index 0000000..d4468f1 Binary files /dev/null and b/Source/Logo-cleaner.PNG differ diff --git a/Source/Logo.ico b/Source/Logo.ico new file mode 100644 index 0000000..616ca63 Binary files /dev/null and b/Source/Logo.ico differ diff --git a/Source/Logo.png b/Source/Logo.png new file mode 100644 index 0000000..1346a91 Binary files /dev/null and b/Source/Logo.png differ diff --git a/Source/Logowhite.png b/Source/Logowhite.png new file mode 100644 index 0000000..c4fc107 Binary files /dev/null and b/Source/Logowhite.png differ diff --git a/Source/Mail.png b/Source/Mail.png new file mode 100644 index 0000000..1d719a6 Binary files /dev/null and b/Source/Mail.png differ diff --git a/Source/Mails.png b/Source/Mails.png new file mode 100644 index 0000000..79c6514 Binary files /dev/null and b/Source/Mails.png differ diff --git a/Source/Office.png b/Source/Office.png new file mode 100644 index 0000000..672dc3a Binary files /dev/null and b/Source/Office.png differ diff --git a/Source/Softwareentwicklung.png b/Source/Softwareentwicklung.png new file mode 100644 index 0000000..675f8b0 Binary files /dev/null and b/Source/Softwareentwicklung.png differ diff --git a/Source/Sonstiges.png b/Source/Sonstiges.png new file mode 100644 index 0000000..a6075a5 Binary files /dev/null and b/Source/Sonstiges.png differ diff --git a/Source/Start.png b/Source/Start.png new file mode 100644 index 0000000..fbc850a Binary files /dev/null and b/Source/Start.png differ diff --git a/Source/Texte-Logs.png b/Source/Texte-Logs.png new file mode 100644 index 0000000..8ecc2ac Binary files /dev/null and b/Source/Texte-Logs.png differ diff --git a/Source/Thumbs.db b/Source/Thumbs.db new file mode 100644 index 0000000..0c3420d Binary files /dev/null and b/Source/Thumbs.db differ diff --git a/Source/Unchecked.png b/Source/Unchecked.png new file mode 100644 index 0000000..196b830 Binary files /dev/null and b/Source/Unchecked.png differ diff --git a/Source/Video.png b/Source/Video.png new file mode 100644 index 0000000..79d5ca2 Binary files /dev/null and b/Source/Video.png differ diff --git a/Source/center.png b/Source/center.png new file mode 100644 index 0000000..a3d33fd Binary files /dev/null and b/Source/center.png differ diff --git a/Source/dash.png b/Source/dash.png new file mode 100644 index 0000000..1da1497 Binary files /dev/null and b/Source/dash.png differ diff --git a/Source/hourglas.gif b/Source/hourglas.gif new file mode 100644 index 0000000..d3ca882 Binary files /dev/null and b/Source/hourglas.gif differ diff --git a/Source/hourglas_original.gif b/Source/hourglas_original.gif new file mode 100644 index 0000000..2a17e40 Binary files /dev/null and b/Source/hourglas_original.gif differ diff --git a/Source/info.png b/Source/info.png new file mode 100644 index 0000000..7833843 Binary files /dev/null and b/Source/info.png differ diff --git a/Source/loading.gif b/Source/loading.gif new file mode 100644 index 0000000..cde62a2 Binary files /dev/null and b/Source/loading.gif differ diff --git a/Source/mainhourglas.gif b/Source/mainhourglas.gif new file mode 100644 index 0000000..ab72f06 Binary files /dev/null and b/Source/mainhourglas.gif differ diff --git a/Source/marked.png b/Source/marked.png new file mode 100644 index 0000000..d9483e9 Binary files /dev/null and b/Source/marked.png differ diff --git a/Source/server.png b/Source/server.png new file mode 100644 index 0000000..5520d4a Binary files /dev/null and b/Source/server.png differ diff --git a/Source/swfalse.png b/Source/swfalse.png new file mode 100644 index 0000000..70882ee Binary files /dev/null and b/Source/swfalse.png differ diff --git a/Source/swtrue.png b/Source/swtrue.png new file mode 100644 index 0000000..7ecfbed Binary files /dev/null and b/Source/swtrue.png differ diff --git a/Start.ps1 b/Start.ps1 new file mode 100644 index 0000000..407a72e --- /dev/null +++ b/Start.ps1 @@ -0,0 +1 @@ +.\root.ps1 \ No newline at end of file diff --git a/center.ps1 b/center.ps1 new file mode 100644 index 0000000..be06f24 --- /dev/null +++ b/center.ps1 @@ -0,0 +1,46 @@ +# Autor: Florian Späth +# v1.0.0 +$racadmpath = "C:\Program Files\Dell\SysMgt\rac5" +$Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" +$servername = '192.168.178.4' +$username = 'spaethf' +$plinkpath = 'C:\Programme\PuTTY\' + +function main{ +$whattodo = Read-Host "Was moechtest du tun? `n1 = R710 Server starten, 2 = R710 Server stoppen `n3 = R710 Systemzustand `n4 = Tap MEG, 5 = Tap ITM `n6 = EXIT" +if ($whattodo -eq "1") { + cd $racadmpath + .\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" serveraction powerup + Write-Host "Server startet! Dauer: ca. 5 min." + main +}elseif($whattodo -eq "2"){ + $confirmation = Read-Host "Sind alle VM ausgeschaltet? j/n" + if ($confirmation -eq "j") { + cd $racadmpath + .\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" serveraction powerdown + Write-Host "Server stoppt!" + main + }else{ + Write-Host "Schalte die VM über RDP aus" + main + } +}elseif($whattodo -eq "3"){ + Write-host "Systeminfo:" + cd $racadmpath + .\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" getsysinfo + main +}elseif ($whattodo -eq "4") { + $command = 'python tap_meg.py' + #Execute SSH command + echo y | &($plinkpath + "plink.exe") -pw $password $username@$servername $command + main +}elseif ($whattodo -eq "5") { + $command = 'python tap_itm.py' + #Execute SSH command + echo y | &($plinkpath + "plink.exe") -pw $password $username@$servername $command + main +}elseif ($whattodo -eq "6") { + exit +} +} +main \ No newline at end of file diff --git a/config.csv b/config.csv new file mode 100644 index 0000000..1ee00a6 --- /dev/null +++ b/config.csv @@ -0,0 +1,4 @@ +ID, value +plink_path, "C:\Program Files\PuTTY" +racadm_path, "C:\Program Files\Dell\SysMgt\rac5" + diff --git a/extern710.ps1 b/extern710.ps1 new file mode 100644 index 0000000..91ff99f --- /dev/null +++ b/extern710.ps1 @@ -0,0 +1,776 @@ +$Script:Version = "FS Admin Panel v0.8 (extern)" +#Ersteller: Florian Späth +#Diese Software soll helfen die verschiedensten Anwendungen und Scripte der FG HDS zu administrieren. + +Add-Type -AssemblyName PresentationFramework +Add-Type -AssemblyName System.Windows.Forms +[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null + +### Variablen Definition ### +# array = Settings , +$script:array=@($false,$true) + + +function getValues($formTitle, $textTitle){ + [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") + [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") + + $objForm = New-Object System.Windows.Forms.Form + $objForm.Text = $formTitle + $objForm.Size = New-Object System.Drawing.Size(300,200) + $objForm.StartPosition = "CenterScreen" + + $objForm.KeyPreview = $True + $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") {$x=$objTextBox.Text;$objForm.Close()}}) + $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") {$objForm.Close()}}) + + $OKButton = New-Object System.Windows.Forms.Button + $OKButton.Location = New-Object System.Drawing.Size(75,120) + $OKButton.Size = New-Object System.Drawing.Size(75,23) + $OKButton.Text = "OK" + $OKButton.Add_Click({$Script:userInput=$objTextBox.Text;$objForm.Close()}) + $objForm.Controls.Add($OKButton) + + $CANCELButton = New-Object System.Windows.Forms.Button + $CANCELButton.Location = New-Object System.Drawing.Size(150,120) + $CANCELButton.Size = New-Object System.Drawing.Size(75,23) + $CANCELButton.Text = "CANCEL" + $CANCELButton.Add_Click({$objForm.Close()}) + $objForm.Controls.Add($CANCELButton) + + $objLabel = New-Object System.Windows.Forms.Label + $objLabel.Location = New-Object System.Drawing.Size(10,20) + $objLabel.Size = New-Object System.Drawing.Size(280,30) + $objLabel.Text = $textTitle + $objForm.Controls.Add($objLabel) + + $objTextBox = New-Object System.Windows.Forms.TextBox + $objTextBox.Location = New-Object System.Drawing.Size(10,50) + $objTextBox.Size = New-Object System.Drawing.Size(260,20) + $objForm.Controls.Add($objTextBox) + + $objForm.Topmost = $True + + $objForm.Add_Shown({$objForm.Activate()}) + + [void] $objForm.ShowDialog() + + return $userInput +} + +Function Select-FolderDialog{ + param([string]$Description="RACADM Speicherort wählen",[string]$RootFolder="Desktop") + [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null + $objForm = New-Object System.Windows.Forms.FolderBrowserDialog + $objForm.Rootfolder = $RootFolder + $objForm.Description = $Description + $Show = $objForm.ShowDialog() + If ($Show -eq "OK"){ + Return $objForm.SelectedPath + }else{ + Return $false + } +} + +### $schema = getValues "Database Schema" "Enter database schema" + + +#### Lädt Scripte #### + + +function Load_info { + [XML]$Form = @" + + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $text = $window.FindName("text") + $Script:infook = $window.findName("btnok") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="C:\FSAP/Source/Logo.png" + $text.Text = "Das Admin Panel wurde geschaffen um Skripte welche von dem einzig waren Florian Spaeth entwickelt wurden in einer grafischen Oberfläche zu steuern. +Die Anwendung wurde so entworfen das diese maximale Wartungsfreundlichkeit bietet und auch Usern mit wenig Powershell Erfahrung die Möglichkeit gibt, neue Fenster hinzu zu fügen. +Im GitLab unter `"AllgemeineSkripte/examples`" kann Beispiel Code entnommen werden, wenn man sind in den BR hacken kann (: `n`nBugs in der GUI werden nicht aktiv verfolgt!`n`n$Script:Version `nCopyright bei Leiter (2024)`nAutor: Florian Spaeth `nDSGVO-Konform" + return $window +} + + + + + +function Load_confirm { + [XML]$Form = @" + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $Script:confirmtext = $window.FindName("text") + $Script:confirmok = $window.findName("btngo") + $Script:confirmstop = $window.findName("btnstop") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="C:\FSAP/Source/Logo.png" + return $window +} + + + + + + + +function Load_main { +[XML]$Form = @" + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + + # Objekt - Variablen Verknüpfung + #Main + $Script:menu1 = $window.findName("menu1") + $Script:menu2 = $window.findName("menu2") + $Script:menu3 = $window.findName("menu3") + $Script:menu4 = $window.findName("menu4") + $Script:menu5 = $window.findName("menu5") + $Script:menu6 = $window.findName("menu6") + $Script:img1 = $window.findName("img1") + $Script:img2 = $window.findName("img2") + $Script:img3 = $window.findName("img3") + $Script:img4 = $window.findName("img4") + $Script:img5 = $window.findName("img5") + $Script:img6 = $window.findName("img6") + $Script:btn_info = $window.findName("btninfo") + $Script:settings = $window.findName("btnsettings") + $Script:imginfo = $window.findName("imginfo") + $Script:imgsettings = $window.findName("imgsettings") + $Script:l1 = $window.findName("l1") + $Script:log = $window.findName("log") + $Script:work = $window.findName("work") + $Script:btn_standby = $window.findName("btn_standby") + $Script:btn_shutdown = $window.findName("btn_shutdown") + $Script:btn_settings = $window.findName("btn_settings") + $Script:btn_close = $window.findName("btn_close") + + #Dashboard + $Script:Dashboard = $window.findName("Dashboard") + + #R710 + $Script:btn_r710_stop = $window.findName("btn_r710_stop") + $Script:btn_r710_start = $window.findName("btn_r710_start") + $Script:btn_r710_info = $window.findName("btn_r710_info") + $Script:btn_r710_m1 = $window.findname("btn_r710_m1") + $Script:btn_r710_m2 = $window.findname("btn_r710_m2") + + $Script:tb_r710_power = $window.findname("tb_r710_power") + $Script:tb_r710_mac = $window.findname("tb_r710_mac") + $Script:tb_r710_ip = $window.findname("tb_r710_ip") + $Script:tb_r710_bios = $window.findname("tb_r710_bios") + $Script:tb_r710_name = $window.findname("tb_r710_name") + + $Script:l1_r710 = $window.findname("l1_R710") + $Script:l2_r710 = $window.findname("l2_R710") + $Script:l3_r710 = $window.findname("l3_R710") + $Script:l4_r710 = $window.findname("l4_R710") + $Script:l5_r710 = $window.findname("l5_R710") + + # Fensterwahl + #if (condition) { + #$window.Height="912" + #$window.Width="1370" + #$window.WindowStyle="None" + #$window.WindowState="Maximized" + + #$window.Height="912" + #$window.Width="1370" + #$window.WindowStyle="SingleBorderWindow" + #$window.WindowState="Normal" + #} + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="C:\FSAP\Source\Logo.png" + $imginfo.Source = "C:\FSAP\Source\info.png" + $imgsettings.Source = "C:\FSAP/Source/Konfig.png" + $img1.Source = "C:\FSAP/Source/Dash.png" + $img2.Source = "C:\FSAP/Source/Server.png" + $img3.Source = "C:\FSAP/Source/center.png" + return $window +} + +$Script:main = Load_main # Variable: $main +$Script:confirm = Load_confirm # Variable: $confirm +$Script:info = Load_info # Variable: $info + + +#### Definition globaler Variablen #### + +## Die GO variable kann nach aufruf der confirm funktion abgefragt werden, um eine 2. Bestätigung der eingabe zu erhalten. (Aufruf: confirm $text) +[boolean]$Script:GO = $false + +$Script:ScriptRoot = "C:\FSAP" +$Script:iconpath = "C:\FSAP\icons" +$Script:config = Import-CSV -Path "C:\FSAP\config.csv" +$Script:RACpath = ($config | where{$_.ID -eq "racadm_path"}).value +$Script:plinkpath = ($config | where{$_.ID -eq "plink_path"}).value +$Script:idracuser = ($config | where{$_.ID -eq "idracuser"}).value +$Script:idracpass = ($config | where{$_.ID -eq "idracpass"}).value +$Script:remoteuser = ($config | where{$_.ID -eq "remoteuser"}).value +$Script:remotepass = ($config | where{$_.ID -eq "remotepass"}).value +$idracpassenc = "$Script:idracpass"|ConvertTo-SecureString +$Script:idracpass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($idracpassenc)) +$remotepassenc = "$Script:remotepass"|ConvertTo-SecureString +$Script:remotepass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($remotepassenc)) + + + +#$Script:cert_path = ($config | where{$_.ID -eq "some"}).value +#$Script:defudbu_path = ($config | where{$_.ID -eq "some"}).value +$logfile = "C:\FSAP\log.txt" + + ### Farb Variablen ### + + $Script:Standardbtncolor = "#00b8d4" + $Script:Delcolor = "#d50000" + $Script:BackgroundMovecolor = "#FFFFEB9C" + $Script:ForegroundMovecolor = "#FF9C6500" + $Script:Foregroundgrey = "#FF7A7A7A" + $Script:Backgroundgrey = "#FFC5C5C5" + +#### Funktionen #### + ### Global ### + + function Write-Admin-Log{ + Param($text) + "$(get-date -format "yyyy-MM-dd HH:mm:ss"): $($text)" | out-file $logfile -Append + $Script:log.text += "$text `n" + } + + function Resolve-DnsName { + param ( + [Parameter(Mandatory)][string]$ComputerName + ) + try { + [System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString + return ([System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString) + } + catch { + Write-Log "IP not found for $ComputerName!" + } + } + + function working { + param ( + $status + ) + if ($status) { + $Script:work.Background="Darkred" + }else { + $Script:work.Background="Darkgreen" + } + } + + function confirm { + param ( + [String]$text + ) + Write-Admin-Log "Confirm funkction triggered" + if ($null -ne $text) { + $Script:Confirmtext.text = $text + $confirm.ShowDialog() | Out-Null + if ($Script:GO) { + return $true + } + } + } + + $confirmok.Add_Click({ + Write-Admin-Log "Confirm success" + $Script:GO = $true + $confirm.Hide() + }) + + $confirm.Add_MouseLeftButtonDown({ + $confirm.DragMove() + }) + + $confirmstop.Add_Click({ + Write-Admin-Log "Confirm denial" + $Script:GO = $false + $confirm.Hide() + }) + + +#### Startet die Anwendung #### + + ### Initialisieren ### + + $Script:btn_info.Add_Click({ + $Script:info.ShowDialog() + }) + + ### Settings ### + + $settings.Add_Click({ + if ($Script:array[0]) { + $Script:btn_settings.Visibility = "Hidden" + $Script:btn_standby.Visibility = "Hidden" + $Script:btn_shutdown.Visibility = "Hidden" + $Script:btn_close.Visibility = "Hidden" + $Script:array[0]=$false + }else { + $Script:btn_settings.Visibility = "Visible" + $Script:btn_standby.Visibility = "Visible" + $Script:btn_shutdown.Visibility = "Visible" + $Script:btn_close.Visibility = "Visible" + $Script:array[0]=$true + } + }) + + $Script:btn_settings.Add_Click({ + $return = Select-FolderDialog + if($return){ + $Script:racpath = $return + $NewLine = "racadm_path, $racpath" -f + $NewLine | add-content -path "C:\FSAP\config.csv" + } + $Script:idracuser = getValues "IDRAC Configurator" "Enter idrac user" + $Script:idracpass = getValues "IDRAC Configurator" "Enter idrac password" + + $Script:remoteuser = getValues "IDRAC Configurator" "Enter remote user" + $Script:remotepass = getValues "IDRAC Configurator" "Enter remote password" + + $NewLine = "idracuser, $idracuser" -f + $NewLine | add-content -path "C:\FSAP\config.csv" + $secidracpass = "$idracpass" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString + $NewLine = "idracpass, $secidracpass" -f + $NewLine | add-content -path "C:\FSAP\config.csv" + + + $NewLine = "remoteuser, $remoteuser" -f + $NewLine | add-content -path "C:\FSAP\config.csv" + $secremotepass = "$remotepass" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString + $NewLine = "remotepass, $secremotepass" -f + $NewLine | add-content -path "C:\FSAP\config.csv" + write-host $Script:remoteuser + Write-host $Script:remotepass + }) + $Script:btn_standby.Add_Click({ + if (confirm "Wanna SUSPEND the System?") { + $PowerState = [System.Windows.Forms.PowerState]::Suspend + $Force = $false + $DisableWake = $false + [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake) + } + }) + $Script:btn_shutdown.Add_Click({ + if (confirm "Wanna SHUTDOWN the System?") { + $PowerState = [System.Windows.Forms.PowerState]::Shutdown + $Force = $false + $DisableWake = $false + [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake) + } + }) + $Script:btn_close.Add_Click({ + $main.Hide() + }) + + $info.Add_MouseLeftButtonDown({ + $info.DragMove() + }) + + $infook.Add_Click({ + $Script:info.Hide() + }) + + ### Menu ### + + function clearGUI { + + #R710 + + $Script:btn_r710_stop.Visibility = "Hidden" + $Script:btn_r710_start.Visibility = "Hidden" + $Script:btn_r710_info.Visibility = "Hidden" + $Script:btn_r710_m1.Visibility = "Hidden" + $Script:btn_r710_m2.Visibility = "Hidden" + + $Script:tb_r710_power.Visibility = "Hidden" + $Script:tb_r710_mac.Visibility = "Hidden" + $Script:tb_r710_ip.Visibility = "Hidden" + $Script:tb_r710_bios.Visibility = "Hidden" + $Script:tb_r710_name.Visibility = "Hidden" + + $Script:l1_r710.Visibility = "Hidden" + $Script:l2_r710.Visibility = "Hidden" + $Script:l3_r710.Visibility = "Hidden" + $Script:l4_r710.Visibility = "Hidden" + $Script:l5_r710.Visibility = "Hidden" + } + + function SwitchGUI { + param ( + $menu + ) + if ($menu -match "m1") { + clearGUI + }elseif ($menu -match "m2") { + clearGUI + $Script:btn_r710_stop.Visibility = "Visible" + $Script:btn_r710_start.Visibility = "Visible" + $Script:btn_r710_info.Visibility = "Visible" + $Script:btn_r710_m1.Visibility = "Visible" + $Script:btn_r710_m2.Visibility = "Visible" + + $Script:tb_r710_power.Visibility = "Visible" + $Script:tb_r710_mac.Visibility = "Visible" + $Script:tb_r710_ip.Visibility = "Visible" + $Script:tb_r710_bios.Visibility = "Visible" + $Script:tb_r710_name.Visibility = "Visible" + + $Script:l1_r710.Visibility = "Visible" + $Script:l2_r710.Visibility = "Visible" + $Script:l3_r710.Visibility = "Visible" + $Script:l4_r710.Visibility = "Visible" + $Script:l5_r710.Visibility = "Visible" + }elseif ($menu -match "m3") { + clearGUI + }elseif ($menu -match "m4") { + clearGUI + }elseif ($menu -match "m5") { + clearGUI + }elseif ($menu -match "m6") { + clearGUI + } + } + + $Script:menu1.Add_Click({ + switchGUI -menu "m1" + $Script:l1.Content = "Dashboard" + }) + $Script:menu2.Add_Click({ + switchGUI -menu "m2" + $Script:l1.Content = "R710 Control" + }) + $Script:menu3.Add_Click({ + switchGUI -menu "m3" + $Script:l1.Content = "Gaming Control" + }) + $Script:menu4.Add_Click({ + switchGUI -menu "m4" + }) + $Script:menu5.Add_Click({ + switchGUI -menu "m5" + }) + $Script:menu6.Add_Click({ + switchGUI -menu "m6" + }) + + ### R710 ### + + function get_r710_stats { + working $true + cd $Script:racpath + $collection = $(.\racadm.exe -r spaeth-bayern.de:5005 -u $Script:idracuser -p $Script:idracpass getsysinfo) + foreach ($item in $collection) { + if ($null -ne $item) { + $log.Text += "$item`n" + if($item -match "DNS RAC Name"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_name.Text = $item.Substring($index+1) + } + if($item -match "Firmware Version"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_bios.Text = $item.Substring($index+1) + } + if($item -match "Power Status"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_power.Text = $item.Substring($index+1) + } + if($item -match "MAC Address"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_mac.Text = $item.Substring($index+1) + } + if($item -match "Power Status"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_power.Text = $item.Substring($index+1) + } + } + } + cd C:\FSAP + working $false + } + + $btn_r710_start.Add_Click({ + Write-Admin-Log "BTN r710 start pressed" + if (confirm "Server R710 wird durch erneute betätigung gestartet") { + cd $racpath + $r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u $Script:idracuser -p $Script:idracpass serveraction powerup) + } + }) + + $btn_r710_stop.Add_Click({ + Write-Admin-Log "BTN r710 stop pressed" + if (confirm "Server R710 wird durch erneute betätigung gestopt`n`nIST DER SERVER HERUNTERGEFAHREN (/STOP IN DIE MINECRAFT CONSOLE)?") { + $command = './stop_proxmox.sh' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw "$Script:remotepass" "$Script:remoteuser@spaeth-bayern.de" $command + #cd $Script:racpath + #$r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u $Script:idracuser -p $Script:idracpass serveraction powerdown) + } + }) + + $btn_r710_info.Add_Click({ + Write-Admin-Log "BTN r710 inspect pressed" + if (confirm "Server R710 wird nach grundlegenden Infromationen abgefragt.`n`nDie Abfrage kann bis zu 2 min. dauern.") { + get_r710_stats + } + }) + + ### Öffnet erstes Fenster ### +Write-Admin-Log "##### OPEN MAIN WINDOW #####" +clearGUI +switchGUI "m1" +Write-Host $remotepass +$main.ShowDialog() | Out-Null \ No newline at end of file diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..0c9ca5f Binary files /dev/null and b/log.txt differ diff --git a/mc_shutdown.sh b/mc_shutdown.sh new file mode 100644 index 0000000..7692fac --- /dev/null +++ b/mc_shutdown.sh @@ -0,0 +1,13 @@ +sudo sshpass -p 'passwd' ssh -tt root@192.168.178.211< + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + + # Objekt - Variablen Verknüpfung + #Main + $Script:menu1 = $window.findName("menu1") + $Script:menu2 = $window.findName("menu2") + $Script:menu3 = $window.findName("menu3") + $Script:menu4 = $window.findName("menu4") + $Script:menu5 = $window.findName("menu5") + $Script:menu6 = $window.findName("menu6") + $Script:img1 = $window.findName("img1") + $Script:img2 = $window.findName("img2") + $Script:img3 = $window.findName("img3") + $Script:img4 = $window.findName("img4") + $Script:img5 = $window.findName("img5") + $Script:img6 = $window.findName("img6") + $Script:btn_info = $window.findName("btninfo") + $Script:settings = $window.findName("btnsettings") + $Script:imginfo = $window.findName("imginfo") + $Script:imgsettings = $window.findName("imgsettings") + $Script:l1 = $window.findName("l1") + $Script:log = $window.findName("log") + $Script:work = $window.findName("work") + $Script:btn_standby = $window.findName("btn_standby") + $Script:btn_shutdown = $window.findName("btn_shutdown") + $Script:btn_settings = $window.findName("btn_settings") + $Script:btn_close = $window.findName("btn_close") + + #KI Endpoint + $Script:chatwithme_output = $window.findName("chatwithme_output") + $Script:chatwithme_input = $window.findName("chatwithme_input") + $Script:chatwithme_send = $window.findName("chatwithme_send") + + #R710 + $Script:btn_r710_stop = $window.findName("btn_r710_stop") + $Script:btn_r710_start = $window.findName("btn_r710_start") + $Script:img_r710_start = $window.findName("img_r710_start") + $Script:btn_r710_info = $window.findName("btn_r710_info") + $Script:btn_r710_m1 = $window.findname("btn_r710_m1") + $Script:btn_r710_m2 = $window.findname("btn_r710_m2") + + $Script:tb_r710_power = $window.findname("tb_r710_power") + $Script:tb_r710_mac = $window.findname("tb_r710_mac") + $Script:tb_r710_ip = $window.findname("tb_r710_ip") + $Script:tb_r710_bios = $window.findname("tb_r710_bios") + $Script:tb_r710_name = $window.findname("tb_r710_name") + + $Script:l1_r710 = $window.findname("l1_R710") + $Script:l2_r710 = $window.findname("l2_R710") + $Script:l3_r710 = $window.findname("l3_R710") + $Script:l4_r710 = $window.findname("l4_R710") + $Script:l5_r710 = $window.findname("l5_R710") + + #Center + $Script:btn_center_megstop = $window.findName("btn_center_megstop") + $Script:btn_center_megstart = $window.findName("btn_center_megstart") + $Script:img_center_megstart = $window.findName("img_center_megstart") + $Script:btn_center_info = $window.findName("btn_center_info") + $Script:btn_center_itmstop = $window.findName("btn_center_itmstop") + $Script:btn_center_itmstart = $window.findName("btn_center_itmstart") + $Script:img_center_itmstart = $window.findName("img_center_itmstart") + $Script:btn_center_m1 = $window.findname("btn_center_m1") + $Script:btn_center_m2 = $window.findname("btn_center_m2") + + $Script:tb1_center = $window.findname("tb1_center") + $Script:tb2_center = $window.findname("tb2_center") + $Script:tb3_center = $window.findname("tb3_center") + $Script:tb4_center = $window.findname("tb4_center") + $Script:tb5_center = $window.findname("tb5_center") + + $Script:l1_center = $window.findname("l1_center") + $Script:l2_center = $window.findname("l2_center") + $Script:l3_center = $window.findname("l3_center") + $Script:l4_center = $window.findname("l4_center") + $Script:l5_center = $window.findname("l5_center") + $Script:l6_center = $window.findname("l6_center") + $Script:l7_center = $window.findname("l7_center") + + # Fensterwahl + #if (condition) { + #$window.Height="912" + #$window.Width="1370" + #$window.WindowStyle="None" + #$window.WindowState="Maximized" + + #$window.Height="912" + #$window.Width="1370" + #$window.WindowStyle="SingleBorderWindow" + #$window.WindowState="Normal" + #} + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$PSScriptroot/Source/Logo.png" + $imginfo.Source = "$PSScriptroot/Source/info.png" + $imgsettings.Source = "$PSScriptroot/Source/Konfig.png" + $img1.Source = "$PSScriptroot/Source/Dash.png" + $img2.Source = "$PSScriptroot/Source/Server.png" + $img3.Source = "$PSScriptroot/Source/center.png" + $img_center_megstart.Source ="$PSScriptroot/Source/Start.png" + $img_center_itmstart.Source ="$PSScriptroot/Source/Start.png" + $img_r710_start.Source ="$PSScriptroot/Source/Start.png" + return $window +} + +$Script:main = Load_main # Variable: $main + +. $PSScriptRoot\GUIS\info.ps1 $PSSCriptRoot +. $PSSCriptRoot\GUIS\confirm.ps1 $PSScriptRoot + +#### Definition globaler Variablen #### + +## Die GO variable kann nach aufruf der confirm funktion abgefragt werden, um eine 2. Bestätigung der eingabe zu erhalten. (Aufruf: confirm $text) +[boolean]$Script:GO = $false + +$Script:ScriptRoot = $PSScriptRoot +$Script:iconpath = "$PSScriptRoot\icons" +$Script:config = Import-CSV -Path "$PSScriptRoot\config.csv" +$Script:RACpath = ($config | where{$_.ID -eq "racadm_path"}).value +$Script:plinkpath = ($config | where{$_.ID -eq "plink_path"}).value +$Script:idracuser = ($config | where{$_.ID -eq "idracuser"}).value +$Script:idracpass = ($config | where{$_.ID -eq "idracpass"}).value +if($Script:idracpass -eq ""){ + $idracuser = getValues "IDRAC Configurator" "Enter idrac user" + $idracpass = getValues "IDRAC Configurator" "Enter idrac password" + $NewLine = "idracuser, $idracuser" -f + $NewLine | add-content -path "$PSScriptRoot\config.csv" + $NewLine = "idracpass, $idracpass" -f + $NewLine | add-content -path "$PSScriptRoot\config.csv" +} +write-host $Script:idracuser +Write-host $Script:idracpass + +#$Script:cert_path = ($config | where{$_.ID -eq "some"}).value +#$Script:defudbu_path = ($config | where{$_.ID -eq "some"}).value +$logfile = "$PSScriptRoot\log.txt" + + ### Farb Variablen ### + + $Script:Standardbtncolor = "#00b8d4" + $Script:Delcolor = "#d50000" + $Script:BackgroundMovecolor = "#FFFFEB9C" + $Script:ForegroundMovecolor = "#FF9C6500" + $Script:Foregroundgrey = "#FF7A7A7A" + $Script:Backgroundgrey = "#FFC5C5C5" + +#### Funktionen #### + ### Global ### + + function Write-Admin-Log{ + Param($text) + "$(get-date -format "yyyy-MM-dd HH:mm:ss"): $($text)" | out-file $logfile -Append + $log.content += "$text `n" + } + + function Resolve-DnsName { + param ( + [Parameter(Mandatory)][string]$ComputerName + ) + try { + [System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString + return ([System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString) + } + catch { + Write-Log "IP not found for $ComputerName!" + } + } + + Function Select-FolderDialog{ + param([string]$Description="Zielverzeichnis wählen",[string]$RootFolder="Desktop") + [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null + $objForm = New-Object System.Windows.Forms.FolderBrowserDialog + $objForm.Rootfolder = $RootFolder + $objForm.Description = $Description + $Show = $objForm.ShowDialog() + If ($Show -eq "OK"){ + Return $objForm.SelectedPath + }else{ + Return $false + } + } + + function working { + param ( + $status + ) + if ($status) { + $Script:work.Background="Darkred" + }else { + $Script:work.Background="Darkgreen" + } + } + +#### Startet die Anwendung #### + + ### Initialisieren ### + + $Script:btn_info.Add_Click({ + $Script:info.ShowDialog() + }) + + ### Settings ### + + $settings.Add_Click({ + if ($Script:array[0]) { + $Script:btn_settings.Visibility = "Hidden" + $Script:btn_standby.Visibility = "Hidden" + $Script:btn_shutdown.Visibility = "Hidden" + $Script:btn_close.Visibility = "Hidden" + $Script:array[0]=$false + }else { + $Script:btn_settings.Visibility = "Visible" + $Script:btn_standby.Visibility = "Visible" + $Script:btn_shutdown.Visibility = "Visible" + $Script:btn_close.Visibility = "Visible" + $Script:array[0]=$true + } + }) + + $Script:btn_settings.Add_Click({ + + + }) + $Script:btn_standby.Add_Click({ + if (confirm "Wanna SUSPEND the System?") { + $PowerState = [System.Windows.Forms.PowerState]::Suspend + $Force = $false + $DisableWake = $false + [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake) + } + }) + $Script:btn_shutdown.Add_Click({ + if (confirm "Wanna SHUTDOWN the System?") { + $PowerState = [System.Windows.Forms.PowerState]::Shutdown + $Force = $false + $DisableWake = $false + [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake) + } + }) + $Script:btn_close.Add_Click({ + $main.Hide() + }) + + ### Menu ### + + function clearGUI { + #KI + $Script:chatwithme_output.Visibility = "Hidden" + $Script:chatwithme_input.Visibility = "Hidden" + $Script:chatwithme_send.Visibility = "Hidden" + + #R710 + + $Script:btn_r710_stop.Visibility = "Hidden" + $Script:btn_r710_start.Visibility = "Hidden" + $Script:btn_r710_info.Visibility = "Hidden" + $Script:btn_r710_m1.Visibility = "Hidden" + $Script:btn_r710_m2.Visibility = "Hidden" + + $Script:tb_r710_power.Visibility = "Hidden" + $Script:tb_r710_mac.Visibility = "Hidden" + $Script:tb_r710_ip.Visibility = "Hidden" + $Script:tb_r710_bios.Visibility = "Hidden" + $Script:tb_r710_name.Visibility = "Hidden" + + $Script:l1_r710.Visibility = "Hidden" + $Script:l2_r710.Visibility = "Hidden" + $Script:l3_r710.Visibility = "Hidden" + $Script:l4_r710.Visibility = "Hidden" + $Script:l5_r710.Visibility = "Hidden" + + #Center + + $Script:btn_center_megstop.Visibility = "Hidden" + $Script:btn_center_megstart.Visibility = "Hidden" + $Script:btn_center_info.Visibility = "Hidden" + $Script:btn_center_itmstop.Visibility = "Hidden" + $Script:btn_center_itmstart.Visibility = "Hidden" + $Script:btn_center_m1.Visibility = "Hidden" + $Script:btn_center_m2.Visibility = "Hidden" + + $Script:tb1_center.Visibility = "Hidden" + $Script:tb2_center.Visibility = "Hidden" + $Script:tb3_center.Visibility = "Hidden" + $Script:tb4_center.Visibility = "Hidden" + $Script:tb5_center.Visibility = "Hidden" + + $Script:l1_center.Visibility = "Hidden" + $Script:l2_center.Visibility = "Hidden" + $Script:l3_center.Visibility = "Hidden" + $Script:l4_center.Visibility = "Hidden" + $Script:l5_center.Visibility = "Hidden" + $Script:l6_center.Visibility = "Hidden" + $Script:l7_center.Visibility = "Hidden" + } + + function SwitchGUI { + param ( + $menu + ) + if ($menu -match "m1") { + clearGUI + $Script:chatwithme_output.Visibility = "Visible" + $Script:chatwithme_input.Visibility = "Visible" + $Script:chatwithme_send.Visibility = "Visible" + }elseif ($menu -match "m2") { + clearGUI + $Script:btn_r710_stop.Visibility = "Visible" + $Script:btn_r710_start.Visibility = "Visible" + $Script:btn_r710_info.Visibility = "Visible" + $Script:btn_r710_m1.Visibility = "Visible" + $Script:btn_r710_m2.Visibility = "Visible" + + $Script:tb_r710_power.Visibility = "Visible" + $Script:tb_r710_mac.Visibility = "Visible" + $Script:tb_r710_ip.Visibility = "Visible" + $Script:tb_r710_bios.Visibility = "Visible" + $Script:tb_r710_name.Visibility = "Visible" + + $Script:l1_r710.Visibility = "Visible" + $Script:l2_r710.Visibility = "Visible" + $Script:l3_r710.Visibility = "Visible" + $Script:l4_r710.Visibility = "Visible" + $Script:l5_r710.Visibility = "Visible" + }elseif ($menu -match "m3") { + clearGUI + $Script:btn_center_megstop.Visibility = "Visible" + $Script:btn_center_megstart.Visibility = "Visible" + $Script:btn_center_info.Visibility = "Visible" + $Script:btn_center_itmstop.Visibility = "Visible" + $Script:btn_center_itmstart.Visibility = "Visible" + $Script:btn_center_m1.Visibility = "Visible" + $Script:btn_center_m2.Visibility = "Visible" + + $Script:tb1_center.Visibility = "Visible" + $Script:tb2_center.Visibility = "Visible" + $Script:tb3_center.Visibility = "Visible" + $Script:tb4_center.Visibility = "Visible" + $Script:tb5_center.Visibility = "Visible" + + $Script:l1_center.Visibility = "Visible" + $Script:l2_center.Visibility = "Visible" + $Script:l3_center.Visibility = "Visible" + $Script:l4_center.Visibility = "Visible" + $Script:l5_center.Visibility = "Visible" + $Script:l6_center.Visibility = "Visible" + $Script:l7_center.Visibility = "Visible" + }elseif ($menu -match "m4") { + clearGUI + }elseif ($menu -match "m5") { + clearGUI + }elseif ($menu -match "m6") { + clearGUI + } + } + + $Script:menu1.Add_Click({ + switchGUI -menu "m1" + $Script:l1.Content = "Local LLM" + }) + $Script:menu2.Add_Click({ + switchGUI -menu "m2" + $Script:l1.Content = "R710 Control" + }) + $Script:menu3.Add_Click({ + switchGUI -menu "m3" + $Script:l1.Content = "Gaming Control" + }) + $Script:menu4.Add_Click({ + switchGUI -menu "m4" + }) + $Script:menu5.Add_Click({ + switchGUI -menu "m5" + }) + $Script:menu6.Add_Click({ + switchGUI -menu "m6" + }) + + ### ChatWithMe ### + + $Script:chatwithme_input.Add_KeyDown({ + if ($_.Key -eq "Enter") { + $payload = @{ + model="Mini Orca (Small)" + messages = @(@{ + role = "user" + content = "$($Script:chatwithme_input.text)" + } + ) + max_tokens = 2048 + temperature = 0.7 + } + + $json = ($payload | ConvertTo-Json -Depth 6 -compress) + $response = (Invoke-WebRequest -URI http://192.168.178.182:4891/v1/chat/completions -Method POST -ContentType application/json -Body $json) + $content = $response.Content + $index = ($content.IndexOf("content"))+10 + $second_index = $content.Substring($index).IndexOf("role")-3 + $cutdown= $content.Substring($index, $second_index) + $Script:chatwithme_output.Text = $cutdown.replace("/n", " ") + } + }) + + $Script:chatwithme_send.Add_Click({ + $payload = @{ + model="Mini Orca (Small)" + messages = @(@{ + role = "user" + content = "$($Script:chatwithme_input.text)" + } + ) + max_tokens = 2048 + temperature = 0.7 + } + + $json = ($payload | ConvertTo-Json -Depth 6 -compress) + $response = (Invoke-WebRequest -URI http://192.168.178.182:4891/v1/chat/completions -Method POST -ContentType application/json -Body $json) + $content = $response.Content + $index = ($content.IndexOf("content"))+10 + $second_index = $content.Substring($index).IndexOf("role")-3 + $cutdown= $content.Substring($index, $second_index) + $Script:chatwithme_output.Text = $cutdown.replace("/n", " ") + }) + + ### R710 ### + + function get_r710_stats { + working $true + cd $Script:racpath + $collection = $(.\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" getsysinfo) + foreach ($item in $collection) { + if ($null -ne $item) { + $log.Text += "$item`n" + if($item -match "DNS RAC Name"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_name.Text = $item.Substring($index+1) + } + if($item -match "Firmware Version"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_bios.Text = $item.Substring($index+1) + } + if($item -match "Power Status"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_power.Text = $item.Substring($index+1) + } + if($item -match "MAC Address"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_mac.Text = $item.Substring($index+1) + } + if($item -match "Power Status"){ + $index = ($item.IndexOf("=")) + $Script:tb_r710_power.Text = $item.Substring($index+1) + } + } + } + cd $PSSCriptRoot + working $false + } + + $btn_r710_start.Add_Click({ + Write-Admin-Log "BTN r710 start pressed" + if (confirm "Server R710 wird durch erneute betätigung gestartet") { + cd $racpath + $r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" serveraction powerup) + } + }) + + $btn_r710_stop.Add_Click({ + Write-Admin-Log "BTN r710 stop pressed" + if (confirm "Server R710 wird durch erneute betätigung gestopt`n`nSind alle Virtuelle Maschinen ausgeschaltet?") { + cd $Script:racpath + $r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u root -p "kt}y/6ZHF~.@" serveraction powerdown) + } + }) + + $btn_r710_info.Add_Click({ + Write-Admin-Log "BTN r710 inspect pressed" + get_r710_stats + }) + + #Center + + $Script:btn_center_itmstart.Add_Click({ + $Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" + $servername = '192.168.178.4' + $username = 'spaethf' + Write-Admin-Log "BTN ITM pressed" + if (confirm "Bei dem Server gaming Server ITM wird eine Power Aktion ausgeführt") { + $command = 'python tap_itm.py' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw $password $username@$servername $command + } + }) + + $Script:btn_center_itmstop.Add_Click({ + $Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" + $servername = '192.168.178.4' + $username = 'spaethf' + Write-Admin-Log "BTN ITM pressed" + if (confirm "Bei dem Server gaming Server ITM wird eine Power Aktion ausgeführt") { + $command = 'python tap_itm.py' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw $password $username@$servername $command + } + }) + + + $Script:btn_center_megstart.Add_Click({ + $Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" + $servername = '192.168.178.4' + $username = 'spaethf' + Write-Admin-Log "BTN MEG pressed" + if (confirm "Bei dem Server gaming Server MEG wird eine Power Aktion ausgeführt") { + $command = 'python tap_meg.py' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw $password $username@$servername $command + } + }) + + $Script:btn_center_megstop.Add_Click({ + $Password = "Ob>Q%T\;Cf(9\+T+-7lNQl*i*)(3;Egl" + $servername = '192.168.178.4' + $username = 'spaethf' + Write-Admin-Log "BTN MEG pressed" + if (confirm "Bei dem Server gaming Server MEG wird eine Power Aktion ausgeführt") { + $command = 'python tap_meg.py' + #Execute SSH command + echo y | &($plinkpath + "\plink.exe") -pw $password $username@$servername $command + } + }) + + ### Öffnet erstes Fenster ### +Write-Admin-Log "##### OPEN MAIN WINDOW #####" +clearGUI +switchGUI "m1" +$main.ShowDialog() | Out-Null \ No newline at end of file diff --git a/new_GUI.xaml b/new_GUI.xaml new file mode 100644 index 0000000..70c152a --- /dev/null +++ b/new_GUI.xaml @@ -0,0 +1,165 @@ + + + + + + + + + \ No newline at end of file diff --git a/root.ps1 b/root.ps1 new file mode 100644 index 0000000..a7bd5c8 --- /dev/null +++ b/root.ps1 @@ -0,0 +1,86 @@ +$Script:Version = "FS Admin Panel v0.8" +#Ersteller: Florian Späth +#Diese Software soll helfen die verschiedensten Anwendungen und Scripte der FG HDS zu administrieren. + +Add-Type -AssemblyName PresentationFramework +Add-Type -AssemblyName System.Windows.Forms +[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null + +#### Lädt Scripte #### + +. $PSScriptRoot\GUIS\main.ps1 $PSSCriptRoot +. $PSScriptRoot\GUIS\info.ps1 $PSSCriptRoot +. $PSScriptRoot\GUIS\gaming.ps1 $PSSCriptRoot +. $PSScriptRoot\GUIS\r710.ps1 $PSSCriptRoot +. $PSScriptRoot\GUIS\confirm.ps1 $PSSCriptRoot +. $PSScriptRoot\GUIS\cleartmp.ps1 $PSSCriptRoot +. $PSScriptRoot\GUIS\getlogs.ps1 $PSSCriptRoot + +. $PSSCriptRoot\GUIS\confirm.ps1 $PSScriptRoot + +#### Definition globaler Variablen #### + +## Die GO variable kann nach aufruf der confirm funktion abgefragt werden, um eine 2. Bestätigung der eingabe zu erhalten. (Aufruf: confirm $text) +[boolean]$Script:GO = $false + +$Script:ScriptRoot = $PSScriptRoot +$Script:iconpath = "$PSScriptRoot\icons" +$Script:config = Import-CSV -Path "$PSScriptRoot\config.csv" +$Script:RACpath = ($config | where{$_.ID -eq "racadm_path"}).value +$Script:plinkpath = ($config | where{$_.ID -eq "plink_path"}).value +#$Script:cert_path = ($config | where{$_.ID -eq "some"}).value +#$Script:defudbu_path = ($config | where{$_.ID -eq "some"}).value +$logfile = "$PSScriptRoot\log.txt" + + ### Farb Variablen ### + + $Script:Standardbtncolor = "#00b8d4" + $Script:Delcolor = "#d50000" + $Script:BackgroundMovecolor = "#FFFFEB9C" + $Script:ForegroundMovecolor = "#FF9C6500" + $Script:Foregroundgrey = "#FF7A7A7A" + $Script:Backgroundgrey = "#FFC5C5C5" + +#### Funktionen #### + ### Global ### + + function Write-Admin-Log{ + Param($text) + "$(get-date -format "yyyy-MM-dd HH:mm:ss"): $($text)" | out-file $logfile -Append + $main_log.content += "$text `n" + } + + function Resolve-DnsName { + param ( + [Parameter(Mandatory)][string]$ComputerName + ) + try { + [System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString + return ([System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString) + } + catch { + Write-Log "IP not found for $ComputerName!" + } + } + + Function Select-FolderDialog{ + param([string]$Description="Zielverzeichnis wählen",[string]$RootFolder="Desktop") + [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null + $objForm = New-Object System.Windows.Forms.FolderBrowserDialog + $objForm.Rootfolder = $RootFolder + $objForm.Description = $Description + $Show = $objForm.ShowDialog() + If ($Show -eq "OK"){ + Return $objForm.SelectedPath + }else{ + Return $false + } + } + +#### Startet die Anwendung #### + + ### Initialisieren ### + + ### Öffnet erstes Fenster ### +Write-Admin-Log "##### OPEN MAIN WINDOW #####" + $main.ShowDialog() | Out-Null \ No newline at end of file diff --git a/zeitgeber.ps1 b/zeitgeber.ps1 new file mode 100644 index 0000000..2d42f45 --- /dev/null +++ b/zeitgeber.ps1 @@ -0,0 +1,33 @@ +#$env:getjob +#$env:setjob + + + +#do { + if ($env:setjob) { + $command = $env:setjob + $env:setjob = $false + } + cd "C:\Program Files\Dell\SysMgt\rac5" + $collection = $(.\racadm.exe -r "spaeth-bayern.de:5005" -u root -p "kt}y/6ZHF~.@" getsysinfo) + foreach ($item in $collection) { + if ($null -ne $item) { + $r710_log.Text += "$item`n" + if($item -match "DNS RAC Name"){ + $index = ($item.IndexOf("=")) + $env:r710_log_mac.Text = $item.Substring($index+1) + } + if($item -match "Firmware Version"){ + $index = ($item.IndexOf("=")) + $env:r710_log_bios.Text = $item.Substring($index+1) + } + if($item -match "Power Status"){ + $index = ($item.IndexOf("=")) + $env:r710_log_power.Text = $item.Substring($index+1) + } + } +} + Start-Sleep -milliseconds 50 +#} until ( +# $quit +#) \ No newline at end of file