mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-12-18 06:15:43 -05:00
7b9f9a487b
Signed-off-by: David Mehren <git@herrmehren.de>
159 lines
3.4 KiB
TypeScript
159 lines
3.4 KiB
TypeScript
import { Permission } from './enum'
|
|
import { IHelmetContentSecurityPolicyDirectives } from 'helmet'
|
|
|
|
type CSPDirectives = IHelmetContentSecurityPolicyDirectives
|
|
|
|
export interface Config {
|
|
permission: Permission;
|
|
domain: string;
|
|
urlPath: string;
|
|
host: string;
|
|
port: number;
|
|
loglevel: string;
|
|
urlAddPort: boolean;
|
|
allowOrigin: string[];
|
|
useSSL: boolean;
|
|
hsts: {
|
|
enable: boolean;
|
|
maxAgeSeconds: number;
|
|
includeSubdomains: boolean;
|
|
preload: boolean;
|
|
};
|
|
csp: {
|
|
enable: boolean;
|
|
directives?: CSPDirectives;
|
|
addDefaults: boolean;
|
|
addDisqus: boolean;
|
|
addGoogleAnalytics: boolean;
|
|
upgradeInsecureRequests: string | boolean;
|
|
reportURI?: string;
|
|
};
|
|
protocolUseSSL: boolean;
|
|
useCDN: boolean;
|
|
allowAnonymous: boolean;
|
|
allowAnonymousEdits: boolean;
|
|
allowFreeURL: boolean;
|
|
forbiddenNoteIDs: string[];
|
|
defaultPermission: string;
|
|
dbURL: string;
|
|
db;
|
|
sslKeyPath: string;
|
|
sslCertPath: string;
|
|
sslCAPath: string[];
|
|
dhParamPath: string;
|
|
publicPath: string;
|
|
viewPath: string;
|
|
tmpPath: string;
|
|
defaultNotePath: string;
|
|
docsPath: string;
|
|
uploadsPath: string;
|
|
sessionName: string;
|
|
sessionSecret: string;
|
|
sessionSecretLen: number;
|
|
sessionLife: number;
|
|
staticCacheTime: number;
|
|
heartbeatInterval: number;
|
|
heartbeatTimeout: number;
|
|
tooBusyLag: number;
|
|
documentMaxLength: number;
|
|
imageUploadType: 'azure' | 'filesystem' | 'imgur' | 'lutim' | 'minio' | 's3';
|
|
lutim?: {
|
|
url: string;
|
|
};
|
|
imgur?: {
|
|
clientID: string;
|
|
};
|
|
s3?: {
|
|
accessKeyId: string;
|
|
secretAccessKey: string;
|
|
region: string;
|
|
};
|
|
minio?: {
|
|
accessKey?: string;
|
|
secretKey?: string;
|
|
endPoint?: string;
|
|
secure?: boolean;
|
|
port?: number;
|
|
};
|
|
s3bucket?: string;
|
|
azure?: {
|
|
connectionString: string;
|
|
container: string;
|
|
};
|
|
oauth2?: {
|
|
providerName: string;
|
|
authorizationURL: string;
|
|
tokenURL: string;
|
|
clientID: string;
|
|
clientSecret: string;
|
|
};
|
|
facebook?: {
|
|
clientID: string;
|
|
clientSecret: string;
|
|
};
|
|
twitter?: {
|
|
consumerKey: string;
|
|
consumerSecret: string;
|
|
};
|
|
github?: {
|
|
clientID: string;
|
|
clientSecret: string;
|
|
};
|
|
gitlab?: {
|
|
baseURL?: string;
|
|
clientID?: string;
|
|
clientSecret?: string;
|
|
scope?: string;
|
|
version?: string;
|
|
};
|
|
dropbox?: {
|
|
clientID: string;
|
|
clientSecret: string;
|
|
appKey: string;
|
|
};
|
|
google?: {
|
|
clientID: string;
|
|
clientSecret: string;
|
|
hostedDomain: string;
|
|
};
|
|
ldap?: {
|
|
providerName: string;
|
|
url: string;
|
|
bindDn: string;
|
|
bindCredentials: string;
|
|
searchBase: string;
|
|
searchFilter: string;
|
|
searchAttributes: string;
|
|
usernameField: string;
|
|
useridField: string;
|
|
tlsca: string;
|
|
starttls?: boolean;
|
|
tlsOptions: {
|
|
ca: string[];
|
|
};
|
|
};
|
|
saml?: {
|
|
idpSsoUrl?: string;
|
|
idpCert?: string;
|
|
issuer?: string;
|
|
identifierFormat?: string;
|
|
disableRequestedAuthnContext?: boolean;
|
|
groupAttribute?: string;
|
|
externalGroups?: string[];
|
|
requiredGroups?: string[];
|
|
attribute?: {
|
|
id?: string;
|
|
username?: string;
|
|
email?: string;
|
|
};
|
|
};
|
|
email: boolean;
|
|
allowEmailRegister: boolean;
|
|
allowGravatar: boolean;
|
|
openID: boolean;
|
|
linkifyHeaderStyle: string;
|
|
|
|
// TODO: Remove escape hatch for dynamically added properties
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
[propName: string]: any;
|
|
}
|