Files
AdGuardHome/client2/src/lib/entities/TlsConfig.ts
Eugene Burkov 5e20ac7ed5 Pull request: beta client squashed
Merge in DNS/adguard-home from beta-client-2 to master

Squashed commit of the following:

commit b2640cc49a6c5484d730b534dcf5a8013d7fa478
Merge: 659def862 aef4659e9
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Tue Dec 29 19:23:09 2020 +0300

    Merge branch 'master' into beta-client-2

commit 659def8626467949c35b7a6a0c99ffafb07b4385
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Tue Dec 29 17:25:14 2020 +0300

    all: upgrade github actions node version

commit b4b8cf8dd75672e9155da5d111ac66e8f5ba1535
Author: Vladislav Abdulmyanov <v.abdulmyanov@adguard.com>
Date:   Tue Dec 29 16:57:14 2020 +0300

    all: beta client squashed
2020-12-29 19:53:56 +03:00

405 lines
13 KiB
TypeScript

// This file was autogenerated. Please do not change.
// All changes will be overwrited on commit.
export interface ITlsConfig {
certificate_chain?: string;
certificate_path?: string;
dns_names?: string[];
enabled?: boolean;
force_https?: boolean;
issuer?: string;
key_type?: string;
not_after?: string;
not_before?: string;
port_dns_over_quic?: number;
port_dns_over_tls?: number;
port_https?: number;
private_key?: string;
private_key_path?: string;
server_name?: string;
subject?: string;
valid_cert?: boolean;
valid_chain?: boolean;
valid_key?: boolean;
valid_pair?: boolean;
warning_validation?: string;
}
export default class TlsConfig {
readonly _certificate_chain: string | undefined;
/** */
get certificateChain(): string | undefined {
return this._certificate_chain;
}
readonly _certificate_path: string | undefined;
/** */
get certificatePath(): string | undefined {
return this._certificate_path;
}
readonly _dns_names: string[] | undefined;
/**
* Description: The value of SubjectAltNames field of the first certificate in the chain.
*
* Example: *.example.org
*/
get dnsNames(): string[] | undefined {
return this._dns_names;
}
readonly _enabled: boolean | undefined;
/**
* Description: enabled is the encryption (DOT/DOH/HTTPS) status
* Example: true
*/
get enabled(): boolean | undefined {
return this._enabled;
}
readonly _force_https: boolean | undefined;
/**
* Description: if true, forces HTTP->HTTPS redirect
* Example: true
*/
get forceHttps(): boolean | undefined {
return this._force_https;
}
readonly _issuer: string | undefined;
/**
* Description: The issuer of the first certificate in the chain.
* Example: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
*/
get issuer(): string | undefined {
return this._issuer;
}
readonly _key_type: string | undefined;
/**
* Description: Key type.
* Example: RSA
*/
get keyType(): string | undefined {
return this._key_type;
}
readonly _not_after: string | undefined;
/**
* Description: The NotAfter field of the first certificate in the chain.
*
* Example: 2019-05-01T10:47:32Z
*/
get notAfter(): string | undefined {
return this._not_after;
}
readonly _not_before: string | undefined;
/**
* Description: The NotBefore field of the first certificate in the chain.
*
* Example: 2019-01-31T10:47:32Z
*/
get notBefore(): string | undefined {
return this._not_before;
}
readonly _port_dns_over_quic: number | undefined;
/**
* Description: DNS-over-QUIC port. If 0, DOQ will be disabled.
* Example: 784
*/
get portDnsOverQuic(): number | undefined {
return this._port_dns_over_quic;
}
readonly _port_dns_over_tls: number | undefined;
/**
* Description: DNS-over-TLS port. If 0, DOT will be disabled.
* Example: 853
*/
get portDnsOverTls(): number | undefined {
return this._port_dns_over_tls;
}
readonly _port_https: number | undefined;
/**
* Description: HTTPS port. If 0, HTTPS will be disabled.
* Example: 443
*/
get portHttps(): number | undefined {
return this._port_https;
}
readonly _private_key: string | undefined;
/** */
get privateKey(): string | undefined {
return this._private_key;
}
readonly _private_key_path: string | undefined;
/** */
get privateKeyPath(): string | undefined {
return this._private_key_path;
}
readonly _server_name: string | undefined;
/**
* Description: server_name is the hostname of your HTTPS/TLS server
* Example: example.org
*/
get serverName(): string | undefined {
return this._server_name;
}
readonly _subject: string | undefined;
/**
* Description: The subject of the first certificate in the chain.
* Example: CN=example.org
*/
get subject(): string | undefined {
return this._subject;
}
readonly _valid_cert: boolean | undefined;
/**
* Description: Set to true if the specified certificates chain is a valid chain of X509 certificates.
*
* Example: true
*/
get validCert(): boolean | undefined {
return this._valid_cert;
}
readonly _valid_chain: boolean | undefined;
/**
* Description: Set to true if the specified certificates chain is verified and issued by a known CA.
*
* Example: true
*/
get validChain(): boolean | undefined {
return this._valid_chain;
}
readonly _valid_key: boolean | undefined;
/**
* Description: Set to true if the key is a valid private key.
* Example: true
*/
get validKey(): boolean | undefined {
return this._valid_key;
}
readonly _valid_pair: boolean | undefined;
/**
* Description: Set to true if both certificate and private key are correct.
*
* Example: true
*/
get validPair(): boolean | undefined {
return this._valid_pair;
}
readonly _warning_validation: string | undefined;
/**
* Description: A validation warning message with the issue description.
*
* Example: You have specified an empty certificate
*/
get warningValidation(): string | undefined {
return this._warning_validation;
}
constructor(props: ITlsConfig) {
if (typeof props.certificate_chain === 'string') {
this._certificate_chain = props.certificate_chain.trim();
}
if (typeof props.certificate_path === 'string') {
this._certificate_path = props.certificate_path.trim();
}
if (props.dns_names) {
this._dns_names = props.dns_names;
}
if (typeof props.enabled === 'boolean') {
this._enabled = props.enabled;
}
if (typeof props.force_https === 'boolean') {
this._force_https = props.force_https;
}
if (typeof props.issuer === 'string') {
this._issuer = props.issuer.trim();
}
if (typeof props.key_type === 'string') {
this._key_type = props.key_type.trim();
}
if (typeof props.not_after === 'string') {
this._not_after = props.not_after.trim();
}
if (typeof props.not_before === 'string') {
this._not_before = props.not_before.trim();
}
if (typeof props.port_dns_over_quic === 'number') {
this._port_dns_over_quic = props.port_dns_over_quic;
}
if (typeof props.port_dns_over_tls === 'number') {
this._port_dns_over_tls = props.port_dns_over_tls;
}
if (typeof props.port_https === 'number') {
this._port_https = props.port_https;
}
if (typeof props.private_key === 'string') {
this._private_key = props.private_key.trim();
}
if (typeof props.private_key_path === 'string') {
this._private_key_path = props.private_key_path.trim();
}
if (typeof props.server_name === 'string') {
this._server_name = props.server_name.trim();
}
if (typeof props.subject === 'string') {
this._subject = props.subject.trim();
}
if (typeof props.valid_cert === 'boolean') {
this._valid_cert = props.valid_cert;
}
if (typeof props.valid_chain === 'boolean') {
this._valid_chain = props.valid_chain;
}
if (typeof props.valid_key === 'boolean') {
this._valid_key = props.valid_key;
}
if (typeof props.valid_pair === 'boolean') {
this._valid_pair = props.valid_pair;
}
if (typeof props.warning_validation === 'string') {
this._warning_validation = props.warning_validation.trim();
}
}
serialize(): ITlsConfig {
const data: ITlsConfig = {
};
if (typeof this._certificate_chain !== 'undefined') {
data.certificate_chain = this._certificate_chain;
}
if (typeof this._certificate_path !== 'undefined') {
data.certificate_path = this._certificate_path;
}
if (typeof this._dns_names !== 'undefined') {
data.dns_names = this._dns_names;
}
if (typeof this._enabled !== 'undefined') {
data.enabled = this._enabled;
}
if (typeof this._force_https !== 'undefined') {
data.force_https = this._force_https;
}
if (typeof this._issuer !== 'undefined') {
data.issuer = this._issuer;
}
if (typeof this._key_type !== 'undefined') {
data.key_type = this._key_type;
}
if (typeof this._not_after !== 'undefined') {
data.not_after = this._not_after;
}
if (typeof this._not_before !== 'undefined') {
data.not_before = this._not_before;
}
if (typeof this._port_dns_over_quic !== 'undefined') {
data.port_dns_over_quic = this._port_dns_over_quic;
}
if (typeof this._port_dns_over_tls !== 'undefined') {
data.port_dns_over_tls = this._port_dns_over_tls;
}
if (typeof this._port_https !== 'undefined') {
data.port_https = this._port_https;
}
if (typeof this._private_key !== 'undefined') {
data.private_key = this._private_key;
}
if (typeof this._private_key_path !== 'undefined') {
data.private_key_path = this._private_key_path;
}
if (typeof this._server_name !== 'undefined') {
data.server_name = this._server_name;
}
if (typeof this._subject !== 'undefined') {
data.subject = this._subject;
}
if (typeof this._valid_cert !== 'undefined') {
data.valid_cert = this._valid_cert;
}
if (typeof this._valid_chain !== 'undefined') {
data.valid_chain = this._valid_chain;
}
if (typeof this._valid_key !== 'undefined') {
data.valid_key = this._valid_key;
}
if (typeof this._valid_pair !== 'undefined') {
data.valid_pair = this._valid_pair;
}
if (typeof this._warning_validation !== 'undefined') {
data.warning_validation = this._warning_validation;
}
return data;
}
validate(): string[] {
const validate = {
enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
server_name: !this._server_name ? true : typeof this._server_name === 'string' && !this._server_name ? true : this._server_name,
force_https: !this._force_https ? true : typeof this._force_https === 'boolean',
port_https: !this._port_https ? true : typeof this._port_https === 'number',
port_dns_over_tls: !this._port_dns_over_tls ? true : typeof this._port_dns_over_tls === 'number',
port_dns_over_quic: !this._port_dns_over_quic ? true : typeof this._port_dns_over_quic === 'number',
certificate_chain: !this._certificate_chain ? true : typeof this._certificate_chain === 'string' && !this._certificate_chain ? true : this._certificate_chain,
private_key: !this._private_key ? true : typeof this._private_key === 'string' && !this._private_key ? true : this._private_key,
certificate_path: !this._certificate_path ? true : typeof this._certificate_path === 'string' && !this._certificate_path ? true : this._certificate_path,
private_key_path: !this._private_key_path ? true : typeof this._private_key_path === 'string' && !this._private_key_path ? true : this._private_key_path,
valid_cert: !this._valid_cert ? true : typeof this._valid_cert === 'boolean',
valid_chain: !this._valid_chain ? true : typeof this._valid_chain === 'boolean',
subject: !this._subject ? true : typeof this._subject === 'string' && !this._subject ? true : this._subject,
issuer: !this._issuer ? true : typeof this._issuer === 'string' && !this._issuer ? true : this._issuer,
not_before: !this._not_before ? true : typeof this._not_before === 'string' && !this._not_before ? true : this._not_before,
not_after: !this._not_after ? true : typeof this._not_after === 'string' && !this._not_after ? true : this._not_after,
dns_names: !this._dns_names ? true : this._dns_names.reduce((result, p) => result && typeof p === 'string', true),
valid_key: !this._valid_key ? true : typeof this._valid_key === 'boolean',
key_type: !this._key_type ? true : typeof this._key_type === 'string' && !this._key_type ? true : this._key_type,
warning_validation: !this._warning_validation ? true : typeof this._warning_validation === 'string' && !this._warning_validation ? true : this._warning_validation,
valid_pair: !this._valid_pair ? true : typeof this._valid_pair === 'boolean',
};
const isError: string[] = [];
Object.keys(validate).forEach((key) => {
if (!(validate as any)[key]) {
isError.push(key);
}
});
return isError;
}
update(props: Partial<ITlsConfig>): TlsConfig {
return new TlsConfig({ ...this.serialize(), ...props });
}
}