Compare commits

...

10 commits

12 changed files with 652 additions and 17 deletions

View file

@ -1,9 +1,5 @@
# AMBIENTE LOCAL PARA DESARROLLADORES (MRDEVS TOOLS) # AMBIENTE LOCAL PARA DESARROLLADORES (MRDEVS TOOLS)
## GUÍA PARA DESARROLLADORES - REV. 30/11/2024 ## GUÍA PARA DESARROLLADORES - REV. 08/12/2024
### REQUISITOS DE INSTALACIÓN
(Pendiente)
### PREPARACIÓN DE AMBIENTE LOCAL PARA DESARROLLADORES ### PREPARACIÓN DE AMBIENTE LOCAL PARA DESARROLLADORES
@ -14,17 +10,51 @@ En la carpeta $HOME descargue el repositorio devs (la carpeta no debe existir):
$ cd $HOME $ cd $HOME
$ git clone https://git.rosero.one/mrosero/devs.git $ git clone https://git.rosero.one/mrosero/devs.git
#### Instalación de herramientas para gestión de contenedores **Nota:** Previamente, debe tener instalado el comando git.
#### Instalación de herramientas básicas y de gestión de contenedores
A partir de este momento, la carpeta $HOME/devs será nuestra área de desarrollo donde se descargaran los diversos ambientes de desarrollo. Como primer paso instalaremos las herramientas básicas y de gestión de contenedores. Por razones de seguridad, priorizamos el uso de **podman**. A partir de este momento, la carpeta $HOME/devs será nuestra área de desarrollo donde se descargaran los diversos ambientes de desarrollo. Como primer paso instalaremos las herramientas básicas y de gestión de contenedores. Por razones de seguridad, priorizamos el uso de **podman**.
$ cd $HOME/devs $ cd $HOME/devs
$ bin/bootstrap.sh $ bin/bootstrap.sh
### GESTIÓN DE DNS LOCAL PARA DESARROLLADORES (DNSMASQ) #### Actualización de ambiente local de desarrollo
#### Habilitar permiso local para puerto 53 (DNS) Actualice los nuevos cambios y funcionalidades del ambiente de desarrollo local raíz
Antes de poder levantar el contenedor dnsmasq, se requiere dar permisos para poder habilitar el puerto 53: $ cd $HOME/devs
$ bin/update.sh
### ACCESO VPN A INFRAESTRUCTURA PARA DESARROLLADORES
#### Instalación de Cliente VPN con ambiente GUI (gráfico)
Para tener acceso a todos los recursos y servidores de desarrollo se requiere acceder vía VPN a la infraestructura d desarrollo. Para esto, se requiere instalar el cliente PRITUNL como sigue:
$ cd $HOME/devs
$ bin/vpn_install.sh [--help] [--version] [--update]
Nota: En determinadas versiones, las actualizaciones a partir de los repositorios no es posible por lo que usamos el argumento --update.
#### Instalación de Cliente OpenVPN con ambiente TUI (texto)
(pendiente)
#### Obtener archivo de configuración para acceso VPN
(pendiente)
### GESTIONANDO FIRMA GPG
#### Inicialización de configuración GPG
Como un requisito de nuestra plataforma, todos los desarrolladores deberán contar, por lo menos, con una clave GPG, que se utilizará para firmar o decifrar archivos, correos u otros. Esto se hará con el uso del comando gpgp que ya debió ser instalado con la ejecución de bin/boostrap.sh.
En este paso estableceremos la configuración por defecto de GPG:
$ cd $HOME/devs
$ bin/gpg_init.sh
#### Creación de clave GPG
$ dns/setport53.sh

View file

