make compliant with mistune update
This commit is contained in:
parent
fc61c0b9c7
commit
ae83dbaf80
30 changed files with 74 additions and 94 deletions
22
makesite.py
22
makesite.py
|
@ -40,11 +40,11 @@ import unicodedata
|
|||
from email import utils
|
||||
from pathlib import Path
|
||||
|
||||
import mistune
|
||||
import requests
|
||||
import mistune
|
||||
from pygments import highlight
|
||||
from pygments.formatters import html
|
||||
from pygments.lexers import get_lexer_by_name
|
||||
from pygments.formatters import html
|
||||
|
||||
# set user locale
|
||||
locale.setlocale(locale.LC_ALL, "")
|
||||
|
@ -52,19 +52,15 @@ locale.setlocale(locale.LC_ALL, "")
|
|||
|
||||
# initialize markdown
|
||||
|
||||
|
||||
class HighlightRenderer(mistune.Renderer):
|
||||
options = {"escape": False, "hard_wrap": True}
|
||||
|
||||
class HighlightRenderer(mistune.HTMLRenderer):
|
||||
def block_code(self, code, lang=None):
|
||||
if not lang:
|
||||
return "\n<pre><code>%s</code></pre>\n" % mistune.escape(code)
|
||||
lexer = get_lexer_by_name(lang, stripall=True)
|
||||
formatter = html.HtmlFormatter()
|
||||
return highlight(code, lexer, formatter)
|
||||
if lang:
|
||||
lexer = get_lexer_by_name(lang, stripall=True)
|
||||
formatter = html.HtmlFormatter()
|
||||
return highlight(code, lexer, formatter)
|
||||
return '<pre><code>' + mistune.escape(code) + '</code></pre>'
|
||||
|
||||
|
||||
markdown = mistune.Markdown(renderer=HighlightRenderer())
|
||||
markdown = mistune.create_markdown(renderer=HighlightRenderer())
|
||||
|
||||
|
||||
def fread(filename):
|
||||
|
|
32
poetry.lock
generated
32
poetry.lock
generated
|
@ -27,7 +27,7 @@ python-versions = ">=3.5"
|
|||
|
||||
[[package]]
|
||||
name = "mistune"
|
||||
version = "2.0.3"
|
||||
version = "2.0.4"
|
||||
description = "A sane Markdown parser with useful plugins and renderers"
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -61,7 +61,7 @@ use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"]
|
|||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "1.26.10"
|
||||
version = "1.26.11"
|
||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -78,31 +78,19 @@ python-versions = "^3.8"
|
|||
content-hash = "16357752f231675078b90f65812ed06814c93bbf28d5e2066a912c83e2566fb1"
|
||||
|
||||
[metadata.files]
|
||||
certifi = [
|
||||
{file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"},
|
||||
{file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"},
|
||||
]
|
||||
charset-normalizer = [
|
||||
{file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"},
|
||||
{file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"},
|
||||
]
|
||||
certifi = []
|
||||
charset-normalizer = []
|
||||
idna = [
|
||||
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
|
||||
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
|
||||
]
|
||||
mistune = [
|
||||
{file = "mistune-2.0.3-py2.py3-none-any.whl", hash = "sha256:e3964140c0775535fba50bd616fe180920044a64bc21850253267b07bff89924"},
|
||||
{file = "mistune-2.0.3.tar.gz", hash = "sha256:d7605b46b6156b53b7d52a465202b29a6f00f4ea4130ad5d25e9d5547d6b7e50"},
|
||||
]
|
||||
pygments = [
|
||||
{file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
|
||||
{file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
|
||||
]
|
||||
requests = [
|
||||
{file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
|
||||
{file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
|
||||
{file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"},
|
||||
{file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"},
|
||||
]
|
||||
pygments = []
|
||||
requests = []
|
||||
urllib3 = [
|
||||
{file = "urllib3-1.26.10-py2.py3-none-any.whl", hash = "sha256:8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec"},
|
||||
{file = "urllib3-1.26.10.tar.gz", hash = "sha256:879ba4d1e89654d9769ce13121e0f94310ea32e8d2f8cf587b77c08bbcdb30d6"},
|
||||
{file = "urllib3-1.26.11-py2.py3-none-any.whl", hash = "sha256:c33ccba33c819596124764c23a97d25f32b28433ba0dedeb77d873a38722c9bc"},
|
||||
{file = "urllib3-1.26.11.tar.gz", hash = "sha256:ea6e8fb210b19d950fab93b60c9009226c63a28808bc8386e05301e25883ac0a"},
|
||||
]
|
||||
|
|
|
@ -10,7 +10,7 @@ des versions précédentes ou d'autres distrib les bonnes étapes pour Karmic.
|
|||
D'abord il faut installer le paquet usb-modeswitch fourni dans les dépôts
|
||||
standards (version actuelle 1.0.2-1) :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
sudo apt-get install usb-modeswitch
|
||||
```
|
||||
|
||||
|
@ -19,7 +19,7 @@ périphérique de stockage et non pas comme un périphérique de communication.
|
|||
C'est là que la usb-modeswitch intervient... Cette commande doit être
|
||||
lancée à chaque branchement de la clef :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
sudo usb_modeswitch --default-vendor 0x19d2 --default-product 0x2000
|
||||
--target-vendor 0X19d2 --target-product 0x0052 -s 8 --message-endpoint 0x01
|
||||
--message-content 55534243123456782000000080000c85010101180101010101000000000000
|
||||
|
|
|
@ -20,7 +20,7 @@ fr.org/ffmpeg) pour ffmpeg apporte l'essentiel de la solution à part une
|
|||
coquille sur un paramètre et le nom des librairies h264 qu'il faut adapter. La
|
||||
commande ultime est donc :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
ffmpeg -i [input_file] -r 29.97 -vcodec libx264 -s 640x480 -aspect 16:9 -flags +loop -cmp
|
||||
+chroma -deblockalpha 0 -deblockbeta 0 -b 768k -maxrate 1500k -bufsize 4M -bt 256k
|
||||
-refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7
|
||||
|
|
|
@ -8,7 +8,7 @@ rajouter le mode dynamiquement. J'ai privilégié la seconde option. La commande
|
|||
gtf permet de calculer les bons paramètres en fonction d'une résolution et
|
||||
d'un taux de rafraîchissement :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
$ gtf 1280 800 60
|
||||
# 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz
|
||||
Modeline "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync
|
||||
|
@ -17,7 +17,7 @@ Modeline "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSy
|
|||
Le résultat peut être passé à la commande xrandr pour ajouter le mode
|
||||
dynamiquement. Voici le script complet à exécuter au démarrage :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
xrandr --newmode "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync
|
||||
xrandr --addmode LVDS1 "1280x800_60.00"
|
||||
xrandr --output LVDS1 --mode "1280x800_60.00"
|
||||
|
|
|
@ -20,13 +20,13 @@ CI](http://jenkins-ci.org/) dans le conteneur de Servlet
|
|||
[Tomcat](http://tomcat.apache.org/) sous Ubuntu Server 10.4. D'abord on installe
|
||||
Tomcat 6 avec le système de paquets :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
sudo apt-get install tomcat6
|
||||
```
|
||||
|
||||
Ensuite on installe manuellement le WAR de Jenkins CI :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# move to tomcat webapps dir
|
||||
cd /var/lib/tomcat6/webapps
|
||||
sudo wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
|
||||
|
@ -35,7 +35,7 @@ sudo wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
|
|||
Si Tomcat était lancé, Jenkins va être déployé et disponible en quelques
|
||||
secondes. Sinon démarrez Tomcat :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
sudo /etc/init.d/tomcat6 start
|
||||
```
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ qui appelle le script PERL de teebeenator et qui sauve les donnée dans un
|
|||
fichier texte. Cette collecte est réalisée toutes les 5 minutes grâce à
|
||||
CRON.
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
perl livebox.pl --user=admin --pass=<VotreMotDePasse>
|
||||
-page=infosys_main -v 2>/dev/null | html2text >/adsl_stats.txt
|
||||
```
|
||||
|
@ -68,7 +68,7 @@ unités, le libellé de chaque variable graphée
|
|||
Voici shell script du plugin adsl_download qui collecte la valeur de la bande
|
||||
passante descendante :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
if [ $# = 1 ]; then
|
||||
echo "graph_title Bandwidth - Download"
|
||||
echo "graph_category ADSL"
|
||||
|
|
|
@ -21,7 +21,7 @@ le développement d'un logiciel écrit en Java qui utilise le système de build
|
|||
[Apache Maven](http://fr.wikipedia.org/wiki/Apache_Maven) pour construire le
|
||||
projet. D'abord il faut installer Maven
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
$ apt-get install maven2
|
||||
```
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ exécutables pour Fedora
|
|||
|
||||
Voici le source du fichier INSTALL
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
cp tuxboot.pro tuxboot-pro.bak
|
||||
sed -i '/^RESOURCES/d' tuxboot.pro
|
||||
lupdate-qt4 tuxboot.pro
|
||||
|
|
|
@ -16,7 +16,7 @@ télécharger les sources Python. Les manipulations suivantes sont réalisées
|
|||
sur une Debian 6 avec Python, Nginx et OpenSSH installés.
|
||||
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# on installe sous /srv
|
||||
cd /srv
|
||||
wget http://sourceforge.net/projects/sabnzbdplus/files/sabnzbdplus/0.7.6/
|
||||
|
@ -32,7 +32,7 @@ générale et **aussi restreindre l'adresse d'écoute** à l'interface localhost
|
|||
allons mettre en place par la suite. On peut automatiser le démarrage en
|
||||
rajoutant un script sabnzbd sous /etc/init.d tel que celui-ci :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
### BEGIN INIT INFO
|
||||
# Provides: sabnzd
|
||||
# Required-Start: $local_fs $remote_fs
|
||||
|
@ -80,7 +80,7 @@ On active ce script sous Debian avec update-rc.d sabnzbd defaults. Finalement on
|
|||
configure Nginx comme proxy. Je me suis borné à un accès HTTP protégé par
|
||||
une authentification utilisateur / mot de passe mais HTTPS est recommandé.
|
||||
|
||||
``` nginx
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name www.yourserver.yourdomain;
|
||||
|
@ -107,7 +107,7 @@ Nginx. A ce stade SABnzbd fonctionne à moitié :-) En effet SABnzbd ne va pas
|
|||
servir toutes les ressources (HTML / CSS) et il faut les lier statiquement à
|
||||
Nginx.
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# on lie les ressources statiques du thème Plush
|
||||
mkdir -p /var/www/www/sabnzbd
|
||||
ln -s /srv/sabnzbd/interfaces/Plush/templates/static /var/www/www/sabnzbd/static
|
||||
|
|
|
@ -78,7 +78,7 @@ leur fonctionnement en groupe. Pour cela, on doit générer une clef d'authenfic
|
|||
les noeuds du cluster. L'utilitaire **corosync-keygen** permet de générer cette clef à partir d'entrées clavier
|
||||
pseudo-aléatoires qu'il faut ensuite sécuriser et copier sur les autres noeuds.
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# génération de la clef depuis vm-node1
|
||||
corosync-keygen
|
||||
mv authkey /etc/corosync/authkey
|
||||
|
@ -217,7 +217,7 @@ Vous remarquerez qu'on va plus loin que la définition d'une ressource Apache. L
|
|||
Pacemaker d'utiliser la page de statut d'Apache pour décider d'une bascule. Il ne faut donc pas oublier de
|
||||
configurer cette URL dans Apache pour que cela fonctionne :
|
||||
|
||||
``` apache
|
||||
```apache
|
||||
<Location /server-status>
|
||||
SetHandler server-status
|
||||
Order deny,allow
|
||||
|
|
|
@ -31,7 +31,7 @@ avoir une trace des fichiers synchronisés. J'ai dégoté le programme [blat](ht
|
|||
pour l'envoi d'email facile depuis un batch, il y en a sûrement plein d'autres. Voici un
|
||||
script batch assez proche de celui que j'utilise :
|
||||
|
||||
``` bat
|
||||
```bat
|
||||
REM ================================================================
|
||||
REM Synchroniser les changements
|
||||
REM ================================================================
|
||||
|
|
|
@ -54,7 +54,7 @@ L'installation de PEAR sur Debian est galette.
|
|||
Puis, on enregistre le canal Horde sur Pear et on installe les composants
|
||||
nécessaires :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
mkdir -p /var/www/horde
|
||||
cd /var/www/horde
|
||||
pear channel-discover pear.horde.org
|
||||
|
@ -74,7 +74,7 @@ Dans le cas de NginX sur Debian, il faut ajuster les permissions du répertoire.
|
|||
Et il faut créer les fichiers de configuration de chaque application à partir
|
||||
des modèles fournis :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
cd /var/www/horde/config
|
||||
for f in *.dist; do cp $f `basename $f .dist`; done
|
||||
cd /var/www/horde/kronolith/config
|
||||
|
@ -90,7 +90,7 @@ for f in *.dist; do cp $f `basename $f .dist`; done
|
|||
Il reste à configurer NginX. Je force l'utilisation de HTTPS en redirigeant les
|
||||
requêtes HTTP vers la version sécurisée du site.
|
||||
|
||||
``` nginx
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name groupware.exemple.fr;
|
||||
|
|
|
@ -34,7 +34,7 @@ Il faut remplacer *0* par *127.0.0.1* dans le fichier
|
|||
|
||||
Voici la version modifiée :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
QMAILDUID=`id -u qmaild`
|
||||
NOFILESGID=`id -g qmaild`
|
||||
MAXSMTPD=`cat /var/lib/qmail/control/concurrencyincoming`
|
||||
|
|
|
@ -152,7 +152,7 @@ nouveau s'adresser aux sentinelles pour récupérer l'adresse du Redis maître.
|
|||
|
||||
Voici un exemple typique de code en Python :
|
||||
|
||||
``` python
|
||||
```python
|
||||
from redis.sentinel import Sentinel
|
||||
sentinel = Sentinel(
|
||||
[('192.168.0.51', 26379), ('192.168.0.52', 6379)], socket_timeout=0.1)
|
||||
|
|
|
@ -28,7 +28,7 @@ l'arrêt fiable du processus en manipulant son PID.
|
|||
Voici un exemple de script d'init à la sauce Debian pour un programme
|
||||
JAVA :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
### BEGIN INIT INFO
|
||||
# Provides: monprog
|
||||
# Required-Start: $local_fs $remote_fs $network $syslog
|
||||
|
@ -185,7 +185,7 @@ Dans cet exemple, on envoie un signal SIGINT à monprog pour lui demander un arr
|
|||
|
||||
#### Interception d'un signal SIGINT en JAVA
|
||||
|
||||
``` java
|
||||
```java
|
||||
// register a shutdown hook
|
||||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||
@Override
|
||||
|
|
|
@ -17,7 +17,7 @@ En pré-requis, on suppose que Qemu est installé sur le système hôte. On
|
|||
vérifie que le processeur ARM du Raspberry est supporté par Qemu avec la
|
||||
commande suivante :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
$ qemu-system-arm -cpu ?
|
||||
```
|
||||
|
||||
|
@ -34,7 +34,7 @@ La modification d'un fichier est nécessaire pour que la distribution
|
|||
fonctionne avec Qemu. On effectue donc un premier démarrage particulier avec
|
||||
BASH en processus INIT pour la réaliser.
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2014-06-20-wheezy-raspbian.img
|
||||
```
|
||||
|
||||
|
@ -66,7 +66,7 @@ D'abord on élargit le disque avec l'utilitaire qemu-resize.
|
|||
|
||||
Ensuite on démarre la Raspbian avec Qemu
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2014-06-20-wheezy-raspbian.img
|
||||
```
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ codes](https://wiki.archlinux.org/index.php/Color_Bash_Prompt). Il ne faut pas
|
|||
oublier de réinitialiser la couleur en fin de prompt pour que ça ne coule pas
|
||||
sur le reste de la ligne avec un reset. je suis adepte des prompts concis :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
White='\e[0;37m' # White
|
||||
Red='\e[0;31m' # Red
|
||||
Reset=$(tput sgr0)
|
||||
|
@ -55,7 +55,7 @@ est un parfait exemple facile à configurer.
|
|||
les alias sont des substitutions de commandes. On peut les utiliser pour éviter
|
||||
de mémoriser des paramètres compliquées en définissant de nouvelles commandes :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
alias la='ll -A' # 'la' : voir les fichiers cachés
|
||||
alias lk='ls -lSr' # 'lk' : trier par taille
|
||||
```
|
||||
|
@ -63,7 +63,7 @@ alias lk='ls -lSr' # 'lk' : trier par taille
|
|||
Ou bien on peut redéfinir le comportement d'une commande en créant un alias du
|
||||
même nom forçant des paramètres :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# forcer une demande de confirmation pour éviter les boulettes
|
||||
alias rm='rm --interactive --verbose'
|
||||
alias mv='mv --interactive --verbose'
|
||||
|
@ -77,7 +77,7 @@ exécutables accessibles dans le PATH (/usr/local/bin au hasard).
|
|||
|
||||
Voici les deux fonctions que j'utilise assez régulièrement :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
function bak() { cp "$1" "$1_`date +%Y-%m-%d_%H-%M-%S`" ; }
|
||||
|
||||
function extract() # Handy Extract Program
|
||||
|
@ -111,7 +111,7 @@ bashrc testent si dircolors est présent et l'utilise en rajoutant --color à
|
|||
ls par le biais d'un... alias (bravo à ceux qui n'ont pas lâché). Généralement,
|
||||
on a une section de ce genre dans notre .bashrc :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# enable color support of ls
|
||||
if [ -x /usr/bin/dircolors ]; then
|
||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||
|
@ -204,7 +204,7 @@ pour l'affichage des répertoire mais en style non gras, je mets par contre en
|
|||
gras les répertoire ouverts à tous les vents (avec les droits d'écriture sur le
|
||||
groupe *other*), et en rouge non gras les fichiers exécutables.
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
export LS_COLORS="di=00;34:ow=01;34:ex=00;31"
|
||||
```
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Python dans un *virtualenv* de préférence, avec le gestionnaire de paquets
|
|||
|
||||
Voici un exemple d'envoi d'e-mail en Python :
|
||||
|
||||
``` python
|
||||
```python
|
||||
import requests
|
||||
headers = {'Content-Type': 'application/json; charset=utf-8'}
|
||||
msg = {
|
||||
|
@ -38,7 +38,7 @@ else:
|
|||
|
||||
Et voici le même exemple en ligne de commande avec CURL :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
curl -X POST -H "Content-Type: application/json; charset=utf-8"
|
||||
-d '{"to":"bill@phoenix.com", "subject":"Got it",
|
||||
"content":"See you soon!\n\n-- John"}'
|
||||
|
|
|
@ -93,7 +93,7 @@ déroulée.
|
|||
|
||||
Voici donc les grandes lignes de la partie **récupération des données** :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# Les fichiers de configuration de NginX
|
||||
cp -r /etc/nginx/* $TARGET_DIR/nginx/.
|
||||
|
||||
|
@ -119,7 +119,7 @@ synchronisée par Owncloud car on l'a copié en douce. Il faut forcer Owncloud
|
|||
rescanner son répertoire avec la commande suivante exécutée en tant
|
||||
qu'utilisateur *www-data*:
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
su -c "/usr/bin/php /var/www/owncloud/console.php files:scan all" \
|
||||
-s /bin/sh www-data
|
||||
```
|
||||
|
|
|
@ -157,7 +157,7 @@ le fichier */etc/fail2ban/action.d/sendmail-cron.conf* complet :
|
|||
|
||||
Dans mon cas, la tâche CRON est journalière :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# fail2ban report
|
||||
@daily touch /var/run/fail2ban/mail.flag
|
||||
```
|
||||
|
|
|
@ -40,7 +40,7 @@ ajoute la directive *display-setup-script* dans la section SeatDefaults :
|
|||
|
||||
et voici le script **lightdm-monitor.sh** :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
if (xrandr | grep "VGA1 disconnected"); then
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
|
||||
--rotate normal --output DP1 --off --output VGA1 --off
|
||||
|
@ -63,7 +63,7 @@ programme en ligne de commande de configurationde XFCE) adéquate.
|
|||
|
||||
Finalement, cela donne le script **xfce-monitor.sh** au démarrage de la session:
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
sleep 3
|
||||
if (xrandr | grep "VGA1 disconnected"); then
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
|
||||
|
|
|
@ -110,7 +110,7 @@ jour et envoie un e-mail par évènement avec le fichier ICS en pièce jointe.
|
|||
L'envoi est réalisé par l'utilitaire **mpack**. Le résultat final espéré pour
|
||||
notre exemple est ce script :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
#
|
||||
STARTDATE="`date -d '2015-09-14 10:30:00-000' '+%a %e %b %R'`"
|
||||
SUMMARY="Déjeuner avec M."
|
||||
|
@ -167,7 +167,7 @@ régulière.
|
|||
|
||||
Voci le script awk complet :
|
||||
|
||||
``` awk
|
||||
```awk
|
||||
BEGIN {
|
||||
FS="\n"
|
||||
OFS=""
|
||||
|
|
|
@ -131,7 +131,7 @@ s'inspirant de [cette
|
|||
discussion](http://askubuntu.com/questions/360466/ubuntu-touch-officially-launched-version-how-to-sync-contacts)
|
||||
sur AskUbuntu. D'abord on configure syncevolution :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
# les valeurs username, password et syncurl doivent être adaptées
|
||||
syncevolution --keyring=no --configure --template webdav username=yax password=??? syncurl="mycloud.madyanne.fr" target-config@owncloud
|
||||
syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@owncloud username= password= peerIsClient=1 owncloud
|
||||
|
@ -163,7 +163,7 @@ valeurs dans le shell script qu'on va lancer en CRON, merci
|
|||
[Alexandre](http://askubuntu.com/questions/611761/syncevolution-in-cronjob-to-sync-the-ubuntu-phone-via-caldav-arddav).
|
||||
Donc finalement c'est ce script qu'on va mettre sous CRON :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
export DISPLAY=:0.0
|
||||
export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35)
|
||||
syncevolution owncloud contacts
|
||||
|
|
|
@ -64,7 +64,7 @@ port 80 alors qu'on l'attaque sur le port 8080. Un moyen de contourner ce
|
|||
problème si l'application n'est pas configurable, consiste à installer un NginX
|
||||
sur la machine hôte pour faire office de proxy.
|
||||
|
||||
``` nginx
|
||||
```nginx
|
||||
# Proxy
|
||||
|
||||
upstream vbox-vm {
|
||||
|
|
|
@ -71,7 +71,7 @@ Golang pour gérer la concurrence de traitement.
|
|||
|
||||
Pour les fans de code, voici celui du serveur HTTP avec cache :
|
||||
|
||||
``` go
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
|
|
|
@ -73,7 +73,7 @@ jette dans le puits, où il resteront... jusqu'au prochain redémarrage du serve
|
|||
|
||||
Voici le script en Korn Shell :
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
#!/bin/ksh
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
|
|
|
@ -57,8 +57,7 @@ page.
|
|||
Voici le *template* Hugo des commentaires qui utilise la fonction **getJSON** pour récupérer les commentaires
|
||||
de la page en cours :
|
||||
|
||||
``` html
|
||||
{% raw %}
|
||||
```html
|
||||
<div id="stacosys-comments">
|
||||
{{ $restParam := (printf "/comments?token=%v&url=%v" .Site.Params.widgets.stacosys_token .URL) }}
|
||||
{{ $resp := getJSON .Site.Params.widgets.stacosys_url $restParam }}
|
||||
|
@ -79,14 +78,12 @@ de la page en cours :
|
|||
{{ .content | markdownify }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
{% endraw %}
|
||||
</div>
|
||||
```
|
||||
|
||||
et un exemple de données renvoyée par Stacosys :
|
||||
|
||||
``` json
|
||||
{% raw %}
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
|
@ -103,7 +100,6 @@ et un exemple de données renvoyée par Stacosys :
|
|||
}
|
||||
]
|
||||
}
|
||||
{% endraw %}
|
||||
```
|
||||
|
||||
Il reste une interaction entre le serveur HTTP et Stacosys pour poster des
|
||||
|
|
|
@ -99,7 +99,7 @@ A ce niveau, on peut essayer de faire communiquer deux applications à travers R
|
|||
|
||||
Code du producteur :
|
||||
|
||||
``` python
|
||||
```python
|
||||
#!/usr/bin/env python
|
||||
import pika
|
||||
import sys
|
||||
|
@ -122,7 +122,7 @@ connection.close()
|
|||
|
||||
Code du consommateur :
|
||||
|
||||
``` python
|
||||
```python
|
||||
#!/usr/bin/env python
|
||||
import pika
|
||||
import sys
|
||||
|
|
|
@ -20,7 +20,7 @@ A ce stade, vous pensez : *"c'est bizarre il ne nous a pas encore bassiné avec
|
|||
|
||||
La mise en prod a pris 15 minutes chrono : écriture d'un docker-compose en utilisant [mon image pour les applications Python](https://hub.docker.com/r/kianby/pythonapp/) et déploiement sur le serveur de containers.
|
||||
|
||||
``` docker
|
||||
```docker
|
||||
popforward:
|
||||
image: kianby/pythonapp:latest
|
||||
environment:
|
||||
|
|
Loading…
Add table
Reference in a new issue