|
@@ -15,13 +15,18 @@
|
|
|
package vhost
|
|
|
|
|
|
import (
|
|
|
+ "bytes"
|
|
|
"io/ioutil"
|
|
|
"net/http"
|
|
|
- "strings"
|
|
|
|
|
|
+ frpLog "github.com/fatedier/frp/utils/log"
|
|
|
"github.com/fatedier/frp/utils/version"
|
|
|
)
|
|
|
|
|
|
+var (
|
|
|
+ NotFoundPagePath = ""
|
|
|
+)
|
|
|
+
|
|
|
const (
|
|
|
NotFound = `<!DOCTYPE html>
|
|
|
<html>
|
|
@@ -46,10 +51,28 @@ Please try again later.</p>
|
|
|
`
|
|
|
)
|
|
|
|
|
|
+func getNotFoundPageContent() []byte {
|
|
|
+ var (
|
|
|
+ buf []byte
|
|
|
+ err error
|
|
|
+ )
|
|
|
+ if NotFoundPagePath != "" {
|
|
|
+ buf, err = ioutil.ReadFile(NotFoundPagePath)
|
|
|
+ if err != nil {
|
|
|
+ frpLog.Warn("read custom 404 page error: %v", err)
|
|
|
+ buf = []byte(NotFound)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ buf = []byte(NotFound)
|
|
|
+ }
|
|
|
+ return buf
|
|
|
+}
|
|
|
+
|
|
|
func notFoundResponse() *http.Response {
|
|
|
header := make(http.Header)
|
|
|
header.Set("server", "frp/"+version.Full())
|
|
|
header.Set("Content-Type", "text/html")
|
|
|
+
|
|
|
res := &http.Response{
|
|
|
Status: "Not Found",
|
|
|
StatusCode: 404,
|
|
@@ -57,7 +80,7 @@ func notFoundResponse() *http.Response {
|
|
|
ProtoMajor: 1,
|
|
|
ProtoMinor: 0,
|
|
|
Header: header,
|
|
|
- Body: ioutil.NopCloser(strings.NewReader(NotFound)),
|
|
|
+ Body: ioutil.NopCloser(bytes.NewReader(getNotFoundPageContent())),
|
|
|
}
|
|
|
return res
|
|
|
}
|