From 657c35f8768b5b6615429da84a4f3d3a044b59af Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 28 Apr 2018 23:36:35 +0900 Subject: [PATCH] =?UTF-8?q?git=20tree=20=EC=A7=80=EC=A0=95=EC=9D=B4=20?= =?UTF-8?q?=EC=95=88=EB=90=98=EB=8A=94=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=9C=A0=EC=A0=80=EB=8A=94=20=EA=B8=B0=EC=A1=B4?= =?UTF-8?q?=EC=97=90=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=90=9C=20?= =?UTF-8?q?=EA=B0=92=EC=9D=84=20=EC=9D=B4=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- j_updateServer.php | 42 ++++++++++++++++++++++++++++-------------- js/admin_server.js | 2 +- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/j_updateServer.php b/j_updateServer.php index 76115a2e..5d483b09 100644 --- a/j_updateServer.php +++ b/j_updateServer.php @@ -19,7 +19,7 @@ function getVersion($target=null){ } $session = Session::requireLogin(null)->setReadOnly(); -if($session->userGrade < 6){ +if($session->userGrade < 5){ Json::die([ 'result'=>false, 'reason'=>'권한이 충분하지 않습니다' @@ -28,12 +28,13 @@ if($session->userGrade < 6){ $request = $_POST + $_GET; +$rootDB = RootDB::db(); $tmpFile = 'd_log/arc.zip'; $v = new Validator($request); + $v->rule('required', [ - 'server', - 'target' + 'server' ])->rule('regex', 'target', '/^[0-9a-zA-Z^{}\\/\-_,.@]+$/'); if(!$v->validate()){ @@ -43,8 +44,26 @@ if(!$v->validate()){ ]); } +$target = Util::getReq('target'); + $server = basename($request['server']); -$target = $request['target']; +if($session->userGrade <= 5 || !$target){ + $target = Json::decode($rootDB->queryFirstField('SELECT `key`=%s FROM `config`', "git_path_$server")); + if($target){ + $target = $target[0]; + } +} +else{ + $target = $request['target']; +} + +if(!$target){ + Json::die([ + 'result'=>false, + 'reason'=>'git -ish target이 제대로 지정되지 않았습니다.' + ]); +} + $baseServerName = Util::array_last_key(AppConf::getList()); @@ -99,8 +118,6 @@ if($server == $baseServerName){ ], true ); - //AppConf::getList()[$server]->closeServer(); - Json::die([ 'server'=>$server, 'result'=>true, @@ -109,13 +126,6 @@ if($server == $baseServerName){ } -exec("git fetch 2>&1", $output); -if($output){ - Json::die([ - 'result'=>false, - 'reason'=>'git fetch 작업 : '.join(', ', $output) - ]); -} $command = sprintf('git archive --format=zip -o %s %s', escapeshellarg($tmpFile), escapeshellarg($targetDir)); exec("$command 2>&1", $output); if($output){ @@ -143,7 +153,7 @@ if(!$zip->extractTo($server)){ $zip->close(); @unlink($tmpFile); -$version = getVersion(); +$version = getVersion($target); $result = Util::generateFileUsingSimpleTemplate( __DIR__.'/'.$server.'/d_setting/VersionGit.orig.php', __DIR__.'/'.$server.'/d_setting/VersionGit.php',[ @@ -151,6 +161,10 @@ $result = Util::generateFileUsingSimpleTemplate( ], true ); +$rootDB->insertUpdate('config', [ + "key" => "git_path_$server", + "value" =>Json::encode([$target, $version]) +]); //AppConf::getList()[$server]->closeServer(); diff --git a/js/admin_server.js b/js/admin_server.js index 459aa279..e8ab64cc 100644 --- a/js/admin_server.js +++ b/js/admin_server.js @@ -20,7 +20,7 @@ function serverUpdate(caller){ var server = $tr.data('server_name'); var isRoot = $tr.data('is_root'); - var target = 'master'; + var target = 'origin/master'; if(typeof isRoot !== 'boolean'){ isRoot = (isRoot != 'false');