public function getDaemonIds() { if (!$this->daemonIds) { $cmd = Daemon::model()->getDbConnection()->createCommand('select `id` from `daemon`'); $this->daemonIds = $cmd->queryColumn(); } return $this->daemonIds; }
public function actionLogin($id = 0) { if (isset($_POST['password'])) { $pw = $_POST['password']; $id = (int) $_POST['server_id']; $server = Server::model()->findByPk((int) $id); if (!$server) { throw new CHttpException(404, Yii::t('mc', 'The requested page does not exist.')); } $this->net2FtpDefines(); global $net2ftp_result, $net2ftp_settings, $net2ftp_globals; require_once dirname(__FILE__) . '/../extensions/net2ftp/main.inc.php'; require_once dirname(__FILE__) . '/../extensions/net2ftp/includes/authorizations.inc.php'; $ftpSv = $this->getFtpServer($server); if (strlen($pw)) { $_SESSION['net2ftp_password_encrypted'] = encryptPassword($pw); $sessKey = 'net2ftp_password_encrypted_' . $ftpSv['ip'] . $this->getUsername($server); unset($_SESSION[$sessKey]); } Yii::log('Logging in to FTP server for server ' . $id); $this->redirect(array('ftpClient/browse', 'id' => $id)); } $ftpUser = FtpUser::model()->findByAttributes(array('name' => Yii::app()->user->name)); $daemons = array(); $serverList = array(); $sel = Yii::t('mc', 'Please select a server'); if ($ftpUser) { $c = new CDbCriteria(); $c->join = 'join `ftp_user_server` on `t`.`id`=`server_id`'; $c->condition = '`user_id`=? and `perms`!=\'\''; $c->params = array((int) $ftpUser->id); $svs = Server::model()->findAll($c); $serverList = array(0 => Yii::t('mc', 'Select')); foreach ($svs as $sv) { $dmn = Daemon::model()->findByPk($sv->daemon_id); $dmnInfo = array('ip' => '', 'port' => ''); if (!$dmn) { $dmnInfo['ip'] = Yii::t('mc', 'No daemon found for this server.'); } else { if (isset($dmn->ftp_ip) && isset($dmn->ftp_port)) { $dmnInfo = array('ip' => $dmn->ftp_ip, 'port' => $dmn->ftp_port); } else { $dmnInfo['ip'] = Yii::t('mc', 'Daemon database not up to date, please run the Multicraft installer.'); } } $daemons[$sv->id] = $dmnInfo; $serverList[$sv->id] = $sv->name; } } else { $serverList = array(0 => Yii::t('mc', 'No FTP account found')); $sel = Yii::t('mc', 'See the "Users" menu of your server for a list of FTP accounts'); } $this->render('login', array('id' => $id, 'havePw' => isset($_SESSION['net2ftp_password_encrypted']), 'serverList' => $serverList, 'daemons' => $daemons, 'sel' => $sel)); }
public function getConnection($id) { if (@isset($this->connections[$id])) { return $this->connections[$id]; } $daemon = Daemon::model()->findByPk((int) $id); if (!$daemon) { return null; } $con = new McConnectionDemo($this, $id, $daemon->name, $daemon->ip, $daemon->port, ''); return $this->connections[$id] = $con; }
public function actionRemoveDaemon($id) { Daemon::model()->deleteByPk($id); $this->redirect(array('index', 'step' => 'connection')); }
public function actionFtp($id) { Yii::app()->user->can($id, 'manage players', true); $model = $this->loadModel($id); $dmnInfo = array('ip' => '', 'port' => ''); if (!Yii::app()->user->model || !Yii::app()->user->model->getServerFtpAccess($model->id)) { $dmnInfo['error'] = Yii::t('mc', 'You don\'t have an FTP account for this server.'); } else { $dmn = Daemon::model()->findByPk($model->daemon_id); if (!$dmn) { $dmnInfo['error'] = Yii::t('mc', 'No daemon found for this server.'); } else { if (isset($dmn->ftp_ip) && isset($dmn->ftp_port)) { $dmnInfo = array('ip' => $dmn->ftp_ip, 'port' => $dmn->ftp_port); } else { $dmnInfo['error'] = Yii::t('mc', 'Daemon database not up to date, please run the Multicraft installer.'); } } } $this->render('ftp', array('model' => $model, 'dmnInfo' => $dmnInfo)); }
} ?> <?php $statusDetail = false; if (@$data['statusdetail']) { $statusDetail = array('label' => Yii::t('mc', 'Status'), 'type' => 'raw', 'value' => '<nobr><div id="statusdetail-ajax">' . CHtml::encode($data['statusdetail']) . '</div></nobr>'); } $statusBanner = false; if (!!Yii::app()->params['status_banner'] && !$model->isNewRecord) { $bannerUrl = CHtml::normalizeUrl(array('status/' . $model->id . '.png')); $statusBanner = array('label' => Yii::t('mc', 'Status Banner'), 'type' => 'raw', 'value' => CHtml::link(Yii::t('mc', 'Show'), $bannerUrl)); } $ip = trim($settings && $settings->display_ip ? $settings->display_ip : $model->ip); if (!strlen($ip) || $ip == '0.0.0.0') { if ($dmn = Daemon::model()->findByPk($model->daemon_id)) { $ip = $dmn->ip; } } $attribs = array(); $attribs[] = array('label' => $statusIcon, 'type' => 'raw', 'value' => $statusButtons, 'cssClass' => 'titlerow', 'template' => "<tr class=\"{class}\"><th>{label}</th><td colspan=\"2\">{value}</td></tr>\n"); if (!$edit) { if ($ip && $ip != '0.0.0.0') { $attribs[] = array('label' => CHtml::activeLabel($model, 'ip'), 'type' => 'raw', 'value' => '<nobr>' . CHtml::encode($ip) . '</nobr>'); } $attribs[] = 'port'; if ($statusDetail) { $attribs[] = $statusDetail; } if ($statusBanner) { $attribs[] = $statusBanner;
public function actionRemoveDaemon($id) { Daemon::model()->deleteByPk($id); $this->redirect(array('status')); }
public function actionIndex($id) { $sv = Server::model()->findByPk((int) $id); if (!$sv) { throw new Exception('Server not found'); } $cfg = ServerConfig::model()->findByPk((int) $id); $pl = $sv->getOnlinePlayers(); $st = $pl >= 0 ? 'online' : 'offline'; $image = $this->getImg(Theme::themeFilePath('images/status/' . $this->banner)); $statusIcon = $this->getImg(Theme::themeFilePath('images/status/' . $this->statusIcons[$st == 'online' ? 0 : 1])); $font = Theme::themeFilePath('images/status/' . $this->font); $color = imagecolorallocate($image, $this->color[0], $this->color[1], $this->color[2]); //Status icon imagecopy($image, $statusIcon, $this->textX, $this->iconY, 0, 0, imagesx($statusIcon), imagesy($statusIcon)); imagedestroy($statusIcon); //Server name imagettftext($image, $this->titleSize, 0, $this->textX, $this->titleY, $color, $font, $sv->name); //Server IP $ipStr = trim($cfg && $cfg->display_ip ? $cfg->display_ip : $sv->ip); if (!strlen($ipStr) || $ipStr == '0.0.0.0') { if ($dmn = Daemon::model()->findByPk($sv->daemon_id)) { $ipStr = $dmn->ip; } } $ipStr = 'IP: ' . $ipStr . ':' . $sv->port; $sz = imagettfbbox($this->ipSize, 0, $font, $ipStr); imagettftext($image, $this->ipSize, 0, imagesx($image) - ($sz[2] - $sz[0]) - $this->ipOffset, $this->statusY, $color, $font, $ipStr); //Server status if ($st == 'online') { imagettftext($image, $this->statusSize, 0, $this->textX + $this->statusOffset, $this->statusY, $color, $font, $pl . ' / ' . $sv->players . ' ' . Yii::t('mc', 'Players')); } else { imagettftext($image, $this->statusSize, 0, $this->textX + $this->statusOffset, $this->statusY, $color, $font, Yii::t('mc', 'Offline')); } imagecolordeallocate($image, $color); header('Content-type: image/png'); imagepng($image); imagedestroy($image); }
public function getMysqlInfo() { if ($this->_mysqlInfo) { return $this->_mysqlInfo; } $info = @(include dirname(__FILE__) . '/../config/user_databases.php'); $info = @$info[$this->daemon_id]; if (!is_array($info)) { $info = array('host' => Yii::app()->params['user_mysql_host']); } else { if (!isset($info['host'])) { $info['host'] = '*'; } } if (!@$info['user']) { $info['user'] = Yii::app()->params['user_mysql_user']; $info['pass'] = Yii::app()->params['user_mysql_pass']; } else { if (!@$info['pass']) { $info['pass'] = ''; } } $dmn = Daemon::model()->findByPk($this->daemon_id); if ($info['host'] == '*') { if ($dmn) { $info['host'] = $dmn->ip; } else { $info['host'] = false; } } else { if ($info['host'] == '') { $info['host'] = false; } } if (!isset($info['prefix'])) { $info['prefix'] = Yii::app()->params['user_mysql_prefix']; } if (!isset($info['link'])) { $info['link'] = Yii::app()->params['user_mysql_admin']; } if ($dmn && $info['link']) { $info['link'] = str_replace('*', $dmn->ip, $info['link']); } return $this->_mysqlInfo = $info; }