@ -55,6 +55,7 @@ install() {
local WGET_PACKAGE=wget local WGET_PACKAGE=wget
local DIALOG_PACKAGE=dialog local DIALOG_PACKAGE=dialog
local SOPS_PACKAGE=sops local SOPS_PACKAGE=sops
local GNUPG_PACKAGE=gnupg
# Load base bash library # Load base bash library
source $BIN_PATH/$LIBRARY/base.lib source $BIN_PATH/$LIBRARY/base.lib
@ -86,6 +87,13 @@ install() {
os_pkgs_install $GIT_PACKAGE os_pkgs_install $GIT_PACKAGE
fi fi
# Install gnupg from OS Packages
command_installed $GNUPG_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $GNUGP_PACKAGE
fi
# Install dialog from OS Packages # Install dialog from OS Packages
command_installed $DIALOG_PACKAGE command_installed $DIALOG_PACKAGE
if [ $? -ne 0 ] if [ $? -ne 0 ]

6
bin/config/gpg.config Normal file
View file

@ -0,0 +1,6 @@
keyserver hkps://keyserver.ubuntu.com
utf8-strings
keyid-format long
with-fingerprint
with-sig-list
list-options show-notations

99
bin/gpg_init.sh Executable file
View file

@ -0,0 +1,99 @@
#!/bin/bash
#
# gpg_init.sh
# Modified: 2024/12/09 10:27:00
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
DEVSPATH=devs
BIN_HOME=$HOME/$DEVSPATH
BIN_MESG=bin/msg
BIN_LIBS=bin/lib
# CHECK SHELL LANGUAGE
BIN_LANG=${LANG:0:2}
# LOAD BASE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/base.lib
#baselib_test
# LOAD CONSOLE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/console.lib
#consolelib_test
# LOAD GPG BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/gpg.lib
#gpglib_test
# Load head messages
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
# Load gpg messages
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "gpg"
########### MAIN PROGRAM ###########
# Set program title
title="$head_000 $head_002"
apps_title="${gpmsg_000}"
# Check if dialog is not installed, exited!
command_installed "dialog"
if [ $? -ne 0 ]
then
display_devstools_header "${gpmsg_000}"
echo "${head_001}"
exit 200
fi
# Check if os is valid!
get_osname
if [ "${os_name}" == "${head_unknow}" ]
then
dialog_error_box "${head_error}" "${head_os_error}"
exit 3
fi
# Reset gpg configuration to template
dialog_yesno "${gpmsg_101}"
case ${result} in
0)
gpg_setting "$BIN_HOME" "$GPG_DEFAULT_PATH" "$GPG_DEFAULT_PATH" "$DATEBAK"
rc=$?
case $rc in
0)
dialog_error_box "${head_info}" "${gpmsg_102}"
clear
exit 0
;;
1)
dialog_error_box "${head_error}" "${gpmsg_103}"
clear
exit 0
;;
*)
dialog_error_box "${head_error}" "${head_op_error} (${rc})"
;;
esac
;;
*)
dialog_error_box "${head_error}" "${head_op_error}"
;;
esac
# End Main Program
clear

100
bin/hexroute Executable file
View file

