Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Yeni Hosting Kontrol Paneli Dizaynına Başladım
#1
Merhaba,
Piyasada bulunan birçok hosting kontrol panellerini denedim. Hiçbiri tam olarak işimi görmedi.
ve nihayet kendim yazmaya karar verdim... Zaten deneye deneye baya tecrübeli oldum...Smile

tabiki, object-oriented olacak, yani herşey class yapısında... işte aşağıdaki de, ilk kodlar...
bir application class var... ve herşey onun etrafında dönüyor... nasıl mantık ?

Görüşmek üzere selamlar...

(bu kod sadece örnek)

<?php

include_once("config/dbutil.php");
include_once("config/adodb/adodb.inc.php");
include_once('config/adodb/adodb-pager.inc.php');
session_start();

class Application
{
var $appname = "First app";
var $output="";
var $dbhost;
var $dbname;
var $dbusername;
var $dbpass;
var $conn;
var $displayfields;
var $dbtable,$cerceve;


function Application($dbhost="",$dbusername="",$dbpass="",$dbname="") {
$this->dbhost=$dbhost;
$this->dbusername=$dbusername;
$this->dbpass=$dbpass;
$this->dbname=$dbname;

}

function run() {
$this->output.="<font size=+2>".$this->appname."<br><br></font>";
$this->connecttodb();
// $this->output.=$this->debug();
$this->show();
}

function connecttodb() {
$db = NewADOConnection("mysql");
$this->conn=$db->connect($this->dbhost,$this->dbusername,$this->dbpass,$this->dbname);
if(!$this->conn)$this->output.="<br>Db hatasi..<br>".$db->ErrorMsg()."<br>";
else $this->output.="Dbye baglandi.<br>";


$this->output=tablolistele3_5_4($this->dbtable,$baslik,$this->displayfields,$filtre,$sirala,$linkyazi,$linkdosya,$linkalan,$baslangic,$satirsayisi);

//$sql="select ".selectstring($this->displayfields)." from ".$this->dbtable;
//$pager = new ADODB_Pager($db,$sql);
//$sql = "select adi,soyadi from insankaynaklari ";
//$this->output.=$pager->Render($rows_per_page=10);
}

function debug() {
$ret.="<br>Debug: <br>dbhost:".$this->dbhost;
$ret.="<br>dbuser:".$this->dbusername;
$ret.="<br>dbpass:".$this->dbpass;
$ret.="<br>dbname:".$this->dbname;
return $ret;
}

function show() {
// buraya cerceveletme fonksiyonlari yazilacak... suanda sadece echo yapiyor...
//echo $this->output;
cerceveletyaz($this->output,$this->cerceve);
}

}

degiskenal(array("baslangic","satirsayisi"));

$app = new Application("localhost","xxuser","xxpass","vidinli");
$app->cerceve="standartcerceve";
$app->dbtable="insankaynaklari";
$app->displayfields=array("adi","soyadi");
$app->run();

?>
Ara
Cevapla
Teşekkür verenler:
#2
Dün kodları yazmaya devam ettim...
böylece yazılımın gidişatı da belli olmaya başladı.
Roadmap da denilen, gidişat planı ya da strateji'yi şuna benzer yapabiliriz:

1-Önce hosting control panelin (hcp) engine/çekirdek kısmını yazacam.
çekirdek temel olarak çalışınca da, artık ya ben, ya da bi başkası, ona bir arayüz yazabilir.
2-Tum domainler bir db tbalosunda tutulacak.
3-çekirdek/engine, bu tabloyu okuyup apache conf dosyasına yazacak.
biz ilk başta bu tabloyu phpmyadmin kullanarak ekleme/çıkarma yapabiliriz.
hcp, ayrı bir conf dosyasına yazacak ve apache.conf da onu include edecez...

4-herşey yolunda giderse, hcp icin kurulum modulu de yazmakta fayda var..

dun yapmaya calıstıgım 1. kısmın domainler icin olanı. henuz bitmedi... açıklamaya devam edecegim..

şuanki kodlar şöyle:
index.php:
bunun tek yaptigi, class'ı cagırmak.
<?php

include_once("config/dbutil.php");
include_once("config/adodb/adodb.inc.php");
// include_once('config/adodb/adodb-pager.inc.php');
include_once("classapp.php");

session_start();

$app = new Application("localhost","xxuser","xxpass","vidinli");
$app->cerceve="standartcerceve";
$app->dbtable="insankaynaklari";
$app->displayfields=array("adi","soyadi");
$app->run();

?>


classapp.php:
asıl isi bu yapıyor. dbye baglanıyor. domain listesini tablodan alıyor.
onu template halindeki dosyaya göre apache dosyasına yazacak...

<?php

include_once("config/dbutil.php");
include_once("config/adodb/adodb.inc.php");
// include_once('config/adodb/adodb-pager.inc.php');

