diff --git a/ApiGit/Users/notifLevelChange.ps1 b/ApiGit/Users/notifLevelChange.ps1 new file mode 100644 index 0000000..c411c00 --- /dev/null +++ b/ApiGit/Users/notifLevelChange.ps1 @@ -0,0 +1,77 @@ +<# +.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" \ No newline at end of file diff --git a/ApiGit/Users/userList.ps1 b/ApiGit/Users/userList.ps1 index c2207ae..08aca7b 100644 --- a/ApiGit/Users/userList.ps1 +++ b/ApiGit/Users/userList.ps1 @@ -13,7 +13,7 @@ $PrivateToken = $tokenGitlab # Configurazione $StartId = 1 -$EndId = 100 +$EndId = 50 $LogDir = "C:\Steamware\Logs\Gitlab" $LogFile = Join-Path -Path $LogDir -ChildPath "GitlabUsers.log"