Compare commits

22 Commits

Author SHA1 Message Date
nom
08667a15fb n'arrête jamais le worker de pollinaris, dangereux mais efficace (à creuser) 2026-01-24 06:47:19 +01:00
da1ec7b5f4 modif pour ajouter mastodon 2026-01-23 11:03:41 +01:00
48f4589169 modif des tmpl et update pour mastodon 2026-01-23 10:54:04 +01:00
nom
16a71f6a98 corrige betakadate en n'oubliant pas la var APP_BASE_URL !!! 2026-01-22 08:53:41 +01:00
nom
666977785c upgrade traefik 3.6.7 (pour autoriser, à nouveau, par défaut certains Encoded Characters) 2026-01-21 09:30:34 +01:00
nom
61532b7964 vaultwarden présente désormais son hostname à postfix qui accepte à nouveau ses mails 2026-01-21 09:25:12 +01:00
d1011a8e95 cosmétique 2026-01-20 17:24:22 +01:00
3f9e643984 modif des notifications en cas d'erreurs par mail et sur mattermost 2026-01-20 17:02:53 +01:00
c1696bbc6b cosmétique minime 2026-01-19 10:48:50 +01:00
7e54950a14 ajour KAZ_TEMP_DIR 2026-01-19 10:48:50 +01:00
nom
8aeb1d785b upgrade MM en 11.2 2026-01-13 09:51:11 +01:00
d62e6627b6 maj peertube en 8.0.1 2026-01-11 09:47:19 +01:00
66941fb10c paheko smtp config 2026-01-09 12:09:41 +01:00
f4b1731246 paheko cron, le retour 2026-01-07 14:11:13 +01:00
b0f57d04c3 paheko cron 2026-01-06 18:24:47 +01:00
nom
19b9b916c2 oops, besoin d'enlever les commentaires 2026-01-06 18:05:22 +01:00
nom
398388a9b2 simplie le docker-compose (utilisation de compose-override.yml) 2026-01-06 17:58:53 +01:00
4feff8984c paheko smtp helo 2026-01-06 17:42:52 +01:00
bc5ec41980 -php8.4 2026-01-05 18:08:50 +01:00
2439494f98 paheko 1.3.18 2026-01-05 16:20:30 +01:00
6d0f15c74b 1.3.18-PHP8.4 et Facturation 0.16 2026-01-05 16:13:57 +01:00
955abb1108 paheko 1.3.18 php8.4 et factu 0.16
paheko 1.3.18 php8.4 et factu 0.16
2026-01-05 16:08:56 +01:00
18 changed files with 189 additions and 139 deletions

View File

@@ -33,6 +33,7 @@ setKazVars () {
export KAZ_CONF_PROXY_DIR="${KAZ_CONF_DIR}/proxy" export KAZ_CONF_PROXY_DIR="${KAZ_CONF_DIR}/proxy"
export KAZ_COMP_DIR="${KAZ_ROOT}/dockers" export KAZ_COMP_DIR="${KAZ_ROOT}/dockers"
export KAZ_STATE_DIR="${KAZ_ROOT}/state" export KAZ_STATE_DIR="${KAZ_ROOT}/state"
export KAZ_TEMP_DIR="${KAZ_ROOT}/tmp"
export KAZ_GIT_DIR="${KAZ_ROOT}/git" export KAZ_GIT_DIR="${KAZ_ROOT}/git"
export KAZ_DNLD_DIR="${KAZ_ROOT}/download" export KAZ_DNLD_DIR="${KAZ_ROOT}/download"
@@ -379,4 +380,3 @@ get_Serveurs_Kaz () {
echo ${liste} echo ${liste}
} }
######################################## ########################################

View File

