From 88d122ea6e4fccb2b35c38a0eeb34a5d75e2153a Mon Sep 17 00:00:00 2001 From: Mauro Rosero P Date: Mon, 9 Dec 2024 13:43:45 -0500 Subject: [PATCH] =?UTF-8?q?[IMPROVED]=20gpg=5Finit.sh=20-=20(Re)inicializa?= =?UTF-8?q?ci=C3=B3n=20de=20configuraci=C3=B3n=20GPG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++- bin/config/gpg.config | 6 +++ bin/gpg_init.sh | 99 +++++++++++++++++++++++++++++++++++++++++++ bin/lib/base.lib | 2 + bin/lib/gpg.lib | 77 +++++++++++++++++++++++++++++++++ bin/msg/gpg.es | 20 +++++++++ 6 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 bin/config/gpg.config create mode 100755 bin/gpg_init.sh create mode 100644 bin/lib/gpg.lib create mode 100644 bin/msg/gpg.es diff --git a/README.md b/README.md index 03e69bb..a9148e1 100644 --- a/README.md +++ b/README.md @@ -45,4 +45,16 @@ Nota: En determinadas versiones, las actualizaciones a partir de los repositorio (pendiente) -### GESTIONANDO FIRMA GPG +### 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 + diff --git a/bin/config/gpg.config b/bin/config/gpg.config new file mode 100644 index 0000000..78d9ebc --- /dev/null +++ b/bin/config/gpg.config @@ -0,0 +1,6 @@ +keyserver hkps://keyserver.ubuntu.com +utf8-strings +keyid-format long +with-fingerprint +with-sig-list +list-options show-notations diff --git a/bin/gpg_init.sh b/bin/gpg_init.sh new file mode 100755 index 0000000..2682fa8 --- /dev/null +++ b/bin/gpg_init.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# +# gpg_init.sh +# Modified: 2024/12/09 10:27:00 +# Derechos de Autor (C) [2024] [Mauro Rosero P. ] +# +# 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 . + +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 diff --git a/bin/lib/base.lib b/bin/lib/base.lib index 2066b77..ebaee1b 100644 --- a/bin/lib/base.lib +++ b/bin/lib/base.lib @@ -19,6 +19,8 @@ DEVS_NAME=config/project.head GIT_IGNORE=.gitignore +DATENOW="$(date +"%Y-%m-%d %H:%M:%S")" +DATEBAK="$(date +"%Y%m%d%H%M%S")" DOCKER_LOCAL=dockerfile.local DOCKER_BASE=dockerfile.base diff --git a/bin/lib/gpg.lib b/bin/lib/gpg.lib new file mode 100644 index 0000000..90b8871 --- /dev/null +++ b/bin/lib/gpg.lib @@ -0,0 +1,77 @@ +#!/bin/bash +# +# Library: gpg.lib +# Modified: 2024/12/09 08:20:00 +# Derechos de Autor (C) [2024] [Mauro Rosero P. ] +# +# 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 . + +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 $? + +} diff --git a/bin/msg/gpg.es b/bin/msg/gpg.es new file mode 100644 index 0000000..d07d3ad --- /dev/null +++ b/bin/msg/gpg.es @@ -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!"