19 changed files with 419 additions and 268 deletions
-
5.vscode/extensions.json
-
21.vscode/settings.json
-
3README.md
-
15TODO.md
-
4run_task_in_parrallel.sh
-
26sympa/TODO.md
-
13sympa/bin/apply_auth_remote_ssh.bash
-
133sympa/bin/import.bash
-
27sympa/bin/install_zourit_style.bash
-
8sympa/doc/custom_cemea.md
-
69sympa/miaou/miaou-install-sympa
-
60sympa/recipe/install.bash
-
95sympa/recipe/sympa.recipe
-
57sympa/recipe/sympa_custom_style.recipe
-
18sympa/recipe/sympa_ldap_auth_remote.recipe
-
0sympa/resources/tools/sympa_export.bash
-
132sympa/resources/tools/sympa_import.bash
-
0sympa/resources/tools/sympa_purge.bash
-
1unavailable.txt
@ -0,0 +1,5 @@ |
|||||
|
{ |
||||
|
"recommendations": [ |
||||
|
"jgclark.vscode-todo-highlight" |
||||
|
] |
||||
|
} |
||||
@ -1,3 +1,22 @@ |
|||||
{ |
{ |
||||
"editor.formatOnSave": true |
|
||||
|
"editor.formatOnSave": true, |
||||
|
"files.associations": { |
||||
|
"*.recipe": "shellscript" |
||||
|
}, |
||||
|
"todohighlight.include": [ |
||||
|
"**/*.js", |
||||
|
"**/*.jsx", |
||||
|
"**/*.ts", |
||||
|
"**/*.tsx", |
||||
|
"**/*.html", |
||||
|
"**/*.css", |
||||
|
"**/*.scss", |
||||
|
"**/*.php", |
||||
|
"**/*.rb", |
||||
|
"**/*.txt", |
||||
|
"**/*.mdown", |
||||
|
"**/*.md", |
||||
|
"**/sympa/miaou/*", |
||||
|
"**/*.sh" |
||||
|
] |
||||
} |
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
TODO |
||||
|
==== |
||||
|
|
||||
|
* [ ] prévenir la possibilité de lancer un script .recipe sur le hôte |
||||
|
* [ ] tester la version Debian13 avec une IP fixe |
||||
|
* [ ] configurer postfix conformément à la version Debian9 |
||||
|
* [ ] migrer une ancienne version de liste de Debian 9 vers la version Debian 13 |
||||
|
* [ ] déplacement massif de toutes les anciennes listes |
||||
|
* [ ] scripter |
||||
|
|
||||
|
Documentation |
||||
|
------------- |
||||
|
|
||||
|
* [install](sympa/doc/installation.md) |
||||
|
* [migration](sympa/doc/migration.md) |
||||
@ -1,26 +0,0 @@ |
|||||
TODO |
|
||||
==== |
|
||||
|
|
||||
* [x] tester bon fonctionnement d'une ancienne liste à base de Debian9 |
|
||||
* [x] listes.artcode.re |
|
||||
* [x] tenir à jour [listes.txt](../listes.txt) |
|
||||
* [x] listes.voyagesdegulliver.fr EFFACÉ |
|
||||
* [ ] listes.bonneveine2.com ??? à ajouter après DNS ok ? |
|
||||
* [x] installer un Sympa sur une base Debian 12 récente |
|
||||
* [x] souci avec nginx |
|
||||
* [x] systemd cgi issue |
|
||||
* [x] réessayer apache2 |
|
||||
* [x] ok |
|
||||
* [x] réessayer avec nginx |
|
||||
* [x] correction de l'installation |
|
||||
* [ ] tester la version Debian12 avec une IP fixe |
|
||||
* [ ] configurer postfix conformément à la version Debian9 |
|
||||
* [ ] migrer une ancienne version de liste de Debian 9 vers la version Debian 12 |
|
||||
* [ ] déplacement massif de toutes les anciennes listes |
|
||||
* [ ] scripter |
|
||||
|
|
||||
Documentation |
|
||||
------------- |
|
||||
|
|
||||
* [install](install.md) |
|
||||
* [migration](doc/migration.md) |
|
||||
@ -1,13 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
# changes in /etc/sympa/auth.conf |
|
||||
sed -i 's/.*host 192.168.1.254:389.*/ host 127.0.0.1:3890 # remote connection through SSH/' /etc/sympa/auth.conf |
|
||||
|
|
||||
# start SSH port translation if needed |
|
||||
if ! ss -tln | grep -q 127.0.0.1:3890; then |
|
||||
ssh -fN listes.artcode.re -L 3890:192.168.1.254:389 |
|
||||
echo 'SSH port translation 3890 is now active!' |
|
||||
systemctl restart wwsympa.socket |
|
||||
else |
|
||||
echo 'SSH already enabled!' |
|
||||
fi |
|
||||
@ -1,133 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
## constants |
|
||||
|
|
||||
BASEDIR=$(dirname "$0") |
|
||||
BASECMD=$(basename "$0") |
|
||||
DB_NAME=sympa |
|
||||
DB_USER="$DB_NAME" |
|
||||
DB_PASS="$DB_NAME" |
|
||||
|
|
||||
## functions |
|
||||
|
|
||||
function usage { |
|
||||
echo "$BASECMD <file.sympa>" |
|
||||
} |
|
||||
|
|
||||
function assert_file { |
|
||||
[[ $# != 1 ]] && usage && exit 1 |
|
||||
file="$1" |
|
||||
[[ ! -f $file ]] && echo "file not found: $file" && exit 2 |
|
||||
true |
|
||||
} |
|
||||
|
|
||||
function create_temp { |
|
||||
echo -n "create_temp..." |
|
||||
export_name=$(basename $file) |
|
||||
export_tmp="/tmp/$export_name" |
|
||||
mkdir "$export_tmp" |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function uncompress_export_file { |
|
||||
echo -n "uncompress export file..." |
|
||||
tar -xf $file -C "$export_tmp" |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function import_database { |
|
||||
echo -n "import database $DB_NAME..." |
|
||||
sudo -u postgres dropdb "$DB_NAME" 2>/dev/null |
|
||||
sudo -u postgres createdb -O "$DB_USER" "$DB_NAME" 2>/dev/null |
|
||||
gunzip -c "$export_tmp"/database.psql.gz | PGPASSWORD="$DB_PASS" psql -h localhost -U "$DB_USER" "$DB_NAME" |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function replace_conf_entry_from_export { |
|
||||
local export_conf=etc/sympa/sympa/sympa.conf |
|
||||
local final_conf="/$export_conf" |
|
||||
local key="$1" |
|
||||
local pattern="^$key.*" |
|
||||
local replacement=$(grep $pattern $export_conf) |
|
||||
local ksh93=${replacement//\//\\/} |
|
||||
sed -i "s/$pattern/$ksh93/" "$final_conf" |
|
||||
} |
|
||||
|
|
||||
function import_files_etc { |
|
||||
mv etc/sympa/auth.conf /etc/sympa/ |
|
||||
mv etc/sympa/data_structure.version /etc/sympa/ |
|
||||
|
|
||||
replace_conf_entry_from_export domain |
|
||||
replace_conf_entry_from_export listmaster |
|
||||
replace_conf_entry_from_export wwsympa_url |
|
||||
replace_conf_entry_from_export lang |
|
||||
} |
|
||||
|
|
||||
function import_files_lib { |
|
||||
rm -rf /var/lib/sympa |
|
||||
mv var/lib/sympa /var/lib |
|
||||
} |
|
||||
|
|
||||
function import_files_spool { |
|
||||
rm -rf /var/spool/sympa |
|
||||
mv var/spool/sympa /var/spool |
|
||||
} |
|
||||
|
|
||||
function import_files { |
|
||||
echo -n "import files..." |
|
||||
files_temp="$export_tmp/files" |
|
||||
mkdir "$files_temp" |
|
||||
cd "$files_temp" |
|
||||
|
|
||||
tar -xf "$export_tmp/files.tar.gz" |
|
||||
import_files_etc |
|
||||
import_files_lib |
|
||||
import_files_spool |
|
||||
|
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function migrate_sympa { |
|
||||
echo -n "migrate sympa..." |
|
||||
/usr/lib/sympa/bin/sympa.pl upgrade 2>&1 |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function stop_services { |
|
||||
echo -n "stop services..." |
|
||||
sudo systemctl stop sympa.service |
|
||||
sudo systemctl stop wwsympa.socket |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function start_services { |
|
||||
echo -n "start services..." |
|
||||
sudo systemctl start sympa.service |
|
||||
sudo systemctl start wwsympa.socket |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function remove_temp { |
|
||||
echo -n "remove temp..." |
|
||||
rm -rf "$export_tmp" |
|
||||
echo OK |
|
||||
} |
|
||||
|
|
||||
function import { |
|
||||
create_temp |
|
||||
|
|
||||
uncompress_export_file |
|
||||
stop_services |
|
||||
import_database |
|
||||
import_files |
|
||||
start_services |
|
||||
migrate_sympa |
|
||||
|
|
||||
remove_temp |
|
||||
} |
|
||||
|
|
||||
## main |
|
||||
|
|
||||
set -Eeu |
|
||||
assert_file $* |
|
||||
import |
|
||||
@ -1,27 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
# changes in /usr/share/sympa/lib/Sympa/Config/Schema.pm |
|
||||
sed -i "s/.*005ab2.*/ default => '#ad0c78', # '#005ab2' replaced by ZOURIT-COLOR-1/" /usr/share/sympa/lib/Sympa/Config/Schema.pm |
|
||||
sed -i "s/.*004b94.*/ default => '#1f2937', # '#004b94' replaced by ZOURIT-COLOR-2/" /usr/share/sympa/lib/Sympa/Config/Schema.pm |
|
||||
sed -i "s/.*0090e9.*/ default => '#b15593', # '#0090e9' replaced by ZOURIT-COLOR-3/" /usr/share/sympa/lib/Sympa/Config/Schema.pm |
|
||||
sed -i "s/.*66aaff.*/ default => '#949ba7', # '#66aaff' replaced by ZOURIT-COLOR-4/" /usr/share/sympa/lib/Sympa/Config/Schema.pm |
|
||||
|
|
||||
# changes in /usr/share/sympa/default/web_tt2/css.tt2 |
|
||||
if ! grep -q '.top-bar button:hover' /usr/share/sympa/default/web_tt2/css.tt2; then |
|
||||
sed -i "1661i\\.top-bar button:hover{\\n color: white;\\n}" /usr/share/sympa/default/web_tt2/css.tt2 |
|
||||
echo 'style changed successfully' |
|
||||
else |
|
||||
echo 'style already changed!' |
|
||||
fi |
|
||||
|
|
||||
# detect if exists inherited list styles |
|
||||
socket_restart=false |
|
||||
for i in /var/lib/sympa/css/*; do |
|
||||
if [[ "$i" != '/var/lib/sympa/css/style.css' ]] && [[ -d "$i" ]]; then |
|
||||
socket_restart=true |
|
||||
rm -rf "$i" |
|
||||
fi |
|
||||
done |
|
||||
|
|
||||
[[ $socket_restart == true ]] && systemctl restart wwsympa.socket && echo "wwsympa restarted with fresh styles" |
|
||||
true |
|
||||
@ -0,0 +1,69 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
# CONSTANTS |
||||
|
|
||||
|
BASEDIR=$(dirname "$0") |
||||
|
CONTAINER='' |
||||
|
|
||||
|
# FUNCTIONS |
||||
|
|
||||
|
function usage { |
||||
|
echo "$(basename "$0") <CONTAINER_NAME>" |
||||
|
} |
||||
|
|
||||
|
function parse_options { |
||||
|
while [[ $# -gt 0 ]]; do |
||||
|
case "$1" in |
||||
|
--help | -h) |
||||
|
usage && exit 0 |
||||
|
;; |
||||
|
*) |
||||
|
if [[ -z $CONTAINER ]]; then |
||||
|
CONTAINER=$1 |
||||
|
else |
||||
|
echo >&2 "Unknown option: $1" && usage && exit 2 |
||||
|
fi |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
shift 1 # Move to the next argument |
||||
|
done |
||||
|
[[ -n $CONTAINER ]] || (usage && exit 1) |
||||
|
} |
||||
|
|
||||
|
function assert_miaou_server { |
||||
|
[[ -d /opt/miaou-incus ]] || |
||||
|
[[ -d /opt/miaou-proxmox ]] || |
||||
|
(>&2 echo 'ERROR: either miaou-{incus,proxmox} must be installed on this host prior running this command!' && exit 10) |
||||
|
} |
||||
|
|
||||
|
function assert_fake_sympa { |
||||
|
[[ $(fqdn) == 'topcode' ]] && [[ -d /opt/miaou-incus ]] |
||||
|
} |
||||
|
|
||||
|
function install_sympa_tools { |
||||
|
for file in "$BASEDIR"/../resources/tools/*; do |
||||
|
miaou-push $CONTAINER $file /opt/miaou-sympa/tools/ |
||||
|
done |
||||
|
miaou-exec $CONTAINER -- ln -sf /usr/lib/sympa/bin/sympa.pl /opt/miaou-sympa/tools/ |
||||
|
} |
||||
|
|
||||
|
function install_fake_additional { |
||||
|
assert_fake_sympa || return |
||||
|
|
||||
|
echo 'install fake additional TODO: not yet functional...' |
||||
|
# miaou-push $CONTAINER $HOME/.ssh/id_ed25519 /root/.ssh/ |
||||
|
# miaou-push $CONTAINER $HOME/.ssh/id_ed25519.pub /root/.ssh/ |
||||
|
# miaou-recipe "$CONTAINER" "$BASEDIR"/../recipe/sympa_ldap_auth_remote.recipe |
||||
|
} |
||||
|
|
||||
|
# MAIN |
||||
|
|
||||
|
set -Eue |
||||
|
parse_options $* |
||||
|
assert_miaou_server |
||||
|
|
||||
|
miaou-recipe "$CONTAINER" "$BASEDIR"/../recipe/sympa.recipe |
||||
|
miaou-recipe "$CONTAINER" "$BASEDIR"/../recipe/sympa_custom_style.recipe |
||||
|
install_sympa_tools |
||||
|
install_fake_additional |
||||
@ -1,60 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
# postfix |
|
||||
debconf-set-selections <<EOF |
|
||||
postfix postfix/mailname string $(hostname -f) |
|
||||
postfix postfix/main_mailer_type string 'Internet Site' |
|
||||
postfix postfix/mynetworks string '127.0.0.0/8' |
|
||||
EOF |
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y postfix postgresql nginx fcgiwrap perl-doc micro debconf-utils |
|
||||
postconf -e "inet_protocols = ipv4" |
|
||||
systemctl restart postfix |
|
||||
|
|
||||
# sympa |
|
||||
listmasters="pvincent@artcode.re,jnoel@mithril.re" |
|
||||
[[ $(hostname -d) == *.* ]] && listmasters+=",listmaster@$(hostname -d)" || true |
|
||||
debconf-set-selections <<EOF |
|
||||
sympa wwsympa/webserver_type select 'Other' |
|
||||
sympa sympa/database-type string pgsql |
|
||||
sympa sympa/db_host string localhost |
|
||||
sympa sympa/db_name string sympa |
|
||||
sympa sympa/db_user string sympa |
|
||||
sympa sympa/db_pass password sympa |
|
||||
sympa sympa/language select fr |
|
||||
sympa sympa/listmaster string $listmasters |
|
||||
EOF |
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y sympa |
|
||||
systemctl disable sympasoap.{socket,service} |
|
||||
systemctl stop sympasoap.{socket,service} |
|
||||
|
|
||||
# nginx |
|
||||
cat <<EOF >/etc/nginx/sites-available/sympa.conf |
|
||||
server { |
|
||||
listen 80; |
|
||||
server_name _; |
|
||||
rewrite ^/$ /wws permanent; |
|
||||
|
|
||||
location /wws { |
|
||||
include fastcgi_params; |
|
||||
fastcgi_param SERVER_NAME $(hostname -f); |
|
||||
fastcgi_pass unix:/run/sympa/wwsympa.socket; |
|
||||
} |
|
||||
|
|
||||
location /static-sympa { |
|
||||
alias /usr/share/sympa/static_content; |
|
||||
} |
|
||||
|
|
||||
location /css-sympa { |
|
||||
alias /var/lib/sympa/css; |
|
||||
} |
|
||||
|
|
||||
location /pictures-sympa { |
|
||||
alias /var/lib/sympa/pictures; |
|
||||
} |
|
||||
} |
|
||||
EOF |
|
||||
cd /etc/nginx/sites-enabled && rm -f default && ln -sf ../sites-available/sympa.conf && cd |
|
||||
systemctl reload nginx |
|
||||
|
|
||||
# final word |
|
||||
echo Sympa successfully installed! |
|
||||
@ -0,0 +1,95 @@ |
|||||
|
#!/usr/bin/env miaou-recipe |
||||
|
|
||||
|
# CONSTANTS |
||||
|
|
||||
|
FORCE=${FORCE:-false} |
||||
|
|
||||
|
# FUNCTIONS |
||||
|
|
||||
|
function install_postfix { |
||||
|
if $FORCE || ! systemctl is-active postfix.service --quiet; then |
||||
|
debconf-set-selections <<EOF |
||||
|
postfix postfix/mailname string $(hostname -f) |
||||
|
postfix postfix/main_mailer_type string 'Internet Site' |
||||
|
postfix postfix/mynetworks string '127.0.0.0/8' |
||||
|
EOF |
||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y postfix postgresql nginx fcgiwrap perl-doc micro debconf-utils |
||||
|
postconf -e "inet_protocols = ipv4" |
||||
|
systemctl restart postfix |
||||
|
echo postfix installed successfully! |
||||
|
else |
||||
|
echo postfix already installed! |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function alter_sympa_postgres_password_to { |
||||
|
password="$1" |
||||
|
/opt/miaou-bash/tools/append_or_replace '^db_passwd.*' "db_passwd\tsympa" /etc/sympa/sympa/sympa.conf |
||||
|
sudo -u postgres -- psql -c "ALTER USER sympa PASSWORD '$password'" |
||||
|
systemctl restart wwsympa.service |
||||
|
} |
||||
|
|
||||
|
function install_sympa { |
||||
|
if $FORCE || ! systemctl is-active wwsympa.service --quiet; then |
||||
|
listmasters="pvincent@artcode.re,jnoel@mithril.re" |
||||
|
[[ $(hostname -d) == *.* ]] && listmasters+=",listmaster@$(hostname -d)" || true |
||||
|
debconf-set-selections <<EOF |
||||
|
sympa wwsympa/webserver_type select 'Other' |
||||
|
sympa sympa/database-type string pgsql |
||||
|
sympa sympa/db_host string localhost |
||||
|
sympa sympa/db_name string sympa |
||||
|
sympa sympa/db_user string sympa |
||||
|
sympa sympa/language select fr |
||||
|
sympa sympa/listmaster string $listmasters |
||||
|
EOF |
||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y sympa |
||||
|
systemctl disable sympasoap.{socket,service} |
||||
|
systemctl stop sympasoap.{socket,service} |
||||
|
|
||||
|
alter_sympa_postgres_password_to sympa |
||||
|
echo sympa.service installed successfully! |
||||
|
else |
||||
|
echo sympa.service already installed! |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function install_nginx_host { |
||||
|
if $FORCE || [[ ! -f /etc/nginx/sites-available/sympa.conf ]]; then |
||||
|
cat <<EOF >/etc/nginx/sites-available/sympa.conf |
||||
|
server { |
||||
|
listen 80; |
||||
|
server_name _; |
||||
|
rewrite ^/$ /wws permanent; |
||||
|
|
||||
|
location /wws { |
||||
|
include fastcgi_params; |
||||
|
fastcgi_param SERVER_NAME $(hostname -f); |
||||
|
fastcgi_pass unix:/run/sympa/wwsympa.socket; |
||||
|
} |
||||
|
|
||||
|
location /static-sympa { |
||||
|
alias /usr/share/sympa/static_content; |
||||
|
} |
||||
|
|
||||
|
location /css-sympa { |
||||
|
alias /var/lib/sympa/css; |
||||
|
} |
||||
|
|
||||
|
location /pictures-sympa { |
||||
|
alias /var/lib/sympa/pictures; |
||||
|
} |
||||
|
} |
||||
|
EOF |
||||
|
cd /etc/nginx/sites-enabled && rm -f default && ln -sf ../sites-available/sympa.conf && cd |
||||
|
systemctl reload nginx |
||||
|
echo host for nginx installed successfully! |
||||
|
else |
||||
|
echo host for nginx already installed! |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# MAIN |
||||
|
|
||||
|
install_postfix |
||||
|
install_sympa |
||||
|
install_nginx_host |
||||
@ -0,0 +1,57 @@ |
|||||
|
#!/usr/bin/env miaou-recipe |
||||
|
|
||||
|
# CONSTANTS |
||||
|
|
||||
|
SYMPA_GENERATOR=/usr/share/sympa/lib/Sympa/WWW/Tools.pm |
||||
|
SYMPA_CSS=/usr/share/sympa/default/web_tt2/css.tt2 |
||||
|
|
||||
|
# FUNCTIONS |
||||
|
|
||||
|
function override_topbar { |
||||
|
if ! grep -q '.top-bar button:hover' "$SYMPA_CSS"; then |
||||
|
sed -i "1661i\\.top-bar button:hover{\\n color: white;\\n}" "$SYMPA_CSS" |
||||
|
echo 'topbar changed successfully' |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function apply_theme { |
||||
|
local fqdn=$(hostname -f) |
||||
|
[[ $fqdn == *cemea* ]] && apply_cemea_style || apply_zourit_style |
||||
|
} |
||||
|
|
||||
|
function apply_cemea_style { |
||||
|
sed -i "s/.*005ab2.*/\t\tdefault => '#000000', # '#005ab2' replaced by CEMEA-COLOR-1/" "$SYMPA_GENERATOR" |
||||
|
sed -i "s/.*004b94.*/\t\tdefault => '#e30613', # '#004b94' replaced by CEMEA-COLOR-2/" "$SYMPA_GENERATOR" |
||||
|
sed -i "s/.*0090e9.*/\t\tdefault => '#184857', # '#0090e9' replaced by CEMEA-COLOR-3/" "$SYMPA_GENERATOR" |
||||
|
sed -i "s/.*66aaff.*/\t\tdefault => '#00a19a', # '#66aaff' replaced by CEMEA-COLOR-4/" "$SYMPA_GENERATOR" |
||||
|
echo "CEMEA style applied successfully!" |
||||
|
} |
||||
|
|
||||
|
function apply_zourit_style { |
||||
|
sed -i "s/.*005ab2.*/\t\tdefault => '#ad0c78', # '#005ab2' replaced by ZOURIT-COLOR-1/" "$SYMPA_GENERATOR" |
||||
|
sed -i "s/.*004b94.*/\t\tdefault => '#1f2937', # '#004b94' replaced by ZOURIT-COLOR-2/" "$SYMPA_GENERATOR" |
||||
|
sed -i "s/.*0090e9.*/\t\tdefault => '#535786', # '#0090e9' replaced by ZOURIT-COLOR-3/" "$SYMPA_GENERATOR" |
||||
|
sed -i "s/.*66aaff.*/\t\tdefault => '#949ba7', # '#66aaff' replaced by ZOURIT-COLOR-4/" "$SYMPA_GENERATOR" |
||||
|
echo "ZOURIT style applied successfully!" |
||||
|
} |
||||
|
|
||||
|
function clear_custom_styles { |
||||
|
for i in /var/lib/sympa/css/*; do |
||||
|
if [[ "$i" != '/var/lib/sympa/css/style.css' ]] && [[ -d "$i" ]]; then |
||||
|
rm -rf "$i" |
||||
|
echo "customized style: $i removed!" |
||||
|
fi |
||||
|
done |
||||
|
} |
||||
|
|
||||
|
function refresh_style { |
||||
|
systemctl restart wwsympa.socket |
||||
|
} |
||||
|
|
||||
|
# MAIN |
||||
|
|
||||
|
set -Eue |
||||
|
override_topbar |
||||
|
apply_theme |
||||
|
clear_custom_styles |
||||
|
refresh_style |
||||
@ -0,0 +1,18 @@ |
|||||
|
#!/usr/bin/env miaou-recipe |
||||
|
|
||||
|
# changes in /etc/sympa/auth.conf |
||||
|
if grep -q '.*host 192.168.1.254:389.*' /etc/sympa/auth.conf; then |
||||
|
/opt/miaou-bash/tools/append_or_replace '.*host 192.168.1.254:389.*' "\thost 127.0.0.1:3890" /etc/sympa/auth.conf |
||||
|
echo 'sympa auth from LDAP local 127.0.0.1:3890 is now active' |
||||
|
else |
||||
|
echo 'sympa auth from LDAP local 127.0.0.1:3890 already enabled' |
||||
|
fi |
||||
|
|
||||
|
# start SSH port translation if needed |
||||
|
if ! ss -tln | grep -q 127.0.0.1:3890; then |
||||
|
ssh -fN listes.artcode.re -L 3890:192.168.1.254:389 |
||||
|
echo 'SSH port translation 3890 is now active!' |
||||
|
systemctl restart wwsympa.socket |
||||
|
else |
||||
|
echo 'SSH already enabled!' |
||||
|
fi |
||||
@ -0,0 +1,132 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
## constants |
||||
|
|
||||
|
BASEDIR=$(dirname "$0") |
||||
|
BASECMD=$(basename "$0") |
||||
|
DB_NAME=sympa |
||||
|
DB_USER="$DB_NAME" |
||||
|
DB_PASS="$DB_NAME" |
||||
|
|
||||
|
## functions |
||||
|
|
||||
|
function usage { |
||||
|
echo "$BASECMD <file.sympa>" |
||||
|
} |
||||
|
|
||||
|
function assert_file { |
||||
|
[[ $# != 1 ]] && usage && exit 1 |
||||
|
file="$1" |
||||
|
[[ ! -f $file ]] && echo "file not found: $file" && exit 2 |
||||
|
true |
||||
|
} |
||||
|
|
||||
|
function create_temp { |
||||
|
echo -n "create_temp..." |
||||
|
export_name=$(basename $file) |
||||
|
export_tmp="/tmp/$export_name" |
||||
|
mkdir "$export_tmp" |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function uncompress_export_file { |
||||
|
echo -n "uncompress export file..." |
||||
|
tar -xf $file -C "$export_tmp" |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function import_database { |
||||
|
echo -n "import database $DB_NAME..." |
||||
|
sudo -u postgres dropdb "$DB_NAME" 2>/dev/null |
||||
|
sudo -u postgres createdb -O "$DB_USER" "$DB_NAME" 2>/dev/null |
||||
|
gunzip -c "$export_tmp"/database.psql.gz | PGPASSWORD="$DB_PASS" psql -h localhost -U "$DB_USER" "$DB_NAME" |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function replace_conf_entry_from_export { |
||||
|
local export_conf=etc/sympa/sympa/sympa.conf |
||||
|
local final_conf="/$export_conf" |
||||
|
local key="$1" |
||||
|
local pattern="^$key.*" |
||||
|
local replacement=$(grep $pattern $export_conf) |
||||
|
local ksh93=${replacement//\//\\/} |
||||
|
sed -i "s/$pattern/$ksh93/" "$final_conf" |
||||
|
} |
||||
|
|
||||
|
function import_files_etc { |
||||
|
mv etc/sympa/auth.conf /etc/sympa/ |
||||
|
mv etc/sympa/data_structure.version /etc/sympa/ |
||||
|
|
||||
|
replace_conf_entry_from_export domain |
||||
|
replace_conf_entry_from_export listmaster |
||||
|
replace_conf_entry_from_export lang |
||||
|
} |
||||
|
|
||||
|
function import_files_lib { |
||||
|
rm -rf /var/lib/sympa |
||||
|
mv var/lib/sympa /var/lib |
||||
|
} |
||||
|
|
||||
|
function import_files_spool { |
||||
|
rm -rf /var/spool/sympa |
||||
|
mv var/spool/sympa /var/spool |
||||
|
} |
||||
|
|
||||
|
function import_files { |
||||
|
echo -n "import files..." |
||||
|
files_temp="$export_tmp/files" |
||||
|
mkdir "$files_temp" |
||||
|
cd "$files_temp" |
||||
|
|
||||
|
tar -xf "$export_tmp/files.tar.gz" |
||||
|
import_files_etc |
||||
|
import_files_lib |
||||
|
import_files_spool |
||||
|
|
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function migrate_sympa { |
||||
|
echo -n "migrate sympa..." |
||||
|
/usr/lib/sympa/bin/sympa.pl upgrade 2>&1 |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function stop_services { |
||||
|
echo -n "stop services..." |
||||
|
sudo systemctl stop sympa.service |
||||
|
sudo systemctl stop wwsympa.socket |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function start_services { |
||||
|
echo -n "start services..." |
||||
|
sudo systemctl start sympa.service |
||||
|
sudo systemctl start wwsympa.socket |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function remove_temp { |
||||
|
echo -n "remove temp..." |
||||
|
rm -rf "$export_tmp" |
||||
|
echo OK |
||||
|
} |
||||
|
|
||||
|
function import { |
||||
|
create_temp |
||||
|
|
||||
|
uncompress_export_file |
||||
|
stop_services |
||||
|
import_database |
||||
|
import_files |
||||
|
start_services |
||||
|
migrate_sympa |
||||
|
|
||||
|
remove_temp |
||||
|
} |
||||
|
|
||||
|
## main |
||||
|
|
||||
|
set -Eeu |
||||
|
assert_file $* |
||||
|
import |
||||
@ -1 +0,0 @@ |
|||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue