Skip to main content

Relay server for EDRN DMCC password verification

Project description

🏃 JPL EDRN DMCC Password Relay

This package provides a simple, safe server that listens for usernames and password for the Early Detection Research Network's Data Management and Coordinating Center's so-called "secure site". It uses the center's antique SOAP service to check those passwords, then gives back a single byte response indicating if the password's valid.

It's intended to be used with dmccauth, an overlay to OpenLDAP's standalone slapd server. OpenLDAP overlays must be programmed in C and use dynamically-loaded objects, but SOAP implementations for C are available only as static APIs.

With this running alongside OpenLDAP and the dmccauth overlay, we can overcome this problem.

💽 Installation

This software requires Python 3. Python 3.9 or later is recommended, but Python 4 is not. Typically, you'll make a virtual environment and install the software with a litany like:

python3 -m venv password-relay
cd password-relay
bin/pip install --upgrade --quiet setuptools wheel pip
bin/pip install password-relay==X.Y.Z

where X.Y.Z is the version you want. To upgrade an existing installation, add --upgrade. You can then start the server:

bin/dmcc-passwordrelay

By default, the server creates its listening socket in /tmp/dmcc.socket. You can customize that with --socket. Try --help for all the options.

🩺 Testing

You can see if it's working correctly by running the following from another session:

printf 'DN\nPASSWORD\n' | nc -U /tmp/dmcc.socket | more

Replace DN with the LDAP distinguished name of an EDRN "secure site" account such as uid=joeschmoe,dc=edrn,dc=jpl,dc=nasa,dc=gov and PASSWORD and the socket path if necessary. You'll see a 1 for a valid password, or 0 for invalid.

👉 Note: No nc -U on your system? Try installing netcat-openbsd for it; or use socat instead.

😈 Daemonizing

The software runs in the foreground and should always be running. However, it supports no automatic restart. For that, it's recommended you run it under Supervisord:

bin/pip install supervisor

Then make a supervisord.conf similar to the following:

[supervisord]
logfile = %(here)s/var/log/supervisor.log
logfile_backups = 3
loglevel = debug
pidfile = %(here)s/var/supervisor.pid

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[unix_http_server]
file = %(here)s/var/sockets/supervisor

[supervisorctl]
serverurl = unix://%(here)s/var/sockets/supervisor

[program:passwordrelay]
command = %(here)s/.venv/bin/dmcc-passwordrelay --socket %(here)s/var/sockets/dmcc
autorestart = true
redirect_stderr = true
stdout_logfile = %(here)s/var/log/relay.log

🔧 Development

To develop this locally, try the following:

git clone https://github.com/EDRN/jpl.edrn.dmcc.passwordrelay
cd jpl.edrn.dmcc.passwordrelay
python3 -m venv venv
venv/bin/pip install --upgrade --silet setuptools build dist wheel
vnev/bin/pip install --editable .

👥 Contributing

You can start by looking at the open issues, forking the project, and submitting a pull request. You can also contact us by email with suggestions.

🔢 Versioning

We use the SemVer philosophy for versioning this software. For versions available, see the releases made on this project.

👩‍🎨 Creators

The principal developer is:

📃 License

The project is licensed under the Apache version 2 license.

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

jpl.edrn.dmcc.passwordrelay-0.0.3.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file jpl.edrn.dmcc.passwordrelay-0.0.3.tar.gz.

File metadata

  • Download URL: jpl.edrn.dmcc.passwordrelay-0.0.3.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/5.0.0 pkginfo/1.8.3 requests/2.28.1 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/3.9.16

File hashes

Hashes for jpl.edrn.dmcc.passwordrelay-0.0.3.tar.gz
Algorithm Hash digest
SHA256 46897751f3dcdd25169fd5eb2a94a01d93ce11049cdb0e3623eb03ad1e3e2af9
MD5 9bc50198da3d301d5ec70a15b929aef9
BLAKE2b-256 727519b034580e8e0c50b6a219c745a15549cada94101794c624ae1268f7eddd

See more details on using hashes here.

File details

Details for the file jpl.edrn.dmcc.passwordrelay-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: jpl.edrn.dmcc.passwordrelay-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/5.0.0 pkginfo/1.8.3 requests/2.28.1 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/3.9.16

File hashes

Hashes for jpl.edrn.dmcc.passwordrelay-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e955e950e824dd8606c134b1cb331ddf6b39e93f8854bc23aed4aa4a0912e6d0
MD5 41a502aaa292073f2f0f5e54fb09528d
BLAKE2b-256 a62b0ebbdd99e16c3db42503629ca0798ec6e016f566c6ccfc0b5a23876e1f2d

See more details on using hashes here.

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