mirror of
https://github.com/grafana/grafana.git
synced 2025-08-03 06:22:13 +08:00
84 lines
2.9 KiB
TypeScript
84 lines
2.9 KiB
TypeScript
import React from 'react';
|
|
|
|
import {
|
|
DataSourceJsonData,
|
|
DataSourcePluginOptionsEditorProps,
|
|
KeyValue,
|
|
onUpdateDatasourceSecureJsonDataOption,
|
|
updateDatasourcePluginResetOption,
|
|
} from '@grafana/data';
|
|
import { InlineField, SecretTextArea } from '@grafana/ui';
|
|
|
|
export interface Props<T extends DataSourceJsonData, S> {
|
|
editorProps: DataSourcePluginOptionsEditorProps<T, S>;
|
|
showCACert?: boolean;
|
|
showKeyPair?: boolean;
|
|
secureJsonFields?: KeyValue<Boolean>;
|
|
labelWidth?: number;
|
|
}
|
|
|
|
export const TLSSecretsConfig = <T extends DataSourceJsonData, S extends {} = {}>(props: Props<T, S>) => {
|
|
const { labelWidth, editorProps, showCACert, showKeyPair = true } = props;
|
|
const { secureJsonFields } = editorProps.options;
|
|
return (
|
|
<>
|
|
{showKeyPair ? (
|
|
<InlineField
|
|
tooltip={
|
|
<span>To authenticate with an TLS/SSL client certificate, provide the client certificate here.</span>
|
|
}
|
|
labelWidth={labelWidth}
|
|
label="TLS/SSL Client Certificate"
|
|
>
|
|
<SecretTextArea
|
|
placeholder="Begins with -----BEGIN CERTIFICATE-----"
|
|
cols={45}
|
|
rows={7}
|
|
isConfigured={secureJsonFields && secureJsonFields.tlsClientCert}
|
|
onChange={onUpdateDatasourceSecureJsonDataOption(editorProps, 'tlsClientCert')}
|
|
onReset={() => {
|
|
updateDatasourcePluginResetOption(editorProps, 'tlsClientCert');
|
|
}}
|
|
></SecretTextArea>
|
|
</InlineField>
|
|
) : null}
|
|
{showCACert ? (
|
|
<InlineField
|
|
tooltip={<span>If the selected TLS/SSL mode requires a server root certificate, provide it here.</span>}
|
|
labelWidth={labelWidth}
|
|
label="TLS/SSL Root Certificate"
|
|
>
|
|
<SecretTextArea
|
|
placeholder="Begins with -----BEGIN CERTIFICATE-----"
|
|
cols={45}
|
|
rows={7}
|
|
isConfigured={secureJsonFields && secureJsonFields.tlsCACert}
|
|
onChange={onUpdateDatasourceSecureJsonDataOption(editorProps, 'tlsCACert')}
|
|
onReset={() => {
|
|
updateDatasourcePluginResetOption(editorProps, 'tlsCACert');
|
|
}}
|
|
></SecretTextArea>
|
|
</InlineField>
|
|
) : null}
|
|
{showKeyPair ? (
|
|
<InlineField
|
|
tooltip={<span>To authenticate with a client TLS/SSL certificate, provide the key here.</span>}
|
|
labelWidth={labelWidth}
|
|
label="TLS/SSL Client Key"
|
|
>
|
|
<SecretTextArea
|
|
placeholder="Begins with -----BEGIN RSA PRIVATE KEY-----"
|
|
cols={45}
|
|
rows={7}
|
|
isConfigured={secureJsonFields && secureJsonFields.tlsClientKey}
|
|
onChange={onUpdateDatasourceSecureJsonDataOption(editorProps, 'tlsClientKey')}
|
|
onReset={() => {
|
|
updateDatasourcePluginResetOption(editorProps, 'tlsClientKey');
|
|
}}
|
|
></SecretTextArea>
|
|
</InlineField>
|
|
) : null}
|
|
</>
|
|
);
|
|
};
|