diff --git a/.env.example b/.env.example index c00de47..80ca4d4 100644 --- a/.env.example +++ b/.env.example @@ -20,4 +20,5 @@ HTTPS_PROXY= NO_PROXY= # misc -REPO_URL=https://github.com/govdbot/govd \ No newline at end of file +REPO_URL=https://github.com/govdbot/govd +PROFILER_PORT=0 \ No newline at end of file diff --git a/README.md b/README.md index 2e67905..9d0a2ac 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ sh build.sh ``` ## installation with docker + first build the image using the dockerfile ```bash @@ -71,6 +72,7 @@ docker compose up -d | `HTTPS_PROXY` | http proxy (optional) | | | `NO_PROXY` | no proxy domains (optional) | | | `REPO_URL` | project repository url | `https://github.com/govdbot/govd` | +| `PROFILER_PORT` | port for profiler http server (pprof) | `0` _(disabled)_ | **note:** to avoid limits on files, you should host your own telegram botapi. public bot instance is currently running under a botapi fork, [tdlight-telegram-bot-api](https://github.com/tdlight-team/tdlight-telegram-bot-api), but you can use the official botapi client too. diff --git a/main.go b/main.go index d7cac8f..07d69d4 100644 --- a/main.go +++ b/main.go @@ -1,10 +1,16 @@ package main import ( + "fmt" "govd/bot" "govd/database" "govd/util" "log" + "net/http" + "os" + "strconv" + + _ "net/http/pprof" "github.com/joho/godotenv" ) @@ -14,6 +20,12 @@ func main() { if err != nil { log.Fatal("error loading .env file") } + profilerPort, err := strconv.Atoi(os.Getenv("PROFILER_PORT")) + if err == nil && profilerPort > 0 { + go func() { + http.ListenAndServe(fmt.Sprintf("localhost:%d", profilerPort), nil) + }() + } util.CleanupDownloadsDir() util.StartDownloadsCleanup() ok := util.CheckFFmpeg()