<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      多存儲文件列表神器Alist:輕松管理你的云端資源

      Alist - 多存儲文件列表程序

      logo

      :card_index_dividers:一個支持多存儲的文件列表程序,使用 Gin 和 Solidjs。

      功能特性

      • 多存儲支持:集成了超過70種存儲服務(wù),包括阿里云盤、115網(wǎng)盤、百度網(wǎng)盤、騰訊云、Google Drive、OneDrive等
      • 統(tǒng)一管理:將多個存儲服務(wù)聚合在單一界面中,實現(xiàn)統(tǒng)一文件管理
      • WebDAV支持:提供WebDAV協(xié)議支持,兼容各種客戶端
      • 快速部署:支持Docker快速部署,提供多種安裝方式
      • 開源免費:基于MIT協(xié)議開源,完全免費使用
      • 跨平臺:支持Windows、Linux、macOS等多個平臺
      • 現(xiàn)代化界面:基于Solidjs構(gòu)建的現(xiàn)代化用戶界面

      安裝指南

      環(huán)境要求

      • Go 1.20+
      • Node.js
      • GCC
      • Git

      從源碼安裝

      1. 克隆項目代碼:
      git clone https://github.com/alist-org/alist.git
      git clone --recurse-submodules https://github.com/alist-org/alist-web.git
      
      1. 切換到主分支:
      git checkout main
      
      1. 啟動后端服務(wù):
      go run main.go
      
      1. 啟動前端服務(wù):
      pnpm dev
      

      使用Docker安裝

      docker pull xhofe/alist
      docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest
      

      二進(jìn)制文件安裝

      從GitHub Releases頁面下載對應(yīng)平臺的二進(jìn)制文件,解壓后直接運行。

      使用說明

      基本命令

      啟動服務(wù)器:

      ./alist server
      

      查看版本信息:

      ./alist version
      

      管理管理員賬戶:

      # 顯示管理員信息
      ./alist admin
      
      # 重置管理員密碼為隨機字符串
      ./alist admin random
      
      # 設(shè)置管理員密碼
      ./alist admin set NEW_PASSWORD
      
      # 顯示管理員token
      ./alist admin token
      

      服務(wù)管理

      后臺啟動服務(wù):

      ./alist start
      

      停止服務(wù):

      ./alist stop
      

      重啟服務(wù):

      ./alist restart
      

      強制停止服務(wù):

      ./alist kill
      

      存儲管理

      列出所有存儲:

      ./alist storage list
      

      禁用存儲:

      ./alist storage disable <掛載路徑>
      

      核心代碼

      主程序入口

      package main
      
      import "github.com/alist-org/alist/v3/cmd"
      
      func main() {
          cmd.Execute()
      }
      

      服務(wù)器啟動核心代碼

      // ServerCmd represents the server command
      var ServerCmd = &cobra.Command{
          Use:   "server",
          Short: "Start the server at the specified address",
          Long: `Start the server at the specified address
      the address is defined in config file`,
          Run: func(cmd *cobra.Command, args []string) {
              Init()
              if conf.Conf.DelayedStart != 0 {
                  utils.Log.Infof("delayed start for %d seconds", conf.Conf.DelayedStart)
                  time.Sleep(time.Duration(conf.Conf.DelayedStart) * time.Second)
              }
              bootstrap.InitOfflineDownloadTools()
              bootstrap.LoadStorages()
              bootstrap.InitTaskManager()
              if !flags.Debug && !flags.Dev {
                  gin.SetMode(gin.ReleaseMode)
              }
              r := gin.New()
              r.Use(gin.LoggerWithWriter(log.StandardLogger().Out), gin.RecoveryWithWriter(log.StandardLogger().Out))
              server.Init(r)
              // ... 服務(wù)器初始化代碼
          },
      }
      

      存儲驅(qū)動接口

      type Driver interface {
          Config() Config
          GetAddition() Additional
          Init(ctx context.Context) error
          Drop(ctx context.Context) error
          List(ctx context.Context, dir Obj, args ListArgs) ([]Obj, error)
          Link(ctx context.Context, file Obj, args LinkArgs) (*Link, error)
          // ... 其他接口方法
      }
      

      阿里云盤驅(qū)動示例

      type AliDrive struct {
          model.Storage
          Addition
          AccessToken string
          cron        *cron.Cron
          DriveId     string
          UserID      string
      }
      
      func (d *AliDrive) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) {
          files, err := d.getFiles(dir.GetID())
          if err != nil {
              return nil, err
          }
          return utils.SliceConvert(files, func(src File) (model.Obj, error) {
              return &model.ObjThumb{
                  Object: model.Object{
                      ID:       src.FileId,
                      Name:     src.Name,
                      Size:     src.Size,
                      Modified: src.UpdatedAt,
                      IsFolder: src.Type == "folder",
                  },
                  Thumbnail: model.Thumbnail{Thumbnail: src.Thumbnail},
              }, nil
          })
      }
      

      Alist通過模塊化的驅(qū)動設(shè)計,使得添加新的存儲服務(wù)變得簡單高效。每個存儲驅(qū)動都實現(xiàn)了統(tǒng)一的接口,保證了系統(tǒng)的一致性和可擴展性。
      更多精彩內(nèi)容 請關(guān)注我的個人公眾號 公眾號(辦公AI智能小助手)
      對網(wǎng)絡(luò)安全、黑客技術(shù)感興趣的朋友可以關(guān)注我的安全公眾號(網(wǎng)絡(luò)安全技術(shù)點滴分享)

      公眾號二維碼

      公眾號二維碼

      posted @ 2025-11-05 14:13  qife  閱讀(0)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久久国产乱子伦精品作者| 亚洲一区成人在线视频| 好吊视频一区二区三区人妖| 亚洲av成人免费在线| 亚洲第一福利网站在线观看| 人妻中文字幕精品系列| 亚洲精品成人区在线观看| 亚洲高清国产成人精品久久| 亚洲国产成人自拍视频网| 欧美奶涨边摸边做爰视频| 日韩少妇人妻vs中文字幕| 三人成全免费观看电视剧高清| 国产69精品久久久久99尤物| 亚洲综合一区二区三区不卡| 国内精品自线在拍| 免费一区二三区三区蜜桃| 国产精品v片在线观看不卡| 露脸叫床粗话东北少妇| 亚洲色成人网站www永久四虎| 九九热久久这里全是精品| 久久永久视频| 免费 黄 色 人成 视频 在 线| 久久久久亚洲AV色欲av| 老司机免费的精品视频| 最新精品露脸国产在线| 无码伊人66久久大杳蕉网站谷歌| 自拍偷自拍亚洲一区二区| 大香网伊人久久综合网2020| bt天堂新版中文在线| 三人成全免费观看电视剧高清| 国产精品久久久天天影视香蕉| 九龙坡区| 深夜宅男福利免费在线观看| 中文字幕国产日韩精品| 水蜜桃av导航| 视频一区二区三区自拍偷拍| 久久99精品久久久久久9| 成人免费看片又大又黄| 亚洲av成人区国产精品| 亚洲最大成人在线播放| 国产免费丝袜调教视频|