Files
custom-launcher/README.md
T
2026-07-22 01:18:08 +09:00

5.3 KiB

Custom Launcher

사이트 본문에 작은 iOS 스타일 배너로 삽입되는 런처입니다.

<meta charset="UTF-8">
<link href="/custom/launcher/css/style.css?v=20260722_wol1" rel="stylesheet" />
<div id="findMyShortcut" class="find-container"></div>
<script src="/custom/launcher/js/main.js?v=20260722_wol1"></script>

기능

  • 나의 찾기 이동
  • PC 켜기
  • 콕 찌르기
  • 차량 모니터 이동
  • 공통 암호 로그인
  • 공통 암호 변경
  • 4자리 숫자 PIN 입력과 커스텀 숫자 키패드
  • 사이트 관리자 로그인 상태에서만 관리 버튼 표시
  • 사이트 관리자 로그인 상태에서는 미니앱 실행 시 공통 암호 생략
  • 사이트 관리자 세션으로 미니앱 진입 시 공통 접근 쿠키 자동 발급

구조

  • api.php: 로그인, 로그아웃, 암호 변경, 관리자 세션 확인, 콕 찌르기 카운트/웹훅 처리
  • js/main.js: 4개 아이콘 렌더링, 인증 흐름, 암호 변경 UI
  • css/style.css: 기존 삽입 코드 호환용 공용 CSS import
  • img/: 런처 아이콘 이미지

공통 모듈 연동

인증, 암호 hash 저장, Home Assistant/Control 호출 설정은 /custom/common 모듈을 사용합니다. 런처는 더 이상 Home Assistant 토큰, Control 토큰, 웹훅을 브라우저로 직접 노출하지 않습니다.

런처 CSS 원본은 /custom/common/css/launcher.css를 사용합니다. 기존 운영 HTML이 /custom/launcher/css/style.css를 참조해도 호환 파일이 공용 CSS를 import합니다.

런처는 채건닷컴 본문 안에 들어가는 배너라서 파일 변경 감시로 전체 Rhymix 페이지를 다시 열지 않습니다. 배포 직후 브라우저 캐시를 새로 받아야 할 때는 삽입 HTML의 ?v= 값만 바꿉니다. 나의 찾기나 속도 측정처럼 화면 자체가 도구인 서비스만 공통 파일 변경 감시를 씁니다.

운영 메모

일반 사용자 화면은 나의 찾기, 콕 찌르기, 니모, 프로젝트 4개 버튼을 표시합니다. 프로젝트 바로가기는 공개 저장소 목록으로 이동하므로 공통 암호 인증을 거치지 않습니다.

Rhymix 사이트 관리자 로그인 상태에서는 첫 줄에 나의 찾기, 콕 찌르기, 니모, 프로젝트를 일반 사용자 화면과 같은 순서로 표시하고, 두 번째 줄에 PC 켜기, Block, Notice, Speed Stats를 표시합니다. PC 켜기는 /custom/wakeonlan/api.php를 통해 Control의 wake_lan API로 WOL 요청을 보냅니다. Weblog는 관리자 대시보드에서도 접근할 수 있으므로 런처 관리자 바로가기에서는 제외합니다. 프로젝트 바로가기는 공개 저장소 목록인 https://git.chaegeon.com/explore/repos로 이동합니다. 관리자 상태에서 미니앱을 실행하면 공통 암호를 묻지 않습니다. 이때 /custom/launcher/api.php?adminSession=1 또는 session=1 응답에서 관리자 공통 접근 쿠키를 함께 발급해, 이동한 미니앱 내부 세션 검사에서도 바로 통과합니다.

공통 암호로 로그인한 일반 인증 쿠키는 30분만 유지합니다. 사이트 관리자 세션이 확인되어 발급된 관리자 인증 쿠키는 반영구 운영값으로 10년 유지합니다. /custom/launcher/api.php?session=1은 현재 브라우저가 가진 공통 쿠키 또는 사이트 관리자 세션을 확인하고, /custom/launcher/api.php?adminSession=1은 관리 버튼 노출처럼 실제 Rhymix 관리자 세션이 필요한 화면에서만 사용합니다. adminSession=1은 일반 공통 쿠키를 인증으로 섞지 않고 실제 관리자 여부만 내려줍니다. 런처가 관리자 아이콘을 표시한 뒤에도 브라우저 포커스가 돌아오거나 탭이 다시 보이면 관리자 세션을 재확인하고, 이미 관리자 로그인이 풀렸으면 일반 사용자 화면으로 다시 그립니다.

Rhymix 로그인 실패 차단 세션이 살아 있으면 session=1 응답이 loginBlocked를 내려줍니다. 이때 런처는 아이콘, 관리 버튼, PIN 입력을 숨기고 빨간 제한 안내만 표시합니다.

암호는 숫자 4자리만 허용합니다. 로그인과 암호 변경 입력창은 inputmode=numeric, [0-9]* 패턴, 커스텀 숫자 키패드를 사용하며 Android/iPhone에서 문자 키보드가 뜨지 않도록 readonly 입력창에 화면 키패드로 값을 넣습니다. 서버 API도 4자리 숫자가 아닌 암호를 거부합니다.

로그인은 확인 버튼 없이 4자리가 입력되면 즉시 검증하고 성공 시 원래 선택한 미니앱으로 이동합니다. 암호 변경 화면도 변경/확인 버튼 없이 현재 암호, 새 암호, 새 암호 확인 순서로 4자리 입력이 끝날 때마다 다음 칸으로 이동하며, 마지막 칸까지 입력되면 바로 변경을 검증합니다. 이미 값이 들어간 입력창을 누르면 로그인 화면은 해당 칸을 지우고, 암호 변경 화면은 클릭한 칸부터 뒤 칸까지 지운 뒤 다시 입력받습니다. 현재 입력 중인 칸은 상태 문구와 파란 테두리로 표시합니다.

암호 변경은 배너 우하단의 작은 관리 링크에서 처리하며, 이 링크는 사이트 관리자 로그인 상태에서만 표시합니다. 암호 변경 시에는 현재 공통 암호 입력을 계속 요구합니다.