diff --git a/.vscode/settings.json b/.vscode/settings.json
index bd031fea..a392abc4 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -7,10 +7,18 @@
"**/.DS_Store": true,
"**/logs/*.txt": true,
"**/session/sess*":true,
+ "/che":true,
+ "/kwe":true,
+ "/pwe":true,
+ "/twe":true,
},
"search.exclude": {
"e_lib/*":true,
- "vendor/*":true
+ "vendor/*":true,
+ "/che":true,
+ "/kwe":true,
+ "/pwe":true,
+ "/twe":true,
},
}
\ No newline at end of file
diff --git a/hwe/d_setting/VersionGit.orig.php b/hwe/d_setting/VersionGit.orig.php
index 9345b263..bedbba01 100644
--- a/hwe/d_setting/VersionGit.orig.php
+++ b/hwe/d_setting/VersionGit.orig.php
@@ -5,4 +5,5 @@ class VersionGit{
public static $version = '_tK_verionGit_';
private function __construct(){}
-}
\ No newline at end of file
+}
+//{"version":"_tK_verionGit_"}
diff --git a/i_entrance/j_server_get_admin_status.php b/i_entrance/j_server_get_admin_status.php
index 05f36bff..a89111c4 100644
--- a/i_entrance/j_server_get_admin_status.php
+++ b/i_entrance/j_server_get_admin_status.php
@@ -17,6 +17,8 @@ $result = [];
$server = [];
+$rootServer = end(AppConf::getList())->getShortName();
+
foreach (AppConf::getList() as $setting) {
$serverColor = $setting->getColor();
$serverKorName = $setting->getKorName();
@@ -28,18 +30,24 @@ foreach (AppConf::getList() as $setting) {
$state = [
'valid'=>false,
'run'=>false,
+ 'installed'=>false,
+ 'version'=>$setting->getVersion(),
'reason'=>'디렉토리 없음'
];
} elseif (!file_exists($serverPath.'/index.php')) {
$state = [
'valid'=>false,
'run'=>false,
+ 'installed'=>false,
+ 'version'=>$setting->getVersion(),
'reason'=>'index.php 없음'
];
} elseif (!$setting->isExists()) {
$state = [
'valid'=>false,
'run'=>false,
+ 'installed'=>true,
+ 'version'=>$setting->getVersion(),
'reason'=>'설정 파일 없음'
];
} elseif (!$setting->isRunning()) {
@@ -47,6 +55,8 @@ foreach (AppConf::getList() as $setting) {
$state = [
'valid'=>true,
'run'=>false,
+ 'installed'=>true,
+ 'version'=>$setting->getVersion(),
'reason'=>'폐쇄됨'
];
} else {
@@ -54,6 +64,8 @@ foreach (AppConf::getList() as $setting) {
$state = [
'valid'=>true,
'run'=>true,
+ 'installed'=>true,
+ 'version'=>$setting->getVersion(),
'reason'=>'운영중'
];
}
@@ -62,6 +74,7 @@ foreach (AppConf::getList() as $setting) {
'name' => $serverDir,
'korName' => $serverKorName,
'color' => $serverColor,
+ 'isRoot' => $serverDir == $rootServer
]);
$server[] = $state;
}
diff --git a/i_entrance/templates/server_panel.php b/i_entrance/templates/server_panel.php
index 7846dc46..6d4133c9 100644
--- a/i_entrance/templates/server_panel.php
+++ b/i_entrance/templates/server_panel.php
@@ -1,19 +1,21 @@
서 버 관 리
-
+
+
-
-
-
+
+
+
-
+
| 서버 |
상태 |
+ 버전 |
명령 선택 |
diff --git a/j_updateServer.php b/j_updateServer.php
index 0b2d533f..c5d173a3 100644
--- a/j_updateServer.php
+++ b/j_updateServer.php
@@ -148,6 +148,7 @@ $result = Util::generateFileUsingSimpleTemplate(
);
Json::die([
+ 'server'=>$server,
'result'=>true,
'version'=>$version
]);
\ No newline at end of file
diff --git a/js/admin_server.js b/js/admin_server.js
index 3205e444..459aa279 100644
--- a/js/admin_server.js
+++ b/js/admin_server.js
@@ -1,18 +1,62 @@
var serverAdminTemplate = '\
-\
+
\
| <%korName%>(<%name%>) | \
<%status%> | \
+ <%version%> | \
| \
| \
| \
- | \
+ | \
| \
| \
- | \
+ | \
\
';
+function serverUpdate(caller){
+ var $caller = $(caller);
+ var $tr = $caller.parents('tr');
+ var server = $tr.data('server_name');
+ var isRoot = $tr.data('is_root');
+
+ var target = 'master';
+
+ if(typeof isRoot !== 'boolean'){
+ isRoot = (isRoot != 'false');
+ };
+
+ if(isRoot){
+ if(!confirm('서버 라이브러리, 루트 서버에 대해 git pull을 실행합니다.')){
+ return;
+ }
+ }
+ else{
+ target = prompt('가져올 git tree-ish 명을 입력해주세요.', target)
+ if(!target){
+ return;
+ }
+
+ }
+
+ $.ajax({
+ type:'post',
+ url:'../j_updateServer.php',
+ dataType:'json',
+ data:{
+ server: server,
+ target: target
+ }
+ }).then(function(response) {
+ if(response.result) {
+ alert('{0} 서버가 {1} 버전으로 업데이트 되었습니다.'.format(response.server, response.version));
+ location.reload();
+ } else {
+ alert(response.reason);
+ }
+ }
+ );
+}
function drawServerAdminList(serverList){
var $table = $('#server_admin_list');
@@ -35,6 +79,9 @@ function drawServerAdminList(serverList){
if(!server.valid){
$tr.find('.valid_if_set').css('background','#333333').prop('disabled', true);
}
+ if(!server.installed){
+ $tr.find('.valid_if_installed').css('background','#333333').prop('disabled', true);
+ }
});
if(serverList.grade == 5){
$table.find('.only_admin').css('background','#333333').prop('disabled', true);
diff --git a/src/sammo/FileTail.php b/src/sammo/FileTail.php
new file mode 100644
index 00000000..2e8f481d
--- /dev/null
+++ b/src/sammo/FileTail.php
@@ -0,0 +1,6 @@
+basepath = $basepath;
$this->settingFile = realpath($basepath.'/d_setting/DB.php');
$this->htaccessFile = realpath($basepath.'/.htaccess');
+ $this->versionFile = realpath($basepath.'/d_setting/VersionGit.php');
$this->korName = $korName;
$this->color = $color;
@@ -62,6 +65,30 @@ class Setting {
public function getSettingFile() {
return $this->settingFile;
}
+
+ public function getVersion(){
+ if($this->version !== null){
+ return $this->version;
+ }
+
+ if(!file_exists($this->versionFile)){
+ $this->version = 'noVersionFile';
+ return $this->version;
+ }
+
+ $tail = new FileTail($this->versionFile);
+ $version = 'noVersionJson';
+ foreach ($tail->smart(5, 100, true) as $line) {
+ if(Util::starts_with($line, '//{')){
+ $version = Json::decode(substr($line, 2));
+ $version = Util::array_get($version['version'], 'noVersionValue');
+ break;
+ }
+ }
+ $this->version = $version;
+ return $version;
+
+ }
}