Documentation
|
@ -33,6 +33,11 @@ python39:
|
|||
stage: test
|
||||
script: tox -e py39
|
||||
|
||||
doc:
|
||||
image: python:3.9
|
||||
stage: test
|
||||
script: tox -e doc
|
||||
|
||||
coverage:
|
||||
image: python:3.9
|
||||
stage: test
|
||||
|
|
11
.readthedocs.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
version: 2
|
||||
python:
|
||||
install:
|
||||
- method: pip
|
||||
path: .
|
||||
requirements:
|
||||
- recommonmark
|
||||
- sphinx
|
||||
- sphinx-rtd-theme
|
||||
- sphinx-issues
|
34
CHANGES.md
|
@ -1,34 +0,0 @@
|
|||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
|
||||
- Login page is responsive. #1
|
||||
- Adapt mobile keyboards to login page fields. #2
|
||||
- Password recovery interface. #3
|
||||
- User profile interface. #4
|
||||
- Renamed the project *canaille*. #5
|
||||
- Command to remove old tokens. #17
|
||||
- Improved password recovery email. #14 #26
|
||||
- Use flask `SERVER_NAME` configuration variable instead of `URL`. #24
|
||||
- Improved consents page. #27
|
||||
- Admin user page. #8
|
||||
- Project logo. #29
|
||||
|
||||
### Fixed
|
||||
|
||||
- Form translations. #19 #23
|
||||
- Avoid to use Google Fonts. #21
|
||||
|
||||
### Removed
|
||||
|
||||
- 'My tokens' page. #22
|
||||
|
||||
|
||||
## [0.0.1] - 2020-10-21
|
||||
### Added
|
||||
- Initial release.
|
42
CHANGES.rst
Normal file
|
@ -0,0 +1,42 @@
|
|||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on `Keep a Changelog <https://keepachangelog.com/en/1.0.0/>`_,
|
||||
and this project adheres to `Semantic Versioning <https://semver.org/spec/v2.0.0.html>`_.
|
||||
|
||||
[Unreleased]
|
||||
============
|
||||
|
||||
Added
|
||||
*****
|
||||
|
||||
- Login page is responsive. :issue:`1`
|
||||
- Adapt mobile keyboards to login page fields. :issue:`2`
|
||||
- Password recovery interface. :issue:`3`
|
||||
- User profile interface. :issue:`4`
|
||||
- Renamed the project *canaille*. :issue:`5`
|
||||
- Command to remove old tokens. :issue:`17`
|
||||
- Improved password recovery email. :issue:`14` :issue:`26`
|
||||
- Use flask `SERVER_NAME` configuration variable instead of `URL`. :issue:`24`
|
||||
- Improved consents page. :issue:`27`
|
||||
- Admin user page. :issue:`8`
|
||||
- Project logo. :pr:`29`
|
||||
|
||||
Fixed
|
||||
*****
|
||||
|
||||
- Form translations. :issue:`19` :issue:`23`
|
||||
- Avoid to use Google Fonts. :issue:`21`
|
||||
|
||||
Removed
|
||||
*******
|
||||
|
||||
- 'My tokens' page. :issue:`22`
|
||||
|
||||
|
||||
[0.0.1] - 2020-10-21
|
||||
====================
|
||||
|
||||
Added
|
||||
*****
|
||||
|
||||
- Initial release.
|
|
@ -1,20 +1,27 @@
|
|||
# Contribute
|
||||
Contribute
|
||||
==========
|
||||
|
||||
Contributions are welcome!
|
||||
|
||||
## Unit tests
|
||||
Unit tests
|
||||
----------
|
||||
|
||||
To run the tests, you just need to run `tox`. Everything must be green before patches get merged.
|
||||
|
||||
## Style
|
||||
Style
|
||||
-----
|
||||
|
||||
We use `black` to format our code. Please apply `black` on your patches before submiting them.
|
||||
|
||||
## Development environment
|
||||
Development environment
|
||||
-----------------------
|
||||
|
||||
To try a development environment, you can run the docker image and then open https://127.0.0.1:5000
|
||||
You can then connect with user *admin* and password *admin* to access an admin account, or user *user* and password *user* for a regular one.
|
||||
|
||||
```bash
|
||||
cp canaille/conf/config.sample.toml canaille/conf/config.toml
|
||||
cp canaille/conf/oauth-authorization-server.sample.json canaille/conf/oauth-authorization-server.json
|
||||
cp canaille/conf/openid-configuration.sample.json canaille/conf/openid-configuration.json
|
||||
docker-compose up
|
||||
```
|
||||
.. code-block:: console
|
||||
|
||||
cp canaille/conf/config.sample.toml canaille/conf/config.toml
|
||||
cp canaille/conf/oauth-authorization-server.sample.json canaille/conf/oauth-authorization-server.json
|
||||
cp canaille/conf/openid-configuration.sample.json canaille/conf/openid-configuration.json
|
||||
docker-compose up
|
65
README.md
|
@ -12,59 +12,18 @@ It aims to be very light, simple to install and simple to maintain. Its main fea
|
|||
- No additional database required. Everything is stored in your LDAP server;
|
||||
- The code is easy to read and easy to edit.
|
||||
|
||||
## Install
|
||||
# Screenshots
|
||||
|
||||
<div align="center">
|
||||
<img src="doc/_static/login.png" width="225" alt="Canaille" />
|
||||
<img src="doc/_static/consent.png" width="225" alt="Canaille" />
|
||||
<img src="doc/_static/profile.png" width="225" alt="Canaille" />
|
||||
</div>
|
||||
|
||||
# Documentation
|
||||
|
||||
⚠ Canaille is under heavy development and may not fit a production environment yet. ⚠
|
||||
|
||||
First you need to install the schemas into your LDAP server. There are several ways to achieve this:
|
||||
|
||||
### LDAP schemas
|
||||
|
||||
As of OpenLDAP 2.4, two configuration methods are available:
|
||||
- The [deprecated](https://www.openldap.org/doc/admin24/slapdconf2.html) one, based on a configuration file (generally `/etc/ldap/slapd.conf`);
|
||||
- The new one, based on a configuration directory (generally `/etc/ldap/slapd.d`).
|
||||
|
||||
Depending on the configuration method you use with your OpenLDAP installation, you need to chose how to add the canaille schemas:
|
||||
|
||||
#### Old fashion: Copy the schemas in your filesystem
|
||||
|
||||
```bash
|
||||
test -d /etc/openldap/schema && sudo cp schema/* /etc/openldap/schema
|
||||
test -d /etc/ldap/schema && sudo cp schema/* /etc/ldap/schema
|
||||
sudo service slapd restart
|
||||
```
|
||||
|
||||
#### New fashion: Use slapadd to add the schemas
|
||||
|
||||
```bash
|
||||
sudo slapadd -n0 -l schema/*.ldif
|
||||
sudo service slapd restart
|
||||
```
|
||||
|
||||
### Web interface
|
||||
|
||||
Then you can deploy the code either by copying the git repository or installing the pip package:
|
||||
|
||||
```bash
|
||||
pip install canaille
|
||||
```
|
||||
|
||||
Finally you have to run the website in a WSGI server:
|
||||
|
||||
```bash
|
||||
pip install gunicorn
|
||||
gunicorn "canaille:create_app()"
|
||||
```
|
||||
|
||||
## Recurrent jobs
|
||||
|
||||
You might want to clean up your database to avoid it growing too much. You can regularly delete
|
||||
expired tokens and authorization codes with:
|
||||
|
||||
```
|
||||
env CONFIG=/path/to/config.toml FASK_APP=canaille flask clean
|
||||
```
|
||||
|
||||
# Contribute
|
||||
|
||||
Want to contribute? Take a look on [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
- Please have a look on our [documentation](https://canaille.readthedocs.io>);
|
||||
- To **install** canaille, just take follow the [installation guide](https://canaille.readthedocs.io/install.html);
|
||||
- To **contribute** canaille, please read the [contribution guide](https://canaille.readthedocs.io/contributing.html>).
|
||||
|
|
0
doc/__init__.py
Normal file
BIN
doc/_static/canaille-c.png
vendored
Normal file
After Width: | Height: | Size: 4.1 KiB |
24
doc/_static/canaille-c.svg
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="69.645px" height="54.915px" viewBox="0 0 69.645 54.915" enable-background="new 0 0 69.645 54.915" xml:space="preserve">
|
||||
<g id="Calque_1">
|
||||
</g>
|
||||
<g id="Calque_2">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M17.291,35.059c7.947-2.062,16.118-4.836,18.274-5.58c0.355-0.123,0.552-0.191,0.552-0.191s-0.021-0.008-0.033-0.013
|
||||
l1.615-0.636l0.022,0.009l30.894-12.3c-0.765-3.868-2.33-7.001-4.701-9.4c-2.37-2.396-5.272-4.155-8.706-5.272
|
||||
C51.775,0.56,48.069,0,44.093,0c-5.671,0-10.56,1.09-14.675,3.27c-4.114,2.179-7.274,5.342-9.482,9.482
|
||||
c-2.206,4.141-3.308,9.149-3.31,15.031c-7.306,4.08-19.362,5.242-16.067,8.79C2.22,38.362,9.649,37.04,17.291,35.059
|
||||
L17.291,35.059z M56.193,9.462c4.519-2.259,6.919,4.942,6.919,4.942l-6.919,2.683C56.193,17.087,53.461,10.829,56.193,9.462z"/>
|
||||
</g>
|
||||
<path d="M65.646,30.315c-3.754-2.087-8.485-0.733-10.57,3.02c-2.069,3.723-5.992,6.033-10.243,6.033
|
||||
c-5.117,0-9.466-3.307-11.052-7.89c-5.033,1.66-10.648,3.271-14.916,4.442c3.506,11.002,13.819,18.994,25.968,18.994
|
||||
c9.893,0,19.025-5.378,23.832-14.03C70.751,37.131,69.398,32.399,65.646,30.315z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
doc/_static/canaille-full.png
vendored
Normal file
After Width: | Height: | Size: 20 KiB |
151
doc/_static/canaille-full.svg
vendored
Normal file
|
@ -0,0 +1,151 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="310.012px" height="192.836px" viewBox="0 0 310.012 192.836" enable-background="new 0 0 310.012 192.836"
|
||||
xml:space="preserve">
|
||||
<g id="Calque_1">
|
||||
</g>
|
||||
<g id="Calque_2">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M141.401,67.031c-1.036,0-1.876-0.839-1.876-1.877v-0.576c0-1.039,0.84-1.877,1.876-1.877
|
||||
c1.037,0,1.877,0.838,1.877,1.877v0.576C143.278,66.192,142.438,67.031,141.401,67.031z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M146.495,64.825c-1.036,0-1.877-0.84-1.877-1.877v-0.726c0-1.037,0.841-1.878,1.877-1.878s1.876,0.841,1.876,1.878
|
||||
v0.726C148.371,63.985,147.531,64.825,146.495,64.825z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M141.401,60.084c-1.036,0-1.876-0.84-1.876-1.877v-0.902c0-1.037,0.84-1.877,1.876-1.877
|
||||
c1.037,0,1.877,0.84,1.877,1.877v0.902C143.278,59.244,142.438,60.084,141.401,60.084z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M178.68,64.634c-1.037,0-1.877-0.839-1.877-1.877v-0.534c0-1.037,0.84-1.878,1.877-1.878
|
||||
c1.036,0,1.876,0.841,1.876,1.878v0.534C180.556,63.795,179.716,64.634,178.68,64.634z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M183.836,60.622c-1.036,0-1.877-0.839-1.877-1.877v-0.538c0-1.038,0.841-1.877,1.877-1.877
|
||||
c1.037,0,1.877,0.839,1.877,1.877v0.538C185.713,59.783,184.873,60.622,183.836,60.622z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M183.059,68.987c-1.037,0-1.877-0.839-1.877-1.877v-0.585c0-1.037,0.84-1.877,1.877-1.877s1.877,0.84,1.877,1.877v0.585
|
||||
C184.936,68.148,184.096,68.987,183.059,68.987z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M128.886,75.418c-3.354,0-5.982-3.905-5.982-8.893c0-4.986,2.628-8.893,5.982-8.893c1.48,0,2.895,0.788,3.979,2.218
|
||||
c0.314,0.415,0.233,1.002-0.18,1.316c-0.413,0.311-1.001,0.231-1.315-0.18c-0.511-0.675-1.356-1.478-2.484-1.478
|
||||
c-2.226,0-4.105,3.212-4.105,7.016s1.88,7.016,4.105,7.016c0.948,0,1.885-0.598,2.635-1.682c0.294-0.427,0.88-0.537,1.306-0.239
|
||||
c0.426,0.296,0.532,0.88,0.237,1.306C131.952,74.533,130.47,75.418,128.886,75.418z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M198.465,76.148c-1.621,0-3.164-0.881-4.343-2.479c-0.308-0.418-0.22-1.005,0.197-1.312
|
||||
c0.419-0.307,1.007-0.221,1.313,0.196c0.815,1.107,1.822,1.717,2.833,1.717c2.478,0,4.569-3.547,4.569-7.746
|
||||
c0-4.198-2.092-7.745-4.569-7.745c-1.08,0-2.139,0.686-2.984,1.93c-0.295,0.432-0.88,0.536-1.305,0.25
|
||||
c-0.43-0.292-0.539-0.876-0.25-1.305c1.207-1.774,2.819-2.752,4.539-2.752c3.614,0,6.447,4.227,6.447,9.622
|
||||
S202.079,76.148,198.465,76.148z"/>
|
||||
</g>
|
||||
<path d="M197.699,48.5c-1.048,0-2.069,0.211-3.054,0.58c0.291-1.643,0.455-3.277,0.455-4.894
|
||||
c0-17.625-15.891-31.964-35.423-31.964c-19.268,0-34.99,13.951-35.416,31.245c-9.102,2.416-22.254,3.108-22.343,3.113
|
||||
c-5.416,0-9.823,4.494-9.823,10.019c0,5.522,4.403,10.016,9.758,10.016c0.001,0,0.003,0,0.004,0c0,0,0.292,0.021,0.826,0.021
|
||||
c2.007,0,8.422-0.312,15.12-3.844c-0.176,1.25-0.274,2.549-0.274,3.889c0,10.196,5.366,18.183,12.218,18.183
|
||||
c1.51,0,2.972-0.411,4.338-1.168c4.103,10.807,15.385,18.152,28.403,18.152c13.543,0,25.289-8.202,28.874-19.58
|
||||
c1.888,1.684,4.069,2.596,6.337,2.596c6.851,0,12.217-7.986,12.217-18.183C209.916,56.485,204.55,48.5,197.699,48.5z
|
||||
M151.071,34.389c0-4.873,3.966-8.84,8.84-8.84s8.84,3.967,8.84,8.84c0,0.198-0.011,0.395-0.029,0.59
|
||||
c-6.045-0.656-11.967-0.56-17.61,0.184C151.085,34.896,151.071,34.64,151.071,34.389z M197.699,81.109
|
||||
c-1.859,0-3.717-1.127-5.227-3.175c-0.131-0.178-0.297-0.309-0.47-0.425c-0.269-0.503-0.735-0.891-1.341-0.982
|
||||
c-1.045-0.16-1.983,0.547-2.139,1.571c-1.741,11.398-12.935,19.997-26.035,19.997c-11.934,0-22.169-6.925-25.303-16.946
|
||||
c0.377-0.428,0.742-0.876,1.086-1.372c0.59-0.855,0.376-2.022-0.477-2.612c-0.853-0.593-2.021-0.378-2.611,0.475
|
||||
c-1.547,2.237-3.478,3.47-5.437,3.47c-4.589,0-8.464-6.607-8.464-14.429c0-7.819,3.875-14.427,8.464-14.427
|
||||
c2.329,0,4.075,1.655,5.131,3.045c0.626,0.826,1.804,0.985,2.628,0.36c0.826-0.628,0.987-1.806,0.36-2.631
|
||||
c-1.203-1.583-2.604-2.767-4.114-3.53c7.621-3.314,16.571-5.104,25.926-5.104c11.449,0,22.27,2.698,30.809,7.578
|
||||
c-0.492,0.531-0.966,1.104-1.405,1.748c-0.581,0.858-0.356,2.026,0.501,2.608c0.858,0.581,2.027,0.358,2.608-0.5
|
||||
c1.562-2.307,3.519-3.574,5.509-3.574c4.588,0,8.464,6.607,8.464,14.427C206.163,74.502,202.287,81.109,197.699,81.109z"/>
|
||||
<path d="M176.928,49.439h-7.507c-0.519,0-0.938,0.419-0.938,0.938v4.396c0,2.588,2.104,4.692,4.69,4.692
|
||||
c2.588,0,4.693-2.104,4.693-4.692v-4.396C177.867,49.858,177.447,49.439,176.928,49.439z"/>
|
||||
<path d="M155.156,49.439h-7.508c-0.518,0-0.938,0.419-0.938,0.938v4.396c0,2.588,2.104,4.692,4.691,4.692
|
||||
s4.691-2.104,4.691-4.692v-4.396C156.094,49.858,155.674,49.439,155.156,49.439z"/>
|
||||
</g>
|
||||
<path d="M175.892,79.382c-0.007-0.198-0.045-0.391-0.114-0.572c-0.011-0.024-0.021-0.047-0.03-0.07
|
||||
c-0.084-0.188-0.197-0.357-0.339-0.505c-0.01-0.01-0.013-0.022-0.021-0.031c-0.01-0.009-0.021-0.012-0.031-0.021
|
||||
c-0.144-0.138-0.313-0.249-0.503-0.331c-0.029-0.013-0.056-0.023-0.087-0.035c-0.037-0.014-0.07-0.032-0.109-0.044l-24.385-7.144
|
||||
c-0.914-0.265-1.877,0.256-2.146,1.173c-0.07,0.239-0.083,0.479-0.053,0.712c-0.007,0.059-0.019,0.115-0.019,0.176
|
||||
c0,6.959,6.903,12.622,15.389,12.622c4.667,0,9.025-1.699,11.957-4.663c0.026-0.027,0.035-0.064,0.061-0.092
|
||||
c0.093-0.107,0.168-0.227,0.234-0.357c0.033-0.066,0.07-0.13,0.096-0.199c0.01-0.029,0.03-0.051,0.039-0.081
|
||||
c0.045-0.153,0.06-0.307,0.063-0.458C175.893,79.434,175.892,79.409,175.892,79.382z M151.807,74.682l18.57,5.441
|
||||
c-1.998,1.109-4.396,1.729-6.934,1.729C157.757,81.853,152.995,78.778,151.807,74.682z"/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M122.781,134.04c-1.042-2.062-2.674-3.756-4.85-5.039c-2.16-1.272-4.813-1.918-7.886-1.918
|
||||
c-3.788,0-7.559,0.784-11.206,2.328c-1.579,0.669-2.449,1.956-2.449,3.621c0,1.022,0.376,1.938,1.084,2.646
|
||||
c0.708,0.709,1.602,1.084,2.585,1.084c0.323,0,0.696-0.054,1.139-0.165l0.101-0.029c1.423-0.473,2.727-0.832,3.876-1.065
|
||||
c1.116-0.228,2.423-0.342,3.886-0.342c2.471,0,4.264,0.482,5.332,1.434c0.882,0.79,1.389,2.108,1.512,3.927h-6.043
|
||||
c-4.93,0-8.767,1.007-11.407,2.991c-2.76,2.077-4.159,4.898-4.159,8.384c0,2.11,0.529,4.011,1.572,5.647
|
||||
c1.041,1.633,2.468,2.892,4.238,3.741c1.723,0.828,3.616,1.246,5.626,1.246c3.993,0,7.475-1.072,10.388-3.195
|
||||
c0.196,0.63,0.538,1.198,1.021,1.679c0.79,0.792,1.812,1.208,2.954,1.208c1.131,0,2.156-0.41,2.966-1.188
|
||||
c0.823-0.792,1.258-1.819,1.258-2.973v-17.446C124.318,138.268,123.802,136.056,122.781,134.04z M107.826,154.824
|
||||
c-1.951,0-3.367-0.347-4.097-1.002c-0.717-0.642-1.05-1.45-1.05-2.542c0-2.311,2.665-3.481,7.922-3.481h5.331v3.251
|
||||
c-0.972,1.019-2.149,1.895-3.511,2.607C110.946,154.432,109.4,154.824,107.826,154.824z"/>
|
||||
<path d="M160.462,133.852c-0.994-2.078-2.449-3.741-4.324-4.945c-1.885-1.21-4.117-1.823-6.639-1.823
|
||||
c-2.696,0-5.083,0.58-7.096,1.723c-1.048,0.595-2.063,1.304-3.035,2.121c-0.139-0.869-0.542-1.653-1.186-2.297
|
||||
c-0.811-0.811-1.844-1.239-2.985-1.239c-1.151,0-2.18,0.436-2.973,1.258c-0.777,0.81-1.188,1.834-1.188,2.967v26.446
|
||||
c0,1.143,0.417,2.165,1.207,2.953c0.79,0.792,1.813,1.208,2.954,1.208c1.133,0,2.158-0.41,2.966-1.188
|
||||
c0.823-0.791,1.258-1.82,1.258-2.974V140.06c1.253-1.512,2.587-2.738,3.969-3.647c1.404-0.926,2.96-1.375,4.754-1.375
|
||||
c3.729,0,5.393,1.892,5.393,6.133v16.892c0,1.144,0.419,2.165,1.208,2.953c0.789,0.791,1.812,1.208,2.954,1.208
|
||||
c1.132,0,2.157-0.41,2.966-1.188c0.823-0.792,1.259-1.819,1.259-2.973v-17.508C161.923,138.138,161.432,135.884,160.462,133.852z
|
||||
"/>
|
||||
<path d="M194.538,134.04c-1.043-2.061-2.673-3.755-4.85-5.039c-2.162-1.272-4.814-1.918-7.887-1.918
|
||||
c-3.787,0-7.559,0.784-11.206,2.328c-1.579,0.669-2.449,1.956-2.449,3.621c0,1.022,0.375,1.938,1.083,2.646
|
||||
c0.708,0.71,1.603,1.085,2.587,1.085c0.322,0,0.695-0.054,1.139-0.165l0.101-0.029c1.421-0.473,2.726-0.832,3.877-1.065
|
||||
c1.114-0.228,2.421-0.342,3.883-0.342c2.471,0,4.266,0.482,5.333,1.434c0.883,0.79,1.391,2.108,1.512,3.927h-6.043
|
||||
c-4.93,0-8.767,1.007-11.407,2.991c-2.761,2.077-4.16,4.898-4.16,8.384c0,2.11,0.53,4.011,1.574,5.647
|
||||
c1.04,1.633,2.467,2.892,4.238,3.741c1.723,0.828,3.615,1.246,5.624,1.246c3.994,0,7.477-1.072,10.389-3.195
|
||||
c0.195,0.63,0.539,1.198,1.021,1.679c0.789,0.791,1.812,1.208,2.956,1.208c1.13,0,2.156-0.41,2.965-1.188
|
||||
c0.822-0.791,1.258-1.82,1.258-2.974v-17.446C196.074,138.269,195.557,136.056,194.538,134.04z M179.583,154.824
|
||||
c-1.951,0-3.368-0.347-4.098-1.002c-0.716-0.642-1.05-1.45-1.05-2.542c0-2.311,2.666-3.481,7.922-3.481h5.331v3.251
|
||||
c-0.972,1.02-2.15,1.895-3.511,2.608C182.702,154.432,181.157,154.824,179.583,154.824z"/>
|
||||
<g>
|
||||
<path d="M207.2,127.391c-1.153,0-2.181,0.435-2.973,1.258c-0.777,0.807-1.189,1.834-1.189,2.967v26.446
|
||||
c0,1.144,0.419,2.166,1.208,2.953c0.79,0.792,1.813,1.208,2.954,1.208c1.131,0,2.157-0.41,2.965-1.188
|
||||
c0.823-0.791,1.259-1.82,1.259-2.974v-26.446c0-1.182-0.418-2.224-1.209-3.018C209.423,127.809,208.381,127.391,207.2,127.391z"
|
||||
/>
|
||||
<path d="M210.648,116.086c-0.871-0.871-1.978-1.332-3.201-1.332h-0.371c-1.223,0-2.329,0.461-3.201,1.332
|
||||
c-0.87,0.87-1.33,1.977-1.33,3.2v0.246c0,1.222,0.46,2.329,1.33,3.2c0.872,0.871,1.979,1.331,3.201,1.331h0.371
|
||||
c1.224,0,2.33-0.46,3.199-1.331c0.872-0.87,1.332-1.979,1.332-3.2v-0.246C211.979,118.063,211.519,116.956,210.648,116.086z"/>
|
||||
</g>
|
||||
<path d="M226.305,115.037c-0.791-0.791-1.833-1.209-3.016-1.209c-1.154,0-2.182,0.436-2.973,1.258
|
||||
c-0.777,0.808-1.188,1.833-1.188,2.967v40.009c0,1.144,0.417,2.166,1.207,2.953c0.789,0.791,1.812,1.208,2.954,1.208
|
||||
c1.132,0,2.157-0.41,2.965-1.188c0.824-0.791,1.259-1.82,1.259-2.974v-40.009C227.513,116.871,227.096,115.827,226.305,115.037z"
|
||||
/>
|
||||
<path d="M242.641,115.037c-0.79-0.791-1.833-1.209-3.015-1.209c-1.154,0-2.183,0.436-2.973,1.258
|
||||
c-0.778,0.808-1.189,1.833-1.189,2.967v40.009c0,1.144,0.418,2.166,1.207,2.953c0.79,0.791,1.812,1.208,2.955,1.208
|
||||
c1.132,0,2.157-0.41,2.966-1.188c0.823-0.791,1.259-1.82,1.259-2.974v-40.009C243.851,116.871,243.433,115.827,242.641,115.037z"
|
||||
/>
|
||||
<path d="M276.736,152.357c-0.623,0-1.204,0.132-1.729,0.393c-1.141,0.571-2.321,1.014-3.513,1.315
|
||||
c-1.176,0.299-2.584,0.45-4.19,0.45c-2.881,0-5.122-0.691-6.661-2.055c-1.225-1.085-2.042-2.498-2.477-4.293h19.249
|
||||
c1.233,0,2.293-0.425,3.065-1.227c0.758-0.788,1.158-1.803,1.158-2.936c0-2.991-0.627-5.8-1.867-8.346
|
||||
c-1.259-2.585-3.128-4.682-5.554-6.231c-2.437-1.557-5.343-2.346-8.639-2.346c-3.517,0-6.54,0.849-8.984,2.524
|
||||
c-2.429,1.663-4.251,3.875-5.42,6.571c-1.14,2.629-1.717,5.532-1.717,8.628c0,5.533,1.555,9.915,4.622,13.026
|
||||
c3.071,3.119,7.354,4.698,12.732,4.698c2.584,0,4.745-0.246,6.428-0.732c1.658-0.48,3.355-1.207,5.053-2.165
|
||||
c1.898-1.096,2.298-2.499,2.298-3.483c0-1.085-0.411-2.034-1.189-2.749C278.657,152.719,277.736,152.357,276.736,152.357z
|
||||
M258.082,140.83c0.215-1.119,0.593-2.09,1.131-2.897c0.768-1.151,1.692-1.97,2.825-2.503c2.328-1.092,4.754-1.093,7.08-0.001
|
||||
c1.14,0.536,2.077,1.359,2.865,2.517c0.549,0.804,0.934,1.771,1.151,2.885H258.082z"/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M37.663,143.938c7.947-2.062,16.118-4.836,18.274-5.58c0.355-0.123,0.552-0.191,0.552-0.191s-0.021-0.008-0.033-0.013
|
||||
l1.615-0.636l0.022,0.009l30.894-12.3c-0.765-3.868-2.33-7.001-4.701-9.4c-2.37-2.396-5.272-4.155-8.706-5.272
|
||||
c-3.433-1.115-7.139-1.675-11.115-1.675c-5.671,0-10.56,1.09-14.675,3.27c-4.114,2.179-7.274,5.342-9.482,9.482
|
||||
c-2.206,4.141-3.308,9.149-3.31,15.031c-7.306,4.08-19.362,5.242-16.067,8.79C22.592,147.241,30.021,145.919,37.663,143.938
|
||||
L37.663,143.938z M76.565,118.341c4.519-2.259,6.919,4.942,6.919,4.942l-6.919,2.683
|
||||
C76.565,125.966,73.833,119.708,76.565,118.341z"/>
|
||||
</g>
|
||||
<path d="M86.018,139.194c-3.754-2.087-8.485-0.733-10.57,3.02c-2.069,3.723-5.992,6.033-10.243,6.033
|
||||
c-5.117,0-9.466-3.307-11.052-7.89c-5.033,1.66-10.648,3.271-14.916,4.442c3.506,11.002,13.819,18.994,25.968,18.994
|
||||
c9.893,0,19.025-5.378,23.832-14.03C91.123,146.01,89.771,141.278,86.018,139.194z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
BIN
doc/_static/canaille-head.png
vendored
Normal file
After Width: | Height: | Size: 7.6 KiB |
79
doc/_static/canaille-head.svg
vendored
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="117.82px" height="89.625px" viewBox="0 0 117.82 89.625" enable-background="new 0 0 117.82 89.625" xml:space="preserve">
|
||||
<g id="Calque_1">
|
||||
</g>
|
||||
<g id="Calque_2">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M49.306,54.809c-1.036,0-1.876-0.839-1.876-1.877v-0.576c0-1.039,0.84-1.877,1.876-1.877
|
||||
c1.037,0,1.877,0.838,1.877,1.877v0.576C51.183,53.97,50.343,54.809,49.306,54.809z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M54.399,52.603c-1.036,0-1.877-0.84-1.877-1.877V50c0-1.037,0.841-1.878,1.877-1.878s1.876,0.841,1.876,1.878v0.726
|
||||
C56.275,51.763,55.436,52.603,54.399,52.603z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M49.306,47.861c-1.036,0-1.876-0.84-1.876-1.877v-0.902c0-1.037,0.84-1.877,1.876-1.877c1.037,0,1.877,0.84,1.877,1.877
|
||||
v0.902C51.183,47.021,50.343,47.861,49.306,47.861z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M86.584,52.411c-1.037,0-1.877-0.839-1.877-1.877V50c0-1.037,0.84-1.878,1.877-1.878c1.036,0,1.876,0.841,1.876,1.878
|
||||
v0.534C88.46,51.572,87.62,52.411,86.584,52.411z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M91.74,48.399c-1.036,0-1.877-0.839-1.877-1.877v-0.538c0-1.038,0.841-1.877,1.877-1.877
|
||||
c1.037,0,1.877,0.839,1.877,1.877v0.538C93.617,47.561,92.777,48.399,91.74,48.399z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M90.963,56.765c-1.037,0-1.877-0.839-1.877-1.877v-0.585c0-1.037,0.84-1.877,1.877-1.877s1.877,0.84,1.877,1.877v0.585
|
||||
C92.84,55.926,92,56.765,90.963,56.765z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M36.79,63.195c-3.354,0-5.982-3.905-5.982-8.893c0-4.986,2.628-8.893,5.982-8.893c1.48,0,2.895,0.788,3.979,2.218
|
||||
c0.314,0.415,0.233,1.002-0.18,1.316c-0.413,0.311-1.001,0.231-1.315-0.18c-0.511-0.675-1.356-1.478-2.484-1.478
|
||||
c-2.226,0-4.105,3.212-4.105,7.016s1.88,7.016,4.105,7.016c0.948,0,1.885-0.598,2.635-1.682c0.294-0.427,0.88-0.537,1.306-0.239
|
||||
c0.426,0.296,0.532,0.88,0.237,1.306C39.856,62.311,38.374,63.195,36.79,63.195z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M106.369,63.926c-1.621,0-3.164-0.881-4.343-2.479c-0.308-0.418-0.22-1.005,0.197-1.312
|
||||
c0.419-0.307,1.007-0.221,1.313,0.196c0.815,1.107,1.822,1.717,2.833,1.717c2.478,0,4.569-3.547,4.569-7.746
|
||||
c0-4.198-2.092-7.745-4.569-7.745c-1.08,0-2.139,0.686-2.984,1.93c-0.295,0.432-0.88,0.536-1.305,0.25
|
||||
c-0.43-0.292-0.539-0.876-0.25-1.305c1.207-1.774,2.819-2.752,4.539-2.752c3.614,0,6.447,4.227,6.447,9.622
|
||||
S109.983,63.926,106.369,63.926z"/>
|
||||
</g>
|
||||
<path d="M105.604,36.277c-1.048,0-2.069,0.211-3.054,0.58c0.291-1.643,0.455-3.277,0.455-4.894C103.005,14.339,87.114,0,67.582,0
|
||||
c-19.268,0-34.99,13.951-35.416,31.245c-9.102,2.416-22.254,3.108-22.343,3.113C4.407,34.358,0,38.853,0,44.377
|
||||
c0,5.522,4.403,10.016,9.758,10.016c0.001,0,0.003,0,0.004,0c0,0,0.292,0.021,0.826,0.021c2.007,0,8.422-0.312,15.12-3.844
|
||||
c-0.176,1.25-0.274,2.549-0.274,3.889c0,10.196,5.366,18.183,12.218,18.183c1.51,0,2.972-0.411,4.338-1.168
|
||||
c4.103,10.807,15.385,18.152,28.403,18.152c13.543,0,25.289-8.202,28.874-19.58c1.888,1.684,4.069,2.596,6.337,2.596
|
||||
c6.851,0,12.217-7.986,12.217-18.183C117.82,44.263,112.454,36.277,105.604,36.277z M58.976,22.166c0-4.873,3.966-8.84,8.84-8.84
|
||||
s8.84,3.967,8.84,8.84c0,0.198-0.011,0.395-0.029,0.59c-6.045-0.656-11.967-0.56-17.61,0.184
|
||||
C58.989,22.674,58.976,22.417,58.976,22.166z M105.604,68.887c-1.859,0-3.717-1.127-5.227-3.175
|
||||
c-0.131-0.178-0.297-0.309-0.47-0.425c-0.269-0.503-0.735-0.891-1.341-0.982c-1.045-0.16-1.983,0.547-2.139,1.571
|
||||
c-1.741,11.398-12.935,19.997-26.035,19.997c-11.934,0-22.169-6.925-25.303-16.946c0.377-0.428,0.742-0.876,1.086-1.372
|
||||
c0.59-0.855,0.376-2.022-0.477-2.612c-0.853-0.593-2.021-0.378-2.611,0.475c-1.547,2.237-3.478,3.47-5.437,3.47
|
||||
c-4.589,0-8.464-6.607-8.464-14.429c0-7.819,3.875-14.427,8.464-14.427c2.329,0,4.075,1.655,5.131,3.045
|
||||
c0.626,0.826,1.804,0.985,2.628,0.36c0.826-0.628,0.987-1.806,0.36-2.631c-1.203-1.583-2.604-2.767-4.114-3.53
|
||||
c7.621-3.314,16.571-5.104,25.926-5.104c11.449,0,22.27,2.698,30.809,7.578c-0.492,0.531-0.966,1.104-1.405,1.748
|
||||
c-0.581,0.858-0.356,2.026,0.501,2.608c0.858,0.581,2.027,0.358,2.608-0.5c1.562-2.307,3.519-3.574,5.509-3.574
|
||||
c4.588,0,8.464,6.607,8.464,14.427C114.067,62.279,110.191,68.887,105.604,68.887z"/>
|
||||
<path d="M84.832,37.217h-7.507c-0.519,0-0.938,0.419-0.938,0.938v4.396c0,2.588,2.104,4.692,4.69,4.692
|
||||
c2.588,0,4.693-2.104,4.693-4.692v-4.396C85.771,37.636,85.352,37.217,84.832,37.217z"/>
|
||||
<path d="M63.061,37.217h-7.508c-0.518,0-0.938,0.419-0.938,0.938v4.396c0,2.588,2.104,4.692,4.691,4.692s4.691-2.104,4.691-4.692
|
||||
v-4.396C63.998,37.636,63.578,37.217,63.061,37.217z"/>
|
||||
</g>
|
||||
<path d="M83.796,67.159c-0.007-0.198-0.045-0.391-0.114-0.572c-0.011-0.024-0.021-0.047-0.03-0.07
|
||||
c-0.084-0.188-0.197-0.357-0.339-0.505c-0.01-0.01-0.013-0.022-0.021-0.031c-0.01-0.009-0.021-0.012-0.031-0.021
|
||||
c-0.144-0.138-0.313-0.249-0.503-0.331c-0.029-0.013-0.056-0.023-0.087-0.035c-0.037-0.014-0.07-0.032-0.109-0.044l-24.385-7.144
|
||||
c-0.914-0.265-1.877,0.256-2.146,1.173c-0.07,0.239-0.083,0.479-0.053,0.712c-0.007,0.059-0.019,0.115-0.019,0.176
|
||||
c0,6.959,6.903,12.622,15.389,12.622c4.667,0,9.025-1.699,11.957-4.663c0.026-0.027,0.035-0.064,0.061-0.092
|
||||
c0.093-0.107,0.168-0.227,0.234-0.357c0.033-0.066,0.07-0.13,0.096-0.199c0.01-0.029,0.03-0.051,0.039-0.081
|
||||
c0.045-0.153,0.06-0.307,0.063-0.458C83.797,67.211,83.796,67.187,83.796,67.159z M59.711,62.459l18.57,5.441
|
||||
c-1.998,1.109-4.396,1.729-6.934,1.729C65.661,69.63,60.899,66.556,59.711,62.459z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.7 KiB |
BIN
doc/_static/canaille-label.png
vendored
Normal file
After Width: | Height: | Size: 8.5 KiB |
77
doc/_static/canaille-label.svg
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="261.267px" height="54.915px" viewBox="0 0 261.267 54.915" enable-background="new 0 0 261.267 54.915"
|
||||
xml:space="preserve">
|
||||
<g id="Calque_1">
|
||||
</g>
|
||||
<g id="Calque_2">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M102.409,25.161c-1.042-2.062-2.674-3.756-4.85-5.039c-2.16-1.272-4.813-1.918-7.886-1.918
|
||||
c-3.788,0-7.559,0.784-11.206,2.328c-1.579,0.669-2.449,1.956-2.449,3.621c0,1.022,0.376,1.938,1.084,2.646
|
||||
c0.708,0.709,1.602,1.084,2.585,1.084c0.323,0,0.696-0.054,1.139-0.165l0.101-0.029c1.423-0.473,2.727-0.832,3.876-1.065
|
||||
c1.116-0.228,2.423-0.342,3.886-0.342c2.471,0,4.264,0.482,5.332,1.434c0.882,0.79,1.389,2.108,1.512,3.927h-6.043
|
||||
c-4.93,0-8.767,1.007-11.407,2.991c-2.76,2.077-4.159,4.898-4.159,8.384c0,2.11,0.529,4.011,1.572,5.647
|
||||
c1.041,1.633,2.468,2.892,4.238,3.741c1.723,0.828,3.616,1.246,5.626,1.246c3.993,0,7.475-1.072,10.388-3.195
|
||||
c0.196,0.63,0.538,1.198,1.021,1.679c0.79,0.792,1.812,1.208,2.954,1.208c1.131,0,2.156-0.41,2.966-1.188
|
||||
c0.823-0.792,1.258-1.819,1.258-2.973V31.736C103.946,29.389,103.43,27.177,102.409,25.161z M87.454,45.945
|
||||
c-1.951,0-3.367-0.347-4.097-1.002c-0.717-0.642-1.05-1.45-1.05-2.542c0-2.311,2.665-3.481,7.922-3.481h5.331v3.251
|
||||
c-0.972,1.019-2.149,1.895-3.511,2.607C90.574,45.553,89.028,45.945,87.454,45.945z"/>
|
||||
<path d="M140.09,24.973c-0.994-2.078-2.449-3.741-4.324-4.945c-1.885-1.21-4.117-1.823-6.639-1.823
|
||||
c-2.696,0-5.083,0.58-7.096,1.723c-1.048,0.595-2.063,1.304-3.035,2.121c-0.139-0.869-0.542-1.653-1.186-2.297
|
||||
c-0.811-0.811-1.844-1.239-2.985-1.239c-1.151,0-2.18,0.436-2.973,1.258c-0.777,0.81-1.188,1.834-1.188,2.967v26.446
|
||||
c0,1.143,0.417,2.165,1.207,2.953c0.79,0.792,1.813,1.208,2.954,1.208c1.133,0,2.158-0.41,2.966-1.188
|
||||
c0.823-0.791,1.258-1.82,1.258-2.974V31.181c1.253-1.512,2.587-2.738,3.969-3.647c1.404-0.926,2.96-1.375,4.754-1.375
|
||||
c3.729,0,5.393,1.892,5.393,6.133v16.892c0,1.144,0.419,2.165,1.208,2.953c0.789,0.791,1.812,1.208,2.954,1.208
|
||||
c1.132,0,2.157-0.41,2.966-1.188c0.823-0.792,1.259-1.819,1.259-2.973V31.675C141.551,29.259,141.06,27.005,140.09,24.973z"/>
|
||||
<path d="M174.166,25.161c-1.043-2.061-2.673-3.755-4.85-5.039c-2.162-1.272-4.814-1.918-7.887-1.918
|
||||
c-3.787,0-7.559,0.784-11.206,2.328c-1.579,0.669-2.449,1.956-2.449,3.621c0,1.022,0.375,1.938,1.083,2.646
|
||||
c0.708,0.71,1.603,1.085,2.587,1.085c0.322,0,0.695-0.054,1.139-0.165l0.101-0.029c1.421-0.473,2.726-0.832,3.877-1.065
|
||||
c1.114-0.228,2.421-0.342,3.883-0.342c2.471,0,4.266,0.482,5.333,1.434c0.883,0.79,1.391,2.108,1.512,3.927h-6.043
|
||||
c-4.93,0-8.767,1.007-11.407,2.991c-2.761,2.077-4.16,4.898-4.16,8.384c0,2.11,0.53,4.011,1.574,5.647
|
||||
c1.04,1.633,2.467,2.892,4.238,3.741c1.723,0.828,3.615,1.246,5.624,1.246c3.994,0,7.477-1.072,10.389-3.195
|
||||
c0.195,0.63,0.539,1.198,1.021,1.679c0.789,0.791,1.812,1.208,2.956,1.208c1.13,0,2.156-0.41,2.965-1.188
|
||||
c0.822-0.791,1.258-1.82,1.258-2.974V31.736C175.702,29.39,175.185,27.177,174.166,25.161z M159.211,45.945
|
||||
c-1.951,0-3.368-0.347-4.098-1.002c-0.716-0.642-1.05-1.45-1.05-2.542c0-2.311,2.666-3.481,7.922-3.481h5.331v3.251
|
||||
c-0.972,1.02-2.15,1.895-3.511,2.608C162.33,45.553,160.785,45.945,159.211,45.945z"/>
|
||||
<g>
|
||||
<path d="M186.828,18.512c-1.153,0-2.181,0.435-2.973,1.258c-0.777,0.807-1.189,1.834-1.189,2.967v26.446
|
||||
c0,1.144,0.419,2.166,1.208,2.953c0.79,0.792,1.813,1.208,2.954,1.208c1.131,0,2.157-0.41,2.965-1.188
|
||||
c0.823-0.791,1.259-1.82,1.259-2.974V22.736c0-1.182-0.418-2.224-1.209-3.018C189.051,18.93,188.009,18.512,186.828,18.512z"/>
|
||||
<path d="M190.276,7.207c-0.871-0.871-1.978-1.332-3.201-1.332h-0.371c-1.223,0-2.329,0.461-3.201,1.332
|
||||
c-0.87,0.87-1.33,1.977-1.33,3.2v0.246c0,1.222,0.46,2.329,1.33,3.2c0.872,0.871,1.979,1.331,3.201,1.331h0.371
|
||||
c1.224,0,2.33-0.46,3.199-1.331c0.872-0.87,1.332-1.979,1.332-3.2v-0.246C191.606,9.184,191.146,8.077,190.276,7.207z"/>
|
||||
</g>
|
||||
<path d="M205.933,6.158c-0.791-0.791-1.833-1.209-3.016-1.209c-1.154,0-2.182,0.436-2.973,1.258
|
||||
c-0.777,0.808-1.188,1.833-1.188,2.967v40.009c0,1.144,0.417,2.166,1.207,2.953c0.789,0.791,1.812,1.208,2.954,1.208
|
||||
c1.132,0,2.157-0.41,2.965-1.188c0.824-0.791,1.259-1.82,1.259-2.974V9.174C207.141,7.992,206.724,6.948,205.933,6.158z"/>
|
||||
<path d="M222.269,6.158c-0.79-0.791-1.833-1.209-3.015-1.209c-1.154,0-2.183,0.436-2.973,1.258
|
||||
c-0.778,0.808-1.189,1.833-1.189,2.967v40.009c0,1.144,0.418,2.166,1.207,2.953c0.79,0.791,1.812,1.208,2.955,1.208
|
||||
c1.132,0,2.157-0.41,2.966-1.188c0.823-0.791,1.259-1.82,1.259-2.974V9.174C223.479,7.992,223.061,6.948,222.269,6.158z"/>
|
||||
<path d="M256.364,43.479c-0.623,0-1.204,0.132-1.729,0.393c-1.141,0.571-2.321,1.014-3.513,1.315
|
||||
c-1.176,0.299-2.584,0.45-4.19,0.45c-2.881,0-5.122-0.691-6.661-2.055c-1.225-1.085-2.042-2.498-2.477-4.293h19.249
|
||||
c1.233,0,2.293-0.425,3.065-1.227c0.758-0.788,1.158-1.803,1.158-2.936c0-2.991-0.627-5.8-1.867-8.346
|
||||
c-1.259-2.585-3.128-4.682-5.554-6.231c-2.437-1.557-5.343-2.346-8.639-2.346c-3.517,0-6.54,0.849-8.984,2.524
|
||||
c-2.429,1.663-4.251,3.875-5.42,6.571c-1.14,2.629-1.717,5.532-1.717,8.628c0,5.533,1.555,9.915,4.622,13.026
|
||||
c3.071,3.119,7.354,4.698,12.732,4.698c2.584,0,4.745-0.246,6.428-0.732c1.658-0.48,3.355-1.207,5.053-2.165
|
||||
c1.898-1.096,2.298-2.499,2.298-3.483c0-1.085-0.411-2.034-1.189-2.749C258.285,43.84,257.364,43.479,256.364,43.479z
|
||||
M237.71,31.951c0.215-1.119,0.593-2.09,1.131-2.897c0.768-1.151,1.692-1.97,2.825-2.503c2.328-1.092,4.754-1.093,7.08-0.001
|
||||
c1.14,0.536,2.077,1.359,2.865,2.517c0.549,0.804,0.934,1.771,1.151,2.885H237.71z"/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M17.291,35.059c7.947-2.062,16.118-4.836,18.274-5.58c0.355-0.123,0.552-0.191,0.552-0.191s-0.021-0.008-0.033-0.013
|
||||
l1.615-0.636l0.022,0.009l30.894-12.3c-0.765-3.868-2.33-7.001-4.701-9.4c-2.37-2.396-5.272-4.155-8.706-5.272
|
||||
C51.775,0.56,48.069,0,44.093,0c-5.671,0-10.56,1.09-14.675,3.27c-4.114,2.179-7.274,5.342-9.482,9.482
|
||||
c-2.206,4.141-3.308,9.149-3.31,15.031c-7.306,4.08-19.362,5.242-16.067,8.79C2.22,38.362,9.649,37.04,17.291,35.059
|
||||
L17.291,35.059z M56.193,9.462c4.519-2.259,6.919,4.942,6.919,4.942l-6.919,2.683C56.193,17.087,53.461,10.829,56.193,9.462z"/>
|
||||
</g>
|
||||
<path d="M65.646,30.315c-3.754-2.087-8.485-0.733-10.57,3.02c-2.069,3.723-5.992,6.033-10.243,6.033
|
||||
c-5.117,0-9.466-3.307-11.052-7.89c-5.033,1.66-10.648,3.271-14.916,4.442c3.506,11.002,13.819,18.994,25.968,18.994
|
||||
c9.893,0,19.025-5.378,23.832-14.03C70.751,37.131,69.398,32.399,65.646,30.315z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.7 KiB |
BIN
doc/_static/consent.png
vendored
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
doc/_static/login.png
vendored
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
doc/_static/logo.png
vendored
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
doc/_static/profile.png
vendored
Normal file
After Width: | Height: | Size: 34 KiB |
7
doc/changelog.rst
Normal file
|
@ -0,0 +1,7 @@
|
|||
Roadmap and changelog
|
||||
#####################
|
||||
|
||||
canaille 0 versions
|
||||
-------------------
|
||||
|
||||
.. include:: ../CHANGES.rst
|
84
doc/conf.py
Normal file
|
@ -0,0 +1,84 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
import pkg_resources
|
||||
|
||||
sys.path.insert(0, os.path.abspath("../.."))
|
||||
sys.path.insert(0, os.path.abspath("../../canaille"))
|
||||
|
||||
import canaille
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
rqmt = pkg_resources.require("canaille")[0]
|
||||
|
||||
extensions = [
|
||||
"sphinx.ext.autodoc",
|
||||
"sphinx.ext.doctest",
|
||||
"sphinx.ext.graphviz",
|
||||
"sphinx.ext.intersphinx",
|
||||
"sphinx.ext.todo",
|
||||
"sphinx.ext.viewcode",
|
||||
"sphinx_issues",
|
||||
]
|
||||
|
||||
templates_path = ["_templates"]
|
||||
source_suffix = [".rst"]
|
||||
master_doc = "index"
|
||||
project = "canaille"
|
||||
copyright = "2020, Yaal"
|
||||
author = "Yaal"
|
||||
|
||||
version = "%s.%s" % tuple(map(int, rqmt.version.split(".")[:2]))
|
||||
release = rqmt.version
|
||||
|
||||
language = None
|
||||
exclude_patterns = []
|
||||
pygments_style = "sphinx"
|
||||
todo_include_todos = False
|
||||
|
||||
intersphinx_mapping = {
|
||||
"python": ("https://docs.python.org/3", None),
|
||||
}
|
||||
|
||||
issues_uri = "https://gitlab.com/yaal/canaille/-/issues/{issue}"
|
||||
issues_pr_uri = "https://gitlab.com/yaal/canaille/-/merge_requests/{pr}"
|
||||
issues_commit_uri = "https://gitlab.com/yaal/canaille/-/commit/{commit}"
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
html_theme = "sphinx_rtd_theme"
|
||||
html_static_path = []
|
||||
|
||||
|
||||
# -- Options for HTMLHelp output ------------------------------------------
|
||||
|
||||
htmlhelp_basename = "canailledoc"
|
||||
html_logo = "_static/logo.png"
|
||||
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {}
|
||||
latex_documents = [
|
||||
(master_doc, "canaille.tex", "canaille Documentation", "Yaal", "manual")
|
||||
]
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
man_pages = [(master_doc, "canaille", "canaille Documentation", [author], 1)]
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
texinfo_documents = [
|
||||
(
|
||||
master_doc,
|
||||
"canaille",
|
||||
"canaille Documentation",
|
||||
author,
|
||||
"canaille",
|
||||
"One line description of project.",
|
||||
"Miscellaneous",
|
||||
)
|
||||
]
|
1
doc/contributing.rst
Normal file
|
@ -0,0 +1 @@
|
|||
.. include:: ../CONTRIBUTING.rst
|
46
doc/index.rst
Normal file
|
@ -0,0 +1,46 @@
|
|||
Canaille
|
||||
========
|
||||
|
||||
**Canaille** is a French word meaning *rascal*. It is roughly pronounced **Can I?**,
|
||||
as in *Can I access your data?* Canaille is a simple OpenID Connect provider based upon a LDAP database.
|
||||
|
||||
It aims to be very light, simple to install and simple to maintain. Its main features are :
|
||||
|
||||
- Authentication against a LDAP directory;
|
||||
- OAuth/OpenID Connect support;
|
||||
- No outdated or exotic protocol support;
|
||||
- No additional database required. Everything is stored in your LDAP server;
|
||||
- The code is easy to read and easy to edit.
|
||||
|
||||
Screenshots
|
||||
===========
|
||||
|
||||
.. image:: _static/login.png
|
||||
:width: 225
|
||||
:alt: Login
|
||||
|
||||
.. image:: _static/consent.png
|
||||
:width: 225
|
||||
:alt: Consent
|
||||
|
||||
.. image:: _static/profile.png
|
||||
:width: 225
|
||||
:alt: Profile
|
||||
|
||||
|
||||
Table of contents
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
install
|
||||
contributing
|
||||
changelog
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
58
doc/install.rst
Normal file
|
@ -0,0 +1,58 @@
|
|||
Installation
|
||||
############
|
||||
|
||||
⚠ Canaille is under heavy development and may not fit a production environment yet. ⚠
|
||||
|
||||
First you need to install the schemas into your LDAP server. There are several ways to achieve this:
|
||||
|
||||
LDAP schemas
|
||||
============
|
||||
|
||||
As of OpenLDAP 2.4, two configuration methods are available:
|
||||
- The `deprecated <https://www.openldap.org/doc/admin24/slapdconf2.html>`_ one, based on a configuration file (generally `/etc/ldap/slapd.conf`);
|
||||
- The new one, based on a configuration directory (generally `/etc/ldap/slapd.d`).
|
||||
|
||||
Depending on the configuration method you use with your OpenLDAP installation, you need to chose how to add the canaille schemas:
|
||||
|
||||
Old fashion: Copy the schemas in your filesystem
|
||||
================================================
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
test -d /etc/openldap/schema && sudo cp schema/* /etc/openldap/schema
|
||||
test -d /etc/ldap/schema && sudo cp schema/* /etc/ldap/schema
|
||||
sudo service slapd restart
|
||||
|
||||
New fashion: Use slapadd to add the schemas
|
||||
===========================================
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo slapadd -n0 -l schema/*.ldif
|
||||
sudo service slapd restart
|
||||
|
||||
Web interface
|
||||
=============
|
||||
|
||||
Then you can deploy the code either by copying the git repository or installing the pip package:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install canaille
|
||||
|
||||
Finally you have to run the website in a WSGI server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install gunicorn
|
||||
gunicorn "canaille:create_app()"
|
||||
|
||||
Recurrent jobs
|
||||
##############
|
||||
|
||||
You might want to clean up your database to avoid it growing too much. You can regularly delete
|
||||
expired tokens and authorization codes with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
env CONFIG=/path/to/config.toml FASK_APP=canaille flask clean
|
10
setup.cfg
|
@ -45,6 +45,7 @@ envlist =
|
|||
py37
|
||||
py38
|
||||
py39
|
||||
doc
|
||||
coverage
|
||||
skipsdist=True
|
||||
|
||||
|
@ -58,6 +59,15 @@ deps =
|
|||
pdbpp
|
||||
pytest
|
||||
|
||||
[testenv:doc]
|
||||
deps =
|
||||
--editable .
|
||||
sphinx
|
||||
sphinx-rtd-theme
|
||||
sphinx-issues
|
||||
commands =
|
||||
sphinx-build doc build/sphinx/html
|
||||
|
||||
[testenv:coverage]
|
||||
skip_install = true
|
||||
deps =
|
||||
|
|