Skip to content

Instantly share code, notes, and snippets.

@Fndroid
Last active November 28, 2021 02:53
Show Gist options
  • Save Fndroid/2119fcb5ccb5a543a8f6a609418ae43f to your computer and use it in GitHub Desktop.
Save Fndroid/2119fcb5ccb5a543a8f6a609418ae43f to your computer and use it in GitHub Desktop.
cfw tun installer
#!/bin/bash
COMMAND="$1"
CFW_PATH="$2"
USER_HOME=$(getent passwd $SUDO_USER | cut -d: -f6)
SOURCE="$2/resources/static/files/linux/x64/service"
DEST="$USER_HOME/.config/clash"
INSTALLER_PATH="$CFW_PATH/resources/static/files/linux/common/service-installer"
PLIST_PATH="$INSTALLER_PATH/scripts/clash-core-service.service"
BIN_NAME="clash-core-service"
read -r -d '' PLIST_CONTENT << EOM
[Unit]
Description=Clash core service created by Clash for Windows
After=network-online.target nftables.service iptabels.service
[Service]
Type=simple
ExecStartPre=+/usr/lib/clash/setup-cgroup.sh
ExecStart=/usr/bin/bypass-proxy $DEST/service/$BIN_NAME
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOM
if [ "$COMMAND" = "install" ]; then
cp -R $SOURCE $DEST
echo "$PLIST_CONTENT" > "$PLIST_PATH"
$INSTALLER_PATH/installer.sh install
systemctl enable $BIN_NAME
systemctl start $BIN_NAME
fi
if [ "$COMMAND" = "uninstall" ]; then
$INSTALLER_PATH/installer.sh uninstall
rm -rf $PLIST_PATH
fi
#!/bin/bash
COMMAND="$1"
UANMEA=$(uname -a)
ARCH="arm64"
DEST=$HOME/.config/clash/service
PLIST=/Library/LaunchDaemons/com.lbyczf.cfw.helper.plist
if [[ $UANMEA == *"x86_64" ]]; then
ARCH="x64"
fi
SOURCE=/Applications/Clash\ for\ Windows.app/Contents/Resources/static/files/darwin/$ARCH/service
read -r -d '' PLIST_CONTENT << EOM
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.lbyczf.cfw.helper</string>
<key>Program</key>
<string>$DEST/clash-core-service</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>HardResourceLimits</key>
<dict>
<key>NumberOfFiles</key>
<integer>10240</integer>
</dict>
<key>SoftResourceLimits</key>
<dict>
<key>NumberOfFiles</key>
<integer>10240</integer>
</dict>
</dict>
</plist>
EOM
if [ "$COMMAND" = "install" ]; then
rm -rf "$DEST"
cp -R "$SOURCE" "$DEST"
echo $PLIST_CONTENT > $PLIST
launchctl unload $PLIST &>/dev/null
launchctl load $PLIST
fi
if [ "$COMMAND" = "uninstall" ]; then
launchctl unload $PLIST
rm -rf "$DEST"
rm -rf $PLIST
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment