Next Previous Contents

4. Construindo co-gerenciadores

Co-gerenciadores são ótimos. Eles permitem que funcionalidades sejam adicionadas ao Linuxconf no exato lugar a que elas pertencem, ao invés de se adicionar novos sub-menus.

4.1 Princípios

Um co-gerenciador é um componente que participa de um diálogo. Ele pode adicionar campos e validação. O caso mais comum é o diálogo de conta de usuário, onde vários co-gerenciadores participam. O mais visível deles é o módulo mailconf, que insere uma seção completa para manipular aliases de email. Um outro é o módulo pppdialin, o qual adiciona uma seção para lidar com parâmetros PPP.

Um co-gerenciador deve fornecer 4 funções:

Observe que os co-gerenciadores foram criados com contas de usuário em mente, mas o conceito é mais geral que isso. Troque "conta de usuário" acima por "registro" e você terá um retrato mais geral.

4.2 Registrando o co-gerenciador

Linuxconf deve ser notificado que um co-gerenciador existe paa um determinado diálogo. Diálogos são identificados por uma pequena chave. Por exemplo, a chave para a conta do usuário é "user".

Um co-gerenciador shellmod deve fornecer quatro funções, utilizando o mesmo prefixo. Quando você registra o co-gerenciador, você deve fornecer o prefixo da função e a chave de diálogo. Isto é feito com a função register. Segue abaixo um exemplo:

        # Registra como um co-gerenciador no diálogo de conta de usuário
        echo comanager ufct user
        

O prefixo da função é ufct. Deve-se criar quatro funções de acordo com este prefixo:

4.3 As várias funções

setupdia

Esta função é chamada durante a construção do diálogo. Você pode usar qualquer código de operação normalmente para definir um diálogo. Você não precisa definir o diálogo por você próprio (echo DIALOG) já que ele está definido implicitamente.

Enquanto você pode simplesmente adicionar campos no diálogo, algum geralmente definirá uma nova seção do diálogo. A menos que você faça isso, seu novo campo será anexado à seção atual, a qual pode ser qualquer seção.

Você define uma seção com o código de operação newf_title.

        qecho newf_title "Listas de postagem" 1 - "Listas de postagem"
        

validate

Esta função recebe todo o valor do campo (digitado pelo usuário). Cada campo corresponde a uma variável shell, de forma que você pode testar diretamente os valores delas. Você deve utilizar o código "retcode" para verificar se a validação foi bem-sucedida. Veja o exemplo a seguir:

        echo retcode 0
        

Qualquer valor diferente de 0 é tomado como uma falha na validação. Qualquer erro deve ser reportado com o código de operação "error". Você também pode usar "setcurfield" para saltar a um campo específico.

        if [ "$a1" = "válida" ] ; then
                echo retcode 0
        else
                echo setcurfield a1
                echo retcode -1
                echo error \"sample.sh: Valor inválido, entre com a palavra válida\"
        fi
        

save

Todos os valores dos campos são retornados ao seu script como variáveis shell. A função save deve fazer várias coisas com as informações. Ela pode tanto salvar em um arquivo, ou executar algumas ações (enviar um mail a um administrador sobre as mudanças necessárias, por exemplo).

Outras variáveis shell também contém informações relacionadas a este diálogo (veja abaixo o contexto do diálogo).

deluser

O nome desta função é um tanto ambígüo. Significa que o registro deve ser apagado (em geral, uma conta de usuário). Você deve usar a informação a partir do contexto do diálogo (veja abaixo) para executar o apagamento desejado.

4.4 Contexto do Diálogo

Um co-gerenciador manipula uma parte de um grande diálogo. Para gerenciar propriamente sua parte, o co-gerenciador deve conhecer outras informações sobre o diálogo atual. Por exemplo, para aprimorar o diálogo de conta de usuário, deve-se conhecer a conta do usuário (identificação do usuário) sendo editada bem como o domínio (é uma conta de usuário de domínio virtual de mail?).

Esta informação extra é passada como variáveis shell, prontamente utilizáveis. A informação disponível é dependente de diálogos. Para co-gerenciadores de contas de usuários, as seguintes variáveis são fornecidas:

domain

É passado o domínio de mail virtual. Para o domínio principal, esta variável é configurada para /.

is_new

Isto é um flag que mostra a você se esta é uma nova conta (o nome está vazio) ou não.

name

Esta é a identificação de usuário.

Uma forma de aprender as informações disponíveis para seu script é executá-lo em modo de depuração sob o Linuxconf. Você pode ativar este modo a partir da interface de usuário do Linuxconf, no controle de sistema e arquivos/gerenciamento de módulos shell/configuração do shellmod.


Next Previous Contents