3.7 KiB
3.7 KiB
yasuc
yet another sprunge.us clone
(command line pastebin)
Sobre
YASUC é um pastebin de linha de comando que armazena pastes usando SQLite3. Cada paste é identificado por um ID curto único de 7 caracteres, tornando as URLs mais amigáveis e fáceis de compartilhar.
Uso do Servidor
Execução Local
# Compilar
go build -o yasuc .
# Executar
./yasuc -db /path/to/yasuc.sqlite3 -port 8080 -addr 0.0.0.0
Docker
# Construir e executar com Docker Compose
docker-compose up --build
# Ou manualmente
docker build -t yasuc .
docker run -d -p 8080:8080 -v /path/to/data:/data -e YASUC_ADMIN_PASSWORD=minhasenha yasuc
Uso do Cliente
# Enviar um paste
<command> | curl -F 'sprunge=<-' http://localhost:8080/
# Exemplo
echo 'hello world' | curl -F 'sprunge=<-' http://localhost:8080/
# Retorna: http://localhost:8080/Ly34kx3
# Acessar um paste
curl http://localhost:8080/Ly34kx3
# Retorna: hello world
Interface de Administração
O YASUC inclui uma interface web de administração para gerenciar pastes.
Acesso à Administração
- URL:
http://localhost:8080/admin/login - Senha: Definida pela variável de ambiente
YASUC_ADMIN_PASSWORD - Padrão:
admin123(se não definida)
Funcionalidades
- Listagem de Pastes: Visualizar todos os pastes criados
- Estatísticas: Total de pastes e tamanho em bytes
- Visualização: Links diretos para cada paste
- Remoção: Botão para deletar pastes individualmente
- Autenticação: Protegido por senha com sessão de 1 hora
Configuração da Senha
Docker Compose
environment:
- YASUC_ADMIN_PASSWORD=minhasenha123
Execução Local
YASUC_ADMIN_PASSWORD=minhasenha123 ./yasuc -db data/yasuc.sqlite3 -port 8080
Características dos IDs Curtos
- 7 caracteres: Combinação de letras maiúsculas, minúsculas e números
- Únicos: Cada paste tem um ID único
- Detecção de duplicatas: Pastes idênticos recebem o mesmo ID
- Amigáveis: URLs mais curtas e fáceis de compartilhar
Migração de BoltDB para SQLite3
Este projeto foi migrado de BoltDB para SQLite3. Para migrar dados existentes:
- Backup automático: Execute
scripts/migrate.ps1(Windows) ouscripts/migrate.sh(Linux/Mac) - Migração manual: Use
go run cmd/migrate/main.go -bolt data/yasuc.db -sqlite data/yasuc.sqlite3 - Ver detalhes: Consulte MIGRATION.md
Estrutura do Banco
CREATE TABLE pastes (
short_id TEXT PRIMARY KEY, -- ID curto único (7 caracteres)
content TEXT NOT NULL, -- Conteúdo do paste
content_hash TEXT NOT NULL, -- Hash SHA-256 para detecção de duplicatas
created_at INTEGER NOT NULL -- Timestamp de criação
);
Vantagens do SQLite3
- Consultas SQL: Possibilidade de fazer consultas complexas
- Ferramentas: Melhor suporte a ferramentas de administração
- Backup: Arquivo único mais fácil de fazer backup
- Compatibilidade: Mais amplamente suportado
Exemplos de Consultas
-- Contar total de pastes
SELECT COUNT(*) FROM pastes;
-- Pastes criados hoje
SELECT * FROM pastes WHERE date(created_at, 'unixepoch') = date('now');
-- Pastes maiores que 1KB
SELECT short_id, length(content) as size FROM pastes WHERE length(content) > 1024;
-- Encontrar duplicatas (mesmo conteúdo, IDs diferentes)
SELECT content_hash, COUNT(*) as count FROM pastes GROUP BY content_hash HAVING count > 1;
Copyright
Copyright (c) Tom Jakubowski. License AGPLv3: Affero GPL Version 3. This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. For copying conditions and source, see the LICENSE.txt file.