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

class 
home extends MY_Controller
{
    public function 
__construct()
    {
        
parent::__construct();
        
$this->load->database();
        
$this->load->library("authme");
        
$this->load->model("server_model");
    }

    public function 
setup()
    {
    }

    public function 
index()
    {
        if ( 
$this->session->userdata('logged_in') !== true) {
            
$this->public_view();
        } else {
            
$cpuinfo $this->systemstat->getCpuInfo();
            
$processes $this->systemstat->countProcesses();
            
$uptime $this->systemstat->getUptime();
            
$memory $this->systemstat->getMemStat();
            
$data["cpuinfo"] = $cpuinfo["model name"];
            
$data["processcount"] = $processes;
            
$data["uptime"] = $uptime["uptime"];
            
$data["load"] = $uptime["load"];
            
$cached = ($memory["Cached"] > || $memory["Buffers"] > 0) ?  '/ '.formatram($memory["Cached"]).' '.trans('server_cached''Cached') : '';
            
$available formatram($memory["MemFree"]+$memory["Buffers"]+$memory["Cached"]);
            
$data["memory"] = formatram($memory["MemTotal"]).' <span>('.$available.' '.trans('server_available''Available').$cached.')';

            
$warning_list '';
            
$all_list '';
            
$warn_count 0;
            
$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;
            
$cron_time = (isset($setting->setting_last_cron_check) && !empty($setting->setting_last_cron_check)) ? $setting->setting_last_cron_check false;

            
$data["heartbeat"] = $setting->setting_heartbeat_interval;
            
$data["first_install"] = '';
            if (
$setting->setting_first_install === "0") {
                
$data["first_install"] = $this->first_install_text();
                
$this->server_model->unset_first_install();
            }

            
/*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);
                    $warn = false;
                    if ($server_details) {

                        $load = explode("," ,$server_details->res_load);
                        foreach ($load as $l) {
                            if(intval(trim($l)) >= $setting->setting_high_load) $warn = true;
                        }
                        if($server_details->res_http_code != "200") $warn = true;
                        if ($warn) {
                            $warn_count++;
                            $warning_list .= $this->build_server_line($server, $server_details);
                        }
                    }
                }

            } else $all_list = 'There are currently no servers attached';*/
            
$metrics $this->server_model->get_metrics(true);
            
$server_list '';
            if (
$servers !== false) {
                
$server_list '';
                foreach (
$servers as $server) {
                    
$all_count++;
                    
$server_details $this->server_model->get_response_details($server->server_id$send_time);
                    
$server_list .= $this->build_public_list($server$server_details$metrics);
                }

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

            
$data["server_list"] = $server_list;

            
$warning_list = (!empty($warning_list)) ? $warning_list trans('server_currently_no_attention''There are currently no servers requiring attention');

            
$data["warning_list"] = $warning_list;
            
$data["all_list"] = $all_list;
            
$data["warn_count"] = $warn_count;
            
$data["all_count"] = $all_count;
            
$data["last_check"] = ($send_time === false) ? trans("server_never""Never") : time_ago($send_time,true);
            if(
$setting->setting_heartbeat_interval === "0"$send_time false// scheduling has been disabled
            
$data["next_check"] = ($send_time === false) ? trans("server_never""Never") : time_to_ago(($cron_time+$setting->setting_heartbeat_interval)-strtotime("now"),truefalse,1);

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

    private function 
first_install_text()
    {
        return 
'<div id="first_install">
                    <h2>'
.trans('first_install1''First time setup').'</h2>
                    <p>'
.trans('first_install2''You have just completed installing the system and currently have no servers, would you like to add one now?').'</p>
                    <p><a style="margin-right:40px;" class="button redbutton largebutton" href="'
.$this->config->item("base_url").'index.php/servers/add_server/">'.trans('button_yes_install''Yes, add a server now').'</a><a class="button redbutton largebutton" href="">'.trans('button_no_later'"No, i'll do it later").'</a></p>
                </div>'
;
    }

    public function 
public_view()
    {
        if ( 
$this->server_model->view_public() === "0") {
            
redirect($this->config->item("base_url").'index.php/home/login');
        } elseif ( 
$this->server_model->view_public() === "1" || ($this->server_model->view_public() === "2" && $this->session->userdata('logged_in') === true) ) {
            
$data = array();

            
$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;
            
$metrics $this->server_model->get_metrics(true);
            if (
$servers !== false) {
                
$server_list '';
                foreach (
$servers as $server) {
                    
$server_details $this->server_model->get_response_details($server->server_id$send_time);
                    
$server_list .= $this->build_public_list($server$server_details$metrics);
                }

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

            
$data["server_list"] = $server_list;
            
$data["heartbeat"] = $setting->setting_heartbeat_interval;
            
$this->load->view('public_header'$data);
            
$this->load->view('public'$data);
            
$this->load->view('footer'$data);
        } else 
redirect($this->config->item("base_url").'index.php/home/login');
    }

    public function 
download_script()
    {
        
is_demo($this->config->item("base_url")."index.php/servers/add_server/");
        
$setting $this->server_model->get_settings();
        
$template_path     'application/config/server_status.php';
        
$database_file file_get_contents($template_path);

        
$new  str_replace("%HASH%",$setting->setting_unique,$database_file);

        
header("Content-Disposition: attachment; filename="connector_script.php";");
        
header("content-type: application/json charset=utf-8");
        echo 
$new;
    }

    
/**
     * Login page
     */
    
public function login()
    {
        
// Redirect to your logged in landing page here
        
if(logged_in()) redirect($this->config->item("base_url").'index.php/home');

        
$this->load->library('form_validation');
        
$this->load->helper('form');
        
$data['error'] = false;
        
$data['page'] = 'login';

        
$this->form_validation->set_rules('user_login''Username''required');
        
$this->form_validation->set_rules('user_password''Password''required');

        if (
$_POST) {
            if (
$this->form_validation->run()) {
                if (
$this->authme->login(set_value('user_login'), set_value('user_password'))) {
                    
// Redirect to your logged in landing page here
                    
redirect($this->config->item("base_url").'index.php/home');
                } else {
                    
$data['error'] = '<p class="error flashmessage">'.trans('message_home1''Your username and/or password is incorrect.').'</p>';
                }
            } else 
$data['error'] = validation_errors('<p class="error flashmessage">','</p>');
        }
        
$data["username"] = (ENVIRONMENT === "testing") ? "demo_user" "";
        
$data["password"] = (ENVIRONMENT === "testing") ? "demo_pass" "";
        
$data["inputtype"] = (ENVIRONMENT === "testing") ? "password" "password";
        
        
$data["hidelogin"] = true;
        
$this->load->view('public_header'$data);
        
$this->load->view('login'$data);
        
$this->load->view('footer'$data);

    }

    
/**
     * Logout page
     */
    
public function logout()
    {
        if(!
logged_in()) redirect($this->config->item("base_url").'index.php/home/login');

        
// Redirect to your logged out landing page here
        
$this->authme->logout($this->config->item("base_url").'index.php/home');
    }

    
/**
     * Forgot password page
     */
    
public function forgot()
    {
        
// Redirect to your logged in landing page here
        
if(logged_in()) redirect($this->config->item("base_url").'index.php/home');

        
$this->load->library('form_validation');
        
$this->load->helper('form');
        
$data['success'] = false;

        
$this->form_validation->set_rules('user_email''Email''required|valid_email|callback_email_exists');

        if (
$this->form_validation->run()) {
            
is_demo($this->config->item("base_url"));
            
$email $this->input->post('user_email');
            
$this->load->model('Authme_model');
            
$user $this->Authme_model->get_user_by_email($email);
            
$slug md5($user->user_id $user->user_email date('Ymd'));

            
$this->load->library('email');
            
$this->email->from('noreply@'.$_SERVER["SERVER_NAME"], 'Server Monitor'); // Change these details
            
$this->email->to($email);
            
$this->email->subject(trans('message_home2''Reset your Password'));
            
$this->email->message(trans('message_home3''To reset your password please click the link below and follow the instructions:').'

'
site_url('home/reset/'$user->user_id .'/'$slug) .'

'
.trans('message_home4''If you did not request to reset your password then please just ignore this email and no changes will occur.').'

'
.trans('message_home5''Note: This reset code will expire after '). date('j M Y') .'.');
            
$this->email->send();

            
$data['success'] = true;
        }
        
$this->load->view('public_header'$data);
        
$this->load->view('forgot_password'$data);
        
$this->load->view('footer'$data);
    }

    
/**
     * CI Form Validation callback that checks a given email exists in the db
     *
     * @param  string  $email the submitted email
     * @return boolean returns false on error
     */
    
public function email_exists($email)
    {
        
$this->load->model('Authme_model');

        if (
$this->Authme_model->get_user_by_email($email)) {
            return 
true;
        } else {
            
$this->form_validation->set_message('email_exists'trans('message_home6''We couldn't find that email address in our system.'));

            return false;
        }
    }

    /**
     * Reset password page
     */
    public function reset()
    {
        // Redirect to your logged in landing page here
        if(logged_in()) redirect($this->config->item("base_url").'
index.php/home');

        $this->load->library('
form_validation');
        $this->load->helper('
form');
        $data['
success'] = false;

        $user_id = $this->uri->segment(3);
        if(!$user_id) show_error('
Invalid reset code.');
        $hash = $this->uri->segment(4);
        if(!$hash) show_error('
Invalid reset code.');

        $this->load->model('
Authme_model');
        $user = $this->Authme_model->get_user($user_id);
        if(!$user) show_error('
Invalid reset code.');
        $slug = md5($user->user_id . $user->user_email . date('
Ymd'));
        if($hash != $slug) show_error('
Invalid reset code.');

        $this->form_validation->set_rules('
user_password', 'Password', 'required|min_length['. $this->config->item('authme_password_min_length') .']');
        $this->form_validation->set_rules('
password_conf', 'Confirm Password', 'required|matches[user_password]');
        if ($this->form_validation->run()) {
            $this->authme->reset_password($user->user_id, $this->input->post('
user_password'));
            $data['
success'] = true;
        } else $data['
message'] = validation_errors('<class="error flashmessage">', '</p>');
        $this->load->view('
public_header', $data);
        $this->load->view('
reset_password', $data);
        $this->load->view('
footer', $data);

    }

    public function build_public_list($server, $server_details=false, $met)
    {
        $onlineclass = "offline";
        if ($server_details !== false) {
            switch ($server_details->res_http_code) {
                case "200": $online = trans("server_online","Online"); $onlineclass = "online"; break;
                case "401": $online = trans("server_replace","Replace connector script"); break;
            }
        }
        $online = ($server_details !== false) ? ($server_details->res_http_code == "200") ? trans("server_online","Online") : trans("server_offline","Offline") : trans("server_unknown","unknown");
        $online = ($server_details !== false) ? ($server_details->res_http_code == "401") ? trans("server_replace","Replace connector script") : $online : 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(logged_in() || $met[8]->metric_public == "1") {
            if (isset($server_details->res_services) && !empty($server_details->res_services)) {
                $all_services = unserialize(base64_decode($server_details->res_services));
                foreach ($all_services as $sname => $service) {
                    $mark = (strtolower($service) === "online") ? '
<class="icon-checkmark-circle greentext"></i>' : '<class="icon-cancel-circle redtext"></i>';
                    $s .= '
<div class="row"><h3>'.$sname.'</h3><div class="row-details">'.$mark.$service.'</span></div></div>';
                }
            }
        }
        $onlinemark = (strtolower($online) === "online") ? '
<class="icon-checkmark-circle greentext"></i>' : '<class="icon-cancel-circle redtext"></i>';
        $server_desc = (isset($server->server_desc) && !empty($server->server_desc)) ? '
<div class="row"><div class="server-desc">'.$server->server_desc.'</div></div>' : '';
        $edit_button = (logged_in()) ? '
<a style="float:right;" class="button redbutton2" href="'.$this->config->item("base_url").'index.php/servers/view_server/'.$server->server_id.'/">'.trans('button_view','View').'</a>' : '';
        $expand_button = '
<a style="float:left; margin: 2px 7px;" class="expand point-down" href="#"><class="icon-arrow-down3"></i></a>';
        //if(strtolower($online) !== "online") $response_time = '';
        
        $text_server = (logged_in() || $met[1]->metric_public == "1") ? '
<div class="row'.($met[1]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[1]->metric_name, $met[1]->metric_name).'</h3><div class="row-details">'.$onlinemark.$online.$uptime.'</div></div>' : '';
        $text_ip = (logged_in() || $met[2]->metric_public == "1") ? '
<div class="row'.($met[2]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[2]->metric_name, $met[2]->metric_name).'</h3><div class="row-details">'.long2ip($server->server_ip).'</div></div>' : '';
        $text_load = (logged_in() || $met[3]->metric_public == "1") ? '
<div class="row'.($met[3]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[3]->metric_name, $met[3]->metric_name).'</h3><div class="row-details">'.$load.'</div></div>' : '';
        $text_response = (logged_in() || $met[4]->metric_public == "1") ? '
<div class="row'.($met[4]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[4]->metric_name, $met[4]->metric_name).'</h3><div class="row-details">'.$response_time.'</div></div>' : '';
        $text_model = (logged_in() || $met[5]->metric_public == "1") ? '
<div class="row'.($met[5]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[5]->metric_name, $met[5]->metric_name).'</h3><div class="row-details">'.$model.'</div></div>' : '';
        $text_processes = (logged_in() || $met[6]->metric_public == "1") ? '
<div class="row'.($met[6]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[6]->metric_name, $met[6]->metric_name).'</h3><div class="row-details">'.$processes.'</div></div>' : '';
        $text_memory = (logged_in() || $met[7]->metric_public == "1") ? '
<div class="row'.($met[7]->metric_additional == "1" ? " additional":"").'"><h3>'.trans($met[7]->metric_name, $met[7]->metric_name).'</h3><div class="row-details">'.$memory.'</span></div></div>' : '';


        return '
<div id="box" class="box '.$onlineclass.'">
                <
div class="reload-box">
                <
div class="label">'.$expand_button.$server->server_name.$edit_button.'</div>

                <
div class="inner-box">
                    
'.$server_desc.'
                    '.$text_server.'
                    '.$text_ip.'
                    '.$text_load.'
                    '.$text_response.'                    
                    '.$text_model.'                    
                    '.$text_processes.'                    
                    '.$text_memory.'                    
                    '.$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") ? '
<class="icon-checkmark-circle greentext"></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">
                <
div class="col col1"><div class="disk-ref"><class="icon-globe server-icon"></i'.$server->server_name.'</div></div>
                <
div class="col col2">'.long2ip($server->server_ip).'</div>
                <
div class="col col3">'.$onlinemark.$online.'</div>
                <
div class="col col4">'.$load.'</div>
                <
div class="col col5">'.$response_time.'</div>
                <
div class="col col6"><a href="'.$this->config->item("base_url").'index.php/servers/view_server/'.$server->server_id.'/" class="button redbutton2">View details</a></div>
                <
div style="clear:both;"></div>
            </
div>';

    }

}

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