Hizmetin İçine Erişim
Hizmetin arkasındaki panele ulaşan yedi uç: özet, araçlar, metotlar, giriş ve parola.
Genel Bakış
Bir hizmetin arkasında çoğu zaman bir panel vardır: barındırma paneli, sanallaştırma arayüzü ya da bir yazılım kurulumu. Bu yedi uç o panele ulaşır.
Hepsi canlı çağrıdır: WISECP kendi kayıtlarını değil, panelin o anki durumunu döndürür. Panel yavaşsa yanıt yavaşlar, panel kapalıysa uç hata verir.
Müşteriye açılan alan yönetim tarafına göre dar tutulmuştur. Kurma, askıya alma ve sonlandırma gibi işler buradan hiç erişilemez.
Referans
Panel Özetini Okuma
Hizmetin arkasındaki panelin özetini ve yeteneklerini döndürür.
curl 'https://panel.ornek.com/api/v1/client/services/622/dashboard' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/dashboard`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (data.sso_available) showOpenPanelButton();$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/dashboard');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu cagri PANELE CANLI gider: panel yavassa yanit yavaslar, ekranda onbellek kullanin.
$d = Kernel::internal('client:Services/GetServiceDashboard',
['owner_id' => $uid, 'id' => $id])['data'];
$can = $d['methods'];Araçları Listeleme
Hizmet üzerinde kullanılabilecek panel araçlarını döndürür.
curl 'https://panel.ornek.com/api/v1/client/services/622/tools' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/tools`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const byGroup = Object.groupBy(data, (t) => t.group);$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/tools');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Musteri listesi YONETIM listesinden DARDIR: yalniz musteri alanina acilan araclar gelir.
$tools = Kernel::internal('client:Services/GetServiceTools',
['owner_id' => $uid, 'id' => $id])['data'];
$keys = array_column($tools, 'key');Araç Verisini Okuma
Bir aracın listelediği veriyi panelden çeker.
curl 'https://panel.ornek.com/api/v1/client/services/622/tools/databases' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/tools/${tool}`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/tools/' . $tool);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Donen sekil MODULE aittir, API sozlesmesi degil: sunucu paneli degisirse alanlar da degisir.
$rows = Kernel::internal('client:Services/GetServiceToolData',
['owner_id' => $uid, 'id' => $id, 'tool' => $tool])['data'];Araç Eylemi Çalıştırma
Bir araç üzerinde oluşturma, düzenleme ya da silme çalıştırır. DNS kaydı düzenlemesi (dns-zone-editor/edit) yalnız gönderdiğinizi değiştirir: gönderilmeyen ad, TTL ya da öncelik kaydın mevcut değerini korur.
curl -X POST 'https://panel.ornek.com/api/v1/client/services/622/tools/databases/create' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"name":"shop"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/tools/${tool}/${action}`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(payload),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/tools/' . $tool . '/' . $action);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu cagri SUNUCUDA gercek degisiklik yapar ve geri alinamaz: silme eylemlerini onay arkasina alin.
$out = Kernel::internal('client:Services/RunServiceToolAction',
['owner_id' => $uid, 'id' => $id, 'tool' => $tool, 'action' => 'create'] + $payload);Modül Metodu Çalıştırma
Modülün müşteriye açtığı bir metodu çalıştırır.
curl -X POST 'https://panel.ornek.com/api/v1/client/services/622/module-method' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"method":"backup_download"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/module-method`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ method }),
});
const { data } = await res.json();
if (data.redirect_url) window.location = data.redirect_url;$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/module-method');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['method' => $method]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// YALNIZ beyanli metotlar cagrilir: kurma, askiya alma ve sonlandirma buradan asla erisilemez.
$d = Kernel::internal('client:Services/GetServiceDashboard',
['owner_id' => $uid, 'id' => $id])['data'];
if (in_array($method, $d['methods'], true))
Kernel::internal('client:Services/UseServiceModuleMethod',
['owner_id' => $uid, 'id' => $id, 'method' => $method]);Panele Tek Oturum Açma
Panele parolasız giriş için tek kullanımlık bir adres üretir.
curl -X POST 'https://panel.ornek.com/api/v1/client/services/622/sso' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/sso`, {
method: 'POST',
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
window.open(data.url, '_blank');$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/sso');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Adres KISA OMURLUDUR ve tek kullanimliktir: onbelleklemeyin, her acilista yeniden uretin.
$sso = Kernel::internal('client:Services/GetServiceSso',
['owner_id' => $uid, 'id' => $id])['data'];
header('Location: ' . $sso['url']);Panel Parolasını Değiştirme
Hizmetin panel parolasını değiştirir.
curl -X POST 'https://panel.ornek.com/api/v1/client/services/622/password' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"password":"a-long-new-secret"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/password`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ password }),
});
if (res.status === 422) showRule(await res.json());$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/password');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['password' => $new]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Panel parolasi HESAP parolasi degildir: buradaki degisim musterinin giris bilgilerine dokunmaz.
$d = Kernel::internal('client:Services/GetServiceDashboard',
['owner_id' => $uid, 'id' => $id])['data'];
if ($d['can_change_password'])
Kernel::internal('client:Services/ChangeServicePassword',
['owner_id' => $uid, 'id' => $id, 'password' => $new]);Tuzaklar
Özet, araçlar ve araç verisi WISECP veritabanından değil panelin kendisinden gelir. Panel yavaşladığında yanıt süresi uzar, panel erişilemez olduğunda uç hata döndürür. Bu uçları bir listeleme ekranında satır başına çağırmayın; kullanıcı gerçekten istediğinde çağırın.
Metot çalıştırma ucu, modülün müşteriye açık diye beyan ettiği metotları kabul eder. Yönetim tarafındaki genişlik burada yoktur: kurma, askıya alma ve sonlandırma metotlarına bu uçtan asla ulaşılamaz. Listeyi panel özetinden okuyun.
Araç uçlarının döndürdüğü yapı modülün kendi çıktısıdır ve sunucu paneli değiştiğinde değişebilir. Alan adlarına sıkı bağlanan bir arayüz bir modül güncellemesiyle kırılır. Yetenekleri araç listesinden okuyup buna göre çizin.
Operatör bir ürün için erişim kısıtlamasını açtığında hem tek oturum açma hem panel parolası değişimi kapanır, ayrıca özet ekranındaki giriş bilgileri düşer. Araçlar ise çalışmaya devam eder. Bunu bir hata sanmayın; özetteki iki bayrağı okuyun.
Tek oturum açma adresi kısa ömürlü ve tek kullanımlıktır. Bir yere kaydedip sonra açmak çalışmaz, üstelik o adres o anda panele giriş yetkisi taşır. Her açılışta yeniden üretin ve hiçbir günlüğe yazmayın.
Bu uçtan değiştirilen parola sunucudaki panelin parolasıdır; müşterinin WISECP giriş bilgileri etkilenmez. Yetenek yalnız barındırma ve sunucu türündeki hizmetlerde vardır ve modülün desteklemesi gerekir.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.