2025-08-29 13:42:46 +02:00

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:

  1. Backup automático: Execute scripts/migrate.ps1 (Windows) ou scripts/migrate.sh (Linux/Mac)
  2. Migração manual: Use go run cmd/migrate/main.go -bolt data/yasuc.db -sqlite data/yasuc.sqlite3
  3. 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 (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.

S
Description
No description provided
Readme
30 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 63.2%
PowerShell 20.9%
Shell 14.8%
Dockerfile 1.1%