diff options
author | dakataca | 2023-11-26 22:47:28 -0500 |
---|---|---|
committer | dakataca | 2023-11-26 22:47:28 -0500 |
commit | 85a9c51c4bc75cbb24b11862c01ea9fcdfd10d7d (patch) | |
tree | 1f8f751c6a02173bf9fc9ea3a25e7d540659043a | |
download | aur-85a9c51c4bc75cbb24b11862c01ea9fcdfd10d7d.tar.gz |
Commit initial
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 140 |
2 files changed, 157 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..0eefc7f22339 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,17 @@ +pkgbase = pgadmin4 + pkgdesc = Most popular and feature rich Open Source administration and development platform for PostgreSQL + pkgver = 7.8 + pkgrel = 1 + url = https://www.pgadmin.org/ + arch = x86_64 + license = GPL3 + makedepends = python-pip + makedepends = python-build + makedepends = python-installer + makedepends = python-wheel + makedepends = python-authlib + depends = postgresql + depends = translate-shell + depends = openbsd-netcat + +pkgname = pgadmin4 diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..f4592056fe99 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,140 @@ +# Maintainer: dakataca <🐬danieldakataca@gmail.com> + +pkgname=pgadmin4 +_pkgname=${pkgname%[0-9]*} +pkgver=7.8 +pkgrel=1 +pkgdesc='Most popular and feature rich Open Source administration and development platform for PostgreSQL' +url='https://www.pgadmin.org/' +arch=(x86_64) +license=(GPL3) +makedepends=('python-pip' 'python-build' 'python-installer' 'python-wheel' 'python-authlib') +depends=('postgresql' 'translate-shell' 'openbsd-netcat') + +# Alistar ficheros en el directorio de instalación. +package() { + # pgadmin configs. + install -o $USER -g $USER -dvm 755 "$pkgdir/var/lib/$_pkgname/" + install -o $USER -g $USER -dvm 755 "$pkgdir/var/log/$_pkgname/" + install -dvm 755 "$pkgdir/opt/venvs/" + + # Existe /var/lib/postgres/? + if [ ! -d "/var/lib/postgres/" ]; then + install -o postgres -g postgres -dvm 755 "$pkgdir/var/lib/postgres/" + fi + cd $pkgdir/opt/venvs/ + python3 -m venv $pkgname + source $pkgname/bin/activate + pip install $pkgname + + # Script de ejecución pgadmin4. + install -Dvm755 <(cat <<'EOF' +#!/usr/bin/env bash + +translate_str() { + local -r lang=${LANG%_[A-Z][A-Z].UTF-8} + local str="" + if [[ $lang == en ]]; then + str=$1 + elif [[ $lang == es ]]; then + str=$2 + else + str=`trans -b :$lang "$str"` + fi + echo "$str" +} + +open_server() { + sleep 1 + while ! nc -z 127.0.0.1 5050; do + sleep 1 + done + [ $? -eq 0 ] && xdg-open http://127.0.0.1:5050 +} + +validate_postgres_password() { + declare -r command="$1" level="$2" + + while true; do + # Solicitar la contraseña + translate_str "Enter the postgres user's password at the $level" \ + "Ingrese la contraseña del usuario postgres a nivel de $level:" + bash -c "$command" + + # Validar el éxito del comando anterior + if (( $? == 0 )); then + translate_str "Valid password. Continuing..." "Contraseña válida. Continuando..." + break + else + translate_str "Incorrect password. Please try again." "Contraseña incorrecta. Inténtelo de nuevo." + fi + done +} + +# Comprobar si el usuario es root. +if [ "$EUID" -ne 0 ]; then + declare -r data=/var/lib/postgres/data \ + pg_hba=/var/lib/postgres/data/pg_hba.conf \ + postgres_config=/var/lib/postgres/data/postgresql.conf + + # Existe fichero de configuración base de datos postgres? + if ! sudo test -f "$pg_hba"; then + + sudo -iu postgres initdb -D $data --data-checksums + + # Sistema de ficheros es BTRFS? + [ `stat -f -c %T $data` == btrfs ] && sudo chattr +C $data + + # Restricts access rights to the database superuser by default. + sudo grep -E 'local +all +all +trust' $pg_hba || sudo sed -Ei.back \ + "s/(host +all +)all +([0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3}\/[0-9]{,2} +)trust$/\1postgres\t\2peer/ ; \ + s/(local +all +all +)trust$/\1scram-sha-256/" $pg_hba + + sudo grep -E "^listen_addresses = 'localhost'*" $postgres_config || sudo sed -i.back \ + "/^#password_encryption =*/ s/^#// ; \ + /listen_addresses = 'localhost'/ s/^#//" $postgres_config + + [[ `systemctl is-active --quiet postgresql.service` ]] && sudo systemctl restart postgresql.service || sudo systemctl start postgresql.service + + # Contraseña de usuario postgres a nivel de Base de Datos postgresql. + validate_postgres_password "sudo -u postgres psql -c '\password'" "postgresql" + + # Contraseña de usuario postgres a nivel de Base de Datos postgresql. + translate_str "User password \"postgres\" at the level of ArchLinux Operating System:" "Contraseña de usuario \"postgres\" a nivel de Sistema Operativo ArchLinux:" + + # Contraseña de usuario postgres a nivel de Sistema Operativo Linux. + validate_postgres_password "sudo passwd postgres" "S.O Archlinux" + fi + + # Servicio postgresql.service está activo? + [[ `systemctl is-active --quiet postgresql.service` ]] && sudo systemctl restart postgresql.service || sudo systemctl start postgresql.service + + # Activar entorno virtual pgadmin4. + source /opt/venvs/pgadmin4/bin/activate + open_server & + #[ $? -eq 0 ] && xdg-open http://127.0.0.1:5050 + pgadmin4 +else + translate_str "Error: You can't perform this operation as a superuser."\ + "Error: No puede realizar esta operación siendo superusuario." +fi +EOF +) $pkgdir/usr/bin/$pkgname +cd - +} + +## References: +# Support: pgadmin-support@lists.postgresql.org +# Website: https://www.pgadmin.org/ +# Tracker: https://github.com/pgadmin-org/pgadmin4/issues https://www.pgadmin.org/ + +## Test: +# updpkgsums +# makepkg --printsrcinfo > .SRCINFO + +## Clean: +# sudo pacman -Rnsc pgadmin4 --noconfirm +# sudo rm -rf /var/lib/p{ostgres,gadmin}/ +# git clean -dfx + +# 👤 Autor: https://t.me/dakataca 💻 🐬 # |