PHPWord

Go installation

之後CMD 打 go version 確定安裝成功

建立程式碼檔案 main.go

package main

 

import (

"fmt"

"net/http"

"os/exec"

)

 

// 設定安全金,必須與你的 Linux PHP 網站一致

const SecurityToken = "你的自訂安全金123"

 

func main() {

// 1. 啟動伺服器路由

http.HandleFunc("/start", func(w http.ResponseWriter, r *http.Request) {

token := r.URL.Query().Get("token")

if token != SecurityToken {

http.Error(w, "拒絕存取:金錯誤", http.StatusForbidden)

return

}

 

// 執行 Windows 批次檔。/c 代表執行完後關閉 cmd 視窗,start 用於在新視窗開啟遊戲避免卡住 Go 程式

cmd := exec.Command("cmd", "/c", "start", "", "C:\\PalworldServer\\StartServer.bat")

err := cmd.Start()

if err != nil {

w.Write([]byte(fmt.Sprintf("啟動失敗: %s", err.Error())))

return

}

w.Write([]byte("Palworld 伺服器啟動指令已成功發送"))

})

 

// 2. 關閉伺服器路由 (使用 PowerShell 溫柔關閉,非暴力 Taskkill)

http.HandleFunc("/stop", func(w http.ResponseWriter, r *http.Request) {

token := r.URL.Query().Get("token")

if token != SecurityToken {

http.Error(w, "拒絕存取:金錯誤", http.StatusForbidden)

return

}

 

// 使用 PowerShell Stop-Process,這比 taskkill 溫柔,能觸發遊戲存檔機制

cmd := exec.Command("powershell", "-Command", "Stop-Process -Name 'PalServer-Win64-Shipping' -ErrorAction SilentlyContinue")

err := cmd.Run()

if err != nil {

// 如果找不到進程,代表原本就沒開,一樣回傳成功

w.Write([]byte("已送出關服指令,或伺服器原本就未開啟"))

return

}

w.Write([]byte("Palworld 伺服器已成功關閉並存檔"))

})

 

// 監聽區域網路的所有 IPPort 設定為 3000

fmt.Println("Palworld Windows 代理端已在 Port 3000 啟動...")

err := http.ListenAndServe("0.0.0.0:3000", nil)

if err != nil {

fmt.Println("伺服器啟動失敗:", err)

}

}


 

 

 


如何 建立 自訂安全金鑰
方法:用鍵盤隨機亂打(最簡單快截)

你可以直接在鍵盤上英文字母、數字交替亂打,組成一組 32 字元以上 的長密碼。

範例:

 

qetuopaldj3740vnb6g8f3xbmkfhslao

 

 

測試用的 test.bat

@echo off

:: 設定編碼為 UTF-8,防止中文變成亂碼

chcp 65001 > null

 

echo ===================================================

echo [測試中] Palworld 伺服器啟動指令已成功傳達到 Windows!

echo ===================================================

echo.

echo 系統正在模擬遊戲伺服器啟動...

echo.

 

:: 建立一個測試成功的文字檔,用來雙重確認

echo 伺服器於 %date% %time% 成功透過網頁啟動 > C:\PalworldServer\test_success.txt

 

:: 倒數 5 秒讓你看到視窗,隨後視窗會自動關閉

timeout /t 5

 

echo 測試完成,視窗即將關閉。

exit

 

 

 

 

將 main.go 轉化做 exe

go build -o pal_agent.exe main.go


進階技巧:如何讓 Go 程式在 Windows 背景隱形執行?

如果你直接點兩下 pal_agent.exe,畫面上會留下一個黑色的 CMD 視窗。如果你希望它完全隱形,且 Windows 開機時自動在背景啟動,可以這樣做:

pal_agent.exe

同一

資料夾內,建立一個文字檔,命名為

start_agent.vbs

貼入以下內容(這會隱藏黑視窗):

vbs

Set WshShell = CreateObject("WScript.Shell")

WshShell.Run "pal_agent.exe", 0, False

請謹慎使用程式碼。

按下

Win + R

鍵,輸入

 

shell:startup

 

回車,這會打開

Windows

的「啟動」資料夾。

把這個

start_agent.vbs

檔案

建立捷徑

放到「啟動」資料夾內。以後

Windows

只要開機,這個

Go

代理程式就會自動在背景完全隱形運作!