From 7c827cac0e2acb4fb912fc51b89fc0562de3e459 Mon Sep 17 00:00:00 2001 From: Kasra Bigdeli Date: Sun, 16 Aug 2020 07:27:38 -0400 Subject: [PATCH] Added private bin and v4 --- package.json | 2 +- public/v4/apps/privatebin.yml | 35 +++++ public/v4/logos/privatebin.png | Bin 0 -> 23065 bytes scripts/build_one_click_apps.js | 6 +- scripts/build_one_click_apps_from_v4.js | 170 ++++++++++++++++++++++++ 5 files changed, 209 insertions(+), 4 deletions(-) create mode 100644 public/v4/apps/privatebin.yml create mode 100644 public/v4/logos/privatebin.png create mode 100644 scripts/build_one_click_apps_from_v4.js diff --git a/package.json b/package.json index e049e7c..9d97f65 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "formatter": "prettier --check './public/**/*.json'", "formatter-write": "prettier --write './public/**/*.json'", - "build": "rm -rf ./dist/ && mkdir -p dist && node ./scripts/build_one_click_apps.js", + "build": "rm -rf ./dist/ && mkdir -p dist && node ./scripts/build_one_click_apps.js && node ./scripts/build_one_click_apps_from_v4.js", "validate_json": "node ./scripts/validate_json.js", "publish": "npm run build && ./scripts/publish-from-actions.sh" }, diff --git a/public/v4/apps/privatebin.yml b/public/v4/apps/privatebin.yml new file mode 100644 index 0000000..5dd18af --- /dev/null +++ b/public/v4/apps/privatebin.yml @@ -0,0 +1,35 @@ +captainVersion: 4 +services: + "$$cap_appname": + image: privatebin/nginx-fpm-alpine:$$cap_version + environment: + TZ: "$$cap_tz" + PHP_TZ: "$$cap_tz" + volumes: + - "$$cap_appname-data:/srv/data" + caproverExtra: + containerHttpPort: '8080' +caproverOneClickApp: + variables: + - id: "$$cap_version" + label: PrivateBin Version + defaultValue: '1.3.4' + description: Check out their Docker page for the valid tags https://hub.docker.com/r/privatebin/nginx-fpm-alpine/tags + validRegex: "/^([^\\s^\\/])+$/" + - id: "$$cap_tz" + label: Time Zone + defaultValue: America/New_York + description: Get yours from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + validRegex: "/.{1,}/" + instructions: + start: |- + PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. + Data is encrypted and decrypted in the browser using 256bit AES in Galois Counter mode. + + More details: https://github.com/PrivateBin/PrivateBin + end: |- + PrivateBin has been successfully deployed! + displayName: PrivateBin + description: A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES. + documentation: See https://github.com/PrivateBin/docker-nginx-fpm-alpine + \ No newline at end of file diff --git a/public/v4/logos/privatebin.png b/public/v4/logos/privatebin.png new file mode 100644 index 0000000000000000000000000000000000000000..48e6608bdcbfc7e70073266a854cbeeba73c168f GIT binary patch literal 23065 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 AhyVZp literal 0 HcmV?d00001 diff --git a/scripts/build_one_click_apps.js b/scripts/build_one_click_apps.js index b08f04d..69fa232 100644 --- a/scripts/build_one_click_apps.js +++ b/scripts/build_one_click_apps.js @@ -77,11 +77,11 @@ function convertV2toV4(v2String) { parsed[propertyName] = undefined; } - parsed.captainVersion = 4; - parsed.caproverOneClickApp = {}; - parsed.services = parsed.dockerCompose.services; parsed.dockerCompose = undefined; + + parsed.captainVersion = 4; + parsed.caproverOneClickApp = {}; moveProperty('variables'); moveProperty('instructions'); diff --git a/scripts/build_one_click_apps_from_v4.js b/scripts/build_one_click_apps_from_v4.js new file mode 100644 index 0000000..20bcda3 --- /dev/null +++ b/scripts/build_one_click_apps_from_v4.js @@ -0,0 +1,170 @@ +/*jshint esversion: 6 */ +const path = require('path'); +const yaml = require('yaml'); +const fs = require('fs-extra'); + +const pathOfPublic = path.join(__dirname, '..', `public`); + +const pathOfDist = path.join(__dirname, '..', `dist`); + +const pathOfDistV2 = path.join(pathOfDist, 'v2'); +const pathOfDistV3 = path.join(pathOfDist, 'v3'); +const pathOfDistV4 = path.join(pathOfDist, 'v4'); + +const pathOfSourceDirectory = path.join(pathOfPublic, 'v4'); +const pathOfSourceDirectoryApps = path.join(pathOfSourceDirectory, 'apps'); +const pathOfSourceDirectoryLogos = path.join(pathOfSourceDirectory, 'logos'); + +/** + * Creates a listing of apps for GET http://oneclickapps.caprover.com/v4 + * { + "oneClickApps": [ + { + "name": "adminer", + "displayName": "Adminer", + "description": "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP", + "isOfficial": true, + "logoUrl": "adminer.png" + },.....]} + */ +function createAppList(appsFileNames, pathOfApps) { + const apps = appsFileNames.filter(v => `${v}`.endsWith('.yml')); + + if (apps.length !== appsFileNames.length) { + throw new Error('All files in v4 must end with .yml extension!'); + } + + const appDetails = []; + + for (var i = 0; i < apps.length; i++) { + const contentString = fs.readFileSync(path.join(pathOfApps, apps[i]), 'utf-8'); + const content = yaml.parse(contentString); + const captainVersion = `${content.captainVersion}`; + + apps[i] = apps[i].replace('.yml', ''); + const caproverOneClickApp = content.caproverOneClickApp; + + if (captainVersion === '4') { + if (!caproverOneClickApp.displayName) { + caproverOneClickApp.displayName = apps[i]; + caproverOneClickApp.displayName = caproverOneClickApp.displayName.substr(0, 1).toUpperCase() + + caproverOneClickApp.displayName.substring(1, caproverOneClickApp.displayName.length); + } + if (!caproverOneClickApp.description) caproverOneClickApp.description = ''; + + appDetails[i] = { + name: apps[i], + displayName: caproverOneClickApp.displayName, + description: caproverOneClickApp.description, + isOfficial: `${caproverOneClickApp.isOfficial}`.toLowerCase().trim() === 'true', + logoUrl: apps[i] + '.png' + }; + } else { + throw new Error('Unknown captain-version: ' + captainVersion); + } + + } + + return { + appList: apps, + appDetails: appDetails + }; +} + +function convertV4toV2(v4String) { + const parsed = JSON.parse(v4String); + if (`${parsed.captainVersion}` !== '4') { + throw new Error('CaptainVersion must be 4 for this conversion'); + } + + function moveProperty(propertyName) { + parsed[propertyName] = parsed.caproverOneClickApp[propertyName]; + } + + parsed.dockerCompose = { + services: parsed.services + }; + parsed.services = undefined; + + parsed.captainVersion = 2; + + + moveProperty('variables'); + moveProperty('instructions'); + moveProperty('displayName'); + moveProperty('description'); + moveProperty('documentation'); + + Object.keys(parsed.dockerCompose.services).forEach(serviceName => { + const service = parsed.dockerCompose.services[serviceName]; + + if (!service.caproverExtra) { + return; + } + + if (service.caproverExtra.containerHttpPort) { + service.containerHttpPort = service.caproverExtra.containerHttpPort; + } + if (service.caproverExtra.dockerfileLines) { + service.dockerfileLines = service.caproverExtra.dockerfileLines; + } + if (service.caproverExtra.notExposeAsWebApp) { + service.notExposeAsWebApp = service.caproverExtra.notExposeAsWebApp; + } + + service.caproverExtra = undefined; + }); + + parsed.caproverOneClickApp = undefined; + return parsed; +} + + +function buildDist() { + return fs.readdir(pathOfSourceDirectoryApps) + .then(function (appsFileNames) { // [ app1.yml app2.yml .... ] + + appsFileNames.forEach(appFileName => { + + console.log('Building dist for ' + appFileName); + + const pathOfAppFileInSource = path.join(pathOfSourceDirectoryApps, appFileName); + const contentParsed = yaml.parse(fs.readFileSync(pathOfAppFileInSource, 'utf-8')); + + //v4 + fs.outputJsonSync(path.join(pathOfDistV4, `apps`, appFileName.split('.')[0]), contentParsed); + + //v3 + fs.outputJsonSync(path.join(pathOfDistV3, `apps`, appFileName.split('.')[0]), convertV4toV2(JSON.stringify(contentParsed))); + + //v2 + fs.outputJsonSync(path.join(pathOfDistV2, `apps`, appFileName.split('.')[0] + '.json'), convertV4toV2(JSON.stringify(contentParsed))); + }); + + fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV2, `logos`)); + fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV3, `logos`)); + fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV4, `logos`)); + + const allAppsList = createAppList(appsFileNames, pathOfSourceDirectoryApps); + const v3List = { + oneClickApps: allAppsList.appDetails + }; + fs.outputJsonSync(path.join(pathOfDistV2, 'autoGeneratedList.json'), allAppsList); + fs.outputJsonSync(path.join(pathOfDistV2, 'list'), v3List); + fs.outputJsonSync(path.join(pathOfDistV3, 'list'), v3List); + fs.outputJsonSync(path.join(pathOfDistV4, 'list'), v3List); + }) + .then(function () { + return fs.copySync(path.join(pathOfPublic, 'CNAME'), path.join(pathOfDist, 'CNAME')); + }); +} + + +Promise.resolve() + .then(function () { + return buildDist(); + }) + .catch(function (err) { + console.error(err); + process.exit(127); + }); \ No newline at end of file