Files
Gnuboard7/templates/_bundled/sirsoft-admin_basic/template.json
T
HeuJung a7b7c64573 feat(settings): 코어 아웃바운드 HTTP 프록시 설정 추가
접속 IP 를 제한하는 결제사 API 를 로컬·스테이징에서 연동하려면 서버가
내보내는 요청의 출발지 IP 를 바꿔야 한다. 브라우저 프록시로는 바뀌지 않는
축이라 코어 환경설정으로 도입한다.

게이트는 디버그 모드이며 판정은 OutboundProxy 한 곳이 소유한다. 화면의
조건부 렌더링은 편의일 뿐이라 저장 API 직접 호출을 막지 못하므로, 실질
게이트를 판정 지점에 둔다. 주입·적용 지점은 결과만 소비한다.

적용은 Http::globalOptions 전역 옵션이라 확장의 Http:: 호출까지 함께
경유한다. 외부 연동 규약상 curl 핸들을 직접 다뤄야 하는 확장은
OutboundProxy::curlOptions 로 같은 프록시를 탄다 — KG이니시스 본인인증
승인 요청과 CBT 연결 점검을 이 통로로 편입했다. CBT 의 TCP 443 확인은
원시 소켓으로는 프록시를 태울 수 없어 curl CONNECT_ONLY 로 교체했다.

저장 전 연결 테스트는 저장값이 아니라 제출값을 검사하고, 그 프록시를
거쳤을 때 외부에 보이는 IP 를 함께 보고한다. 운영자가 결제사에 등록할
값이라 저장하고 나서 되짚지 않도록 했다. 적용과 같은 조립을 거치므로
확인한 구성과 저장 후 적용되는 구성이 어긋나지 않는다.
2026-08-20 17:01:27 +09:00

150 lines
3.7 KiB
JSON

{
"identifier": "sirsoft-admin_basic",
"vendor": "sirsoft",
"name": {
"ko": "Admin Basic",
"en": "Admin Basic"
},
"version": "1.0.6",
"license": "MIT",
"description": {
"ko": "그누보드7 기본 관리자 템플릿",
"en": "Gnuboard7 default admin template"
},
"type": "admin",
"locales": [
"ko",
"en"
],
"author": {
"name": "sirsoft",
"email": "contact@sirsoft.com",
"url": "https://sirsoft.com"
},
"release_date": "2026-05-15",
"g7_version": ">=7.0.7",
"dependencies": {
"modules": {},
"plugins": {}
},
"assets": {
"css": [
"assets/css/main.css",
"assets/css/ui-system.css"
],
"js": [
"dist/components.js"
],
"fonts": [
"assets/fonts/"
],
"images": [
"assets/images/"
]
},
"components": {
"basic": [
"a",
"button",
"checkbox",
"div",
"form",
"h1",
"h2",
"h3",
"hr",
"icon",
"img",
"input",
"label",
"li",
"nav",
"p",
"section",
"select",
"span",
"svg",
"table",
"tbody",
"td",
"textarea",
"th",
"thead",
"tr",
"ul"
],
"composite": [
"action-menu",
"admin-footer",
"admin-header",
"admin-sidebar",
"alert-dialog",
"breadcrumb",
"card",
"confirm-dialog",
"data-grid",
"dialog",
"dropdown",
"empty-state",
"filter-group",
"icon-button",
"loading-spinner",
"modal",
"page-header",
"pagination",
"product-card",
"search-bar",
"stat-card",
"status-badge",
"tab-navigation",
"template-card",
"toast"
],
"layout": [
"container",
"flex",
"grid",
"section"
]
},
"preview": {
"thumbnail": "preview/thumbnail.png",
"screenshots": [
"preview/screenshot1.png",
"preview/screenshot2.png"
]
},
"error_config": {
"layouts": {
"401": "errors/401",
"403": "errors/403",
"404": "errors/404",
"500": "errors/500",
"503": "errors/503",
"maintenance": "errors/maintenance"
}
},
"github_url": "https://github.com/gnuboard/g7-template-sirsoft-admin_basic",
"github_changelog_url": "https://github.com/gnuboard/g7-template-sirsoft-admin_basic/blob/main/CHANGELOG.md",
"externals": [
{
"id": "fontawesome",
"type": "style",
"url": "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css",
"preconnect": "https://cdnjs.cloudflare.com"
},
{
"id": "pretendard",
"type": "webfont",
"url": "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css",
"preconnect": "https://cdn.jsdelivr.net",
"crossorigin": "anonymous"
},
{
"id": "flag-icons",
"type": "style",
"url": "https://cdn.jsdelivr.net/npm/flag-icons@7.2.3/css/flag-icons.min.css"
}
]
}