@@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
# Ki : did pour créer le fichier createusers.txt
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) # kan : le 20 janvier 2026
#KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
KAZ_ROOT=/kaz
. $KAZ_ROOT/bin/.commonFunctions.sh . $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars setKazVars
. $DOCKERS_ENV . $DOCKERS_ENV
. $KAZ_KEY_DIR/env-paheko . $KAZ_KEY_DIR/env-paheko
. $KAZ_KEY_DIR/env-kaz . $KAZ_KEY_DIR/env-kaz
@@ -18,12 +18,11 @@ RACINE=$(echo $PRG | awk '{print $1}')
TFILE_INT_PAHEKO_ACTION=$(mktemp /tmp/XXXXXXXX_INT_PAHEKO_ACTION.json) TFILE_INT_PAHEKO_ACTION=$(mktemp /tmp/XXXXXXXX_INT_PAHEKO_ACTION.json)
TFILE_INT_PAHEKO_IDFILE=$(mktemp /tmp/XXXXXXXX_TFILE_INT_PAHEKO_IDFILE.json) TFILE_INT_PAHEKO_IDFILE=$(mktemp /tmp/XXXXXXXX_TFILE_INT_PAHEKO_IDFILE.json)
FILE_CREATEUSER="$KAZ_ROOT/tmp/createUser.txt" FILE_CREATEUSER="$KAZ_ROOT/tmp/createUser.txt"
FILE_NOTIFICATION="${KAZ_TEMP_DIR}/${PRG}.txt"
sep=' ' sep=' '
ERRMSG=""
#trap "rm -f ${TFILE_INT_PAHEKO_IDFILE} ${TFILE_INT_PAHEKO_ACTION} " 0 1 2 3 15
############################################ Fonctions ####################################################### ############################################ Fonctions #######################################################
TEXTE=" TEXTE="
# -- fichier de création des comptes KAZ # -- fichier de création des comptes KAZ
# -- # --
@@ -52,129 +51,144 @@ TEXTE="
# exemple pour un compte asso de l'orga gogol avec le service dédié NC uniquement + une équipe dans l'agora # exemple pour un compte asso de l'orga gogol avec le service dédié NC uniquement + une équipe dans l'agora
# dupont ; jean-louis; jean-louis.dupont@kaz.bzh ; gregomondo@kaz.bzh; gogol ; O; O; N; N; N; N;N;;gogol_team; 10 # dupont ; jean-louis; jean-louis.dupont@kaz.bzh ; gregomondo@kaz.bzh; gogol ; O; O; N; N; N; N;N;;gogol_team; 10
" "
PostMattermost() {
PostM=$1
CHANNEL="kaz:Creation-Comptes"
. $KAZ_KEY_DIR/env-mattermostAdmin
docker exec -ti ${mattermostServName} bin/mmctl --suppress-warnings auth login $httpProto://$URL_AGORA --name local-server --username $mattermost_user --password $mattermost_pass >/dev/null 2>&1
docker exec -ti mattermostServ bin/mmctl post create ${CHANNEL} --message ${PostM} >/dev/null 2>&1
}
ExpMail() { ExpMail() {
MAIL_DEST=$1 MAIL_DEST=$1
MAIL_SUJET=$2 MAIL_SUJET=$2
MAIL_TEXTE=$3 MAIL_TEXTE=$3
printf "Subject:${MAIL_SUJET}\n${MAIL_TEXTE}" | msmtp ${MAIL_DEST} echo "$MAIL_TEXTE" | mail -s ${MAIL_SUJET} ${MAIL_DEST}
} }
Int_paheko_Action() { Int_paheko_Action() {
# $1 est une action; # $1 est une action;
ACTION=$1 ACTION=$1
OPTION=$2 OPTION=$2
# on envoie la requête sur le serveur paheko avec la clause à créer # on envoie la requête sur le serveur paheko avec la clause à créer
curl -s ${URL_PAHEKO}/api/sql -d "SELECT * from users where action_auto='${ACTION}';" >>${TFILE_INT_PAHEKO_ACTION} curl -s ${URL_PAHEKO}/api/sql -d "SELECT * from users where action_auto='${ACTION}';" >>${TFILE_INT_PAHEKO_ACTION}
[ ! -z ${TFILE_INT_PAHEKO_ACTION} ] || { echo "probleme de fichier ${TFILE_INT_PAHEKO_ACTION}" ; exit 1;} [ ! -z ${TFILE_INT_PAHEKO_ACTION} ] || { echo "probleme de fichier ${TFILE_INT_PAHEKO_ACTION}" ; exit 1;}
REP_ID=$(jq -c '.results[].id ' ${TFILE_INT_PAHEKO_ACTION} 2>/dev/null) REP_ID=$(jq -c '.results[].id ' ${TFILE_INT_PAHEKO_ACTION} 2>/dev/null)
if [ ! -z "${REP_ID}" ] if [ ! -z "${REP_ID}" ]
then
[ "$OPTION" = "silence" ] || echo -e "${RED}Nombre de compte ${ACTION} ${NC}= ${GREEN} $(echo ${REP_ID} | wc -w) ${NC}"
if [ -f "$FILE_CREATEUSER" ]
then
mv $FILE_CREATEUSER $FILE_CREATEUSER.$(date +%d-%m-%Y-%H:%M:%S)
fi
echo "# -------- Fichier généré le $(date +%d-%m-%Y-%H:%M:%S) ----------">${FILE_CREATEUSER}
echo "${TEXTE}" >>${FILE_CREATEUSER}
for VAL_ID in ${REP_ID}
do
jq -c --argjson val "${VAL_ID}" '.results[] | select (.id == $val)' ${TFILE_INT_PAHEKO_ACTION} > ${TFILE_INT_PAHEKO_IDFILE}
for VAL_GAR in id_category action_auto nom email email_secours quota_disque admin_orga nom_orga responsable_organisation responsable_email agora cloud wordpress garradin docuwiki id_service
do
eval $VAL_GAR=$(jq .$VAL_GAR ${TFILE_INT_PAHEKO_IDFILE})
done
################################
# test du mail valide en $domain
echo ${email} | grep -i "${domain}" || { echo "Erreur : le mail ${email} n'est pas en ${domain}"; exit ;}
################################
#comme tout va bien on continue
#on compte le nom de champs dans la zone nom pour gérer les noms et prénoms composés
# si il y a 3 champs, on associe les 2 premieres valeurs avec un - et on laisse le 3ème identique
# si il y a 4 champs on associe les 1 et le 2 avec un tiret et le 3 et 4 avec un tiret
# on met les champs nom_ok et prenom_ok à blanc
nom_ok=""
prenom_ok=""
# on regarde si le nom de l' orga est renseigné ou si le nom de l' orga est null et l' activité de membre est 7 (membre rattaché)
# si c' est le cas alors le nom est le nom de l' orga et le prénom est forcé à la valeur Organisation
if [[ "$nom_orga" = null ]] || [[ "$nom_orga" != null && "$id_service" = "7" ]]
then
[ "$OPTION" = "silence" ] || echo -e "${NC}Abonné ${GREEN}${nom}${NC}"
#si lactivité est membre rattaché on affiche a quelle orga il est rattaché
if [ "$id_service" = "7" ] && [ "$OPTION" != "silence" ] && [ "$nom_orga" != null ]
then then
echo -e "${NC}Orga Rattachée : ${GREEN}${nom_orga}${NC}" [ "$OPTION" = "silence" ] || echo -e "${RED}Nombre de compte ${ACTION} ${NC}= ${GREEN} $(echo ${REP_ID} | wc -w) ${NC}"
fi if [ -f "$FILE_CREATEUSER" ]
COMPTE_NOM=$(echo $nom | awk -F' ' '{for (i=1; i != NF; i++); print i;}') then
case "${COMPTE_NOM}" in mv $FILE_CREATEUSER $FILE_CREATEUSER.$(date +%d-%m-%Y-%H:%M:%S)
0|1)
echo "Il faut corriger le champ nom (il manque un nom ou prénom) de paheko"
echo "je quitte et supprime le fichier ${FILE_CREATEUSER}"
rm -f $FILE_CREATEUSER
exit 2
;;
2)
nom_ok=$(echo $nom | awk -F' ' '{print $1}')
prenom_ok=$(echo $nom | awk -F' ' '{print $2}')
;;
*)
nom_ok=
prenom_ok=
for i in ${nom}; do grep -q '^[A-Z]*$' <<<"${i}" && nom_ok="${nom_ok}${sep}${i}" || prenom_ok="${prenom_ok}${sep}${i}"; done
nom_ok="${nom_ok#${sep}}"
prenom_ok="${prenom_ok#${sep}}"
if [ -z "${nom_ok}" ] || [ -z "${prenom_ok}" ]; then
ERRMSG="Erreur : Il faut corriger le champ nom qui contient plus de 2 infos dans paheko"
[ "${IP_MAIL}" = "true" ] && ExpMail ${IP_MAILDEST} "Erreur dans la fiche paheko" "${ERRMSG}" || echo ${ERRMSG}
rm -f $FILE_CREATEUSER
exit
fi fi
esac echo "# -------- Fichier généré le $(date +%d-%m-%Y-%H:%M:%S) ----------">${FILE_CREATEUSER}
# comme l' orga est à null nom orga est a vide, pas d' admin orga, on met dans l' agora générale echo "${TEXTE}" >>${FILE_CREATEUSER}
# pas d' équipe agora et de groupe nextcloud spécifique for VAL_ID in ${REP_ID}
do
nom_orga=" " jq -c --argjson val "${VAL_ID}" '.results[] | select (.id == $val)' ${TFILE_INT_PAHEKO_ACTION} > ${TFILE_INT_PAHEKO_IDFILE}
admin_orga="N" for VAL_GAR in id_category action_auto nom email email_secours quota_disque admin_orga nom_orga responsable_organisation responsable_email agora cloud wordpress garradin docuwiki id_service
nc_base="O" do
equipe_agora=" " eval $VAL_GAR=$(jq .$VAL_GAR ${TFILE_INT_PAHEKO_IDFILE})
groupe_nc_base=" " done
else ################################
# L' orga est renseigné dans paheko donc les nom et prenoms sont forcé a nom_orga et Organisation # test du mail valide en $domain : si oui on remplie la variable ERRMSG et on créé le fichier de notification"
# un équipe agora portera le nom de l' orga, le compte ne sera pas créé dans le nextcloud général echo ${email} | grep -i "${domain}" >/dev/null || { ERRMSG="- Le mail ${email} n'est pas en ${domain}";touch ${FILE_NOTIFICATION} 2>/dev/null;}
# et le compte est admin de son orga ################################
nom_orga=$(echo $nom_orga | tr [:upper:] [:lower:]) #on compte le nom de champs dans la zone nom pour gérer les noms et prénoms composés
[ "$OPTION" = "silence" ] || echo -e "${NC}Orga : ${GREEN}${nom_orga}${NC}" # si il y a 3 champs, on associe les 2 premieres valeurs avec un - et on laisse le 3ème identique
nom_ok=$nom_orga # si il y a 4 champs on associe les 1 et le 2 avec un tiret et le 3 et 4 avec un tiret
# test des caractères autorisés dans le nom d' orga: lettres, chiffres et/ou le tiret # on met les champs nom_ok et prenom_ok à blanc
if ! [[ "${nom_ok}" =~ ^[[:alnum:]-]+$ ]]; then nom_ok=""
ERRMSG="Erreur : l' orga doit être avec des lettres et/ou des chiffres. Le séparateur doit être le tiret" prenom_ok=""
[ "${IP_MAIL}" = "true" ] && ExpMail ${IP_MAILDEST} "Erreur dans la fiche Paheko" "${ERRMSG}" || echo ${ERRMSG} # on regarde si le nom de l' orga est renseigné ou si le nom de l' orga est null et l' activité de membre est 7 (membre rattaché)
rm -f $FILE_CREATEUSER # si c' est le cas alors le nom est le nom de l' orga et le prénom est forcé à la valeur Organisation
exit 2 if [[ "$nom_orga" = null ]] || [[ "$nom_orga" != null && "$id_service" = "7" ]]
fi then
prenom_ok=organisation [ "$OPTION" = "silence" ] || echo -e "${NC}Abonné ${GREEN}${nom}${NC}"
equipe_agora=$nom_orga COMPTE_NOM=$(echo $nom | awk -F' ' '{for (i=1; i != NF; i++); print i;}')
groupe_nc_base=" " case "${COMPTE_NOM}" in
nc_base="N" 0|1)
admin_orga="O" ERRMSG="${ERRMSG} - Il faut corriger le champ nom (il manque un nom ou prénom)"
fi ;;
#On met le mail et le mail de secours en minuscules 2)
email=$(echo $email | tr [:upper:] [:lower:]) nom_ok=$(echo $nom | awk -F' ' '{print $1}')
email_secours=$(echo $email_secours | tr [:upper:] [:lower:]) prenom_ok=$(echo $nom | awk -F' ' '{print $2}')
# Pour le reste on renomme les null en N ( non ) et les valeurs 1 en O ( Oui) ;;
cloud=$(echo $cloud | sed -e 's/0/N/g' | sed -e 's/1/O/g') *)
paheko=$(echo $garradin | sed -e 's/0/N/g' | sed -e 's/1/O/g') nom_ok=
wordpress=$(echo $wordpress | sed -e 's/0/N/g' | sed -e 's/1/O/g') prenom_ok=
agora=$(echo $agora | sed -e 's/0/N/g' | sed -e 's/1/O/g') for i in ${nom}; do grep -q '^[A-Z]*$' <<<"${i}" && nom_ok="${nom_ok}${sep}${i}" || prenom_ok="${prenom_ok}${sep}${i}"; done
docuwiki=$(echo $docuwiki | sed -e 's/0/N/g' | sed -e 's/1/O/g') nom_ok="${nom_ok#${sep}}"
# et enfin on écrit dans le fichier prenom_ok="${prenom_ok#${sep}}"
echo "$nom_ok;$prenom_ok;$email;$email_secours;$nom_orga;$admin_orga;$cloud;$paheko;$wordpress;$agora;$docuwiki;$nc_base;$groupe_nc_base;$equipe_agora;$quota_disque">>${FILE_CREATEUSER} if [ -z "${nom_ok}" ] || [ -z "${prenom_ok}" ]
done then
else ERRMSG="${ERRMSG} - Il faut corriger le champ nom qui contient plus de 2 infos"
[ "$OPTION" = "silence" ] || echo "Rien à créer" fi
exit 2 esac
fi # comme l' orga est à null nom orga est a vide, pas d' admin orga, on met dans l' agora générale
# pas d' équipe agora et de groupe nextcloud spécifique
nom_orga=" "
admin_orga="N"
nc_base="O"
equipe_agora=" "
groupe_nc_base=" "
else
# L' orga est renseignée dans paheko donc les nom et prenoms sont forcé a nom_orga et Organisation
# un équipe agora portera le nom de l' orga, le compte ne sera pas créé dans le nextcloud général
# et le compte est admin de son orga
nom_orga=$(echo $nom_orga | tr [:upper:] [:lower:])
[ "$OPTION" = "silence" ] || echo -e "${NC}Orga : ${GREEN}${nom_orga}${NC}"
nom_ok=$nom_orga
# test des caractères autorisés dans le nom d' orga: lettres, chiffres et/ou le tiret
if ! [[ "${nom_ok}" =~ ^[[:alnum:]-]+$ ]]
then
ERRMSG="${ERRMSG} - L' orga doit être avec des lettres et/ou des chiffres. Le séparateur doit être le tiret"
fi
prenom_ok=organisation
equipe_agora=$nom_orga
groupe_nc_base=" "
nc_base="N"
admin_orga="O"
fi
#On met le mail et le mail de secours en minuscules
email=$(echo $email | tr [:upper:] [:lower:])
email_secours=$(echo $email_secours | tr [:upper:] [:lower:])
# Pour le reste on renomme les null en N ( non ) et les valeurs 1 en O ( Oui)
cloud=$(echo $cloud | sed -e 's/0/N/g' | sed -e 's/1/O/g')
paheko=$(echo $garradin | sed -e 's/0/N/g' | sed -e 's/1/O/g')
wordpress=$(echo $wordpress | sed -e 's/0/N/g' | sed -e 's/1/O/g')
agora=$(echo $agora | sed -e 's/0/N/g' | sed -e 's/1/O/g')
docuwiki=$(echo $docuwiki | sed -e 's/0/N/g' | sed -e 's/1/O/g')
# et enfin on écrit dans le fichier si pas d'erreurs
if ! [[ -z ${ERRMSG} ]]
then
OLDIFS=${IFS}
IFS=''
# si l'envoi de mail est ok et qu'on a pas déjà écrit alors on envoi un mail
if [[ "${IP_MAIL}" = "true" && "$(cat ${FILE_NOTIFICATION})" -ne "1" ]]
then
ExpMail ${IP_MAILDEST} "Erreur dans la fiche paheko" "${ERRMSG}"
PostMattermost "Erreur dans la fiche paheko ${email}"
# on ecrit 1 dans le fichier pour ne pas envoyer pleins de mails et notif agora
echo 1 >${FILE_NOTIFICATION}
fi
IFS=${OLDIFS}
[ "$OPTION" = "silence" ] || echo ${ERRMSG}
exit
else
# on créé le fichier et on met 0 le fichier de notification
echo "$nom_ok;$prenom_ok;$email;$email_secours;$nom_orga;$admin_orga;$cloud;$paheko;$wordpress;$agora;$docuwiki;$nc_base;$groupe_nc_base;$equipe_agora;$quota_disque">>${FILE_CREATEUSER}
#on met 0 dans le fichier de notifiction
echo 0 >${FILE_NOTIFICATION}
fi
done
else
[ "$OPTION" = "silence" ] || echo "Rien à créer"
exit 2
fi
} }
# Main # Main
# on créé le fichier de notif au cas ou il serait éffacé
touch ${FILE_NOTIFICATION} >/dev/null 2>&1
Int_paheko_Action "A créer" "silence" Int_paheko_Action "A créer" "silence"
exit 0 exit 0

