Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ Go to the [Releases](https://github.com/JavBoss/pornboss/releases) page, downloa

After launch, Pornboss will try to open your browser automatically. If it does not, open the local address shown in the terminal manually. Keep the terminal window open while Pornboss is running.

The release package includes a `config.toml` file in its root directory. By default `port = 0`, so Pornboss uses a random startup port. To use a fixed port, set it like this:

```text
port = 17654
```

### 3. Add Your Media Folders

Open `Global Settings` -> `Directory Management`, then add the local folders that store your videos. Scanning runs in the background, and indexed videos are available immediately without waiting for the full scan to finish.
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@ Pornboss 集成 mpv 播放能力,点击视频即可调用轻量、高性能的

启动成功后,程序会自动尝试打开浏览器。如果没有自动打开,可以手动访问终端里显示的本地地址。运行过程中请不要关闭终端窗口。

发布包根目录会包含 `config.toml` 文件。默认 `port = 0`,启动时使用随机端口;如果需要固定端口,改成例如:

```text
port = 17654
```

### 3. 添加资源目录

进入“全局设置” -> “目录管理”,添加存放视频的本地文件夹。扫描任务会在后台运行,已入库的视频可以直接使用,不需要等待全部扫描完成。
Expand Down
54 changes: 49 additions & 5 deletions cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"os"
"os/signal"
"path/filepath"
"strconv"
"syscall"
"time"

Expand All @@ -27,6 +28,7 @@ import (
"pornboss/internal/manager"

"github.com/gin-gonic/gin"
"github.com/pelletier/go-toml/v2"
"gopkg.in/natefinch/lumberjack.v2"
)

Expand Down Expand Up @@ -143,7 +145,10 @@ func main() {
}()

if gin.Mode() == gin.ReleaseMode {
listenAddr := releaseListenAddr(*addr)
listenAddr, err := releaseListenAddr(*addr, baseDir)
if err != nil {
logger.Fatalf("resolve release listen address: %v", err)
}
listener, err := net.Listen("tcp", listenAddr)
if err != nil {
logger.Fatalf("listen on %s: %v", listenAddr, err)
Expand Down Expand Up @@ -204,15 +209,54 @@ func buildLogger(baseDir string) (*log.Logger, func(), error) {
return logger, func() { _ = rotator.Close() }, nil
}

func releaseListenAddr(addr string) string {
func releaseListenAddr(addr string, baseDir string) (string, error) {
host, _, err := net.SplitHostPort(addr)
if err != nil {
return ":0"
host = ""
}

port, configured, err := releaseConfigPort(baseDir)
if err != nil {
return "", err
}
if configured {
if host == "" {
return net.JoinHostPort("", strconv.Itoa(port)), nil
}
return net.JoinHostPort(host, strconv.Itoa(port)), nil
}

if host == "" {
return ":0"
return ":0", nil
}
return net.JoinHostPort(host, "0"), nil
}

func releaseConfigPort(baseDir string) (int, bool, error) {
if baseDir == "" {
return 0, false, nil
}
data, err := os.ReadFile(filepath.Join(baseDir, "config.toml"))
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return 0, false, nil
}
return 0, false, fmt.Errorf("read config: %w", err)
}

var cfg struct {
Port int `toml:"port"`
}
if err := toml.Unmarshal(data, &cfg); err != nil {
return 0, false, fmt.Errorf("parse config TOML: %w", err)
}
if cfg.Port == 0 {
return 0, false, nil
}
if cfg.Port < 1 || cfg.Port > 65535 {
return 0, false, fmt.Errorf("invalid config port %d", cfg.Port)
}
return net.JoinHostPort(host, "0")
return cfg.Port, true, nil
}

func resolveBaseDir() (string, error) {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ require (
github.com/h2non/filetype v1.1.3
github.com/mattn/go-ieproxy v0.0.12
github.com/mattn/go-sqlite3 v1.14.22
github.com/pelletier/go-toml/v2 v2.2.4
golang.org/x/net v0.42.0
golang.org/x/sys v0.35.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1
Expand Down Expand Up @@ -36,7 +37,6 @@ require (
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/quic-go/qpack v0.5.1 // indirect
github.com/quic-go/quic-go v0.54.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
Expand Down
Loading
Loading