dsa-tools é uma ferramenta de linha de comando (CLI) projetada para auxiliar em diversas tarefas de automação de desenvolvimento e segurança. Suas duas principais funcionalidades são:
- Migrations: Gerencie, versiona e aplique mudanças no esquema do banco de dados de forma fácil.
- Obfuscate: Ofusque arquivos e diretórios JavaScript para proteção de código.
- Migrations:
- Inicialize o sistema de migrações
- Aplique, simule (fake) e verifique o status das migrações
- Controle e versionamento das alterações no esquema do banco de dados
- Obfuscate:
- Ofusque arquivos JavaScript (
.js) ou diretórios inteiros - Controle detalhado sobre as opções de ofuscação (arrays de strings, embaralhamento de identificadores, controle de fluxo, etc.)
- Processamento recursivo de diretórios, preservando a estrutura no resultado
- Ofusque arquivos JavaScript (
- Integração com Node.js e npm para gerenciamento de dependências
Certifique-se de ter os seguintes pré-requisitos:
Clone o repositório e construa a CLI:
git clone <repo-url>
cd dsa-tools
go build -o dsa-tools ./cmd/dsa-toolsO comando obfuscate permite ofuscar arquivos ou diretórios JavaScript. Ele utiliza o pacote javascript-obfuscator internamente.
./dsa-tools obfuscate:run --path <caminho_entrada> --dest <caminho_saida> [opções]--path,-p: Caminho para o diretório ou arquivo a ser ofuscado (obrigatório)--dest,-d: Diretório de destino para os arquivos ofuscados (obrigatório)
./dsa-tools obfuscate:run --path ./src --dest ./distIsso irá encontrar recursivamente todos os arquivos .js em ./src, ofuscá-los e gravar os resultados nos caminhos correspondentes em ./dist.
Você pode customizar o processo de ofuscação usando as seguintes flags:
Transformações de Array de Strings:
--string-array(padrão: true): Habilita transformação de array de strings--string-array-rotate(padrão: true): Habilita rotação do array de strings--string-array-shuffle(padrão: true): Habilita embaralhamento do array de strings--string-array-threshold(padrão: 0.75): Limite para array de strings (0-1)--string-array-index-shift(padrão: true): Habilita deslocamento de índice do array de strings--string-array-indexes-type(padrão: hexadecimal-number): Tipo de índice do array de strings (hexadecimal-number|hexadecimal-numeric-string)--string-array-wrappers-count(padrão: 1): Quantidade de wrappers do array de strings--string-array-wrappers-type(padrão: variable): Tipo de wrapper do array de strings (variable|function)--string-array-wrappers-chained-calls(padrão: true): Habilita chamadas encadeadas de wrappers do array de strings--string-array-encoding(padrão: none): Codificação do array de strings (none|base64|rc4)
Transformações de Identificadores:
--identifier-names-generator(padrão: hexadecimal): Gerador de nomes de identificadores (hexadecimal|mangled|dictionary)--identifiers-prefix: Prefixo para identificadores--rename-globals(padrão: false): Renomeia identificadores globais--rename-properties(padrão: false): Renomeia propriedades
Outras Transformações:
--compact(padrão: true): Habilita saída compacta--simplify(padrão: true): Habilita simplificação de código--transform-object-keys(padrão: false): Transforma chaves de objetos--numbers-to-expressions(padrão: false): Converte números em expressões--control-flow-flattening(padrão: false): Habilita achatamento do fluxo de controle--control-flow-flattening-threshold(padrão: 0.75): Limite para achatamento do fluxo de controle (0-1)--dead-code-injection(padrão: false): Habilita injeção de código morto--dead-code-injection-threshold(padrão: 0.4): Limite para injeção de código morto (0-1)
Para ver todas as opções disponíveis e suas descrições, execute:
./dsa-tools obfuscate:run --helpdsa-tools também oferece um conjunto de comandos para gerenciar migrações de banco de dados, facilitando o versionamento, aplicação e acompanhamento das mudanças no seu esquema de banco de dados.
migrate:init– Inicializa o sistema de migrações no seu projeto, criando a estrutura de diretórios e arquivos de configuração necessários.migrate:run– Aplica todas as migrações pendentes ao banco de dados.migrate:status– Mostra o status atual das migrações (quais foram aplicadas, quais estão pendentes).migrate:fake-run– Marca migrações como aplicadas sem realmente executá-las (útil para sincronizar o estado).
./dsa-tools migrate:init
./dsa-tools migrate:run
./dsa-tools migrate:status
./dsa-tools migrate:fake-run- Inicialize as migrações:
./dsa-tools migrate:init
- Aplique as migrações:
./dsa-tools migrate:run
- Verifique o status das migrações:
./dsa-tools migrate:status
- Simule a aplicação das migrações (marcar como aplicadas):
./dsa-tools migrate:fake-run
- Os arquivos de migração devem ser colocados no diretório de migrações criado pelo
migrate:init. - Cada migração deve seguir as convenções de nome e estrutura descritas na documentação ou configuração gerada.
- Sempre faça backup do seu banco de dados antes de rodar migrações em ambientes de produção.
- A CLI verifica a presença do pacote
javascript-obfuscatorvia npm e o instala globalmente se necessário. - Ela escaneia recursivamente o caminho de entrada em busca de arquivos
.js. - Para cada arquivo, invoca o
javascript-obfuscatorvia Node.js, passando as opções selecionadas. - O resultado ofuscado é gravado no diretório de destino, preservando a estrutura de diretórios original.
- Para migrações, a CLI gerencia os arquivos de migração, aplica no banco de dados e acompanha seu status.
- Certifique-se de que Node.js e npm estão instalados e disponíveis no seu PATH.
- Se encontrar problemas com o ofuscador, tente rodar
npm install -g javascript-obfuscatormanualmente. - Para problemas com migrações, verifique a conexão com o banco de dados e a estrutura dos arquivos de migração.
- Para erros de permissão, verifique as permissões dos seus arquivos e diretórios.