class Application
{
var $appname = "First app";
var $output="";
var $dbhost;
var $dbname;
var $dbusername;
var $dbpass;
var $conn;
var $displayfields;
var $dbtable,$cerceve;


function Application($dbhost="",$dbusername="",$dbpass="",$dbname="") {
$this->dbhost=$dbhost;
$this->dbusername=$dbusername;
$this->dbpass=$dbpass;
$this->dbname=$dbname;

}

function run() {
$this->output.="<font size=+2>".$this->appname."<br><br></font>";
$this->connecttodb();
// $this->output.=$this->debug();

$this->getdomains();

$this->show();
}

function getdomains() {
$this->output.="Domain List: <br>";
$rs = $this->conn->Execute("select * from domains");
if(!$rs) $this->output.="Hata (getdomains):".$this->conn->ErrorMsg();
else {
$arr = $rs->GetArray();
$this->output.=print_r2($arr);
if ($this->putarraytofile($arr,"hosts","hosttemplate")) $this->output.="<br> Domain list exported <br>";
}
}

function putarraytofile($arr,$filename,$template){
foreach($arr as $ar1)
{
$line="";
foreach($ar1 as $ar2) $line.=$ar2." ";
$out.=$line;
}
$temp=file_get_contents($template);
//$out=print_r2($temp);
$out=$temp;
return writeoutput2($filename,$out,"w");
}

function connecttodb() {
$db = NewADOConnection("mysql");
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$db->connect($this->dbhost,$this->dbusername,$this->dbpass,$this->dbname);
if(!$db)$this->output.="<br>Db hatasi..<br>".$db->ErrorMsg()."<br>";
else $this->output.="Dbye baglandi.<br>";
$this->conn=$db;


// $this->output.=tablolistele3_5_4($this->dbtable,$baslik,$this->displayfields,$filtre,$sirala,$linkyazi,$linkdosya,$linkalan,$baslangic,$satirsayisi);

//$sql="select ".selectstring($this->displayfields)." from ".$this->dbtable;
//$pager = new ADODB_Pager($db,$sql);
//$sql = "select adi,soyadi from insankaynaklari ";
//$this->output.=$pager->Render($rows_per_page=10);
}

function debug() {
$ret.="<br>Debug: <br>dbhost:".$this->dbhost;
$ret.="<br>dbuser:".$this->dbusername;
$ret.="<br>dbpass:".$this->dbpass;
$ret.="<br>dbname:".$this->dbname;
return $ret;
}

function show() {
// buraya cerceveletme fonksiyonlari yazilacak... suanda sadece echo yapiyor...
//echo $this->output;
cerceveletyaz($this->output,$this->cerceve);
}
}


?>
Ara
Cevapla
Teşekkür verenler:
#3
yukardaki kodlarda iki fonksiyon degisti... ve apache başarılı şekilde calıstı.
bu fonksiyonlar, db de olan domain bilgilerini, template dosyasında oldugu gibi, apachehcp.conf dosyasına yazdı.
ayrıca, /etc/apache2/apache2.conf icind,
Include /var/www/apachehcp.conf
ekledim. böylece apache bunu kullanıyor.
tabi aslında, farklı portta çalışan ayrı bir apache kullanmak lazım, yönetim, hcp icin.

template ise şöyle:
# domain: {domainname} id:{id} {aciklama}
Namevirtualhost *:80
<VirtualHost *:80>
ServerName {domainname}
ServerAlias www.{domainname}
UseCanonicalName Off
DocumentRoot /var/www/vhosts/{domainname}/httpdocs
</VirtualHost>


#_________________________________________


degisen fonksiyonlar:
function getdomains() {
$this->output.="Domain List: <br>";
$rs = $this->conn->Execute("select * from domains");
if(!$rs) $this->output.="Hata (getdomains):".$this->conn->ErrorMsg();
else {
$arr = $rs->GetArray();
//$this->output.=print_r2($arr);
if ($this->putarraytofile($arr,"apachehcp.conf","apachetemplate")) $this->output.="<br> Domain list exported <br>";
}
}

function putarraytofile($arr,$filename,$template){
//$this->output.="<br>arr: ".print_r2($arr);
// bir template e gore dosyaya yazar. arrayı template de yerine koyar. template de array elemanlari {domain} seklinde olmalıdır.
$alanlar=alanlarial($this->conn,"domains");

$replacealanlar=arrayop($alanlar,"strop");
$this->output.=print_r2($alanlar);
$this->output.=print_r2($replacealanlar);

foreach($arr as $ar1)
{// template e gore apacehe dosyasını olustur
$temp=file_get_contents($template);
$temp=str_replace($replacealanlar,$ar1,$temp);
//$this->output.="<br>Yazıyor:".$temp;
$out.=$temp;
}
return writeoutput2($filename,$out,"w");
}
Ara
Cevapla
Teşekkür verenler:


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi


10tl.net Destek Forumu -