diff --git a/go.mod b/go.mod index 1ec8095..2601b5e 100644 --- a/go.mod +++ b/go.mod @@ -3,24 +3,24 @@ module github.com/dushixiang/pika go 1.26 require ( - github.com/coreos/go-oidc/v3 v3.18.0 + github.com/coreos/go-oidc/v3 v3.19.0 github.com/fsnotify/fsnotify v1.10.1 github.com/go-errors/errors v1.5.1 github.com/go-orz/cache v0.0.4 - github.com/go-orz/orz v0.3.3 - github.com/go-orz/orz/drivers/postgres v0.0.0-20260523063730-d2b4b4cd6832 - github.com/go-orz/orz/drivers/sqlite v0.0.0-20260523063730-d2b4b4cd6832 + github.com/go-orz/orz v0.4.2 + github.com/go-orz/orz/drivers/postgres v0.0.0-20260531071203-710ee96634cd + github.com/go-orz/orz/drivers/sqlite v0.0.0-20260531071203-710ee96634cd github.com/go-orz/toolkit v0.1.0 github.com/go-playground/locales v0.14.1 github.com/go-playground/universal-translator v0.18.1 - github.com/go-playground/validator/v10 v10.30.2 + github.com/go-playground/validator/v10 v10.30.3 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/google/uuid v1.6.0 github.com/google/wire v0.7.0 github.com/gorilla/websocket v1.5.3 github.com/jpillora/backoff v1.0.0 - github.com/kardianos/service v1.2.4 - github.com/labstack/echo/v4 v4.15.2 + github.com/kardianos/service v1.3.0 + github.com/labstack/echo/v5 v5.2.1 github.com/libdns/alidns v1.0.7 github.com/libdns/cloudflare v0.2.2 github.com/libdns/huaweicloud v1.0.1 @@ -28,21 +28,21 @@ require ( github.com/libdns/tencentcloud v1.4.3 github.com/minio/selfupdate v0.6.0 github.com/oschwald/geoip2-golang v1.13.0 - github.com/prometheus-community/pro-bing v0.8.0 + github.com/prometheus-community/pro-bing v0.9.1 github.com/robfig/cron/v3 v3.0.1 - github.com/shirou/gopsutil/v4 v4.26.4 + github.com/shirou/gopsutil/v4 v4.26.6 github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 github.com/spf13/cobra v1.10.2 github.com/valyala/fasttemplate v1.2.2 - go.etcd.io/bbolt v1.4.3 + go.etcd.io/bbolt v1.5.0 go.uber.org/zap v1.28.0 - golang.org/x/crypto v0.52.0 + golang.org/x/crypto v0.53.0 golang.org/x/oauth2 v0.36.0 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 gorm.io/datatypes v1.2.7 - gorm.io/gorm v1.31.1 + gorm.io/gorm v1.31.2 ) require ( @@ -60,18 +60,16 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.9.2 // indirect + github.com/jackc/pgx/v5 v5.10.0 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/labstack/gommon v0.5.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/ncruces/go-strftime v1.0.0 // indirect github.com/oschwald/maxminddb-golang v1.13.1 // indirect - github.com/pelletier/go-toml/v2 v2.3.1 // indirect + github.com/pelletier/go-toml/v2 v2.4.3 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect @@ -87,16 +85,16 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.55.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/text v0.37.0 // indirect + golang.org/x/net v0.56.0 // indirect + golang.org/x/sync v0.22.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/text v0.39.0 // indirect golang.org/x/time v0.15.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gorm.io/driver/mysql v1.6.0 // indirect gorm.io/driver/postgres v1.6.0 // indirect - modernc.org/libc v1.72.3 // indirect + modernc.org/libc v1.74.0 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect - modernc.org/sqlite v1.50.1 // indirect + modernc.org/sqlite v1.53.0 // indirect ) diff --git a/go.sum b/go.sum index 23c6b88..c39dba7 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,8 @@ aead.dev/minisign v0.3.0 h1:8Xafzy5PEVZqYDNP60yJHARlW1eOQtsKNp/Ph2c0vRA= aead.dev/minisign v0.3.0/go.mod h1:NLvG3Uoq3skkRMDuc3YHpWUTMTrSExqm+Ij73W13F6Y= filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo= filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc= -github.com/coreos/go-oidc/v3 v3.18.0 h1:V9orjXynvu5wiC9SemFTWnG4F45v403aIcjWo0d41+A= -github.com/coreos/go-oidc/v3 v3.18.0/go.mod h1:DYCf24+ncYi+XkIH97GY1+dqoRlbaSI26KVTCI9SrY4= +github.com/coreos/go-oidc/v3 v3.19.0 h1:F/xyOi3x1UnG1U27YVnM1N6bHiL1K2upi6U/0qr8r+I= +github.com/coreos/go-oidc/v3 v3.19.0/go.mod h1:DYCf24+ncYi+XkIH97GY1+dqoRlbaSI26KVTCI9SrY4= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -31,12 +31,12 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-orz/cache v0.0.4 h1:A8EwJQPiuctmnukFqkWFv4yoOKVen7DEpCVjSJAkAtw= github.com/go-orz/cache v0.0.4/go.mod h1:qY5/YWUiMMFDHnWMCUJQakXILwJ/sIvbNCR04k08fBs= -github.com/go-orz/orz v0.3.3 h1:tlyKm9bq7avVzm5RjNA/Xxfg5TqRphPXUCYnX0td8rs= -github.com/go-orz/orz v0.3.3/go.mod h1:U45W63IsFB/nv7fCXloo33w9mL6iO0YLQO+br6+FhpI= -github.com/go-orz/orz/drivers/postgres v0.0.0-20260523063730-d2b4b4cd6832 h1:Euq7ZKbt5g5ItIYMPEyhfSa6RUsBYuuMrTZ40rsRvFA= -github.com/go-orz/orz/drivers/postgres v0.0.0-20260523063730-d2b4b4cd6832/go.mod h1:pNs4gR9r6swazJNbh1j5ZY6QGnMLCZeJRnJEwD7rNbc= -github.com/go-orz/orz/drivers/sqlite v0.0.0-20260523063730-d2b4b4cd6832 h1:OoRJA5V5BUtvf8sh7gtennqKuDiWZ1iVlQgJDaT0V+8= -github.com/go-orz/orz/drivers/sqlite v0.0.0-20260523063730-d2b4b4cd6832/go.mod h1:TdawPivyCwRaM975uJMHN5h1xWUyAtih0aOrfGoCh9o= +github.com/go-orz/orz v0.4.2 h1:9w+Mnm2l2cpocytmQ4vviyEjXFkjZalV4UipZEHF52Y= +github.com/go-orz/orz v0.4.2/go.mod h1:CcNuCMx7MkDvXAHrl7y3sJ+CaE8Zt0koSoP4c0YtiAo= +github.com/go-orz/orz/drivers/postgres v0.0.0-20260531071203-710ee96634cd h1:v8pvK0wr08QXpb/+c0QUSb0tyZIdwby9IzKbJ17npgs= +github.com/go-orz/orz/drivers/postgres v0.0.0-20260531071203-710ee96634cd/go.mod h1:uBJjs4uCigsWubTvT6GBbAYxpSEj357b9BStnURyYF4= +github.com/go-orz/orz/drivers/sqlite v0.0.0-20260531071203-710ee96634cd h1:lj5Kyf1usMcXQpUrHW0QnXJTVJDjp5ZFjTLf9m0i3sc= +github.com/go-orz/orz/drivers/sqlite v0.0.0-20260531071203-710ee96634cd/go.mod h1:ilTUu5pIjEaTYiMIuNGNeCMzYsIbTiYN9YvvFUKYtaI= github.com/go-orz/toolkit v0.1.0 h1:u7jx6wuwgzTSMudiyqdFedgP1VmhZzUO+1r5F1Yw6mc= github.com/go-orz/toolkit v0.1.0/go.mod h1:y7MySpBCa+GpGh+l83WoaSzFBCfVGTObKa0fd1DhP0s= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= @@ -45,8 +45,8 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.30.2 h1:JiFIMtSSHb2/XBUbWM4i/MpeQm9ZK2xqPNk8vgvu5JQ= -github.com/go-playground/validator/v10 v10.30.2/go.mod h1:mAf2pIOVXjTEBrwUMGKkCWKKPs9NheYGabeB04txQSc= +github.com/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= github.com/go-sql-driver/mysql v1.10.0 h1:Q+1LV8DkHJvSYAdR83XzuhDaTykuDx0l6fkXxoWCWfw= github.com/go-sql-driver/mysql v1.10.0/go.mod h1:M+cqaI7+xxXGG9swrdeUIoPG3Y3KCkF0pZej+SK+nWk= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= @@ -76,8 +76,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw= -github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= +github.com/jackc/pgx/v5 v5.10.0 h1:VhSvgU2jSli8o3AqIEOTJr7rZwAEUVo4E4XhR94Zfr0= +github.com/jackc/pgx/v5 v5.10.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -86,16 +86,14 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/kardianos/service v1.2.4 h1:XNlGtZOYNx2u91urOdg/Kfmc+gfmuIo1Dd3rEi2OgBk= -github.com/kardianos/service v1.2.4/go.mod h1:E4V9ufUuY82F7Ztlu1eN9VXWIQxg8NoLQlmFe0MtrXc= +github.com/kardianos/service v1.3.0 h1:/LGy+xPP2TM+GLTiCZ2di7cy0Jd/qrawlTUfqKYFdTI= +github.com/kardianos/service v1.3.0/go.mod h1:E4V9ufUuY82F7Ztlu1eN9VXWIQxg8NoLQlmFe0MtrXc= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.15.2 h1:nnh2sCzGCVYnU+wCisMPiYapEg/QVo/gcI9ePKg5/T4= -github.com/labstack/echo/v4 v4.15.2/go.mod h1:Xzp1Ns1RA2c9fY7nSgUJkpkUZGNbEIVHZbtbOMPktBI= -github.com/labstack/gommon v0.5.0 h1:6VSQ2NOzsnEJ5W6+84E0RbcaDDmgB6NIAzWCczTEe6c= -github.com/labstack/gommon v0.5.0/go.mod h1:Rzlg7HHy1maLfzBYGg9NZcVuz1sA68HHhLjhcEllYE0= +github.com/labstack/echo/v5 v5.2.1 h1:TzpIksY6zLMzV0T0ycYbvTEoj9w6o6AcL5twg182VTY= +github.com/labstack/echo/v5 v5.2.1/go.mod h1:SyvlSdObGjRXeQfCCXW/sybkZdOOQZBmpKF0bvALaeo= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/libdns/alidns v1.0.7 h1:0BhTUFlWIUyb5U7wujGqsyoeZkleUR/hMCtdZDS8Oc8= @@ -110,8 +108,6 @@ github.com/libdns/tencentcloud v1.4.3 h1:xJHYLL1TdPeOtUr6Bu6dHTd1TU6/VFm7BFc2EAz github.com/libdns/tencentcloud v1.4.3/go.mod h1:Be9gY3tDa12DuAPU79RV9NZIcjY6qg5s7zKPsP26yAM= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= @@ -126,14 +122,14 @@ github.com/oschwald/geoip2-golang v1.13.0 h1:Q44/Ldc703pasJeP5V9+aFSZFmBN7DKHbNs github.com/oschwald/geoip2-golang v1.13.0/go.mod h1:P9zG+54KPEFOliZ29i7SeYZ/GM6tfEL+rgSn03hYuUo= github.com/oschwald/maxminddb-golang v1.13.1 h1:G3wwjdN9JmIK2o/ermkHM+98oX5fS+k5MbwsmL4MRQE= github.com/oschwald/maxminddb-golang v1.13.1/go.mod h1:K4pgV9N/GcK694KSTmVSDTODk4IsCNThNdTmnaBZ/F8= -github.com/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= -github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pelletier/go-toml/v2 v2.4.3 h1:GTRvJQutkOSftxIFD5xw9aepkYNuPWmVJpffdDPYVpY= +github.com/pelletier/go-toml/v2 v2.4.3/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus-community/pro-bing v0.8.0 h1:CEY/g1/AgERRDjxw5P32ikcOgmrSuXs7xon7ovx6mNc= -github.com/prometheus-community/pro-bing v0.8.0/go.mod h1:Idyxz8raDO6TgkUN6ByiEGvWJNyQd40kN9ZUeho3lN0= +github.com/prometheus-community/pro-bing v0.9.1 h1:kpuAr6AU2oRtzGihJSUcetHtjc7ku7h6PxeuW9RVrQw= +github.com/prometheus-community/pro-bing v0.9.1/go.mod h1:z79wYTxAOf6FpTng0QdIhZ3j/Nd5l3+gnFSCIT+SiSQ= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= @@ -143,8 +139,8 @@ github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWN github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4= github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI= -github.com/shirou/gopsutil/v4 v4.26.4 h1:B4SXVbcwTyrocPHEmWBC4uCYr4Xcu3MK1TXqbprAOWY= -github.com/shirou/gopsutil/v4 v4.26.4/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= +github.com/shirou/gopsutil/v4 v4.26.6 h1:Mzr/npDtQC/xpeEuQKHZt8Zo9CmPvhTj8nkR8w5TLDs= +github.com/shirou/gopsutil/v4 v4.26.6/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= @@ -175,8 +171,8 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= +go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -188,18 +184,18 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= -golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= +golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= +golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -208,19 +204,19 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.39.0 h1:UbZz4pLOvn600D6Oh6GGEI6VAmndrEBLv8/6BEXzyus= +golang.org/x/text v0.39.0/go.mod h1:3UwRclnC2g0TU9x8PZiyfOajCd1zaUNHF9cvqcQZ+ZM= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q= +golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= @@ -244,22 +240,22 @@ gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= gorm.io/driver/sqlserver v1.6.0 h1:VZOBQVsVhkHU/NzNhRJKoANt5pZGQAS1Bwc6m6dgfnc= gorm.io/driver/sqlserver v1.6.0/go.mod h1:WQzt4IJo/WHKnckU9jXBLMJIVNMVeTu25dnOzehntWw= -gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= -gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= -modernc.org/cc/v4 v4.28.2 h1:3tQ0lf2ADtoby2EtSP+J7IE2SHwEJdP8ioR59wx7XpY= -modernc.org/cc/v4 v4.28.2/go.mod h1:OnovgIhbbMXMu1aISnJ0wvVD1KnW+cAUJkIrAWh+kVI= -modernc.org/ccgo/v4 v4.34.0 h1:yRLPFZieg532OT4rp4JFNIVcquwalMX26G95WQDqwCQ= -modernc.org/ccgo/v4 v4.34.0/go.mod h1:AS5WYMyBakQ+fhsHhtP8mWB82KTGPkNNJDGfGQCe0/A= +gorm.io/gorm v1.31.2 h1:3o8FXNo9v9S858gil+3LlZA1LkCOzgb4g5BL64FgaCo= +gorm.io/gorm v1.31.2/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= +modernc.org/cc/v4 v4.29.0 h1:CXgwL8cvxmyzBQZzbSl/6xFtMCryb6u8IOqDci39cgc= +modernc.org/cc/v4 v4.29.0/go.mod h1:OnovgIhbbMXMu1aISnJ0wvVD1KnW+cAUJkIrAWh+kVI= +modernc.org/ccgo/v4 v4.34.6 h1:sBgfIwyN0TQ9C5hwIeuqyeAKyMWnbvj2fvpF4L11uzU= +modernc.org/ccgo/v4 v4.34.6/go.mod h1:SZ8YcN9NG7XVsQYdm6jYBvi8PQP1qi+kqB6OhjqI3Fk= modernc.org/fileutil v1.4.0 h1:j6ZzNTftVS054gi281TyLjHPp6CPHr2KCxEXjEbD6SM= modernc.org/fileutil v1.4.0/go.mod h1:EqdKFDxiByqxLk8ozOxObDSfcVOv/54xDs/DUHdvCUU= modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/gc/v3 v3.1.2 h1:ZtDCnhonXSZexk/AYsegNRV1lJGgaNZJuKjJSWKyEqo= -modernc.org/gc/v3 v3.1.2/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY= +modernc.org/gc/v3 v3.1.4 h1:2g65LGVSmFQrXeITAw97x7hCRvZFcyE1uDP+7Vng7JI= +modernc.org/gc/v3 v3.1.4/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY= modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks= modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= -modernc.org/libc v1.72.3 h1:ZnDF4tXn4NBXFutMMQC4vtbTFSXhhKzR73fv0beZEAU= -modernc.org/libc v1.72.3/go.mod h1:dn0dZNnnn1clLyvRxLxYExxiKRZIRENOfqQ8XEeg4Qs= +modernc.org/libc v1.74.0 h1:rkouuwU6Yqp7ZhwytqBhAiulUi/wvH2KsizSt9R4Hh0= +modernc.org/libc v1.74.0/go.mod h1:uH4t5bOx3G3g9Xcmj10YKlTcVISlRDwv8VoQJG9n8Os= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= @@ -268,8 +264,8 @@ modernc.org/opt v0.2.0 h1:tGyef5ApycA7FSEOMraay9SaTk5zmbx7Tu+cJs4QKZg= modernc.org/opt v0.2.0/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.50.1 h1:l+cQvn0sd0zJJtfygGHuQJ5AjlrwXmWPw4KP3ZMwr9w= -modernc.org/sqlite v1.50.1/go.mod h1:tcNzv5p84E0skkmJn038y+hWJbLQXQqEnQfeh5r2JLM= +modernc.org/sqlite v1.53.0 h1:20WG8N9q4ji/dEqGk4uiI0c6OPjSeLTNYGFCc3+7c1M= +modernc.org/sqlite v1.53.0/go.mod h1:xoEpOIpGrgT48H5iiyt/YXPCZPEzlfmfFwtk8Lklw8s= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= diff --git a/internal/app.go b/internal/app.go index f6b865c..4fd24df 100644 --- a/internal/app.go +++ b/internal/app.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "net/http" + "os" "strings" "time" @@ -21,8 +22,8 @@ import ( "github.com/go-errors/errors" "github.com/go-orz/orz" "github.com/go-playground/validator/v10" - "github.com/labstack/echo/v4" - "github.com/labstack/echo/v4/middleware" + "github.com/labstack/echo/v5" + "github.com/labstack/echo/v5/middleware" "go.uber.org/zap" "gorm.io/gorm" ) @@ -122,13 +123,6 @@ func setupApi(app *orz.App, components *AppComponents) error { e.Use(middleware.Recover()) e.Use(ErrorHandler(logger)) - e.Use(middleware.RecoverWithConfig(middleware.RecoverConfig{ - LogErrorFunc: func(c echo.Context, err error, stack []byte) error { - sugar := logger.Named("[PANIC RECOVER]").Sugar() - sugar.Error(fmt.Sprintf("%v %s\n", err, stack)) - return err - }, - })) webDir := assets.WebDir() if err := assets.RenderUIFilesInDir(webDir, components.PropertyService); err != nil { @@ -137,7 +131,7 @@ func setupApi(app *orz.App, components *AppComponents) error { // 静态文件服务 e.Use(middleware.StaticWithConfig(middleware.StaticConfig{ - Skipper: func(c echo.Context) bool { + Skipper: func(c *echo.Context) bool { // 不处理接口 if strings.HasPrefix(c.Request().RequestURI, "/api") { return true @@ -152,11 +146,12 @@ func setupApi(app *orz.App, components *AppComponents) error { } return false }, + Root: ".", Index: "index.html", HTML5: true, Browse: false, IgnoreBase: false, - Filesystem: http.Dir(webDir), + Filesystem: os.DirFS(webDir), })) customValidator := CustomValidator{Validator: validator.New()} @@ -209,7 +204,7 @@ func setupApi(app *orz.App, components *AppComponents) error { adminApi := e.Group("/api/admin") adminApi.Use(UnifiedAuthMiddleware(components.AccountHandler, components.ApiKeyService)) { - adminApi.GET("/version", func(c echo.Context) error { + adminApi.GET("/version", func(c *echo.Context) error { return c.JSON(http.StatusOK, orz.Map{ "version": version.GetVersion(), "agentVersion": version.GetAgentVersion(), @@ -334,7 +329,7 @@ func initDefaultProperties(ctx context.Context, components *AppComponents, logge func ErrorHandler(logger *zap.Logger) func(next echo.HandlerFunc) echo.HandlerFunc { var a = func(next echo.HandlerFunc) echo.HandlerFunc { - return func(c echo.Context) error { + return func(c *echo.Context) error { if err := next(c); err != nil { var he *echo.HTTPError if errors.As(err, &he) { @@ -479,7 +474,7 @@ func startAgentExpireCheck(ctx context.Context, components *AppComponents, logge // JWTAuthMiddleware JWT 认证中间件(必须登录) func JWTAuthMiddleware(accountHandler *handler.AccountHandler) echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { - return func(c echo.Context) error { + return func(c *echo.Context) error { // 从 Authorization header 获取 token authHeader := c.Request().Header.Get("Authorization") if authHeader == "" { @@ -513,7 +508,7 @@ func JWTAuthMiddleware(accountHandler *handler.AccountHandler) echo.MiddlewareFu // OptionalJWTAuthMiddleware 可选 JWT 认证中间件(尝试解析 token,但不强制要求) func OptionalJWTAuthMiddleware(accountHandler *handler.AccountHandler) echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { - return func(c echo.Context) error { + return func(c *echo.Context) error { // 从 Authorization header 获取 token authHeader := c.Request().Header.Get("Authorization") if authHeader != "" { @@ -542,7 +537,7 @@ func OptionalJWTAuthMiddleware(accountHandler *handler.AccountHandler) echo.Midd // APIKeyAuthMiddleware 使用 API Key 进行认证 func APIKeyAuthMiddleware(apiKeyService *service.ApiKeyService) echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { - return func(c echo.Context) error { + return func(c *echo.Context) error { authHeader := c.Request().Header.Get("Authorization") if authHeader == "" { return echo.NewHTTPError(http.StatusUnauthorized, "未提供认证令牌") @@ -567,7 +562,7 @@ func APIKeyAuthMiddleware(apiKeyService *service.ApiKeyService) echo.MiddlewareF // UnifiedAuthMiddleware 统一认证中间件:优先尝试 JWT Token,失败后尝试 API Key func UnifiedAuthMiddleware(accountHandler *handler.AccountHandler, apiKeyService *service.ApiKeyService) echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { - return func(c echo.Context) error { + return func(c *echo.Context) error { authHeader := c.Request().Header.Get("Authorization") if authHeader == "" { return echo.NewHTTPError(http.StatusUnauthorized, "未提供认证令牌") diff --git a/internal/handler/account_handler.go b/internal/handler/account_handler.go index e2e04cd..59a6d01 100644 --- a/internal/handler/account_handler.go +++ b/internal/handler/account_handler.go @@ -5,7 +5,7 @@ import ( "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" ) type AccountHandler struct { @@ -25,7 +25,7 @@ type LoginRequest struct { } // Login 用户登录(Basic Auth) -func (r AccountHandler) Login(c echo.Context) error { +func (r AccountHandler) Login(c *echo.Context) error { var req LoginRequest if err := c.Bind(&req); err != nil { return err @@ -50,7 +50,7 @@ type OIDCLoginRequest struct { } // OIDCLogin OIDC 登录回调 -func (r AccountHandler) OIDCLogin(c echo.Context) error { +func (r AccountHandler) OIDCLogin(c *echo.Context) error { var req OIDCLoginRequest if err := c.Bind(&req); err != nil { return err @@ -69,13 +69,13 @@ func (r AccountHandler) OIDCLogin(c echo.Context) error { } // GetAuthConfig 获取认证配置 -func (r AccountHandler) GetAuthConfig(c echo.Context) error { +func (r AccountHandler) GetAuthConfig(c *echo.Context) error { config := r.accountService.GetAuthConfig() return orz.Ok(c, config) } // GetOIDCAuthURL 获取 OIDC 认证 URL -func (r AccountHandler) GetOIDCAuthURL(c echo.Context) error { +func (r AccountHandler) GetOIDCAuthURL(c *echo.Context) error { authURL, err := r.accountService.GetOIDCAuthURL() if err != nil { return echo.NewHTTPError(http.StatusBadRequest, err.Error()) @@ -84,7 +84,7 @@ func (r AccountHandler) GetOIDCAuthURL(c echo.Context) error { } // GetGitHubAuthURL 获取 GitHub 认证 URL -func (r AccountHandler) GetGitHubAuthURL(c echo.Context) error { +func (r AccountHandler) GetGitHubAuthURL(c *echo.Context) error { authURL, err := r.accountService.GetGitHubAuthURL() if err != nil { return echo.NewHTTPError(http.StatusBadRequest, err.Error()) @@ -99,7 +99,7 @@ type GitHubLoginRequest struct { } // GitHubLogin GitHub 登录回调 -func (r AccountHandler) GitHubLogin(c echo.Context) error { +func (r AccountHandler) GitHubLogin(c *echo.Context) error { var req GitHubLoginRequest if err := c.Bind(&req); err != nil { return err @@ -118,7 +118,7 @@ func (r AccountHandler) GitHubLogin(c echo.Context) error { } // Logout 用户登出 -func (r AccountHandler) Logout(c echo.Context) error { +func (r AccountHandler) Logout(c *echo.Context) error { userID := c.Get("userID") if userID == nil { return orz.NewError(401, "未登录") @@ -138,7 +138,7 @@ func (r AccountHandler) ValidateToken(tokenString string) (*service.JWTClaims, e } // GetCurrentUser 获取当前登录用户信息 -func (r AccountHandler) GetCurrentUser(c echo.Context) error { +func (r AccountHandler) GetCurrentUser(c *echo.Context) error { // 从 context 中获取用户信息(由 JWT 中间件设置) userID := c.Get("userID") username := c.Get("username") diff --git a/internal/handler/agent_admin_handler.go b/internal/handler/agent_admin_handler.go index 1b6654a..703227d 100644 --- a/internal/handler/agent_admin_handler.go +++ b/internal/handler/agent_admin_handler.go @@ -10,7 +10,7 @@ import ( "github.com/dushixiang/pika/internal/models" "github.com/dushixiang/pika/internal/protocol" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -31,7 +31,7 @@ func SortAgents(agents []models.Agent) { } // Paging 探针分页查询(返回完整列表,前端实现过滤) -func (h *AgentHandler) Paging(c echo.Context) error { +func (h *AgentHandler) Paging(c *echo.Context) error { ctx := c.Request().Context() // 获取所有探针(管理员接口) @@ -47,7 +47,7 @@ func (h *AgentHandler) Paging(c echo.Context) error { } // GetForAdmin 获取探针详情(管理员接口,显示完整信息) -func (h *AgentHandler) GetForAdmin(c echo.Context) error { +func (h *AgentHandler) GetForAdmin(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -60,7 +60,7 @@ func (h *AgentHandler) GetForAdmin(c echo.Context) error { } // GetAdminLatestMetrics 获取探针最新指标(管理员接口,显示完整信息) -func (h *AgentHandler) GetAdminLatestMetrics(c echo.Context) error { +func (h *AgentHandler) GetAdminLatestMetrics(c *echo.Context) error { id := c.Param("id") metrics, ok := h.metricService.GetLatestMetrics(id) @@ -71,7 +71,7 @@ func (h *AgentHandler) GetAdminLatestMetrics(c echo.Context) error { } // SendCommand 向探针发送指令 -func (h *AgentHandler) SendCommand(c echo.Context) error { +func (h *AgentHandler) SendCommand(c *echo.Context) error { agentID := c.Param("id") cmdType := c.QueryParam("type") @@ -116,7 +116,7 @@ func (h *AgentHandler) SendCommand(c echo.Context) error { } // GetAuditResult 获取审计结果(原始数据) -func (h *AgentHandler) GetAuditResult(c echo.Context) error { +func (h *AgentHandler) GetAuditResult(c *echo.Context) error { agentID := c.Param("id") ctx := c.Request().Context() @@ -129,7 +129,7 @@ func (h *AgentHandler) GetAuditResult(c echo.Context) error { } // ListAuditResults 获取审计结果列表 -func (h *AgentHandler) ListAuditResults(c echo.Context) error { +func (h *AgentHandler) ListAuditResults(c *echo.Context) error { agentID := c.Param("id") ctx := c.Request().Context() @@ -145,7 +145,7 @@ func (h *AgentHandler) ListAuditResults(c echo.Context) error { } // UpdateInfo 更新探针信息(名称、标签、到期时间、可见性、权重、备注) -func (h *AgentHandler) UpdateInfo(c echo.Context) error { +func (h *AgentHandler) UpdateInfo(c *echo.Context) error { agentID := c.Param("id") var req struct { @@ -182,7 +182,7 @@ func (h *AgentHandler) UpdateInfo(c echo.Context) error { } // GetStatistics 获取探针统计数据 -func (h *AgentHandler) GetStatistics(c echo.Context) error { +func (h *AgentHandler) GetStatistics(c *echo.Context) error { ctx := c.Request().Context() stats, err := h.agentService.GetStatistics(ctx) if err != nil { @@ -193,7 +193,7 @@ func (h *AgentHandler) GetStatistics(c echo.Context) error { } // Delete 删除探针 -func (h *AgentHandler) Delete(c echo.Context) error { +func (h *AgentHandler) Delete(c *echo.Context) error { agentID := c.Param("id") ctx := c.Request().Context() @@ -246,7 +246,7 @@ func (h *AgentHandler) Delete(c echo.Context) error { } // CleanupOrphanedAgentMetrics 手动清除所有已删除探针残留的指标数据 -func (h *AgentHandler) CleanupOrphanedAgentMetrics(c echo.Context) error { +func (h *AgentHandler) CleanupOrphanedAgentMetrics(c *echo.Context) error { ctx := c.Request().Context() h.logger.Info("开始手动清理残留探针指标数据") @@ -264,7 +264,7 @@ func (h *AgentHandler) CleanupOrphanedAgentMetrics(c echo.Context) error { } // BatchUpdateTags 批量更新探针标签 -func (h *AgentHandler) BatchUpdateTags(c echo.Context) error { +func (h *AgentHandler) BatchUpdateTags(c *echo.Context) error { var req struct { AgentIDs []string `json:"agentIds"` Tags []string `json:"tags"` @@ -300,7 +300,7 @@ func (h *AgentHandler) BatchUpdateTags(c echo.Context) error { } // BatchUpdateVisibility 批量更新探针可见性 -func (h *AgentHandler) BatchUpdateVisibility(c echo.Context) error { +func (h *AgentHandler) BatchUpdateVisibility(c *echo.Context) error { var req struct { AgentIDs []string `json:"agentIds"` Visibility string `json:"visibility"` @@ -331,7 +331,7 @@ func (h *AgentHandler) BatchUpdateVisibility(c echo.Context) error { } // UpdateTrafficConfig 更新流量配置(管理员) -func (h *AgentHandler) UpdateTrafficConfig(c echo.Context) error { +func (h *AgentHandler) UpdateTrafficConfig(c *echo.Context) error { agentID := c.Param("id") var req struct { @@ -354,7 +354,7 @@ func (h *AgentHandler) UpdateTrafficConfig(c echo.Context) error { } // GetTrafficStats 查询流量统计(管理员接口) -func (h *AgentHandler) GetTrafficStats(c echo.Context) error { +func (h *AgentHandler) GetTrafficStats(c *echo.Context) error { agentID := c.Param("id") ctx := c.Request().Context() @@ -367,7 +367,7 @@ func (h *AgentHandler) GetTrafficStats(c echo.Context) error { } // ResetAgentTraffic 手动重置流量(管理员) -func (h *AgentHandler) ResetAgentTraffic(c echo.Context) error { +func (h *AgentHandler) ResetAgentTraffic(c *echo.Context) error { agentID := c.Param("id") ctx := c.Request().Context() diff --git a/internal/handler/agent_install_handler.go b/internal/handler/agent_install_handler.go index 9cc65f0..8bca11b 100644 --- a/internal/handler/agent_install_handler.go +++ b/internal/handler/agent_install_handler.go @@ -9,19 +9,19 @@ import ( "github.com/dushixiang/pika/internal/assets" "github.com/dushixiang/pika/pkg/version" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) // GetAgentVersion 获取 Agent 版本信息 -func (h *AgentHandler) GetAgentVersion(c echo.Context) error { +func (h *AgentHandler) GetAgentVersion(c *echo.Context) error { return orz.Ok(c, orz.Map{ "version": version.GetAgentVersion(), }) } // DownloadAgent 下载 Agent 二进制文件 -func (h *AgentHandler) DownloadAgent(c echo.Context) error { +func (h *AgentHandler) DownloadAgent(c *echo.Context) error { filename := c.Param("filename") if filename == "" || strings.ContainsAny(filename, `/\`) { return orz.NewError(400, "无效的 Agent 文件名") @@ -63,7 +63,7 @@ func (h *AgentHandler) DownloadAgent(c echo.Context) error { } // getServerURL 获取服务器地址(仅从配置读取) -func (h *AgentHandler) getServerURL(c echo.Context) string { +func (h *AgentHandler) getServerURL(c *echo.Context) string { // 优先读取配置的服务端地址 config, err := h.propertyService.GetAgentInstallConfig(c.Request().Context()) if err == nil && config.ServerURL != "" { @@ -80,7 +80,7 @@ func bashSingleQuote(value string) string { return "'" + strings.ReplaceAll(value, "'", "'\"'\"'") + "'" } -func (h *AgentHandler) GetServerUrl(c echo.Context) error { +func (h *AgentHandler) GetServerUrl(c *echo.Context) error { serverUrl := h.getServerURL(c) return orz.Ok(c, orz.Map{ "serverUrl": serverUrl, @@ -88,7 +88,7 @@ func (h *AgentHandler) GetServerUrl(c echo.Context) error { } // GetInstallScript 生成自动安装脚本 -func (h *AgentHandler) GetInstallScript(c echo.Context) error { +func (h *AgentHandler) GetInstallScript(c *echo.Context) error { token := c.QueryParam("token") if token == "" { return orz.NewError(400, "token不能为空") diff --git a/internal/handler/agent_metrics_handler.go b/internal/handler/agent_metrics_handler.go index 5b77a29..872a80e 100644 --- a/internal/handler/agent_metrics_handler.go +++ b/internal/handler/agent_metrics_handler.go @@ -7,7 +7,7 @@ import ( "github.com/dushixiang/pika/internal/utils" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" ) var validMetricTypes = map[string]struct{}{ @@ -93,7 +93,7 @@ func validateMetricType(metricType string) error { } // GetMetrics 获取探针聚合指标(公开接口,已登录返回全部,未登录返回公开可见) -func (h *AgentHandler) GetMetrics(c echo.Context) error { +func (h *AgentHandler) GetMetrics(c *echo.Context) error { shortID := c.Param("id") ctx := c.Request().Context() @@ -132,7 +132,7 @@ func (h *AgentHandler) GetMetrics(c echo.Context) error { } // GetLatestMetrics 获取探针最新指标(公开接口,已登录返回全部,未登录返回公开可见) -func (h *AgentHandler) GetLatestMetrics(c echo.Context) error { +func (h *AgentHandler) GetLatestMetrics(c *echo.Context) error { shortID := c.Param("id") ctx := c.Request().Context() @@ -156,7 +156,7 @@ func (h *AgentHandler) GetLatestMetrics(c echo.Context) error { } // GetAvailableNetworkInterfaces 获取探针的可用网卡列表(公开接口,已登录返回全部,未登录返回公开可见) -func (h *AgentHandler) GetAvailableNetworkInterfaces(c echo.Context) error { +func (h *AgentHandler) GetAvailableNetworkInterfaces(c *echo.Context) error { shortID := c.Param("id") ctx := c.Request().Context() diff --git a/internal/handler/agent_query_handler.go b/internal/handler/agent_query_handler.go index 1383ca8..d39eb65 100644 --- a/internal/handler/agent_query_handler.go +++ b/internal/handler/agent_query_handler.go @@ -4,12 +4,12 @@ import ( "github.com/dushixiang/pika/internal/models" "github.com/dushixiang/pika/internal/utils" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "gorm.io/datatypes" ) // Get 获取探针详情(公开接口,已登录返回全部,未登录返回公开可见) -func (h *AgentHandler) Get(c echo.Context) error { +func (h *AgentHandler) Get(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -36,7 +36,7 @@ func (h *AgentHandler) Get(c echo.Context) error { } // GetAgents 获取探针列表(公开接口,已登录返回全部,未登录返回公开可见) -func (h *AgentHandler) GetAgents(c echo.Context) error { +func (h *AgentHandler) GetAgents(c *echo.Context) error { ctx := c.Request().Context() // 根据认证状态返回相应的探针列表 @@ -93,7 +93,7 @@ func (h *AgentHandler) buildAgentListItem(agent models.Agent, isAuthenticated bo } // GetTags 获取所有探针的标签 -func (h *AgentHandler) GetTags(c echo.Context) error { +func (h *AgentHandler) GetTags(c *echo.Context) error { ctx := c.Request().Context() tags, err := h.agentService.GetAllTags(ctx) diff --git a/internal/handler/agent_ws_handler.go b/internal/handler/agent_ws_handler.go index 8833ec1..07f4855 100644 --- a/internal/handler/agent_ws_handler.go +++ b/internal/handler/agent_ws_handler.go @@ -9,12 +9,12 @@ import ( "github.com/dushixiang/pika/internal/protocol" ws "github.com/dushixiang/pika/internal/websocket" "github.com/gorilla/websocket" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) // HandleWebSocket 处理WebSocket连接 -func (h *AgentHandler) HandleWebSocket(c echo.Context) error { +func (h *AgentHandler) HandleWebSocket(c *echo.Context) error { conn, err := h.upgrader.Upgrade(c.Response(), c.Request(), nil) if err != nil { h.logger.Error("failed to upgrade websocket", zap.Error(err)) diff --git a/internal/handler/alert_handler.go b/internal/handler/alert_handler.go index 4d5f2fe..d78f2b0 100644 --- a/internal/handler/alert_handler.go +++ b/internal/handler/alert_handler.go @@ -3,7 +3,7 @@ package handler import ( "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -20,7 +20,7 @@ func NewAlertHandler(logger *zap.Logger, alertService *service.AlertService) *Al } // ListAlertRecords 列出告警记录 -func (h *AlertHandler) ListAlertRecords(c echo.Context) error { +func (h *AlertHandler) ListAlertRecords(c *echo.Context) error { agentID := c.QueryParam("agentId") pr := orz.GetPageRequest(c, "createdAt", "firedAt") @@ -43,7 +43,7 @@ func (h *AlertHandler) ListAlertRecords(c echo.Context) error { } // ClearAlertRecords 清空告警记录 -func (h *AlertHandler) ClearAlertRecords(c echo.Context) error { +func (h *AlertHandler) ClearAlertRecords(c *echo.Context) error { if err := h.alertService.Clear(c.Request().Context()); err != nil { h.logger.Error("清空告警记录失败", zap.Error(err)) return orz.NewError(500, "清空告警记录失败") diff --git a/internal/handler/api_key_handler.go b/internal/handler/api_key_handler.go index a0dc9a7..865172d 100644 --- a/internal/handler/api_key_handler.go +++ b/internal/handler/api_key_handler.go @@ -5,7 +5,7 @@ import ( "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -33,7 +33,7 @@ type UpdateApiKeyNameRequest struct { } // Paging API密钥分页查询 -func (r ApiKeyHandler) Paging(c echo.Context) error { +func (r ApiKeyHandler) Paging(c *echo.Context) error { name := c.QueryParam("name") apiKeyType := c.QueryParam("type") @@ -62,7 +62,7 @@ func (r ApiKeyHandler) Paging(c echo.Context) error { } // Create 生成API密钥(仅限通信密钥 type=agent) -func (r ApiKeyHandler) Create(c echo.Context) error { +func (r ApiKeyHandler) Create(c *echo.Context) error { // API Key 不能创建其他 API Key if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能创建其他 API Key") @@ -93,7 +93,7 @@ func (r ApiKeyHandler) Create(c echo.Context) error { } // CreateAdmin 生成管理 API Key(type=admin,完整 key 仅创建时返回一次) -func (r ApiKeyHandler) CreateAdmin(c echo.Context) error { +func (r ApiKeyHandler) CreateAdmin(c *echo.Context) error { // API Key 不能创建其他 API Key if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能创建其他 API Key") @@ -120,7 +120,7 @@ func (r ApiKeyHandler) CreateAdmin(c echo.Context) error { } // Get 获取API密钥详情 -func (r ApiKeyHandler) Get(c echo.Context) error { +func (r ApiKeyHandler) Get(c *echo.Context) error { // API Key 不能查看其他 API Key 的完整值 if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能查看其他 API Key") @@ -141,7 +141,7 @@ func (r ApiKeyHandler) Get(c echo.Context) error { } // GetRaw 获取API密钥完整值(仅在生成安装命令等场景使用) -func (r ApiKeyHandler) GetRaw(c echo.Context) error { +func (r ApiKeyHandler) GetRaw(c *echo.Context) error { // 仅 JWT 认证可用 if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能查看其他 API Key") @@ -167,7 +167,7 @@ func (r ApiKeyHandler) GetRaw(c echo.Context) error { } // Update 更新API密钥名称 -func (r ApiKeyHandler) Update(c echo.Context) error { +func (r ApiKeyHandler) Update(c *echo.Context) error { // API Key 不能修改其他 API Key if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能修改其他 API Key") @@ -193,7 +193,7 @@ func (r ApiKeyHandler) Update(c echo.Context) error { } // Delete 删除API密钥 -func (r ApiKeyHandler) Delete(c echo.Context) error { +func (r ApiKeyHandler) Delete(c *echo.Context) error { // API Key 不能删除其他 API Key if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能删除其他 API Key") @@ -211,7 +211,7 @@ func (r ApiKeyHandler) Delete(c echo.Context) error { } // Enable 启用API密钥 -func (r ApiKeyHandler) Enable(c echo.Context) error { +func (r ApiKeyHandler) Enable(c *echo.Context) error { // API Key 不能启用/禁用其他 API Key if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能启用/禁用其他 API Key") @@ -229,7 +229,7 @@ func (r ApiKeyHandler) Enable(c echo.Context) error { } // Disable 禁用API密钥 -func (r ApiKeyHandler) Disable(c echo.Context) error { +func (r ApiKeyHandler) Disable(c *echo.Context) error { // API Key 不能启用/禁用其他 API Key if c.Get("authType") == "api_key" { return echo.NewHTTPError(http.StatusForbidden, "API Key 不能启用/禁用其他 API Key") diff --git a/internal/handler/ddns_handler.go b/internal/handler/ddns_handler.go index 076fa98..6256e98 100644 --- a/internal/handler/ddns_handler.go +++ b/internal/handler/ddns_handler.go @@ -7,7 +7,7 @@ import ( "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" "github.com/google/uuid" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -53,7 +53,7 @@ type UpdateConfigRequest struct { } // Paging DDNS 配置分页查询 -func (h *DDNSHandler) Paging(c echo.Context) error { +func (h *DDNSHandler) Paging(c *echo.Context) error { agentID := c.QueryParam("agentId") name := c.QueryParam("name") @@ -80,7 +80,7 @@ func (h *DDNSHandler) Paging(c echo.Context) error { } // Create 创建 DDNS 配置 -func (h *DDNSHandler) Create(c echo.Context) error { +func (h *DDNSHandler) Create(c *echo.Context) error { var req CreateConfigRequest if err := c.Bind(&req); err != nil { return err @@ -144,7 +144,7 @@ func (h *DDNSHandler) Create(c echo.Context) error { } // Get 获取 DDNS 配置详情 -func (h *DDNSHandler) Get(c echo.Context) error { +func (h *DDNSHandler) Get(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -158,7 +158,7 @@ func (h *DDNSHandler) Get(c echo.Context) error { } // Update 更新 DDNS 配置 -func (h *DDNSHandler) Update(c echo.Context) error { +func (h *DDNSHandler) Update(c *echo.Context) error { id := c.Param("id") var req UpdateConfigRequest @@ -200,7 +200,7 @@ func (h *DDNSHandler) Update(c echo.Context) error { } // Delete 删除 DDNS 配置 -func (h *DDNSHandler) Delete(c echo.Context) error { +func (h *DDNSHandler) Delete(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -213,7 +213,7 @@ func (h *DDNSHandler) Delete(c echo.Context) error { } // Enable 启用 DDNS 配置 -func (h *DDNSHandler) Enable(c echo.Context) error { +func (h *DDNSHandler) Enable(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -226,7 +226,7 @@ func (h *DDNSHandler) Enable(c echo.Context) error { } // Disable 禁用 DDNS 配置 -func (h *DDNSHandler) Disable(c echo.Context) error { +func (h *DDNSHandler) Disable(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -239,7 +239,7 @@ func (h *DDNSHandler) Disable(c echo.Context) error { } // GetRecords 获取 DDNS 更新记录 -func (h *DDNSHandler) GetRecords(c echo.Context) error { +func (h *DDNSHandler) GetRecords(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -257,7 +257,7 @@ func (h *DDNSHandler) GetRecords(c echo.Context) error { } // TriggerUpdate 手动触发 DDNS 更新 -func (h *DDNSHandler) TriggerUpdate(c echo.Context) error { +func (h *DDNSHandler) TriggerUpdate(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() diff --git a/internal/handler/dns_provider_handler.go b/internal/handler/dns_provider_handler.go index 1191cd4..c653321 100644 --- a/internal/handler/dns_provider_handler.go +++ b/internal/handler/dns_provider_handler.go @@ -7,7 +7,7 @@ import ( "github.com/dushixiang/pika/internal/models" "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -69,7 +69,7 @@ func maskSensitiveData(config map[string]interface{}) map[string]interface{} { } // GetAll 获取所有 DNS Provider 配置(脱敏) -func (h *DNSProviderHandler) GetAll(c echo.Context) error { +func (h *DNSProviderHandler) GetAll(c *echo.Context) error { ctx := c.Request().Context() providers, err := h.propertyService.GetDNSProviderConfigs(ctx) @@ -92,7 +92,7 @@ func (h *DNSProviderHandler) GetAll(c echo.Context) error { } // Upsert 创建或更新 DNS Provider 配置 -func (h *DNSProviderHandler) Upsert(c echo.Context) error { +func (h *DNSProviderHandler) Upsert(c *echo.Context) error { ctx := c.Request().Context() var req DNSProviderRequest @@ -131,7 +131,7 @@ func (h *DNSProviderHandler) Upsert(c echo.Context) error { } // Delete 删除 DNS Provider 配置 -func (h *DNSProviderHandler) Delete(c echo.Context) error { +func (h *DNSProviderHandler) Delete(c *echo.Context) error { ctx := c.Request().Context() provider := c.Param("provider") diff --git a/internal/handler/monitor_handler.go b/internal/handler/monitor_handler.go index 1cc9fb9..dab4086 100644 --- a/internal/handler/monitor_handler.go +++ b/internal/handler/monitor_handler.go @@ -4,7 +4,7 @@ import ( "github.com/dushixiang/pika/internal/service" "github.com/dushixiang/pika/internal/utils" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -24,7 +24,7 @@ func NewMonitorHandler(logger *zap.Logger, monitorService *service.MonitorServic } } -func (h *MonitorHandler) List(c echo.Context) error { +func (h *MonitorHandler) List(c *echo.Context) error { keyword := c.QueryParam("keyword") enabled := c.QueryParam("enabled") @@ -76,7 +76,7 @@ func (h *MonitorHandler) List(c echo.Context) error { return orz.Ok(c, page) } -func (h *MonitorHandler) Create(c echo.Context) error { +func (h *MonitorHandler) Create(c *echo.Context) error { var req service.MonitorTaskRequest if err := c.Bind(&req); err != nil { return orz.NewError(400, "请求参数错误") @@ -91,7 +91,7 @@ func (h *MonitorHandler) Create(c echo.Context) error { return orz.Ok(c, item) } -func (h *MonitorHandler) Get(c echo.Context) error { +func (h *MonitorHandler) Get(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -103,7 +103,7 @@ func (h *MonitorHandler) Get(c echo.Context) error { return orz.Ok(c, item) } -func (h *MonitorHandler) Update(c echo.Context) error { +func (h *MonitorHandler) Update(c *echo.Context) error { id := c.Param("id") var req service.MonitorTaskRequest @@ -120,7 +120,7 @@ func (h *MonitorHandler) Update(c echo.Context) error { return orz.Ok(c, item) } -func (h *MonitorHandler) Delete(c echo.Context) error { +func (h *MonitorHandler) Delete(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -140,7 +140,7 @@ func (h *MonitorHandler) Delete(c echo.Context) error { } // GetMonitors 获取所有监控统计数据 -func (h *MonitorHandler) GetMonitors(c echo.Context) error { +func (h *MonitorHandler) GetMonitors(c *echo.Context) error { ctx := c.Request().Context() stats, err := h.monitorService.ListByAuth(ctx, utils.IsAuthenticated(c)) if err != nil { @@ -151,7 +151,7 @@ func (h *MonitorHandler) GetMonitors(c echo.Context) error { } // GetStatsByID 获取指定监控任务的统计数据(公开接口,已登录返回全部,未登录返回公开可见) -func (h *MonitorHandler) GetStatsByID(c echo.Context) error { +func (h *MonitorHandler) GetStatsByID(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -169,7 +169,7 @@ func (h *MonitorHandler) GetStatsByID(c echo.Context) error { } // GetAgentStatsByID 获取指定监控任务各探针的统计数据(公开接口,已登录返回全部,未登录返回公开可见) -func (h *MonitorHandler) GetAgentStatsByID(c echo.Context) error { +func (h *MonitorHandler) GetAgentStatsByID(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() @@ -186,7 +186,7 @@ func (h *MonitorHandler) GetAgentStatsByID(c echo.Context) error { } // GetHistoryByID 获取指定监控任务的历史响应时间数据(公开接口,已登录返回全部,未登录返回公开可见) -func (h *MonitorHandler) GetHistoryByID(c echo.Context) error { +func (h *MonitorHandler) GetHistoryByID(c *echo.Context) error { id := c.Param("id") ctx := c.Request().Context() diff --git a/internal/handler/property_handler.go b/internal/handler/property_handler.go index 7577021..f9afbef 100644 --- a/internal/handler/property_handler.go +++ b/internal/handler/property_handler.go @@ -9,7 +9,7 @@ import ( "github.com/dushixiang/pika/internal/models" "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -28,7 +28,7 @@ func NewPropertyHandler(logger *zap.Logger, service *service.PropertyService, no } // GetProperty 获取属性(返回 JSON 值) -func (h *PropertyHandler) GetProperty(c echo.Context) error { +func (h *PropertyHandler) GetProperty(c *echo.Context) error { id := c.Param("id") property, err := h.service.Get(c.Request().Context(), id) @@ -54,7 +54,7 @@ func (h *PropertyHandler) GetProperty(c echo.Context) error { } // SetProperty 设置属性 -func (h *PropertyHandler) SetProperty(c echo.Context) error { +func (h *PropertyHandler) SetProperty(c *echo.Context) error { id := c.Param("id") var req struct { @@ -100,7 +100,7 @@ func (h *PropertyHandler) SetProperty(c echo.Context) error { } // GetLogo 获取系统 Logo(公开访问,返回图片文件流) -func (h *PropertyHandler) GetLogo(c echo.Context) error { +func (h *PropertyHandler) GetLogo(c *echo.Context) error { sysConfig, err := h.service.GetSystemConfig(c.Request().Context()) if err != nil { // 如果配置不存在,返回 404 @@ -168,7 +168,7 @@ func (h *PropertyHandler) GetLogo(c echo.Context) error { } // TestNotificationChannel 测试通知渠道(从数据库读取配置) -func (h *PropertyHandler) TestNotificationChannel(c echo.Context) error { +func (h *PropertyHandler) TestNotificationChannel(c *echo.Context) error { channelType := c.Param("type") if channelType == "" { return orz.NewError(400, "缺少渠道类型参数") diff --git a/internal/handler/ssh_login_handler.go b/internal/handler/ssh_login_handler.go index 7015e2d..d119d1d 100644 --- a/internal/handler/ssh_login_handler.go +++ b/internal/handler/ssh_login_handler.go @@ -4,7 +4,7 @@ import ( "github.com/dushixiang/pika/internal/models" "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -24,7 +24,7 @@ func NewSSHLoginHandler(logger *zap.Logger, service *service.SSHLoginService) *S // GetConfig 获取SSH登录监控配置 // GET /api/agents/:id/ssh-login/config -func (h *SSHLoginHandler) GetConfig(c echo.Context) error { +func (h *SSHLoginHandler) GetConfig(c *echo.Context) error { agentID := c.Param("id") if agentID == "" { return orz.NewError(400, "探针ID不能为空") @@ -41,7 +41,7 @@ func (h *SSHLoginHandler) GetConfig(c echo.Context) error { // UpdateConfig 更新SSH登录监控配置 // POST /api/agents/:id/ssh-login/config -func (h *SSHLoginHandler) UpdateConfig(c echo.Context) error { +func (h *SSHLoginHandler) UpdateConfig(c *echo.Context) error { agentID := c.Param("id") var req models.SSHLoginConfigData @@ -60,7 +60,7 @@ func (h *SSHLoginHandler) UpdateConfig(c echo.Context) error { // ListEvents 查询SSH登录事件 // GET /api/agents/:id/ssh-login/events -func (h *SSHLoginHandler) ListEvents(c echo.Context) error { +func (h *SSHLoginHandler) ListEvents(c *echo.Context) error { agentID := c.Param("id") // 获取分页参数 @@ -83,7 +83,7 @@ func (h *SSHLoginHandler) ListEvents(c echo.Context) error { // GetEvent 获取单个SSH登录事件 // GET /api/ssh-login/events/:id -func (h *SSHLoginHandler) GetEvent(c echo.Context) error { +func (h *SSHLoginHandler) GetEvent(c *echo.Context) error { eventID := c.Param("id") if eventID == "" { return orz.NewError(400, "事件ID不能为空") @@ -105,7 +105,7 @@ func (h *SSHLoginHandler) GetEvent(c echo.Context) error { // DeleteEvents 删除探针的所有SSH登录事件 // DELETE /api/agents/:id/ssh-login/events -func (h *SSHLoginHandler) DeleteEvents(c echo.Context) error { +func (h *SSHLoginHandler) DeleteEvents(c *echo.Context) error { agentID := c.Param("id") ctx := c.Request().Context() diff --git a/internal/handler/tamper_handler.go b/internal/handler/tamper_handler.go index e637f31..8704be4 100644 --- a/internal/handler/tamper_handler.go +++ b/internal/handler/tamper_handler.go @@ -4,7 +4,7 @@ import ( "github.com/dushixiang/pika/internal/models" "github.com/dushixiang/pika/internal/service" "github.com/go-orz/orz" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" "go.uber.org/zap" ) @@ -22,7 +22,7 @@ func NewTamperHandler(logger *zap.Logger, tamperService *service.TamperService) // UpdateConfig 更新探针的防篡改配置 // POST /api/agents/:id/tamper/config -func (h *TamperHandler) UpdateConfig(c echo.Context) error { +func (h *TamperHandler) UpdateConfig(c *echo.Context) error { agentID := c.Param("id") var req models.TamperProtectConfigData @@ -42,7 +42,7 @@ func (h *TamperHandler) UpdateConfig(c echo.Context) error { // GetConfig 获取探针的防篡改配置 // GET /api/agents/:id/tamper/config -func (h *TamperHandler) GetConfig(c echo.Context) error { +func (h *TamperHandler) GetConfig(c *echo.Context) error { agentID := c.Param("id") config, err := h.tamperService.GetConfigByAgentID(c.Request().Context(), agentID) @@ -56,7 +56,7 @@ func (h *TamperHandler) GetConfig(c echo.Context) error { // ListEvents 获取探针的防篡改事件 // GET /api/agents/:id/tamper/events -func (h *TamperHandler) ListEvents(c echo.Context) error { +func (h *TamperHandler) ListEvents(c *echo.Context) error { agentID := c.Param("id") // 获取分页参数 @@ -77,7 +77,7 @@ func (h *TamperHandler) ListEvents(c echo.Context) error { return orz.Ok(c, page) } -func (h *TamperHandler) DeleteEvents(c echo.Context) error { +func (h *TamperHandler) DeleteEvents(c *echo.Context) error { agentID := c.Param("id") err := h.tamperService.DeleteEventsByAgentID(c.Request().Context(), agentID) if err != nil { diff --git a/internal/utils/auth.go b/internal/utils/auth.go index a0e4203..a78514a 100644 --- a/internal/utils/auth.go +++ b/internal/utils/auth.go @@ -1,9 +1,9 @@ package utils -import "github.com/labstack/echo/v4" +import "github.com/labstack/echo/v5" // IsAuthenticated 检查用户是否已登录 -func IsAuthenticated(c echo.Context) bool { +func IsAuthenticated(c *echo.Context) bool { authenticated, _ := c.Get("authenticated").(bool) return authenticated } diff --git a/internal/validator.go b/internal/validator.go index ef73f61..1f331e5 100644 --- a/internal/validator.go +++ b/internal/validator.go @@ -11,7 +11,7 @@ import ( ut "github.com/go-playground/universal-translator" "github.com/go-playground/validator/v10" zhTranslations "github.com/go-playground/validator/v10/translations/zh" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v5" ) type CustomValidator struct {