Browse Source

bin + debian

main
pvincent 2 days ago
parent
commit
5e8b1603cd
  1. 3
      README.md
  2. 13
      bin/apply_auth_remote_ssh.bash
  3. 44
      bin/export.bash
  4. 134
      bin/import.bash
  5. 87
      bin/purge.bash
  6. 3
      debian/install.bash
  7. 27
      debian/install_zourit_style.bash

3
README.md

@ -1,2 +1,3 @@
# sympa-util
# sympa-utils
utilities for SYMPA

13
bin/apply_auth_remote_ssh.bash

@ -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

44
bin/export.bash

@ -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

134
bin/import.bash

@ -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

87
bin/purge.bash

@ -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

3
debian/install.bash

@ -0,0 +1,3 @@
#!/usr/bin/env bash
echo TODO...

27
debian/install_zourit_style.bash

@ -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
Loading…
Cancel
Save