9abff0338bbf68c9560e1274b6fe75909d31add5
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 pelo hash SHA-256 do seu conteúdo, garantindo que pastes idênticos tenham a mesma URL.
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 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/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
# Acessar um paste
curl http://localhost:8080/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
# Retorna: hello world
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 (
hash TEXT PRIMARY KEY, -- Hash SHA-256 do conteúdo
content TEXT NOT NULL, -- Conteúdo do paste
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 hash, length(content) as size FROM pastes WHERE length(content) > 1024;
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.
Languages
Go
63.2%
PowerShell
20.9%
Shell
14.8%
Dockerfile
1.1%