View File

@@ -13,18 +13,17 @@ services:
env_file: env_file:
- ../../secret/env-${officeServName} - ../../secret/env-${officeServName}
environment: environment:
# see compose.override.yaml
- dictionaries=fr_FR en_GB es_ES - dictionaries=fr_FR en_GB es_ES
- aliasgroup1=https://.*${cloudHost}.${domain}:443
# test did sur un cloud distant
- aliasgroup2=https://cloud.bodam.fr:443
# si on veut ajouter d'autres domaines autorisés pour certaines orgas:
# - aliasgroup2=https://autre-domaine1:443
# - aliasgroup3=https://autre-domaine2:443
- server_name=${site}-${officeHost}.${domain} - server_name=${site}-${officeHost}.${domain}
- VIRTUAL_HOST=${site}-${officeHost}.${domain} - VIRTUAL_HOST=${site}-${officeHost}.${domain}
- VIRTUAL_PORT=9980 - VIRTUAL_PORT=9980
- VIRTUAL_PROTO=https - VIRTUAL_PROTO=https
- extra_params=--o:ssl.enable=false --o:ssl.termination=true - extra_params=--o:ssl.enable=false --o:ssl.termination=true
- aliasgroup1=https://.*${cloudHost}.${domain}:443
# si on veut ajouter d'autres domaines autorisés pour certaines orgas:
# - aliasgroupX=https://autre-domaine:443
volumes: volumes:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro

