-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
81 lines (68 loc) · 2.61 KB
/
Copy path.env.example
File metadata and controls
81 lines (68 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# ---- App ----
APP_NAME="LinClean Open API"
APP_VERSION="0.1.0"
ENVIRONMENT=local
DEBUG=true
# ---- Server ----
HOST=0.0.0.0
PORT=8000
LOG_LEVEL=INFO
LOG_JSON=false
# ---- CORS (JSON list) ----
CORS_ORIGINS=["http://localhost:3000"]
# ---- Database (SQLite) ----
# Relative paths are resolved against the project root.
SQLITE_PATH=data/linclean.db
DB_ECHO=false
# ---- Google Safe Browsing ----
# Leave empty to disable GSB lookups in /api/v1/check.
GSB_API_KEY=SECRET_KEY
GSB_CLIENT_ID=linclean
GSB_CLIENT_VERSION=0.1.0
GSB_TIMEOUT_SECONDS=5.0
# ---- URLhaus ----
URLHAUS_RECENT_CSV_URL=https://urlhaus.abuse.ch/downloads/csv_recent/
URLHAUS_ONLINE_CSV_URL=https://urlhaus.abuse.ch/downloads/csv_online/
URLHAUS_REFRESH_INTERVAL_SECONDS=3600
URLHAUS_DOWNLOAD_TIMEOUT_SECONDS=60.0
# ---- Scheduler / URLhaus sync ----
# 스케줄러 켜면 URLHAUS_REFRESH_INTERVAL_SECONDS 주기로 CSV 동기화 실행.
# 부팅 시 1회 동기화는 URLHAUS_SYNC_ON_STARTUP 로 제어. 로컬/CI 에서 비활성화 가능.
SCHEDULER_ENABLED=true
URLHAUS_SYNC_ON_STARTUP=true
# ---- RDAP ----
RDAP_BOOTSTRAP_URL=https://rdap.org/domain/
RDAP_TIMEOUT_SECONDS=5.0
RDAP_CACHE_TTL_SECONDS=604800
RDAP_NEW_DOMAIN_THRESHOLD_DAYS=30
# ---- Scoring ----
SCORE_WEIGHT_GSB=50
SCORE_WEIGHT_URLHAUS=50
SCORE_WEIGHT_RDAP=20
SCORE_MALICIOUS_THRESHOLD=50
# 1~3단계 합산이 이 값 이상이면 콘텐츠 정적 분석(네트워크·AI 비용)을 건너뛴다.
SCORE_DANGER_THRESHOLD=61
# ---- Content Analysis (4단계) ----
CONTENT_FETCH_TIMEOUT_SECONDS=8.0
CONTENT_FETCH_CONNECT_TIMEOUT_SECONDS=3.0
CONTENT_FETCH_MAX_BYTES=2097152
CONTENT_EXTERNAL_LINK_RATIO_THRESHOLD=0.8
# 페치 실패 가중치 — timeout/connect_error/http_error 같은 도달 실패에만 적용.
# not_html / too_large / unexpected_redirect 는 정상 컨텐츠·파이프라인 이슈로 보고 가산 없이 시그널만.
SCORE_WEIGHT_CONTENT_FETCH_FAILED=10
# ---- AI Provider ----
# auto : OPENAI_API_KEY 있으면 OpenAIProvider, 없으면 NullAIProvider
# openai : 강제 openai (키 없으면 NullAIProvider 로 폴백 + 경고)
# null : 비활성 (규칙 점수만 사용)
AI_PROVIDER=auto
# ---- OpenAI ----
# 비워두면 NullAIProvider — 규칙 기반 점수만 사용.
# 모델은 OpenAI 채팅 계열이면 전부 호환 (gpt-4o-mini / gpt-4o / gpt-4.1-mini 등). 교체는 OPENAI_MODEL 한 줄.
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
OPENAI_TIMEOUT_SECONDS=10.0
OPENAI_MAX_OUTPUT_TOKENS=300
# ---- Spring 통신 ----
# secrets.token_hex(32) 로 생성한 사전 공유 키. Spring 과 동일한 값 설정 필수.
INTERNAL_API_KEY=REPLACE_ME
SPRING_INTERNAL_URL=http://localhost:8080