From 9d4142ddb6f17440c8266c6efabcb356920339da Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Nov 2025 09:45:15 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Headscale=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EC=8B=9C=20=EC=95=BD=EA=B5=AD=20=EB=B0=8F?= =?UTF-8?q?=20=EA=B3=84=EC=A0=95=20=EC=9E=90=EB=8F=99=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주요 변경사항: - 약국 정보 수집 함수 추가 (collect_pharmacy_info) - VPN IP 자동 확인 함수 추가 (get_assigned_vpn_ip) - farmq-admin API 호출 함수 추가 (create_pharmacy_via_api) - gateway API 호출 함수 추가 (create_gateway_user_via_api) - 로그인 정보 출력 함수 추가 (display_login_credentials) 플로우: 1. Headscale VPN 등록 2. VPN IP 자동 확인 (최대 10초 대기) 3. 약국 정보 수집 (약국명 필수, 나머지 선택) 4. farmq.db에 약국 생성 (https://demo.pharmq.kr/api/pharmacy) 5. gateway.db에 admin 계정 생성 (https://gateway.pharmq.kr/api/auth/register) 6. 로그인 정보 출력 (아이디: p{pharmacy_code}, 비밀번호: 1234) API 엔드포인트: - farmq-admin: https://demo.pharmq.kr/api/pharmacy - gateway: https://gateway.pharmq.kr/api/auth/register 백업 파일: headscale-quick-install.sh.backup 🤖 Generated with Claude Code Co-Authored-By: Claude --- headscale-quick-install.sh | 169 +++++++++++++++++++++++++++++++++++-- 1 file changed, 163 insertions(+), 6 deletions(-) diff --git a/headscale-quick-install.sh b/headscale-quick-install.sh index e0617c1..b20ce37 100755 --- a/headscale-quick-install.sh +++ b/headscale-quick-install.sh @@ -486,28 +486,185 @@ show_final_info() { print_header "설치 완료 - 팜큐 네트워크를 사용할 수 있습니다!" } +# ================================ +# 약국 자동 등록 함수들 +# ================================ + +# 약국 정보 수집 +collect_pharmacy_info() { + echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${WHITE}약국 정보 입력${NC}" + echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + + # 약국명 입력 (필수) + while [ -z "$PHARMACY_NAME" ]; do + read -p "약국명을 입력하세요: " PHARMACY_NAME + done + + # 요양기관부호 입력 (선택) + read -p "요양기관부호 (선택, Enter로 건너뛰기): " HIRA_CODE + + # 약국 주소 입력 (선택) + read -p "약국 주소 (선택): " PHARMACY_ADDRESS + + # 약국장 이름 입력 (선택) + read -p "약국장 이름 (선택): " OWNER_NAME + + # 연락처 입력 (선택) + read -p "약국 연락처 (선택): " PHARMACY_PHONE + + echo -e "${GREEN}✓ 약국 정보 입력 완료${NC}" +} + +# VPN IP 확인 +get_assigned_vpn_ip() { + echo -e "${BLUE}VPN IP 확인 중...${NC}" + + # tailscale status로 IP 추출 (최대 10초 대기) + for i in {1..10}; do + VPN_IP=$(tailscale status --json 2>/dev/null | grep -oP '"TailscaleIPs":\["\K[^"]+' | head -1) + + if [ -n "$VPN_IP" ]; then + echo -e "${GREEN}✓ VPN IP: $VPN_IP${NC}" + return 0 + fi + + echo -e "${YELLOW}⏳ VPN IP 할당 대기 중... ($i/10)${NC}" + sleep 1 + done + + echo -e "${RED}✗ VPN IP를 가져올 수 없습니다${NC}" + return 1 +} + +# farmq-admin API 호출하여 약국 생성 +create_pharmacy_via_api() { + echo -e "${BLUE}약국 등록 중 (farmq.db)...${NC}" + + # JSON 데이터 구성 + JSON_DATA=$(cat <