Sambal is an experimental web interface for Samba and Active Directory domains using Pyramid.
At this point it is more just a proof of concept.
It requires the latest version of Samba master compiled from source, or Samba 4.21 when released.
At this point I just create a virtualenv and copy the compiled Samba files inside it, it's crude but works.
python3 -m venv venv
cp -R samba/bin/python/* venv/lib/python3.12/site-packages/
. venv/bin/activate
pip install -e .
Make sure you change the python version in the path to match your system.
You will need a Redis server for sessions which must be properly secured. See the Configuration page on the Wiki for more details.
To start a development server just run:
python -m sambal
Or use the entrypoint installed into the virtualenv:
sambal
The web interface can then be accessed at http://localhost:8000
To start a production server, first install sambal without -e as that is meant to be used for development only.
pip install .
Then also install gunicorn and run:
pip install gunicorn
gunicorn sambal:app -w 4
To run the tests first make sure the optional dependency group called test
is installed:
pip install -e .[test]
The tests need a real Redis instance and a Samba host or Active Directory domain to connect to as the Administrator or admin user.
WARNING: The tests will be creating users and various other objects on the domain, so should never be run against a production server.
The Makefile contains the lint and test commands which run pytest and ruff:
make lint
make test
To autoformat the code using ruff and fix linting errors use make format
.
Coverage reports end up in the reports
folder.
Pyramid is an older framework, but it is super flexible, and we do have quite a bit of experience with it. But the primary reason is that it supports both URL-Dispatch and Traversal.
In this project we want to investigate using Traversal and mapping URL parts to a DN seems to make sense.
Sambal is released under the GPL v3 license which is the same license that Samba uses.