View file hostinpanel/application/controllers/main/cron.php

File size: 5.89Kb
<?php
/*
Copyright (c) 2014 LiteDevel

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения
и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»),
безвозмездно использовать Программное Обеспечение в  личных целях, включая неограниченное
право на использование, копирование, изменение, добавление, публикацию, распространение,
также как и лицам, которым запрещенно использовать Програмное Обеспечение в коммерческих целях,
предоставляется данное Программное Обеспечение,при соблюдении следующих условий:

Developed by LiteDevel
*/
class cronController extends Controller {
	public function index() {
		$this->load->checkLicense();
		$this->load->library('mail');
		$this->load->model('servers');
		$this->load->model('serversStats');
		
		$token = @$this->request->get['token'];
		if($this->config->token != $token) {
			return "Access Denied";
		}
		
		$mailLib = new mailLibrary();
		
		$mailLib->setFrom($this->config->mail_from);
		$mailLib->setSender($this->config->mail_sender);
		
		$servers = $this->serversModel->getServers(array(), array('users'));
		
		$datenow = date_create('now');
		
		foreach($servers as $item) {
			$serverid = $item['server_id'];
			$dateend = date_create($item['server_date_end']);
			$diff = date_diff($datenow, $dateend);
			
			if($diff->invert) {
				if($diff->days >= 3) {
					// Удаление
					$this->serversModel->execServerAction($serverid, 'delete');
					$this->serversModel->deleteServer($serverid);
					$this->serversStatsModel->deleteServerStats($serverid);
					
					echo "gs$item[server_id] - удален.\n";
					
					// Отправка уведомления
					$mailLib->setTo($item['user_email']);
					$mailLib->setSubject("Удаление сервера #$serverid");
					
					$mailData = array();
					$mailData['firstname'] = $item['user_firstname'];
					$mailData['lastname'] = $item['user_lastname'];
					$mailData['serverid'] = $serverid;
					
					$text = $this->load->view('mail/servers/deleted', $mailData);
					
					$mailLib->setText($text);
					$mailLib->send();
				} else {
					// Блокировка
					$this->serversModel->execServerAction($serverid, 'stop');
					$this->serversModel->updateServer($serverid, array('server_status' => 0));
					//$mailLib->execServerAction($serverid, 'stop');
					//$mailLib->updateServer($serverid, array('server_status' => 0));
					echo "gs$item[server_id] - заблокирован.\n";
					
					// Отправка уведомления
					$mailLib->setTo($item['user_email']);
					$mailLib->setSubject("Блокировка сервера #$serverid");
			
					$mailData = array();
					$mailData['firstname'] = $item['user_firstname'];
					$mailData['lastname'] = $item['user_lastname'];
					$mailData['serverid'] = $serverid;
			
					$text = $this->load->view('mail/servers/lock', $mailData);
			
					$mailLib->setText($text);
					$mailLib->send();
				}
			} else {
				if($diff->days < 3) {
					echo "gs$item[server_id] - отправлено уведомление.\n";
					
					// Отправка уведомления
					$mailLib->setTo($item['user_email']);
					$mailLib->setSubject("Завершение оплаченного периода сервера #$serverid");
					
					$mailData = array();
					$mailData['firstname'] = $item['user_firstname'];
					$mailData['lastname'] = $item['user_lastname'];
					$mailData['serverid'] = $serverid;
					$mailData['days'] = $diff->days;
			
					$text = $this->load->view('mail/servers/needPay', $mailData);
			
					$mailLib->setText($text);
					$mailLib->send();
				}
			}
		}
		return null;
	}
	
	public function updateSystemLoad() {
		$this->load->checkLicense();
		$this->load->model('servers');
		
		$token = @$this->request->get['token'];
		if($this->config->token != $token) {
			return "Access Denied";
		}
		
		$servers = $this->serversModel->getServers(array());
		
		foreach($servers as $item) {
			$serverid = $item['server_id'];
			
			if($item['server_status'] == 2) {
				$sysload = $this->serversModel->getServerSystemLoad($serverid);
				$this->serversModel->updateServer($serverid, array(
					'server_cpu_load'	=>	$sysload['cpu'],
					'server_ram_load'	=>	$sysload['ram']
				));
			}
		}
		return null;
	}
	
	public function updateStats() {
		$this->load->checkLicense();
		$this->load->library('query');
		$this->load->model('servers');
		$this->load->model('serversStats');
		
		$token = @$this->request->get['token'];
		if($this->config->token != $token) {
			return "Access Denied";
		}
		
		$servers = $this->serversModel->getServers(array(), array('games', 'locations'));
		// Удаление устаревшей статистики
		$this->serversStatsModel->clearServersStats();
		foreach($servers as $item) {

			$serverid = $item['server_id'];
			if($item['server_status'] == 2) {
				$queryLib = new queryLibrary($item['game_query']);
				$queryLib->connect($item['location_ip'], $item['server_port']);
				$query = $queryLib->getInfo();
				$queryLib->disconnect();
				
				$this->serversStatsModel->createServerStats(array(
					'server_id'				=> $serverid,
					'server_stats_players'	=> $query['players']
				));

			} else {
				$this->serversStatsModel->createServerStats(array(
					'server_id'				=> $serverid,
					'server_stats_players'	=> 0
				));
			}
		}
		return null;
	}
}
?>