NapCat-Docker/entrypoint.sh
2024-10-22 23:35:05 +08:00

110 lines
2.9 KiB
Bash

#!/bin/bash
chech_quotes(){
local input="$1"
if [ "${input:0:1}" != '"' ] ; then
if [ "${input:0:1}" != '[' ] ; then
input="[\"$input\"]"
fi
else
input="[$input]"
fi
echo $input
}
# 安装 napcat
if [ ! -f "napcat/napcat.mjs" ]; then
unzip -q NapCat.Shell.zip -d ./NapCat.Shell
cp -rf NapCat.Shell/* napcat/
rm -rf ./NapCat.Shell
fi
if [ ! -f "napcat/config/napcat.json" ]; then
unzip -q NapCat.Shell.zip -d ./NapCat.Shell
cp -rf NapCat.Shell/config/* napcat/config/
rm -rf ./NapCat.Shell
fi
CONFIG_PATH=napcat/config/onebot11_$ACCOUNT.json
# 容器首次启动时执行
if [ ! -f "$CONFIG_PATH" ]; then
if [ "$WEBUI_TOKEN" ]; then
echo "{\"port\": 6099,\"token\": \"$WEBUI_TOKEN\",\"loginRate\": 3}" > napcat/config/webui.json
fi
: ${WEBUI_TOKEN:=''}
: ${HTTP_PORT:=3000}
: ${HTTP_URLS:='[]'}
: ${WS_PORT:=3001}
: ${HTTP_ENABLE:='false'}
: ${HTTP_POST_ENABLE:='false'}
: ${WS_ENABLE:='false'}
: ${WSR_ENABLE:='false'}
: ${WS_URLS:='[]'}
: ${HEART_INTERVAL:=60000}
: ${TOKEN:=''}
: ${F2U_ENABLE:='false'}
: ${DEBUG_ENABLE:='false'}
: ${LOG_ENABLE:='false'}
: ${RSM_ENABLE:='false'}
: ${MESSAGE_POST_FORMAT:='array'}
: ${HTTP_HOST:=''}
: ${WS_HOST:=''}
: ${HTTP_HEART_ENABLE:='false'}
: ${MUSIC_SIGN_URL:=''}
: ${HTTP_SECRET:=''}
: ${NAPCAT_GID:=1001}
: ${NAPCAT_UID:=911}
HTTP_URLS=$(chech_quotes $HTTP_URLS)
WS_URLS=$(chech_quotes $WS_URLS)
cat <<EOF > $CONFIG_PATH
{
"http": {
"enable": ${HTTP_ENABLE},
"host": "$HTTP_HOST",
"port": ${HTTP_PORT},
"secret": "$HTTP_SECRET",
"enableHeart": ${HTTP_HEART_ENABLE},
"enablePost": ${HTTP_POST_ENABLE},
"postUrls": $HTTP_URLS
},
"ws": {
"enable": ${WS_ENABLE},
"host": "${WS_HOST}",
"port": ${WS_PORT}
},
"reverseWs": {
"enable": ${WSR_ENABLE},
"urls": $WS_URLS
},
"GroupLocalTime":{
"Record": false,
"RecordList": []
},
"debug": ${DEBUG_ENABLE},
"heartInterval": ${HEART_INTERVAL},
"messagePostFormat": "$MESSAGE_POST_FORMAT",
"enableLocalFile2Url": ${F2U_ENABLE},
"musicSignUrl": "$MUSIC_SIGN_URL",
"reportSelfMessage": ${RSM_ENABLE},
"token": "$TOKEN"
}
EOF
jq '.packetServer = "127.0.0.1:8086"' napcat/config/napcat.json > napcat/config/napcat._json && mv napcat/config/napcat._json napcat/config/napcat.json
cp -f napcat/config/napcat.json napcat/config/napcat_$ACCOUNT.json
fi
rm -rf "/tmp/.X1-lock"
# usermod -o -u ${NAPCAT_UID} napcat
# groupmod -o -g ${NAPCAT_GID} napcat
# usermod -g ${NAPCAT_GID} napcat
chmod -R 777 /app
Xvfb :1 -screen 0 1080x760x16 +extension GLX +render > /dev/null 2>&1 &
sleep 2
# 方便调试, 或许应该重定向到/dev/null?
python3 napcat.packet.production.py &
sleep 2
export FFMPEG_PATH=/usr/bin/ffmpeg
export DISPLAY=:1
cd /app/napcat
/opt/QQ/qq --no-sandbox -q $ACCOUNT