77 lines
2.3 KiB
PowerShell
77 lines
2.3 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Aggiorna il livello di notifica GitLab per un range di utenti
|
|
e logga tutto in C:\Steamware\Logs\Gitlab\notificationLevelChange.log
|
|
#>
|
|
|
|
# importa configurazioni
|
|
. .\ApiGit\ApiGitResources\ApiScriptsConfig.ps1
|
|
. .\ApiGit\ApiGitResources\ApiScriptsFunctions.ps1
|
|
|
|
$GitlabUrl = "https://gitlab.steamware.net"
|
|
$PrivateToken = $tokenGitlab
|
|
|
|
# Range utenti da aggiornare (modificabile)
|
|
$StartId = 1
|
|
$EndId = 50
|
|
|
|
# Livello notifiche da impostare (modificabile)
|
|
$NewLevel = "mention" # altri valori: disabled, participating, watch, global, custom
|
|
|
|
# Percorso log
|
|
$LogDir = "C:\Steamware\Logs\Gitlab"
|
|
$LogFile = Join-Path $LogDir "notificationLevelChange.log"
|
|
|
|
# Crea cartella log se non esiste
|
|
if (-not (Test-Path $LogDir)) {
|
|
New-Item -Path $LogDir -ItemType Directory -Force | Out-Null
|
|
}
|
|
|
|
# Header base
|
|
$baseHeaders = @{
|
|
"PRIVATE-TOKEN" = $PrivateToken
|
|
"Content-Type" = "application/json"
|
|
}
|
|
|
|
# Corpo JSON della richiesta
|
|
$body = @{ level = $NewLevel } | ConvertTo-Json
|
|
|
|
# Inizializza log
|
|
"INFO [$((Get-Date).ToString('o'))] Starting notification level update for IDs $StartId-$EndId (level=$NewLevel)" |
|
|
Out-File -FilePath $LogFile -Encoding UTF8
|
|
|
|
# Ciclo utenti
|
|
for ($id = $StartId; $id -le $EndId; $id++) {
|
|
|
|
$separator = "----- USER $id -----"
|
|
$url = "$GitlabUrl/api/v4/notification_settings"
|
|
|
|
# Clona headers e aggiunge Sudo per modificare altri utenti
|
|
$headers = @{}
|
|
foreach ($k in $baseHeaders.Keys) { $headers[$k] = $baseHeaders[$k] }
|
|
$headers["Sudo"] = "$id"
|
|
|
|
try {
|
|
$response = Invoke-WebRequest `
|
|
-Method PUT `
|
|
-Uri $url `
|
|
-Headers $headers `
|
|
-Body $body `
|
|
-ErrorAction Stop
|
|
|
|
"$separator`nINFO [$((Get-Date).ToString('o'))] UPDATED id=$id level=$NewLevel status=$($response.StatusCode)" |
|
|
Out-File -FilePath $LogFile -Encoding UTF8 -Append
|
|
}
|
|
catch {
|
|
$msg = $_.Exception.Message -replace "`r?`n"," "
|
|
"$separator`nERROR [$((Get-Date).ToString('o'))] FAILED id=$id message=$msg" |
|
|
Out-File -FilePath $LogFile -Encoding UTF8 -Append
|
|
}
|
|
|
|
Start-Sleep -Milliseconds 150
|
|
}
|
|
|
|
"INFO [$((Get-Date).ToString('o'))] Completed." |
|
|
Out-File -FilePath $LogFile -Encoding UTF8 -Append
|
|
|
|
Write-Host "Fatto. Log salvato in $LogFile" |