/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params, $pagesize = 20)
 {
     ///应用组用户只可查看所在组的应用的模板
     $task_con = "";
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $app_con = "svr_gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $app_con .= "," . $item['gid'];
             }
         }
         $app_con .= ")";
         $query = DcmdApp::find()->where($app_con)->asArray()->all();
         $task_con = "app_id in (0";
         foreach ($query as $item) {
             $task_con .= "," . $item['app_id'];
         }
         $task_con .= ")";
     }
     $query = DcmdTaskTemplate::find()->where($task_con)->orderBy('task_tmpt_name');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => $pagesize]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['task_tmpt_id' => $this->task_tmpt_id, 'task_cmd_id' => $this->task_cmd_id, 'svr_id' => $this->svr_id, 'app_id' => $this->app_id, 'update_env' => $this->update_env, 'concurrent_rate' => $this->concurrent_rate, 'timeout' => $this->timeout, 'process' => $this->process, 'auto' => $this->auto, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'task_tmpt_name', $this->task_tmpt_name])->andFilterWhere(['like', 'task_cmd', $this->task_cmd])->andFilterWhere(['like', 'svr_name', $this->svr_name])->andFilterWhere(['like', 'task_arg', $this->task_arg])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     ///非admin用户,可查看所属业务组内的任务
     $svr_con = "";
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $app_con = "svr_gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $app_con .= "," . $item['gid'];
             }
         }
         $app_con .= ")";
         $query = DcmdApp::find()->where($app_con)->asArray()->all();
         $app_con = "app_id in (0";
         foreach ($query as $item) {
             $app_con .= "," . $item['app_id'];
         }
         $app_con .= ")";
         $query = DcmdService::find()->where($app_con)->asArray()->all();
         $svr_con = "svr_id in (0";
         foreach ($query as $item) {
             $svr_con .= "," . $item['svr_id'];
         }
         $svr_con .= ")";
     }
     $query = DcmdTaskHistory::find()->where($svr_con)->orderBy('task_id desc');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['task_id' => $this->task_id, 'depend_task_id' => $this->depend_task_id, 'svr_id' => $this->svr_id, 'update_env' => $this->update_env, 'update_tag' => $this->update_tag, 'state' => $this->state, 'freeze' => $this->freeze, 'valid' => $this->valid, 'pause' => $this->pause, 'concurrent_rate' => $this->concurrent_rate, 'timeout' => $this->timeout, 'auto' => $this->auto, 'process' => $this->process, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'task_name', $this->task_name])->andFilterWhere(['like', 'task_cmd', $this->task_cmd])->andFilterWhere(['like', 'depend_task_name', $this->depend_task_name])->andFilterWhere(['like', 'svr_name', $this->svr_name])->andFilterWhere(['like', 'svr_path', $this->svr_path])->andFilterWhere(['like', 'tag', $this->tag])->andFilterWhere(['like', 'err_msg', $this->err_msg])->andFilterWhere(['like', 'task_arg', $this->task_arg])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     ///应用组用户只可查看所在组的应用
     $svr_pool_con = "";
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $app_con = "svr_gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $app_con .= "," . $item['gid'];
             }
         }
         $app_con .= ")";
         $query = DcmdApp::find()->where($app_con)->asArray()->all();
         $svr_pool_con = "app_id in (0";
         foreach ($query as $item) {
             $svr_pool_con .= "," . $item['app_id'];
         }
         $svr_pool_con .= ")";
     }
     $query = DcmdServicePool::find()->where($svr_pool_con)->orderBy('svr_pool');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['svr_pool_id' => $this->svr_pool_id, 'svr_id' => $this->svr_id, 'app_id' => $this->app_id, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'svr_pool', $this->svr_pool])->andFilterWhere(['like', 'repo', $this->repo])->andFilterWhere(['like', 'env_ver', $this->env_ver])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
 public function actionMonitorTask($task_id)
 {
     $task = DcmdTask::findOne($task_id);
     ///非系统管理员只能操作同一产品组的该任务
     if (Yii::$app->user->getIdentity()->admin != 1) {
         if ($task->opr_uid != Yii::$app->user->getId()) {
             ///判断是否为同一产品组
             $app = DcmdApp::findOne($task->app_id);
             $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $app['svr_gid']]);
             if ($query == NULL) {
                 Yii::$app->getSession()->setFlash('success', NULL);
                 Yii::$app->getSession()->setFlash('error', "对不起,你没有权限!");
                 return $this->redirect(array('dcmd-task/index'));
             }
         }
     } else {
         ///系统管理员产品所属同一系统组
         $app = DcmdApp::findOne($task->app_id);
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $app['sa_gid']]);
         if ($query == NULL) {
             Yii::$app->getSession()->setFlash('success', NULL);
             Yii::$app->getSession()->setFlash('error', "对不起,你没有权限!");
             return $this->redirect(array('dcmd-task/index'));
         }
     }
     if (Yii::$app->request->post()) {
         $timeout = Yii::$app->request->post()['timeout'];
         $auto = Yii::$app->request->post()['auto'];
         $concurrent_rate = Yii::$app->request->post()['concurrent_rate'];
         $this->updateTask($task_id, $timeout, $auto, $concurrent_rate);
         ////var_dump(Yii::$app->request->post());exit;
     }
     ///获取产品名称
     ///$query = DcmdService::findOne($task->svr_id);
     $app_id = $task->app_id;
     /// $query->app_id;
     ///$query = DcmdApp::findOne($app_id);
     $app_name = $task->app_name;
     $ret = xml_to_array($task->task_arg);
     $args = "";
     if (is_array($ret['env'])) {
         foreach ($ret['env'] as $k => $v) {
             $args .= $k . '=' . $v . " ; ";
         }
     }
     return $this->render('monitor', ['task_id' => $task_id, 'task' => $task, 'args' => $args, 'app_name' => $app_name, 'app_id' => $app_id]);
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = DcmdUserGroup::find()->andWhere(['gid' => $params['gid']]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     /*if (!($this->load($params) && $this->validate())) {
                 return $dataProvider;
             }
     
             $query->andFilterWhere([
                 'id' => $this->id,
                 'uid' => $this->uid,
                 'gid' => $this->gid,
                 'utime' => $this->utime,
                 'ctime' => $this->ctime,
                 'opr_uid' => $this->opr_uid,
             ]);*/
     return $dataProvider;
 }
 /**
  * Updates an existing DcmdServicePoolAttr model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id, $svr_pool_id)
 {
     $svr_pool = DcmdServicePool::findOne($svr_pool_id);
     ///仅仅用户与该应用在同一个系统组才可以操作
     $temp = DcmdApp::findOne($svr_pool->app_id);
     $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $temp['sa_gid']]);
     if ($query == NULL) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!");
         return $this->redirect(array('dcmd-service-pool/view', 'id' => $svr_pool_id, 'show_div' => 'dcmd-service-pool-attr'));
     }
     if ($id == 0) {
         ///需要新建
         $attr_id = Yii::$app->request->queryParams['attr_id'];
         $def_attr = DcmdServicePoolAttrDef::findOne($attr_id);
         $query = DcmdServicePoolAttr::findOne(['svr_pool_id' => $svr_pool_id, 'attr_name' => $def_attr->attr_name]);
         if (count($query) > 0) {
             $id = $query['id'];
         } else {
             $model = new DcmdServicePoolAttr();
             $model->app_id = $svr_pool->app_id;
             $model->svr_id = $svr_pool->svr_id;
             $model->svr_pool_id = $svr_pool_id;
             $model->attr_name = $def_attr->attr_name;
             $model->attr_value = $def_attr->def_value;
             $model->comment = $def_attr->comment;
             $model->utime = date('Y-m-d H:i:s');
             $model->ctime = $model->utime;
             $model->opr_uid = Yii::$app->user->getId();
             $model->save();
             $id = $model->id;
         }
     }
     $model = $this->findModel($id);
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         Yii::$app->getSession()->setFlash('success', '修改成功!');
         return $this->redirect(['/dcmd-service-pool/view', 'id' => $model->svr_pool_id, 'show_div' => 'dcmd-service-pool-attr']);
     } else {
         return $this->render('update', ['model' => $model]);
     }
 }
 /**
  * Updates an existing DcmdNodeGroupAttr model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id, $ngroup_id)
 {
     $node_group = DcmdNodeGroup::findOne($ngroup_id);
     ///仅仅用户与该应用在同一个系统组才可以操作
     $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $node_group->gid]);
     if ($query == NULL) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!");
         return $this->redirect(['/dcmd-node-group/view', 'id' => $ngroup_id, 'show_div' => 'dcmd-node-group-attr']);
     }
     if ($id == 0) {
         ///需要新建
         $attr_id = Yii::$app->request->queryParams['attr_id'];
         $def_attr = DcmdNodeGroupAttrDef::findOne($attr_id);
         $query = DcmdNodeGroupAttr::findOne(['ngroup_id' => $ngroup_id, 'attr_name' => $def_attr->attr_name]);
         if (count($query) > 0) {
             $id = $query['id'];
         } else {
             $model = new DcmdNodeGroupAttr();
             $model->ngroup_id = $ngroup_id;
             $model->attr_name = $def_attr->attr_name;
             $model->attr_value = $def_attr->def_value;
             $model->comment = $def_attr->comment;
             $model->utime = date('Y-m-d H:i:s');
             $model->ctime = $model->utime;
             $model->opr_uid = Yii::$app->user->getId();
             $model->save();
             $id = $model->id;
         }
     }
     $model = $this->findModel($id);
     $group = DcmdNodeGroup::findOne($model->ngroup_id);
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         Yii::$app->getSession()->setFlash('success', '修改成功!');
         return $this->redirect(['/dcmd-node-group/view', 'id' => $group->ngroup_id, 'show_div' => 'dcmd-node-group-attr']);
     } else {
         return $this->render('update', ['model' => $model, 'group' => $group]);
     }
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params, $qstr = NULL)
 {
     ///非系统用户只能查看授权的操作
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $gstr = " gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $gstr .= "," . $item['gid'];
             }
         }
         $gstr .= ")";
         $query = DcmdGroupCmd::find()->where($gstr)->asArray()->all();
         if ($qstr == NULL) {
             $qstr = " opr_cmd_id in (0";
         } else {
             $qstr .= " and opr_cmd_id in (0";
         }
         foreach ($query as $item) {
             $qstr .= "," . $item['opr_cmd_id'];
         }
         $qstr .= ")";
     }
     if ($qstr) {
         $query = DcmdOprCmd::find()->andWhere($qstr)->orderBy('opr_cmd');
     } else {
         $query = DcmdOprCmd::find();
     }
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['opr_cmd_id' => $this->opr_cmd_id, 'timeout' => $this->timeout, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'opr_cmd', $this->opr_cmd])->andFilterWhere(['like', 'ui_name', $this->ui_name])->andFilterWhere(['like', 'run_user', $this->run_user])->andFilterWhere(['like', 'script_md5', $this->script_md5])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
 public function actionChangeNodeGroup()
 {
     $ngroup_id = Yii::$app->request->post()['ngroup_id'];
     $ids = explode(";", Yii::$app->request->post()['ids']);
     if ($ngroup_id == "") {
         Yii::$app->getSession()->setFlash('error', "未选择设备池!");
         return $this->redirect(['index']);
     }
     ///判断用户是否和该设备池子属于一个系统组
     $tmp = DcmdNodeGroup::findOne($ngroup_id);
     $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $tmp['gid']]);
     if ($query == NULL) {
         Yii::$app->getSession()->setFlash('error', "没有权限切换到该服务池");
         return $this->redirect(['index']);
     }
     $ret_msg = "";
     foreach ($ids as $k => $id) {
         if ($id == "") {
             continue;
         }
         $model = $this->findModel($id);
         ///判断用户是否和该设备池子属于一个系统组
         $tmp = DcmdNodeGroup::findOne($model['ngroup_id']);
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $tmp['gid']]);
         if ($query == NULL) {
             $ret_msg .= "没有权限变更:" . $model->ip . " ";
             continue;
         }
         $model->ngroup_id = $ngroup_id;
         $model->save();
         $ret_msg .= "变更成功:" . $model->ip . " ";
     }
     Yii::$app->getSession()->setFlash('success', $ret_msg);
     return $this->redirect(['index']);
 }
 /**
  * Deletes an existing DcmdAppArchDiagram model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @param integer $id
  * @return mixed
  */
 public function actionDelete($id)
 {
     $model = $this->findModel($id);
     $app_query = DcmdApp::findOne($model->app_id);
     ///判断用户所属的系统组是否和该应用相同
     $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $app_query['sa_gid']]);
     if ($query == NULL) {
         Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!");
         return $this->redirect(array('dcmd-app/view', 'id' => $model->app_id));
     }
     $app_id = $model->app_id;
     $arch_name = $model->arch_name;
     $model->delete();
     Yii::$app->getSession()->setFlash('success', '删除成功!');
     ///删除文件
     $base_path = dirname(__DIR__) . "/web/app_image/app_";
     $img_path = $base_path . $arch_name . '_' . $app_id . '.jpg';
     if (file_exists($img_path)) {
         unlink($img_path);
     }
     $opr_log = new DcmdOprLog();
     $opr_log->log_table = "dcmd_app_arch_diagram";
     $opr_log->opr_type = 3;
     $opr_log->sql_statement = "delete arch_name:{$arch_name}";
     $opr_log->ctime = date('Y-m-d H:i:s');
     $opr_log->opr_uid = Yii::$app->user->getId();
     $opr_log->save();
     return $this->redirect(['dcmd-app/view', 'id' => $app_id]);
 }
 public function actionDeleteAll()
 {
     if (!array_key_exists('selection', Yii::$app->request->post())) {
         Yii::$app->getSession()->setFlash('error', '未选择服务池!');
         return $this->redirect(['index']);
     }
     $select = Yii::$app->request->post()['selection'];
     $err_msg = "";
     $suc_msg = "";
     foreach ($select as $k => $id) {
         $model = $this->findModel($id);
         ///仅仅用户与该应用在同一个系统组才可以操作
         $temp = DcmdApp::findOne($model['app_id']);
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $temp['sa_gid']]);
         if ($query == NULL) {
             $err_msg .= $model->svr_pool . ":没有权限删除<br>";
             continue;
         }
         $node = DcmdServicePoolNode::find()->where(['svr_pool_id' => $id])->one();
         if ($node) {
             $err_msg .= $model->svr_pool . ':服务池子设备不为空,不可删除<br>';
             continue;
         } else {
             ///删除服务池属性
             DcmdServicePoolAttr::deleteAll(['svr_pool_id' => $id]);
             $model->delete();
             $suc_msg .= $model->svr_pool . ':删除成功<br>';
         }
     }
     if ($suc_msg != "") {
         Yii::$app->getSession()->setFlash('success', $suc_msg);
     }
     if ($err_msg != "") {
         Yii::$app->getSession()->setFlash('error', $err_msg);
     }
     return $this->redirect(['index']);
 }
 /**
  * Deletes an existing DcmdServiceArchDiagram model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @param integer $id
  * @return mixed
  */
 public function actionDelete($id)
 {
     $model = $this->findModel($id);
     ///仅仅用户与该应用在同一个系统组才可以操作
     $temp = DcmdApp::findOne($model->app_id);
     $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $temp['sa_gid']]);
     if ($query == NULL) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!");
         return $this->redirect(array('dcmd-service/view', 'id' => $model->svr_id));
     }
     $app_id = $model->app_id;
     $svr_id = $model->svr_id;
     $arch_name = $model->arch_name;
     $this->oprlog(3, "delete arch:" . $arch_name);
     $model->delete();
     Yii::$app->getSession()->setFlash('success', '删除成功!');
     ///删除文件
     $base_path = dirname(__DIR__) . "/web/app_image/svr_";
     $img_path = $base_path . $arch_name . '_' . $svr_id . '.jpg';
     if (file_exists($img_path)) {
         unlink($img_path);
     }
     return $this->redirect(['dcmd-service/view', 'id' => $svr_id]);
 }
 public function actionRun($id, $ips = "")
 {
     ///判断用户权限
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $gstr = " gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         foreach ($query as $item) {
             $gstr .= "," . $item['gid'];
         }
         $gstr .= ")";
         $query = DcmdGroupRepeatCmd::find()->where($gstr)->asArray()->all();
         if (count($query) == 0) {
             Yii::$app->getSession()->setFlash('error', '对不起, 你没有权限!');
             return $this->redirect(['dcmd-opr-cmd-repeat-exec/index']);
         }
     }
     $opr = $this->findModel($id);
     $change = true;
     if ($opr->arg_mutable == "0") {
         $change = false;
     }
     $arg = $this->getArg($opr->arg, $change, $opr->opr_cmd);
     if ($opr->ip_mutable == "1" && $ips != "") {
         $opr->ip = $ips;
     }
     return $this->render('run', ['opr' => $opr, 'arg' => $arg]);
 }
 function actionFinishTask()
 {
     $suc_msg = "";
     $err_msg = "";
     if (array_key_exists('selection', Yii::$app->request->post())) {
         $task_ids = Yii::$app->request->post()['selection'];
         foreach ($task_ids as $id) {
             $task = $this->findModel($id);
             if (Yii::$app->user->getIdentity()->admin != 1 && $task->opr_uid != Yii::$app->user->getId()) {
                 ///判断是否为同一产品组
                 $app = DcmdApp::findOne($task->app_id);
                 $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $app['svr_gid']]);
                 if ($query == NULL) {
                     $err_msg .= $task->task_name . ": 没有权限<br>";
                     continue;
                 }
             }
             ///删除dcmd_task_service_pool_history
             DcmdTaskServicePoolHistory::deleteAll(['task_id' => $id]);
             ///dcmd_task_node_history
             DcmdTaskNodeHistory::deleteAll(['task_id' => $id]);
             ///dcmd_command_history
             DcmdCommandHistory::deleteAll(['task_id' => $id]);
             ///dcmd_task_service_pool_attr_history
             DcmdTaskServicePoolAttrHistory::deleteAll(['task_id' => $id]);
             $task->delete();
             $this->oprlog(3, "delete history task:" . $task->task_name);
             $suc_msg .= $task->task_name . ": 删除成功<br>";
         }
     }
     if ($suc_msg != "") {
         Yii::$app->getSession()->setFlash('success', $suc_msg);
     }
     if ($err_msg != "") {
         Yii::$app->getSession()->setFlash('error', $err_msg);
     }
     $this->redirect(array('index'));
 }
 public function actionDeleteAll()
 {
     if (Yii::$app->user->getIdentity()->admin != 1) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!");
         return $this->redirect(array('index'));
     }
     if (!array_key_exists('selection', Yii::$app->request->post())) {
         Yii::$app->getSession()->setFlash('error', '未选择设备组!');
         return $this->redirect(['index']);
     }
     $select = Yii::$app->request->post()['selection'];
     $success_msg = "";
     $err_msg = "";
     foreach ($select as $k => $v) {
         $model = $this->findModel($v);
         ///判断用户是否和该设备池子属于一个系统组
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $model['gid']]);
         if ($query == NULL) {
             $err_msg .= $model['ngroup_name'] . ":没有权限删除" . "<br>";
             continue;
         }
         ///判断设备池是否为空
         $node = DcmdNode::find()->where(['ngroup_id' => $v])->one();
         if ($node) {
             $err_msg .= $model['ngroup_name'] . ':设备池子不为空,不可删除' . "<br>";
             continue;
         }
         DcmdNodeGroupAttr::deleteAll(['ngroup_id' => $model->ngroup_id]);
         $model->delete();
         $success_msg .= $model['ngroup_name'] . ":删除成功" . "<br>";
     }
     if ($success_msg != "") {
         Yii::$app->getSession()->setFlash('success', $success_msg);
     }
     if ($err_msg != "") {
         Yii::$app->getSession()->setFlash('error', $err_msg);
     }
     return $this->redirect(['index']);
 }
 /**
  * Creates a new DcmdTaskTemplate model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     ///只有管理员可以
     if (Yii::$app->user->getIdentity()->admin != 1) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "对不起,你没有权限!");
         return $this->redirect(array('dcmd-task-template/index'));
     }
     $model = new DcmdTaskTemplate();
     if (Yii::$app->request->post()) {
         ///保存并返回
         $model->load(Yii::$app->request->post());
         $query = DcmdService::findOne($model->svr_id);
         $model->svr_name = $query['svr_name'];
         $query = DcmdTaskCmd::findOne($model->task_cmd_id);
         ////Yii::$app->request->post()['task_cmd_id']);
         $model->task_cmd = $query['task_cmd'];
         $model->utime = date('Y-m-d H:i:s');
         $model->ctime = $model->utime;
         $model->opr_uid = Yii::$app->user->getId();
         $arg = array();
         foreach (Yii::$app->request->post() as $k => $v) {
             if (substr($k, 0, 3) == "Arg") {
                 $arg[substr($k, 3)] = $v;
             }
         }
         $model->task_arg = arrToXml($arg);
         if ($model->save()) {
             Yii::$app->getSession()->setFlash('success', "添加成功!");
             $this->oprlog(1, "insert task template:" . $model->task_tmpt_name);
             return $this->redirect(['view', 'id' => $model->task_tmpt_id]);
         }
     }
     ///获取admin用户所在系统组的产品
     $temp = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
     $sys_ar = array();
     foreach ($temp as $item) {
         $sys_ar[$item['gid']] = $item['gid'];
     }
     ///获取产品信息
     $query = DcmdApp::find()->asArray()->all();
     $app = array("" => "");
     foreach ($query as $item) {
         if (array_key_exists($item['sa_gid'], $sys_ar)) {
             $app[$item['app_id']] = $item['app_name'];
         }
     }
     ///获取任务脚本
     $query = DcmdTaskCmd::find()->asArray()->all();
     $task_cmd = array("" => "");
     if ($query) {
         foreach ($query as $item) {
             $task_cmd[$item['task_cmd_id']] = $item['ui_name'];
         }
     }
     return $this->render('create', ['model' => $model, 'app' => $app, 'task_cmd' => $task_cmd]);
 }
 /**
  * Deletes an existing DcmdUser model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @param integer $id
  * @return mixed
  */
 public function actionDelete($id)
 {
     if (Yii::$app->user->getIdentity()->admin != 1 || Yii::$app->user->getIdentity()->sa != 1) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "对不起,你没有权限!");
         return $this->redirect(array('index'));
     }
     ///delete from dcmd_user_group
     DcmdUserGroup::deleteAll("uid=" . $id);
     $model = $this->findModel($id);
     $this->oprlog(3, "delete user:" . $model->username);
     $model->delete();
     Yii::$app->getSession()->setFlash('success', '删除成功!');
     return $this->redirect(['index']);
 }
 public function userGroupName($gid)
 {
     $ret = DcmdUserGroup::findOne($gid);
     if ($ret) {
         return $ret['gname'];
     }
     return "";
 }
 /**
  * Finds the DcmdUserGroup model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return DcmdUserGroup the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = DcmdUserGroup::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
 public function actionDeleteAll()
 {
     if (!array_key_exists('selection', Yii::$app->request->post())) {
         Yii::$app->getSession()->setFlash('error', '未选择服务!');
         return $this->redirect(['index']);
     }
     $select = Yii::$app->request->post()['selection'];
     $ret_msg = "";
     foreach ($select as $k => $id) {
         $model = $this->findModel($id);
         ///仅仅用户与该应用在同一个系统组才可以操作
         $temp = DcmdApp::findOne($model['app_id']);
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $temp['sa_gid']]);
         if ($query == NULL) {
             $ret_msg .= "没有权限删除:" . $model->ip . " ";
             continue;
         }
         $model->delete();
         $ret_msg .= '删除成功:' . $model->ip . " ";
     }
     Yii::$app->getSession()->setFlash('success', $ret_msg);
     return $this->redirect(['index']);
 }
 public function actionRun($opr_cmd_id, $ips = "")
 {
     ///判断用户权限
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         $gstr = " opr_cmd_id = " . $opr_cmd_id . " and gid in (0";
         foreach ($query as $item) {
             $gstr .= "," . $item['gid'];
         }
         $gstr .= ")";
         $query = DcmdGroupCmd::find()->where($gstr)->asArray()->all();
         if (count($query) == 0) {
             Yii::$app->getSession()->setFlash('error', '对不起, 你没有权限!');
             return $this->redirect(['dcmd-opr-cmd/index']);
         }
     }
     $opr = $this->findModel($opr_cmd_id);
     $arg = $this->showTaskArg($opr_cmd_id);
     return $this->render('run', ['opr' => $opr, 'arg' => $arg, 'ips' => $ips]);
 }
 function actionFinishTask()
 {
     $suc_msg = "";
     $err_msg = "";
     if (array_key_exists('selection', Yii::$app->request->post())) {
         $task_ids = Yii::$app->request->post()['selection'];
         $query = DcmdCenter::findOne(['master' => 1]);
         if ($query) {
             list($host, $port) = explode(':', $query["host"]);
             foreach ($task_ids as $tid) {
                 $task = $this->findModel($tid);
                 if (Yii::$app->user->getIdentity()->admin != 1 && $task->opr_uid != Yii::$app->user->getId()) {
                     ///判断是否为同一产品组
                     $app = DcmdApp::findOne($task->app_id);
                     $ug = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $app['svr_gid']]);
                     if ($ug == NULL) {
                         $err_msg .= $task->task_name . ": 没有权限<br>";
                         continue;
                     }
                 }
                 $reply = execTaskCmd($host, $port, $tid, Yii::$app->user->getId(), 5);
                 if ($reply->getState() == 0) {
                     $suc_msg .= $task->task_name . ": 完成成功<br>";
                 } else {
                     $err_msg .= $task->task_name . ": 完成失败 " . $reply->getErr() . "<br>";
                 }
             }
         } else {
             $err_msg = "无法获取Center!";
         }
     }
     if ($suc_msg != "") {
         Yii::$app->getSession()->setFlash('success', $suc_msg);
     }
     if ($err_msg != "") {
         Yii::$app->getSession()->setFlash('error', $err_msg);
     }
     $this->redirect(array('index'));
 }
 /**
  * Deletes an existing DcmdGroup model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @param integer $id
  * @return mixed
  */
 public function actionDelete($id)
 {
     /*$node = DcmdUserGroup::find()->where(['gid' => $id])->one();
       if($node) {
         Yii::$app->getSession()->setFlash('error', '用户组内有用户,不可删除!');
       }else {
         $this->findModel($id)->delete();
         Yii::$app->getSession()->setFlash('success', '删除成功!');
       }*/
     if (Yii::$app->user->getIdentity()->admin != 1 || Yii::$app->user->getIdentity()->sa != 1) {
         Yii::$app->getSession()->setFlash('success', NULL);
         Yii::$app->getSession()->setFlash('error', "Sorry, You don't have priority!");
         return $this->redirect(array('index'));
     }
     DcmdUserGroup::deleteAll("gid=" . $id);
     DcmdGroupCmd::deleteAll('gid=' . $id);
     DcmdGroupRepeatCmd::deleteAll('gid=' . $id);
     $model = $this->findModel($id);
     $this->oprlog(3, "delete group:" . $model->gname);
     $model->delete();
     Yii::$app->getSession()->setFlash('success', '删除成功!');
     return $this->redirect(['index']);
 }