mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 09:13:49 +08:00
121 lines
3.2 KiB
Go
121 lines
3.2 KiB
Go
package data
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/go-rat/utils/hash"
|
|
"github.com/go-resty/resty/v2"
|
|
"github.com/samber/do/v2"
|
|
|
|
"github.com/TheTNB/panel/internal/app"
|
|
"github.com/TheTNB/panel/internal/biz"
|
|
"github.com/TheTNB/panel/pkg/api"
|
|
"github.com/TheTNB/panel/pkg/os"
|
|
)
|
|
|
|
var injector = do.New()
|
|
|
|
func init() {
|
|
do.Provide(injector, func(i do.Injector) (biz.AppRepo, error) {
|
|
return &appRepo{
|
|
api: api.NewAPI(app.Version),
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.BackupRepo, error) {
|
|
return &backupRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.CacheRepo, error) {
|
|
return &cacheRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.CertRepo, error) {
|
|
return &certRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.CertAccountRepo, error) {
|
|
return &certAccountRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.CertDNSRepo, error) {
|
|
return &certDNSRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.ContainerRepo, error) {
|
|
return &containerRepo{
|
|
client: getDockerClient("/var/run/docker.sock"),
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.ContainerImageRepo, error) {
|
|
return &containerImageRepo{
|
|
client: getDockerClient("/var/run/docker.sock"),
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.ContainerNetworkRepo, error) {
|
|
return &containerNetworkRepo{
|
|
client: getDockerClient("/var/run/docker.sock"),
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.ContainerVolumeRepo, error) {
|
|
return &containerVolumeRepo{
|
|
client: getDockerClient("/var/run/docker.sock"),
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.CronRepo, error) {
|
|
return &cronRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.DatabaseServerRepo, error) {
|
|
return &databaseServerRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.DatabaseUserRepo, error) {
|
|
return &databaseUserRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.DatabaseRepo, error) {
|
|
return &databaseRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.MonitorRepo, error) {
|
|
return &monitorRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.SafeRepo, error) {
|
|
var ssh string
|
|
if os.IsRHEL() {
|
|
ssh = "sshd"
|
|
} else {
|
|
ssh = "ssh"
|
|
}
|
|
return &safeRepo{
|
|
ssh: ssh,
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.SettingRepo, error) {
|
|
return &settingRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.SSHRepo, error) {
|
|
return &sshRepo{}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.TaskRepo, error) {
|
|
task := &taskRepo{}
|
|
task.DispatchWaiting()
|
|
return task, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.UserRepo, error) {
|
|
return &userRepo{
|
|
hasher: hash.NewArgon2id(),
|
|
}, nil
|
|
})
|
|
do.Provide(injector, func(i do.Injector) (biz.WebsiteRepo, error) {
|
|
return &websiteRepo{}, nil
|
|
})
|
|
}
|
|
|
|
func getDockerClient(sock string) *resty.Client {
|
|
client := resty.New()
|
|
client.SetTimeout(1 * time.Minute)
|
|
client.SetRetryCount(2)
|
|
client.SetTransport(&http.Transport{
|
|
DialContext: func(ctx context.Context, _ string, _ string) (net.Conn, error) {
|
|
return (&net.Dialer{}).DialContext(ctx, "unix", sock)
|
|
},
|
|
})
|
|
client.SetBaseURL("http://d/v1.40")
|
|
return client
|
|
}
|