Skip to content
Snippets Groups Projects
Commit 6688f7c5 authored by Reiter, Christoph's avatar Reiter, Christoph :snake:
Browse files

Add a helper for generating a dummy TLS cert setup

This is used in various packages, so clean it up and add it
to rollup.utils.js.
parent be243cdd
No related branches found
No related tags found
No related merge requests found
Pipeline #16049 passed
import path from 'path'; import path from 'path';
import url from 'url'; import url from 'url';
import fs from 'fs';
import child_process from 'child_process'; import child_process from 'child_process';
import resolve from '@rollup/plugin-node-resolve'; import resolve from '@rollup/plugin-node-resolve';
import selfsigned from 'selfsigned';
import findCacheDir from 'find-cache-dir';
import { assert } from 'console';
export function getBuildInfo(build) { export function getBuildInfo(build) {
let remote = child_process.execSync('git config --get remote.origin.url').toString().trim(); let remote = child_process.execSync('git config --get remote.origin.url').toString().trim();
...@@ -40,4 +44,27 @@ export async function getPackagePath(packageName, assetPath) { ...@@ -40,4 +44,27 @@ export async function getPackagePath(packageName, assetPath) {
packageRoot = path.dirname(require.resolve(packageName + '/package.json')); packageRoot = path.dirname(require.resolve(packageName + '/package.json'));
} }
return path.relative(process.cwd(), path.join(packageRoot, assetPath)); return path.relative(process.cwd(), path.join(packageRoot, assetPath));
}
/**
* Creates a dummy dev server certificate, caches it and returns it.
*/
export async function generateTLSConfig() {
const certDir = findCacheDir({name: 'dbp-dev-server-cert'});
const keyPath = path.join(certDir, 'server.key');
const certPath = path.join(certDir, 'server.cert');
await fs.promises.mkdir(certDir, {recursive: true});
if (!fs.existsSync(keyPath) || !fs.existsSync(certPath)) {
const attrs = [{name: 'commonName', value: 'dbp-dev.localhost'}];
const pems = selfsigned.generate(attrs, {algorithm: 'sha256', days: 9999});
await fs.promises.writeFile(keyPath, pems.private);
await fs.promises.writeFile(certPath, pems.cert);
}
return {
key: await fs.promises.readFile(keyPath),
cert: await fs.promises.readFile(certPath)
}
} }
\ No newline at end of file
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"chokidar": "^3.4.0", "chokidar": "^3.4.0",
"eslint": "^7.3.1", "eslint": "^7.3.1",
"eslint-plugin-jsdoc": "^31.0.0", "eslint-plugin-jsdoc": "^31.0.0",
"find-cache-dir": "^3.3.1",
"glob": "^7.1.6", "glob": "^7.1.6",
"i18next-scanner": "^3.0.0", "i18next-scanner": "^3.0.0",
"karma": "^6.0.0", "karma": "^6.0.0",
...@@ -48,11 +49,11 @@ ...@@ -48,11 +49,11 @@
"@dbp-toolkit/auth": "^0.1.0", "@dbp-toolkit/auth": "^0.1.0",
"@dbp-toolkit/common": "^0.1.0", "@dbp-toolkit/common": "^0.1.0",
"@dbp-toolkit/file-handling": "^0.1.0", "@dbp-toolkit/file-handling": "^0.1.0",
"@dbp-toolkit/font-source-sans-pro": "^0.1.0",
"@dbp-toolkit/language-select": "^0.1.0", "@dbp-toolkit/language-select": "^0.1.0",
"@dbp-toolkit/notification": "^0.1.0", "@dbp-toolkit/notification": "^0.1.0",
"@dbp-toolkit/person-profile": "^0.1.0", "@dbp-toolkit/person-profile": "^0.1.0",
"@dbp-toolkit/person-select": "^0.1.0", "@dbp-toolkit/person-select": "^0.1.0",
"@dbp-toolkit/font-source-sans-pro": "^0.1.0",
"@open-wc/scoped-elements": "^1.1.1", "@open-wc/scoped-elements": "^1.1.1",
"fabric": "^4.2.0", "fabric": "^4.2.0",
"file-saver": "^2.0.2", "file-saver": "^2.0.2",
......
import path from 'path'; import path from 'path';
import fs from 'fs';
import url from 'url'; import url from 'url';
import glob from 'glob'; import glob from 'glob';
import resolve from '@rollup/plugin-node-resolve'; import resolve from '@rollup/plugin-node-resolve';
...@@ -16,7 +15,7 @@ import del from 'rollup-plugin-delete'; ...@@ -16,7 +15,7 @@ import del from 'rollup-plugin-delete';
import md from 'rollup-plugin-md'; import md from 'rollup-plugin-md';
import emitEJS from 'rollup-plugin-emit-ejs' import emitEJS from 'rollup-plugin-emit-ejs'
import babel from '@rollup/plugin-babel' import babel from '@rollup/plugin-babel'
import selfsigned from 'selfsigned'; import {generateTLSConfig} from '../rollup.utils.js';
// ------------------------------- // -------------------------------
...@@ -95,25 +94,6 @@ switch (build) { ...@@ -95,25 +94,6 @@ switch (build) {
let nextcloudFileURL = nextcloudBaseURL + '/apps/files/?dir='; let nextcloudFileURL = nextcloudBaseURL + '/apps/files/?dir=';
/**
* Creates a server certificate and caches it in the .cert directory
*/
function generateTLSConfig() {
fs.mkdirSync('.cert', {recursive: true});
if (!fs.existsSync('.cert/server.key') || !fs.existsSync('.cert/server.cert')) {
const attrs = [{name: 'commonName', value: 'dbp-dev.localhost'}];
const pems = selfsigned.generate(attrs, {algorithm: 'sha256', days: 9999});
fs.writeFileSync('.cert/server.key', pems.private);
fs.writeFileSync('.cert/server.cert', pems.cert);
}
return {
key: fs.readFileSync('.cert/server.key'),
cert: fs.readFileSync('.cert/server.cert')
}
}
function getBuildInfo() { function getBuildInfo() {
const child_process = require('child_process'); const child_process = require('child_process');
const url = require('url'); const url = require('url');
...@@ -323,7 +303,7 @@ Dependencies: ...@@ -323,7 +303,7 @@ Dependencies:
host: '127.0.0.1', host: '127.0.0.1',
port: 8001, port: 8001,
historyApiFallback: basePath + pkg.name + '.html', historyApiFallback: basePath + pkg.name + '.html',
https: USE_HTTPS ? generateTLSConfig() : false, https: USE_HTTPS ? await generateTLSConfig() : false,
headers: { headers: {
'Content-Security-Policy': `default-src 'self' 'unsafe-eval' 'unsafe-inline' analytics.tugraz.at ${keyCloakServer} ${entryPointURL} httpbin.org ${nextcloudBaseURL} www.handy-signatur.at ${pdfAsQualifiedlySigningServer} ; img-src * blob: data:` 'Content-Security-Policy': `default-src 'self' 'unsafe-eval' 'unsafe-inline' analytics.tugraz.at ${keyCloakServer} ${entryPointURL} httpbin.org ${nextcloudBaseURL} www.handy-signatur.at ${pdfAsQualifiedlySigningServer} ; img-src * blob: data:`
}, },
......
...@@ -922,7 +922,7 @@ ...@@ -922,7 +922,7 @@
resolved "https://registry.yarnpkg.com/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.0.tgz#0df5d438285fc3482838786ee81895318f0ff778" resolved "https://registry.yarnpkg.com/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.0.tgz#0df5d438285fc3482838786ee81895318f0ff778"
integrity sha512-UfdK1MPnR6T7f3svzzYBfu3qBkkZ/KsPhcpc3JYhsUY4hbpwNF9wEQtD4Z+/mRqMTJrKg++YSxIxE0FBhY3RIw== integrity sha512-UfdK1MPnR6T7f3svzzYBfu3qBkkZ/KsPhcpc3JYhsUY4hbpwNF9wEQtD4Z+/mRqMTJrKg++YSxIxE0FBhY3RIw==
"@open-wc/scoped-elements@^1.1.1": "@open-wc/scoped-elements@^1.1.1", "@open-wc/scoped-elements@^1.3.3":
version "1.3.3" version "1.3.3"
resolved "https://registry.yarnpkg.com/@open-wc/scoped-elements/-/scoped-elements-1.3.3.tgz#fe008aef4d74fb00c553c900602960638fc1c7b0" resolved "https://registry.yarnpkg.com/@open-wc/scoped-elements/-/scoped-elements-1.3.3.tgz#fe008aef4d74fb00c553c900602960638fc1c7b0"
integrity sha512-vFIQVYYjFw67odUE4JzZOpctnF7S/2DX+S+clrL3bQPql7HvEnV0wMFwOWUavQTuCJi0rfU8GTcNMiUybio+Yg== integrity sha512-vFIQVYYjFw67odUE4JzZOpctnF7S/2DX+S+clrL3bQPql7HvEnV0wMFwOWUavQTuCJi0rfU8GTcNMiUybio+Yg==
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment