前情:

上篇博客有提到seafile的存储机制,这里先聊一聊seafile的一些属性的存储

首先,我们去到seafile的数据库中

存在两个数据库,seahub_db主要存一些用户信息,token,api,django配置等等。

seafile_db就是各种存储的信息的记录,可以看到我们上篇博客所述repo、branch等等。


我希望把资料库命名规范化和文件大小限制加在这个位置,类似于加密,在新建资料库时可以选择添加的设置

所以我去数据库查找和加密修改的属性,想要做类似的修改,结果发现在RepoInfo数据库里有is_encrypted属性,但是没有具体的密码这些属性,那么接着去需要密码存在哪里了

上篇博客中有提到commit,那里我找到了数据:

{"commit_id": "5822d0e650c828b51758ff1c0d4bf99a7cfcb23a",
"root_id": "0000000000000000000000000000000000000000",
"repo_id": "d9ec3a54-e492-469c-81fe-6808dfa68afa",
"creator_name": "1297399635@qq.com",
"creator": "0000000000000000000000000000000000000000",
"description": "Created library", "ctime": 1618586527,
"parent_id": null,
"second_parent_id": null,
"repo_name": "test1",
"repo_desc": "",
"repo_category": null,
"encrypted": "true",
"enc_version": 2,
"magic": "f552b91c07f060d093dea2d5ef42df38a3d9b2cd0bfdd69f6c6f9360a21899d6",
"key": "bd40e9278268a579a5d03e67de8d38b473e993062a6d47d46d9c97ccf34b29b01c1cacd14cc2bd7a61a58c3f5d48920e",
"no_local_history": 1,
"version": 1
}

encrypted表示是否加密,enc_version是一个类似于加密层数的东西,原因是我整理代码时发现,是根据这个属性去获取更多层的加密数据的,magic是我们设置的密码,randomkey是随机生成的key值,salt是盐值。


方案:

有了上述研究,我的编写方案如下:
在RepoInfo中添加is_standardized、is_sized属性分别表示是否限制命名和是否限制大小

Repo代码修改如下:

// Repo contains information about a repo.
type Repo struct {ID                   stringName                 stringDesc                 stringLastModifier         stringLastModificationTime int64HeadCommitID         stringRootID               stringIsCorrupted          bool// Set when repo is virtualVirtualInfo *VRepoInfo// ID for fs and block storeStoreID string// Encrypted repo infoIsEncrypted boolEncVersion  intMagic       stringRandomKey   stringSalt        stringVersion     int// Standardized repo infoIsStandardized boolHint string// Sized repo infoIsSized boolSize intUnit string
}

Commit代码修改如下:

// Commit is a commit object
type Commit struct {CommitID       string `json:"commit_id"`RepoID         string `json:"repo_id"`RootID         string `json:"root_id"`CreatorName    string `json:"creator_name,omitempty"`CreatorID      string `json:"creator"`Desc           string `json:"description"`Ctime          int64  `json:"ctime"`ParentID       string `json:"parent_id,omitempty"`SecondParentID string `json:"second_parent_id,omitempty"`RepoName       string `json:"repo_name"`RepoDesc       string `json:"repo_desc"`RepoCategory   string `json:"repo_category"`DeviceName     string `json:"device_name,omitempty"`ClientVersion  string `json:"client_version,omitempty"`Encrypted      string `json:"encrypted,omitempty"`EncVersion     int    `json:"enc_version,omitempty"`Magic          string `json:"magic,omitempty"`RandomKey      string `json:"key,omitempty"`Salt           string `json:"salt,omitempty"`Version        int    `json:"version,omitempty"`Conflict       int    `json:"conflict,omitempty"`NewMerge       int    `json:"new_merge,omitempty"`Repaired       int    `json:"repaired,omitempty"`Standardized   string `json:"standardized,omitempty"`Hint           string `json:"hint,omitempty"`Sized          string `json:"sized,omitempty"`Size           int    `json:"size,omitempty"`Unit           string `json:"unit,omitempty"`
}

即commit文件中添加了如下属性

其中hint是提示符用-连接的字符串,size为大小,unit表示大小的单位(kb/mb)

在此基础上进行各项开发

山东大学校内网盘开发日志4-目前开发思路相关推荐

  1. 基于Hadoop的企业级网盘系统的研究与开发

    基于Hadoop的企业级网盘系统的研究与开发 Research and Development of Enterprise-class Online Storage System based on H ...

  2. 网盘工具比较,以及自己开发的网盘工具[转]

    从自己的观点看,网盘有这么几个好处: 1. 可以将重要文件备份到"云" 上, 防止硬盘崩溃造成数据丢失. 对于google, microsoft提供的存储空间来说, 他们的安全性, ...

  3. 【网盘项目日志】Seafile 源码部署和安装命令

    由于网盘项目一直在更新,旧的安装指南已经过时,需要新的指南. 文章目录 信息 创建 Docker 容器 安装中文语言 安装先决条件 准备数据库 下载源文件 编译并安装 创建配置文件 启动 Seafil ...

  4. 仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)

    转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就只剩下调色板功能没有做了,我本以为会很简单,但是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: 我原本 ...

  5. 仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源代码)

    转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就仅仅剩下调色板功能没有做了.我本以为会非常easy.可是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: ...

  6. 一种百度网盘加速下载的方法及思路

    以下内容为纯粹学习内容,下载后请与24小时内删除! 效果图 PC win端 原百度网盘为了市场竞争,在最新的pc端新增加了一个优化速率的设置,这个设置有优化速率和积分两个模式,实测在开启优化速率模式, ...

  7. 【网盘项目日志】20210601:Seafile 离线下载系统开发(2)

    诶嘿,儿童节快乐- 文章目录 书接上回 研究 seafevents 的 event 机制 编写 handler 配置文件系统 数据库部分 定义定时任务 实现 Worker 注册 Worker 和启动类 ...

  8. Kinect For Windows V2开发日志一:开发环境的配置

    算是正式进军Kinect了,前段时间学的东西现在就忘了,于是从此开始记录一下. 目前为止大部分的学习资料来自于Heresy的博客,写的非常优秀,清晰明了,十分感谢.开发语言为C++,应该会一直使用,但 ...

  9. 开发日志:准备开发ERP对接钉钉,对使用钉钉API简单可行性概述。

    钉钉是一款现在非常流行的业务办公类软件,具有企业内部沟通.考勤审批.外部CRM等功能.除此之外,钉钉还开放了API接口.让我们程序员可以非常方便借助钉钉已有的功能,补充企业管理的短板.刚好最近准备开发 ...

  10. 基于spring boot开发的个人网盘

    文章目录 前言 一.项目现阶段部分效果演示 二.项目数据库部分表设计 2.1. 创建user表.file表.logs表等sql语句 2.2 FileMapper.xml和FileMapper接口 三. ...

最新文章

  1. 北大女学霸看什么技术书?包邮送30本同款!
  2. 介绍一篇通过无监督depth estimation改进语义分割的论文
  3. Python notes
  4. 2019 嵌入式智能国际大会圆满落幕,7 大专场精彩瞬间释出!
  5. 中科视拓获千万pre-A轮融资,想做的不仅仅是人脸识别
  6. sql时间小问题汇总
  7. 学习日记16、easyui editor datagrid 动态绑定url
  8. 蓝绿色——三色配色篇
  9. Latex绘制三线表
  10. KETTLE教程:转换
  11. 关于Terra和Aqua的轨道问题整理
  12. Word批量替换勾选框
  13. HTML如何把输入框变成必填值,required输入框为必填项
  14. 用Java计算黄金分割率_java 实现黄金分割数的示例详解
  15. 代价敏感学习初探 - 有偏损失函数设计
  16. c:if标签多条件的逻辑判断
  17. 安装银河麒麟桌面系统V10【超详细图文教程】
  18. 应聘简历/邮件怎样写
  19. python绘制动态心电图_东软医院收费端使用手册.doc
  20. 房地产结构性兼并潮到来

热门文章

  1. 【2017.11.16】外包单报价
  2. python统计大写字符个数和小写英文字符_统计一个字符串中大写字母字符和小写字母字符,数字字符出现的次数...
  3. 手动安装hadoop集群
  4. java版我的世界MITE怎么下_MITE纯新手向教程 - [MITE]MC实在是太简单了 (Minecraft Is Too Easy) - MC百科|最大的Minecraft中文MOD百科...
  5. 购物网站(测试+步骤+代码)
  6. Linux 基础命令(二)
  7. Linux 查看与修改mtu值
  8. 胡昊—第8次作业--继承
  9. 利用资源文件实现对软件的保护
  10. mysqlfrm 解析mysql frm文件 彻底解决phpmyadmin 管理表 “使用中”问题