cocoa
What can cocoa do for me?
cocoa
is a service which can generate 1 or many passwords using a mnemonic word list, and email you the result(s).
The password(s) is not logged, or saved anywhere.
How do I run cocoa?
cocoa
can be up and running in 3 steps! When run in a production environment, it's recommended that you use NGINX
to terminate SSL, and reverse proxy to cocoa
. Using a daemon like upstart
(on Linux) to run cocoa
is ideal.
- Clone this repository, or install from
npm
:$ npm install cocoa
$ ln -s node_modules/cocoa/config.json config.json
$ ln -s node_modules/cocoa/index.js index.js
- (Optional) Edit
config.json
to configure your email server, etc. - Run via
node index.js
.
Upstart
Use the provided upstart recipe: sudo sh -c 'cp node_modules/cocoa/cocoa.conf /etc/init; service cocoa start;'
Systemd
Use the provided systemd service: sudo sh -c 'cp node_modules/cocoa/cocoa.service /etc/systemd/system; systemctl enable cocoa; systemctl start cocoa;'
What about Windows?
It runs great on Windows, but you're on your own to daemonize it!
Request parameters
words
Integer (3) The amount of words to use
min
Integer (0) Minimum length of the password
max
Integer (0) Maximum length of the password
passwords
Integer (1) The amount of passwords to generate
special
Boolean (false) Randomly adds common "special" characters to a password, including capitalization
Configuration
{
"auth": /* Optional, see tenso authentication section */
"compress": false, /* Optional, enabled by default, disabled with SSL */
"email": { /* Optional, disabled by default */
"enabled": true,
"host": "smtp.host",
"port": 465,
"secure": true,
"from": "You <you@yourdomain>",
"user": "you@yourdomain",
"pass": "password"
},
"headers": { ... }, /* Optional, custom headers */
"hostname": "localhost", /* Optional, default is 'localhost' */
"json": 2, /* Optional, default indent for 'pretty' JSON */
"logging": { /* Optional */
"level": "info",
"enabled": true
},
"port": 9090, /* Optional, default is 9090 */
"rate": {
"enabled": true,
"limit": 450, /* Maximum requests allowed before `reset` */
"reset": 900, /* TTL in seconds */
"status": 429, /* Optional HTTP status */
"message": "Too many requests", /* Optional error message */
"override": function ( req, rate ) { ... } /* Override the default rate limiting */
},
"session": { /* Optional */
"secret": null,
"store": "memory", /* "memory" or "redis" */
"redis": /* See connect-redis for options */
},
"ssl": { /* Optional */
"cert": null,
"key": null
},
"title": "My API", /* Page title for browsable API */
"uid": N /* Optional, system account uid to drop to after starting with elevated privileges to run on a low port */
}
License
Copyright (c) 2017 Jason Mulligan Licensed under the BSD-3 license.