Skip to main content

A Django app for storing, accessing and managing CashToken Bitcoin Cash Metadata Registries

Project description

BCMR or Bitcoin Cash Metadata Registry is a Django app for storing, accessing and managing CashToken BCMR.

Quick start (development)

  1. Add the following to your requirements.txt:

    Pillow==9.4.0
    django-bcmr==x.x.x
  2. Add “bcmr” to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...
        'bcmr',
    ]
  3. Include the bcmr URLconf in your project urls.py like this:

    urlpatterns = [
        ...
        path('bcmr/', include('bcmr.urls')),
        ...
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  4. Add media and DRF (to restrict public access on root API auth token filter) config on settings.py:

    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    REST_FRAMEWORK = {
        ...
        'DEFAULT_RENDERER_CLASSES': [
            'rest_framework.renderers.JSONRenderer'
        ]
    }
  5. Start the development server and visit http://localhost:8000/admin/ to access the DB (you’ll need the Admin app enabled).

  6. Visit http://localhost:8000/bcmr/ to check API endpoints for the BCMR and tokens.

Additional steps for deployment

  1. Add media location path on nginx configuration file:

    location /media {
        proxy_pass http://127.0.0.1:<YOUR_DESIRED_MEDIA_PORT_HERE>;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
    
    location /bcmr {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
  2. Add <YOUR_DESIRED_MEDIA_PORT_HERE> to your yml file:

    ports:
      ...
      - "<YOUR_DESIRED_MEDIA_PORT_HERE>:<YOUR_DESIRED_MEDIA_PORT_HERE>"
  3. Run simple http server hosting for media files using supervisor. Add to supervisord.conf:

    [program:media_server]
    command=python -m http.server <YOUR_DESIRED_MEDIA_PORT_HERE>
    autorestart=true
    stdout_logfile=/dev/stdout
    stdout_logfile_maxbytes=0
    stderr_logfile=/dev/stderr
    stderr_logfile_maxbytes=0
    stopasgroup=true

REST API

Registries and tokens created by a user can only be modified/deleted by that user (owner).

All endpoints are restricted on its usage for prevention of users tampering other user’s registries and tokens. An auth token generated upon creation of either a registry or token helps impose this restriction. This token is used as a header for identification if the user modifying BCMR data is the owner. Header name is Bcmr-Auth.

The endpoints are restricted as follows:

GET = no header required
POST = if header is supplied, created token/registry will belong to that auth token owner
     = if header is not supplied, a new auth token will be generated (new owner)
PUT/PATCH = header required
DELETE = header required

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-bcmr-0.0.17.tar.gz (14.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page