gouploadserver

command module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2021 License: MIT Imports: 8 Imported by: 0

README

GO Upload Server - Command Line Tool

Go Reference

O GO Upload Server foi escrito para ser agil e permitir a inicialização rápida de um servidor de arquivos a partir de um diretório.

Ele faz leitura e escrita usando buffers o que faz ele consumir pouquissima memoria (small memory footprint).

Nota: Embora GO Upload Server seja uma ótima maneira de servir facilmente arquivos de um diretório, ele não deve ser usado em um ambiente de produção pois ele não implementa verificações de segurança.

Motivações para o projeto

Servidores da web amplamente usados, como NGINX, Apache e Tomcat, são excelentes porém consomem muito tempo para serem configurados.

O GO possui o package http com a func FileServer que inicia um servidor de arquivos a partir de um diretório, porém o FileServer não permite customizações. Ex: Alteração no template HTML padrão e CSS personalizado.

Então para ter um servidor personalizável, com novas funcionalidades e agil este projeto foi desenvolvido como uma Command Line Tool.

Features

  • Servidor de arquivos.
  • Servidor websites pois implementa MIME types.
  • Possui o modo Servidor de Single Page Aplications (SPA) que implementa o catch-all fallback para /index.html.
  • Baixíssimo consumo de memória.
  • Alteração fácil da porta do servidor via flag
  • Navegador de arquivos com opção para upload de arquivo no diretório navegado.
  • Implementa o renomeio dos arquivos enviados para não sobreescrever os arquivos originais do diretório (pode ser desativado via flag).
  • Usa o Go templates internamente permitindo a customização do navegador de arquivos.

Instalação

Instalação com Go (requer v1.16+).
go get -u guilhermerodrigues680/gouploadserver
Instalação com binários pré-compilados (qualquer sistema operacional)

Para instalar a versão mais recente do gouploadserver a partir de binários pré-compilados, siga estas instruções:

  1. Baixe manualmente em github.com/guilhermerodrigues680/gouploadserver/releases o arquivo zip correspondente ao seu sistema operacional e arquitetura do computador (gouploadserver-<version>-<os><arch>.zip), ou baixe o arquivo usando comandos como os seguintes:
$ PR_REL="https://github.com/guilhermerodrigues680/gouploadserver/releases"
$ curl -LO $PR_REL/download/v1.0.0/gouploadserver-v1.0.0-linux-amd64.zip
  1. Descompacte o arquivo em $HOME/.local ou em um diretório de sua escolha. Por exemplo:
$ unzip gouploadserver-v1.0.0-linux-amd64.zip -d $HOME/.local
  1. Atualize os seu PATH para incluir o caminho para o executável gouploadserver. Por exemplo:
$ export PATH="$PATH:$HOME/.local/bin"

Como usar

Start do gouploadserver com as configurações padrão:

$ gouploadserver

É possivel passar flags para o gouploadserver:

# Usage: gouploadserver [options] [path]
$ gouploadserver --port 8082 ./folder
Command-Line Options
Usage: gouploadserver [options] [path]
[path] defaults to ./
Options are:
  --dev                      Use development settings (default false)
  --keep-upload-filename     Keep original upload file name: Use 'filename.ext' instead of 'filename<-random>.ext' (default false)
  --port                     Port to use (default 8000)
  --spa                      Return to all files not found /index.html (default false)
  --version                  Show version number and quit (default false)
  --watch-mem                Watch memory usage (default false)
  --help                     Display usage information (this message)
  -h                         Display usage information (this message) (shorthand)

Configuração do projeto para desenvolvimento

* Requer o GO v1.16+

$ git clone https://github.com/guilhermerodrigues680/gouploadserver.git

O Makefile possui intruções para compilar o projeto:

# make build compila para diversas plataformas
make build

# output bin/gouploadserver-<version>-<os><arch>
# make cross compila somente para plataforma atual
make cross

# output bin/gouploadserver
Instalação a partir do código do projeto
make install
# ou
go install

# output: $GOPATH/bin/gouploadserver

Versionamento

Este projeto segue o Versionamento Semântico 2.0.0.

Licença

Este projeto está licenciado sob os termos da licença MIT. Veja LICENSE.

Anotações

Anotações
- https://www.digitalocean.com/community/tutorials/how-to-build-and-install-go-programs-pt - https://golang.org/doc/tutorial/compile-install - https://golang.org/ref/mod#go-install - https://makefiletutorial.com/
➜  cmd go list -f '{{.Target}}'
/Users/guilherme/go/bin/cmd
go test -v -benchmem -bench=.

date -u +"%Y%m%d%H%M%S" TZ=UTC date +"%Y%m%d%H%M%S" TZ=GMT date +"%Y%m%d%H%M%S"

https://pkg.go.dev/github.com/guilhermerodrigues680/gouploadserver

git tag v0.0.0-alpha.0-$(date -u +"%Y%m%d%H%M%S")

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL