81a5404a55 | ||
---|---|---|
.gitignore | ||
Makefile | ||
README.md | ||
api.h | ||
error.c | ||
ls.bat | ||
main.c | ||
make.bat | ||
pull_fromgit.bat | ||
rm.bat | ||
sync2git.bat | ||
touch.bat |
README.md
PurrForce
purrforce purforce-purforce-purforce...(drum roll)... it really is the cats meow...(meow) (meow)
like the winamp lamas ass thing
it can play that by default on each startup. launches to the system tray if %APPDATA% has purfoce.ini that tells the server address, else it prompts for server deets
uses http/https for all comms
because you might want to run it behind nginx with proxy pass, the server runs just http and you use apache or nginx reverse proxy to do lets encrypt and add https. client tries both so we don't force people to setup some https bs.
the program does not need to store two copies (or the full history) on your local PC. only your current working copy is stored, and is rsynced to the server.
also, server does not keep too many backups because it will use up too much space. but users can request a backup via rightclick menu on any file.
click on systray to get a list of all files currently being tracked. tracking is via direct file selection not using any kind of repo.
you can use github for code, and purrforce for the massive .blend files and such.
server maintains list of users registered and list of users online. you can ping them a DM and it shows up in their systemtray, it can reference a file you tracked and suggest them a path to save it to.
path can use variables that they can set in the GUI varaibles section which is stored in .ini file locally as you might have different computers each with the base project dir in different locations each time.
if you add a file to tracking you add it writeable in progress or readonly finished. others can DL it but the systray will constantly set its file flags to readonly, unless they right click clone private copy (tracked) or clone private copy (untracked) under a new name. with a checkbox for remove original from local drive.
normal deleting a file just makes it untracked but still available in systray file listing on server, can redownload from server. to delete on server, rightclick and choose delete on server (keep local) or delete on both server and local. Server side it moves to recycle bin and old recycle bin items get deleted to make hdd space free when needed.
systray has a bar meter of how much server HDD is used up.
allows storage slaves to connect to server and provide a fixed GB amount of storage for the server to use via remote commands (rename,copy,delete,create,rsync transfer).
sys admin panel shows server HDD and all slave HDD and all file objects with rectangle size set by file size in mb, and drag drop to move storage locations.
client access a file stored on storage slave? all client transfer goes to server, which then proxies to storage client. only server needs to have a stable IP, storage slaves can be behind carrier grade NAT, the connection is storage slave connects to server in an infinite loop and long holds open and then bidir data transfer through that.
allow screen streaming via rapid screenshots -> video encode -> upload to server -> all viewers download from server.
allows remote assistance by request assistance right click option on systray icon, choose user to gift control, they get a popup to confirm, they get an SDL window that sees your desktop stream, and mouse and kb input into that window are sent to you and emitted by the app using SendKey() type OS calls. Should allow someone to quickly jump in and show you how to do something in your local blender model, etc. also microphone streaming to speakers.
and an optional internet radio streamed from server with playlist requests voting. Add a track by syncing a local music file to server radio/ folder and then enqueue it in the radio requests UI on the systray app.
app tracks mouse / kb activity and provides AFK status and online status on all registered user avatars.
designed as a blender model and other large binary file syncing service to complement a github repository for LGDG collab project mar-apr 2024.