/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

설명

200

호출됨. 응답 Body의 status 로 결과 제공
  • OK 성공

  • Fail 실패

env 를 제외한 모든 설정을 무중단으로 서비스에 반영된다.

Note

설정이 배포될 때마다 info 에 변경사항이 기록된다.

설정 확인

서비스 중인 설정파일을 확인한다.

GET /setting/setting.json

Response code

설명

200

성공

404

setting.json 이 로딩되지 않았음 (최초 로딩시)

설정 다운로드

현재 로딩된 설정 패키지를 다운로드 한다.

GET /setting/download

Response code

설명

200

성공

404

실패. 설정백업 내역은 존재하나 백업파일을 찾을 수 없음

406

실패. 설정백업 기능이 비활성화되어 있음

500

실패. 설정백업 히스토리를 찾을 수 없음

응답헤더 Content-Typeapplication/x-compressed 이다.

HTTP/1.1 200 OK
...
Content-Type: application/x-compressed

설정 업로드

설정 또는 설정패키지를 POST 메소드로 전송한다.

# 다음 API는 동일하다.
POST /setting/upload
POST /setting/import

Content-Type

Body 데이터

multipart/form-data

setting.json 및 연결된 모든 리소스 파일(인증서 등)

application/json

setting.json

# 설정 패키지 업로드
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

설명

200

성공

500

실패

특히 설정패키지를 업로드하는 경우 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

setting.json 파일이 로딩 되지 않는다.

4

setting.json 파일의 내용이 잘못되었다. 잘못된 영역은 reason 에 명시된다.

5

리소스 파일이 존재하지 않는다. 경로는 reason 에 명시된다.

설정 유효성 검사

설정 업로드 와 동일하지만 서비스에 반영하지 않고 유효성만 검사한다.

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

설명

200

성공

500

실패

응답은 설정 업로드 와 완전히 동일하다.

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

설명

200

성공

400

요청 body가 올바르지 않음

409

생성하려는 가상호스트가 이미 구성되어 있음

500

설정 갱신 중 에러 발생

510

setting.json 로딩중 에러 발생

정상적으로 추가된 경우 다음과 같이 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

성공

400

요청 name 이 없음

404

조회하려는 가상호스트가 없음

500

설정 조회 중 에러 발생

510

setting.json 로딩중 에러 발생

정상적으로 조회된 경우 다음과 같이 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

성공

400

요청 name 이 없음

500

설정 갱신 중 에러 발생

510

setting.json 로딩중 에러 발생

정상적으로 삭제된 경우 다음과 같이 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

성공

400

요청 name 이 없거나 요청 body가 올바르지 않음

404

변경하려는 가상호스트가 존재하지 않음

500

설정 갱신 중 에러 발생

510

setting.json 로딩중 에러 발생

정상적으로 변경된 경우 다음과 같이 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

설명

200

응답 Body의 status 로 결과 제공
  • OK 성공

  • Fail 실패

See also

설정 히스토리

과거 로딩된 설정 목록을 조회한다.

GET /setting/history

Response code

설명

200

응답 Body의 history 로 결과 제공

응답헤더 Content-Typeapplication/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

설명

200

응답 Body의 status 로 결과 제공
  • OK 성공

  • Fail 실패

응답헤더 Content-Typeapplication/json 이다.

{
    "version": "1.4.2",
    "method": "reloadall",
    "status": "OK",
    "result": 0
}

result 에러코드는 다음과 같다.

error

설명

0

성공

1

HASH-ID에 해당하는 설정패키지가 존재하지 않는다..

2

설정패키지 압축 해제를 실패 했다.

3

setting.json 파일이 로딩 되지 않는다. 이유는 reason 필드에 노출된다.

4

setting.json 파일의 내용이 잘못되었다. 이유는 reason 필드에 노출된다.

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

설명

200

응답 Body의 status 로 결과 제공
  • OK 성공

  • Fail 실패

응답헤더 Content-Typeapplication/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"
}