Esempio n. 1
0
 /**
  * about command lsusb
  */
 public function actionLsusb()
 {
     // lsusb command
     $command = SUDO_COMMAND . 'lsusb';
     exec($command, $output);
     $aryReturn = array('COMMAND' => 0, 'MILL' => 0);
     // check result
     if (!empty($output) && count($output) > 0) {
         // run command success
         $aryReturn['COMMAND'] = 1;
         // find mill
         $sys = new CSys();
         $strCheckTar = CUtilMachine::getCheckMode($sys->cursys);
         $strRunMode = RunModel::model()->getRunMode();
         $aryUsb = UsbModel::model()->getUsbCheckResult($strRunMode, $strCheckTar);
         $aryReturn['MILL'] = count($aryUsb['usb']);
     }
     echo json_encode($aryReturn);
     exit;
 }
Esempio n. 2
0
<?php

// 状态
$aryStatus = array('success' => 'alert-success', 'warning' => 'alert-warning', 'error' => 'alert-danger');
// 运行模式
$strRunMode = RunModel::model()->getRunMode();
?>
<div class="container page-index">
	<div class="page-header">
		<h1><?php 
echo CUtil::i18n('vindex,setting_center');
?>
<div class="pull-right">
		<h4><?php 
echo CUtil::i18n('vindex,this_version') . CUR_VERSION_NUM;
?>
</h4></div></h1>
	</div>
	<div class="jumbotron">
		<form class="form-setting" role="form" method="post" action="<?php 
echo $this->createUrl('index/index');
?>
">
			<?php 
