shell
#!/bin/bash
export LANG=en_US.UTF-8
# 상수 정의
accessKey="a1"
secretKey="a2"
apiURL="https://api.upgrade.toolsetlink.com/v1/file/upgrade"
uri="/v1/file/upgrade"
# RFC3339 형식 시간 생성 함수
generate_rfc3339_time() {
if [[ "$(uname)" == "Darwin" ]]; then
# macOS 시스템 처리
# 먼저 현재 시간을 가져옵니다 (초 단위 정확도)
local base_time=$(date +"%Y-%m-%dT%H:%M:%S")
# 완전한 RFC3339 형식 시간으로 연결
echo "${base_time}+08:00"
else
# Linux 시스템 처리
# date 명령어를 사용하여 직접 RFC3339 형식 시간 생성
date +"%Y-%m-%dT%H:%M:%S+08:00"
fi
}
# 1. 요청 본문 구성
requestBody='{
"fileKey": "key1",
"versionCode": 1,
"appointVersionCode": 0,
"devModelKey": "12312",
"devKey": "12312"
}'
# 2. 요청 매개변수 생성
timestamp=$(generate_rfc3339_time)
echo "생성된 RFC3339 형식 시간: $timestamp"
nonce=$(head -c 8 /dev/urandom | xxd -p)
# 3. 서명 생성
signStr="body=$requestBody&nonce=$nonce&secretKey=$secretKey×tamp=$timestamp&url=$uri"
signature=$(printf "%s" "$signStr" | md5sum | awk '{print $1}')
# 4. 타임스탬프 출력
echo "timestamp: $timestamp"
# 5. HTTP 요청 보내기
response=$(curl -s -X POST \
-H "X-Timestamp: $timestamp" \
-H "X-Nonce: $nonce" \
-H "X-AccessKey: $accessKey" \
-H "X-Signature: $signature" \
-H "Content-Type: application/json" \
-d "$requestBody" \
"$apiURL")
# 6. 응답 상태 코드 가져오기
statusCode=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
-H "X-Timestamp: $timestamp" \
-H "X-Nonce: $nonce" \
-H "X-AccessKey: $accessKey" \
-H "X-Signature: $signature" \
-H "Content-Type: application/json" \
-d "$requestBody" \
"$apiURL")
# 7. 응답 처리
echo "상태 코드: $statusCode"
echo "응답: $response"