Sula: Scryer Prolog로 구현된 Gemini 프로토콜 서버

Sula는 Scryer Prolog로 작성된 Gemini 프로토콜 서버로, 패치된 Scryer Prolog가 필요하며 rustls 기반 TLS, 호스트명 검증, MIME 타입 협상, 바이너리 파일 스트리밍을 지원한다. SIGINT 시 정상 종료되며, CLI 옵션으로 주소, 호스트명, 콘텐츠 디렉토리, 인증서 디렉토리를 지정할 수 있다. 서버는 각 연결의 오류를 처리하고 계속 실행되며, /etc/mime.types를 파싱하여 콘텐츠 타입을 결정한다.

AI 요약

Sula는 Scryer Prolog로 구현된 Gemini 프로토콜 서버로, rustls 기반 TLS, 호스트명 검증, MIME 타입 협상, 바이너리 파일의 네이티브 스트리밍 전송을 지원한다. 패치된 Scryer Prolog를 필요로 하며, SIGINT 시 정상 종료, 연결별 오류 처리, PKCS#12 인증서 지원 등의 특징을 갖는다. 폴리글롯 스크립트로 설계되어 bash가 scryer-prolog를 감지해 자동 실행한다.

핵심 포인트

  • TLS는 rustls 포팅, PKCS#12 아이덴티티 파일 사용, 시작 시 openssl로 인증서 CN과 호스트명 일치 검증
  • 바이너리 응답은 네이티브 copy_stream/2로 파일→TLS 소켓 직접 스트리밍 (Prolog 힙 미경유)
  • /etc/mime.types를 DCG 파서로 파싱해 확장자별 콘텐츠 협상, .gmi는 text/gemini로 매핑
  • 패치된 socket_server_accept/4의 비차단 폴 루프로 SIGINT를 catchable 예외로 처리

향후 전망

  • Scryer Prolog 기반 서버 구현 사례로서 Prolog 생태계의 실용적 네트워크 서버 개발 가능성 입증
  • Gemini 프로토콜 서버 구현체 중 이색적인 기술 스택으로 관심 집중
출처:Hacker News
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...