node package manager

wallet-generator

unicoisa-wallet-generator

Simple Web UI to generate brand new single digital asset wallet (project Unicoisa based on Copay + Colu).

Installation

Prerequisites

  • MongoDb

Install app

  1. git clone https://bitbucket.org/teamcolu/wallet-generator
  2. npm install
  3. bower install

Configure

App config

Edit config.json to match your settings:

{
  "targetDir": "<folder where to put generated wallets>",
  "templateCopayDir": "<folder with ColuCopay to make copy of>"
}

Template wallet

To prepare ColuCopay (project Unicoisa):

 git clone https://bitbucket.org/teamcolu/wallet-generator copay && cd copay && npm install && bower install && grunt

Permissions

App copies nginx config to the /etc/nginx/wallets and reloads nginx. It uses sudo to do this. To make it work you need the following:

  • app should be running under user with sudo privileges
  • edit /etc/sudoers (use visudo for your safety) to allow certain commands to run without password prompt:
<USERNAME> ALL=NOPASSWD:<PATH_TO_WALLET_GENERATOR>/scripts/copy_nginx_config.sh
<USERNAME> ALL=NOPASSWD:/usr/bin/service nginx reload

Nginx

Create /etc/nginx/wallets folder.

Example nginx config for the generator app (assuming generator app is running on 6000 port):

 
server {
  listen 80;
    server_name wallet.colu.co;
 
    include /etc/nginx/wallets/*.conf;
 
    location / {
        proxy_pass         http://127.0.0.1:6000;
        proxy_set_header   X-Real-IP            $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   Host                   $http_host;
        proxy_set_header   X-NginX-Proxy    true;
        proxy_redirect off;
      }
}

Start app

npm start

or export to upstart using foreman

API

API uses HTTP Basic authentication.

Create wallet

Endpoint: POST /api/wallet Payload:

{
  walletName: "name of the wallet to change (mandatory)",
  assetId: "assetId (mandatory)",
  assetName: "name of the asset (mandatory)",
  mainColor: "#xxxxxx code of the main wallet color",
  secondaryColor: "#xxxxxx code of the secondary wallet color",
  symbol: "symbol/ticker for the asset currency",
  pluralSymbol: "plural form of the symbol",
  logo: "logo could be uploaded only with multipart/form-data requests",
  logoUrl: "logo URL (e.g. from CDN). If both logoUrl and logo bytes supplied, logoUrl will be used",
  coluApiKey: "api key for Colu SDK"
}

Change wallet

Colu API key, assetId and wallet name cannot be changed.

Endpoint: PUT /api/wallet Payload:

{
  walletName: "name of the wallet to change",
  assetName: "name of the asset",
  mainColor: "#xxxxxx code of the main wallet color",
  secondaryColor: "#xxxxxx code of the secondary wallet color",
  symbol: "symbol/ticker for the asset currency",
  pluralSymbol: "plural form of the symbol",
  logo: "logo could be uploaded only with multipart/form-data requests",
  logoUrl: "logo URL (e.g. from CDN). If both logoUrl and logo bytes supplied, logoUrl will be used"
}