Compare commits

..

1 Commits

Author SHA1 Message Date
FyloZ 70205b7425
CI/CD
continuous-integration/drone/push Build is passing Details
2021-08-16 21:55:09 -04:00
9 changed files with 24 additions and 278 deletions

View File

@ -1,62 +1,46 @@
---
global-variables:
release: &release ${DRONE_TAG}
environment: &environment
DOCS_VERSION: dev-${DRONE_BUILD_NUMBER}
DOCS_REGISTRY_IMAGE: registry.fyloz.dev/colorrecipesexplorer/docs
DOCS_PORT: 9103
DOCS_RELEASE: *release
CRE_PORT: 9103
CRE_RELEASE: ${DRONE_BRANCH##**/}
alpine-image: &alpine-image alpine:latest
docker-registry: &docker-registry registry.fyloz.dev
docker-registry-repo: &docker-registry-repo registry.fyloz.dev/colorrecipesexplorer/docs
docker-registry-repo: &docker-registry-repo registry.fyloz.dev:5443/colorrecipesexplorer/docs
kind: pipeline
name: default
name: build
type: docker
steps:
- name: set-docker-tags-latest
image: *alpine-image
environment:
<<: *environment
commands:
- echo -n "latest" > .tags
when:
branch: develop
event:
exclude:
- pull_request
branch: master
- name: set-docker-tags-release
image: *alpine-image
environment:
<<: *environment
commands:
- echo -n "latest-release,$DOCS_RELEASE" > .tags
- echo -n "latest-release,$CRE_RELEASE" > .tags
when:
event:
- tag
branch: release/**
- name: containerize-release
- name: containerize
image: plugins/docker
environment:
<<: *environment
settings:
registry: *docker-registry
repo: *docker-registry-repo
username:
from_secret: docker_username
password:
from_secret: docker_password
when:
event:
- tag
branch:
- master
- release/**
- name: deploy
image: alpine:latest
image: *alpine-image
environment:
<<: *environment
DOCS_REGISTRY_IMAGE: *docker-registry-repo
CRE_REGISTRY_IMAGE: *docker-registry-repo
DEPLOY_SERVER:
from_secret: deploy_server
DEPLOY_SERVER_USERNAME:
@ -77,8 +61,12 @@ steps:
- ssh-keyscan -p $DEPLOY_SERVER_SSH_PORT -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker stop $DEPLOY_CONTAINER_NAME || true && docker rm $DEPLOY_CONTAINER_NAME || true"
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker pull $DOCS_REGISTRY_IMAGE:$DOCS_RELEASE"
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker run -d -p $DOCS_PORT:80 --name=$DEPLOY_CONTAINER_NAME $DOCS_REGISTRY_IMAGE:$DOCS_RELEASE"
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker pull $CRE_REGISTRY_IMAGE:$CRE_RELEASE"
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker run -d -p $CRE_PORT:80 --name=$DEPLOY_CONTAINER_NAME $CRE_REGISTRY_IMAGE:$CRE_RELEASE"
when:
event:
- tag
branch: release/**
trigger:
branch:
- master
- release/**

120
.gitignore vendored
View File

@ -1,120 +0,0 @@
# Created by https://www.toptal.com/developers/gitignore/api/intellij
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/
# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml
# End of https://www.toptal.com/developers/gitignore/api/intellij
# Mkdocs output
site/

5
.idea/.gitignore vendored
View File

@ -1,5 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/documentation.iml" filepath="$PROJECT_DIR$/.idea/documentation.iml" />
</modules>
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -16,10 +16,10 @@ RUN mkdocs build
FROM nginx:mainline-alpine
WORKDIR /usr/bin/
WORKDIR /usr/bin/cre/
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /usr/src/site/ .
COPY --from=build /usr/src/site/ docs
EXPOSE 80

View File

@ -1,91 +0,0 @@
# Groupes par défaut
Color Recipes Explorer permet de définir un groupe d'utilisateur par défaut dans un navigateur. Cette fonctionnalité
permet aux utilisateurs utilisant ce navigateur d'être automatiquement connectés au système lors du chargement de l'
application. Après la connexion, ces utilisateurs auront les mêmes permissions que le groupe par défaut.
Lorsquaucun utilisateur n'est connecté, le navigateur tentera de se connecter au groupe par défaut au chargement de
l'application. Si le navigateur a un jeton de connexion associé et que celui-ci est valide, l'utilisateur du navigateur
sera connecté en tant que le groupe par défaut. Si ces deux critères ne sont pas respectés, la tentative de connexion
échouera.
## Définir un groupe par défaut
Il est possible de définir le groupe par défaut du navigateur dans la liste des groupes (Administration > Groupes). Pour
ce faire, il suffit d'appuyer sur le bouton «Définir par défaut» du groupe désiré et d'entrer un nom unique au
navigateur dans la boite de dialogue qui s'affiche. En appuyant sur le bouton «Continuer», le nom est validé, puis un
jeton de connexion unique est assigné au navigateur.
### Critères de validation
Pour être valide, le nom du navigateur doit être unique.
## Gestion des jetons de connexion
### Connaître le groupe par défaut d'un navigateur
Après la connexion automatique au groupe, le nom du navigateur et le nom du groupe par défaut s'afficheront à la gauche
du logo de l'application, en haut à droite.
Si l'utilisateur s'est connecté manuellement au système (et non pas à un groupe par défaut), il est seulement possible
de
le savoir si cet utilisateur est un administrateur.
Pour ce faire, le groupe par défaut sera affiché dans la liste des groupes d'utilisateurs (Administration > Groupes).
Si un jeton de connexion est présent dans le navigateur, le bouton "Définir par défaut" ne sera pas présent et le
texte "Groupe par défaut" sera affiché à sa place dans la ligne du groupe par défaut du navigateur.
### Voir tous les jetons de connexion
Tous les jetons de connexion enregistrés dans le système sont listés dans une table à: Administration > Ordinateurs.
Seuls les administrateurs peuvent accéder à cette page.
Chaque ligne de la table représente un seul jeton et ces informations sont listées:
* Identifiant: L'UUID (Universal Unique Identifier) du jeton. C'est la seule information stockée dans les navigateurs.
* Nom: Le nom unique du jeton.
* Groupe: Le nom du groupe auquel les utilisateurs utilisant ce jeton seront connectés.
* État: Si le jeton est activé ou désactivé.
De plus, il est possible de désactiver (ou d'activer) ou de supprimer chaque jeton.
Désactiver un jeton permet d'empêcher la connexion temporairement jusqu'à sa réactivation, tandis que la suppression
l'empêche définitivement.
### Suppression d'un jeton de connexion
Supprimer un jeton de connexion permet d'empêcher toutes les connexions l'utilisant définitivement. Les jetons supprimés
ne sont pas affichés dans la liste des jetons.
Dans la liste des jetons de connexion (Administration > Ordinateurs), appuyer sur le bouton «Supprimer» de la ligne du
jeton à supprimer.
Une boite de confirmation s'affichera. Après confirmation, le jeton sera supprimé* du système et ne sera plus utilisable
immédiatement.
### Désactivation d'un jeton de connexion
Désactiver un jeton de connexion permet d'empêcher toutes les connexions l'utilisant temporairement. Les jetons
désactivés sont affichés dans la liste des jetons.
Dans la liste des jetons de connexion (Administration > Ordinateurs), appuyer sur le bouton «Désactiver» de la ligne du
jeton à désactiver. Le jeton sera immédiatement désactivé et ne sera plus utilisable.
\* Le jeton sera toujours stocké dans la base de données, mais sera marqué comme étant supprimé. Cela permet d'assurer
qu'aucun
futur jeton ne soit créé en utilisant un identifiant supprimé, ce qui serait une faille de sécurité. Ces jetons ne sont
pas accessibles depuis l'interface utilisateur.
### Assignation d'un jeton de connexion
Par souci de sécurité, les jetons de connexion peuvent seulement être assignés lors de leur création.
Les jetons existants peuvent seulement être désactivés ou supprimés.
Ainsi, si un des jetons est compromis, il suffit de le supprimer pour empêcher toutes les connexions avec celui-ci,
et seulement un des navigateurs peut être impacté.
## Stockage et format des jetons de connexion
Les jetons de connexion utilisent le format [JWT](https://jwt.io/) signé (JWS). Ce format permet de garantir l'intégrité
du jeton,
c'est-à-dire que l'utilisation d'un jeton créé ou modifié par un tiers parti provoquera l'échec de la connexion.
Ces jetons sont stockés dans les cookies du navigateur, sous le nom ```Group-Token```. Ainsi, ils ne seront pas
supprimés à la fermeture du
navigateur ou de l'ordinateur.

View File

@ -7,7 +7,7 @@ events {
http {
server {
listen 80;
root /usr/bin;
root /usr/bin/cre;
include /etc/nginx/mime.types;
}
}