View File

@@ -14,6 +14,7 @@ olcAccess: {1}to dn.subtree="$LDAPROOT"
by dn="cn=mattermost,ou=applications,$LDAPROOT" read by dn="cn=mattermost,ou=applications,$LDAPROOT" read
by dn="cn=cloud,ou=applications,$LDAPROOT" read by dn="cn=cloud,ou=applications,$LDAPROOT" read
by dn="cn=mobilizon,ou=applications,$LDAPROOT" read by dn="cn=mobilizon,ou=applications,$LDAPROOT" read
by dn="cn=mastodon,ou=applications,$LDAPROOT" read
by dn="$BINDDN" write by dn="$BINDDN" write
by * none by * none
olcAccess: {2}to * olcAccess: {2}to *

View File

@@ -45,13 +45,18 @@ olcAttributeTypes: {8}( 1.3.6.1.4.1.5656.1.1.9 NAME 'adressesServices'
EQUALITY caseIgnoreMatch EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15) SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
olcAttributeTypes: {9}( 1.3.6.1.4.1.5656.1.1.10 NAME 'mastodonEnabled'
DESC 'acces a mastodon'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE)
- -
replace: olcObjectClasses replace: olcObjectClasses
olcObjectClasses: {0}( 1.3.6.1.4.1.5656.1.2.1 NAME 'kaznaute' olcObjectClasses: {0}( 1.3.6.1.4.1.5656.1.2.1 NAME 'kaznaute'
DESC 'Un kaznaute' DESC 'Un kaznaute'
SUP top AUXILIARY SUP top AUXILIARY
MUST ( cn $ quota $ mailDeSecours $ identifiantKaz ) MUST ( cn $ quota $ mailDeSecours $ identifiantKaz )
MAY ( agoraEnabled $ mobilizonEnabled $ numeroMembre ) MAY ( agoraEnabled $ mobilizonEnabled $ mastodonEnabled $ numeroMembre )
) )
olcObjectClasses: {1}( 1.3.6.1.4.1.5656.1.2.2 NAME 'kazorga' olcObjectClasses: {1}( 1.3.6.1.4.1.5656.1.2.2 NAME 'kazorga'
DESC 'Une orga kaz' DESC 'Une orga kaz'

View File

@@ -38,3 +38,8 @@ dn: cn=mobilizon,ou=applications,$LDAPROOT
objectClass: person objectClass: person
sn: mobilizon sn: mobilizon
userPassword: $MOBILIZON_PASSWORD userPassword: $MOBILIZON_PASSWORD
dn: cn=mastodon,ou=applications,$LDAPROOT
objectClass: person
sn: mastodon
userPassword: $MASTODON_PASSWORD

View File

@@ -29,6 +29,7 @@ sed -i -e "s%\$LDAPUI_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_LDAPUI_P
sed -i -e "s%\$MATTERMOST_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_MATTERMOST_PASSWORD}`%g" /tmp/skeleton.ldif sed -i -e "s%\$MATTERMOST_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_MATTERMOST_PASSWORD}`%g" /tmp/skeleton.ldif
sed -i -e "s%\$CLOUD_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_CLOUD_PASSWORD}`%g" /tmp/skeleton.ldif sed -i -e "s%\$CLOUD_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_CLOUD_PASSWORD}`%g" /tmp/skeleton.ldif
sed -i -e "s%\$MOBILIZON_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_MOBILIZON_PASSWORD}`%g" /tmp/skeleton.ldif sed -i -e "s%\$MOBILIZON_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_MOBILIZON_PASSWORD}`%g" /tmp/skeleton.ldif
sed -i -e "s%\$MASTODON_PASSWORD%\{CRYPT\}`mkpasswd -m sha512crypt ${LDAP_MASTODON_PASSWORD}`%g" /tmp/skeleton.ldif
cp base/kaz-schema.ldif.tmpl /tmp/kaz-schema.ldif cp base/kaz-schema.ldif.tmpl /tmp/kaz-schema.ldif
KAZNUMBER=$(ldapsearch -H ldap://$LDAP_IP -D "cn=${LDAP_CONFIG_ADMIN_USERNAME},cn=config" -w ${LDAP_CONFIG_ADMIN_PASSWORD} -b cn=schema,cn=config | grep "kaz,cn=schema" | head -n1 | cut -d',' -f1 | cut -d'{' -f2 | cut -d'}' -f1) KAZNUMBER=$(ldapsearch -H ldap://$LDAP_IP -D "cn=${LDAP_CONFIG_ADMIN_USERNAME},cn=config" -w ${LDAP_CONFIG_ADMIN_PASSWORD} -b cn=schema,cn=config | grep "kaz,cn=schema" | head -n1 | cut -d',' -f1 | cut -d'{' -f2 | cut -d'}' -f1)

View File

@@ -3,7 +3,7 @@
services: services:
app: app:
image: mattermost/mattermost-team-edition:11.1 image: mattermost/mattermost-team-edition:11.2
container_name: ${mattermostServName} container_name: ${mattermostServName}
restart: ${restartPolicy} restart: ${restartPolicy}
volumes: volumes:
@@ -16,7 +16,7 @@ services:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/environment:/etc/environment:ro - /etc/environment:/etc/environment:ro
- ./mostlymatter-amd64-v11.1.0:/mattermost/bin/mattermost - ./mostlymatter-amd64-v11.2.0:/mattermost/bin/mattermost
env_file: env_file:
- ../../secret/env-${mattermostServName} - ../../secret/env-${mattermostServName}
environment: environment:

View File

@@ -27,9 +27,10 @@ WORKDIR /
#install cron pour factory_cron.sh #install cron pour factory_cron.sh
RUN apt-get install cron joe rsyslog -y RUN apt-get install cron joe rsyslog -y
RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
RUN echo "0 1 * * * cd ${PAHEKO_DIR} && ${PAHEKO_DIR}/factory_cron.sh 1> /dev/null 2> /dev/null" >> /var/spool/cron/crontabs/root RUN echo "0 1 * * * cd ${PAHEKO_DIR} && ${PAHEKO_DIR}/factory_cron.sh 1> /dev/null 2> /dev/null" >> /var/spool/cron/crontabs/www-data
RUN echo "* * * * * cd ${PAHEKO_DIR} && ${PAHEKO_DIR}/factory_cron_emails.sh 1> /dev/null 2> /dev/null" >> /var/spool/cron/crontabs/root RUN echo "* * * * * cd ${PAHEKO_DIR} && ${PAHEKO_DIR}/factory_cron_emails.sh 1> /dev/null 2> /dev/null" >> /var/spool/cron/crontabs/www-data
RUN chmod 600 /var/spool/cron/crontabs/root RUN chmod 600 /var/spool/cron/crontabs/www-data
RUN chown www-data:www-data /var/spool/cron/crontabs/www-data
RUN sed -i "/exec/i\service cron start\n" /usr/local/bin/docker-php-entrypoint RUN sed -i "/exec/i\service cron start\n" /usr/local/bin/docker-php-entrypoint
RUN ln -sf /usr/local/bin/php /usr/bin/ RUN ln -sf /usr/local/bin/php /usr/bin/

View File

@@ -103,6 +103,8 @@ const API_PASSWORD = "__PAHEKO_API_PASSWORD__";
const SMTP_PASSWORD = null; const SMTP_PASSWORD = null;
const SMTP_PORT = 25; const SMTP_PORT = 25;
const SMTP_SECURITY = 'NONE'; const SMTP_SECURITY = 'NONE';
const SMTP_HELO_HOSTNAME = 'paheko.kaz.bzh';
const SMTP_MAX_MESSAGES_PER_SESSION = 50;
const ROOT = __DIR__; const ROOT = __DIR__;
const DB_FILE = DATA_ROOT . '/association.sqlite'; const DB_FILE = DATA_ROOT . '/association.sqlite';

Binary file not shown.

View File

@@ -21,7 +21,7 @@ services:
- "traefik.docker.network=peertubeNet" - "traefik.docker.network=peertubeNet"
peertube: peertube:
image: chocobozzz/peertube:production-bookworm image: chocobozzz/peertube:production
container_name: ${peertubeServName} container_name: ${peertubeServName}
restart: ${restartPolicy} restart: ${restartPolicy}
depends_on: depends_on:

View File

@@ -20,6 +20,7 @@ services:
- ../../secret/env-${pollarisServName} - ../../secret/env-${pollarisServName}
environment: environment:
APP_ENV: prod APP_ENV: prod
APP_BASE_URL: https://${pollarisHost}.${domain}
networks: networks:
- pollarisNet - pollarisNet
- postfixNet - postfixNet
@@ -30,6 +31,28 @@ services:
volumes: volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
messenger:
build: .
container_name: pollarisMessenger
restart: always
depends_on:
- app
- db
env_file:
- ../../secret/env-${pollarisServName}
environment:
APP_ENV: prod
APP_BASE_URL: https://${pollarisHost}.${domain}
networks:
- pollarisNet
command: >
sh -c "
php /var/www/pollaris/bin/console messenger:consume async
--sleep=1
-vv
"
# --time-limit=3600
# --memory-limit=256M
volumes: volumes:
pollaris_db_data: pollaris_db_data:

View File

@@ -1,6 +1,6 @@
services: services:
reverse-proxy: reverse-proxy:
image: traefik:v3.6.2 image: traefik:v3.6.7
container_name: ${traefikServName} container_name: ${traefikServName}
restart: ${restartPolicy} restart: ${restartPolicy}
# Enables the web UI and tells Traefik to listen to docker # Enables the web UI and tells Traefik to listen to docker

View File

@@ -3,6 +3,7 @@ services:
vaultwarden: vaultwarden:
image: vaultwarden/server image: vaultwarden/server
container_name: ${vaultwardenServName} container_name: ${vaultwardenServName}
hostname: ${vaultwardenHost}.${domain}
restart: ${restartPolicy} restart: ${restartPolicy}
depends_on: depends_on:
db: db:

View File

@@ -7,3 +7,4 @@ LDAP_LDAPUI_PASSWORD=@@pass@@ldapui@@p@@
LDAP_MATTERMOST_PASSWORD=@@pass@@ldapmm@@p@@ LDAP_MATTERMOST_PASSWORD=@@pass@@ldapmm@@p@@
LDAP_CLOUD_PASSWORD=@@pass@@ldapcloud@@p@@ LDAP_CLOUD_PASSWORD=@@pass@@ldapcloud@@p@@
LDAP_MOBILIZON_PASSWORD=@@pass@@ldapmobilizon@@p@@ LDAP_MOBILIZON_PASSWORD=@@pass@@ldapmobilizon@@p@@
LDAP_MASTODON_PASSWORD=@@pass@@ldapmastodon@@p@@

View File

@@ -1,6 +1,3 @@
# POSTGRES_DB=
# POSTGRES_USER=
# POSTGRES_PASSWORD=
DATABASE_URL= DATABASE_URL=
APP_SECRET= APP_SECRET=