/setting
API¶
설정관련 URL 은 아래와 같다.
http://{M2-IP:env.manager.api.port}/setting/...
See also
env.manager.api.port
- api
로컬 설정 배포¶
수정된 로컬설정파일 /usr/local/m2/setting.json
을 서비스에 반영한다.
GET /setting/deploy/local
Response code |
설명 |
---|---|
|
|
env 를 제외한 모든 설정을 무중단으로 서비스에 반영된다.
Note
설정이 배포될 때마다 info 에 변경사항이 기록된다.
설정 확인¶
서비스 중인 설정파일을 확인한다.
GET /setting/setting.json
Response code |
설명 |
---|---|
|
성공 |
|
setting.json 이 로딩되지 않았음 (최초 로딩시) |
설정 다운로드¶
현재 로딩된 설정 패키지를 다운로드 한다.
GET /setting/download
Response code |
설명 |
---|---|
|
성공 |
|
실패. 설정백업 내역은 존재하나 백업파일을 찾을 수 없음 |
|
실패. 설정백업 기능이 비활성화되어 있음 |
|
실패. 설정백업 히스토리를 찾을 수 없음 |
응답헤더 Content-Type
은 application/x-compressed
이다.
HTTP/1.1 200 OK
...
Content-Type: application/x-compressed
설정 업로드¶
설정 또는 설정패키지를 POST
메소드로 전송한다.
# 다음 API는 동일하다.
POST /setting/upload
POST /setting/import
|
Body 데이터 |
---|---|
|
|
|
|
# 설정 패키지 업로드
POST /setting/upload
Content-Length: 16455
Content-Type: multipart/form-data; boundary=......
... 바이너리 ...
# setting.json 업로드
POST /setting/import
Content-Length: 1045
Content-Type: application/json
{
... setting.json ...
}
Response code |
설명 |
---|---|
|
성공 |
|
실패 |
특히 설정패키지를 업로드하는 경우 Content-Length
헤더와 Content-Type: multipart/form-data
헤더가 명확하게 선언되어 있어야 한다.
업로드가 완료되면 압축을 해지한 뒤 전체 설정을 갱신한다. Multipart방식에서는 settingFile
을 기본 이름으로 사용한다.
<form enctype="multipart/form-data" action="http://127.0.0.1:10040/setting/upload" method="POST">
<input name="settingFile" type="file" />
<input type="submit" value="Upload" />
</form>
API를 이용해 설정을 변경한다. 정상적으로 반영된 경우 200 OK
로 응답하지만, 실패한 경우 500 Internal Server Error
로 응답한다.
{
"version": "22.2.0",
"method": "/setting/upload",
"status": "fail",
"error": 1,
"reason": null
}
result
에러코드는 다음과 같다.
error |
설명 |
---|---|
0 |
성공 |
1 |
업로드 설정패키지가 존재하지 않는다. |
2 |
설정패키지 압축 해제를 실패 했다. |
3 |
|
4 |
|
5 |
리소스 파일이 존재하지 않는다. 경로는 |
설정 유효성 검사¶
설정 업로드 와 동일하지만 서비스에 반영하지 않고 유효성만 검사한다.
POST /setting/validate
형상과 setting.json
2가지 Content-Type
헤더를 지원한다.
# 설정 패키지 업로드
POST /setting/validate
Content-Length: 16455
Content-Type: multipart/form-data; boundary=......
... 바이너리 ...
# setting.json 업로드
POST /setting/validate
Content-Length: 1045
Content-Type: application/json
{
... setting.json ...
}
Response code |
설명 |
---|---|
|
성공 |
|
실패 |
응답은 설정 업로드 와 완전히 동일하다.
Note
application/json
인 경우 https 인증서등 연결된 파일은 문법/DTD만 검사한다.
가상호스트 단위 API¶
setting.json
단위가 아닌 가상호스트 단위 API로 서비스 운용이 가능하다.
가상호스트 생성¶
가상호스트를 생성한다.
POST /setting/vhosts
Content-Length: 1065
Content-Type: application/json
{
"name": "example.com",
"origin": {
"address": ["example.com"]
}
}
Content-Type
은 반드시 application/json
이여야 하며 hosting 의 개별 가상호스트 단위로 설정한다.
Response code |
설명 |
---|---|
|
성공 |
|
요청 body가 올바르지 않음 |
|
생성하려는 가상호스트가 이미 구성되어 있음 |
|
설정 갱신 중 에러 발생 |
|
|
정상적으로 추가된 경우 다음과 같이 200 OK
로 응답한다.
{
"version": "1.5.0",
"method": "/setting/vhosts/create",
"status": "OK",
"result": "created"
}
실패할경우 위에서 정의한 응답코드와 함께 reason
이 제공된다.
# 400 Bad Request
{
"version": "1.5.0",
"method": "/setting/vhosts/create",
"status": "fail",
"reason": "Invalid Post Body."
}
가상호스트 열람¶
가상호스트 설정을 열람한다.
GET /setting/vhosts/example.com
Response code |
설명 |
---|---|
|
성공 |
|
요청 |
|
조회하려는 가상호스트가 없음 |
|
설정 조회 중 에러 발생 |
|
|
정상적으로 조회된 경우 다음과 같이 200 OK
로 응답한다,
{
"version": "1.5.0",
"method": "/setting/vhosts/get",
"status": "OK",
"result": {
"name": "example.com",
"origin": {
"address": ["example.com"]
}
}
}
실패할 경우 위에서 정의한 응답코드와 함께 reason
이 제공된다.
# 404 Not found
{
"version": "1.5.0",
"method": "/setting/vhosts/get",
"status": "fail",
"reason": "Not found vhosts. 'example.com'"
}
가상호스트 삭제¶
가상호스트를 삭제한다.
DELETE /setting/vhosts/example.com
Response code |
설명 |
---|---|
|
성공 |
|
요청 |
|
설정 갱신 중 에러 발생 |
|
|
정상적으로 삭제된 경우 다음과 같이 200 OK
로 응답한다,
{
"version": "1.5.0",
"method": "/setting/vhosts/delete",
"status": "OK",
"result": "deleted"
}
실패할 경우 위에서 정의한 응답코드와 함께 reason
이 제공된다.
# 500 Internal Server Error
{
"version": "1.5.0",
"method": "/setting/vhosts/delete",
"status": "fail",
"reason": "Failed to reload setting."
}
가상호스트 변경¶
가상호스트 설정을 변경한다.
PUT /setting/vhosts/example.com
Content-Length: 1065
Content-Type: application/json
{
"name": "example.com",
"origin": {
"address": ["example.com"]
}
}
Response code |
설명 |
---|---|
|
성공 |
|
요청 |
|
변경하려는 가상호스트가 존재하지 않음 |
|
설정 갱신 중 에러 발생 |
|
|
정상적으로 변경된 경우 다음과 같이 200 OK
로 응답한다,
{
"version": "1.5.0",
"method": "/setting/vhosts/edit",
"status": "OK",
"result": "edited"
}
실패할 경우 위에서 정의한 응답코드와 함께 reason
이 제공된다.
# 404 Not Found
{
"version": "1.5.0",
"method": "/setting/vhosts/edit",
"status": "fail",
"reason": "Empty vhost name. 'example.com'"
}
설정 백업¶
현재 로딩된 설정을 백업한다.
GET /setting/deploy/backup
Response code |
설명 |
---|---|
|
|
See also
설정 히스토리¶
과거 로딩된 설정 목록을 조회한다.
GET /setting/history
Response code |
설명 |
---|---|
|
응답 Body의 |
응답헤더 Content-Type
은 application/json
이다.
{
"history": [
{
"id":1,
"conf-date":"2020-05-05",
"conf-time":"09:00:00",
"type":"loaded",
"size":8042,
"hash":"20200505_090000_568c17d39e16f820e87974ca703e3c05",
"ver":"1.0.0"
}
]
}
See also
설정 되돌리기¶
과거 설정으로 되돌린다.
GET /setting/restore/:hash-id
Response code |
설명 |
---|---|
|
|
응답헤더 Content-Type
은 application/json
이다.
{
"version": "1.4.2",
"method": "reloadall",
"status": "OK",
"result": 0
}
result
에러코드는 다음과 같다.
error |
설명 |
---|---|
0 |
성공 |
1 |
HASH-ID에 해당하는 설정패키지가 존재하지 않는다.. |
2 |
설정패키지 압축 해제를 실패 했다. |
3 |
|
4 |
|
See also
라이선스 교체 (무중단 API)¶
POST
메소드로 라이선스를 업로드하여 중단없이 교체한다.
POST /setting/license/update
POST /setting/license/update?force=true
# force 옵션이 없다면 key 값을 넣어 다시 호출해준다.
GET /setting/license/update?confirm={key}
Note
curl
예제는 다음과 같다.
curl -X POST -F "file=@temp.xml" http://127.0.0.0/setting/license/update
curl --location 'http://127.0.0.1/setting/license/update' --header 'Content-Type: application/xml' --data '<License>...</License>'
Response code |
설명 |
---|---|
|
|
응답헤더 Content-Type
은 application/json
이다.
# 라이선스 교체가 되는 경우 변경내용을 고지한다.
{
"key": "license__cbezHbcy",
"diff": {
"SerialNumber": {
"_asis_": "KR12345678",
"_tobe_": "KR87654321"
},
...
}
}
# 동일 라이선스
{
"key": "license__cbezHbcy",
"diff": {}
}
# 업데이트 성공
{
"message": "Done"
}
실패 메시지는 아래와 같다.
# XML 포맷이 아닌 경우
{
"message": "Cannot parse license - Non-whitespace before first tag.\nLine: 0\nColumn: 1\nChar: {"
}
# Signature 검증 실패
{
"message": "Invalid signature"
}
# 만료된 라이센스
{
"message": "Expired license"
}
See also