change to envs
This commit is contained in:
parent
57877cbafa
commit
0e9d87db72
22
.drone.yml
22
.drone.yml
|
@ -1,22 +0,0 @@
|
|||
kind: pipeline
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: golang:latest
|
||||
commands:
|
||||
- make test
|
||||
|
||||
- name: coverage
|
||||
image: plugins/codecov
|
||||
settings:
|
||||
token:
|
||||
from_secret: codecov-token
|
||||
|
||||
- name: notify
|
||||
image: plugins/webhook
|
||||
urls: https://msgbus.mills.io/ci.mills.io
|
||||
when:
|
||||
status:
|
||||
- success
|
||||
- failure
|
|
@ -1,6 +1,4 @@
|
|||
*~
|
||||
dist
|
||||
*.bak
|
||||
coverage.txt
|
||||
|
||||
gopherproxy
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
language: go
|
||||
sudo: false
|
||||
go:
|
||||
- tip
|
||||
before_install:
|
||||
- go get github.com/mattn/goveralls
|
||||
script:
|
||||
- $HOME/gopath/bin/goveralls -service=travis-ci
|
||||
after_success:
|
||||
- test -n "$TRAVIS_TAG" && curl -sL https://git.io/goreleaser | bash
|
14
Makefile
14
Makefile
|
@ -1,4 +1,4 @@
|
|||
.PHONY: dev build profile bench test clean
|
||||
.PHONY: dev build clean
|
||||
|
||||
all: dev
|
||||
|
||||
|
@ -6,16 +6,8 @@ dev: build
|
|||
./gopherproxy -bind 127.0.0.1:8000
|
||||
|
||||
build: clean
|
||||
go get ./...
|
||||
go build -o ./gopherproxy ./cmd/gopherproxy/main.go
|
||||
|
||||
profile:
|
||||
@go test -cpuprofile cpu.prof -memprofile mem.prof -v -bench .
|
||||
|
||||
bench:
|
||||
@go test -v -bench .
|
||||
|
||||
test:
|
||||
@go test -v -race -cover -coverprofile=coverage.txt -covermode=atomic .
|
||||
|
||||
clean:
|
||||
@git clean -f -d -X
|
||||
rm -rf gopherproxy
|
||||
|
|
22
README.md
22
README.md
|
@ -1,10 +1,9 @@
|
|||
# Gopher (RFC 1436) Web Proxy
|
||||
|
||||
[![Build Status](https://cloud.drone.io/api/badges/prologic/gopherproxy/status.svg)](https://cloud.drone.io/prologic/gopherproxy)
|
||||
[![CodeCov](https://codecov.io/gh/prologic/gopherproxy/branch/master/graph/badge.svg)](https://codecov.io/gh/prologic/gopherproxy)
|
||||
[![Go Report Card](https://goreportcard.com/badge/prologic/gopherproxy)](https://goreportcard.com/report/prologic/gopherproxy)
|
||||
[![GoDoc](https://godoc.org/github.com/prologic/gopherproxy?status.svg)](https://godoc.org/github.com/prologic/gopherproxy)
|
||||
[![Sourcegraph](https://sourcegraph.com/github.com/prologic/gopherproxy/-/badge.svg)](https://sourcegraph.com/github.com/prologic/gopherproxy?badge)
|
||||
[![Build Status](https://travis-ci.org/prologic/gopherproxy.svg)](https://travis-ci.org/prologic/gopherproxy)
|
||||
[![GoDoc](https://godoc.org/github.com/prologic/gopherproxy?status.svg)](https://godoc.org/github.com/prologic/gopherproxy)
|
||||
[![Wiki](https://img.shields.io/badge/docs-wiki-blue.svg)](https://github.com/prologic/gopherproxy/wiki)
|
||||
[![Go Report Card](https://goreportcard.com/badge/github.com/prologic/gopherproxy)](https://goreportcard.com/report/github.com/prologic/gopherproxy)
|
||||
[![Coverage](https://coveralls.io/repos/prologic/gopherproxy/badge.svg)](https://coveralls.io/r/prologic/gopherproxy)
|
||||
|
||||
gopherproxy is a Gopher (RFC 1436) Web Proxy that acts as a gateway into Gopherspace
|
||||
by proxying standard Web HTTP requests to Gopher requests of the target server.
|
||||
|
@ -41,17 +40,6 @@ $ gopherproxy
|
|||
|
||||
Then simply visit: http://localhost/gopher.floodgap.com
|
||||
|
||||
## Related
|
||||
|
||||
Related projects:
|
||||
|
||||
- [go-gopher](https://github.com/prologic/go-gopher)
|
||||
go-gopher is the Gopher client and server library used by gopherproxy
|
||||
|
||||
- [gopherclient](https://github.com/prologic/gopherclient)
|
||||
gopherclient is a cross-platform QT/QML GUI Gopher Client
|
||||
using the gopherproxy library as its backend.
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
theme: jekyll-theme-architect
|
|
@ -4,7 +4,7 @@ import (
|
|||
"flag"
|
||||
"log"
|
||||
|
||||
"github.com/prologic/gopherproxy"
|
||||
"tildegit.org/tildeverse/gopherproxy"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -12,7 +12,7 @@ var (
|
|||
// (opt -> env -> config -> default)
|
||||
bind = flag.String("bind", "0.0.0.0:8000", "[int]:port to bind to")
|
||||
robotsfile = flag.String("robots-file", "robots.txt", "robots.txt file")
|
||||
uri = flag.String("uri", "floodgap.com", "<host>:[port] to proxy to")
|
||||
uri = flag.String("uri", "tilde.team", "<host>:[port] to proxy to")
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
6
go.mod
6
go.mod
|
@ -1,6 +0,0 @@
|
|||
module github.com/prologic/gopherproxy
|
||||
|
||||
require (
|
||||
github.com/prologic/go-gopher v0.0.0-20181230133552-0c68ed5f58b0
|
||||
github.com/temoto/robotstxt v0.0.0-20180810133444-97ee4a9ee6ea
|
||||
)
|
9
go.sum
9
go.sum
|
@ -1,9 +0,0 @@
|
|||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prologic/go-gopher v0.0.0-20181230133552-0c68ed5f58b0 h1:10LO/S8HVjIuEHsHea//Cena1Ztgy23f/e8HFC0w5ow=
|
||||
github.com/prologic/go-gopher v0.0.0-20181230133552-0c68ed5f58b0/go.mod h1:LiuwIXz4es4YIUOD6yRv8mES9n9dFbe4z0+TcrLkhXg=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/temoto/robotstxt v0.0.0-20180810133444-97ee4a9ee6ea h1:hH8P1IiDpzRU6ZDbDh/RDnVuezi2oOXJpApa06M0zyI=
|
||||
github.com/temoto/robotstxt v0.0.0-20180810133444-97ee4a9ee6ea/go.mod h1:aOux3gHPCftJ3KHq6Pz/AlDjYJ7Y+yKfm1gU/3B0u04=
|
||||
golang.org/x/net v0.0.0-20181220203305-927f97764cc3 h1:eH6Eip3UpmR+yM/qI9Ijluzb1bNv/cAU/n+6l8tRSis=
|
||||
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
@ -1,6 +1,7 @@
|
|||
package gopherproxy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io"
|
||||
|
@ -10,9 +11,8 @@ import (
|
|||
"net/url"
|
||||
"strings"
|
||||
|
||||
gopher "github.com/prologic/go-gopher"
|
||||
"github.com/temoto/robotstxt"
|
||||
|
||||
"github.com/prologic/go-gopher"
|
||||
)
|
||||
|
||||
type Item struct {
|
||||
|
@ -71,9 +71,10 @@ func renderDirectory(w http.ResponseWriter, tpl *template.Template, hostport str
|
|||
}
|
||||
|
||||
return tpl.Execute(w, struct {
|
||||
Title string
|
||||
Lines []Item
|
||||
}{title, out})
|
||||
Title string
|
||||
Lines []Item
|
||||
Gophermap bool
|
||||
}{title, out, true})
|
||||
}
|
||||
|
||||
// GopherHandler returns a Handler that proxies requests
|
||||
|
@ -125,7 +126,28 @@ func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, uri
|
|||
}
|
||||
|
||||
if res.Body != nil {
|
||||
io.Copy(w, res.Body)
|
||||
if strings.HasSuffix(uri, ".md") {
|
||||
// handle markdown
|
||||
tpl.Execute(w, struct {
|
||||
Title string
|
||||
MdText template.HTML
|
||||
Gophermap bool
|
||||
Pre bool
|
||||
}{uri, renderMd(res.Body), false, false})
|
||||
|
||||
} else if strings.HasSuffix(uri, ".txt") {
|
||||
// handle .txt files
|
||||
buf := new(bytes.Buffer)
|
||||
buf.ReadFrom(res.Body)
|
||||
tpl.Execute(w, struct {
|
||||
Title string
|
||||
MdText string
|
||||
Gophermap bool
|
||||
Pre bool
|
||||
}{uri, buf.String(), false, true})
|
||||
} else {
|
||||
io.Copy(w, res.Body)
|
||||
}
|
||||
} else {
|
||||
if err := renderDirectory(w, tpl, hostport, res.Dir); err != nil {
|
||||
io.WriteString(w, fmt.Sprintf("<b>Error:</b><pre>%s</pre>", err))
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package gopherproxy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"html/template"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"github.com/gomarkdown/markdown"
|
||||
)
|
||||
|
||||
func renderMd(b io.Reader) template.HTML {
|
||||
buf := new(bytes.Buffer)
|
||||
buf.ReadFrom(b)
|
||||
md := string(markdown.ToHTML(buf.Bytes(), nil, nil))
|
||||
return template.HTML(strings.Replace(md, "<img", "<img class=\"img-responsive\"", -1))
|
||||
}
|
19
template.go
19
template.go
|
@ -5,14 +5,25 @@ var tpltext = `<!doctype html>
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="stylesheet" href="https://tilde.team/css/dracula.css">
|
||||
<title>{{.Title}}</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<section>
|
||||
<pre>
|
||||
{{if .Gophermap}}<pre>
|
||||
{{range .Lines}} {{if .Link}}({{.Type}}) <a class="{{ .Type }}" href="{{.Link}}">{{.Text}}</a>{{else}} {{.Text}}{{end}}
|
||||
{{end}}</pre>
|
||||
{{end}}
|
||||
</pre>
|
||||
{{else}}
|
||||
{{if .Pre}}<pre>{{end}}
|
||||
{{.MdText}}
|
||||
{{if .Pre}}</pre>{{end}}
|
||||
{{end}}
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var qry=document.getElementsByClassName('QRY')
|
||||
var i=qry.length
|
||||
|
@ -25,5 +36,7 @@ while (i--) {
|
|||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>`
|
||||
</html>
|
||||
`
|
||||
|
|
Loading…
Reference in New Issue