山东大学校内网盘开发日志4-目前开发思路
前情:
上篇博客有提到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-目前开发思路相关推荐
- 基于Hadoop的企业级网盘系统的研究与开发
基于Hadoop的企业级网盘系统的研究与开发 Research and Development of Enterprise-class Online Storage System based on H ...
- 网盘工具比较,以及自己开发的网盘工具[转]
从自己的观点看,网盘有这么几个好处: 1. 可以将重要文件备份到"云" 上, 防止硬盘崩溃造成数据丢失. 对于google, microsoft提供的存储空间来说, 他们的安全性, ...
- 【网盘项目日志】Seafile 源码部署和安装命令
由于网盘项目一直在更新,旧的安装指南已经过时,需要新的指南. 文章目录 信息 创建 Docker 容器 安装中文语言 安装先决条件 准备数据库 下载源文件 编译并安装 创建配置文件 启动 Seafil ...
- 仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)
转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就只剩下调色板功能没有做了,我本以为会很简单,但是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: 我原本 ...
- 仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源代码)
转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就仅仅剩下调色板功能没有做了.我本以为会非常easy.可是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: ...
- 一种百度网盘加速下载的方法及思路
以下内容为纯粹学习内容,下载后请与24小时内删除! 效果图 PC win端 原百度网盘为了市场竞争,在最新的pc端新增加了一个优化速率的设置,这个设置有优化速率和积分两个模式,实测在开启优化速率模式, ...
- 【网盘项目日志】20210601:Seafile 离线下载系统开发(2)
诶嘿,儿童节快乐- 文章目录 书接上回 研究 seafevents 的 event 机制 编写 handler 配置文件系统 数据库部分 定义定时任务 实现 Worker 注册 Worker 和启动类 ...
- Kinect For Windows V2开发日志一:开发环境的配置
算是正式进军Kinect了,前段时间学的东西现在就忘了,于是从此开始记录一下. 目前为止大部分的学习资料来自于Heresy的博客,写的非常优秀,清晰明了,十分感谢.开发语言为C++,应该会一直使用,但 ...
- 开发日志:准备开发ERP对接钉钉,对使用钉钉API简单可行性概述。
钉钉是一款现在非常流行的业务办公类软件,具有企业内部沟通.考勤审批.外部CRM等功能.除此之外,钉钉还开放了API接口.让我们程序员可以非常方便借助钉钉已有的功能,补充企业管理的短板.刚好最近准备开发 ...
- 基于spring boot开发的个人网盘
文章目录 前言 一.项目现阶段部分效果演示 二.项目数据库部分表设计 2.1. 创建user表.file表.logs表等sql语句 2.2 FileMapper.xml和FileMapper接口 三. ...
最新文章
- 北大女学霸看什么技术书?包邮送30本同款!
- 介绍一篇通过无监督depth estimation改进语义分割的论文
- Python notes
- 2019 嵌入式智能国际大会圆满落幕,7 大专场精彩瞬间释出!
- 中科视拓获千万pre-A轮融资,想做的不仅仅是人脸识别
- sql时间小问题汇总
- 学习日记16、easyui editor datagrid 动态绑定url
- 蓝绿色——三色配色篇
- Latex绘制三线表
- KETTLE教程:转换
- 关于Terra和Aqua的轨道问题整理
- Word批量替换勾选框
- HTML如何把输入框变成必填值,required输入框为必填项
- 用Java计算黄金分割率_java 实现黄金分割数的示例详解
- 代价敏感学习初探 - 有偏损失函数设计
- c:if标签多条件的逻辑判断
- 安装银河麒麟桌面系统V10【超详细图文教程】
- 应聘简历/邮件怎样写
- python绘制动态心电图_东软医院收费端使用手册.doc
- 房地产结构性兼并潮到来
热门文章
- 【2017.11.16】外包单报价
- python统计大写字符个数和小写英文字符_统计一个字符串中大写字母字符和小写字母字符,数字字符出现的次数...
- 手动安装hadoop集群
- java版我的世界MITE怎么下_MITE纯新手向教程 - [MITE]MC实在是太简单了 (Minecraft Is Too Easy) - MC百科|最大的Minecraft中文MOD百科...
- 购物网站(测试+步骤+代码)
- Linux 基础命令(二)
- Linux 查看与修改mtu值
- 胡昊—第8次作业--继承
- 利用资源文件实现对软件的保护
- mysqlfrm 解析mysql frm文件 彻底解决phpmyadmin 管理表 “使用中”问题