Slackware: SlackBuild para o Warsaw da CEF Caixa Econômica Federal

Publicado por Paulo em 16/06/2022

[ Hits: 1.639 ]

 


Slackware: SlackBuild para o Warsaw da CEF Caixa Econômica Federal



Olá pessoal, sabemos que para utilizar o internet banking da CEF - Caixa Econômica Federal no Linux, é necessário o software warsaw. O pacote para o Debian funciona no Slackware 15.0 e -current. Aqui no Viva O Linux existe uma dica sobre como rodar o warsaw do Debian no Slackware.

O problema é que o Slackware não é uma distro homologada pela CEF para acessar o internet bank.

Entrei em contato com a CEF pedindo a inclusão do Slackware 15.0 como distro homologada, mas não responderam nada de volta.

Fiz um SlackBuild para instalar no Slackware 15.0 current. Testei apenas em máquinas virtuais VirtualBox, uma instalação com Slackware64-current e outra com Slackware 15.0 estável.

Meu objetivo é mandar o SlackBuild para eles, talvez vendo um script que faz o pacote de instalação eles testem e aceitem o Slackware com distro "utilizável" com o home-bank da CEF.

Gostaria de saber a opinião de vocês sobre o SlackBuild antes de mandar para a CEF, se tem bugs e principalmente se funciona.

O script talvez esteja meio super-comentado, mas eu imagino que o pessoal na CEF não seja familiarizado com o Slackware.

Quaisquer opiniões, sugestões, correções e alterações são bem-vindas.

Download do script: warsaw-slackbuild.sh

Código:

#!/bin/bash

# 2022 Paulo Bettega
# Este script SlackBuild descompacta o pacote Debian GBPCEFwr(64|32).deb usado
# no internet banking da CEF-Caixa Econômica Federal, e faz um pacote para ser
# instalado no Slackware 15.0 (versão estável) e Slackware -current (versão de
# desenvolvimento).
#
# Link para o Slackware 15.0:
# http://www.slackware.com/
#
# Link para o Slackware -current:
# https://slackware.nl/slackware/slackware-current-iso/
# https://slackware.nl/slackware/slackware64-current-iso/
# (novos isos são criados automaticamente quando há mudanças no ChangeLog,
#  as mudanças são quase sempre diárias
# https://ftp.osuosl.org/pub/slackware/slackware{64}-current/ChangeLog.txt)
#
# Para executar este script: o script deve estar no mesmo diretório que o
# pacote Debian GBPCEFwr(64|32).deb. O pacote de instalação será criado no
# diretório /tmp (default para $OUTPUT).
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



cd $(dirname $0) ; CWD=$(pwd)

# GBPCEFwr é o nome do pacote Debian. Poderia ser algum outro como "warsaw".
PRGNAM=GBPCEFwr
# É melhor não haver hífen no número de versão.
VERSION=${VERSION:-2.21.1_13}
BUILD=${BUILD:-1}
# Tag é a identificação do autor do script slackbuild, tem que ser alguma coisa.
# Apenas os pacotes originais do Slackware não tem tag no nome.
TAG=${TAG:-phfb}
PKGTYPE=${PKGTYPE:-txz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
       *) ARCH=$( uname -m ) ;;
  esac
fi

# Arquitetura do pacote Debian de acordo com $ARCH.
case "$ARCH" in
     i586) DEB_ARCH=32   ;;
   x86_64) DEB_ARCH=64   ;;
esac

# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

set -e

rm -rf "$PKG"
mkdir -p "$TMP" "$PKG" "$OUTPUT"
cd "$TMP"
rm -rf "$PRGNAM-$VERSION"
mkdir "$PRGNAM-$VERSION"
cd "$PRGNAM-$VERSION"
ar x "$CWD"/GBPCEFwr"$DEB_ARCH".deb
tar xvf data.tar.?z -C "$PKG"
# Backup dos arquivos relacionados ao Debian.
# O warsaw parece rodar sem problemas no Slackware sem esses arquivos.
mkdir "$PKG"/usr/share/doc/warsaw/debian-files
tar xvf control.tar.?z -C "$PKG"/usr/share/doc/warsaw/debian-files
cp -r "$PKG"/etc "$PKG"/lib "$PKG"/usr/share/doc/warsaw/debian-files
rm -r "$PKG"/etc/init "$PKG"/etc/init.d/warsaw "$PKG"/lib
gunzip "$PKG"/usr/share/doc/warsaw/changelog.Debian.gz

mkdir -p "$PKG"/etc/rc.d/{rc{0,1,2,3,4,5,6},init}.d
# Arquivo de inicialização no boot.
cat <<'EOF' > "$PKG"/etc/rc.d/init.d/warsaw
#!/bin/sh
#
# /etc/rc.d/init.d/warsaw start|stop|restart|status
#
# Start/Stop/Restart/Status warsaw daemon.
#
# Provides: /usr/local/bin/warsaw/core
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Warsaw provides the needed software to use some banking services of popular financial organizations in South America. Topaz OFD Desktop https://www.topaz.com.br/ofd/contato-antifraude.php


