4
4
"context"
5
5
"errors"
6
6
"fmt"
7
- ftpserver "github.com/KirCute/ftpserverlib-pasvportmap"
8
- "github.com/KirCute/sftpd-alist"
9
- "github.com/alist-org/alist/v3/internal/fs"
10
7
"net"
11
8
"net/http"
12
9
"os"
@@ -16,14 +13,19 @@ import (
16
13
"syscall"
17
14
"time"
18
15
16
+ ftpserver "github.com/KirCute/ftpserverlib-pasvportmap"
17
+ "github.com/KirCute/sftpd-alist"
19
18
"github.com/alist-org/alist/v3/cmd/flags"
20
19
"github.com/alist-org/alist/v3/internal/bootstrap"
21
20
"github.com/alist-org/alist/v3/internal/conf"
21
+ "github.com/alist-org/alist/v3/internal/fs"
22
22
"github.com/alist-org/alist/v3/pkg/utils"
23
23
"github.com/alist-org/alist/v3/server"
24
24
"github.com/gin-gonic/gin"
25
25
log "github.com/sirupsen/logrus"
26
26
"github.com/spf13/cobra"
27
+ "golang.org/x/net/http2"
28
+ "golang.org/x/net/http2/h2c"
27
29
)
28
30
29
31
// ServerCmd represents the server command
@@ -47,11 +49,15 @@ the address is defined in config file`,
47
49
r := gin .New ()
48
50
r .Use (gin .LoggerWithWriter (log .StandardLogger ().Out ), gin .RecoveryWithWriter (log .StandardLogger ().Out ))
49
51
server .Init (r )
52
+ var httpHandler http.Handler = r
53
+ if conf .Conf .Scheme .EnableH2c {
54
+ httpHandler = h2c .NewHandler (r , & http2.Server {})
55
+ }
50
56
var httpSrv , httpsSrv , unixSrv * http.Server
51
57
if conf .Conf .Scheme .HttpPort != - 1 {
52
58
httpBase := fmt .Sprintf ("%s:%d" , conf .Conf .Scheme .Address , conf .Conf .Scheme .HttpPort )
53
59
utils .Log .Infof ("start HTTP server @ %s" , httpBase )
54
- httpSrv = & http.Server {Addr : httpBase , Handler : r }
60
+ httpSrv = & http.Server {Addr : httpBase , Handler : httpHandler }
55
61
go func () {
56
62
err := httpSrv .ListenAndServe ()
57
63
if err != nil && ! errors .Is (err , http .ErrServerClosed ) {
@@ -72,7 +78,7 @@ the address is defined in config file`,
72
78
}
73
79
if conf .Conf .Scheme .UnixFile != "" {
74
80
utils .Log .Infof ("start unix server @ %s" , conf .Conf .Scheme .UnixFile )
75
- unixSrv = & http.Server {Handler : r }
81
+ unixSrv = & http.Server {Handler : httpHandler }
76
82
go func () {
77
83
listener , err := net .Listen ("unix" , conf .Conf .Scheme .UnixFile )
78
84
if err != nil {
0 commit comments