Cyberpanel'de toplu e-posta hesabı oluşturma için otomasyon nasıl kullanılır?

Captan.Max

Decapat
Katılım
13 Kasım 2023
Mesajlar
854
Çözümler
10
Yer
Turkey/İstanbul
Merhaba,

Cyberpanel kullanıyorum ve e-posta hesaplarını tek tek manuel olarak oluşturmak yerine toplu bir şekilde otomatik oluşturmanın bir yolunu arıyorum. API kullanmadan, mümkünse panel içinde ya da bir script ile bunu kolaylaştıracak bir çözüm arıyorum.

Bu konuda deneyimi olanların veya çözüm önerisi sunabileceklerin yardımını bekliyorum. Teşekkürler!

Konuyu çözüme ulaştırdım, API ile hallettim. Bu süreçte yapay zekanın da fazlasıyla yardımı dokundu; bir PowerShell kodu yazdırdım. Kod, masaüstündeki 'Mail:Şifre' ve 'Mail - Şifre' formatlarının her ikisini de destekliyor. Eğer hesap başarıyla oluşturulursa, bilgileri masaüstündeki başarılı.txt dosyasına kaydediyor. Aynı şekilde, başarısız olan hesaplar da ayrı bir dosyaya kaydediliyor. Kodun genel mantığı bu şekilde işliyor.

Kod:
# SSL sertifikası doğrulamasını devre dışı bırakır.
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

# Hata ayıklama modunu açar (debug mesajları görünür olur)
$DebugPreference = "Continue"

# CyberPanel API bilgileri (BURAYI KENDİ BİLGİLERİNE GÖRE DÜZENLE)
$cyberpanelUrl = "https://SUNUCU_IP_ADRESİN:8090/cloudAPI/"  # Örn: https://123.45.67.89:8090/cloudAPI/
$authHeader = "Basic SENİN_BASE64_YETKİLENDİRME_KODUN"        # Örn: "Basic 9a2hd2ja82j...==" şeklinde

# Bilgisayarındaki dosya yolları (KENDİ DOSYA KONUMUNA GÖRE GÜNCELLE)
$accountsFilePath = "C:\Klasör\Hesap.txt"
$successFilePath = "C:\Klasör\Başarılı.txt"
$failFilePath = "C:\Klasör\Başarısız.txt"

# Daha önceki başarılı/başarısız dosyalarını temizler
if (Test-Path $successFilePath) { Clear-Content $successFilePath }
if (Test-Path $failFilePath) { Clear-Content $failFilePath }

# Hesap.txt dosyasını okur
if (Test-Path $accountsFilePath) {
    $accounts = Get-Content -Path $accountsFilePath
} else {
    Write-Host "Hesap dosyası bulunamadı: $accountsFilePath"
    exit
}

# Her satırdaki e-posta:şifre bilgisini işler
foreach ($account in $accounts) {
    if ($account -match "(.+)[:\-](.+)") {
        $email = $matches[1].Trim()
        $password = $matches[2].Trim()
    } else {
        Write-Host "Hatalı format: $account"
        Add-Content -Path $failFilePath -Value $account
        continue
    }

    # E-posta'yı kullanıcı adı ve domain olarak ayır
    $emailParts = $email -split "@"
    if ($emailParts.Count -ne 2) {
        Write-Host "Geçersiz e-posta formatı: $email"
        Add-Content -Path $failFilePath -Value "$email - Geçersiz format"
        continue
    }

    $emailUser = $emailParts[0]
    $emailDomain = $emailParts[1]

    # API'ye gönderilecek JSON verisi
    $body = @{
        "serverUserName" = "PANEL_KULLANICI_ADIN"    # Genelde "admin" olur
        "controller" = "submitEmailCreation"
        "domain" = $emailDomain
        "username" = $emailUser
        "passwordByPass" = $password
    } | ConvertTo-Json -Compress

    # API isteği için başlıklar
    $headers = @{
        "Authorization" = $authHeader
        "Content-Type" = "application/json"
    }

    # API çağrısı yapılır
    try {
        $response = Invoke-RestMethod -Uri $cyberpanelUrl -Method Post -Headers $headers -Body $body

        if ($response.status -eq 1) {
            Write-Host "✅ Hesap oluşturuldu: $email"
            Add-Content -Path $successFilePath -Value "${email}:${password}"
        } else {
            Write-Host "❌ Oluşturulamadı: $email - Hata: $($response.error_message)"
            Add-Content -Path $failFilePath -Value "${email}:${password}"
        }
    } catch {
        Write-Host "⚠️ Hata oluştu: $_"
        Add-Content -Path $failFilePath -Value "${email}:${password}"
    }
}
 
Son düzenleme:

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı