2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 11:27:17 +08:00

feat: 全局移除carbon

This commit is contained in:
耗子
2024-09-29 03:31:27 +08:00
parent 169c0ff18e
commit 3fce818d13
31 changed files with 136 additions and 151 deletions

3
.gitignore vendored
View File

@@ -17,7 +17,8 @@ _cgo_export.*
*.exe
*.o
*.so
# 在此添加你的项目名(如果需要)
panel
panel.exe
# 压缩包
# Git 自带压缩,如果这些压缩包里有代码,建议解压后 commit

View File

@@ -17,8 +17,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
package main
import (
"github.com/TheTNB/panel/internal/bootstrap"
_ "time/tzdata"
"github.com/TheTNB/panel/internal/bootstrap"
)
func main() {

View File

@@ -17,8 +17,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
package main
import (
"github.com/TheTNB/panel/internal/bootstrap"
_ "time/tzdata"
"github.com/TheTNB/panel/internal/bootstrap"
)
func main() {

1
go.mod
View File

@@ -19,7 +19,6 @@ require (
github.com/go-rat/utils v1.0.3
github.com/go-resty/resty/v2 v2.15.3
github.com/go-sql-driver/mysql v1.8.1
github.com/golang-module/carbon/v2 v2.3.12
github.com/gookit/color v1.5.4
github.com/gorilla/websocket v1.5.3
github.com/hashicorp/go-version v1.7.0

7
go.sum
View File

@@ -115,8 +115,6 @@ github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAp
github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-module/carbon/v2 v2.3.12 h1:VC1DwN1kBwJkh5MjXmTFryjs5g4CWyoM8HAHffZPX/k=
github.com/golang-module/carbon/v2 v2.3.12/go.mod h1:HNsedGzXGuNciZImYP2OMnpiwq/vhIstR/vn45ib5cI=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -271,14 +269,9 @@ github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.597 h1:C0GHdLTfikLVoEzfhgPfrZ7LwlG0xiCmk6iwNKE+xs0=

View File

@@ -3,8 +3,7 @@ package postgresql
import (
"fmt"
"net/http"
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/panel"
"github.com/TheTNB/panel/internal/service"
@@ -94,7 +93,7 @@ func (s *Service) Load(w http.ResponseWriter, r *http.Request) {
return
}
time, err := shell.Execf(`echo "select pg_postmaster_start_time();" | su - postgres -c "psql" | sed -n 3p | cut -d'.' -f1`)
start, err := shell.Execf(`echo "select pg_postmaster_start_time();" | su - postgres -c "psql" | sed -n 3p | cut -d'.' -f1`)
if err != nil {
service.Error(w, http.StatusInternalServerError, "获取PostgreSQL启动时间失败")
return
@@ -121,7 +120,7 @@ func (s *Service) Load(w http.ResponseWriter, r *http.Request) {
}
data := []types.NV{
{Name: "启动时间", Value: carbon.Parse(time).ToDateTimeString()},
{Name: "启动时间", Value: start},
{Name: "进程 PID", Value: pid},
{Name: "进程数", Value: process},
{Name: "总连接数", Value: connections},
@@ -133,7 +132,7 @@ func (s *Service) Load(w http.ResponseWriter, r *http.Request) {
// Log 获取日志
func (s *Service) Log(w http.ResponseWriter, r *http.Request) {
log, err := shell.Execf("tail -n 100 %s/server/postgresql/logs/postgresql-%s.log", panel.Root, carbon.Now().ToDateString())
log, err := shell.Execf("tail -n 100 %s/server/postgresql/logs/postgresql-%s.log", panel.Root, time.Now().Format(time.DateOnly))
if err != nil {
service.Error(w, http.StatusInternalServerError, log)
return

View File

@@ -4,9 +4,9 @@ import (
"encoding/json"
"net/http"
"strings"
"time"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/spf13/cast"
"github.com/TheTNB/panel/internal/biz"
@@ -92,7 +92,7 @@ func (s *Service) Create(w http.ResponseWriter, r *http.Request) {
}
}
id := carbon.Now().TimestampMilli()
id := time.Now().UnixMicro()
password := req.Ak + ":" + req.Sk
if err = io.Write("/etc/passwd-s3fs-"+cast.ToString(id), password, 0600); err != nil {
service.Error(w, http.StatusInternalServerError, "添加 S3fs 挂载失败")

View File

@@ -1,19 +1,19 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/pkg/api"
)
type App struct {
ID uint `gorm:"primaryKey" json:"id"`
Slug string `gorm:"not null;unique" json:"slug"`
Version string `gorm:"not null" json:"version"`
Show bool `gorm:"not null" json:"show"`
ShowOrder int `gorm:"not null" json:"show_order"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Slug string `gorm:"not null;unique" json:"slug"`
Version string `gorm:"not null" json:"version"`
Show bool `gorm:"not null" json:"show"`
ShowOrder int `gorm:"not null" json:"show_order"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type AppRepo interface {

View File

@@ -1,6 +1,6 @@
package biz
import "github.com/golang-module/carbon/v2"
import "time"
type CacheKey string
@@ -10,10 +10,10 @@ const (
)
type Cache struct {
Key CacheKey `gorm:"primaryKey" json:"key"`
Value string `gorm:"not null" json:"value"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
Key CacheKey `gorm:"primaryKey" json:"key"`
Value string `gorm:"not null" json:"value"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type CacheRepo interface {

View File

@@ -1,25 +1,25 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/acme"
)
type Cert struct {
ID uint `gorm:"primaryKey" json:"id"`
AccountID uint `gorm:"not null" json:"account_id"` // 关联的 ACME 账户 ID
WebsiteID uint `gorm:"not null" json:"website_id"` // 关联的网站 ID
DNSID uint `gorm:"not null" json:"dns_id"` // 关联的 DNS ID
Type string `gorm:"not null" json:"type"` // 证书类型 (P256, P384, 2048, 4096)
Domains []string `gorm:"not null;serializer:json" json:"domains"`
AutoRenew bool `gorm:"not null" json:"auto_renew"` // 自动续签
CertURL string `gorm:"not null" json:"cert_url"` // 证书 URL (续签时使用)
Cert string `gorm:"not null" json:"cert"` // 证书内容
Key string `gorm:"not null" json:"key"` // 私钥内容
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
AccountID uint `gorm:"not null" json:"account_id"` // 关联的 ACME 账户 ID
WebsiteID uint `gorm:"not null" json:"website_id"` // 关联的网站 ID
DNSID uint `gorm:"not null" json:"dns_id"` // 关联的 DNS ID
Type string `gorm:"not null" json:"type"` // 证书类型 (P256, P384, 2048, 4096)
Domains []string `gorm:"not null;serializer:json" json:"domains"`
AutoRenew bool `gorm:"not null" json:"auto_renew"` // 自动续签
CertURL string `gorm:"not null" json:"cert_url"` // 证书 URL (续签时使用)
Cert string `gorm:"not null" json:"cert"` // 证书内容
Key string `gorm:"not null" json:"key"` // 私钥内容
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Website *Website `gorm:"foreignKey:WebsiteID" json:"website"`
Account *CertAccount `gorm:"foreignKey:AccountID" json:"account"`

View File

@@ -1,21 +1,21 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
)
type CertAccount struct {
ID uint `gorm:"primaryKey" json:"id"`
Email string `gorm:"not null" json:"email"`
CA string `gorm:"not null" json:"ca"` // CA 提供商 (letsencrypt, zerossl, sslcom, google, buypass)
Kid string `gorm:"not null" json:"kid"`
HmacEncoded string `gorm:"not null" json:"hmac_encoded"`
PrivateKey string `gorm:"not null" json:"private_key"`
KeyType string `gorm:"not null" json:"key_type"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Email string `gorm:"not null" json:"email"`
CA string `gorm:"not null" json:"ca"` // CA 提供商 (letsencrypt, zerossl, sslcom, google, buypass)
Kid string `gorm:"not null" json:"kid"`
HmacEncoded string `gorm:"not null" json:"hmac_encoded"`
PrivateKey string `gorm:"not null" json:"private_key"`
KeyType string `gorm:"not null" json:"key_type"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Certs []*Cert `gorm:"foreignKey:AccountID" json:"-"`
}

View File

@@ -1,19 +1,19 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/acme"
)
type CertDNS struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null" json:"name"` // 备注名称
Type string `gorm:"not null" json:"type"` // DNS 提供商 (dnspod, tencent, aliyun, cloudflare)
Data acme.DNSParam `gorm:"not null;serializer:json" json:"dns_param"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null" json:"name"` // 备注名称
Type string `gorm:"not null" json:"type"` // DNS 提供商 (dnspod, tencent, aliyun, cloudflare)
Data acme.DNSParam `gorm:"not null;serializer:json" json:"dns_param"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Certs []*Cert `gorm:"foreignKey:DNSID" json:"-"`
}

View File

@@ -1,21 +1,21 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
)
type Cron struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;unique" json:"name"`
Status bool `gorm:"not null" json:"status"`
Type string `gorm:"not null" json:"type"`
Time string `gorm:"not null" json:"time"`
Shell string `gorm:"not null" json:"shell"`
Log string `gorm:"not null" json:"log"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;unique" json:"name"`
Status bool `gorm:"not null" json:"status"`
Type string `gorm:"not null" json:"type"`
Time string `gorm:"not null" json:"time"`
Shell string `gorm:"not null" json:"shell"`
Log string `gorm:"not null" json:"log"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type CronRepo interface {

View File

@@ -1,16 +1,16 @@
package biz
import "github.com/golang-module/carbon/v2"
import "time"
type Database struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;unique" json:"name"`
Type string `gorm:"not null" json:"type"`
Host string `gorm:"not null" json:"host"`
Port int `gorm:"not null" json:"port"`
Username string `gorm:"not null" json:"username"`
Password string `gorm:"not null" json:"password"`
Remark string `gorm:"not null" json:"remark"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;unique" json:"name"`
Type string `gorm:"not null" json:"type"`
Host string `gorm:"not null" json:"host"`
Port int `gorm:"not null" json:"port"`
Username string `gorm:"not null" json:"username"`
Password string `gorm:"not null" json:"password"`
Remark string `gorm:"not null" json:"remark"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}

View File

@@ -1,7 +1,7 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/tools"
@@ -10,13 +10,13 @@ import (
type Monitor struct {
ID uint `gorm:"primaryKey" json:"id"`
Info tools.MonitoringInfo `gorm:"not null;serializer:json" json:"info"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type MonitorRepo interface {
GetSetting() (*request.MonitorSetting, error)
UpdateSetting(setting *request.MonitorSetting) error
Clear() error
List(start, end carbon.Carbon) ([]*Monitor, error)
List(start, end time.Time) ([]*Monitor, error)
}

View File

@@ -1,7 +1,7 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
)
@@ -23,11 +23,11 @@ const (
)
type Setting struct {
ID uint `gorm:"primaryKey" json:"id"`
Key SettingKey `gorm:"not null;unique" json:"key"`
Value string `gorm:"not null" json:"value"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Key SettingKey `gorm:"not null;unique" json:"key"`
Value string `gorm:"not null" json:"value"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type SettingRepo interface {

View File

@@ -1,6 +1,6 @@
package biz
import "github.com/golang-module/carbon/v2"
import "time"
type TaskStatus string
@@ -12,13 +12,13 @@ const (
)
type Task struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;index" json:"name"`
Status TaskStatus `gorm:"not null;default:'waiting'" json:"status"`
Shell string `gorm:"not null" json:"-"`
Log string `gorm:"not null" json:"log"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;index" json:"name"`
Status TaskStatus `gorm:"not null;default:'waiting'" json:"status"`
Shell string `gorm:"not null" json:"-"`
Log string `gorm:"not null" json:"log"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type TaskRepo interface {

View File

@@ -1,18 +1,19 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"gorm.io/gorm"
)
type User struct {
ID uint `gorm:"primaryKey" json:"id"`
Username string `gorm:"not null;unique" json:"username"`
Password string `gorm:"not null" json:"password"`
Email string `gorm:"not null" json:"email"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deleted_at"`
ID uint `gorm:"primaryKey" json:"id"`
Username string `gorm:"not null;unique" json:"username"`
Password string `gorm:"not null" json:"password"`
Email string `gorm:"not null" json:"email"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deleted_at"`
}
type UserRepo interface {

View File

@@ -1,22 +1,22 @@
package biz
import (
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/types"
)
type Website struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;unique" json:"name"`
Status bool `gorm:"not null;default:true" json:"status"`
Path string `gorm:"not null" json:"path"`
PHP int `gorm:"not null" json:"php"`
SSL bool `gorm:"not null" json:"ssl"`
Remark string `gorm:"not null" json:"remark"`
CreatedAt carbon.DateTime `json:"created_at"`
UpdatedAt carbon.DateTime `json:"updated_at"`
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null;unique" json:"name"`
Status bool `gorm:"not null;default:true" json:"status"`
Path string `gorm:"not null" json:"path"`
PHP int `gorm:"not null" json:"php"`
SSL bool `gorm:"not null" json:"ssl"`
Remark string `gorm:"not null" json:"remark"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Cert *Cert `gorm:"foreignKey:WebsiteID" json:"cert"`
}

View File

@@ -4,7 +4,6 @@ import (
"fmt"
"time"
"github.com/golang-module/carbon/v2"
"github.com/knadh/koanf/parsers/yaml"
"github.com/knadh/koanf/providers/file"
"github.com/knadh/koanf/v2"
@@ -30,10 +29,4 @@ func initGlobal() {
panic(fmt.Sprintf("failed to load timezone: %v", err))
}
time.Local = loc
carbon.SetDefault(carbon.Default{
Layout: carbon.DateTimeLayout,
Timezone: carbon.PRC,
WeekStartsAt: carbon.Sunday,
Locale: "zh-CN",
})
}

View File

@@ -6,8 +6,7 @@ import (
"path/filepath"
"regexp"
"strconv"
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/http/request"
@@ -104,7 +103,7 @@ panel cutoff ${name} ${save}
if !io.Exists(shellLogDir) {
return errors.New("计划任务日志目录不存在")
}
shellFile := strconv.Itoa(int(carbon.Now().Timestamp())) + str.RandomString(16)
shellFile := strconv.Itoa(int(time.Now().Unix())) + str.RandomString(16)
if err := io.Write(filepath.Join(shellDir, shellFile+".sh"), script, 0700); err != nil {
return errors.New(err.Error())
}

View File

@@ -2,8 +2,8 @@ package data
import (
"errors"
"time"
"github.com/golang-module/carbon/v2"
"github.com/spf13/cast"
"github.com/TheTNB/panel/internal/biz"
@@ -53,7 +53,7 @@ func (r monitorRepo) Clear() error {
return panel.Orm.Delete(&biz.Monitor{}).Error
}
func (r monitorRepo) List(start, end carbon.Carbon) ([]*biz.Monitor, error) {
func (r monitorRepo) List(start, end time.Time) ([]*biz.Monitor, error) {
var monitors []*biz.Monitor
if err := panel.Orm.Where("created_at BETWEEN ? AND ?", start, end).Find(&monitors).Error; err != nil {
return nil, err

View File

@@ -6,10 +6,11 @@ import (
"strings"
"time"
"github.com/go-chi/chi/v5"
"github.com/TheTNB/panel/internal/embed"
"github.com/TheTNB/panel/internal/http/middleware"
"github.com/TheTNB/panel/internal/service"
"github.com/go-chi/chi/v5"
)
func Http(r chi.Router) {

View File

@@ -3,9 +3,9 @@ package service
import (
"net/http"
"strings"
"time"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/data"
@@ -41,7 +41,7 @@ func (s *ContainerService) List(w http.ResponseWriter, r *http.Request) {
"image": item.Image,
"image_id": item.ImageID,
"command": item.Command,
"created": carbon.CreateFromTimestamp(item.Created).ToDateTimeString(),
"created": time.Unix(item.Created, 0).Format(time.DateTime),
"ports": item.Ports,
"labels": item.Labels,
"state": item.State,

View File

@@ -2,9 +2,9 @@ package service
import (
"net/http"
"time"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/data"
@@ -35,7 +35,7 @@ func (s *ContainerImageService) List(w http.ResponseWriter, r *http.Request) {
for _, item := range paged {
items = append(items, map[string]any{
"id": item.ID,
"created": carbon.CreateFromTimestamp(item.Created).ToDateTimeString(),
"created": time.Unix(item.Created, 0).Format(time.DateTime),
"containers": item.Containers,
"size": str.FormatBytes(float64(item.Size)),
"labels": item.Labels,

View File

@@ -2,9 +2,9 @@ package service
import (
"net/http"
"time"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/data"
@@ -57,7 +57,7 @@ func (s *ContainerNetworkService) List(w http.ResponseWriter, r *http.Request) {
"driver": item.IPAM.Driver,
"options": item.IPAM.Options,
},
"created": carbon.CreateFromStdTime(item.Created).ToDateTimeString(),
"created": item.Created.Format(time.DateTime),
})
}

View File

@@ -4,7 +4,6 @@ import (
"net/http"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/data"
@@ -42,7 +41,7 @@ func (s *ContainerVolumeService) List(w http.ResponseWriter, r *http.Request) {
}
items = append(items, map[string]any{
"id": item.Name,
"created": carbon.Parse(item.CreatedAt).ToDateTimeString(),
"created": item.CreatedAt,
"driver": item.Driver,
"mount": item.Mountpoint,
"labels": item.Labels,

View File

@@ -10,9 +10,9 @@ import (
"strconv"
"strings"
"syscall"
"time"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/io"
@@ -217,7 +217,7 @@ func (s *FileService) Info(w http.ResponseWriter, r *http.Request) {
"mode_str": info.Mode().String(),
"mode": fmt.Sprintf("%04o", info.Mode().Perm()),
"dir": info.IsDir(),
"modify": carbon.CreateFromStdTime(info.ModTime()).ToDateTimeString(),
"modify": info.ModTime().Format(time.DateTime),
})
}
@@ -336,7 +336,7 @@ func (s *FileService) List(w http.ResponseWriter, r *http.Request) {
"symlink": io.IsSymlink(info.Mode()),
"link": io.GetSymlink(filepath.Join(req.Path, info.Name())),
"dir": info.IsDir(),
"modify": carbon.CreateFromStdTime(info.ModTime()).ToDateTimeString(),
"modify": info.ModTime().Format(time.DateTime),
})
}

View File

@@ -11,9 +11,9 @@ import (
"path/filepath"
"strconv"
"strings"
"time"
"github.com/go-rat/chix"
"github.com/golang-module/carbon/v2"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/io"
@@ -217,7 +217,7 @@ func (s *FileService) Info(w http.ResponseWriter, r *http.Request) {
"mode_str": info.Mode().String(),
"mode": fmt.Sprintf("%04o", info.Mode().Perm()),
"dir": info.IsDir(),
"modify": carbon.CreateFromStdTime(info.ModTime()).ToDateTimeString(),
"modify": info.ModTime().Format(time.DateTime),
})
}
@@ -335,7 +335,7 @@ func (s *FileService) List(w http.ResponseWriter, r *http.Request) {
"symlink": io.IsSymlink(info.Mode()),
"link": io.GetSymlink(filepath.Join(req.Path, info.Name())),
"dir": info.IsDir(),
"modify": carbon.CreateFromStdTime(info.ModTime()).ToDateTimeString(),
"modify": info.ModTime().Format(time.DateTime),
})
}

View File

@@ -3,8 +3,7 @@ package service
import (
"fmt"
"net/http"
"github.com/golang-module/carbon/v2"
"time"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/data"
@@ -65,7 +64,7 @@ func (s *MonitorService) List(w http.ResponseWriter, r *http.Request) {
return
}
monitors, err := s.monitorRepo.List(carbon.CreateFromTimestampMilli(req.Start), carbon.CreateFromTimestampMilli(req.End))
monitors, err := s.monitorRepo.List(time.UnixMilli(req.Start), time.UnixMilli(req.End))
if err != nil {
Error(w, http.StatusInternalServerError, err.Error())
return
@@ -98,7 +97,7 @@ func (s *MonitorService) List(w http.ResponseWriter, r *http.Request) {
bytesSent2 += net.BytesSent
bytesRecv2 += net.BytesRecv
}
list.Times = append(list.Times, monitor.CreatedAt.ToDateTimeString())
list.Times = append(list.Times, monitor.CreatedAt.Format(time.DateTime))
list.Load.Load1 = append(list.Load.Load1, monitor.Info.Load.Load1)
list.Load.Load5 = append(list.Load.Load5, monitor.Info.Load.Load5)
list.Load.Load15 = append(list.Load.Load15, monitor.Info.Load.Load15)

View File

@@ -9,7 +9,6 @@ import (
"time"
"github.com/go-resty/resty/v2"
"github.com/golang-module/carbon/v2"
"github.com/gookit/color"
"github.com/shirou/gopsutil/cpu"
"github.com/shirou/gopsutil/disk"
@@ -371,7 +370,7 @@ func UpdatePanel(panelInfo PanelInfo) error {
color.Greenln("备份面板数据...")
// 备份面板
if err := io.Compress([]string{"/www/panel"}, fmt.Sprintf("/www/backup/panel/panel-%s.zip", carbon.Now().ToShortDateTimeString()), io.Zip); err != nil {
if err := io.Compress([]string{"/www/panel"}, fmt.Sprintf("/www/backup/panel/panel-%s.zip", time.Now().Format("20060102150405")), io.Zip); err != nil {
color.Redln("备份面板失败")
return err
}