68 lines
2.0 KiB
Bash
68 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Test the vps proxy is work
|
|
# if work, record to access.log in . folder
|
|
# if not work, record to error.log in . folder and push msg to dingtalk api
|
|
|
|
# SET THE ARGUMENTS
|
|
BWH_PROXY="http://127.0.0.1:1099"
|
|
JP_PROXY="http://127.0.0.1:1080"
|
|
ALL_PROXY=("BWH_PROXY" "JP_PROXY")
|
|
proxy_var=""
|
|
ip_address="https://v4.ident.me"
|
|
access_address="https://pac-9d7.pages.dev/access"
|
|
error_log="error.log"
|
|
access_log="access.log"
|
|
webhook="https://oapi.dingtalk.com/robot/send?access_token=b2a92184affebb3f26dfcab1eff9571b46c27a85380fd9ff56ca4c66cf93e1a1"
|
|
keyword="BWH:"
|
|
|
|
# Set directory
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
cd "$SCRIPT_DIR" || exit
|
|
my_proxy=""
|
|
# Function to log errors and send dingtalk message
|
|
log_error() {
|
|
local error_msg=$1
|
|
echo "$(date "+%Y-%m-%d %H:%M:%S") $error_msg $get_ip $get_realip" >> "$error_log"
|
|
local msg="$keyword ERROR:\n $proxy_var $error_msg \n$(date "+%Y-%m-%d %H:%M:%S")"
|
|
curl -sL "$webhook" \
|
|
-H 'Content-Type: application/json' \
|
|
-d "{\"msgtype\": \"text\",\"text\": {\"content\":\"$msg\"}}"
|
|
}
|
|
|
|
for proxy_var in "${ALL_PROXY[@]}"; do
|
|
# Get the real IP
|
|
export all_proxy=""
|
|
get_realip=$(curl -sL "$ip_address" || echo "GET_DIRECT_IP_FAILED")
|
|
|
|
# Set proxy
|
|
export all_proxy=${!proxy_var}
|
|
|
|
# Get proxy IP
|
|
get_ip=$(curl -sL "$ip_address" || echo "GET_${proxy_var}_IP_FAILED")
|
|
|
|
# Get access key words
|
|
get_pass=$(curl -sL "$access_address" || echo "${proxy_var}_CURL_CF_FAILED")
|
|
export all_proxy=""
|
|
|
|
if [ "$get_pass" == "${proxy_var}_CURL_CF_FAILED" ]; then
|
|
log_error "$get_pass"
|
|
else
|
|
echo "$(date "+%Y-%m-%d %H:%M:%S") $get_pass $get_ip $get_realip" >> "$access_log"
|
|
fi
|
|
done
|
|
|
|
# Check if log file is bigger than max size
|
|
max_size=104857600
|
|
date1=$(date +"%Y%m%d")
|
|
if [ -f "$access_log" ]; then
|
|
file_size=$(stat -c%s "$access_log")
|
|
if [ "$file_size" -gt "$max_size" ]; then
|
|
tar czvf "$access_log-$date1.tar.gz" "$access_log"
|
|
rm "$access_log"
|
|
touch "$access_log"
|
|
fi
|
|
fi
|
|
|
|
|