summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/main.go b/main.go
index 2b531a9..634f4ea 100644
--- a/main.go
+++ b/main.go
@@ -34,7 +34,10 @@ type Server struct {
}
type Metadata struct {
- ContentType string `json:"contentType"`
+ ContentType string `json:"contentType"`
+ RemoteAddr string `json:"remoteAddr"`
+ XForwardedFor string `json:"xForwardedFor"`
+ XForwardedProto string `json:"xForwardedProto"`
}
//go:embed template.html
@@ -49,6 +52,12 @@ func detectMimetype(input io.Reader) (mimeType string, fileext string, recycled
return mtype.String(), mtype.Extension(), recycled, err
}
+func populateMetadata(m *Metadata, r *http.Request) {
+ m.RemoteAddr = r.RemoteAddr
+ m.XForwardedFor = r.Header.Get("X-Forwarded-For")
+ m.XForwardedProto = r.Header.Get("X-Forwarded-Proto")
+}
+
func serveAnsiHtml(w http.ResponseWriter, filename string) {
f, err := os.Open(filename)
if err != nil {
@@ -108,7 +117,7 @@ func (s *Server) randomFile(ext string) (*os.File, string, error) {
return f, name, nil
}
-func (s *Server) createPosting(rd io.Reader, mimeType string) (string, error) {
+func (s *Server) createPosting(rd io.Reader, mimeType string, r *http.Request) (string, error) {
var ext string
if mimeType == "" {
mimeType, ext, rd, _ = detectMimetype(rd)
@@ -128,6 +137,7 @@ func (s *Server) createPosting(rd io.Reader, mimeType string) (string, error) {
}
f.Sync()
m := Metadata{ContentType: mimeType}
+ populateMetadata(&m, r)
if err = s.writeMetadata(name, &m); err != nil {
return "", fmt.Errorf("writeMetadata(): %w", err)
}
@@ -140,7 +150,7 @@ func (s *Server) postText(r *http.Request) (string, error) {
return "", nil
}
mimeType := r.Form.Get("text_mimetype")
- return s.createPosting(strings.NewReader(text), mimeType)
+ return s.createPosting(strings.NewReader(text), mimeType, r)
}
func (s *Server) postFile(r *http.Request) (string, error) {
@@ -150,7 +160,7 @@ func (s *Server) postFile(r *http.Request) (string, error) {
return "", err
}
defer file.Close()
- return s.createPosting(file, mimeType)
+ return s.createPosting(file, mimeType, r)
}
func (s *Server) servePosting(w http.ResponseWriter, r *http.Request, name string) {
@@ -217,7 +227,7 @@ func (s *Server) post(w http.ResponseWriter, r *http.Request) {
if mimeType == "application/x-www-form-urlencoded" {
mimeType = ""
}
- name, err := s.createPosting(r.Body, mimeType)
+ name, err := s.createPosting(r.Body, mimeType, r)
if err != nil {
log.Print("failed to create file: ", err)
w.WriteHeader(http.StatusInternalServerError)