Files
pastebin/README.md

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:

  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 (
    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 (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.