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));
 }
예제 #2
0
 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;
 }