Repository: AlistGo/alist (language: go)

Issue:
飞机盘挂载失效问题
### Please make sure of the following things

- [X] I have read the [documentation](https://alist.nn.ci).
我已经阅读了[文档](https://alist.nn.ci)。

- [X] I'm sure there are no duplicate issues or discussions.
我确定没有重复的issue或讨论。

- [X] I'm sure it's due to `AList` and not something else(such as [Network](https://alist.nn.ci/faq/howto.html#tls-handshake-timeout-read-connection-reset-by-peer-dns-lookup-failed-connect-connection-refused-client-timeout-exceeded-while-awaiting-headers-no-such-host) ,`Dependencies` or `Operational`).
我确定是`AList`的问题，而不是其他原因（例如[网络](https://alist.nn.ci/zh/faq/howto.html#tls-handshake-timeout-read-connection-reset-by-peer-dns-lookup-failed-connect-connection-refused-client-timeout-exceeded-while-awaiting-headers-no-such-host)，`依赖`或`操作`）。

- [X] I'm sure this issue is not fixed in the latest version.
我确定这个问题在最新版本中没有被修复。


### AList Version / AList 版本

3.39.4

### Driver used / 使用的存储驱动

飞机盘

### Describe the bug / 问题描述

挂载飞机盘后过一两天后会失效，访问会显示内部服务器错误，必须关闭飞机盘驱动再开启才行.

### Reproduction / 复现链接

.

### Config / 配置

.

### Logs / 日志

.


Discussion / hints:
我飞机盘挂上去为啥一个目录都没有显示。根目录设置为0，实际根目录是有文件夹的。
alist版本3.40.0
> 我飞机盘挂上去为啥一个目录都没有显示。根目录设置为0，实际根目录是有文件夹的。 alist版本3.40.0

我已经不用飞机了
> 我飞机盘挂上去为啥一个目录都没有显示。根目录设置为0，实际根目录是有文件夹的。 alist版本3.40.0

+1，同样这个问题
> 我飞机盘挂上去为啥一个目录都没有显示。根目录设置为0，实际根目录是有文件夹的。 alist版本3.40.0

我也是，之前没用到飞机盘挂载的文件，最近需要的时候发现不显示文件了，v3.41.0
> 我飞机盘挂上去为啥一个目录都没有显示。根目录设置为0，实际根目录是有文件夹的。 alist版本3.40.0

+1 蓝奏云优享版和飞机盘都是一样的问题，不显示任何文件
可以上传文件，官网有显示，但alist始终不显示....（飞机盘），听说好像是飞机盘改规则导致alist端失效了，希望尽快补上吧...

Fix patch:
diff --git a/drivers/ilanzou/driver.go b/drivers/ilanzou/driver.go
index 8681fed498e..22d1589f208 100644
--- a/drivers/ilanzou/driver.go
+++ b/drivers/ilanzou/driver.go
@@ -6,7 +6,6 @@ import (
 	"encoding/base64"
 	"encoding/hex"
 	"fmt"
-	"github.com/alist-org/alist/v3/internal/stream"
 	"io"
 	"net/http"
 	"net/url"
@@ -14,6 +13,8 @@ import (
 	"strings"
 	"time"
 
+	"github.com/alist-org/alist/v3/internal/stream"
+
 	"github.com/alist-org/alist/v3/drivers/base"
 	"github.com/alist-org/alist/v3/internal/driver"
 	"github.com/alist-org/alist/v3/internal/errs"
@@ -121,7 +122,7 @@ func (d *ILanZou) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
 	if err != nil {
 		return nil, err
 	}
-	ts, ts_str, err := getTimestamp(d.conf.secret)
+	ts, ts_str, _ := getTimestamp(d.conf.secret)
 
 	params := []string{
 		"uuid=" + url.QueryEscape(d.UUID),
@@ -150,11 +151,17 @@ func (d *ILanZou) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
 	u.RawQuery = strings.Join(params, "&")
 	realURL := u.String()
 	// get the url after redirect
-	res, err := base.NoRedirectClient.R().SetHeaders(map[string]string{
-		//"Origin":  d.conf.site,
+	req := base.NoRedirectClient.R()
+
+	req.SetHeaders(map[string]string{
 		"Referer":    d.conf.site + "/",
 		"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0",
-	}).Get(realURL)
+	})
+	if d.Addition.Ip != "" {
+		req.SetHeader("X-Forwarded-For", d.Addition.Ip)
+	}
+
+	res, err := req.Get(realURL)
 	if err != nil {
 		return nil, err
 	}
diff --git a/drivers/ilanzou/meta.go b/drivers/ilanzou/meta.go
index f15fc01a492..7a4a00fb655 100644
--- a/drivers/ilanzou/meta.go
+++ b/drivers/ilanzou/meta.go
@@ -9,6 +9,7 @@ type Addition struct {
 	driver.RootID
 	Username string `json:"username" type:"string" required:"true"`
 	Password string `json:"password" type:"string" required:"true"`
+	Ip       string `json:"ip" type:"string"`
 
 	Token string
 	UUID  string
diff --git a/drivers/ilanzou/util.go b/drivers/ilanzou/util.go
index ea942795e4f..81773afbc80 100644
--- a/drivers/ilanzou/util.go
+++ b/drivers/ilanzou/util.go
@@ -76,6 +76,10 @@ func (d *ILanZou) request(pathname, method string, callback base.ReqCallback, pr
 		"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,mt;q=0.5",
 	})
 
+	if d.Addition.Ip != "" {
+		req.SetHeader("X-Forwarded-For", d.Addition.Ip)
+	}
+
 	if callback != nil {
 		callback(req)
 	}


Test patch: