feat(settings): 코어 아웃바운드 HTTP 프록시 설정 추가

접속 IP 를 제한하는 결제사 API 를 로컬·스테이징에서 연동하려면 서버가
내보내는 요청의 출발지 IP 를 바꿔야 한다. 브라우저 프록시로는 바뀌지 않는
축이라 코어 환경설정으로 도입한다.

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

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

저장 전 연결 테스트는 저장값이 아니라 제출값을 검사하고, 그 프록시를
거쳤을 때 외부에 보이는 IP 를 함께 보고한다. 운영자가 결제사에 등록할
값이라 저장하고 나서 되짚지 않도록 했다. 적용과 같은 조립을 거치므로
확인한 구성과 저장 후 적용되는 구성이 어긋나지 않는다.
This commit is contained in:
HeuJung
2026-08-20 17:01:27 +09:00
parent 0e8b625436
commit a7b7c64573
55 changed files with 2040 additions and 30 deletions
@@ -4,6 +4,13 @@
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며,
[Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다.
## [1.0.7] - 2026-08-20
### Added
- 아웃바운드 프록시 설정의 검증 메시지와 항목명 일본어 번역을 추가했습니다 (`settings.outbound_proxy_*`, `attributes.outbound_proxy*`).
- 아웃바운드 프록시 연결 테스트 결과 안내 문구의 일본어 번역을 추가했습니다 (`settings.outbound_proxy_test_*`).
## [1.0.6] - 2026-08-19
### Changed
@@ -76,6 +76,12 @@ return [
'driver_test_partial' => '一部のドライバ接続テストが失敗しました。',
'driver_test_error' => 'ドライバ接続テスト中にエラーが発生しました。',
'unknown_driver' => '不明なドライバです。',
// アウトバウンドプロキシ接続テストメッセージ
'outbound_proxy_test_success' => 'プロキシ接続に成功しました。外部サービスにはこの IP アドレスとして見えます。',
'outbound_proxy_test_failed' => 'プロキシ経由で接続できませんでした。アドレスとプロキシサーバーの状態を確認してください。',
'outbound_proxy_test_invalid_url' => 'プロキシアドレスの形式が正しくありません。',
'outbound_proxy_test_no_lookup_url' => '送信元 IP の照会先が設定されていないため確認できません。',
's3_test_success' => 'S3バケットに正常に接続されました。',
's3_test_failed' => 'S3バケットへの接続に失敗しました。',
's3_missing_config' => 'S3設定が不足しています。(バケット、リージョン、アクセスキー、シークレットキー)',
@@ -898,6 +898,15 @@ return [
'debug_mode_boolean' => 'デバッグモードはtrueまたはfalse値である必要があります。',
'sql_query_log_required' => 'SQLクエリログ設定を選択してください。',
'sql_query_log_boolean' => 'SQLクエリログはtrueまたはfalse値である必要があります。',
// アウトバウンド HTTP プロキシ
'outbound_proxy_required' => 'アウトバウンドプロキシアドレスを入力してください。',
'outbound_proxy_string' => 'アウトバウンドプロキシアドレスは文字列である必要があります。',
'outbound_proxy_max' => 'アウトバウンドプロキシアドレスは:max文字を超えることはできません。',
'outbound_proxy_invalid' => 'アウトバウンドプロキシアドレスの形式が正しくありません。使用可能な形式: :schemes (例: socks5h://127.0.0.1:1080)',
'outbound_proxy_bypass_array' => 'プロキシ除外リストは配列である必要があります。',
'outbound_proxy_bypass_item_string' => 'プロキシ除外項目は文字列である必要があります。',
'outbound_proxy_bypass_item_max' => 'プロキシ除外項目は:max文字を超えることはできません。',
'core_update_github_url_invalid' => 'GitHubリポジトリURLの形式が正しくありません。',
'core_update_github_url_max' => 'GitHubリポジトリURLは500字を超えることはできません。',
'core_update_github_token_max' => 'GitHubアクセストークンは500字を超えることはできません。',
@@ -1161,6 +1170,8 @@ return [
'seo_sitemap_cache_ttl' => 'SEO サイトマップキャッシュ保持時間',
'debug_mode' => 'デバッグモード',
'sql_query_log' => 'SQL クエリログ',
'outbound_proxy' => 'アウトバウンドプロキシアドレス',
'outbound_proxy_bypass' => 'プロキシ除外リスト',
'core_update_github_url' => 'コア更新 GitHub アドレス',
'core_update_github_token' => 'コア更新 GitHub トークン',
'geoip_enabled' => 'GeoIP の使用',
@@ -12,7 +12,7 @@
"en": "G7 core Japanese language pack (bundled)",
"ja": "G7 コア 日本語 言語パック(バンドル)"
},
"version": "1.0.6",
"version": "1.0.7",
"license": "MIT",
"scope": "core",
"target_identifier": null,
@@ -4,6 +4,12 @@
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며,
[Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다.
## [1.0.6] - 2026-08-20
### Added
- 환경설정 > 고급의 아웃바운드 프록시 설정 항목명·설명·입력 안내와 연결 테스트 버튼 라벨의 일본어 번역을 추가했습니다.
## [1.0.5] - 2026-08-19
### Added
@@ -1786,6 +1786,13 @@
"dev_dashboard": "開発ダッシュボード",
"sql_query_log": "SQLクエリログ",
"sql_query_log_desc": "実行されたSQLクエリをログに記録します。ログファイルの場所: /storage/logs/query.log",
"outbound_proxy": "アウトバウンドプロキシアドレス",
"outbound_proxy_desc": "サイトが外部に送信するすべてのリクエスト(決済承認、コア更新確認、通知送信など)がこのサーバーを経由します。接続 IP を制限する外部サービスと連携する際に使用します。空欄の場合は使用しません。",
"outbound_proxy_placeholder": "socks5h://127.0.0.1:1080",
"outbound_proxy_bypass": "プロキシ除外リスト",
"outbound_proxy_bypass_desc": "このリストにあるアドレスへのリクエストはプロキシを経由せず直接送信されます。内部ネットワークのアドレスを登録すると不要な迂回を減らせます。",
"outbound_proxy_bypass_placeholder": "アドレスを入力して Enter",
"outbound_proxy_test": "接続テスト",
"core_update": "アップデート設定",
"core_update_desc": "コアおよび拡張(モジュール·プラグイン·テンプレート)アップデートで使用するGitHub認証情報を設定します。",
"core_update_github_url": "GitHubリポジトリURL",
@@ -12,7 +12,7 @@
"en": "G7 template (sirsoft-admin_basic) Japanese language pack (bundled)",
"ja": "G7 テンプレート (sirsoft-admin_basic) 日本語 言語パック(バンドル)"
},
"version": "1.0.5",
"version": "1.0.6",
"license": "MIT",
"scope": "template",
"target_identifier": "sirsoft-admin_basic",