// 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)) }