Skip to content

nibazshab/pastebin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PasteBin

一个工具,可以用来生成纯文本网页分享文字内容,或者也可以上传附件,作为一个临时的文件服务器分享给别人

单次分享的限制为 100mb,暂不支持反向代理到域名子目录,数据和日志默认位于 pastebin_data 目录中

快速上手

直接运行独立的二进制文件即可,默认监听 10002 端口

./pastebin

使用说明

命令行可以接收的参数

参数 默认值 描述
-port 10002 程序监听的端口号
-path pastebin_data 数据目录(相对程序文件的路径)

API

  • POST /

请求:multipart/form-data,存储了数据内容的链接

body:f 文件

  • GET /{uid}

返回该链接所对应的内容

构建说明

所需软件包:go, musl

go 使用包管理器或任意方式安装,musl 可以通过如下命令安装

wget -O musl.tgz https://musl.cc/x86_64-linux-musl-cross.tgz
tar -zxvf musl.tgz --strip-components=1 -C /usr/local

开始构建

go mod tidy
flags="-s -w --extldflags '-static' \
 -X main.version=$(git describe --abbrev=0 --tags)"
export CC=x86_64-linux-musl-gcc
export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=1
go build -ldflags="$flags"

打包软件包

PKGBUILD

pkgname=pastebin
pkgver=
pkgrel=1
arch=('x86_64')
source=("$pkgname" "$pkgname.service")
sha256sums=('SKIP' 'SKIP')
package() {
  mkdir -p $pkgdir/usr/local/$pkgname
  cp $pkgname $pkgdir/usr/local/$pkgname
  mkdir -p $pkgdir/usr/lib/systemd/system
  cp $pkgname.service $pkgdir/usr/lib/systemd/system
}

pastebin.service

[Unit]
Description=pastebin service
[Service]
ExecStart=/usr/local/pastebin/pastebin
Restart=on-failure
[Install]
WantedBy=multi-user.target

PLAN-B

  • 响应 dmesg | curl -F "f=@-" host 形式的请求
  • 解决 favicon.ico 的问题
  • 变更相对路径为绝对路径
  • 自定义端口号
  • 美化页面,重写糟糕的 js
  • 支持绝对路径的数据目录
  • 修复 xlsx, word 等被检测为 zip 类型的问题

许可证

MIT © ZShab Niba