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