Вход Регистрация
Файл: severus/application/controllers/servers.php
Строк: 466
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class 
servers extends MY_Controller
{
    public function 
__construct()
    {
        
parent::__construct();
        
$this->load->database();
        
$this->load->library("authme");
        
$this->load->model("server_model");
        
$this->load->model("services_model");
        if( 
$this->session->userdata('logged_in') !== trueredirect($this->config->item("base_url")."index.php/home/login");
    }

    public function 
index()
    {
        
$all_list '';
        
$all_count 0;

        
$setting $this->server_model->get_settings();
        
$servers $this->server_model->get_all_servers();

        
$send_time = (isset($setting->setting_last_server_check) && !empty($setting->setting_last_server_check)) ? $setting->setting_last_server_check false;

        if (
$servers !== false) {
            foreach (
$servers as $server) {
                
$server_details $this->server_model->get_response_details($server->server_id$send_time);
                
$all_count++;
                
$all_list .= $this->build_server_line($server$server_details);
            }

        } else 
$all_list trans('server_currently_none','There are currently no servers attached');

        
$data["all_list"] = $all_list;
        
$data["all_count"] = $all_count;
        
$data["last_check"] = ($send_time === false) ? "Never" time_ago($send_time,true);
        
$data["next_check"] = ($send_time === false) ? "Never" time_ago(($send_time+$setting->setting_heartbeat_interval)-strtotime("now"),truefalse,1);

        
$this->load->view('header'$data);
        
$this->load->view('servers'$data);
        
$this->load->view('footer'$data);
    }

    public function 
add_server()
    {
        
$this->load->library("updateserver");
        
$data = array();
        if (
$_POST) {
            
is_demo($this->config->item("base_url")."index.php/servers/add_server/");
            if ((
$address $this->input->post('server_script_address')) !== false) {
                
$setting $this->server_model->get_settings();
                
$ch curl_init($address."?hash=".$setting->setting_unique."&type=register");
                
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
$output curl_exec($ch);
                if (!
curl_errno($ch)) {
                    
$info curl_getinfo($ch);
                    if (
$info["http_code"] == "200") {
                        
$add_server $this->server_model->add_server($output$address);
                        
$servers $this->server_model->get_all_servers();
                        
$settings $this->server_model->get_settings();
                        
$time strtotime("now");
                        
$this->updateserver->remote_server_check($servers$settings->setting_unique$time);

                        
$data["message"] = $add_server;
                    } elseif (
$info["http_code"] == "401") {
                        
$data["message"] = '<p class="error">'.trans('message_server1','Could not register the server, the connector script has the wrong key, download the connector script again and re-upload it').'</p>';
                    } else {
                        
$data["message"] = '<p class="error">'.trans('message_server2','Could not register the server, the most likely cause of this is the address you supplied is incorrect, double check the path details').'</p>';
                    }
                } else 
$data["message"] = '<p class="error">'.trans('message_server3','There was an error registering the server').' - '.curl_error($ch).'</p>';
                
curl_close($ch);
            }
        }
        
$this->load->view('header'$data);
        
$this->load->view('add_server'$data);
        
$this->load->view('footer'$data);
    }

    public function 
confirm_delete_server($server_id)
    {
        
$data["server_id"] = $server_id;
        
$this->load->view('header'$data);
        
$this->load->view('confirm_delete_server'$data);
        
$this->load->view('footer'$data);
    }
    public function 
delete_server($server_id)
    {
        
is_demo($this->config->item("base_url")."index.php/servers/view_server/".$server_id."/");
        
$this->server_model->delete_server($server_id);
        
redirect($this->config->item("base_url")."index.php/servers/");
    }

    public function 
view_server($server_id$timeago=false)
    {
        if (isset(
$_POST) && !empty($_POST)) {
            
is_demo($this->config->item("base_url")."index.php/servers/view_server/".$server_id."/");
            if (isset(
$_POST["action"]) && !empty($_POST["action"])) {
                switch (
$_POST["action"]) {
                    case 
"configure_services":
                        
$this->services_model->set_services($server_id);
                        
redirect($this->config->item("base_url")."index.php/servers/view_server/".$server_id."/");
                        break;
                    case 
"save_description":
                        
$this->server_model->save_description($server_id);
                        
redirect($this->config->item("base_url")."index.php/servers/view_server/".$server_id."/");
                        break;
                }
            }

        }
        
$ping $this->server_model->server_ping($server_id$timeago);
        
$load $this->server_model->server_load($server_id$timeago);
        
        
$server $this->server_model->get_server($server_id);
        if (
$server) {
            
$data = array();
            if(
is_array($ping) && !empty($ping)) {
                
$data["ping"] = implode(","$ping[1]);
                
$data["pinglabel"] = implode(","$ping[0]);
            }
            if(
is_array($load) && !empty($load)) {
                
$data["load"] = implode(","$load[1]);
                
$data["loadlabel"] = implode(","$load[0]);
            }
            
$setting $this->server_model->get_settings();
            
$send_time = (isset($setting->setting_last_server_check) && !empty($setting->setting_last_server_check)) ? $setting->setting_last_server_check false;

            
$server_details $this->server_model->get_response_details($server_id$send_time);

            
$server_list $this->build_public_list($server$server_detailstruetrue);
            
$service_details $this->build_current_list($server$server_details);

            
$data["server_details"] = $server_list;
            
$data["disk"] = unserialize(base64_decode($server_details->res_disk));
            
$data["service_details"] = $service_details;
            
$data["all_services"] = $this->all_services_text($server_id);
            
$data["delete_server"] = '<a class="button redbutton2 largebutton" href="'.$this->config->item("base_url").'index.php/servers/confirm_delete_server/'.$server_id.'/">'.trans('button_delete_server','Delete Server').'</a>';
            
$data["desc_edit"] = $this->server_desc_text($server->server_desc);
            
$data["server_id"] = $server_id;
            
$data["timeago"] = $timeago;
            
$this->load->view('header'$data);
            
$this->load->view('view_server'$data);
            
$this->load->view('footer'$data);
        } else {
            die(
"no such server"); // change to flash message
        
}
    }

    public function 
view_service_list($server_id)
    {
        
$data = array();
        
//$this->load->view('header', $data);
        
echo $this->build_service_list($server_id);
        
//$this->load->view('footer', $data);

    
}

    private function 
all_services_text($server_id)
    {
        return 
'<div id="allservices" class="public_page">'.$this->build_service_list($server_id).'</div>';
    }

    private function 
server_desc_text($current_desc)
    {
        return 
'
        <div id="desc_edit" class="public_page">
            <div class="box services">
                <form method="post" class="row-fluid" action="'
.$_SERVER["PHP_SELF"].'">
                    <input type="hidden" name="action" value="save_description" />
                    <div class="reload-box">
                        <div class="label">'
.trans('title_description','Description').'</div>
                        <div class="inner-box">
                            <div class="row" style="padding: 5px;"><textarea name="server_desc" class="login_input" maxlength="255" style="min-width:300px; height: 200px;" placeholder="'
.trans('placeholder_server_description','enter server description').'">'.$current_desc.'</textarea></div>
                            <div class="butrow"><input type="submit" class="button redbutton2" value="'
.trans('button_save','Save').'" /></div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
        '
;
    }

    public function 
build_service_list($server_id)
    {
        
$server $this->server_model->get_server($server_id);
        
$setting $this->server_model->get_settings();
        
$send_time = (isset($setting->setting_last_server_check) && !empty($setting->setting_last_server_check)) ? $setting->setting_last_server_check false;
        
$server_details $this->server_model->get_response_details($server_id$send_time);

        
$service_list $this->services_model->get_all_services();
        
$s '';
        if (isset(
$service_list) && !empty($service_list)) {
            
$all_services $this->services_model->get_services($server->server_id);
            foreach (
$service_list as $service) {
                
//$placeholder =
                //$mark = (strtolower($service) === "online") ? '<i class="icon-checkmark-circle greentext"></i>' : '<i class="icon-cancel-circle redtext"></i>';
                
$checkval '';
                
$defval = ($service->service_advanced === "1") ? $service->service_script $service->service_default_port;
                
$asev = (isset($all_services["services"]) && !empty($all_services["services"])) ? $all_services["services"] : array();
                if (
array_key_exists($service->service_name$asev)) {
                    
$checkval ' checked="checked"';
                    
$defval $all_services["services"][$service->service_name];
                }
                if(
$service->service_advanced === "1") {
                    
$s .= '<div class="row"><h3>'.$service->service_name.'</h3><div class="row-details"><input type="text" class="text" name="lnk_service_script['.$service->service_id.']" value="'.$defval.'" /></div><div class="row-details"><input type="checkbox"'.$checkval.' name="active['.$service->service_id.']" value="1" /></div></div>';
                } else {
                    
$s .= '<div class="row"><h3>'.$service->service_name.'</h3><div class="row-details"><input type="text" class="text" name="lnk_service_port['.$service->service_id.']" value="'.$defval.'" /></div><div class="row-details"><input type="checkbox"'.$checkval.' name="active['.$service->service_id.']" value="1" /></div></div>';
                }
            }
        }

        return 
'<div id="service" class="box services"><form method="post" class="row-fluid" action="'.$_SERVER["PHP_SELF"].'"><input type="hidden" name="action" value="configure_services" />
                <div class="reload-box">
                <div class="label">'
.trans('title_services','Services').'</div>

                <div class="inner-box">
                    '
.$s.'
                    <div class="butrow"><input type="submit" class="button redbutton2" value="'
.trans('button_save','Save').'" /></div>
                </div>
                </div>
            </form></div>'
;
    }

    public function 
remove_server_service($server_id$service_id)
    {
        
is_demo($this->config->item("base_url")."index.php/servers/view_server/".$server_id."/");
        
$this->services_model->remove_server_service($server_id$service_id);
        
redirect($this->config->item("base_url")."index.php/servers/view_server/".$server_id."/");
    }

    public function 
build_current_list($server$server_details=false)
    {
        
$service_list $this->services_model->get_all_services();
        
$s '';
        if (isset(
$service_list) && !empty($service_list)) {
            
$all_services $this->services_model->get_services($server->server_id);
            if (isset(
$all_services) && !empty($all_services)) {
                foreach (
$service_list as $service) {
                    
$defval $service->service_default_port;
                    
$asev = (isset($all_services["services"]) && !empty($all_services["services"])) ? $all_services["services"] : array();
                    if(!
array_key_exists($service->service_name$asev)) continue;
                    
//$s .= '<div class="row"><h3>'.$service->service_name.'</h3><div class="row-details"><input type="text" class="text" name="lnk_service_port['.$service->service_id.']" value="'.$all_services["services"][$service->service_name].'" /></div><div class="row-details textright"><a href="'.$this->config->item("base_url").'index.php/servers/remove_server_service/'.$server->server_id.'/'.$service->service_id.'/" class="button redbutton2">'.trans('button_remove','Remove').'</a></div></div>';
                
                
if($service->service_advanced === "1") {
                    
$s .= '<div class="row"><h3>'.$service->service_name.'</h3><div class="row-details"><input type="text" class="text" name="lnk_service_script['.$service->service_id.']" value="'.$all_services["services"][$service->service_name].'" /></div><div class="row-details textright"><a href="'.$this->config->item("base_url").'index.php/servers/remove_server_service/'.$server->server_id.'/'.$service->service_id.'/" class="button redbutton2">'.trans('button_remove','Remove').'</a></div></div>';
                } else {
                    
$s .= '<div class="row"><h3>'.$service->service_name.'</h3><div class="row-details"><input type="text" class="text" name="lnk_service_port['.$service->service_id.']" value="'.$all_services["services"][$service->service_name].'" /></div><div class="row-details textright"><a href="'.$this->config->item("base_url").'index.php/servers/remove_server_service/'.$server->server_id.'/'.$service->service_id.'/" class="button redbutton2">'.trans('button_remove','Remove').'</a></div></div>';
                }


                }
            } else {
                
$s '<div class="row textcenter"><h3>'.trans('services_none','No services configured').'</h3></div>';
            }
        }

        return 
'<div id="service" class="box services">
                <div class="reload-box">
                <div class="label">'
.trans('title_services','Services').'</div>

                <div class="inner-box">
                    '
.$s.'
                    <div class="butrow"><a href="'
.$this->config->item("base_url").'index.php/servers/view_service_list/'.$server->server_id.'/" id="configure_services" class="button greybutton">'.trans('services_add','Add services').'</a></div>
                </div>
                </div>
            </div>'
;
    }

    public function 
build_public_list($server$server_details=false$show_services=true$show_edit=false)
    {
        
$online = ($server_details !== false) ? ($server_details->res_http_code == "200") ? trans("server_online","Online") : trans("server_offline","Offline") : trans("server_unknown","unknown");
        
$load = ($server_details !== false) ? $server_details->res_load trans("server_unknown","unknown");
        
$response_time = ($server_details !== false) ? $server_details->res_ping_time."ms" trans("server_unknown","unknown");
        
$model = ($server_details !== false) ? $server_details->res_model trans("server_unknown","unknown");
        
$processes = ($server_details !== false) ? $server_details->res_processes trans("server_unknown","unknown");
        
$memory = ($server_details !== false) ? $server_details->res_memory trans("server_unknown","unknown");
        
$uptime = ($server_details !== false) ? $server_details->res_uptime trans("server_unknown","unknown");
        
$s '';
        if (isset(
$server_details->res_services) && !empty($server_details->res_services) && $show_services===true) {
            
$all_services unserialize(base64_decode($server_details->res_services));
            foreach (
$all_services as $sname => $service) {
                
$mark = (strtolower($service) === "online") ? '<i class="icon-checkmark-circle greentext"></i>' '<i class="icon-cancel-circle redtext"></i>';
                
$s .= '<div class="row"><h3>'.$sname.'</h3><div class="row-details">'.$mark.$service.'</div></div>';
            }
        }
        
$onlinemark = (strtolower($online) === "online") ? '<i class="icon-checkmark-circle greentext"></i>' '<i class="icon-cancel-circle redtext"></i>';
        
$desc_edit = ($show_edit) ? '<a style="float:right;" id="click_desc_edit" href=""><i class="icon-pencil"></i></a>' '';
        
$server_desc = (isset($server->server_desc) && !empty($server->server_desc)) ? '<div class="row"><div class="server-desc">'.$desc_edit.$server->server_desc.'</div></div>' '<div class="row"><div class="server-desc">'.$desc_edit.trans('server_no_description','No description set').'</div></div>';

        return 
'<div class="box '.strtolower($online).'">
                <div class="reload-box">
                <div class="label">'
.$server->server_name.'</div>

                <div class="inner-box">
                    '
.$server_desc.'
                    <div class="row"><h3>'
.trans('server_server''Server').'</h3><div class="row-details">'.$onlinemark.$online.' - '.$uptime.'</div></div>
                    <div class="row"><h3>'
.trans('server_ip''IP Address').'</h3><div class="row-details">'.long2ip($server->server_ip).'</div></div>
                    <div class="row"><h3>'
.trans('server_load''Load').'</h3><div class="row-details">'.$load.'</div></div>
                    <div class="row"><h3>'
.trans('server_response''Response').'</h3><div class="row-details">'.$response_time.'</div></div>
                    <div class="row"><h3>'
.trans('server_model''Model').'</h3><div class="row-details">'.$model.'</div></div>
                    <div class="row"><h3>'
.trans('server_processes''Processes').'</h3><div class="row-details">'.$processes.'</div></div>
                    <div class="row"><h3>'
.trans('server_memory''Memory').'</h3><div class="row-details">'.$memory.'</span></div></div>
                    '
.$s.'
                </div>
                </div>
            </div>'
;
    }

    public function 
build_server_line($server$server_details=false)
    {
        
$online = ($server_details !== false) ? ($server_details->res_http_code == "200") ? trans("server_online","Online") : trans("server_offline","Offline") : trans("server_unknown","unknown");
        
$onlinemark = (strtolower($online) === "online") ? '<i class="icon-checkmark-circle greentext"></i>' '<i class="icon-cancel-circle redtext"></i>';
        
$load = ($server_details !== false) ? $server_details->res_load trans("server_unknown","unknown");
        
$response_time = ($server_details !== false) ? $server_details->res_ping_time."ms" trans("server_unknown","unknown");

        return 
'
            <div class="table-box user-box">
                <div class="col col1"><div class="disk-ref"><i class="icon-globe server-icon"></i> '
.$server->server_name.'</div><div class="disk-name">'.$onlinemark.$online.'</div></div>
                <div class="col col2">'
.$load.' <span class="lightertext small">'.$response_time.'</span></div>
                <div class="col col3"><a class="button redbutton2" href="'
.$this->config->item("base_url").'index.php/servers/view_server/'.$server->server_id.'/">'.trans('button_view','View').'</a></div>
                <div style="clear:both;"></div>
            </div>'
;

    }

}

/* End of file servers.php */
/* Location: ./application/controllers/servers.php */
Онлайн: 0
Реклама