feat(management): add support for control panel asset synchronization

- Introduced `EnsureLatestManagementHTML` to sync `management.html` asset from the latest GitHub release.
- Added config option `DisableControlPanel` to toggle control panel functionality.
- Serve management control panel via `/management.html` endpoint, with automatic download and update mechanism.
- Updated `.gitignore` to include `static/*` directory for control panel assets.
This commit is contained in:
Luis Pater
2025-10-01 03:18:39 +08:00
parent 7c157d6ab1
commit c589c0d998
6 changed files with 296 additions and 1 deletions

View File

@@ -4,6 +4,7 @@
package main
import (
"context"
"flag"
"fmt"
"os"
@@ -13,6 +14,7 @@ import (
"github.com/router-for-me/CLIProxyAPI/v6/internal/cmd"
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
"github.com/router-for-me/CLIProxyAPI/v6/internal/logging"
"github.com/router-for-me/CLIProxyAPI/v6/internal/managementasset"
_ "github.com/router-for-me/CLIProxyAPI/v6/internal/translator"
"github.com/router-for-me/CLIProxyAPI/v6/internal/usage"
"github.com/router-for-me/CLIProxyAPI/v6/internal/util"
@@ -114,6 +116,13 @@ func main() {
}
usage.SetStatisticsEnabled(cfg.UsageStatisticsEnabled)
staticDir := managementasset.StaticDir(configFilePath)
if !cfg.RemoteManagement.DisableControlPanel {
go managementasset.EnsureLatestManagementHTML(context.Background(), staticDir)
} else {
log.Debug("management control panel disabled; skip asset sync")
}
if err = logging.ConfigureLogOutput(cfg.LoggingToFile); err != nil {
log.Fatalf("failed to configure log output: %v", err)
}