IRC 기반 탈중앙 채팅 Parley 공개
원제: Parley: Federated, decentralised chat that speaks plain IRC
왜 중요한가
IRC라는 30년 된 프로토콜 위에 ActivityPub 방식의 연합 구조를 얹어, 별도 클라이언트 없이 탈중앙 채팅 인프라를 구축할 수 있는 접근법이 주목된다.
오픈소스 프로젝트 Parley가 IRC 프로토콜을 기반으로 한 연합형 탈중앙화 채팅 시스템을 공개했다. 사용자는 자체 서버를 운영하며 user@domain 형식으로 irssi 등 기존 IRC 클라이언트에서 타 도메인 사용자와 대화할 수 있다. 최신 커밋(#46)에서는 파일 업로드 시 원본 파일명 노출 보안 문제를 수정했다.
Parley는 Go 언어로 작성된 연합형 IRC 호환 채팅 서버다. 기존 IRC 클라이언트(irssi 등)를 그대로 사용하면서도 user@domain 주소 체계로 서로 다른 서버 인스턴스 간 통신이 가능하다는 점이 핵심 특징이다. 프로젝트는 198개 커밋, 5개 릴리스를 거쳤으며 현재 활발히 개발 중이다.
최근 머지된 PR #46은 파일 업로드 관련 보안 결함을 수정했다. 이전 버전(#45)에서는 파일 링크에 클라이언트가 보낸 원본 파일명이 그대로 노출됐다. 예를 들어 'Jane Doe passport.JPEG'라는 이름의 파일을 올리면 채널 링크에 해당 이름이 그대로 공개되는 문제가 있었다. 수정 후에는 서버가 128비트 랜덤 ID를 기반으로 파일명을 재생성한다. 형식은 `<id>.<ext>`이며 확장자는 서버가 판별한 MIME 타입을 따른다(image/jpeg → .jpg). 클라이언트가 전송한 원본 파일명은 MIME 타입 추측에만 쓰이고 이후 폐기된다.
하위 호환성도 유지했다. PR #45 이전에 업로드된 파일은 서버 시작 시 자동으로 새 명명 규칙으로 일괄 변환되고, 기존에 채널에 공유된 `/files/<id>/<original-name>` 형식 링크도 ID 기반 조회로 계속 작동한다. 파일 업로드는 soju.im/FILEHOST 프로토콜을 통해 IRC 클라이언트에서 직접 첨부 가능하다. 이번 수정은 Claude Code를 활용해 작성됐으며 테스트 커버리지도 함께 추가됐다.