2024-12-23 21:49:04 -08:00

65 lines
1.7 KiB
Go

// https://github.com/google/go-containerregistry
package main
import (
"context"
"crypto/tls"
"flag"
"github.com/sirupsen/logrus"
"nf-repo/internal/api"
"nf-repo/internal/interfaces"
"nf-repo/internal/interfaces/blobs"
"nf-repo/internal/interfaces/dbs"
"nf-repo/internal/interfaces/manifests"
"nf-repo/internal/interfaces/uploads"
"nf-repo/internal/opt"
"path"
)
var (
tlsCfg *tls.Config
bh interfaces.BlobHandler
uh interfaces.UploadHandler
mh interfaces.ManifestHandler
crtPath, keyPath, dataPath string
)
func init() {
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)
}
crt, err := tls.LoadX509KeyPair(crtPath, keyPath)
if err != nil {
logrus.Panic(err)
}
tlsCfg = &tls.Config{Certificates: []tls.Certificate{crt}}
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",
//)
uh = uploads.NewLocalUploader(path.Join(dataPath, "uploads"))
}
func main() {
app := api.NewApi(context.TODO(), bh, uh, mh)
logrus.Fatal(app.RunTLS(":443", tlsCfg))
}