DEPRECATED - Migrated to https://github.com/mozilla/fxa
Перейти к файлу
Andrew Chilton 97b2ea7346 Some rework markup and branch-fu 2014-05-16 15:37:11 +12:00
bin add http datastore api 2014-05-04 19:31:22 -07:00
bounces it's complainedRecipients (even though complaintRecipients does seem more natural) 2014-04-15 19:53:57 -07:00
client implemented /account/status fixes #656 2014-03-30 12:24:05 -07:00
config add http datastore api 2014-05-04 19:31:22 -07:00
crypto use heap db backend for travis 2014-05-05 10:41:13 -07:00
db don't log mysql error when account exists on create error 2014-05-05 11:02:54 -07:00
docs Update api docs for /certificate/sign to discuss expiry time. 2014-04-30 12:21:47 +10:00
loadtest Hack around OSX python build problems 2014-05-15 00:47:29 -07:00
resources/i18n First, rough attempt at internationalization of emails. 2013-12-09 12:53:24 +11:00
routes fix no method 'wrap' in sign route #716 2014-05-15 17:48:28 -07:00
scripts add http datastore api 2014-05-04 19:31:22 -07:00
server broke out customs server into a seperate process/repo 2014-04-18 19:05:47 -07:00
templates Updated all templates to the latest versions 2014-05-07 13:48:21 +12:00
test fix no method 'wrap' in sign route #716 2014-05-15 17:48:28 -07:00
tokens SERENITY NOW. reformat bundle.js 2014-03-13 13:35:44 -07:00
.awsbox.json Simplify and cleanup heka+awsbox setup. 2013-09-23 11:52:48 +10:00
.gitignore use ass for code coverage - issue #94 2013-12-18 09:03:17 +02:00
.jshintrc fixed jshint complaints 2013-11-01 14:29:39 -07:00
.travis.yml use heap db backend for travis 2014-05-05 10:41:13 -07:00
AUTHORS Add an initial AUTHORS file 2014-05-16 14:51:10 +12:00
CHANGELOG train-12 2014-05-05 11:16:32 -07:00
CONTRIBUTING.md Some rework markup and branch-fu 2014-05-16 15:37:11 +12:00
Gruntfile.js updated lockdown versions 2014-02-24 14:29:26 -08:00
LICENSE Skeleton Hapi app 2013-05-13 17:00:22 -07:00
README.md Initial attempt at a CONTRIBUTING.md 2014-05-16 14:37:59 +12:00
Vagrantfile changed vagrant synced_folder to rsync 2014-03-11 13:53:44 -07:00
customs.js added 1 second request timeout to customs server 2014-04-21 11:34:11 -07:00
error.js Make sure bin/key_server.js checks what the db patch level is 2014-03-19 17:14:15 +13:00
i18n.js step 1 in fixing i18n 2014-03-09 17:33:52 -07:00
log.js added 'accountRecreated' flag to the request summary log line 2014-04-23 16:04:18 -07:00
mailer.js step 1 in fixing i18n 2014-03-09 17:33:52 -07:00
memory_monitor.js Add missing copyright headers 2013-07-25 18:49:45 -07:00
npm-shrinkwrap.json possible fix for hapi-auth-hawk payloadHash crash 2014-05-13 11:19:25 -07:00
package.json possible fix for hapi-auth-hawk payloadHash crash 2014-05-13 11:19:25 -07:00
promise.js created promise.js for easy lib switching. 2014-01-09 00:01:04 -08:00
requestp.js train-11.1 ... already 2014-04-21 17:22:51 -07:00

README.md

Firefox Accounts Server

Build Status

This project implements the core server-side API for Firefox Accounts. It provides account, device and encryption-key management for the Mozilla Cloud Services ecosystem.

Overview

Detailed design document

Detailed API spec

Contributing

Prerequisites

  • node 0.10.x or higher
  • npm
  • pgrep
    • Usually available by default on Mac OS X 10.8+ and Linux.
    • On older versions of Mac OS X, get it via: brew install proctools.
  • libgmp
    • On Linux: install libgmp and libgmp-dev packages
    • On Mac OS X: brew install gmp

Install

You'll need node 0.10.x or higher and npm to run the server.

Clone the git repository and install dependencies:

git clone git://github.com/mozilla/fxa-auth-server.git
cd fxa-auth-server
npm install

To start the server, run:

npm start

It will listen on http://localhost:9000 by default.

Testing

Run tests with:

npm test

Reference Client

A node library that implements the client side of the protocol and an example script is located in the /client directory.

Dev Deployment

There is a development server running the moz-svc-dev AWS environment, at the following address:

https://api-accounts.dev.lcip.org/

It is managed using awsbox. You can force-push a particular version of the code by doing:

$> git remote add api-dev-lcip-org app@api-accounts.dev.lcip.org:git
$> git push api-dev-lcip-org HEAD:master

The dev deployment is configured to send emails via Amazon SES. If you need to re-create, or want to stand up a similar server, you will need to:

  1. Obtain the SES SMTP credentials; ping @rfk or @zaach for details.
  2. Deploy the new machine using awsbox.
  3. Configure postfix to use the SES credentials:
    1. Edit /etc/postfix/sasl_passwd to insert the SES credentials.
    2. Run /usr/sbin/postmap /etc/postfix/sasl_passwd to compile them.
    3. Edit /etc/postfix/main.cf to change 'relayhost' to the SES SMTP host (typically "email-smtp.us-east-1.amazonaws.com:587").
    4. Run service postfix restart to restart postfix.

There is also a "bleeding edge" development server that is configured to auto-update itself from the latest github master. It may be useful for testing out new protocol changes, but should be considered unstable for general development use:

https://api-accounts-latest.dev.lcip.org/

Configuration

To set the url of the content server, edit config.json on your deployed instance and add:

"contentServer": {
  "url": "http://your.content.server.org"
}

MySQL setup

Install MySQL

Mac

Installation is easy with homebrew. I use mariadb which is a fork of mysql but either should work.

brew install mariadb

Follow the homebrew instructions for starting the server. I usually just do

mysql.server start

Linux

Install MySQL and start it.

Execution

Our test suite assumes mysql uses it's default configuration. See config/config.js for the override ENV variables if you have different root user password or other user. Now you should be able to run the test suite from the project root directory.

DB_BACKEND=mysql npm test

Or run the local server

DB_BACKEND=mysql npm start

Cleanup

You may want to clear the data from the database periodically. I just drop the database:

mysql -uroot -e"DROP DATABASE fxa"

The server will automatically re-create it on next use.

License

MPL 2.0