diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b27628b --- /dev/null +++ b/.env.example @@ -0,0 +1,84 @@ +# 端口号 +PORT=3000 +# 前端基础URL +FRONTEND_BASE_URL=https://your-frontend-url.com + + +# 调试相关配置 +# 调试模式 +DEBUG=true +# 启用pprof +ENABLE_PPROF=true +# 内存缓存启用 +MEMORY_CACHE_ENABLED=true + + +# 数据库相关配置 +# 数据库连接字符串 +SQL_DSN=mysql://user:password@tcp(127.0.0.1:3306)/dbname?parseTime=true +# 日志数据库连接字符串 +LOG_SQL_DSN=mysql://user:password@tcp(127.0.0.1:3306)/logdb?parseTime=true +# SQLite数据库路径 +SQLITE_PATH=/path/to/sqlite.db +# 数据库最大空闲连接数 +SQL_MAX_IDLE_CONNS=100 +# 数据库最大打开连接数 +SQL_MAX_OPEN_CONNS=1000 +# 数据库连接最大生命周期(秒) +SQL_MAX_LIFETIME=60 + + +# Redis相关配置 +# Redis连接字符串 +REDIS_CONN_STRING=redis://user:password@localhost:6379/0 +# 同步频率(单位:秒) +SYNC_FREQUENCY=60 + + +# 会话相关配置 +# 会话秘密 +SESSION_SECRET=random_string + + +# 任务和功能配置 +# 批量更新启用 +BATCH_UPDATE_ENABLED=true +# 批量更新间隔(单位:秒) +BATCH_UPDATE_INTERVAL=5 +# 更新任务启用 +UPDATE_TASK=true +# 禁用通道阈值 +CHANNEL_DISABLE_THRESHOLD=5.0 + + +# 其他配置 +# 通道更新频率(单位:秒) +CHANNEL_UPDATE_FREQUENCY=30 +# 通道测试频率(单位:秒) +CHANNEL_TEST_FREQUENCY=10 +# 生成默认令牌 +GENERATE_DEFAULT_TOKEN=false +# 气候模式设置 +GEMINI_SAFETY_SETTING=BLOCK_NONE +# 文本生成安全设置 +COHERE_SAFETY_SETTING=NONE + + +# 节点类型 +# 如果是主节点则为true +NODE_TYPE=master + + +# SMTP配置(可选) +# SMTP服务器地址 +SMTP_SERVER=smtp.example.com +# SMTP端口 +SMTP_PORT=587 +# 是否启用SMTP SSL +SMTP_SSL_ENABLED=false +# SMTP账户 +SMTP_ACCOUNT=user@example.com +# SMTP发件人地址 +SMTP_FROM=admin@example.com +# SMTP令牌 +SMTP_TOKEN=your-smtp-token diff --git a/.gitignore b/.gitignore index 16cbc67..ac995ac 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ upload build *.db-journal logs -web/dist \ No newline at end of file +web/dist +.env diff --git a/go.mod b/go.mod index 4277a88..66a6ee1 100644 --- a/go.mod +++ b/go.mod @@ -63,6 +63,7 @@ require ( github.com/jackc/puddle/v2 v2.2.1 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect + github.com/joho/godotenv v1.5.1 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/leodido/go-urn v1.4.0 // indirect diff --git a/go.sum b/go.sum index fedd195..1403bc0 100644 --- a/go.sum +++ b/go.sum @@ -111,6 +111,8 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= diff --git a/main.go b/main.go index c7d6942..2a62309 100644 --- a/main.go +++ b/main.go @@ -3,10 +3,6 @@ package main import ( "embed" "fmt" - "github.com/bytedance/gopkg/util/gopool" - "github.com/gin-contrib/sessions" - "github.com/gin-contrib/sessions/cookie" - "github.com/gin-gonic/gin" "log" "net/http" "one-api/common" @@ -19,6 +15,12 @@ import ( "os" "strconv" + "github.com/bytedance/gopkg/util/gopool" + "github.com/gin-contrib/sessions" + "github.com/gin-contrib/sessions/cookie" + "github.com/gin-gonic/gin" + "github.com/joho/godotenv" + _ "net/http/pprof" ) @@ -29,6 +31,11 @@ var buildFS embed.FS var indexPage []byte func main() { + err := godotenv.Load(".env") + if err != nil { + common.SysLog("Can't load .env file") + } + common.SetupLogger() common.SysLog("New API " + common.Version + " started") if os.Getenv("GIN_MODE") != "debug" { @@ -38,7 +45,7 @@ func main() { common.SysLog("running in debug mode") } // Initialize SQL Database - err := model.InitDB() + err = model.InitDB() if err != nil { common.FatalLog("failed to initialize database: " + err.Error()) }