Docker image support #18

Merged
Sirherobrine23 merged 6 commits from dockerImage into main 2023-03-29 16:19:56 +00:00
7 changed files with 522 additions and 235 deletions
Showing only changes of commit e0efdbde39 - Show all commits

View File

@@ -2,6 +2,7 @@ import * as Debian from "@sirherobrine23/debian";
import { packageManeger, packageData } from "./database.js"; import { packageManeger, packageData } from "./database.js";
import { aptStreamConfig } from "./config.js"; import { aptStreamConfig } from "./config.js";
import { extendsCrypto } from "@sirherobrine23/extends"; import { extendsCrypto } from "@sirherobrine23/extends";
import { fileRestore } from "./packageManege.js"
import express from "express"; import express from "express";
import stream from "node:stream"; import stream from "node:stream";
import openpgp from "openpgp"; import openpgp from "openpgp";
@@ -116,6 +117,7 @@ export default function main(packageManeger: packageManeger, config: aptStreamCo
Filename: path.resolve("/", pathRoot ?? "", "pool", packageComponent ?? "main", `${control.Package}_${control.Architecture}_${control.Version}.deb`), Filename: path.resolve("/", pathRoot ?? "", "pool", packageComponent ?? "main", `${control.Package}_${control.Architecture}_${control.Version}.deb`),
}))); })));
} }
__stream.push(null);
return extendsCrypto.createHashAsync(comp ? comp : __stream); return extendsCrypto.createHashAsync(comp ? comp : __stream);
}); });
return Object.assign(comp ? comp : __stream, __load); return Object.assign(comp ? comp : __stream, __load);
@@ -149,5 +151,13 @@ export default function main(packageManeger: packageManeger, config: aptStreamCo
})); }));
}); });
app.get("/pool/:componentName/(:package)_(:arch)_(:version).deb", async (req, res, next) => {
const { componentName, package: packageName, arch, version: packageVersion } = req.params;
const packageID = (await packageManeger.search({packageComponent: componentName, packageArch: arch})).find(({packageControl: { Package, Version }}) => packageName === Package && Version === packageVersion);
if (!packageID) return res.status(404).json({error: "Package not exist"});
console.log(packageID);
return fileRestore(packageID, config).then(str => str.pipe(res.writeHead(200, {}))).catch(next);
});
return app; return app;
} }

View File

@@ -19,6 +19,7 @@ export async function fileRestore(packageDb: packageData, repoConfig: aptStreamC
return coreHttp.streamRequest(url, {headers: header, query}); return coreHttp.streamRequest(url, {headers: header, query});
} else if (source.type === "github") { } else if (source.type === "github") {
const { token } = source, { url } = packageDb.fileRestore; const { token } = source, { url } = packageDb.fileRestore;
return coreHttp.streamRequest(url, {headers: token ? {"Authorization": "token "+token} : {}}); return coreHttp.streamRequest(url, {headers: token ? {"Authorization": "token "+token} : {}});
} else if (source.type === "oracle_bucket") { } else if (source.type === "oracle_bucket") {
const { authConfig } = source, { fileRestore: { path } } = packageDb; const { authConfig } = source, { fileRestore: { path } } = packageDb;
@@ -114,7 +115,7 @@ export class syncRepository extends EventEmitter {
this.emit("error", err); this.emit("error", err);
continue; continue;
} }
await userAuth.setup().then(async () => { await userAuth.setup().then(async () => {
for (const tag of tags) { for (const tag of tags) {
const manifestManeger = new dockerUtils.Manifest(await registry.getManifets(tag, userAuth), registry); const manifestManeger = new dockerUtils.Manifest(await registry.getManifets(tag, userAuth), registry);