v0.230.0
kanpic v0.230.0
v0.230.0
외부 호출 캐시가 설정을 가로막지 않고, 끝없이 자라지 않는다
WEBSERVICE·IMPORTDATA 의 답을 담아 두는 캐시에 세 가지가 겹쳐 있었습니다.
고친 설정이 곧바로 통합니다. external.allowed_hosts 에 호스트를 적기 전에
수식을 한 번 계산했다면, 목록에 적은 뒤에도 external.cache_seconds (기본 5분)
동안 "허용되지 않은 호스트입니다" 가 그대로 남았습니다. 관리자는 설정을 고쳤는데
화면은 아니라고 하니, 설정이 틀린 줄 알고 다시 만지게 됩니다. 허용 목록·https·
주소 형식을 보는 정책 검사는 밖으로 나가는 것이 하나도 없이 설정만 읽으므로, 이제
캐시의 바깥에 둡니다 — 거절은 담기지 않고, 목록에서 뺀 호스트의 지난 답도 캐시에서
나오지 않습니다.
캐시가 상한을 지킵니다. 지난 항목을 지우는 자리가 어디에도 없어서, 매번 다른
주소를 부르는 워크북 하나가 지도를 끝없이 키웠습니다. 이제 새 답이 들어올 때 만료된
항목을 쓸어 내고, 그래도 512개가 차 있으면 가장 먼저 만료될 항목을 내보냅니다.
오류 메시지가 깨지지 않습니다. 너무 긴 메시지를 자를 때 160바이트에서 끊어
한글이 반 글자로 남았습니다(… 앞이 ? 로 보였습니다). 이제 160글자를 세어
글자 경계에서 자릅니다.
확인
internal/external/fetcher_test.goTestPolicyIsNotCachedInEitherDirection— 캐시를 5분으로 두고 허용 목록을 넣었다 뺐다 하며, 넣으면 곧바로 가져오고 빼면 담긴 답도 내주지 않는지TestCacheSweepsExpiredAndStaysBounded— 시계를 돌려 만료 항목이 쓸려 나가는지, 살아 있는 항목만 상한을 넘겨 넣어도 512개를 지키며 먼저 만료될 것부터 나가는지TestShortKeepsKoreanLettersWhole— 한글 200자를 잘라도 반 글자가 남지 않는지
오프라인 설치
이 릴리즈는 웹 자산과 서버 바이너리를 포함한 Docker 이미지 아카이브로 제공됩니다.
sha256sum -c kanpic-v0.230.0.tar.gz.sha256
gzip -dc kanpic-v0.230.0.tar.gz | docker load
docker run --rm -p 8080:8080 \
-e POSTGRES_DSN='postgres://kanpic:password@postgres.internal:5432/kanpic?sslmode=require' \
kanpic:v0.230.0- 필수 런타임 환경 변수:
POSTGRES_DSN - Redis 및 외부 인터넷 연결: 불필요
- 관리자 초기 로그인을 보호하려면
BOOTSTRAP_ADMIN_ID와BOOTSTRAP_ADMIN_PASSWORD를 함께 지정합니다. - 무결성 검증 파일:
kanpic-v0.230.0.tar.gz.sha256