feat(cli): allow setting config vars via cli
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { ClientOptions, createClient } from 'ldapjs';
|
||||
import debug from 'debug';
|
||||
import * as tls from 'tls';
|
||||
import * as fs from 'fs';
|
||||
import { IAuthentication } from '../types/Authentication';
|
||||
|
||||
const usernameFields = ['posixUid', 'mail'];
|
||||
@@ -13,12 +14,16 @@ interface IGoogleLDAPAuthOptions {
|
||||
/** base DN
|
||||
* e.g. 'dc=hokify,dc=com', */
|
||||
base: string;
|
||||
tls: {
|
||||
keyFile: string;
|
||||
certFile: string;
|
||||
};
|
||||
/** tls options
|
||||
* e.g. {
|
||||
key: fs.readFileSync('ldap.gsuite.key'),
|
||||
cert: fs.readFileSync('ldap.gsuite.crt')
|
||||
} */
|
||||
tlsOptions: tls.TlsOptions;
|
||||
tlsOptions?: tls.TlsOptions;
|
||||
}
|
||||
|
||||
export class GoogleLDAPAuth implements IAuthentication {
|
||||
@@ -33,12 +38,16 @@ export class GoogleLDAPAuth implements IAuthentication {
|
||||
constructor(config: IGoogleLDAPAuthOptions) {
|
||||
this.base = config.base;
|
||||
|
||||
const tlsOptions = {
|
||||
key: fs.readFileSync(config.tls.keyFile),
|
||||
cert: fs.readFileSync(config.tls.certFile),
|
||||
servername: 'ldap.google.com',
|
||||
...config.tlsOptions
|
||||
};
|
||||
|
||||
this.config = {
|
||||
url: 'ldaps://ldap.google.com:636',
|
||||
tlsOptions: {
|
||||
...config.tlsOptions,
|
||||
servername: 'ldap.google.com'
|
||||
}
|
||||
tlsOptions
|
||||
};
|
||||
|
||||
this.fetchDNs();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import * as LdapAuth from 'ldapauth-fork';
|
||||
import * as fs from 'fs';
|
||||
import { IAuthentication } from '../types/Authentication';
|
||||
|
||||
interface ILDAPAuthOptions {
|
||||
@@ -9,10 +10,13 @@ interface ILDAPAuthOptions {
|
||||
/** base DN
|
||||
* e.g. 'dc=hokify,dc=com', */
|
||||
base: string;
|
||||
|
||||
tls: {
|
||||
keyFile: string;
|
||||
certFile: string;
|
||||
};
|
||||
/** tls options
|
||||
* e.g. {
|
||||
key: fs.readFileSync('ldap.gsuite.key'),
|
||||
cert: fs.readFileSync('ldap.gsuite.crt'),
|
||||
servername: 'ldap.google.com'
|
||||
} */
|
||||
tlsOptions?: any;
|
||||
@@ -25,12 +29,18 @@ interface ILDAPAuthOptions {
|
||||
export class LDAPAuth implements IAuthentication {
|
||||
private ldap: LdapAuth;
|
||||
|
||||
constructor(options: ILDAPAuthOptions) {
|
||||
constructor(config: ILDAPAuthOptions) {
|
||||
const tlsOptions = {
|
||||
key: fs.readFileSync(config.tls.keyFile),
|
||||
cert: fs.readFileSync(config.tls.certFile),
|
||||
...config.tlsOptions
|
||||
};
|
||||
|
||||
this.ldap = new LdapAuth({
|
||||
url: options.url,
|
||||
searchBase: options.base,
|
||||
tlsOptions: options.tlsOptions,
|
||||
searchFilter: options.searchFilter || '(uid={{username}})',
|
||||
url: config.url,
|
||||
searchBase: config.base,
|
||||
tlsOptions,
|
||||
searchFilter: config.searchFilter || '(uid={{username}})',
|
||||
reconnect: true
|
||||
});
|
||||
this.ldap.on('error', function(err) {
|
||||
|
||||
Reference in New Issue
Block a user