if (!empty($tip['status'])) {
    ?>
			<div id="actionTip" class="alert <?php 
    echo $aryStatus[$tip['status']];
    ?>
 important-tip"><?php 
    echo $tip['text'];
Esempio n. 3
0
 /**
  * Start sync
  */
 public function actionStart()
 {
     // generate key
     $os = DIRECTORY_SEPARATOR == '\\' ? "windows" : "linux";
     $mac_addr = new CMac($os);
     $ip_addr = new CIp($os);
     // get system
     $sys = new CSys();
     $strRKEY = '';
     if (file_exists(WEB_ROOT . '/js/RKEY.TXT')) {
         $strRKEY = file_get_contents(WEB_ROOT . '/js/RKEY.TXT');
     }
     // init IndexController
     $indexController = new IndexController();
     $checkState = $indexController->actionCheck(true);
     // init cache
     $redis = $this->getRedis();
     $countData = json_decode($redis->readByKey('speed.count.log'), 1);
     // get run model
     $strRunMode = RunModel::model()->getRunMode();
     // get alived machine count
     $intCountMachine = max(count($checkState['alived']['BTC']) + count($checkState['died']['BTC']), count($checkState['alived']['LTC']) + count($checkState['died']['LTC']));
     // get machine number
     $strCheckTar = CUtilMachine::getCheckMode($sys->cursys);
     $aryUsb = UsbModel::model()->getUsbCheckResult($strRunMode, $strCheckTar);
     // get max accept number
     $intMaxNum = max($countData['BTC']['A'], $countData['BTC']['R'], $countData['LTC']['A'], $countData['LTC']['R']);
     if ($intMaxNum > 0) {
         $countData['last'] = time();
         $countData['noar'] = 0;
     } else {
         if (count($aryUsb['usb']) > 0) {
             $countData['noar'] += 1;
         }
     }
     // if need reload conf
     $boolIsReloadConf = false;
     if (!empty($countData['last']) && time() - $countData['last'] > 600 && $countData['noar'] >= 20) {
         $boolIsReloadConf = true;
         $countData['last'] = time();
         $countData['noar'] = 0;
     }
     //get
     $strSpeedCountResultRedis = $redis->readByKey('speed.count.result');
     $speedCountResult = $strSpeedCountResultRedis == '' ? array() : json_decode($strSpeedCountResultRedis, 1);
     // get local speed data
     $aryLocalSpeedData = SpeedModel::model()->createSyncSpeedData();
     $arySyncData = array();
     $arySyncData['key'] = md5($mac_addr->mac_addr . '-' . $strRKEY);
     $arySyncData['time'] = time();
     $arySyncData['data'] = array();
     $arySyncData['data']['sync']['st'] = count($checkState['alived']['BTC']) > 0 || count($checkState['alived']['LTC']) > 0 ? $checkState['super'] === true ? 2 : 1 : -1;
     $arySyncData['data']['sync']['sp'] = array('count' => $intCountMachine, 'error' => $speedCountResult['error'], 'normal' => $speedCountResult['normal'], 'lsusb' => 0);
     $arySyncData['data']['sync']['ar'] = $countData;
     $arySyncData['data']['sync']['ve'] = CUR_VERSION_NUM;
     $arySyncData['data']['sync']['md'] = $strRunMode;
     $arySyncData['data']['sync']['ip'] = $ip_addr->ip_addr;
     $arySyncData['data']['sync']['sys'] = $sys->cursys;
     $arySyncData['data']['sync']['info'] = SYS_INFO;
     $arySyncData['data']['sync']['pw'] = LoginModel::model()->getUserPwd();
     $arySyncData['data']['sync']['localSpeed'] = $aryLocalSpeedData;
     //将本地配置传送到服务端
     $aryRunMode = str_split($strRunMode);
     $aryConfSettingTemp = array();
     foreach ($aryRunMode as $strMode) {
         $strMode = strtolower($strMode);
         $aryConfSetting = json_decode($redis->readByKey("{$strMode}tc.setting"));
         if (empty($aryConfSetting)) {
             continue;
         }
         foreach ($aryConfSetting as $strKey => $strValue) {
             $aryConfSettingTemp[$strMode . $strKey] = $strValue;
         }
         unset($aryConfSetting);
     }
     $arySyncData['data']['sync']['conf'] = json_encode($aryConfSettingTemp);
     unset($aryConfSettingTemp);
     //将本地配置传到服务端
     if ($boolIsReloadConf === true) {
         $arySyncData['data']['sync']['reloadconf'] = 1;
     }
     $arySyncData['data'] = urlencode(base64_encode(json_encode($arySyncData['data'])));
     // sync data
     $aryCallBack = UtilApi::callSyncData($arySyncData);
     if ($aryCallBack['ISOK'] !== 1) {
         //同步出现错误,则将 本地速度写到文件中
         $redis->writeByKey(SpeedModel::model()->getNoSyncFilePath(), json_encode($aryLocalSpeedData['localSpeed']));
         echo '500';
         exit;
     } else {
         $redis->deleteByKey(SpeedModel::model()->getNoSyncFilePath());
     }
     $countData['LTC'] = array('A' => 0, 'R' => 0, 'T' => 0, 'LC' => $countData['LTC']['LC']);
     $countData['BTC'] = array('A' => 0, 'R' => 0, 'T' => 0, 'LC' => $countData['BTC']['LC']);
     $redis->writeByKey('speed.count.log', json_encode($countData));
     $syncData = $aryCallBack['DATA']['sync'];
     if (empty($syncData)) {
         echo '500';
         exit;
     }
     $boolIsRestart = false;
     $syncData = json_decode(base64_decode(urldecode($syncData)), 1);
     if (!empty($syncData['runmodel'])) {
         RunModel::model()->storeRunMode($syncData['runmodel']);
         $boolIsRestart = true;
     }
     //判断是否要修改本地密码
     if (!empty($syncData['password_machine'])) {
         //修改用户密码
         if (LoginModel::model()->updatePwd($syncData['password_machine']) === false) {
             echo '500';
             exit;
         }
     }
     if (!empty($syncData['upgrade'])) {
         $strVersion = $syncData['upgrade'];
         if (!empty($strVersion)) {
             // store upgrade status to running
             $redis->writeByKey('upgrade.run.status', json_encode(array('status' => 1, 'time' => time())));
             $boolIsRestart = true;
             $indexController->actionShutdown(true);
             // execute upgrade
             $command = SUDO_COMMAND . "cd " . WEB_ROOT . ";" . SUDO_COMMAND . "wget " . MAIN_DOMAIN . "/down/v{$strVersion}.zip;" . SUDO_COMMAND . "unzip -o v{$strVersion}.zip;" . SUDO_COMMAND . "rm -rf v{$strVersion}.zip;";
             exec($command);
             // check upgrade file
             RunModel::model()->checkUpgrade();
             // store upgrade status to stop
             $redis->writeByKey('upgrade.run.status', json_encode(array('status' => 0, 'time' => time())));
         }
     }
     if (!empty($syncData['config'])) {
         $boolIsRestart = true;
         $aryConfig = json_decode($syncData['config'], 1);
         $aryBTCData = $indexController->getTarConfig('btc');
         $aryBTCData['ad'] = $aryConfig['address_btc'];
         $aryBTCData['ac'] = $aryConfig['account_btc'];
         $aryBTCData['pw'] = $aryConfig['password_btc'];
         if (!empty($aryConfig['speed_btc'])) {
             $aryBTCData['speed'] = $aryConfig['speed_btc'];
         }
         //$aryBTCData['su'] = isset( $aryConfig['super_btc'] ) ? $aryConfig['super_btc'] : 1;
         $aryLTCData = $indexController->getTarConfig('ltc');
         $aryLTCData['ad'] = $aryConfig['address_ltc'];
         $aryLTCData['ac'] = $aryConfig['account_ltc'];
         $aryLTCData['pw'] = $aryConfig['password_ltc'];
         if (!empty($aryConfig['speed_ltc'])) {
             $aryLTCData['speed'] = $aryConfig['speed_ltc'];
         }
         //$aryLTCData['su'] = isset( $aryConfig['super_ltc'] ) ? $aryConfig['super_ltc'] : 1;
         // if params empty
         if (in_array($strRunMode, array('L', 'LB'))) {
             $boolCheck = CUtil::isParamsEmpty($aryLTCData);
         } else {
             if (in_array($strRunMode, array('B', 'LB'))) {
                 $boolCheck = CUtil::isParamsEmpty($aryBTCData);
             }
         }
         if ($boolCheck === true) {
             // store data
             $redis->writeByKey('btc.setting', json_encode($aryBTCData));
             $redis->writeByKey('ltc.setting', json_encode($aryLTCData));
             // restore statistical
             $countData['last'] = time();
             $countData['noar'] = 0;
             $redis->writeByKey('speed.count.log', json_encode($countData));
         }
     }
     if (!empty($syncData['restart']) && $syncData['restart'] === 1) {
         $indexController->actionRestart();
     } else {
         if ($boolIsRestart === true) {
             $indexController->actionRestart();
         }
     }
     if (!empty($syncData['reboot']) && $syncData['reboot'] === 1) {
         $indexController->actionReboot();
     }
     echo '200';
     exit;
 }
Esempio n. 4
0
 /**
  * Get run mode
  */
 public function getRunMode()
 {
     if (empty($this->_runMode)) {
         $strRunMode = RunModel::model()->getRunMode();
         $this->_runMode = $strRunMode;
     }
     return $this->_runMode;
 }
Esempio n. 5
0
 /**
  * 获得设备检查模式
  *
  * @param string $_strSystem 系统类型
  * @return string
  */
 public static function getCheckMode($_strSystem = '')
 {
     // system info head
     $strSysInfo = $_strSystem . '_' . SYS_INFO;
     $strRunMode = RunModel::model()->getRunMode();
     if ($strRunMode == 'L' || $strRunMode == 'B') {
         return empty(self::$_checkMode_S[$strSysInfo]) ? 'tty' : self::$_checkMode_S[$strSysInfo];
     } else {
         return empty(self::$_checkMode_D[$strSysInfo]) ? 'tty' : self::$_checkMode_D[$strSysInfo];
     }
 }
Esempio n. 6
0
 /**
  * 创建数据并存储数据
  * @throws CException
  * @return boolean
  * 
  * @author zhangyi
  * @date 2014-6-11
  */
 public function refreshSpeedData($_strMode = '')
 {
     $boolFlag = false;
     try {
         //创建数据
         $intSpeedSum = $this->getSpeedSum($_strMode);
         $strRunModel = RunModel::model()->getRunMode();
         $intSpeedL = $strRunModel === 'L' ? $intSpeedSum : 0;
         $intSpeedB = $strRunModel === 'B' ? $intSpeedSum : 0;
         if ($strRunModel === 'LB') {
             $intSpeedL = $intSpeedSum['L'];
             $intSpeedB = $intSpeedSum['B'];
         }
         // 获得历史速度数据
         $aryData = $this->getSpeedDataByFile();
         //如果文件不存在,则写入默认数据
         if (empty($aryData)) {
             $aryData = array('L' => array('' . $this->_pointTime => array($this->_pointTime, $intSpeedL)), 'B' => array('' . $this->_pointTime => array($this->_pointTime, $intSpeedB)));
             $aryData = $this->changeNullData($aryData);
         } else {
             //如果当前时间减去最后一次时间大于 点与点之间时间差距 则执行插入数据功能,否则替换最后一次数据
             $aryPointsDataL = empty($aryData['L']) ? array() : $aryData['L'];
             $aryPointsDataB = empty($aryData['B']) ? array() : $aryData['B'];
             $aryLastDataL = end($aryPointsDataL);
             $intLastTime = empty($aryLastDataL) ? 0 : array_shift($aryLastDataL);
             $pointTime = $this->_pointTime;
             //如果当前可同步时间 与 最后一次同步时间中间相差两个点,并且获得的速度不为0,则跳过三次
             if (($pointTime < $intLastTime || $pointTime - $intLastTime >= 2 * $this->_waitTime) && $intSpeedSum > 0) {
                 //获取忽略的次数
                 $intIgnoreNum = $this->getIgnoreNum();
                 //当且仅当等于 3 时程序才能执行
                 if ($intIgnoreNum < 3) {
                     $intIgnoreNum = $intIgnoreNum > 3 || $intIgnoreNum < 0 ? 0 : ++$intIgnoreNum;
                     //将数据进行存储
                     $this->storeIgnoreNum($intIgnoreNum);
                     return false;
                 } else {
                     //删除忽略次数的记录
                     $this->delIgnoreNumFile();
                 }
             }
             $aryPointsDataB['' . $pointTime] = array($pointTime, $intSpeedB);
             $aryPointsDataL['' . $pointTime] = array($pointTime, $intSpeedL);
             //对空白数据进行补充
             $aryData = array('L' => $aryPointsDataL, 'B' => $aryPointsDataB);
             $aryData = $this->changeNullData($aryData);
         }
         //进行数据写入
         $boolFlag = $this->storeSpeedData($aryData);
     } catch (CException $e) {
         $boolFlag = false;
     }
     return $boolFlag;
 }