├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── bin └── build.sh ├── docker-compose ├── certcacheclient │ ├── docker-compose.yml │ ├── nginx │ │ └── config │ │ │ └── 000-default.conf │ └── www │ │ └── index.html ├── certcacheserver │ └── docker-compose.yml └── standalone │ ├── docker-compose.yml │ ├── nginx │ └── config │ │ └── 000-default.conf │ └── www │ └── index.html ├── docker ├── entrypoint.sh └── requirements.txt ├── docs ├── Config directives.md ├── Configure challenges.md ├── Debugging problems.md ├── ECDSA Certificates.md ├── Installing certcache client.md ├── Installing certcache server.md ├── Standalone mode.md ├── Using certificates.md └── images │ ├── 93million_logo-dark.svg │ ├── 93million_logo.svg │ ├── certcache_logo-dark.svg │ ├── certcache_logo.svg │ ├── dns-01_diagram-dark.svg │ ├── dns-01_diagram.svg │ ├── http-01_diagram-dark.svg │ └── http-01_diagram.svg ├── jest.config.all.js ├── jest.config.js ├── jest.config.sit.js ├── package.json ├── sit ├── bin │ ├── cnf │ │ └── ca.cnf │ ├── createca.sh │ └── createcert.sh ├── deps │ ├── ngrok-v3-stable-linux-amd64.tgz │ └── ngrok-v3-stable-linux-arm64.tgz ├── filepaths.js ├── index.test.js ├── lib │ ├── setupTests.js │ └── startNgrok.js └── skel │ └── server │ └── conf │ └── settings.json └── src ├── bin └── generate-access-keys.sh ├── cli ├── cli.js └── commands │ ├── add-client.js │ ├── args │ └── index.js │ ├── client.js │ ├── create-keys.js │ ├── get.js │ ├── index.js │ ├── info.js │ ├── ls.js │ ├── serve.js │ ├── sync.js │ └── testCmd.js ├── config ├── config.js ├── config.test.js ├── defaults.js └── defaults.test.js ├── extensions ├── certbot │ ├── canGenerateDomains.js │ ├── canGenerateDomains.test.js │ ├── commandArgs.js │ ├── config.js │ ├── config.test.js │ ├── generateCert.js │ ├── generateCert.test.js │ ├── getBundle.js │ ├── getBundle.test.js │ ├── getLocalCerts.js │ ├── getLocalCerts.test.js │ ├── getMetaFromCert.js │ ├── getMetaFromCert.test.js │ ├── getMetaFromCertDefinition.js │ ├── getMetaFromCertDefinition.test.js │ ├── getMetaFromConfig.js │ ├── getMetaFromConfig.test.js │ ├── index.js │ ├── lib │ │ ├── canonicaliseDomains.js │ │ ├── canonicaliseDomains.test.js │ │ ├── challenges │ │ │ ├── dns01.js │ │ │ ├── http01.js │ │ │ └── index.js │ │ ├── execCertbot.js │ │ ├── generateCertName.js │ │ ├── generateCertName.test.js │ │ ├── getCertbotCertonlyArgs.js │ │ ├── getCertbotCertonlyArgs.test.js │ │ ├── getChallengeFromDomains.js │ │ └── getChallengeFromDomains.test.js │ ├── normalizeMeta.js │ └── normalizeMeta.test.js └── thirdparty │ ├── config.js │ ├── getBundle.js │ ├── getBundle.test.js │ ├── getLocalCerts.js │ ├── getLocalCerts.test.js │ ├── index.js │ └── lib │ ├── CertFinder.js │ ├── CertFinder.test.js │ ├── fileIsCert.js │ ├── fileIsCert.test.js │ ├── fileIsKey.js │ ├── fileIsKey.test.js │ ├── readFirstLine.js │ ├── readFirstLine.test.js │ ├── readdirRecursive.js │ └── readdirRecursive.test.js └── lib ├── FeedbackError.js ├── __mocks__ ├── getArgv.js └── getConfig.js ├── canonicaliseUpstreamConfig.js ├── canonicaliseUpstreamConfig.test.js ├── classes ├── Certificate.js └── Certificate.test.js ├── client ├── __mocks__ │ └── canonicaliseCertDefinitions.js ├── canonicaliseCertDefinitions.js ├── canonicaliseCertDefinitions.test.js ├── getCert.js ├── getCert.test.js ├── obtainCert.js ├── obtainCert.test.js ├── outputInfo.js ├── syncCerts.js ├── syncCerts.test.js ├── syncPeriodically.js ├── syncPeriodically.test.js └── testCmd.js ├── clientPermittedAccessToCerts.js ├── clientPermittedAccessToCerts.test.js ├── execCommand.js ├── execCommand.test.js ├── generateFirstCertInSequence.js ├── generateFirstCertInSequence.test.js ├── getArgv.js ├── getArgv.test.js ├── getCertInfoFromPath.js ├── getCertInfoFromPath.test.js ├── getCertInfoFromPem.js ├── getConfig.js ├── getConfig.test.js ├── getExtensions.js ├── getExtensions.test.js ├── getExtensionsForDomains.js ├── getExtensionsForDomains.test.js ├── getLocalCertificates.js ├── getLocalCertificates.test.js ├── getMetaFromExtensionFunction.js ├── helpers ├── allItemsPresent.js ├── arrayItemsMatch.js ├── arrayItemsMatch.test.js ├── concurrencyLimiter.js ├── concurrencyLimiter.test.js ├── fileExists.js ├── fileExists.test.js ├── filterAsync.js ├── filterAsync.test.js ├── metaItemsMatch.js ├── metaItemsMatch.test.js ├── mkdirRecursive.js ├── mkdirRecursive.test.js ├── requireModule.js ├── setAndDemandDirPerms.js ├── setAndDemandDirPerms.test.js ├── setTimeoutPromise.js ├── setTimeoutPromise.test.js ├── someAsync.js ├── someAsync.test.js ├── sortObjectProperties.js └── sortObjectProperties.test.js ├── httpRedirect.js ├── httpRedirect.test.js ├── listCerts.js ├── loadCert.js ├── loadCert.test.js ├── normalizeMeta.js ├── normalizeMeta.test.js ├── regexps └── reDefinition.js ├── request.js ├── request.test.js ├── server ├── actions │ ├── __snapshots__ │ │ └── getInfo.test.js.snap │ ├── getCert.js │ ├── getCert.test.js │ ├── getInfo.js │ ├── getInfo.test.js │ └── index.js ├── createRequestHandler.js ├── serve.js └── serve.test.js ├── writeBundle.js └── writeBundle.test.js /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/.dockerignore -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/.editorconfig -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/.eslintrc.js -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/.github/workflows/node.js.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/.gitignore -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/README.md -------------------------------------------------------------------------------- /bin/build.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/bin/build.sh -------------------------------------------------------------------------------- /docker-compose/certcacheclient/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/certcacheclient/docker-compose.yml -------------------------------------------------------------------------------- /docker-compose/certcacheclient/nginx/config/000-default.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/certcacheclient/nginx/config/000-default.conf -------------------------------------------------------------------------------- /docker-compose/certcacheclient/www/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/certcacheclient/www/index.html -------------------------------------------------------------------------------- /docker-compose/certcacheserver/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/certcacheserver/docker-compose.yml -------------------------------------------------------------------------------- /docker-compose/standalone/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/standalone/docker-compose.yml -------------------------------------------------------------------------------- /docker-compose/standalone/nginx/config/000-default.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/standalone/nginx/config/000-default.conf -------------------------------------------------------------------------------- /docker-compose/standalone/www/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker-compose/standalone/www/index.html -------------------------------------------------------------------------------- /docker/entrypoint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker/entrypoint.sh -------------------------------------------------------------------------------- /docker/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docker/requirements.txt -------------------------------------------------------------------------------- /docs/Config directives.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Config directives.md -------------------------------------------------------------------------------- /docs/Configure challenges.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Configure challenges.md -------------------------------------------------------------------------------- /docs/Debugging problems.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Debugging problems.md -------------------------------------------------------------------------------- /docs/ECDSA Certificates.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/ECDSA Certificates.md -------------------------------------------------------------------------------- /docs/Installing certcache client.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Installing certcache client.md -------------------------------------------------------------------------------- /docs/Installing certcache server.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Installing certcache server.md -------------------------------------------------------------------------------- /docs/Standalone mode.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Standalone mode.md -------------------------------------------------------------------------------- /docs/Using certificates.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/Using certificates.md -------------------------------------------------------------------------------- /docs/images/93million_logo-dark.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/93million_logo-dark.svg -------------------------------------------------------------------------------- /docs/images/93million_logo.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/93million_logo.svg -------------------------------------------------------------------------------- /docs/images/certcache_logo-dark.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/certcache_logo-dark.svg -------------------------------------------------------------------------------- /docs/images/certcache_logo.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/certcache_logo.svg -------------------------------------------------------------------------------- /docs/images/dns-01_diagram-dark.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/dns-01_diagram-dark.svg -------------------------------------------------------------------------------- /docs/images/dns-01_diagram.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/dns-01_diagram.svg -------------------------------------------------------------------------------- /docs/images/http-01_diagram-dark.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/http-01_diagram-dark.svg -------------------------------------------------------------------------------- /docs/images/http-01_diagram.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/docs/images/http-01_diagram.svg -------------------------------------------------------------------------------- /jest.config.all.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/jest.config.all.js -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/jest.config.js -------------------------------------------------------------------------------- /jest.config.sit.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/jest.config.sit.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/package.json -------------------------------------------------------------------------------- /sit/bin/cnf/ca.cnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/bin/cnf/ca.cnf -------------------------------------------------------------------------------- /sit/bin/createca.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/bin/createca.sh -------------------------------------------------------------------------------- /sit/bin/createcert.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/bin/createcert.sh -------------------------------------------------------------------------------- /sit/deps/ngrok-v3-stable-linux-amd64.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/deps/ngrok-v3-stable-linux-amd64.tgz -------------------------------------------------------------------------------- /sit/deps/ngrok-v3-stable-linux-arm64.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/deps/ngrok-v3-stable-linux-arm64.tgz -------------------------------------------------------------------------------- /sit/filepaths.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/filepaths.js -------------------------------------------------------------------------------- /sit/index.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/index.test.js -------------------------------------------------------------------------------- /sit/lib/setupTests.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/lib/setupTests.js -------------------------------------------------------------------------------- /sit/lib/startNgrok.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/lib/startNgrok.js -------------------------------------------------------------------------------- /sit/skel/server/conf/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/sit/skel/server/conf/settings.json -------------------------------------------------------------------------------- /src/bin/generate-access-keys.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/bin/generate-access-keys.sh -------------------------------------------------------------------------------- /src/cli/cli.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/cli.js -------------------------------------------------------------------------------- /src/cli/commands/add-client.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/add-client.js -------------------------------------------------------------------------------- /src/cli/commands/args/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/args/index.js -------------------------------------------------------------------------------- /src/cli/commands/client.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/client.js -------------------------------------------------------------------------------- /src/cli/commands/create-keys.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/create-keys.js -------------------------------------------------------------------------------- /src/cli/commands/get.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/get.js -------------------------------------------------------------------------------- /src/cli/commands/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/index.js -------------------------------------------------------------------------------- /src/cli/commands/info.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/info.js -------------------------------------------------------------------------------- /src/cli/commands/ls.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/ls.js -------------------------------------------------------------------------------- /src/cli/commands/serve.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/serve.js -------------------------------------------------------------------------------- /src/cli/commands/sync.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/sync.js -------------------------------------------------------------------------------- /src/cli/commands/testCmd.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/cli/commands/testCmd.js -------------------------------------------------------------------------------- /src/config/config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/config/config.js -------------------------------------------------------------------------------- /src/config/config.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/config/config.test.js -------------------------------------------------------------------------------- /src/config/defaults.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/config/defaults.js -------------------------------------------------------------------------------- /src/config/defaults.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/config/defaults.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/canGenerateDomains.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/canGenerateDomains.js -------------------------------------------------------------------------------- /src/extensions/certbot/canGenerateDomains.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/canGenerateDomains.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/commandArgs.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/commandArgs.js -------------------------------------------------------------------------------- /src/extensions/certbot/config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/config.js -------------------------------------------------------------------------------- /src/extensions/certbot/config.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/config.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/generateCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/generateCert.js -------------------------------------------------------------------------------- /src/extensions/certbot/generateCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/generateCert.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/getBundle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getBundle.js -------------------------------------------------------------------------------- /src/extensions/certbot/getBundle.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getBundle.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/getLocalCerts.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getLocalCerts.js -------------------------------------------------------------------------------- /src/extensions/certbot/getLocalCerts.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getLocalCerts.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/getMetaFromCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getMetaFromCert.js -------------------------------------------------------------------------------- /src/extensions/certbot/getMetaFromCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getMetaFromCert.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/getMetaFromCertDefinition.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getMetaFromCertDefinition.js -------------------------------------------------------------------------------- /src/extensions/certbot/getMetaFromCertDefinition.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getMetaFromCertDefinition.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/getMetaFromConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getMetaFromConfig.js -------------------------------------------------------------------------------- /src/extensions/certbot/getMetaFromConfig.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/getMetaFromConfig.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/index.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/canonicaliseDomains.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/canonicaliseDomains.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/canonicaliseDomains.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/canonicaliseDomains.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/challenges/dns01.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/challenges/dns01.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/challenges/http01.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/challenges/http01.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/challenges/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/challenges/index.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/execCertbot.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/execCertbot.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/generateCertName.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/generateCertName.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/generateCertName.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/generateCertName.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/getCertbotCertonlyArgs.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/getCertbotCertonlyArgs.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/getCertbotCertonlyArgs.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/getCertbotCertonlyArgs.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/getChallengeFromDomains.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/getChallengeFromDomains.js -------------------------------------------------------------------------------- /src/extensions/certbot/lib/getChallengeFromDomains.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/lib/getChallengeFromDomains.test.js -------------------------------------------------------------------------------- /src/extensions/certbot/normalizeMeta.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/normalizeMeta.js -------------------------------------------------------------------------------- /src/extensions/certbot/normalizeMeta.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/certbot/normalizeMeta.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/config.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/getBundle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/getBundle.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/getBundle.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/getBundle.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/getLocalCerts.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/getLocalCerts.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/getLocalCerts.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/getLocalCerts.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/index.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/CertFinder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/CertFinder.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/CertFinder.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/CertFinder.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/fileIsCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/fileIsCert.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/fileIsCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/fileIsCert.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/fileIsKey.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/fileIsKey.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/fileIsKey.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/fileIsKey.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/readFirstLine.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/readFirstLine.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/readFirstLine.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/readFirstLine.test.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/readdirRecursive.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/readdirRecursive.js -------------------------------------------------------------------------------- /src/extensions/thirdparty/lib/readdirRecursive.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/extensions/thirdparty/lib/readdirRecursive.test.js -------------------------------------------------------------------------------- /src/lib/FeedbackError.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/FeedbackError.js -------------------------------------------------------------------------------- /src/lib/__mocks__/getArgv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/__mocks__/getArgv.js -------------------------------------------------------------------------------- /src/lib/__mocks__/getConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/__mocks__/getConfig.js -------------------------------------------------------------------------------- /src/lib/canonicaliseUpstreamConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/canonicaliseUpstreamConfig.js -------------------------------------------------------------------------------- /src/lib/canonicaliseUpstreamConfig.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/canonicaliseUpstreamConfig.test.js -------------------------------------------------------------------------------- /src/lib/classes/Certificate.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/classes/Certificate.js -------------------------------------------------------------------------------- /src/lib/classes/Certificate.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/classes/Certificate.test.js -------------------------------------------------------------------------------- /src/lib/client/__mocks__/canonicaliseCertDefinitions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/__mocks__/canonicaliseCertDefinitions.js -------------------------------------------------------------------------------- /src/lib/client/canonicaliseCertDefinitions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/canonicaliseCertDefinitions.js -------------------------------------------------------------------------------- /src/lib/client/canonicaliseCertDefinitions.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/canonicaliseCertDefinitions.test.js -------------------------------------------------------------------------------- /src/lib/client/getCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/getCert.js -------------------------------------------------------------------------------- /src/lib/client/getCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/getCert.test.js -------------------------------------------------------------------------------- /src/lib/client/obtainCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/obtainCert.js -------------------------------------------------------------------------------- /src/lib/client/obtainCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/obtainCert.test.js -------------------------------------------------------------------------------- /src/lib/client/outputInfo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/outputInfo.js -------------------------------------------------------------------------------- /src/lib/client/syncCerts.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/syncCerts.js -------------------------------------------------------------------------------- /src/lib/client/syncCerts.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/syncCerts.test.js -------------------------------------------------------------------------------- /src/lib/client/syncPeriodically.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/syncPeriodically.js -------------------------------------------------------------------------------- /src/lib/client/syncPeriodically.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/syncPeriodically.test.js -------------------------------------------------------------------------------- /src/lib/client/testCmd.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/client/testCmd.js -------------------------------------------------------------------------------- /src/lib/clientPermittedAccessToCerts.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/clientPermittedAccessToCerts.js -------------------------------------------------------------------------------- /src/lib/clientPermittedAccessToCerts.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/clientPermittedAccessToCerts.test.js -------------------------------------------------------------------------------- /src/lib/execCommand.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/execCommand.js -------------------------------------------------------------------------------- /src/lib/execCommand.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/execCommand.test.js -------------------------------------------------------------------------------- /src/lib/generateFirstCertInSequence.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/generateFirstCertInSequence.js -------------------------------------------------------------------------------- /src/lib/generateFirstCertInSequence.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/generateFirstCertInSequence.test.js -------------------------------------------------------------------------------- /src/lib/getArgv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getArgv.js -------------------------------------------------------------------------------- /src/lib/getArgv.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getArgv.test.js -------------------------------------------------------------------------------- /src/lib/getCertInfoFromPath.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getCertInfoFromPath.js -------------------------------------------------------------------------------- /src/lib/getCertInfoFromPath.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getCertInfoFromPath.test.js -------------------------------------------------------------------------------- /src/lib/getCertInfoFromPem.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getCertInfoFromPem.js -------------------------------------------------------------------------------- /src/lib/getConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getConfig.js -------------------------------------------------------------------------------- /src/lib/getConfig.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getConfig.test.js -------------------------------------------------------------------------------- /src/lib/getExtensions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getExtensions.js -------------------------------------------------------------------------------- /src/lib/getExtensions.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getExtensions.test.js -------------------------------------------------------------------------------- /src/lib/getExtensionsForDomains.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getExtensionsForDomains.js -------------------------------------------------------------------------------- /src/lib/getExtensionsForDomains.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getExtensionsForDomains.test.js -------------------------------------------------------------------------------- /src/lib/getLocalCertificates.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getLocalCertificates.js -------------------------------------------------------------------------------- /src/lib/getLocalCertificates.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getLocalCertificates.test.js -------------------------------------------------------------------------------- /src/lib/getMetaFromExtensionFunction.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/getMetaFromExtensionFunction.js -------------------------------------------------------------------------------- /src/lib/helpers/allItemsPresent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/allItemsPresent.js -------------------------------------------------------------------------------- /src/lib/helpers/arrayItemsMatch.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/arrayItemsMatch.js -------------------------------------------------------------------------------- /src/lib/helpers/arrayItemsMatch.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/arrayItemsMatch.test.js -------------------------------------------------------------------------------- /src/lib/helpers/concurrencyLimiter.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/concurrencyLimiter.js -------------------------------------------------------------------------------- /src/lib/helpers/concurrencyLimiter.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/concurrencyLimiter.test.js -------------------------------------------------------------------------------- /src/lib/helpers/fileExists.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/fileExists.js -------------------------------------------------------------------------------- /src/lib/helpers/fileExists.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/fileExists.test.js -------------------------------------------------------------------------------- /src/lib/helpers/filterAsync.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/filterAsync.js -------------------------------------------------------------------------------- /src/lib/helpers/filterAsync.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/filterAsync.test.js -------------------------------------------------------------------------------- /src/lib/helpers/metaItemsMatch.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/metaItemsMatch.js -------------------------------------------------------------------------------- /src/lib/helpers/metaItemsMatch.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/metaItemsMatch.test.js -------------------------------------------------------------------------------- /src/lib/helpers/mkdirRecursive.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/mkdirRecursive.js -------------------------------------------------------------------------------- /src/lib/helpers/mkdirRecursive.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/mkdirRecursive.test.js -------------------------------------------------------------------------------- /src/lib/helpers/requireModule.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/requireModule.js -------------------------------------------------------------------------------- /src/lib/helpers/setAndDemandDirPerms.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/setAndDemandDirPerms.js -------------------------------------------------------------------------------- /src/lib/helpers/setAndDemandDirPerms.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/setAndDemandDirPerms.test.js -------------------------------------------------------------------------------- /src/lib/helpers/setTimeoutPromise.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/setTimeoutPromise.js -------------------------------------------------------------------------------- /src/lib/helpers/setTimeoutPromise.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/setTimeoutPromise.test.js -------------------------------------------------------------------------------- /src/lib/helpers/someAsync.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/someAsync.js -------------------------------------------------------------------------------- /src/lib/helpers/someAsync.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/someAsync.test.js -------------------------------------------------------------------------------- /src/lib/helpers/sortObjectProperties.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/sortObjectProperties.js -------------------------------------------------------------------------------- /src/lib/helpers/sortObjectProperties.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/helpers/sortObjectProperties.test.js -------------------------------------------------------------------------------- /src/lib/httpRedirect.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/httpRedirect.js -------------------------------------------------------------------------------- /src/lib/httpRedirect.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/httpRedirect.test.js -------------------------------------------------------------------------------- /src/lib/listCerts.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/listCerts.js -------------------------------------------------------------------------------- /src/lib/loadCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/loadCert.js -------------------------------------------------------------------------------- /src/lib/loadCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/loadCert.test.js -------------------------------------------------------------------------------- /src/lib/normalizeMeta.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/normalizeMeta.js -------------------------------------------------------------------------------- /src/lib/normalizeMeta.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/normalizeMeta.test.js -------------------------------------------------------------------------------- /src/lib/regexps/reDefinition.js: -------------------------------------------------------------------------------- 1 | module.exports = /^~(.+)$/ 2 | -------------------------------------------------------------------------------- /src/lib/request.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/request.js -------------------------------------------------------------------------------- /src/lib/request.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/request.test.js -------------------------------------------------------------------------------- /src/lib/server/actions/__snapshots__/getInfo.test.js.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/actions/__snapshots__/getInfo.test.js.snap -------------------------------------------------------------------------------- /src/lib/server/actions/getCert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/actions/getCert.js -------------------------------------------------------------------------------- /src/lib/server/actions/getCert.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/actions/getCert.test.js -------------------------------------------------------------------------------- /src/lib/server/actions/getInfo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/actions/getInfo.js -------------------------------------------------------------------------------- /src/lib/server/actions/getInfo.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/actions/getInfo.test.js -------------------------------------------------------------------------------- /src/lib/server/actions/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/actions/index.js -------------------------------------------------------------------------------- /src/lib/server/createRequestHandler.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/createRequestHandler.js -------------------------------------------------------------------------------- /src/lib/server/serve.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/serve.js -------------------------------------------------------------------------------- /src/lib/server/serve.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/server/serve.test.js -------------------------------------------------------------------------------- /src/lib/writeBundle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/writeBundle.js -------------------------------------------------------------------------------- /src/lib/writeBundle.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/93million/certcache/HEAD/src/lib/writeBundle.test.js --------------------------------------------------------------------------------