Open dzervas opened 7 years ago
BTW: We can do that with the plugins too, so that the file remains one but we just append plugin code in the client file (file size is less of a problem vs scattered files).
For the client plugins I'm currently testing zero disk interaction plugins as an anti-forensics measure so for a while at least don't spend too much time on the client plugins.
If the update mechanism works it will be awesome, it's been bugging me for a while now ...
I have made a PoC plugin system for the Client that has a smaller code footprint than the one currently in use and has zero disk interaction. If everything goes well I'll have a complete system uploaded until Monday noon. Having said that I'd suggest yo emphasize on the update mechanism for the client and not the plugins (not the client ones at least) since non-persistent plugins will be (nearly) always up to date.
That's nice - after looking my client plugin code again, I don't like it either. About the self-updating, I don't know when I'll start implementing it. I'll let you know when I start.
There was nothing wrong with the previous plugin system (it had a couple of pros against the one I am developing, namely consistency with the Server plugins and persistence) it's just that I think it would be thematically beneficial to have a more anti-forensics approach.
Take your time with the update mechanism :)
Just a note here too. The Zero Disk Interaction plugin system referenced above is ready and is in the v0.4.0_rc branch. I'll try to document the plugin creation asap and hopefully before 15 May 2017, the target date for testing, documenting and releasing v0.4.0 (if no major blockers are discovered in the meantime). I have included an example plugin (client Geolocation) that should be used as a general guide as the actual system may change until the release.
I just wanted to note down the idea for the implementation of client self-update.
What I thought is that you download the new client, replace the client file on the fly (it's already loaded into memory) and from
main
you destroy theClient
object, re-import the new client and execute its main function (or object).I dummy-tested it and it worked - I'll implement it as soon as I find time to do so.