#!/bin/bash
# SSL 인증서 갱신 후 복사 및 권한 설정, PM2 서버 재시작 스크립트
# ls -l --time=creation /etc/letsencrypt/live/cube2005.co.kr/
# chmod +x /storage1/wwwroot/chat/chat_server_wss_cube2005_crontab.sh
# bash /storage1/wwwroot/chat/chat_server_wss_cube2005_crontab.sh
# crontab -e
# 00 01 * * * /storage1/wwwroot/chat/chat_server_wss_cube2005_crontab.sh
# crontab -l
# systemctl restart cron

# 로그 파일 및 임시 파일 경로 설정
LOG_FILE="/storage1/wwwroot/chat/chat_server_wss_cube2005_crontab.log"
TMP_LOG="/tmp/chat_server_wss_temp.log"

# 실행 시간 및 구분선을 임시 로그 파일 맨 위에 기록 (덮어쓰기)
echo "========== [$(date '+%Y-%m-%d %H:%M:%S')] 실행 시작 ==========" > $TMP_LOG

# 실행 블록 시작 (표준 출력 및 에러를 임시 로그에 추가)
{
 # 현재 일자 가져오기 (ex: 01, 15, 31)
 TODAY=$(date +%d)

 # 매월 1일에만 인증서 복사 및 권한 설정 실행
 if [ "$TODAY" = "01" ]; then
  # privkey.pem 복사
  cp -Lp /etc/letsencrypt/live/cube2005.co.kr/privkey.pem /storage1/wwwroot/chat/cube2005.co.kr_privkey.pem

  # fullchain.pem 복사
  cp -Lp /etc/letsencrypt/live/cube2005.co.kr/fullchain.pem /storage1/wwwroot/chat/cube2005.co.kr_fullchain.pem

  # privkey.pem 소유자 변경 (www-data)
  chown www-data:www-data /storage1/wwwroot/chat/cube2005.co.kr_privkey.pem

  # fullchain.pem 소유자 변경 (www-data)
  chown www-data:www-data /storage1/wwwroot/chat/cube2005.co.kr_fullchain.pem

  # privkey.pem 권한 변경 (600)
  chmod 600 /storage1/wwwroot/chat/cube2005.co.kr_privkey.pem

  # fullchain.pem 권한 변경 (644)
  chmod 644 /storage1/wwwroot/chat/cube2005.co.kr_fullchain.pem
 fi
 #End of If

 # www-data 환경에서 pm2 재시작
 sudo -u www-data -i pm2 restart chat_server_wss_cube2005

} >> $TMP_LOG 2>&1
#End of Block

# 기존 로그 파일이 존재할 경우 임시 로그 파일 내용 뒤에 이어붙이기
if [ -f $LOG_FILE ]; then
 cat $LOG_FILE >> $TMP_LOG
fi
#End of If

# 임시 로그를 원본 로그 파일로 덮어쓰기 (상단 누적 완료)
mv $TMP_LOG $LOG_FILE

#End of Script