HelloZeroNet / HelloZeroNet/ZeroNet

Update ZeroBundle while updating from UI

Đang mở
#2,264 14 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
JavaScript
Star
18.8k
Fork
2.3k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

**Is your feature request related to a problem? Please describe.**

Currently, if you update ZeroNet from UI, the only thing that will change is ZeroNet source code. While this is OK if you use ZeroNet directly from source code, it is not in case if you use ZeroBundle as ZeroBundle files will stay the same.

This creates some problems:

* One is already my DNS plugin with custom dependencies. In case of such a plugin, all users would have to manually update ZeroBundle with new dependencies to use it. Although I fixed this with bundling dependencies along with plugin's code, this isn't the best solution.

* Another problem would be in case if there is some critical bug or security issue with distributed Python version or dependencies bundled in ZeroBundle. In case of this, all users would have to manually update ZeroBundle to fix this bug.

* Additional problem which was already fixed was updating from Python 2. Because ZeroNet 0.7.0 required Python 3, the only way to update it was by manually updating ZeroBundle. If updating would be implemented in a better way, ZeroBundle would change to Python 3 automatically.

**Describe the solution you'd like**

Instead, you should be also updating ZeroBundle files while updating from UI. You should also change how updates work internally.

* On the ZeroUpdate site (or whatever it is called), there should be one JSON file which would contain all metadata about the latest release (version, revision, description, changelog, type of changes, type of update...). ZeroNet should use that file to check if an update is available and also display details, description and changelog to users. It would be good to also store details of all previous releases.

* That site should also host ZIP files which actual update. One of the files should contain classic source code and others should be for ZeroBundle for specific platforms.

* Before updating, ZeroNet should check if a release you want to install (and any release newer than your current release) contains changes to ZeroBundle. If it doesn't, it should simply download source code ZIP file and install it as currently. But if the release contains changes to ZeroBundle (new dependencies, new Python version...), it should also download and install ZeroBundle ZIP file with updated dependencies/Python.

* For additional security, all files should be cryptographically signed. By default, it should only trust official ZeroNet key, but it should be possible to also trust different keys or completely disable verification and change ZeroUpdate site address. This would be useful if you want to create custom ZeroNet installation with your own updated.

One of already built Python packages for updating is [PyUpdater ](https://www.pyupdater.org/). I haven't checked it too much but it also provides a plugin for additional storage locations so it should be possible to store updates on ZeroNet site. But I haven't checked it too much so I don't know if it might be easier to just create update system yourself.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

The issue names no files, tests, or entry points. Start by tracing the current UI update path and assessing the proposed ZeroUpdate metadata, release ZIPs, ZeroBundle handling, and signing requirements. Done would require an agreed design and implementation that updates source and platform-specific bundles safely.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
release, security
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
20/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.