Skip to content

v0.230.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 18:07
· 42 commits to main since this release
4afcbc6

kanpic v0.230.0

v0.230.0

외부 호출 캐시가 설정을 가로막지 않고, 끝없이 자라지 않는다

WEBSERVICE·IMPORTDATA 의 답을 담아 두는 캐시에 세 가지가 겹쳐 있었습니다.

고친 설정이 곧바로 통합니다. external.allowed_hosts 에 호스트를 적기 전에
수식을 한 번 계산했다면, 목록에 적은 뒤에도 external.cache_seconds (기본 5분)
동안 "허용되지 않은 호스트입니다" 가 그대로 남았습니다. 관리자는 설정을 고쳤는데
화면은 아니라고 하니, 설정이 틀린 줄 알고 다시 만지게 됩니다. 허용 목록·https·
주소 형식을 보는 정책 검사는 밖으로 나가는 것이 하나도 없이 설정만 읽으므로, 이제
캐시의 바깥에 둡니다 — 거절은 담기지 않고, 목록에서 뺀 호스트의 지난 답도 캐시에서
나오지 않습니다.

캐시가 상한을 지킵니다. 지난 항목을 지우는 자리가 어디에도 없어서, 매번 다른
주소를 부르는 워크북 하나가 지도를 끝없이 키웠습니다. 이제 새 답이 들어올 때 만료된
항목을 쓸어 내고, 그래도 512개가 차 있으면 가장 먼저 만료될 항목을 내보냅니다.

오류 메시지가 깨지지 않습니다. 너무 긴 메시지를 자를 때 160바이트에서 끊어
한글이 반 글자로 남았습니다( 앞이 ? 로 보였습니다). 이제 160글자를 세어
글자 경계에서 자릅니다.

확인

  • internal/external/fetcher_test.go
    • TestPolicyIsNotCachedInEitherDirection — 캐시를 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_IDBOOTSTRAP_ADMIN_PASSWORD를 함께 지정합니다.
  • 무결성 검증 파일: kanpic-v0.230.0.tar.gz.sha256