# pid usado nas funções status e stop.
core_pid_arq=$(cat /var/run/core.pid 2>/dev/null)
core_pid_pgrep=$(pgrep -u root -f /usr/local/bin/warsaw/core)


start(){
   echo "Starting CEF internet banking software: /usr/bin/warsaw"
   /usr/bin/warsaw start
}

status(){
   if [ ! -z "$core_pid_pgrep" ]; then
       echo /usr/bin/warsaw is running for root
   else
       echo /usr/bin/warsaw is not running for root
   fi

   if [ "$USER" = root ]; then
       ps aux|awk '/warsaw/ {
      if ( !/awk|^root/ ) print "/usr/bin/warsaw is running for "$1
      }'
   fi

   if [ "$USER" != root ]; then
       if pgrep -u "$USER" -f /usr/local/bin/warsaw/core >/dev/null; then
      echo /usr/bin/warsaw is running for "$USER"
       else
      echo /usr/bin/warsaw is not running for "$USER"
       fi
   fi
}

stop(){

   echo "Stoping CEF internet banking software: /usr/bin/warsaw"
   /usr/bin/warsaw stop

   # "/usr/bin/warsaw stop" encerra todos os processos
   # /usr/local/bin/warsaw/core do root e dos usuários, mas não remove
   # o arquivo com o pid "/var/run/core.pid" (além disso, também não
   # encerra o processo /usr/local/bin/warsaw/wsatspi para os usuários,
   # que algumas vezes é iniciado, outras não).
   #
   # core.pid é talvez um nome muito genérico, seria melhor se fosse
   # warsaw-core.pid para o root, e warsaw-core-$USER.pid e
   # warsaw-wsatspi-$USER.pid para os processos dos usuários.
   #
   # Tenha certeza que o arquivo /var/run/core.pid se refere realmente
   # ao processo /usr/loca/bin/warsaw/core antes de remover o arquivo.
   if [ "$core_pid_arq" = "$core_pid_pgrep" ]; then
      rm -f /var/run/core.pid 2>/dev/null
   fi

   # Garanta que nenhum processo warsaw ficou pendente.
   # (algumas vezes o processo /usr/local/bin/warsaw/wsatspi -apenas para
   #  os usuários, nunca vi esse processo rodando como root- é iniciado
   #  e não é encerrado).
   sleep 1
   if ps aux|grep -q /usr/local/bin/warsaw|grep -v grep; then
       for i in /usr/local/bin/warsaw/*; do
      pkill -f /usr/local/bin/warsaw/$i 2>/dev/null
       done
   fi
   sleep 1
   if ps aux|grep -q /usr/local/bin/warsaw|grep -v grep; then
       for i in /usr/local/bin/warsaw/*; do
      pkill -9 -f /usr/local/bin/warsaw/$i 2>/dev/null
       done
   fi
}

case "$1" in
   start) start
   ;;

   stop) stop
   ;;

   status) status
   ;;

   restart) stop; sleep 1; start
   ;;


   *)echo "Usage: $0 start|stop|restart|status"
esac
EOF

chmod +x "$PKG"/etc/rc.d/init.d/warsaw

mkdir -p "$PKG"/etc/xdg/autostart
# Arquivo de inicialização na interface gráfica. Com a opção "Hidden=true", a
# idéia é que cada usuário habilite o serviço por conta própria.
cat <<'EOF' > "$PKG"/etc/xdg/autostart/warsaw.desktop
[Desktop Entry]
Encoding=UTF-8
Version=2.21.1-13
Type=Application
Name=GBPCEFwr warsaw
Comment=CEF internet banking software.
Icon=
Exec=/etc/rc.d/init.d/warsaw start
OnlyShowIn=
RunHook=0
StartupNotify=false
Terminal=false
Hidden=true
EOF

chown -R root:root .
find -L .
( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555
  -o -perm 511 ) -exec chmod 755 {} ; -o
( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444
  -o -perm 440 -o -perm 400 ) -exec chmod 644 {} ;

cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/share/doc/warsaw/$PRGNAM.SlackBuild

mkdir -p "$PKG"/install
# Arquivo "install/slack-desc", contém informação sobre o pacote mostrada
# na instalação, e fica disponível no arquivo de registro da instalação em
# "/var/lib/pkgtools/packages/<nome do pacote>".
cat <<'EOF' > "$PKG"/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

        |-----handy-ruler------------------------------------------------------|
GBPCEFwr: GBPCEFwr (needed software to run some banking services)
GBPCEFwr:
GBPCEFwr: Warsaw provides the needed software to use some banking services,
GBPCEFwr: will easily add the required software to let you use some of the
GBPCEFwr: internet banking services of popular financial organizations
GBPCEFwr: in South America. If you are unsure if you need this package
GBPCEFwr: please call your service desk and ask them for instructions.
GBPCEFwr: Version: 2.21.1-13
GBPCEFwr: Topaz OFD Desktop https://www.topaz.com.br/ofd/contato-antifraude.php
GBPCEFwr: Depends: libdbus-1-3, procps, zenity, python3
GBPCEFwr: Suggests: python3-gpgme | python3-gpg
EOF

# Arquivo "install/doinst.sh", executa comandos necessários na instalação.
# Cria os links "start" e "kill" para cada runlevel.
cat <<'EOF' > "$PKG"/install/doinst.sh
( cd etc/rc.d/rc0.d ; rm -rf Kwarsaw )
( cd etc/rc.d/rc0.d ; ln -sf /etc/rc.d/init.d/warsaw Kwarsaw )
( cd etc/rc.d/rc1.d ; rm -rf Kwarsaw )
( cd etc/rc.d/rc1.d ; ln -sf /etc/rc.d/init.d/warsaw Kwarsaw )
( cd etc/rc.d/rc2.d ; rm -rf Swarsaw )
( cd etc/rc.d/rc2.d ; ln -sf /etc/rc.d/init.d/warsaw Swarsaw )
( cd etc/rc.d/rc3.d ; rm -rf Swarsaw )
( cd etc/rc.d/rc3.d ; ln -sf /etc/rc.d/init.d/warsaw Swarsaw )
( cd etc/rc.d/rc4.d ; rm -rf Swarsaw )
( cd etc/rc.d/rc4.d ; ln -sf /etc/rc.d/init.d/warsaw Swarsaw )
( cd etc/rc.d/rc5.d ; rm -rf Swarsaw )
( cd etc/rc.d/rc5.d ; ln -sf /etc/rc.d/init.d/warsaw Swarsaw )
( cd etc/rc.d/rc6.d ; rm -rf Kwarsaw )
( cd etc/rc.d/rc6.d ; ln -sf /etc/rc.d/init.d/warsaw Kwarsaw )
EOF

mkdir -p "$PKG"/var/lib/pkgtools/douninst.sh
# Arquivo "/var/lib/pkgtools/douninst.sh/<nome do pacote>", executa comandos
# necessários na desinstalação.
# Algumas vezes os processos warsaw ficam em execução se o pacote for
# desinstalado sem executar "/usr/bin/warsaw stop" antes.
cat <<'EOF' > "$PKG"/var/lib/pkgtools/douninst.sh/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG
pkill -f /usr/local/bin/warsaw/core 2>/dev/null
pkill wsatspi 2>/dev/null
sleep 2
pkill -9 -f /usr/local/bin/warsaw/core 2>/dev/null
pkill -9 wsatspi 2>/dev/null
EOF
chmod +x "$PKG"/var/lib/pkgtools/douninst.sh/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG

cd "$PKG"
/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"



Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Como criar arquivos .doc (Word) e PDF no Linux

Sabayon Linux: Entropy sem espaço temporário para atualizar [Resolvido]

Como criar um cronômetro no Lazarus [Vídeo]

Instalando o Opera 10.53 no Ubuntu e Debian-like, sem Qt

Instalar Conky no Slackware 15

  

Comentários
[1] Comentário enviado por maurixnovatrento em 06/07/2022 - 12:13h


Boa iniciativa.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

[2] Comentário enviado por Paulo3 em 09/07/2022 - 12:34h


[1] Comentário enviado por mauricio123 em 06/07/2022 - 12:13h


Boa iniciativa.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Olá Maurício, valeu o comentário.
Mandei o script para a CEF, mas acho que houve um mal-entendido da parte deles.
A resposta foi que eles não aceitam "software de terceiros", acho que não viram
que o script apenas recompacta o pacote para Debian.
Ou então falta interesse mesmo em homologar outras distros, vai saber.

[3] Comentário enviado por maurixnovatrento em 15/07/2022 - 20:09h


[2] Comentário enviado por Paulo3 em 09/07/2022 - 12:34h


[1] Comentário enviado por mauricio123 em 06/07/2022 - 12:13h


Boa iniciativa.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Olá Maurício, valeu o comentário.
Mandei o script para a CEF, mas acho que houve um mal-entendido da parte deles.
A resposta foi que eles não aceitam "software de terceiros", acho que não viram
que o script apenas recompacta o pacote para Debian.
Ou então falta interesse mesmo em homologar outras distros, vai saber.


Oloco. Você fez o serviço para eles de graça e é assim que eles agradecem? É falta de interesse mesmo.

[4] Comentário enviado por LckLinux em 29/12/2022 - 10:38h

Bom trabalho, camarada. Saudações !

[5] Comentário enviado por Paulo3 em 30/12/2022 - 01:38h


[4] Comentário enviado por LckLinux em 29/12/2022 - 10:38h

Bom trabalho, camarada. Saudações !

Olá LckLinux, valeu!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts