mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Plugins: Validate root URLs when signing private plugins via grafana-toolkit (#51968)
* validate URLs * apply PR review feedback * fix err msg
This commit is contained in:
parent
e46ee78bed
commit
b32ad993c5
@ -5,7 +5,7 @@ import rimrafCallback from 'rimraf';
|
|||||||
import { promisify } from 'util';
|
import { promisify } from 'util';
|
||||||
|
|
||||||
import { getPluginId } from '../../config/utils/getPluginId';
|
import { getPluginId } from '../../config/utils/getPluginId';
|
||||||
import { getPluginJson } from '../../config/utils/pluginValidation';
|
import { assertRootUrlIsValid, getPluginJson } from '../../config/utils/pluginValidation';
|
||||||
import {
|
import {
|
||||||
getJobFolder,
|
getJobFolder,
|
||||||
writeJobStats,
|
writeJobStats,
|
||||||
@ -141,6 +141,7 @@ const packagePluginRunner: TaskRunner<PluginCIOptions> = async ({ signatureType,
|
|||||||
manifest.signatureType = signatureType;
|
manifest.signatureType = signatureType;
|
||||||
}
|
}
|
||||||
if (rootUrls) {
|
if (rootUrls) {
|
||||||
|
rootUrls.forEach(assertRootUrlIsValid);
|
||||||
manifest.rootUrls = rootUrls;
|
manifest.rootUrls = rootUrls;
|
||||||
}
|
}
|
||||||
const signedManifest = await signManifest(manifest);
|
const signedManifest = await signManifest(manifest);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
|
import { assertRootUrlIsValid } from '../../config/utils/pluginValidation';
|
||||||
import { buildManifest, signManifest, saveManifest } from '../../plugins/manifest';
|
import { buildManifest, signManifest, saveManifest } from '../../plugins/manifest';
|
||||||
|
|
||||||
import { getToolkitVersion } from './plugin.utils';
|
import { getToolkitVersion } from './plugin.utils';
|
||||||
@ -22,6 +23,7 @@ const pluginSignRunner: TaskRunner<PluginSignOptions> = async ({ signatureType,
|
|||||||
manifest.signatureType = signatureType;
|
manifest.signatureType = signatureType;
|
||||||
}
|
}
|
||||||
if (rootUrls) {
|
if (rootUrls) {
|
||||||
|
rootUrls.forEach(assertRootUrlIsValid);
|
||||||
manifest.rootUrls = rootUrls;
|
manifest.rootUrls = rootUrls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,3 +36,11 @@ export const getPluginJson = (path: string): PluginMeta => {
|
|||||||
|
|
||||||
return pluginJson as PluginMeta;
|
return pluginJson as PluginMeta;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const assertRootUrlIsValid = (rootUrl: string) => {
|
||||||
|
try {
|
||||||
|
new URL(rootUrl);
|
||||||
|
} catch (err) {
|
||||||
|
throw new Error(`${rootUrl} is not a valid URL`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user