Files
olt-api/tools/gen_license.sh
2026-02-22 07:53:44 -03:00

88 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Ensure we are in project root
cd "$(dirname "$0")/.."
# Configuration
OUTPUT_BASE="dist/licenses"
PYARMOR="./venv/bin/python3 ./venv/bin/pyarmor"
# Colors (only if terminal supports it, otherwise empty)
if [ -t 1 ]; then
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m'
else
RED=''
GREEN=''
BLUE=''
NC=''
fi
echo "${BLUE}=== Gerador de Licenças IPv0 OLT API ===${NC}"
# 1. Solicitar Nome do Cliente
echo "Nome do Cliente (sem espaços, ex: ProvedorX): "
read CLIENT_NAME
if [ -z "$CLIENT_NAME" ]; then
echo "${RED}Erro: Nome do cliente é obrigatório.${NC}"
exit 1
fi
DEST_DIR="$OUTPUT_BASE/$CLIENT_NAME"
mkdir -p "$DEST_DIR"
# 2. Escolher Tipo de Licença
echo ""
echo "Tipo de Licença:"
echo "1) Data de Expiração (Trial/PoC)"
echo "2) Hardware (Produção/Machine ID)"
echo "Opção [1/2]: "
read OPTION
if [ "$OPTION" = "1" ]; then
# Licença por Data
echo "Data de Vencimento (YYYY-MM-DD): "
read EXPIRE_DATE
# Validação simples de formato YYYY-MM-DD
if ! echo "$EXPIRE_DATE" | grep -qE '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'; then
echo "${RED}Erro: Formato de data inválido.${NC}"
exit 1
fi
echo "Gerando licença Trial para ${GREEN}$CLIENT_NAME${NC} até ${GREEN}$EXPIRE_DATE${NC}..."
$PYARMOR gen key -e "$EXPIRE_DATE"
elif [ "$OPTION" = "2" ]; then
# Licença por Hardware
echo "Machine ID do Cliente: "
read MACHINE_ID
if [ -z "$MACHINE_ID" ]; then
echo "${RED}Erro: Machine ID é obrigatório.${NC}"
exit 1
fi
echo "Gerando licença Permanente para ${GREEN}$CLIENT_NAME${NC} (ID: $MACHINE_ID)..."
$PYARMOR gen key --bind-device "$MACHINE_ID"
else
echo "${RED}Opção inválida.${NC}"
exit 1
fi
# 3. Mover e Verifica
# Por padrão, o pyarmor gera em dist/license.key (conforme config outer_keyname)
GENERATED_FILE="dist/license.key"
if [ -f "$GENERATED_FILE" ]; then
mv "$GENERATED_FILE" "$DEST_DIR/"
echo ""
echo "${GREEN}✅ Licença gerada com sucesso!${NC}"
echo "Arquivo: ${BLUE}$DEST_DIR/license.key${NC}"
echo "Envie este arquivo para o cliente."
else
echo "${RED}❌ Erro: O arquivo de licença não foi gerado.${NC}"
exit 1
fi