skip to Main Content

How to detect server Control Panel type like cpanel and directadmin for using them api’s:
that’s enough for me if it just detects cpanel, directadmin, kloxo and plesk

$panel = ???????????;
    switch($panel){
       case 'cpanel':
          $xmlapi = new xmlapi($ip);
          //...
       break;
       case 'directadmin':
          $sock = new HTTPSocket;
          //...
       break;
       .
       .
       .
    }

2

Answers


  1. As hanky-panky said there is no straight forward solution for this, you need to implement your own creative method. you may need to detect one control panel with opening socket,while other using an specific file existence (ex. Cpanel puts api files on php include path) or any other idea.

    you can use this class for this purpose

    namespace Model;
    
    // usage:
    //include 'detectControlPanel';
    //$object = new modeldetectControlPanel();
    //$result = $object->getDetect();
    //var_dump($result);
    
    class detectControlPanel
    {
    public $debug = false;
    protected $detect = array();
    
    public function getDetect()
    {
        return $this->detect;
    }
    
    public function __construct($debug = false)
    {
        $this->run();
        $this->debug = $debug;
        $this->debug($this->detect);
    }
    
    public function run()
    {
        $this->detect['cpanel'] = $this->isCpanel();
        $this->detect['virtualmin'] = $this->isVirtualmin();
        $this->detect['plesk'] = $this->isPlesk();
        $this->detect['directadmin'] = $this->isDirectadmin();
        return $this->detect;
    }
    
    private function isCpanel()
    {
        try {
            $this->telnet('localhost', 2082);
            return true;
        } catch (Exception $ex) {
            $this->debug($ex);
            return false;
        }
    }
    
    private function isVirtualmin()
    {
        try {
            $this->telnet('localhost', 10000);
            return true;
        } catch (Exception $ex) {
            $this->debug($ex);
            return false;
        }
    }
    
    private function isDirectadmin()
    {
        try {
            $this->telnet('localhost', 2222);
            return true;
        } catch (Exception $ex) {
            $this->debug($ex);
            return false;
        }
    }
    
    private function isPlesk()
    {
        try {
            $this->telnet('localhost', 8443);
            return true;
        } catch (Exception $ex) {
            $this->debug($ex);
            return false;
        }
    }
    
    private function debug($input)
    {
        if ($this->debug == true) {
            if (gettype($input) == 'string') {
                echo '<br>' . "n";
                echo $input;
                echo '<br>' . "n";
            } elseif (gettype($input) == 'array') {
                echo '<pre>' . "n";
                print_r($input);
                echo '</pre>' . "n";
            } elseif (gettype($input) == 'object' && get_class($input) == 'Exception') {
                echo '<pre>' . "n";
                echo $input->getMessage();
                echo '</pre>' . "n";
            } else {
                var_dump($input);
            }
        }
    }
    
    private function telnet($hostname, $port)
    {
        if (!$hostname)
            throw new Exception("empty host name");
        if (!$port)
            throw new Exception("empty port number");
        $ipAddress = gethostbyname($hostname);
        $link = @fsockopen($ipAddress, $port, $errno, $error);
        if ($error) {
            throw new Exception($error, $errno);
        }
        if ($link) {
            return true;
        }
        return false;
    }
    }
    

    Login or Signup to reply.
  2. how to detect web hosting control panel type with php

    code :

    <?php 
    
    class detectControlPanel
    {
     protected $detect = null;
    
       public function getDetect()
       {
          return $this->detect;
        }
    
       public function __construct()
       {
           if($this->isCpanel()){
               $this->detect =  'cpanel';
           } elseif($this->isVirtualmin()){
               $this->detect =  'virtualmin';
           } elseif($this->isPlesk()){
               $this->detect =  'plesk';
           } elseif($this->isDirectadmin()){
               $this->detect =  'directadmin';
           } elseif($this->isDirectadmin()){
               $this->detect =  'nspanel';
           }
       }
    
       private function isCpanel(){
           if(is_dir('/usr/local/cpanel')){ return true; }else{ return false; }
       }
       private function isVirtualmin(){
           if(is_dir('/usr/share/webmin')){ return true; }else{ return false; }
       }
       private function isPlesk(){
           if(is_dir('/usr/local/psa')){ return true; }else{ return false; }
       }
       private function isDirectadmin(){
           if(is_dir('/usr/local/directadmin')){ return true; }else{ return false; }
       }
       private function isNspanel(){
           if(is_dir('/opt/neoistone') || is_dir('/etc/neoistone') || is_dir('/usr/local/neoistone')){ return true; }else{ return false; }
       }
    }
    ?>
    

    code2 :

    <?php 
    $cont = new detectControlPanel();
    print_r($cont->getDetect());
    
    ?>
    

    how to detect web hosting control panel type with php preview

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search