基于seafile的校内网盘开发
文章平均质量分 52
以开源网盘项目为基础,搭建专用网盘,为师生提供便捷友好的云存储服务。
平原上的维克多
这个作者很懒,什么都没留下…
展开
-
山东大学 软件学院 2021年春季创新项目实训 个人总结
本次创新项目实训自三月开始,终于在今天的答辩之后告一段落,下文对这段工作作简要总结。说实话,一开始seafile项目并非我心目中的最佳选题,原因在于个人在这方面并没有技术积累。面对一个充满不确定性的选题,寒假并没有花多少时间思考和准备,直到队长给出seafile开发团队的github地址之后才上去作了简单浏览。开始研究seahub以及seafile-server的时候,我才发现,源代码的规模过于庞大,以至于我像是个误入迷宫的孩子,迷失在了github的目录下。我从未面对这样复杂的工程,在它面前,以往的原创 2021-06-10 21:31:34 · 517 阅读 · 0 评论 -
Moss前端修改
发现子目录下的More按钮在选中单个文件时会出现而当选中多个文件或文件夹之后会消失我们找到该部件的前端代码并发现了该逻辑对应的代码在361行:并增加下列代码为该按钮增加语义,使得当两个文件被选中后点击该按钮实现查重功能,加入代码如下:效果如图:并增加点击按钮的动作onMossToggle如下:为了在后端对该动作作出反应,需要首先seahub/seahub/api2/urls.py中增加映射:然后到seahub/seahub/api2/views.py对view进行实现:..原创 2021-06-10 19:37:23 · 152 阅读 · 0 评论 -
查找seafile内部文件链接
在seahub/seahub/utils/init.py中找到该函数定义:发现需要文件的token作为参数,进一步查找该函数的调用场景后发现后端通过seafile-server中seafile-api的get_fileserver_access_token方法获取文件token:进入seafile-server库查找该函数定义,结果如下:打开api.py找到该函数的定义:回到seahub/seahub/api2/views.py对view进行修改:获取访问文件的url的修改过程参考se.原创 2021-06-10 19:32:05 · 348 阅读 · 0 评论 -
利用通知机制实现Moss结果传送
由于seahub中每次成功分享资料库或文件后都会向对方发送通知,因此我们根据该逻辑找到对应代码,如下:发现seahub通过发送信号实现通知:进一步查找后发现notification机制由三部分构成:1、在signals.py中通过django的Signal机制进行注册2、在models.py中对其动作进行实现3、在views.py中对其进行调用于是我们照猫画虎,实现自己的moss通知机制:在seahub/seahub下新建文件夹moss,其中定义signals.py如下:在model原创 2021-06-10 19:26:54 · 167 阅读 · 0 评论 -
seafile功能修改与添加的思路梳理
在seahub的前端代码中找到对seafileAPI的调用代码原创 2021-05-30 11:56:48 · 700 阅读 · 1 评论 -
Find a needle in the haystack (初探ShingleCloud)
ShingleCloud原创 2021-05-23 18:27:42 · 742 阅读 · 1 评论 -
Mac端解决docker创建容器时端口3306被占用的错误
创建容器命令如下:docker run -it -p 8000:8000 -p 8082:8082 -p 3000:3000 -p 3306:3306 --name seafile-dev-img -v /Users/wysdu/Documents/seafile-develop:/root/dev/source-code ubuntu:18.04 bashdocker: Error response from daemon: driver failed programming external原创 2021-04-22 19:33:35 · 1793 阅读 · 2 评论 -
中期检查报告
Seafile权限控制的扩展思路:权限控制基于网盘的共享功能,分成“资料库”“子目录”“文件”“链接”四种粒度。1、当前缺陷主要在于只能在共享时控制用户的权限,缺乏灵活性,在操作逻辑上对用户很不友好。因此,我们对其进行改进,针对“资料库”“子目录”及“文件”直接提供被共享者的查找、权限更改入口。2、此外,seafile没有针对“下载”功能对用户设置权限控制,我们需要现有权限类型进行扩展。3、最后,由于seafile当前不支持在线预览及编辑功能,因此基于office插件实现文件在线预览、编辑功能的同原创 2021-04-21 23:37:05 · 445 阅读 · 0 评论 -
Seafile开发过程中使用到的工具及命令汇总
GitDockerImage: 包含操作系统的镜像以及系统软件Container(Instance of Image): 提供轻量级操作系统环境,可以创建、启动、停止和删除。多个容器之间相互隔离,互不影响。Image 本身只读,用户基于Image创建和启动的Container是Docker引擎在Image层之上建立的的可写层。ShellPerl在Linux和Mac端直接通过下列命令安装:curl -L http://xrl.us/installperlosx | bash安装完成后原创 2021-04-21 23:32:48 · 319 阅读 · 0 评论 -
Seafile-server与Seahub的交互
RPC机制Seafile-Server中使用 libsearpc来实现远程过程调用。Searpc是基于GObject系统的简单C语言RPC框架。Searpc处理RPC的序列化/反序列化部分,传输部分留给用户。序列化/反序列化通过json-glib库使用JSON格式。执行RPC函数后,已序列化的json对象从服务器返回到客户端。服务器端定义的每个RPC函数都应使用一个额外的GError参数来报告错误。一次完整的RPC调用流程(同步调用、异步另说)如下:1)服务消费方client调用以本地调用方式调用原创 2021-04-11 21:47:41 · 274 阅读 · 0 评论 -
Seafile-seahub功能简析
Seafile-seahub功能简析WSGI: Web Server Gateway InterfacePython+Django开发环境js: React主要代码集中在seahub和frontend包当中。资料库以“资料库”的概念作为顶层容器以存放文件及文件夹,资料库作为顶层文件夹具有两个特殊属性:1、每个资料库可以单独同步到桌面客户端2、每个资料库保存自己的修改历史,但是没有针对所有资料库的全局文件修改历史。资料库可以在私人或群组间共享。资料库支持加密功能。资料库具备快照功能,将原创 2021-03-04 17:50:39 · 962 阅读 · 1 评论