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