• 19-09-2007, 00:03:40
    #1
    Bu gibi basit modüller veya otomasyonların zor olduğunu düşündüğümüzdenmidir bilinmez ama gerek AWBS gerek WHMCS olsun verdiğimiz paraların haddi hesabı yok. cPanel de hosting açma ile ilgili fonksiyonlar oldukça fazla olmasına karşın Plesk windows ve linux versiyonlarında bu tarz fonksiyonları hazır olarak verildiği konusunda bir bilgim yok. swsoft sitesinde bu modüllerin aslında kolayca nasıl yapılacağını anlatmış olsada işin içerisinden çıkamıyor gibiyiz.

    Kısaca Plesk windows sunucularda PHP ve cUrl ile hosting işlemini panele girmeden nasıl yapılacağına dair bir fonksiyon hazırladım. Bu geliştirilebilir ve DB desteği sağlanabilir. Örnek vermek amacıyla buraya yazdığımı hatırlatmak isterim. Gerekli alt yapı olduğu sürece aşağıdaki fonksiyonlar ile basitce hosting açılabileceğini göreceksiniz. İleriki zamanlarda Directi ve Onlinenic ile API aracılığı ile alan adı işlemlerini nasıl yapıldığınıda fonksiyonlar ile anlatmaya çalışacağım.

    Amacım AWBS gibi yazılımların basitçe hazırlanabileceğini anlatmak ve birazda olsa teşvik etmek. Umarım faydası olur....


    Paket bilgilerinin yer alacağı bir metin dosyası (.txt) ile işe başlayacağız.
    Bir metin belgesi açın ve aşağıdaki kodları içerisine yapıştırın, adını ekonomik.txt olarak kaydedin.

    <packet version="1.4.2.0">
    <domain>
    <add>
       <gen_setup>
          <name>--DOMAIN--</name>
          <client_id>--BAYIID--</client_id>
          <htype>vrt_hst</htype>
           <ip_address>--IP--</ip_address>
          <status>0</status>
        </gen_setup>
    
       <hosting>
          <vrt_hst>
          <ftp_login>--FTPUSER--</ftp_login>
          <ftp_password>--FTPPASS--</ftp_password>
    	  <ftp_quota>52428800</ftp_quota>
    	  <ssl>false</ssl>
          <php>true</php>
          <cgi>true</cgi>
          <mod_perl>true</mod_perl>
          <asp>true</asp>
          <asp_dot_net>true</asp_dot_net>
          <webstat>webalizer</webstat>
          <errdocs>false</errdocs>
          <ip_address>--IP--</ip_address>
         </vrt_hst>
     </hosting>
    
    <limits>
    	
    	<max_subdom>10</max_subdom>
    	<disk_space>52428800</disk_space>
    	<max_traffic>1073741824</max_traffic>
    	<max_db>1</max_db>
    	<max_box>5</max_box>
    	<mbox_quota>10485760</mbox_quota>
                 <max_mssql_db>0</max_mssql_db>
                 <mysql_dbase_space>52428800</mysql_dbase_space>
    	<max_shared_ssl_links>0</max_shared_ssl_links>
    	<max_maillists>1</max_maillists>
    	<max_webapps>5</max_webapps>
    	<max_odbc>3</max_odbc>	
         </limits>
         <prefs>
    	<www>true</www>
         </prefs>
     <user>
          <enabled>true</enabled>
          <password>--CPSIFRE--</password>
          <cname>--KONTAKADI--</cname>
          <pname>--ADSOYAD--</pname>
          <email>--EMAIL--</email>
          <multiply_login>false</multiply_login>
    <perms>
    <manage_quota>true</manage_quota>
    <manage_subdomains>true</manage_subdomains>
    <manage_anonftp>false</manage_anonftp>
    <manage_webapps>true</manage_webapps>
    <manage_maillists>true</manage_maillists>
    <manage_drweb>true</manage_drweb>
    <make_dumps>true</make_dumps>
    <manage_crontab>true</manage_crontab>
    <manage_dns>true</manage_dns>	   
    <manage_phosting>true</manage_phosting>
    </perms>
    </user>
       
    
    </add>
    
    </domain>
    
    </packet>
    Farkındaysanız txt olarak kaydettiğimiz dosya aslında bir xml dosyasıdır.
    Biz txt olarak kaydettik çünkü konudan fazla sapmadan amaca ulaşmak istiyorum.
    Bu text dosyasında anlatmak istediğim bazı kilit noktalar olacak, öncelikle trafik, disk alanı, mail kotaları gibi alanların boyut türü byte cinsinden hesaplanmak zorundadır. Bu plesk api nin istedigi bir mecburiyettir.
    Yukarıdaki dosyada limitler şu şekildedir,
    Disk alanı : 50MB
    Trafik : 1GB
    Mysql Kotası : 50MB
    Posta Kutusu Kotası : 10MB

    Dilediğiniz gibi geliştirebilirsiniz, referans olarak Supported Operations adresindeki dökümanı kullanınız.




    Fonksiyonlarımızın yer alacağı php dosyası için plesk.php adında bir dosya oluşturup içerisine aşağıdaki kodları yapıştırıp kayıt edelim.
    <?
    ////////////////////////
    $cp_bayi_id = 1;  // plesk panelde oluşturulmuş reseller id
    $cp_ip = '66.199.199.199'; //plesk server ip
    $cp_user = 'setup'; //plesk (ADMIN veya RESELLER) kullanıcı adı 
    $cp_pass = 'plesk'; //plesk şifre
    ////////////////////////
    
    function pleskwin_host($domain,$user,$pass,$paket) {
    		global $cp_bayi_id, $cp_ip,$cp_user,$cp_pass;
    		
    $ch = curl_init();
    define ('HOST', $cp_ip);
    define ('PORT', 8443);
    define ('PATH', 'enterprise/control/agent.php');
    
    $url = 'https://' . HOST . ':' . PORT . '/' . PATH;
    
    $headers = array(
          'HTTP_AUTH_LOGIN: '.$cp_user,
          'HTTP_AUTH_PASSWD: '.$cp_pass,
    'Content-Type: text/xml'); 
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_URL, $url);
    
    ########################################
    $dosya = fopen("./".$paket.".txt",'r');
    $boyut = filesize("./".$paket.".txt");
    $content = fread ($dosya, $boyut);
    ##############################################################
    $content = eregi_replace("--DOMAIN--", $domain, $content);
    $content = eregi_replace("--BAYIID--", $cp_bayi_id, $content);
    $content = eregi_replace("--FTPUSER--", $user, $content);
    $content = eregi_replace("--FTPPASS--", $pass, $content);
    $content = eregi_replace("--CPSIFRE--", $pass, $content);
    $content = eregi_replace("--KONTAKADI--", $adsoyad, $content);
    $content = eregi_replace("--ADSOYAD--", $adsoyad, $content);
    $content = eregi_replace("--EMAIL--", $email, $content);
    $content = eregi_replace("--IP--", $cp_ip, $content);
    ##############################################################
    fclose ($dosya);
    ########################################
    $packet = $content;
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $packet);
    $retval = curl_exec($ch); 
    curl_close($ch); 
    return $retval;
    }
    ?>
    paket bilgilerimizin yer aldığı text dosyası ile oluşturduğumuz plesk.php dosyasının aynı klasörde yer aldığına dikkat etmeliyiz.

    plesk.php içerisinde sayfanın en üstünde ayarlanması gereken bazı değişkenler mevcut zaten yanlarında açıklamaları yer alıyor ayrıca anlatmaya gerek yok sanırım.

    Önemli kısımları bitirdik, şimdi kodlarımızı test edelim.

    olustur.php adında bir dosya oluşturalım ve aşağıdaki gibi düzenledikten sonra ekonomik.txt ve plesk.php ile aynı dizine kayıt edelim.
    <?php
    include('plesk.php');
    
    $domain = 'merhabadunya.com';
    $user = 'merhaba';
    $pass = 'a1b2c3d4';
    $paket = 'ekonomik'; // oluşturduğumuz txt dosyasının adı.
    
    echo pleskwin_host($domain,$user,$pass,$paket);
    ?>
    herşeyi tamamladık tarayıcımızdan olustur.php yi çağırdığımızda sonuç
    aşağıdaki gibi olmalıdır
    -
    <?xml version="1.0"?>
    <packet version="1.4.2.0"><domain><add><result><status>ok</status><id></id></result></add></domain></packet>
    Böylece php ile uzaktan plesk windows sunucularda bir hesap açmış olduk. Örneklere istinaden erişim bilgilerimiz şöyle olacaktır,

    Kontrol panel k.adı : merhabadunya.com
    Kontrol panel şifre : a1b2c3d4
    FTP kullanıcı adı : merhaba
    FTP Şifre : a1b2c3d4

    basit olarak Plesk kontrol panelinde PHP ile hosting oluşturmayı anlatmak istedim. Bu fonksiyonlar geliştirilebilir ve daha stabil bir hale getirilebilir. Yeterki isteyelim, ülkemizden dışarıya akan script paralarıda ülkemizde kalabilir belki

    Saygılarımla....
  • 19-09-2007, 02:00:28
    #2
    çok sağol...
  • 19-09-2007, 02:18:46
    #3
    eline sağlık bende müsait olunca cpanel için yazdğımı paylaşayım
  • 22-09-2007, 13:12:18
    #4
    Allah razı olsun.Bende aynen katılıyorum.O zaman bu konulara hakim arkadaşlar bir araya gelip bir hosting kontrol scriptide siz yapın.Bizde onu alalım.Örnek olarak entrenix panel var sanırım Türk'ler yapıyor.
  • 22-09-2007, 14:22:11
    #5
    Seyranli, paylaşımını bekliyoruz
  • 25-09-2007, 02:04:37
    #6
    <?
    if(!defined('guvenlik'))
    die('GEÇERSİZ İŞLEM');
    define('WHMHOST','localhost');
    define('WHMKULLANICI','root');
    define('WHMSIFRE','8ab47c459146bbe090cdb8b98ac20d37
    328d28627b6c4817bf1a56f2ca325336
    63ac6187fb617b86fcd323d596ea1469
    f593b0ad89ff361e9f7a38f5dc07665b
    5e5959b5fb720c82feccac90d19d9037');
    // burası whm den aldığınız up uzun karmakarışık yazılar var ya :) hah işte orası
    
    function whmal ($request) {
    
        $sifre = preg_replace("'(\r|\n)'","",WHMSIFRE);
        $authstr = WHMKULLANICI . ":" . $sifre;
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "http://".WHMHOST.":2086" . $request);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            $curlheaders[0] = "Authorization: WHM $authstr";
            curl_setopt($ch,CURLOPT_HTTPHEADER,$curlheaders);
            $data=curl_exec ($ch);
            curl_close ($ch);
    
        return $data;    
    }
    
    
    function hesapyarat ($domain,$kullanici,$sifre,$paket) {
        $result = whmal("/scripts/wwwacct?remote=1&nohtml=1&username=${kullanici}&password=${sifre}&domain=${domain}&plan=${paket}");
        return $result;
    }
    
    function hesaplistele () {
        echo '<table><tr><td width=15%>Domain</td><td width=13%>Kullanıcı</td><td width=18%>Açılış</td><td width=10%>Disk Kota</td><td width=10%>Band Kota</td><td width=15%>Paketi</td><td width=20%>Hesap Açan</td>';
        $ilkbilgi = whmal("/scripts2/listaccts?viewall=1");
        preg_match_all('/<a href=\"\/scripts\/edituser\?domain=(.*?)&user=(.*?)\">(.*?)<td align=\"center\">&nbsp;([0-9]+)&nbsp;([a-zA-Z]+)&nbsp;([0-9]+)&nbsp;([0-9]+):([0-9]+)&nbsp;<\/td>(.*?)<td align=\"right\">&nbsp;(.*?)&nbsp;<a(.*?)<td align=\"right\">&nbsp;(.*?)&nbsp;<\/td>(.*?)<td align=\"center\">&nbsp;(.*?)&nbsp;<a(.*?)<td>&nbsp;(.*?)&nbsp;<a href=\"\/scripts\/change/s', $ilkbilgi, $bul);
        $adet=count($bul[2]);
        echo $adet.' Kayıt bulundu';
        $renk=1;
        for($i=0;$i<count($bul[2]);$i++){
        $yil='20'.$bul[4][$i];
        $ay=$bul[5][$i];
        $aylar=array("Jul"=>'Temmuz','Aug'=>'Ağustos','Sep'=>'Eylül');
        $ay=$aylar[$ay];
        $gun=$bul[6][$i];
        $tarih="$gun $ay $yil";
        $bgcolor=($renk%2)==0?'bgcolor=#fbd046':'bgcolor=#asdasd';
        $renk++;
        echo '</tr><tr><td '.$bgcolor.'>'.$bul[1][$i].'</td><td '.$bgcolor.'>'.$bul[2][$i].' <a href=hesaplar.php?islem=hesapsil&hesap='.$bul[2][$i].'>SİL</a></td><td '.$bgcolor.'>'.$tarih.'</td><td '.$bgcolor.'>'.$bul[10][$i].'</td><td '.$bgcolor.'>'.$bul[12][$i].'</td><td '.$bgcolor.'>'.$bul[14][$i].'</td><td '.$bgcolor.'>'.$bul[16][$i].'</td>';
        }
        echo '</tr></table>';
    }
    function paketlistele () {
        $ilkbilgi = whmal("/scripts/remote_listpkg");
            $paketler = explode("\n",$ilkbilgi);
            for ($i=0;$i<count($paketler);$i++) {
            list($paket,$ozellikler) = split("=", $paketler[$i]);
            if ($paket != '' && $paket != 'PehaspeSpeciaL') {
            $ozellik=explode(",",$ozellikler);
            echo 'Paket: '.$paket.' Alan: '.$ozellik[2].'MB Bant: '.$ozellik[10].'MB<br>';
            }
            }
    }
    ?>
    bu üstteki whm ye ulaşabilmeniz içindi, bunu whm.php şeklinde kaydettiğimizi düşünelim


    bu da sizin admin panelinizdeki herhangi bi dosya olsun adını da hesaplar.php yapalım
    <style>
    .hidden{
        display: none;
    }
    </style>
    <div align=center>
    <a href=hesaplar.php?islem=hesaplistele>Hesapları Göster</a> 
    <a href=hesaplar.php?islem=resellerlistele>Resellerları Göster</a>
    <a href=hesaplar.php?islem=paketlistele>Paketleri Göster</a> 
    <a href=hesaplar.php?islem=hesapac>Yeni Hesap Oluştur</a>  
    </div>
    <?
    define('guvenlik','olmamı abi ayıpsın');
    require_once('whm.php');
    function hesapacform(){
    ?>
    <link rel="stylesheet" type="text/css" href="/yui/container/assets/container.css" />
    <script type="text/javascript" src="/js/sorttable.js"></script>
    <script type="text/javascript" src="/js/pkg_hover.js"></script>
    <script type="text/javascript" src="/yui/utilities/utilities.js"></script>
    <script type="text/javascript" src="/yui/container/container.js"></script>
    <script><!--HIDE IT---
    function parsexmlnslist(o) {
        var nslist = o.responseText.split(":");
        var nstxt = nslist.join("<br />");
        document.getElementById('nstouse').innerHTML=nstxt;
    }
    function dologinname() {
        var domain = document.hesapacmaformu.domain.value;
        var username = domain.substring(0,8);
        var username = username.toLowerCase();
        document.hesapacmaformu.username.value = replaceString(".","",username);
    }
    
    function replaceString(oldS,newS,fullS) {
        // Replaces oldS with newS in the string fullS
        for (var i=0; i<fullS.length; i++) {
            if (fullS.substring(i,i+oldS.length) == oldS) {
                fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length)
            }
        }
        return fullS
    }
    
    function fixaddress() {
        document.hesapacmaformu.domain.value = document.hesapacmaformu.domain.value.toLowerCase();
    }
    
    function miniupdateform(nfo) {
        cpsets = nfo.split(",");
        // ip,cgi,quota,frontpage,cp,maxftp,maxsql,maxpop,maxlst,maxsub,plan,maxpark,maxaddon
        document.hesapacmaformu.plan.value = cpsets[15];
    }
    
    function setnoplan() {
            document.hesapacmaformu.msel.selectedIndex = 0;
    }
    
    function updateform(nfo) {
        var selectEl = document.hesapacmaformu.msel;
        selectEl.className = selectEl.options[selectEl.selectedIndex].className;
        cpsets = nfo.split(",");
        // ip,cgi,quota,frontpage,cp,maxftp,maxsql,maxpop,maxlst,maxsub,plan,maxpark,maxaddon
        
        if (document.hesapacmaformu.ip) {
            if (cpsets[0] == "n") {
                document.hesapacmaformu.ip.checked = false;
            } else {
                document.hesapacmaformu.ip.checked = true;
            }
        }
    
        if (cpsets[1] == "n") {
            document.hesapacmaformu.cgi.checked = false;
        } else {
            document.hesapacmaformu.cgi.checked = true;
        }
        
        if (cpsets[3] == "n") {
            document.hesapacmaformu.frontpage.checked = false;
        } else {
            document.hesapacmaformu.frontpage.checked = true;
        }
        
        if (document.hesapacmaformu.quota) {
            document.hesapacmaformu.quota.value = cpsets[2];
        }
        if (document.hesapacmaformu.maxftp) {
            document.hesapacmaformu.maxftp.value = cpsets[5];
        }
        if (document.hesapacmaformu.maxsql) {
            document.hesapacmaformu.maxsql.value = cpsets[6];
        }
        if (document.hesapacmaformu.maxpop) {
            document.hesapacmaformu.maxpop.value = cpsets[7];
        }
        if (document.hesapacmaformu.maxlst) {
            document.hesapacmaformu.maxlst.value = cpsets[8];
        }
        if (document.hesapacmaformu.maxsub) {
            document.hesapacmaformu.maxsub.value = cpsets[9];
        }
        if (document.hesapacmaformu.bwlimit) {
            document.hesapacmaformu.bwlimit.value = cpsets[10];
        }
        if (document.hesapacmaformu.hasshell) {
            if (cpsets[11] == "n") {
                document.hesapacmaformu.hasshell.checked = false;
            } else {
                document.hesapacmaformu.hasshell.checked = true;
            }
        }
        if (document.hesapacmaformu.cpmod) { 
            for (var i = 0; i < document.hesapacmaformu.cpmod.options.length; i++) {
                if (document.hesapacmaformu.cpmod.options[i].value == cpsets[4]) {
                    document.hesapacmaformu.cpmod.selectedIndex=i;
                }
            }
        }
        document.hesapacmaformu.plan.value = cpsets[15];
        if (document.hesapacmaformu.maxpark) {
            if (cpsets[12]) {
                document.hesapacmaformu.maxpark.value = cpsets[12];
            } else {
                document.hesapacmaformu.maxpark.value = 0;
            }
        }
        if (document.hesapacmaformu.maxaddon) {
            if (cpsets[13]) {
                document.hesapacmaformu.maxaddon.value = cpsets[13];
            } else {
                document.hesapacmaformu.maxaddon.value = 0;
            }
        }
    
    }
    function showDiv(divname, inputname){
        var inputEl = document.getElementById(inputname);
        if (!inputEl) { return; }
        if(inputEl.checked == true){
            document.getElementById(divname).style.display = 'inline';
        }
        if(inputEl.checked == false){
            document.getElementById(divname).style.display = 'none';
        }
    }
    
    
    function gizlegoster(div) {
        var mansettingsEl = document.getElementById(div);
        if (mansettingsEl.style.display == 'inline') {
        mansettingsEl.style.display='none';
        } else {
        mansettingsEl.style.display='inline';
        }
    }
    //--->
    </script>
    
    <table valign=top width=100%><tr><td valign=top width=50%>
    <h2>Domain Bilgileri</h2>
    <form action="hesaplar.php" name="hesapacmaformu">
    <input type="hidden" name="islem" value="hesapacdb">
    <input type="hidden" name="sign" value="">
    <input type="hidden" name="plan">
        <table><tr><td width=40%>Domain</td><td width=60%><input type="text" name="domain" class="text" value="" onChange="dologinname();fixaddress();">
        </td></tr><tr><td width=40%>Kullanıcı</td><td width=60%><input type="text" class="text" name="username" onChange="fixaddress();">
        </td></tr><tr><td width=40%>Şifre</td><td width=60%><input type="text" class="text" name="password" value="">
    
        </td></tr><tr><td width=40%>İletişim maili</td><td width=60%><input type="text" class="text" name="contactemail" value="" size="20"></td></tr></table>
    
    </td><td valign=top width=50%><h2>Detaylar</h2>
        <div class="label">Paketler</div><select onChange="updateform(document.hesapacmaformu.msel.options[document.hesapacmaformu.msel.selectedIndex].value)" name="msel" class="select" style="width:150px;">
                 <option class="viewable" value="n,n,unlimited,n,unlimited,unlimited,unlimited,unlimited,unlimited,unlimited,unlimited,y,0,0">---</option>
                 <?
        $ilkbilgi = whmal("/scripts/remote_listpkg");
            $paketler = explode("\n",$ilkbilgi);
            for ($i=0;$i<count($paketler);$i++) {
            list($paket,$ozellikler) = split("=", $paketler[$i]);
            if ($paket != '' && $paket != 'PehaspeSpeciaL') {
            echo '<option name="paket" value="'.$ozellikler.','.$paket.'">'.$paket.'</option>';
        //    option 'Paket: '.$paket.' Alan: '.$ozellik[2].'MB Bant: '.$ozellik[10].'MB<br>';
            }
            }
    ?>
    </select><br><a name=ajax onClick="gizlegoster('mansettings');"><b>Detayları Gizle/Göster</b></a>
        <div id="mansettings" class="hidden">
            <table><tr><td width=40%>Disk Alanı (MB)</td><td width=60%><input type="text" class="text" name="quota" value="0" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Bant Limit (MB) </td><td width=60%><input type="text" class="text" name="bwlimit" value="unlimited" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Ftp Sayısı </td><td width=60%><input value="unlimited" class="text" type="text" name="maxftp" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Email Sayısı </td><td width=60%><input value="unlimited" class="text" type="text" name="maxpop" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Mail Liste Sayısı </td><td width=60%><input type="text" class="text" name="maxlst" value="unlimited" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Veritabanı Sayısı </td><td width=60%><input type="text" class="text" value="unlimited" name="maxsql" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Sub Domain Sayısı </td><td width=60%><input type="text" class="text" name="maxsub" value="unlimited" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Park Edilmiş Domain </td><td width=60%><input type="text" class="text" name="maxpark" value="0" onChange="setnoplan();">
            </td></tr><tr><td width=40%>Addon Domain </td><td width=60%><input type="text" class="text" name="maxaddon" value="0" onChange="setnoplan();"></td></tr></table>
        </div>
        <div style="clear:right;">&nbsp;</div>
    </td></tr><tr><td valign=top width=50%><h2>Ayarlar</h2>
    
        <div class="label">İp <input value="1" type="checkbox" class="checkbox" onClick="showDiv('ipselect','ipchkbox');" name="ip" id="ipchkbox">
    <div id="ipselect" class="hidden">
        <div class="label">İp Adresleri
                <select class="select" name="customip">
                    <option selected>--Otomatik Belirle--</option>
    <?
    $ipler=iplerigoster();
    for($i=0;$i<count($ipler);$i++) {
    echo '<option value="'.$ipler[$i].'">'.$ipler[$i].'</option>';
    }
    ?>
       
                    </select></div>
    </div>
        <div class="label">Shell<input value="1" type="checkbox" class="checkbox" name="hasshell"></div>
    
        <div class="label">Frontpage Eklentileri<input value="1" type="checkbox" class="checkbox" checked="checked" name="frontpage"></div>
        <div class="label">Cgi Erişimi<input value="1" type="checkbox" class="checkbox" name="cgi"></div>
        <div class="label">cPanel Teması
                <select name="cpmod" class="select">
    <?
    $temalar=temalarigoster();
    for($i=0;$i<count($temalar);$i++) {
    echo '<option value="'.$temalar[$i].'" autofill="off" autocomplete="off" >'.$temalar[$i].'</option>';
    }
    ?>
                </select></div>
        
    </td><td valign=top width=50%><h2>Reseller Ayarları</h2> 
        <div class="label">Reseller Yetkisi<input value="1" type="checkbox" class="checkbox" onClick=showDiv('resellown','resell'); id="resell" name="reseller"></div>
        <div id="resellown" class="hidden">
        Kendi Kendinin Müşterisi (hesabıyla oynayabilir)<input value="1" type="checkbox" class="checkbox" name="ownerself" checked="checked">
        </div>
    
    <h2>DNS Ayarları</h2>
        <input type="hidden" name="hasuseregns" value="1">
        <div class="label2">Domain NS lerini kullan<input class="checkbox" value="1"  type="checkbox" name="useregns" autocomplete="off" autofill="off"></div>
        <div class="label2">Var olan DNS kayıtlarının üzerine yaz<input value="1" type="checkbox" class="checkbox" name="forcedns"></div>
    </td></tr>
     </table>
    <div align="left"><input type="submit" class="input-button" value="Oluştur"></div>
    
    </form>
    
    
    <?
    
    }
    function hesapacdb(){
    $sign=$_GET['sign'];
    $plan=$_GET['plan'];
    $domain=$_GET['domain'];
    $username=$_GET['username'];
    $password=$_GET['password'];
    $contactemail=$_GET['contactemail'];
    $msel=$_GET['msel'];
    $quota=$_GET['quota'];
    $bwlimit=$_GET['bwlimit'];
    $maxftp=$_GET['maxftp'];
    $maxpop=$_GET['maxpop'];
    $maxlst=$_GET['maxlst'];
    $maxsql=$_GET['maxsql'];
    $maxsub=$_GET['maxsub'];
    $maxpark=$_GET['maxpark'];
    $maxaddon=$_GET['maxaddon'];
    $customip=$_GET['customip'];
    if($customip=='--Otomatik+Belirle--')
    $customip='--Auto+Assign--';
    $cgi=$_GET['cgi'];
    $cpmod=$_GET['cpmod'];
    $ownerself=$_GET['ownerself'];
    $hasuseregns=$_GET['hasuseregns'];
    $sonuc= whmal("/scripts/wwwacct?sign=${sign}&plan=${plan}&domain=${domain}&username=${username}&password=${password}&contactemail=${contactemail}&msel=${msel}&quota=${quota}&bwlimit=${bwlimit}&maxftp=${maxftp}&maxpop=${maxpop}&maxlst=${maxlst}&maxsql=${maxsql}&maxsub=${maxsub}&maxpark=${maxpark}&maxaddon=${maxaddon}&customip=${customip}&cgi=${cgi}&cpmod=${cpmod}&ownerself=${ownerself}&hasuseregns=${hasuseregns}");
    if(eregi('Account Creation Status: ok ',$sonuc)){
    echo "+===================================+<br>
    İşleminiz başarıyla gerçekleştirildi<br>
    +===================================+";
    } else {
    $sonuc=str_replace("icons/error.gif","images/error.gif",$sonuc);
    preg_match_all('/<script>if \(update_ui_status\) { update_ui_status\(\"Checking input data\"\); }<\/script>(.*?)<script>if \(clear_ui_status\) { clear_ui_status\(\); }<\/script>/s', $sonuc, $bul);
    echo $bul[1][0];
    }
    }    
    
    function hesapsil($kullanici) {
    $sonuc= whmal("/scripts/killacct?domain=silinece&user=${username}");
    if(eregi('Account Removal Complete!!!',$sonuc)){
    echo "+===================================+<br>
    İşleminiz başarıyla gerçekleştirildi<br>
    +===================================+";
    } else
    echo "İşleminizde beklenmeyen bir problem oluştu";
    }
    switch($_GET['islem']){
        case "hesaplistele":
        hesaplistele();
        break;
    
        case "paketlistele":
        paketlistele();
        break;
    
        case "hesapac":
        hesapacform();
        break;
    
        case "hesapacdb":
        hesapacdb();
        break;
    
        case "suresibitenler":
        surekontrol();
        break;
    
        case "suspend":
        suspend($_REQUEST['hesap']);
         break;
    
        case "resellerlistele":
        resellerlistele();
        break;
        
        case "hesapsil":
        hesapsil($_REQUEST['hesap']);
        break;
    
        default:
        hesaplistele();
        break;
    }
    ?>
    fonksiyonların hepsini vermedim, örnek olsun diye bi kaç tanesini yazdım zaten o da mantığı kapmak için yeterli

    Not: baştaki whm.php dosyası, awbs gibi domaine üst klasörlere erişim hakkı vermemek içindir
  • 25-09-2007, 02:21:32
    #7
    ellerine sağlık syranli
  • 01-10-2007, 16:43:50
    #8
    Üyeliği durduruldu
    Faydalı bir döküman olmuş usta eline sağlık...
    (Her ne kadar denemeye korksam da)
  • 02-10-2007, 17:04:53
    #9
    çok güz<el bir paylaşım saol kardeşim herk4esin işine yarar