diff --git a/install-package/fpk/fbin/ICON.PNG b/install-package/fpk/fbin/ICON.PNG new file mode 100644 index 00000000..7710a523 Binary files /dev/null and b/install-package/fpk/fbin/ICON.PNG differ diff --git a/install-package/fpk/fbin/ICON_256.PNG b/install-package/fpk/fbin/ICON_256.PNG new file mode 100644 index 00000000..7710a523 Binary files /dev/null and b/install-package/fpk/fbin/ICON_256.PNG differ diff --git a/install-package/fpk/fbin/app/.DS_Store b/install-package/fpk/fbin/app/.DS_Store new file mode 100644 index 00000000..114c66b0 Binary files /dev/null and b/install-package/fpk/fbin/app/.DS_Store differ diff --git a/install-package/fpk/fbin/app/ui/.DS_Store b/install-package/fpk/fbin/app/ui/.DS_Store new file mode 100644 index 00000000..d5698e5c Binary files /dev/null and b/install-package/fpk/fbin/app/ui/.DS_Store differ diff --git a/install-package/fpk/fbin/app/ui/config b/install-package/fpk/fbin/app/ui/config new file mode 100644 index 00000000..e1cc93f9 --- /dev/null +++ b/install-package/fpk/fbin/app/ui/config @@ -0,0 +1,13 @@ +{ + ".url": { + "linker.Application": { + "title": "linker", + "icon": "images/icon_{0}.png", + "type": "url", + "protocol": "", + "port": "1804", + "url": "/", + "allUsers": false + } + } +} diff --git a/install-package/fpk/fbin/app/ui/images/.DS_Store b/install-package/fpk/fbin/app/ui/images/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/install-package/fpk/fbin/app/ui/images/.DS_Store differ diff --git a/install-package/fpk/fbin/app/ui/images/icon_256.png b/install-package/fpk/fbin/app/ui/images/icon_256.png new file mode 100644 index 00000000..7710a523 Binary files /dev/null and b/install-package/fpk/fbin/app/ui/images/icon_256.png differ diff --git a/install-package/fpk/fbin/app/ui/images/icon_64.png b/install-package/fpk/fbin/app/ui/images/icon_64.png new file mode 100644 index 00000000..7710a523 Binary files /dev/null and b/install-package/fpk/fbin/app/ui/images/icon_64.png differ diff --git a/install-package/fpk/fbin/cmd/config_callback b/install-package/fpk/fbin/cmd/config_callback new file mode 100644 index 00000000..f96cbfb4 --- /dev/null +++ b/install-package/fpk/fbin/cmd/config_callback @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called after the user change environment variables in application setting page. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/config_init b/install-package/fpk/fbin/cmd/config_init new file mode 100644 index 00000000..cacd4750 --- /dev/null +++ b/install-package/fpk/fbin/cmd/config_init @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called before the user change environment variables in application setting page. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/install_callback b/install-package/fpk/fbin/cmd/install_callback new file mode 100644 index 00000000..c7f9afa8 --- /dev/null +++ b/install-package/fpk/fbin/cmd/install_callback @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called after the user installs the application. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/install_init b/install-package/fpk/fbin/cmd/install_init new file mode 100644 index 00000000..9ee0f119 --- /dev/null +++ b/install-package/fpk/fbin/cmd/install_init @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called before the user installs the application. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/main b/install-package/fpk/fbin/cmd/main new file mode 100644 index 00000000..af4b5fc9 --- /dev/null +++ b/install-package/fpk/fbin/cmd/main @@ -0,0 +1,108 @@ +#!/bin/bash + +LOG_FILE="${TRIM_PKGVAR}/info.log" +PID_FILE="${TRIM_PKGVAR}/app.pid" + +# write the command to start your program here +CMD="chmod +x ${TRIM_APPDEST}/server/linker;${TRIM_APPDEST}/server/linker" + +log_msg() { + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> ${LOG_FILE} +} + +start_process() { + if status; then + return 0 + fi + + log_msg "Starting process ..." + # run cmd to start process + bash -c "${CMD}" >> ${LOG_FILE} 2>&1 & + # write pid to pidfile + printf "%s" "$!" > ${PID_FILE} + # log_msg "CMD = ${CMD}" + # log_msg "pid = $!" + return 0 +} + +stop_process() { + log_msg "Stopping process ..." + + if [ -r "${PID_FILE}" ]; then + pid=$(head -n 1 "${PID_FILE}" | tr -d '[:space:]') + + log_msg "pid=${pid}" + if ! check_process "${pid}"; then + # process not exist, delete pidfile + rm -f "${PID_FILE}" + log_msg "remove pid file 1" + return + fi + + log_msg "send TERM signal to PID:${pid}..." + kill -TERM ${pid} >> ${LOG_FILE} 2>&1 + + local count=0 + while check_process "${pid}" && [ $count -lt 10 ]; do + sleep 1 + count=$((count + 1)) + log_msg "waiting process terminal... (${count}s/10s)" + done + + if check_process "${pid}"; then + log_msg "send KILL signal to PID:${pid}..." + kill -KILL "${pid}" + sleep 1 + rm -f "${PID_FILE}" + else + log_msg "process killed... " + fi + fi + + return 0 +} + +check_process() { + local pid=$1 + if kill -0 "${pid}" 2>/dev/null; then + return 0 # process exist + else + return 1 # process not exist + fi +} + +status() { + if [ -f "${PID_FILE}" ]; then + pid=$(head -n 1 "${PID_FILE}" | tr -d '[:space:]') + if check_process "${pid}"; then + return 0 + else + # Process is not running but pidfile exists - clean it up + rm -f "${PID_FILE}" + fi + fi + + return 1 +} + +case $1 in +start) + # run start command. exit 0 if success, exit 1 if failed + start_process + ;; +stop) + # run stop command. exit 0 if success, exit 1 if failed + stop_process + ;; +status) + # check application status command. exit 0 if running, exit 3 if not running + if status; then + exit 0 + else + exit 3 + fi + ;; +*) + exit 1 + ;; +esac \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/uninstall_callback b/install-package/fpk/fbin/cmd/uninstall_callback new file mode 100644 index 00000000..52f5bf07 --- /dev/null +++ b/install-package/fpk/fbin/cmd/uninstall_callback @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called after the user uninstalls the application. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/uninstall_init b/install-package/fpk/fbin/cmd/uninstall_init new file mode 100644 index 00000000..52f5bf07 --- /dev/null +++ b/install-package/fpk/fbin/cmd/uninstall_init @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called after the user uninstalls the application. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/upgrade_callback b/install-package/fpk/fbin/cmd/upgrade_callback new file mode 100644 index 00000000..80ae554e --- /dev/null +++ b/install-package/fpk/fbin/cmd/upgrade_callback @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called after the user upgrades the application. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/cmd/upgrade_init b/install-package/fpk/fbin/cmd/upgrade_init new file mode 100644 index 00000000..997e45db --- /dev/null +++ b/install-package/fpk/fbin/cmd/upgrade_init @@ -0,0 +1,5 @@ +#!/bin/bash + +### This script is called before the user upgrades the application. + +exit 0 \ No newline at end of file diff --git a/install-package/fpk/fbin/config/privilege b/install-package/fpk/fbin/config/privilege new file mode 100644 index 00000000..0a28cda0 --- /dev/null +++ b/install-package/fpk/fbin/config/privilege @@ -0,0 +1,8 @@ +{ + "defaults": + { + "run-as": "root" + }, + "username": "linker-bin", + "groupname": "linker-bin" +} \ No newline at end of file diff --git a/install-package/fpk/fbin/config/resource b/install-package/fpk/fbin/config/resource new file mode 100644 index 00000000..2fa0f86a --- /dev/null +++ b/install-package/fpk/fbin/config/resource @@ -0,0 +1,18 @@ +{ + "data-share": + { + "shares": + [ + { + "name": "linker-bin", + "permission": + { + "rw": + [ + "linker-bin" + ] + } + } + ] + } +} \ No newline at end of file diff --git a/install-package/fpk/fbin/manifest b/install-package/fpk/fbin/manifest new file mode 100644 index 00000000..8603a595 --- /dev/null +++ b/install-package/fpk/fbin/manifest @@ -0,0 +1,15 @@ +appname = linker +version = {version} +display_name = Linker +desc = 极具特色的,P2P打洞(UDP+TCP、IPV4+IPV6) + 服务器转发,实现的异地组网、内网穿透。让你那些散落在世界各地的联网设备就像在隔壁房间一样轻松访问。 +arch = x86_64 +source = thirdparty +maintainer=snltty +maintainer_url=https://linker.snltty.com +distributor=snltty +distributor_url=https://linker.snltty.com +desktop_uidir=ui +desktop_applaunchname=linker.bin.Application + +service_port=1804 +checkport=true \ No newline at end of file diff --git a/shells/publish-fpk.sh b/shells/publish-fpk.sh index ac3247e0..ad7ae5bf 100644 --- a/shells/publish-fpk.sh +++ b/shells/publish-fpk.sh @@ -31,7 +31,7 @@ do mkdir -p public/publish-fpk/bin/${r} - cp -rf install-package/fpk/bin/* public/publish-fpk/bin/${r}/ + cp -rf install-package/fpk/fbin/* public/publish-fpk/bin/${r}/ cp -rf public/publish/${r}/* public/publish-fpk/bin/${r}/app/server/ sed -i "s|{version}|1.9.7|g" public/publish-fpk/bin/${r}/manifest diff --git a/shells/version.txt b/shells/version.txt index 20a7d44e..832a8757 100644 --- a/shells/version.txt +++ b/shells/version.txt @@ -1,5 +1,5 @@ v1.9.7 -2025-12-09 11:23:21 +2025-12-09 11:33:37 1. 一些累计更新,一些BUG修复 2. 重构中继和穿透的多节点模式 3. 中继连接合并到隧道协议中 diff --git a/shells/ymls/publish-fpk.sh b/shells/ymls/publish-fpk.sh index 04faa25b..6561c7d5 100644 --- a/shells/ymls/publish-fpk.sh +++ b/shells/ymls/publish-fpk.sh @@ -31,7 +31,7 @@ do mkdir -p public/publish-fpk/bin/${r} - cp -rf install-package/fpk/bin/* public/publish-fpk/bin/${r}/ + cp -rf install-package/fpk/fbin/* public/publish-fpk/bin/${r}/ cp -rf public/publish/${r}/* public/publish-fpk/bin/${r}/app/server/ sed -i "s|{version}|{{version}}|g" public/publish-fpk/bin/${r}/manifest