63 lines
1.9 KiB
Raw Normal View History

2021-07-24 17:35:09 -04:00
# pyceo
work in progress
## Development
First, make sure that you have installed the
[syscom dev environment](
This will setup all of the services needed for ceo to work. You should clone
this repo in one of the dev environment containers.
Next, install and activate a virtualenv:
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
pip install -r dev-requirements.txt
### Running the application
ceod is essentially a distributed application, with instances on different
hosts offering different services. For example, the ceod instance on mail
offers a service to subscribe people to mailing lists, and
the ceod instance on phosphoric-acid offers a service to create new members.
Therefore, you will need to run ceod on multiple hosts. Currently, those are
phosphoric-acid, mail and caffeine (in the dev environment, caffeine is
replaced by coffee).
To run ceod on a single host:
export FLASK_APP=ceod.api
export FLASK_ENV=development
flask run -h -p 9987
Sometimes changes you make in the source code don't show up while Flask
is running. Stop the flask app (Ctrl-C), run ``, then
restart the app.
### Interacting with the application
The client part of ceo hasn't been written yet, so we'll use curl to
interact with ceod for now.
ceod uses [SPNEGO]( for authentication,
and TLS for confidentiality and integrity. In development mode, TLS can be
First, make sure that your version of curl has been compiled with SPNEGO
curl -V
Your should see 'SPNEGO' in the 'Features' section.
Here's an example of using curl with SPNEGO:
# Get a Kerberos TGT first
curl --negotiate -u : --service-name ceod http://mail:9987/api/mailman/csc-general/ctdalek
Not all endpoints are SPNEGO-protected, e.g. to get info for a member:
curl http://phosphoric-acid:9987/api/members/ctdalek