Join us on Discord!
You can help CodeWalrus stay online by donating here.

Vapor (and BOS) Package Manager and Vapor Proxy Service for the TI-84+ CE

Started by ACagliano, August 05, 2021, 04:40:58 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ACagliano

I posted about this a while ago on Cemetech and forgot to put it here as well, so here it is.

In addition to my other two big projects (TI-Trek and HASHLIB), I've also been working on another project. It started off as a Steam-style client for connecting to online games such as TI-Trek, but I soon decided it could serve a more targeted purpose. Thus, the project has been rebranded Vapor Package Manager, or VPM, for short.

BOS Package Manager (BPM) is beckadamtheinventor's project, so I will let him elaborate on that end of things, but I included it here and in the topic title to draw some attention to that existing as well.

This project will imitate the functionality of `apt-get`, `apt`, `Homebrew`, `Macports` or any other "package manager" you would have available to you on a *nix style system. It will be released as a Libload-lib with a few functions: `vpm_install(<package>, [options])`, `vpm_remove(<filename>, <filetype>)` and `vpm_reload(void)`. The install function will query the download server for a package with that name. The remove function will essentially just call ti_Delete. The reload function can be used to reload the program that is currently being executed without crashing (this reload mechanism is already implemented in the VAPOR client and it works pretty reliably).

On the host side, the download mirror consists of a directory, `packages` forked into `bpm` for BOS and `vpm` for VAPOR. In each, each available package is in a folder with the package name. For example, Project TI-Trek would be in a folder named `titrek`. That folder would contain any internal dependencies of the project--this is the main program, graphics packs, configurations...whatever is part of the project. The directory also contains a manifest file, manifest.json, in which the author name, description of the project, and external dependencies are listed. For example, for project TI-Trek, the manifest file might look like this:

# manifest.json
{
    "author": "acagliano",
    "description": "A multiplayer space-combat game",
    "pkg-depends": ["hashlib", "srldrvce", "clibs"]
}
When the client requests the package titrek, all internal dependencies are fetched. So TITREK.8xp and TrekGFX.8xv. It also parses the "pkg-depends" and fetches the contents of those packages, as well as any dependencies of those packages, constructing a dependency chain (with repetitive dependencies being pruned). So titrek would fetch hashlib which has no dependencies, srldrvce which has a dependency on usbdrvce (which has no dependencies), and clibs which contains the default toolchain libraries. All of the needed files will be streamed to your calculator, updating a manifest table on your calculator which contains the name, type, and SHA-256 of the downloaded program. Files will only be redownloaded if the SHA-256 of the file on the server does not match that in the local manifest.

I believe Beck will craft BPM to function similarly, but I will let him elaborate if he wishes.


---------
As for the other part of "VAPOR", Vapor Proxy Service (VPS), that is a network I have set up for people who want to host calculator game servers, or servers for other calculator utilities such as VPM, BPM, and more to do so. It's free, but I may throw ads on explainer pages for the hosted servers, just to help with the maintenance costs of the server (electricity, internet, domain name, you know the kind). VPS will also support opening a proxy connection between itself and your own server if you want to self-host, but also use some of the security features I plan to implement in VPS.

VPM and VPS will both support packet encryption via HASHLIB. And *if* beck does not support powmod for vint exponents (So I can RSADecrypt within hashlib) then I will also set up a host for the calculator to commune with that can validate SSL certificates that the calculator sends it (I will have to do some research on this).
  • Calculators owned: TI-84+ CE

Powered by EzPortal