public function actionConfigs($id) { Yii::app()->user->can($id, 'edit configs', true); $configs = ConfigFile::model()->findAll(); $dmn = Server::getDaemon($id); $list = array(); $error = ''; foreach ($configs as $cfg) { if (!$cfg->enabled) { continue; } $res = McBridge::get()->cmd($dmn, 'server ' . $id . ':cfgfile check:' . $cfg->file . ':' . $cfg->dir . ':'); if (!$res['success'] || !isset($res['data'][0])) { $error = CHtml::encode($res['error']); continue; } foreach ($res['data'] as $data) { if ($data['valid'] != 'True') { continue; } $name = $this->replData($cfg->name, $data['file'], $data['dir']); $desc = $this->replData($cfg->description, $data['file'], $data['dir']); $list[] = array('id' => $cfg->id, 'name' => $name, 'desc' => $desc, 'ro' => $data['ro'], 'file' => $data['file'], 'dir' => $data['dir'], 'action' => $data['ro'] == 'True' ? 'View' : 'Edit'); } } $perm = McBridge::get()->cmd($dmn, 'server ' . $id . ':cfgfile check:[Pp]ermissions.[Jj][Aa][Rr]:plugins/:'); if ($perm['success'] && isset($perm['data'][0])) { $perm = true; } else { $perm = false; } $this->render('configs', array('dataProvider' => new CArrayDataProvider($list, array('sort' => array('attributes' => array('name')), 'pagination' => array('pageSize' => 10))), 'model' => $this->loadModel($id), 'error' => $error, 'perm' => $perm)); }
public function serverCmd($server, $cmd, &$data = null, $broadcast = false, $nocache = false) { $command = $cmd; $r = array(); if (($cache = CommandCache::get($server, $command, $r)) === 1) { if (@$r['success']) { $data = @$r['data']; return true; } $this->addError(@$r['error']); return false; } $cmd = 'server ' . $server . ':' . $cmd; $ret = array(); if ($broadcast) { $ret = $this->globalCmd($cmd); } else { $ret = array($this->cmd(Server::getDaemon($server), $cmd)); } $e = ''; foreach ($ret as $r) { if ($cache !== 0) { CommandCache::set($server, $command, $r); } if ($r['success']) { $data = $r['data']; return true; } $e = $r['error']; } $this->addError($e); return false; }