unr-deaddrop / pygin

Cross-platform agent for DeadDrop written in Python.
0 stars 0 forks source link

Make Pygin (mostly) platform-independent + Empyrean integration #72

Closed lgactna closed 7 months ago

lgactna commented 8 months ago

Empyrean is the most popular Python-based token grabber by far, and it does a lot of other things too. That said (and for good reason), it generally assumes a Windows environment. But we already know that we can't use a Windows environment because official Windows binaries for Redis don't exist anymore, much less portable ones.

However, it seems like unofficial ports of Redis to Windows do exist, such as https://github.com/zkteco-home/redis-windows. These binaries could theoretically be included in a bundle of Pygin (downloaded at runtime), and then executed from the entrypoint of the script. Similar solutions exist for making portable Redis binaries for Linux, such as https://gist.github.com/mitjafelicijan/77648500a9024fe58216a6835d5ebf8b.

The next problem then becomes turning the whole Celery setup into a PyInstaller executable. That's also kind of challenging:

but the gist seems to be "start the Celery worker and beat from its own file". This appears to be sufficient to get everything to run, even if you have to call separate executables to get things started.

To make things work with a modified Empyrean that just generates PyginMessages (e.g. you call it, it runs, it writes its outputs to stdout or disk or something instead of a webhook), you would need to:

lgactna commented 7 months ago

fixed by #87