Browsing articles tagged with " plesk mail"

plesk api

Plesk’in apisini kullanarak .net de yapılmış olan uygulama.

Not : Bu uygulama daha önce PHP ile yazmış olduğum uygulamayı .NET ortamına geçirmek amacı ile Sedat KARTAL arkadaşım tarafından hazırlanmıştır.

try
        {
 
            ServicePointManager.ServerCertificateValidationCallback = delegate  //ssl sertifikamız yok bu yüzden ssli atlatmak için bu kodu yazdım
            {
                return
                    true;
            };
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://adresburaya.net:8443/enterprise/control/agent.php");
 
            paket = "<?xml version='1.0' encoding='UTF-8'?> <packet version='1.4.0.0'> <client> <add> <gen_info> <cname>LogicSoft Ltd.</cname> <pname>Stephen Lowell</pname> <login>stevelow</login> <passwd>steve78</passwd> <status>0</status> <phone>416 907 9944</phone> <fax>928 752 3905</fax> <email>host@logicsoft.net</email> <address>105 Brisbane Road, Unit 2</address> <city>Toronto</city> <state/> <pcode/> <country>CA</country> </gen_info> <limits> <disk_space>100000</disk_space> <max_dom>50</max_dom> <max_subdom>250</max_subdom> <max_webapps>30</max_webapps> <max_traffic>50000</max_traffic> <max_db>200</max_db> <mysql_dbase_space>50000</mysql_dbase_space> <max_shared_ssl_links>50</max_shared_ssl_links> <expiration>1134616208</expiration> </limits> <permissions> <create_domains>true</create_domains> <manage_phosting>true</manage_phosting> <manage_quota>false</manage_quota> <manage_subdomains>true</manage_subdomains> <change_limits>true</change_limits> <manage_dns>true</manage_dns> <manage_log>true</manage_log> <manage_anonftp>true</manage_anonftp> <manage_webapps>true</manage_webapps> <manage_sh_access>true</manage_sh_access> <manage_maillists>true</manage_maillists> <make_dumps>true</make_dumps> <remote_access_interface>true</remote_access_interface> <cp_access>true</cp_access> <manage_domain_aliases>true </manage_domain_aliases> </permissions> </add></client> </packet>";
            request.Method = "POST";
            request.Headers.Add("HTTP_AUTH_LOGIN", "kullanıcıadı");
            request.Headers.Add("HTTP_AUTH_PASSWD", "şifre");//kullanıcı adı şifre yaz
            request.ContentType = "text/xml";
            request.ContentLength = paket.Length;
 
 
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
 
 
 
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] buffer = encoding.GetBytes(paket);
 
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(buffer, 0, paket.Length);
            }
 
            WebResponse Donen = request.GetResponse();
            //curl_close($this->Oturum);
            HttpWebResponse result= (HttpWebResponse)request.GetResponse();
            Stream receive=result.GetResponseStream();
            StreamReader sr=new StreamReader(receive);
            string sonuc=sr.ReadToEnd();
            Label2.Text = sonuc;
            if (sonuc.Contains("<status>ok</status>"))
            {
                Label1.Text = "Hosting Eklendi.";
 
            }
            else
            {
                Label1.Text = "Hosting Eklenemedi";
 
            }
 
 
 
        }
        catch (Exception ex)
        {
 
            Label1.Text = ex.Message;
        }
May 23, 2009

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); 
	}
}
 
 
?>