7 changed files with 310 additions and 1 deletions
-
3README.md
-
13bin/apply_auth_remote_ssh.bash
-
44bin/export.bash
-
134bin/import.bash
-
87bin/purge.bash
-
3debian/install.bash
-
27debian/install_zourit_style.bash
@ -1,2 +1,3 @@ |
|||||
# sympa-util |
|
||||
|
# sympa-utils |
||||
|
|
||||
|
utilities for SYMPA |
@ -0,0 +1,13 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
# changes in /etc/sympa/auth.conf |
||||
|
sed -i 's/.*host 192.168.1.254:389.*/ host 127.0.0.1:389 # remote connection through SSH/' /etc/sympa/auth.conf |
||||
|
|
||||
|
# start SSH port translation if needed |
||||
|
if ! ss -tln | grep -q 127.0.0.1:389; then |
||||
|
ssh -fN listes.artcode.re -L 389:192.168.1.254:389 |
||||
|
echo 'SSH port translation 389 is now active!' |
||||
|
systemctl restart wwsympa.socket |
||||
|
else |
||||
|
echo 'SSH already enabled!' |
||||
|
fi |
@ -0,0 +1,44 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
### CONSTANTS |
||||
|
|
||||
|
SYMPA_CONF=/etc/sympa/sympa/sympa.conf |
||||
|
SYMPA_DOMAIN=$(grep '^domain' "$SYMPA_CONF" | cut -f2) |
||||
|
|
||||
|
### FUNCTIONS |
||||
|
|
||||
|
function create_temp_dir { |
||||
|
temp_name="$SYMPA_DOMAIN-$(date '+%F')" |
||||
|
temp_dir="/tmp/$temp_name" |
||||
|
mkdir "$temp_dir" |
||||
|
} |
||||
|
|
||||
|
function export_database { |
||||
|
db_name=sympa |
||||
|
db_user=sympa |
||||
|
db_passwd=$(grep '^db_passwd' /etc/sympa/sympa/sympa.conf | cut -f2) |
||||
|
PGPASSWORD=$db_passwd pg_dump -h localhost -U "$db_user" "$db_name" | gzip >"$temp_dir/database.psql.gz" |
||||
|
} |
||||
|
|
||||
|
function export_files { |
||||
|
tar -C / -cf "$temp_dir/files.tar" etc/sympa/sympa/sympa.conf |
||||
|
tar -C / -uf "$temp_dir/files.tar" etc/sympa/data_structure.version |
||||
|
tar -C / -uf "$temp_dir/files.tar" etc/sympa/auth.conf |
||||
|
tar -C / -uf "$temp_dir/files.tar" var/lib/sympa |
||||
|
tar -C / -uf "$temp_dir/files.tar" var/spool/sympa |
||||
|
gzip "$temp_dir/files.tar" |
||||
|
} |
||||
|
|
||||
|
function export { |
||||
|
create_temp_dir |
||||
|
export_database |
||||
|
export_files |
||||
|
tar -C $temp_dir -cf "$temp_name.sympa" . |
||||
|
rm "$temp_dir" -rf |
||||
|
} |
||||
|
|
||||
|
### MAIN |
||||
|
|
||||
|
set -Eeu |
||||
|
|
||||
|
export |
@ -0,0 +1,134 @@ |
|||||
|
#!/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 "$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 |
@ -0,0 +1,87 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
### CONSTANTS |
||||
|
|
||||
|
SYMPA_CONF=/etc/sympa/sympa/sympa.conf |
||||
|
SYMPA_DOMAIN=$(grep '^domain' "$SYMPA_CONF" | cut -f2) |
||||
|
|
||||
|
### FUNCTIONS |
||||
|
|
||||
|
function purge { |
||||
|
|
||||
|
# LIB/ARCHIVE |
||||
|
for arc_entry in /var/lib/sympa/arc/*; do |
||||
|
arc_name=$(basename "$arc_entry") |
||||
|
if [[ $arc_name != '*' ]] && [[ $arc_name != *"@$SYMPA_DOMAIN" ]]; then |
||||
|
rm /var/lib/sympa/arc/"$arc_name" -rf |
||||
|
echo "archive [$arc_name] removed!" |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
# LIB/BOUNCE |
||||
|
for bounce_entry in /var/lib/sympa/bounce/*; do |
||||
|
bounce_name=$(basename "$bounce_entry") |
||||
|
if [[ $bounce_name != '*' ]] && [[ $bounce_name != *"@$SYMPA_DOMAIN" ]]; then |
||||
|
rm /var/lib/sympa/bounce/"$bounce_name" -rf |
||||
|
echo "bounce [$bounce_name] removed!" |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
# SPOOL/DIGEST |
||||
|
for digest_entry in /var/spool/sympa/digest/*; do |
||||
|
digest_name=$(basename "$digest_entry") |
||||
|
if [[ $digest_name != '*' ]] && [[ $digest_name != *"@$SYMPA_DOMAIN"* ]]; then |
||||
|
rm /var/spool/sympa/digest/"$digest_name" -rf |
||||
|
echo "digest [$digest_name] removed!" |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
# SPOOL/VIEWMAIL/BOUNCE |
||||
|
for bounce_entry in /var/spool/sympa/viewmail/bounce/*; do |
||||
|
bounce_name=$(basename "$bounce_entry") |
||||
|
if [[ $bounce_name != '*' ]] && [[ $bounce_name != *"@$SYMPA_DOMAIN"* ]]; then |
||||
|
rm /var/spool/sympa/viewmail/bounce/"$bounce_name" -rf |
||||
|
echo "viewmail/bounce [$bounce_name] removed!" |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
# SPOOL/VIEWMAIL/MOD |
||||
|
for mod_entry in /var/spool/sympa/viewmail/mod/*; do |
||||
|
mod_name=$(basename "$mod_entry") |
||||
|
if [[ $mod_name != '*' ]] && [[ $mod_name != *"@$SYMPA_DOMAIN"* ]]; then |
||||
|
rm /var/spool/sympa/viewmail/mod/"$mod_name" -rf |
||||
|
echo "viewmail/mod [$mod_name] removed!" |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
} |
||||
|
|
||||
|
function create_temp_dir { |
||||
|
temp_dir="$SYMPA_DOMAIN-$(date '+%F')" |
||||
|
mkdir "$temp_dir" |
||||
|
echo "$temp_dir" |
||||
|
} |
||||
|
|
||||
|
function export { |
||||
|
echo "temp_dir=$temp_dir" |
||||
|
cd "$temp_dir" |
||||
|
|
||||
|
db_name=sympa |
||||
|
db_user=sympa |
||||
|
db_passwd=$(grep '^db_passwd' /etc/sympa/sympa/sympa.conf | cut -f2) |
||||
|
PGPASSWORD=$db_passwd pg_dump -h localhost -U "$db_user" "$db_name" | gzip >"$db_name.psql.gz" |
||||
|
|
||||
|
cp "$SYMPA_CONF" . |
||||
|
tar -czvf lib-sympa.tgz /var/lib/sympa |
||||
|
tar -czvf spool-sympa.tgz /var/spool/sympa |
||||
|
|
||||
|
cd .. |
||||
|
tar -cf "$temp_dir.sympa" "$temp_dir" |
||||
|
rm "$temp_dir" -rf |
||||
|
} |
||||
|
|
||||
|
### MAIN |
||||
|
|
||||
|
set -Eeu |
||||
|
|
||||
|
purge |
@ -0,0 +1,3 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
echo TODO... |
@ -0,0 +1,27 @@ |
|||||
|
#!/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 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue