설정
gori는 전역 환경설정을 settings.json에, 각 프로젝트를 자체 SQLite 데이터베이스로 저장합니다. 전체 흐름은 설정 가이드를 참고하세요. 이 페이지는 키 단위 레퍼런스입니다.
저장소 레이아웃
모든 것은 GORI_HOME 아래에 있습니다($GORI_HOME이 설정되어 있고 비어 있지 않으면 그 값, 아니면 ~/.gori):
| Path | Contents |
|---|---|
settings.json |
전역 환경설정 |
gori.db |
기본 프로젝트 데이터베이스 |
projects/ |
이름이 지정된 프로젝트마다 하나의 하위 디렉터리, 각각 자체 DB 보유 |
ca/ |
루트 CA: root.crt.pem과 root.key.pem |
themes/ |
사용자 테마 |
wordlists/ |
Fuzzer / miner 워드리스트 |
active_project |
가장 최근에 사용한 프로젝트 마커 |
settings.json
settings.json은 JSON입니다. gori settings / gori settings --edit로 찾거나 편집합니다.
network
{
"network": {
"bind_host": "127.0.0.1",
"bind_port": 8070,
"upstream_proxy": ""
}
}
| Key | Type | Default | Description |
|---|---|---|---|
bind_host |
string | 127.0.0.1 |
전역 기본 리스닝 주소 (프로젝트에 net.bind_host가 없을 때 사용) |
bind_port |
integer | 8070 |
전역 기본 리스닝 포트 (프로젝트에 net.bind_port가 없을 때 사용) |
upstream_proxy |
string | "" |
전역 기본 업스트림(host:port); 비어 있으면 직접 연결. 설정 시 프로젝트 net.upstream_proxy가 우선 |
verify_upstream |
bool | true |
업스트림 TLS 인증서 검증. 토글하면 재시작 없이 실행 중인 프록시, 액티브 프로브, Repeater / Fuzzer / Miner 전송기에 즉시 반영됩니다. --insecure-upstream은 해당 세션에만 끈 상태로 시작 |
serve_landing |
bool | true |
프록시 경유가 아니라 리슨 주소로 직접 접속했을 때 내장 안내 / CA 다운로드 페이지 제공 |
connect_timeout_secs |
integer | 30 |
업스트림 연결 타임아웃(초, 최소 1) |
io_timeout_secs |
integer | 30 |
업스트림 읽기 / 쓰기 유휴 타임아웃(초, 최소 1) |
capture_max_mib |
integer | 2 |
메시지당 저장하는 본문의 최대 크기(MiB). 더 큰 본문도 바이트 그대로 전달되며, 잘리는 것은 저장본뿐이고 실제 전송 크기는 기록됩니다 |
CLI --listen / --port는 현재 프로세스에 한해서만 이 값들을 오버라이드합니다(디스크에 기록되지 않음). 프로젝트별 오버라이드를 참고하세요.
layout
영역별 TUI 레이아웃 환경설정 (커맨드 팔레트 → Settings: Layout). 두 값 모두 공장 기본값이면 생략됩니다.
{
"layout": {
"history_preview": false,
"probe_preview": false,
"issues_preview": false,
"history_list_order": "newest",
"sitemap_expand_depth": -1
}
}
| Key | Type | Default | Description |
|---|---|---|---|
history_preview |
bool | false |
History 목록 페이지가 선택한 플로우의 하단 Req|Res 미리보기를 표시 |
probe_preview |
bool | false |
Probe 목록 페이지가 선택한 이슈의 하단 요약을 표시 |
issues_preview |
bool | false |
Issues 목록 페이지가 선택한 이슈의 하단 요약을 표시 |
history_list_order |
string | "newest" |
목록 정렬: "newest"(최신이 위) 또는 "oldest"(오래된 것이 위) |
sitemap_expand_depth |
integer | -1 |
재로딩 후 Sitemap 트리가 열리는 깊이: -1 = 모두 펼침; 0-3 = 이 깊이보다 얕은 노드만 펼침 |
statusline
TUI 맨 아래에 선택적으로 추가되는 행입니다 (Preferences → General → Statusline). 활성화하면 gori가 일정 간격으로 셸 명령을 실행하고 그 stdout을 해당 행으로 렌더링합니다. Claude Code의 상태 표시줄에서 영감을 받은 커스터마이즈 가능한 상태 바라고 생각하면 됩니다. 기본적으로 비활성화되어 있으며, 변경하기 전까지는 이 섹션이 settings.json에서 생략됩니다.
{
"statusline": {
"enabled": true,
"command": "printf 'proj:%s flows:%s' \"$(jq -r .project)\" \"$(jq -r .flows)\"",
"interval": 3
}
}
| Key | Type | Default | Description |
|---|---|---|---|
enabled |
bool | false |
statusline 행 표시 여부 |
command |
string | "" |
/bin/sh -c로 실행되는 셸 명령. stdout의 첫 줄이 행이 됨 |
interval |
integer | 3 |
실행 간격 초 (최소 1) |
명령의 stdout은 ANSI/SGR 색상 이스케이프(16색, 256색, truecolor, 그리고 볼드/밑줄 등)를 파싱하므로 색상이 있는 세그먼트를 만들 수 있습니다. 첫 줄만 사용되며, 출력은 터미널 너비로 잘립니다. interval초를 초과하는 실행은 종료되고, 실패한 명령은 그냥 행을 비워 둡니다. UI를 절대 막지 않습니다.
각 실행은 라이브 세션을 설명하는 JSON 컨텍스트를 stdin으로 받으므로, 스크립트는 gori를 쿼리하지 않고도 프록시 상태를 표시할 수 있습니다:
{
"version": 1,
"project": "acme",
"capturing": true,
"flows": 1234,
"proxy": { "host": "127.0.0.1", "port": 8070, "addr": "127.0.0.1:8070" },
"upstream": ""
}
| Field | Type | Description |
|---|---|---|
version |
integer | 컨텍스트 스키마 버전 (현재 1) |
project |
string | 활성 프로젝트 이름 |
capturing |
bool | 프록시가 현재 캡처 중인지 여부 |
flows |
integer | 캡처한 플로우 수 |
proxy.host / proxy.port / proxy.addr |
string / integer / string | 프록시가 실제로 리스닝 중인 주소 |
upstream |
string | 업스트림 프록시 host:port, 직접 연결이면 비어 있음 |
display
메시지 본문과 화면 요소 설정입니다 (커맨드 팔레트 → Settings: Display). 모든 값이 기본값이면 섹션이 생략됩니다.
{
"display": {
"detail_pane": "request",
"history_time_format": "absolute",
"show_gutter": true,
"preview_body_kib": 64,
"resource_meter": true,
"terminal_title": "project"
}
}
| 키 | 타입 | 기본값 | 설명 |
|---|---|---|---|
detail_pane |
string | "request" |
History 플로우를 열었을 때 먼저 보여줄 페인: "request" 또는 "response" |
history_time_format |
string | "absolute" |
History 목록의 시간 열: "absolute"(MM-DD HH:MM:SS) 또는 "relative"(3s/5m/2h) |
show_gutter |
bool | true |
메시지 본문 뷰의 줄번호 거터 |
preview_body_kib |
integer | 64 |
History 목록 미리보기가 읽는 본문 바이트 수 (표시 전용이며 캡처 상한과는 별개) |
resource_meter |
bool | true |
하단 바 맨 오른쪽에 표시되는 gori 자신의 CPU/메모리 |
terminal_title |
string | "project" |
터미널 창 제목: "project" → Gori - <프로젝트> - <탭>, "tab" → Gori - <탭>, "off" → gori가 제목을 건드리지 않음 (셸이나 tmux에 맡김) |
hostname_overrides
전역 다이얼 맵(충돌 시 프로젝트 레벨 오버라이드가 우선). /etc/hosts와 같은 개념입니다:
{
"hostname_overrides": [
{ "host": "api.prod.internal", "ip": "10.0.0.42" }
]
}
Preferences → Network & Tabs → Network → Hostname overrides에서, 또는 프로젝트별 항목은 Project 탭에서 편집합니다. Proxy & History를 참고하세요.
env
$TOKEN 같은 토큰은 Repeater, Fuzzer, Miner, Intercept, CLI, MCP에서 전송 시점에 확장됩니다:
{
"env": {
"prefix": "$",
"vars": [
{ "key": "TOKEN", "value": "eyJhbGciOi…" }
]
}
}
| Key | Type | Default | Description |
|---|---|---|---|
prefix |
string | "$" |
토큰 접두사 ($KEY) |
vars |
array | [] |
전역 키/값 쌍; 프로젝트 변수(Project 탭 → ENV)가 충돌 시 우선 |
환경 변수를 참고하세요.
general
Preferences → General → General:
{
"general": {
"clipboard_osc52": true,
"confirm_quit": false
}
}
| Key | Type | Default | Description |
|---|---|---|---|
clipboard_osc52 |
bool | true |
OSC 52 터미널 이스케이프로 복사. SSH 너머에서도 y가 로컬 클립보드에 도달합니다 |
confirm_quit |
bool | false |
종료 전에 확인 |
notifications
백그라운드 작업(Miner, Fuzzer, Probe, Discover)이 결과를 알리는 방식입니다. Preferences → General → Notifications:
{
"notifications": {
"bell": false,
"toast": true,
"retention": 100
}
}
| Key | Type | Default | Description |
|---|---|---|---|
bell |
bool | false |
백그라운드 작업이 결과를 냈을 때 터미널 벨 울림 |
toast |
bool | true |
같은 이벤트에 대해 잠깐 나타나는 토스트 표시 |
retention |
integer | 100 |
알림 센터가 보관하는 알림 개수 |
probe
{
"probe": {
"active_notify": "when-found"
}
}
| Key | Type | Default | Description |
|---|---|---|---|
active_notify |
string | "when-found" |
액티브 스캔의 알림 시점: "when-found", "always", "off" |
discover
Discover 실행의 저장된 기본값입니다. discover 옵션을 저장해야 기록되므로 그 전까지는 섹션이 없습니다:
{
"discover": {
"containment": "scope-aware",
"max_depth": 4,
"concurrency": 20,
"spider": true,
"bruteforce": true,
"extensions": false
}
}
| Key | Type | Default | Description |
|---|---|---|---|
containment |
string | "scope-aware" |
탐색이 벗어날 수 있는 범위: "same-origin", "scope-aware", "host+subdomains" |
max_depth |
integer | 4 |
스파이더 깊이 상한 |
concurrency |
integer | 20 |
동시 요청 수 |
spider |
bool | true |
응답에서 찾은 링크를 따라감 |
bruteforce |
bool | true |
워드리스트로 경로 무차별 탐색 |
extensions |
bool | false |
각 후보의 확장자 변형도 함께 시도 |
mine
Param Miner의 저장된 기본값입니다. mine 옵션을 저장해야 기록됩니다:
| Key | Type | Default | Description |
|---|---|---|---|
locations |
array | [] |
주입 위치: query, form, multipart, json, headers, cookies. 비어 있으면 요청마다 자동 감지 |
concurrency |
integer | 10 |
동시 요청 수 |
notify |
string | "when-found" |
"when-found", "always", "off" |
scan_rules
직접 만든 Probe 매치 규칙으로, 모든 프로젝트에 걸쳐 전역으로 적용됩니다. 프로젝트 범위 규칙은 대신 프로젝트 데이터베이스에 저장됩니다. Probe → Rules → CUSTOM에서 편집합니다:
{
"scan_rules": [
{
"id": "a1b2c3d4",
"title": "Internal hostname leak",
"description": "Build-server hostname in a response body",
"side": "response",
"region": "body",
"kind": "regex",
"pattern": "build-\\d+\\.corp\\.internal",
"severity": "medium",
"enabled": true
}
]
}
| Key | Type | Description |
|---|---|---|
id |
string | 생성 시 부여되는 무작위 hex 토큰 |
title |
string | 발견 항목 제목 |
description |
string | 발견 상세에 표시 |
side |
string | request 또는 response |
region |
string | whole, header, body |
kind |
string | string 또는 regex |
pattern |
string | 매칭할 리터럴 또는 정규식 |
severity |
string | info, low, medium, high, critical |
enabled |
bool | 규칙 실행 여부 |
파싱은 관대합니다. id, title, pattern이 없는 항목은 버려지고, 허용 범위를 벗어난 side / region / kind / severity는 로드를 실패시키는 대신 가장 안전한 값으로 대체됩니다.
그 외 섹션
| Section | Description |
|---|---|
theme |
활성 테마 이름 (기본값 goridark). 테마 가이드 참고 |
mouse |
마우스 지원 토글 |
pretty_bodies |
상세 뷰에서 JSON/XML 등의 본문을 pretty-print |
editor |
외부 편집기 command와 Markdown 처리 |
tabs |
표시/숨김할 TUI 탭 |
hostname_overrides |
전역 host → IP 다이얼 맵. 위의 hostname_overrides 참고 |
env |
Env 토큰 접두사와 전역 값. 위의 env 참고 |
hotkeys |
키바인딩 오버라이드 (os 계층 + bindings). 단축키 가이드 참고 |
decoder |
마지막 입력과 체인, 저장된 Decoder 세션과 이름 붙인 체인 |
mine |
Param Miner의 저장된 기본값. 위 mine 참고 |
layout |
History / Probe / Issues 미리보기 + Sitemap 펼침 깊이. 위의 layout 참고 |
statusline |
일정 간격으로 명령을 실행하는 하단 상태 행. 위의 statusline 참고 |
display |
기본 상세 페인, 목록 시간 형식, 줄번호 거터, 미리보기 본문 상한, resource_meter(하단 바 맨 오른쪽 CPU/메모리 표시, 기본 켜짐), 그리고 terminal_title |
프로젝트별 오버라이드
프로젝트는 전역 파일을 수정하지 않고도 자체 네트워크 설정을 고정할 수 있습니다. 이 값들은 프로젝트 데이터베이스에 저장되며(키 net.bind_host, net.bind_port, net.upstream_proxy), Project 탭의 설정 패널에서 편집합니다.
열려 있는 프로젝트의 유효 바인드 / 업스트림:
| Priority | Source |
|---|---|
| 1 (최우선) | 설정되어 있으면 프로젝트 DB net.bind_host / net.bind_port / net.upstream_proxy |
| 2 | CLI --listen / --port (전역 계층의 프로세스 한정 오버라이드) |
| 3 | settings.json network.* |
| 4 (최하위) | 공장 기본값 127.0.0.1:8070 / 직접 연결 |
현재 전역 값과 같은 Project 탭 필드를 저장하면 해당 KV 키가 삭제되므로, 프로젝트는 중복을 고정하는 대신 이후의 전역 변경을 계속 상속합니다.
프로젝트와 데이터베이스
각 프로젝트는 SQLite 데이터베이스(crystal-db / crystal-sqlite3 사용)입니다. 여기에는 플로우, WebSocket 메시지, 스코프 규칙, 이슈, match 규칙, HTTP/2 프레임, repeater 및 fuzz 세션, 호스트 오버라이드, sitemap 태그, miner 세션, Probe 이슈가 담기고, 플로우 본문 전체를 훑는 전문 인덱스도 들어 있습니다. 저장하는 요청/응답 본문은 2 MiB로 상한이 걸려 있어, 더 큰 본문은 데이터베이스에서 잘리지만 실제 와이어 크기는 그대로 기록합니다. --db PATH로 어떤 프로젝트의 데이터베이스든 직접 지정하거나, --project NAME으로 이름이 지정된 프로젝트를 고릅니다.