友情链接
Last updated
Last updated
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# å¿
须以 root æéè¿è¡
if [[ $EUID -ne 0 ]]; then
echo "éè¯¯ï¼æ¬èæ¬éè¦ root æéæ§è¡ã" >&2
exit 1
fi
# å
¨å±åé
container_name=""
setup_environment() {
if [ ! -d "./koipy" ]; then
mkdir -p ./koipy
echo "åå»ºäº koipy æä»¶å¤¹ã"
fi
wget -O ./koipy/config.yaml https://raw.githubusercontent.com/detesion/get-koipy/refs/heads/main/config.example.yaml
echo "ä¸è½½ config.yaml æä»¶ã"
}
welcome() {
echo
echo "å®è£
å³å°å¼å§"
echo "å¦ææ¨æ³åæ¶å®è£
ï¼è¯·å¨ 5 ç§å
æ Ctrl+C ç»æ¢èæ¬ã"
echo
sleep 5
}
docker_check() {
echo "æ£å¨æ£æ¥ Docker å®è£
æ
åµ . . ."
if ! command -v docker &>/dev/null; then
echo "Docker æªå®è£
ï¼è¯·å®è£
Docker å¹¶å°å½åç¨æ·å å
¥ docker ç»ã"
exit 1
fi
echo "Docker å·²å®è£
ã"
}
access_check() {
echo "æµè¯ Docker æé . . ."
if [ -w /var/run/docker.sock ]; then
echo "å½åç¨æ·ææè®¿é® Dockerã"
else
echo "å½åç¨æ·æ æè®¿é® Docker æ Docker æªè¿è¡ï¼è¯·æ£æ¥ã"
exit 1
fi
}
build_docker() {
read -r -p "请è¾å
¥å®¹å¨åç§°ï¼" container_name
echo "æ£å¨æå Docker éå . . ."
docker rm -f "$container_name" &>/dev/null || true
docker pull koipy/koipy:latest
}
configure_bot() {
echo "请确ä¿å½åç®å½ä¸æ koipy æä»¶å¤¹ã"
if [ ! -d "./koipy" ]; then
echo "ç¼ºå° koipy æä»¶å¤¹ï¼éåºã"
exit 1
fi
if [ ! -f "./koipy/config.yaml" ]; then
echo "ç¼ºå° config.yaml æä»¶ï¼éåºã"
exit 1
fi
echo "å¼å§é
ç½®åæ° . . ."
read -r -p "请è¾å
¥ License: " license
read -r -p "请è¾å
¥ Bot Token: " bot_token
read -r -p "请è¾å
¥ API ID: " api_id
read -r -p "请è¾å
¥ API Hash: " api_hash
read -r -p "请è¾å
¥ä»£çå°å(é»è®¤ä¸ä½¿ç¨): " proxy
read -r -p "请è¾å
¥ HTTP 代çå°å(é»è®¤ä¸ä½¿ç¨): " http_proxy
read -r -p "请è¾å
¥ SOCKS5 代çå°å(é»è®¤ä¸ä½¿ç¨): " socks5_proxy
read -r -p "请è¾å
¥ Slave ID: " slave_id
read -r -p "请è¾å
¥ Slave Token: " slave_token
read -r -p "请è¾å
¥ Slave Address(é»è®¤127.0.0.1:8765): " slave_address
slave_address=${slave_address:-"127.0.0.1:8765"}
read -r -p "请è¾å
¥ Slave Path(é»è®¤/): " slave_path
slave_path=${slave_path:-"/"}
read -r -p "请è¾å
¥ Slave Comment: " slave_comment
read -r -p "æ¯å¦å¯ç¨ Sub-Store (é»è®¤false): " substore_enable
substore_enable=${substore_enable:-"false"}
read -r -p "æ¯å¦èªå¨é¨ç½² Sub-Store (é»è®¤false): " substore_autoDeploy
substore_autoDeploy=${substore_autoDeploy:-"false"}
# æ´æ° config.yaml
sed -i.bak \
-e "s|^license: .*|license: $license|" \
-e "s|^\( bot-token: \).*|\1$bot_token|" \
-e "s|^\( api-id: \).*|\1\"$api_id\"|" \
-e "s|^\( api-hash: \).*|\1$api_hash|" \
-e "s|^\( proxy: \).*|\1$proxy|" \
-e "s|^\( httpProxy: \).*|\1$http_proxy|" \
-e "s|^\( socks5Proxy: \).*|\1$socks5_proxy|" \
-e "s|^\( id: \).*|\1\"$slave_id\"|" \
-e "s|^\( token: \).*|\1'$slave_token'|" \
-e "s|^\( address: \).*|\1\"$slave_address\"|" \
-e "s|^\( path: \).*|\1$slave_path|" \
-e "s|^\( comment: \).*|\1\"$slave_comment\"|" \
./koipy/config.yaml
# å¤ç substore
if grep -q "substore:" ./koipy/config.yaml; then
sed -i.bak "/substore:/,/^ *[^ ]/ {
/^ *enable:/ s|: .*|: $substore_enable|
/^ *autoDeploy:/ s|: .*|: $substore_autoDeploy|
}" ./koipy/config.yaml
else
cat <<EOF >> ./koipy/config.yaml
substore:
enable: $substore_enable
autoDeploy: $substore_autoDeploy
EOF
fi
echo "config.yaml å·²æ´æ°ã"
}
start_docker() {
echo "æ£å¨å¯å¨ Docker å®¹å¨ . . ."
docker run -dit --restart=no --name="$container_name" --hostname="$container_name" \
-v "$(pwd)/koipy/config.yaml:/app/config.yaml" \
--network host koipy/koipy:latest
echo
echo "Docker å®¹å¨ $container_name å·²å¯å¨ã"
}
start_installation() {
setup_environment
welcome
docker_check
access_check
build_docker
configure_bot
start_docker
}
cleanup() {
read -r -p "请è¾å
¥å®¹å¨åç§°ï¼" container_name
echo "å¼å§å é¤ Docker å®¹å¨ . . ."
if docker inspect "$container_name" &>/dev/null; then
docker rm -f "$container_name" &>/dev/null
echo "å®¹å¨ $container_name å·²å é¤ã"
else
echo "å®¹å¨ $container_name ä¸åå¨ã"
fi
echo
show_online
}
stop_koipy() {
read -r -p "请è¾å
¥å®¹å¨åç§°ï¼" container_name
echo "æ£å¨åæ¢ Docker å®¹å¨ . . ."
if docker inspect "$container_name" &>/dev/null; then
docker stop "$container_name" &>/dev/null
echo "å®¹å¨ $container_name 已忢ã"
else
echo "å®¹å¨ $container_name ä¸åå¨ã"
fi
echo
show_online
}
start_koipy() {
read -r -p "请è¾å
¥å®¹å¨åç§°ï¼" container_name
echo "æ£å¨å¯å¨ Docker å®¹å¨ . . ."
if docker inspect "$container_name" &>/dev/null; then
docker start "$container_name" &>/dev/null
echo "å®¹å¨ $container_name å·²å¯å¨ã"
else
echo "å®¹å¨ $container_name ä¸åå¨ã"
fi
echo
show_online
}
restart_koipy() {
read -r -p "请è¾å
¥å®¹å¨åç§°ï¼" container_name
echo "æ£å¨éæ°å¯å¨ Docker å®¹å¨ . . ."
if docker inspect "$container_name" &>/dev/null; then
docker restart "$container_name" &>/dev/null
echo "å®¹å¨ $container_name 已鿰å¯å¨ã"
else
echo "å®¹å¨ $container_name ä¸åå¨ã"
fi
echo
show_online
}
reinstall_koipy() {
cleanup
build_docker
start_docker
}
show_online() {
echo
echo "ä¸é®èæ¬åºç°ä»»ä½é®é¢è¯·è½¬æå¨æå»ºï¼æç±è«è½å©ã"
echo
echo "欢è¿ä½¿ç¨ Koipy Docker ä¸é®å®è£
èæ¬ã"
echo
echo "è¯·éæ©éè¦è¿è¡çæä½:"
echo " 1) å®è£
Koipy"
echo " 2) å¸è½½ Koipy"
echo " 3) 忢 Koipy"
echo " 4) å¯å¨ Koipy"
echo " 5) éå¯ Koipy"
echo " 6) éè£
Koipy"
echo " 7) éåºèæ¬"
echo
echo "Versionï¼1.0.0"
echo
read -r -p "请è¾å
¥ç¼å·: " N
case $N in
1) start_installation ;;
2) cleanup ;;
3) stop_koipy ;;
4) start_koipy ;;
5) restart_koipy ;;
6) reinstall_koipy ;;
7) exit 0 ;;
*) echo "è¾å
¥é误ï¼è¯·éæ°éæ©ã" ; sleep 2; show_online ;;
esac
}
# å¯å¨èå
show_online