@ -0,0 +1,100 @@
#!/bin/bash
######################################################################
#
# hexroute - Convert human readable routes to dhcpd static route info
# for Windows(r) clients
#
# Copyright (c) 2005-2015 Karl McMurdo
#
# Freely distributable, but please keep header intact
#
# Update: May 10, 2007 Change Max Quad to 255
#
######################################################################
function split_ipaddr() {
[ ${1:-X} = X -o "${1}" != ${1//[^.0-9]/} -o ${1:-X} = X \
-o "${1//[0-9]/}" != "..." ] && return 1
local rval=0
local t
local T[1]
local T[2]
local T[3]
local T[4]
T[1]=${1%%.*}
T[2]=${1#*.}
T[2]=${T[2]%%.*}
T[3]=${1#*.*.}
T[3]=${T[3]%%.*}
T[4]=${1#*.*.*.}
[ ${T[1]} = 0 ] && rval=1
for t in 1 2 3 4
do
[ ${T[${t}]:-999} -gt 255 ] && rval=1
eval "${2}[${t}]=${T[${t}]}"
done
return ${rval}
}
USAGE='echo -e "Usage: ${0//*\/} [-v|-h] target/bits [gw] gateway [target/bits [gw] gateway ...]\n\n\tie: ${0} 172.16.0.0/16 gw 192.168.1.1\n" && exit 1'
INFO="HexRoute 1.0 Copyright (c) 2015 Karl McMurdo
Converts human readable route information to a dhcpd hex string
-v Once prints full dhcpd.conf line for route(s)
Twice also prints option definiton lines for dhcpd.conf
-h Prints this message
"
DHCPHDR="# New Option Type for Windows Client Static Routes
option new-static-routes code 249 = string;"
DHCPS="option new-static-routes "
DHCPE=";"
BADTARG='echo -e "Invalid target network: ${1}" && exit 2'
BADBITS='echo -e "Invalid Network bit value: ${1}" && exit 3'
BADGW='echo -e "Invalid Gateway: ${2}" && exit 4'
VERBOSE=false
EXTRAVERBOSE=false
while [ "${1:0:1}" = "-" ]
do
if [ "${1}" = "-v" ]
then
$VERBOSE && EXTRAVERBOSE=true
VERBOSE=true
elif [ "${1}" = "-h" ]
then
echo "${INFO}"
eval "${USAGE}"
else
eval "${USAGE}"
fi
shift
done
[ ${#} -lt 2 ] && eval "${USAGE}"
OUT=""
while [ ${#} -ge 2 ]
do
split_ipaddr ${1/\/*/} TARG || eval "${BADTARG}"
BITS=${1/*\//}
shift
[ ${BITS:-X} = X -o "${BITS}" != ${BITS//[^0-9]/} ] && eval "${BADBITS}"
[ ${BITS} -gt 32 -o ${BITS} -lt 1 ] && eval "${BADBITS}"
[ ${1:-X} = gw ] && shift
split_ipaddr ${1:-X} GW || eval "${BADGW}"
shift
OUT=${OUT}$( printf ":%02x:%02x" ${BITS} ${TARG[1]} )
[ ${BITS} -gt 8 ] && OUT=${OUT}$( printf ":%02x" ${TARG[2]} )
[ ${BITS} -gt 16 ] && OUT=${OUT}$( printf ":%02x" ${TARG[3]} )
[ ${BITS} -gt 24 ] && OUT=${OUT}$( printf ":%02x" ${TARG[4]} )
OUT=${OUT}$( printf ":%02x:%02x:%02x:%02x" ${GW[@]} )
done
$EXTRAVERBOSE && echo "${DHCPHDR}"
if $VERBOSE
then
echo ${DHCPS}${OUT/:/}${DHCPE}
else
echo ${OUT/:/}
fi

View file

@ -19,6 +19,8 @@
DEVS_NAME=config/project.head DEVS_NAME=config/project.head
GIT_IGNORE=.gitignore GIT_IGNORE=.gitignore
DATENOW="$(date +"%Y-%m-%d %H:%M:%S")"
DATEBAK="$(date +"%Y%m%d%H%M%S")"
DOCKER_LOCAL=dockerfile.local DOCKER_LOCAL=dockerfile.local
DOCKER_BASE=dockerfile.base DOCKER_BASE=dockerfile.base

View file

@ -18,7 +18,79 @@
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
SOPS_VERSION=v3.9.2 SOPS_VERSION=3.9.2
PRITUNL_SIGN=7568D9BB55FF9E5287D586017AE645C0CF8E292A
PRITUNL_UPDT=1.3.4099.99
UBUNTU_LIST=("jammy" "noble" "oracular")
UBUNTU_UPDT_LIST=("noble" "oracular")
# Install pritunl vpn package
function install_pritunl() {
if [ "$(uname)" == "Darwin" ]; then
# En macOS, instalamos o actualizamos Python a través de Homebrew
brew install git go node
bash <(curl -s https://raw.githubusercontent.com/pritunl/pritunl-client-electron/master/tools/install_macos.sh)
return $?
fi
OS_INFO=$(lsb_release -a 2>/dev/null)
if [ $? -eq 0 ]; then
OS_VERSION=$(echo "$OS_INFO" | grep "Codename" | awk '{print $2}' | tr -d ' ')
else
OS_INFO=$(cat /etc/os-release 2>/dev/null)
OS_VERSION=$(echo "$OS_INFO" | grep "VERSION_CODENAME" | awk -F ': +' '{print $2}')
fi
if echo "$OS_INFO" | grep -q "Ubuntu"; then
if printf "%s\n" "${UBUNTU_LIST[@]}" | grep -q "^${OS_VERSION}$"
then
if [ ! -f /etc/apt/sources.list.d/pritunl.list ]; then
echo "deb https://repo.pritunl.com/stable/apt $OS_VERSION main" > /etc/apt/sources.list.d/pritunl.list
fi
if [ ! -f /etc/apt/trusted.gpg.d/pritunl.asc ]; then
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys $PRITUNL_SIGN
gpg --armor --export $PRITUNL_SIGN | tee /etc/apt/trusted.gpg.d/pritunl.asc
fi
apt update
apt install pritunl-client-electron -y
local rc=$?
if [ $rc -eq 0 ]; then
systemctl daemon-reload
rc=$?
fi
return $rc
fi
fi
return 10
}
# Update pritunl vpn package
function update_pritunl() {
OS_INFO=$(lsb_release -a 2>/dev/null)
if [ $? -eq 0 ]; then
OS_VERSION=$(echo "$OS_INFO" | grep "Codename" | awk '{print $2}' | tr -d ' ')
else
OS_INFO=$(cat /etc/os-release 2>/dev/null)
OS_VERSION=$(echo "$OS_INFO" | grep "VERSION_CODENAME" | awk -F ': +' '{print $2}')
fi
if echo "$OS_INFO" | grep -q "Ubuntu"; then
if printf "%s\n" "${UBUNTU_UPDT_LIST[@]}" | grep -q "^${OS_VERSION}$"
then
cd /tmp
wget https://github.com/pritunl/pritunl-client-electron/releases/download/$PRITUNL_UPDT/pritunl-client-electron_$PRITUNL_UPDT-0ubuntu1.${OS_VERSION}_amd64.deb
dpkg -i pritunl-client-electron_$PRITUNL_UPDT-0ubuntu1.${OS_VERSION}_amd64.deb
return $?
fi
fi
return 10
}
# Install python3 package # Install python3 package
function python3_install() { function python3_install() {
@ -66,24 +138,32 @@ function sops_install() {
case $arch in case $arch in
x86_64) x86_64)
# Download the binary # Download the binary
curl -LO https://github.com/getsops/sops/releases/download/v$SOPS_VERSION/sops-$SOPS_VERSION.linux.amd64 curl -LO https://github.com/getsops/sops/releases/download/v$SOPS_VERSION/sops-v$SOPS_VERSION.linux.amd64
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
# Move the binary in to your PATH # Move the binary in to your PATH
mv sops-v$SOPS_VERSION.linux.amd64 /usr/local/bin/sops mv sops-v$SOPS_VERSION.linux.amd64 /usr/local/bin/sops
if [ $? -eq 0 ]; then
# Make the binary executable # Make the binary executable
chmod +x /usr/local/bin/sops chmod a+x /usr/local/bin/sops
else
return 1
fi
else else
return 1 return 1
fi fi
;; ;;
arm*) arm*)
# Download the binary # Download the binary
curl -LO https://github.com/getsops/sops/releases/download/v$SOPS_VERSION/sops-$SOPS_VERSION.linux.arm64 curl -LO https://github.com/getsops/sops/releases/download/v$SOPS_VERSION/sops-v$SOPS_VERSION.linux.arm64
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
# Move the binary in to your PATH # Move the binary in to your PATH
mv sops-v$SOPS_VERSION.linux.arm64 /usr/local/bin/sops mv sops-v$SOPS_VERSION.linux.arm64 /usr/local/bin/sops
if [ $? -eq 0 ]; then
# Make the binary executable # Make the binary executable
chmod +x /usr/local/bin/sops chmod a+x /usr/local/bin/sops
else
return 1
fi
else else
return 1 return 1
fi fi

77
bin/lib/gpg.lib Normal file
View file

@ -0,0 +1,77 @@
#!/bin/bash
#
# Library: gpg.lib
# Modified: 2024/12/09 08:20:00
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
GPG_DEFAULT_PATH=~/.gnupg
GPG_CFG_PATH=bin/config
GPG_TEMPLATE=gpg.config
GPG_CONFIG=gpg.conf
GPG_SUBKEY_ID=""
DB_GPG_SUBKEYS_KEY="subkey_id"
DB_GPG_SUBKEYS="GPG_SUBKEYS"
DF_GPG_SUBKEYS="${DB_GPG_SUBKEYS}.sql"
REVOKE_FILES="*.rev"
# Test library
function gpglib_test() {
echo "GPG Library loaded!"
exit 1
}
# Set gpg environment
function gpg_setting() {
local BIN_CONFIG=$1
local GPG_PATH=$2
local LOCAL_BACKUP=$3
local TIMESTAMP=$4
# Check if gpg directory path exists
if [ ! -d "${GPG_PATH}" ]
then
# Create gpg directory path
mkdir -p ${GPG_PATH}
if [ $? -ne 0 ]; then
return 2
fi
fi
# Check if gpg template file exists
if [ ! -f "${BIN_CONFIG}/${GPG_CFG_PATH}/${GPG_TEMPLATE}" ]
then
return 1
fi
if [ -d "${LOCAL_BACKUP}" ]
then
if [ -f "${GPG_PATH}/${GPG_CONFIG}" ]
then
# Destination file backup
local BACKUP_FILE="${LOCAL_BACKUP}/gpg${TIMESTAMP}.bak"
cp -f "${GPG_PATH}/${GPG_CONFIG}" "${BACKUP_FILE}"
if [ $? -ne 0 ]; then
return 3
fi
fi
fi
# Copia el archivo de plantilla al destino
cp -f "${BIN_CONFIG}/${GPG_CFG_PATH}/${GPG_TEMPLATE}" "${GPG_PATH}/${GPG_CONFIG}"
return $?
}

View file

@ -12,12 +12,21 @@
#============================================================================== #==============================================================================
bomsg_000="BOOTSTRAP" bomsg_000="BOOTSTRAP"
bomsg_001="ACTUALIZAR DEVS"
bomsg_002="PERMITIR PUERTO 53" bomsg_002="PERMITIR PUERTO 53"
bomsg_003="Puerto 53 no se ha liberado!" bomsg_003="Puerto 53 no se ha liberado!"
bomsg_004="Puerto 53 (dns) ha sido liberado para uso no-root" bomsg_004="Puerto 53 (dns) ha sido liberado para uso no-root"
bomsg_005="Arquitectura desconocida:" bomsg_005="Arquitectura desconocida:"
bomsg_006="Instalando Mozilla SOPS..." bomsg_006="Instalando Mozilla SOPS..."
bomsg_007="Instalación de Mozilla SOPS completada..." bomsg_007="Instalación de Mozilla SOPS completada..."
bomsg_008_1="Carpeta"
bomsg_008_2="no es del ambiente de desarrollo!"
bomsg_010="INSTALAR VPN"
bomsg_011="Instalando cliente VPN (pritunl)"
bomsg_012="No se completo la instalación del cliente VPN (pritunl)"
bomsg_013="Cliente VPN (pritunl) instalado satisfactoriamente!"
bomsg_014="Sistema Operativo no soportado por pritunl"
bomsg_015="ACTUALIZAR VPN"
pymsg_001="Instalando python3" pymsg_001="Instalando python3"
pymsg_002="Instalando dialog" pymsg_002="Instalando dialog"
@ -29,3 +38,11 @@ pdmsg_001="Instalando Podman..."
pdmsg_003="Podman fue instalado satisfactoriamente" pdmsg_003="Podman fue instalado satisfactoriamente"
domsg_005="----> Docker previamente instalado, desinstale para poder instalar PODMAN o utilice DOCKER" domsg_005="----> Docker previamente instalado, desinstale para poder instalar PODMAN o utilice DOCKER"
bomsg_101_1="Uso:"
bomsg_101_2="[--help] [--version] [--update]"
bomsg_102="Descripción: Este bash script se usa para instalar el cliente vpn (pritunl)"
bomsg_103="Opciones:"
bomsg_104=" --help Muestra este mensaje de ayuda."
bomsg_105=" --version Muestra la versión del script."
bomsg_106=" --update Hace una actualización (upgrade) del cliente cuando no disponible en el repo"

20
bin/msg/gpg.es Normal file
View file

@ -0,0 +1,20 @@
#!/usr/bin/env bash
#bash script : gpg.es
#apps : GPG Developer Utilities
#description : GPG Translate Messages (es)
#author : MRP/mrp - Mauro Rosero P.
#company email : mauro@rosero.one
#personal email : mauro.rosero@gmail.com
#date : 20241130
#version : 1.0.2
#notes :
#==============================================================================
#==============================================================================
gpmsg_000="INICIALIZAR GPG"
gpmsg_101="Desea inicializar la configuración de GPG?"
gpmsg_102="Inicialización de configuración GPG completada!"
gpmsg_103="Plantilla de configuración GPG no existe!"

60
bin/update.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/bash
#
# update.sh
# Modified: 2024/12/01 15:27:00
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
DEVSPATH=devs
BIN_HOME=$HOME/$DEVSPATH
BIN_MESG=bin/msg
BIN_LIBS=bin/lib
# CHECK SHELL LANGUAGE
BIN_LANG=${LANG:0:2}
# LOAD BASE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/base.lib
#baselib_test
load_bootstrap_msg() {
local BIN_PATH=$1
local MSG_PATH=$2
local LANGUAGE=$3
# Load head messages
load_messages $BIN_PATH $MSG_PATH $LANGUAGE "head"
# Load bootstrap messages
load_messages $BIN_PATH $MSG_PATH $LANGUAGE "bootstrap"
}
# Load messages
load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG
# Display Headers
display_devstools_header "- $bomsg_001"
# Run update devs environment
if [ "$PWD" == "$BIN_HOME" ]
then
git pull
else
cd $BIN_HOME
git pull
fi

136
bin/vpn_install.sh Executable file
View file

@ -0,0 +1,136 @@
#!/bin/bash
#
# vpn_install.sh
# Modified: 2024/12/01 15:27:00
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
DEVSPATH=devs
BIN_HOME=$HOME/$DEVSPATH
BIN_MESG=bin/msg
BIN_LIBS=bin/lib
VERSION=1.0.1
# CHECK SHELL LANGUAGE
BIN_LANG=${LANG:0:2}
# LOAD BASE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/base.lib
#baselib_test
function load_bootstrap_msg() {
local BIN_PATH=$1
local MSG_PATH=$2
local LANGUAGE=$3
# Load head messages
load_messages $BIN_PATH $MSG_PATH $LANGUAGE "head"
# Load bootstrap messages
load_messages $BIN_PATH $MSG_PATH $LANGUAGE "bootstrap"
}
# Function to display help message
function help() {
echo "$bomsg_101_1 $0 $bomsg_101_2"
echo "$bomsg_102"
echo "$bomsg_103"
echo "$bomsg_104"
echo "$bomsg_105"
echo "$bomsg_106"
}
function install() {
local BIN_PATH=$1
local LIBRARY=$2
local MESSAGES=$3
local INSTALL_LANG=$4
local UPDATE=$5
# Load base bash library
source $BIN_PATH/$LIBRARY/base.lib
# Load bootstrap bash library
source $BIN_PATH/$LIBRARY/bootstrap.lib
# Load bootstrap messages
load_bootstrap_msg $BIN_PATH $MESSAGES $INSTALL_LANG
# Install pritunl vpn client (gui)
if $UPDATE; then
update_pritunl
rc=$?
else
install_pritunl
rc=$?
fi
case $rc in
0)
echo "$bomsg_013"
;;
10)
echo "$bomsg_014"
;;
*)
echo "$bomsg_012"
;;
esac
}
# Load messages
load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG
# Check for arguments option
help=false
version=false
update=false
title=$bomsg_010
while [[ $# -gt 0 ]]; do
case $1 in
--help)
help=true
shift
;;
--version)
version=true
shift
;;
--update)
title="$bomsg_015"
update=true
shift
;;
esac
done
# Check to show help
if $help; then
help
exit 0
fi
# Check to show command version
if $version; then
echo "$head_version $VERSION"
exit 0
fi
# Display Headers
display_devstools_header "- $title"
# Run install with sudo
sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG $update"