#!/bin/bash # Ensure we are in project root cd "$(dirname "$0")/.." # Configuration OUTPUT_BASE="dist/licenses" PYARMOR="./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