#!/bin/sh # 태온 원격지원 실행기 # # 이 스크립트는 아무것도 설치하지 않습니다. # - 임시 폴더에 태온 프로그램을 내려받아 실행하고, 끝나면 폴더째 지웁니다. # - 시스템 설정, SSH 키, 자동 실행 서비스를 만들거나 바꾸지 않습니다. # - 상담원은 이 창에서 고객이 직접 허용해야만 접속할 수 있습니다. set -u BASE="https://taeon.activejang.com" say() { printf ' %s\n' "$*"; } main() { case "$(uname -s)-$(uname -m)" in Linux-aarch64 | Linux-arm64) FILE=taeon-linux-arm64 SUM="8d257bec7ae4d7765dc121b05cfd64c41c123945f695f1c910676f8886205c2d" ;; Linux-x86_64 | Linux-amd64) FILE=taeon-linux-amd64 SUM="edba30d3510c9ed99d3b99c8f20de817a76b77feea7096ceee68d31877200581" ;; *) say "이 컴퓨터($(uname -s) $(uname -m))는 아직 지원하지 않습니다. 상담원에게 알려 주세요." exit 1 ;; esac if [ ! -r /dev/tty ]; then say "터미널 창에서 직접 실행해 주세요." exit 1 fi DIR=$(mktemp -d "${TMPDIR:-/tmp}/taeon.XXXXXX") || { say "임시 폴더를 만들 수 없습니다." exit 1 } trap 'rm -rf "$DIR"' EXIT trap 'exit 130' INT TERM HUP say "태온 프로그램을 내려받는 중..." if command -v curl >/dev/null 2>&1; then curl -fsSL --retry 2 -o "$DIR/taeon" "$BASE/dl/$FILE" elif command -v wget >/dev/null 2>&1; then wget -q -O "$DIR/taeon" "$BASE/dl/$FILE" else say "curl 이나 wget 이 필요합니다." exit 1 fi if [ $? -ne 0 ] || [ ! -s "$DIR/taeon" ]; then if [ "$(date +%Y)" -lt 2025 ]; then say "이 컴퓨터의 시계($(date '+%Y-%m-%d %H:%M'))가 틀려서 보안 연결이 실패했습니다." say "sudo date -s \"2026-11-12 15:00\" 처럼 지금 시각으로 맞춘 뒤 다시 실행해 주세요." else say "내려받지 못했습니다. 인터넷 연결을 확인해 주세요." fi exit 1 fi if [ -n "$SUM" ] && command -v sha256sum >/dev/null 2>&1; then if ! echo "$SUM $DIR/taeon" | sha256sum -c --status 2>/dev/null; then say "내려받은 파일이 손상되었습니다. 다시 실행해 주세요." exit 1 fi fi chmod 700 "$DIR/taeon" "$DIR/taeon" --server "$BASE"