2024-04-10 22:10:09 +08:00
|
|
|
// https://github.com/google/go-containerregistry
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"crypto/tls"
|
2024-04-15 18:02:54 +08:00
|
|
|
"flag"
|
2024-04-10 22:10:09 +08:00
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
"nf-repo/internal/api"
|
2024-04-15 18:02:54 +08:00
|
|
|
"nf-repo/internal/interfaces"
|
2024-04-10 22:10:09 +08:00
|
|
|
"nf-repo/internal/interfaces/blobs"
|
2024-05-05 19:11:57 +08:00
|
|
|
"nf-repo/internal/interfaces/dbs"
|
2024-04-10 22:10:09 +08:00
|
|
|
"nf-repo/internal/interfaces/manifests"
|
|
|
|
"nf-repo/internal/interfaces/uploads"
|
2024-04-15 18:02:54 +08:00
|
|
|
"nf-repo/internal/opt"
|
|
|
|
"path"
|
2024-04-10 22:10:09 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2024-04-15 18:02:54 +08:00
|
|
|
tlsCfg *tls.Config
|
|
|
|
bh interfaces.BlobHandler
|
|
|
|
uh interfaces.UploadHandler
|
|
|
|
mh interfaces.ManifestHandler
|
|
|
|
crtPath, keyPath, dataPath string
|
2024-04-10 22:10:09 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
2024-04-15 18:02:54 +08:00
|
|
|
flag.BoolVar(&opt.Debug, "debug", false, "debug mode")
|
|
|
|
flag.StringVar(&crtPath, "crt", "etc/repo.me.crt", "certificate file")
|
|
|
|
flag.StringVar(&keyPath, "key", "etc/repo.me.key", "certificate key file")
|
|
|
|
flag.StringVar(&dataPath, "data", "images", "images, sqlite ... data path")
|
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
if opt.Debug {
|
|
|
|
logrus.SetFormatter(&logrus.JSONFormatter{TimestampFormat: "06/01/02 15:04:05"})
|
|
|
|
logrus.SetLevel(logrus.DebugLevel)
|
|
|
|
logrus.SetReportCaller(true)
|
|
|
|
}
|
2024-04-10 22:10:09 +08:00
|
|
|
|
2024-04-15 18:02:54 +08:00
|
|
|
crt, err := tls.LoadX509KeyPair(crtPath, keyPath)
|
2024-04-10 22:10:09 +08:00
|
|
|
if err != nil {
|
2024-04-15 18:02:54 +08:00
|
|
|
logrus.Panic(err)
|
2024-04-10 22:10:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
tlsCfg = &tls.Config{Certificates: []tls.Certificate{crt}}
|
2024-04-15 18:02:54 +08:00
|
|
|
|
2024-05-05 19:11:57 +08:00
|
|
|
mh = manifests.NewManifestDBHandler(dbs.Must(dbs.NewSqliteTX(path.Join(dataPath, "data.sqlite"))))
|
|
|
|
//bh = blobs.NewLocalBlobHandler(path.Join(dataPath, "layers"))
|
|
|
|
bh = blobs.NewS3BlobHandler(
|
|
|
|
context.TODO(),
|
|
|
|
"http://10.230.200.74:9000",
|
|
|
|
"xWcwG0zcdR3iDXBa",
|
|
|
|
"NavjSle5qQjE2rjz81hEwZW3S2fUVa66",
|
|
|
|
"repo.me",
|
|
|
|
)
|
2024-04-15 18:02:54 +08:00
|
|
|
uh = uploads.NewLocalUploader(path.Join(dataPath, "uploads"))
|
2024-04-10 22:10:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
app := api.NewApi(context.TODO(), bh, uh, mh)
|
|
|
|
|
|
|
|
logrus.Fatal(app.RunTLS(":443", tlsCfg))
|
|
|
|
}
|