123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- <?php
- if(!DEFINED('EGP'))
- exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
- class plugins
- {
- public static function images($images, $plugin)
- {
- global $html;
- if(empty($images)) return NULL;
- if(isset($html->arr['images']))
- unset($html->arr['images']);
- $aImg = explode("\n", $images);
- foreach($aImg as $img)
- {
- $html->get('plugin_images', 'sections/control/servers/games/plugins');
- $html->set('id', $plugin);
- $html->set('img', $img);
- $html->pack('images');
- }
- return isset($html->arr['images']) ? $html->arr['images'] : '';
- }
- public static function status($status)
- {
- global $html;
- if(!$status)
- {
- $html->unit('unstable');
- $html->unit('stable', 1);
- $html->unit('testing');
- }elseif($status == 2){
- $html->unit('unstable');
- $html->unit('stable');
- $html->unit('testing', 1);
- }else{
- $html->unit('unstable', 1);
- $html->unit('stable');
- $html->unit('testing');
- }
- return NULL;
- }
- public static function required($id, $required, $choice, $mcache)
- {
- global $sql;
- if($required == '')
- return NULL;
- $aRequi = explode(':', $required);
- foreach($aRequi as $pl)
- {
- $sql->query('SELECT `id` FROM `control_plugins_install` WHERE `server`="'.$sid.'" AND `plugin`="'.$pl.'" LIMIT 1');
- if(!$sql->num())
- {
- $sql->query('SELECT `name` FROM `plugins` WHERE `id`="'.$pl.'" LIMIT 1');
- $plRequi = $sql->get();
- if($choice != '')
- {
- $aChoice = explode(' ', $choice);
- foreach($aChoice as $plugins)
- {
- $aPlugins = explode(':', $plugins);
- if(in_array($pl, $aPlugins))
- {
- $options = '';
- foreach($aPlugins as $plugin)
- {
- $sql->query('SELECT `name`, `upd` FROM `plugins` WHERE `id`="'.$plugin.'" LIMIT 1');
- $data = $sql->get();
- if($data['upd'])
- {
- $sql->query('SELECT `name` FROM `plugins_update` WHERE `plugin`="'.$plugin.'" ORDER BY `id` DESC LIMIT 1');
- $data = $sql->get();
- }
- $options .= '<option value="'.$plugin.'">'.strip_tags($data['name']).'</option>';
- }
- if($options != '')
- sys::outjs(array('e' => 'Для данного плагина требуется установка одного из родителя', 'required' => true, 'pid' => $pl, 'select' => $options), $mcache);
- }
- }
- }
- sys::outjs(array('e' => 'Для данного плагина требуется установка родителя', 'required' => true, 'pid' => $pl, 'pname' => htmlspecialchars_decode($plRequi['name'])), $mcache);
- }
- }
- return NULL;
- }
- public static function incompatible($id, $incompatible, $mcache)
- {
- global $sql;
- if($incompatible == '')
- return NULL;
- $aIncomp = explode(':', $incompatible);
- foreach($aIncomp as $pl)
- {
- $sql->query('SELECT `id` FROM `control_plugins_install` WHERE `server`="'.$sid.'" AND `plugin`="'.$pl.'" LIMIT 1');
- if($sql->num())
- {
- $sql->query('SELECT `name` FROM `plugins` WHERE `id`="'.$pl.'" LIMIT 1');
- $plIncomp = $sql->get();
- sys::outjs(array('e' => 'Данный плагин несовместим с уже установленным плагином', 'pid' => $pl, 'pname' => htmlspecialchars_decode($plIncomp['name'])), $mcache);
- }
- }
- return NULL;
- }
- public static function clear($clear, $uid, $dir)
- {
- global $ssh;
- // Если регулярное выражение
- if(isset($clear['regex']) AND $clear['regex'])
- {
- $file = preg_replace($clear['text'], '', $ssh->get('sudo -u server'.$uid.' cat '.$dir.$clear['file']));
- // Временный файл
- $temp = sys::temp($file);
- $ssh->setfile($temp, $dir.$clear['file'], 0644);
- unlink($temp);
- $query = 'chown server'.$uid.':servers '.$dir.$clear['file'].';';
- }else
- // Удаление текста из файла
- $query = 'sudo -u server'.$uid.' sed -i '."'s/".str_replace('/', '\/', htmlspecialchars_decode($clear['text']))."//g'".' '.$dir.$clear['file'].';';
- $ssh->set($query.'sudo -u server'.$uid.' sed -i '."'/./!d'".' '.$dir.$clear['file']);
- return NULL;
- }
- public static function write($write, $uid, $dir)
- {
- global $ssh;
- // Костыль (добавить пустую строку на всякий случай)
- $query = 'sudo -u server'.$uid.' echo "" >> '.$dir.$write['file'].';';
- // Исключить дублирование, путем удаления добавляемого текста
- $query .= 'sudo -u server'.$uid.' sed -i '."'s/".str_replace('/', '\/', htmlspecialchars_decode($write['text']))."//g'".' '.$dir.$write['file'].';';
- // Добавление текста в начало файла
- if($write['top'])
- $query .= 'sudo -u server'.$uid.' touch '.$dir.$write['file'].'; sudo -u server'.$uid.' sed -i '."'1i ".str_replace(array('/', "'", '\"'), array('\/', "\'", '"'), htmlspecialchars_decode($write['text']))."'".' '.$dir.$write['file'].';';
- else
- // Добавление текста в конец файла
- $query .= 'sudo -u server'.$uid.' touch '.$dir.$write['file'].'; sudo -u server'.$uid.' echo "'.str_replace('"', '\"', htmlspecialchars_decode($write['text'])).'" >> '.$dir.$write['file'].';';
- $ssh->set($query.'sudo -u server'.$uid.' sed -i '."'/./!d'".' '.$dir.$clear['file']);
- return NULL;
- }
- }
- ?>
|