diff --git a/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 b/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 index 6d8b259..6e374f6 100644 --- a/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 +++ b/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 @@ -22,7 +22,7 @@ $tokenAzzano = "glpat-uLfFesmXXLm0kecSDjz_5m86MQp1OnAH.01.0w18rv38s" #access token per autenticazione gitlab-azzano $azzanoHead = @{"PRIVATE-TOKEN" = "$($tokenAzzano)" } -#### CONF GITLAB NEMBRO #### +#### CONF GITLAB NEMBRO (OLD)#### #destinazione mirror per nembro $destinationNembro = "gitlab-nembro.steamware.net" #token autenticazione utente replica nembro diff --git a/ApiGit/Mirrors/GitlabRefreshMirrorToGitea.ps1 b/ApiGit/Mirrors/GitlabRefreshMirrorToGitea.ps1 index 9623d95..eb1a4a5 100644 --- a/ApiGit/Mirrors/GitlabRefreshMirrorToGitea.ps1 +++ b/ApiGit/Mirrors/GitlabRefreshMirrorToGitea.ps1 @@ -14,7 +14,7 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew() #contatore ciclo do while $startProj = 1 #numero massimo di progetti da analizzare -$endProj = 300 +$endProj = 250 #inizializzo variabili vuote $mirrorId = "" $mirrorUrl = "" @@ -25,7 +25,7 @@ $logFile = "GitlabMirroringGitea.log" #nome file di log old $oldLogFile = "GitlabMirroringGitea.old" -#gitea di destinazione +#gitea di destinazione (scegliere prima di esecuzione) #$target = "steamware" $target = "nembro" @@ -51,7 +51,7 @@ if ($target = "nembro"){ #nome utente gitea nembro che effettua i mirror push $giteaUser = $giteaNembroUser #autenticazione replica gitea nembro - $giteaPass = $giteaNembroPass + $giteaPass = $tokenGiteaNembro #access token per autenticazione gitea nembro da profilo replica $giteaHead = $giteaNembroHead } diff --git a/ApiGit/Mirrors/GitlabRenewTokensMirrors.ps1 b/ApiGit/Mirrors/GitlabRenewTokensMirrors.ps1 index 9c13220..6f3644b 100644 --- a/ApiGit/Mirrors/GitlabRenewTokensMirrors.ps1 +++ b/ApiGit/Mirrors/GitlabRenewTokensMirrors.ps1 @@ -90,9 +90,9 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){ #chiamata api con method delete che cancella mirror con id specificato Invoke-WebRequest -Method Delete -URI $callUrlDeleteMirror -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing #compongo url da chiamare per creazione nuovo mirror - #$callUrlCreateMirror = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/remote_mirrors" + $callUrlCreateMirror = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/remote_mirrors" #creo url del nuovo mirror con username e token relativi a gitlab - #$newMirror = "https://" + $userName + ":" + $destinationToken + $mirrorDestination + "/" + $simplePath + $newMirror = "https://" + $userName + ":" + $destinationToken + $mirrorDestination + "/" + $simplePath #creo body da convertire in json $body = @{ @@ -100,15 +100,15 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){ enabled = 1 } #converto body in json prima di passarlo alla chiamata POST - #$jsonBody = ConvertTo-Json -InputObject $body + $jsonBody = ConvertTo-Json -InputObject $body #chiamata api POST che crea mirror con url e body specificati - #$rebuildResponse = Invoke-WebRequest -Method Post -URI $callUrlCreateMirror -Headers $gitlabHead -ContentType "application/json" -Body $jsonBody -UseBasicParsing - #$parsedRebuild = $rebuildResponse.Content | ConvertFrom-Json + $rebuildResponse = Invoke-WebRequest -Method Post -URI $callUrlCreateMirror -Headers $gitlabHead -ContentType "application/json" -Body $jsonBody -UseBasicParsing + $parsedRebuild = $rebuildResponse.Content | ConvertFrom-Json foreach ($item in $parsedRebuild) { $mirrorId = $($item.id) $mirrorUrl = $($item.url) } - #WriteLogOutput $logFile 1 "NEW ID: $mirrorId - URL: $mirrorUrl - Mirror ricostruito con successo" + WriteLogOutput $logFile 1 "NEW ID: $mirrorId - URL: $mirrorUrl - Mirror ricostruito con successo" } } } diff --git a/ApiGit/Users/userList.ps1 b/ApiGit/Users/userList.ps1 index 08aca7b..b1638db 100644 --- a/ApiGit/Users/userList.ps1 +++ b/ApiGit/Users/userList.ps1 @@ -17,7 +17,6 @@ $EndId = 50 $LogDir = "C:\Steamware\Logs\Gitlab" $LogFile = Join-Path -Path $LogDir -ChildPath "GitlabUsers.log" - # Crea cartella log se non esiste try { if (-not (Test-Path -Path $LogDir)) { @@ -83,4 +82,4 @@ for ($id = $StartId; $id -le $EndId; $id++) { $endLine = "INFO [{0}] Completed. Retrieved={1} Errors={2}" -f (Get-Date -Format o), $retrieved, $errors $endLine | Out-File -FilePath $LogFile -Encoding UTF8 -Append -Write-Host "Fatto. Log salvato in $LogFile. Utenti recuperati: $retrieved. Errori: $errors." +Write-Host "Fatto. Log salvato in $LogFile. Utenti recuperati: $retrieved. Errori: $errors." \ No newline at end of file diff --git a/ApiGit/Users/userListNotifics.ps1 b/ApiGit/Users/userListNotifics.ps1 deleted file mode 100644 index 173aed0..0000000 --- a/ApiGit/Users/userListNotifics.ps1 +++ /dev/null @@ -1,192 +0,0 @@ -<# -.SYNOPSIS - Recupera utenti GitLab per ID 1-100 e scrive output in C:\Steamware\Logs\Gitlab\GitlabUsers.log -#> - -#importo file contenente configurazioni -. .\ApiGit\ApiGitResources\ApiScriptsConfig.ps1 -#importo file contenente funzioni -. .\ApiGit\ApiGitResources\ApiScriptsFunctions.ps1 - -$GitlabUrl = "gitlab.steamware.net" -$PrivateToken = $tokenGitlab - -# Configurazione -$StartId = 1 -$EndId = 31 -$LogDir = "C:\Steamware\Logs\Gitlab" -$LogFile = Join-Path -Path $LogDir -ChildPath "GitlabUsers.log" - -# Crea cartella log se non esiste -try { - if (-not (Test-Path -Path $LogDir)) { - New-Item -Path $LogDir -ItemType Directory -Force | Out-Null - } -} -catch { - Write-Error "Impossibile creare la cartella di log $LogDir. Errore: $($_.Exception.Message)" - exit 1 -} - -# Helper: serializza in JSON su singola riga compatibile PS5/PS7 -function ToSingleLineJson { - param($Object, $Depth = 10) - $json = $Object | ConvertTo-Json -Depth $Depth - return ($json -replace "`r?`n", " " -replace "\s{2,}", " ").Trim() -} - -# Normalizza baseUrl per includere schema se mancante -if ($GitlabUrl -notmatch '^https?://') { - $baseUrl = "https://$GitlabUrl".TrimEnd('/') -} -else { - $baseUrl = $GitlabUrl.TrimEnd('/') -} - -# Header autenticazione -$headers = @{ "PRIVATE-TOKEN" = $PrivateToken } - -# Inizializza file di log (sovrascrive se esiste) -$startLine = "INFO [{0}] Starting GitLab users retrieval for IDs {1}-{2}" -f (Get-Date -Format o), $StartId, $EndId -$startLine | Out-File -FilePath $LogFile -Encoding UTF8 - -$retrieved = 0 -$errors = 0 - -# inizializza contatore per numeratore -$counter = 1 -$total = $EndId - $StartId + 1 - -for ($id = $StartId; $id -le $EndId; $id++) { - $url = "$baseUrl/api/v4/users/$id" - # crea prefisso numerato e separatore (es. ----- 001/100 -----) - $num = "{0:D3}" -f $counter - $separator = "----- $num/$total -----" - - try { - # Recupera dati utente - $user = Invoke-RestMethod -Uri $url -Headers $headers -Method Get -ErrorAction Stop - $userJson = ToSingleLineJson -Object $user -Depth 10 - - # --- Recupero impostazioni notifiche robusto --- - $notif = $null - $notifLevel = "unavailable" - $notifDetails = "" - - $err1 = $null; $err2 = $null; $err3 = $null - - # 1) Prova endpoint per user specifico: /users/:id/notification_settings - try { - $notifUrlUser = "$baseUrl/api/v4/users/$id/notification_settings" - $notif = Invoke-RestMethod -Uri $notifUrlUser -Headers $headers -Method Get -ErrorAction Stop - } - catch { - $notif = $null - $err1 = $_ - } - - # 2) Se nulla, prova query param ?sudo= su /notification_settings - if ($notif -eq $null) { - try { - $notifUrlSudoParam = "$baseUrl/api/v4/notification_settings?sudo=$id" - $notif = Invoke-RestMethod -Uri $notifUrlSudoParam -Headers $headers -Method Get -ErrorAction Stop - } - catch { - $notif = $null - $err2 = $_ - } - } - - # 3) Se ancora nulla, prova header Sudo (copia headers per non modificare l'originale) - if ($notif -eq $null) { - try { - $headersWithSudo = @{} - foreach ($k in $headers.Keys) { $headersWithSudo[$k] = $headers[$k] } - $headersWithSudo["Sudo"] = [string]$id - $notifUrlSudoHeader = "$baseUrl/api/v4/notification_settings" - $notif = Invoke-RestMethod -Uri $notifUrlSudoHeader -Headers $headersWithSudo -Method Get -ErrorAction Stop - } - catch { - $notif = $null - $err3 = $_ - } - } - - # Analizza risultato o logga dettagli diagnostici - if ($notif -ne $null) { - if ($notif.PSObject.Properties.Name -contains "level") { - $notifLevel = $notif.level - } - elseif ($notif.PSObject.Properties.Name -contains "notification_level") { - $notifLevel = $notif.notification_level - } - else { - $notifLevel = "found_object" - } - - if ($notifLevel -eq "custom" -and $notif.email_events -ne $null) { - $notifDetails = ToSingleLineJson -Object $notif.email_events -Depth 5 - } - else { - $notifDetails = ToSingleLineJson -Object $notif -Depth 5 - } - } - else { - # dettaglio diagnostico: registra gli status code e body di eventuali errori - $diag = @() - foreach ($e in @($err1, $err2, $err3)) { - if ($null -ne $e) { - $status = "unknown" - $body = "" - try { - if ($e.Exception.Response -ne $null) { - $status = $e.Exception.Response.StatusCode.value__ - $stream = $e.Exception.Response.GetResponseStream() - if ($stream -ne $null) { - $sr = New-Object System.IO.StreamReader($stream) - $body = $sr.ReadToEnd() - $sr.Close() - } - } - } catch {} - $diag += @{ status = $status; message = ($e.Exception.Message -replace "`r?`n"," "); body = $body } - } - } - $diagJson = ($diag | ConvertTo-Json -Depth 5) -replace "`r?`n"," " - $notifLevel = "unavailable" - $notifDetails = "diag=" + $diagJson - } - # --- fine recupero notifiche --- - - # Scrive riga log con separatore, dati utente e livello notifiche - $line = "{0} `nINFO [{1}] USER_FOUND id={2} notif_level={3} notif_details={4} data={5}" -f $separator, (Get-Date -Format o), $id, $notifLevel, $notifDetails, $userJson - $line | Out-File -FilePath $LogFile -Encoding UTF8 -Append - $retrieved++ - } - catch { - $status = "unknown" - try { - if ($_.Exception.Response -ne $null) { - $status = $_.Exception.Response.StatusCode.value__ - } - } catch { $status = "unknown" } - - if ($status -eq 404) { - $line = "{0} `nWARN [{1}] USER_NOT_FOUND id={2} status=404 message=Not Found" -f $separator, (Get-Date -Format o), $id - } - else { - $msg = $_.Exception.Message -replace "`r?`n", " " - $line = "{0} `nERROR [{1}] USER_ERROR id={2} status={3} message={4}" -f $separator, (Get-Date -Format o), $id, $status, $msg - } - $line | Out-File -FilePath $LogFile -Encoding UTF8 -Append - $errors++ - } - - $counter++ - Start-Sleep -Milliseconds 200 -} - -$endLine = "INFO [{0}] Completed. Retrieved={1} Errors={2}" -f (Get-Date -Format o), $retrieved, $errors -$endLine | Out-File -FilePath $LogFile -Encoding UTF8 -Append - -Write-Host "Fatto. Log salvato in $LogFile. Utenti recuperati: $retrieved. Errori: $errors."