projeler

Alan Adı Sorgulama : Rivy.Net

Son zamanlarda üzerinde uğraştığım projemden biraz bahsedeceğim bu yazımda size;
Onun adı rivy :)

Kısaca nedir ? Ne işe yarar?
Rivy, Php – Ajax – MySql tabanlı bir alan adı sorgulama sistemi.  Bundan yaklaşık  1 ay önce r10′da dolaşırken tesadüf eseri görüp kaydettiÄŸim domainim üzerine neler yapabileceÄŸim konusunda öneriler alırken bir kaç arkadaşın(webloader) söyledikleri üzerine aklıma giren projem oldu rivy :) İlk aÅŸamada alan adlarını sorgulayabildiÄŸiniz, boÅŸ veya dolu olup olmadığını, dolu ise whois bilgilerini görebildiÄŸiniz rivy ile ilerneyen günlerde tamamen ücretsiz olarak düşecek domainlerinizi ekleyip – listeyebileceÄŸiniz,  takip ettiÄŸiniz domain düştüğünde size mail ile haber verecek bir sistemi hizmetinize sunmayı planlıyorum.

Rivy’i buradan ziayret edebilirsiniz :)


plesk client api

Bir kaç gün önce bir projede Plesk panelde kaytılı domainlere yeni mail adresi ekleme, silme, düzenleme gibi iÅŸlemleri yapmam gerekiyordu. Bunun üzerine küçük çaplı araÅŸtırmalar sonucunda Plesk’in bir API si olduÄŸunu öğrendim ve araÅŸtırmalarımı birazcık daha sürdürdükten sonra gerekli dökümanları elde etmiÅŸtim ve oturup ihtiyacıma uygun birÅŸeyler çıkartmaya baÅŸladım.
Öncelikle size sistemin nasıl işlediğinden bahsetmek istiyorum;
Plesk Panelin API uyumlu sürümlerinde “enterprise/control/agent.php” konumundaki dosyaya Plesk panelin anlayacağı dilden (: XML verileri göndererek ve yine aynı yöntemle cevaplarını alarak iÅŸlemlerimiz yapıyor ve iÅŸlem sonuçlarını görüyoruz. Fazla söze gerek yok (:
Plesk, Burda ve burda gerekli açıklamaları ve örnekleri yapmış.

Gelelim benim örneğime;

php nin cURL kütüphanesini kullanaraktan bu verileri gönderme ve yanıtlarını alma işini yaptım. İşte bu işlemleri yapan sınıfımız;

<?php
// <ismailperim@gmail.com>
class Mail
{
public $Host;
public $Port = "81";
public $Path = 'enterprise/control/agent.php';
public $Kullanici = "admin";
public $Sifre;
public $DomainID;
public $Sonuc;
public $SonucSayi;
 
public $MailAd;
public $MailSifre;
 
private $Oturum;
private $Url; 
private $Basliklar ;
 
	public function Mail($_Host = null,$_Port = null ,$_Kullanici = null,$_Sifre = null,$_DomainID =null)
	{
		if(!is_null($_DomainID))
		{
			$this->Host = $_Host;
			$this->Port = $_Port;
			$this->Kullanici = $_Kullanici;
			$this->Sifre = $_Sifre;
			$this->DomainID = $_DomainID;
		}
 
		$this->Url = "http://".$this->Host.":".$this->Port."/".$this->Path."";
		$this->Basliklar = array(
		'HTTP_AUTH_LOGIN: '.$this->Kullanici.'',
		'HTTP_AUTH_PASSWD: '.$this->Sifre.'',
		'Content-Type: text/xml'); 
 
 
 
		$this->Oturum = curl_init();
		curl_setopt($this->Oturum, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($this->Oturum, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($this->Oturum, CURLOPT_HTTPHEADER, $this->Basliklar);
		curl_setopt($this->Oturum, CURLOPT_URL, $this->Url);
		curl_setopt($this->Oturum, CURLOPT_RETURNTRANSFER, true);
	}
	public function Ekle($_Isim,$_Sifre)
	{
		$_Paket = <<<EOP
		<packet version="1.4.2.0">
			<mail>
			<create>
			   <filter>
			      <domain_id>$this->DomainID</domain_id>
			      <mailname>
			          <name>$_Isim</name>
			          <mailbox>
			              <enabled>true</enabled>
			          </mailbox>
			          <password>$_Sifre</password>
			          <permissions>
			              <cp_access>true</cp_access>
			          </permissions>
			      </mailname>
			   </filter>
			</create>
			</mail>
		</packet>
EOP;
		curl_setopt($this->Oturum, CURLOPT_POSTFIELDS, $_Paket);
		$_Donen = curl_exec($this->Oturum);
		//curl_close($this->Oturum); 
		if(eregi("<status>ok</status>",$_Donen))
		{
			$this->Sonuc = "E-mail Adresiniz Eklendi.";
			$this->SonucSayi = true;
		}
		else
		{
			$this->Sonuc = "E-mail Adresiniz Eklenemedi";
			$this->SonucSayi = false;
		}
		return $this->Sonuc;
	}
	private function ListeDonustur($_Liste)
	{
	//echo $_Liste;
		$_Donen = array(array());
		$Dok = new DOMDocument();
		$Dok->loadXML($_Liste);
		$Sonuclar = $Dok->getElementsByTagName( "result" );
		$i = 0;
		foreach($Sonuclar as $S)
		{
			$Isim = $S->getElementsByTagName( "name" );
			$_Donen[$i]["isim"] = $Isim->item(0)->nodeValue;
			$Sifre= $S->getElementsByTagName( "password" );
			$_Donen[$i]["sifre"] = $Sifre->item(0)->nodeValue;
			$i++;
		}
		return $_Donen;
	}
	public function Liste($_Isim=null)
	{
		$this->Mail();
		if(!is_null($_Isim))
		{
			$_IsimIc = "<name>$_Isim</name>";
 
		}
		else
		{
			$_IsimIc = "";
		}
		$_Paket = <<<EOP
		<packet version="1.4.2.0">
			<mail>
				<get_info>
					<filter>
						<domain_id>$this->DomainID</domain_id>
						$_IsimIc
					</filter>
					<cp_access/>
					<mailbox/>
					<aliases/>
					<permissions/>
				</get_info>
			</mail>
		</packet>
EOP;
 
		curl_setopt($this->Oturum, CURLOPT_POSTFIELDS, $_Paket);
		$_Donen = curl_exec($this->Oturum);
		//curl_close($this->Oturum); 
		return $this->ListeDonustur($_Donen);
	}
	public function Duzenle($_Isim,$_Sifre)
	{
		$this->Sil($_Isim);
		if($this->SonucSayi)
		{
			$this->Ekle($_Isim,$_Sifre);
			if($this->SonucSayi)
			{
				$this->Sonuc = "E-Mail Adresiniz Düzenlendi";
				$this->SonucSayi=true;
			}
			else
			{	
				$this->Sonuc = "E-Mail Adresiniz Düzenlenemedi";
				$this->SonucSayi=false;
			}
		}	
		else
		{	
			$this->Sonuc = "E-Mail Adresiniz Düzenlenemedi";
			$this->SonucSayi=false;
		}
	}
	public function Sil($_Isim = null)
	{
		if(!is_null($_Isim))
		{
			$_Paket = <<<EOP
			<packet version="1.4.2.0">
			<mail>
			<remove>
			   <filter>
			      <domain_id>$this->DomainID</domain_id>
			      <name>$_Isim</name>
			    </filter>
			</remove>
			</mail>
		</packet>
EOP;
		curl_setopt($this->Oturum, CURLOPT_POSTFIELDS, $_Paket);
		$_Donen = curl_exec($this->Oturum);
		if(eregi("<status>ok</status>",$_Donen))
			{
				$this->Sonuc = "E-Mail Adresiniz Silindi.";
				$this->SonucSayi = true;
			}
			else
			{
				$this->Sonuc = "E-Mail Adresiniz Silinemedi";
				$this->SonucSayi = false;
			}
		}
	}
	public function Kapat()
	{
		curl_close($this->Oturum); 
	}
}
 
 
?>