Make a generic worker/scheduler api for use within samba based on existing dcerpc daemon (and various rpc services)
Goal for this Hackweek #1
Samba recently redesigned how rpc services are scaled out, there is now a new scheduler daemon that can spawn off worker processes for incoming rpc requests. The scheduler daemon actually takes care of the initial connection from a client (say via named pipe) then spawns the appropriate worker processes and passes the accepted connection to that worker process, the worker process then takes over. The dcerpc daemon/scheduler;
- takes care of discovering what way the rpc services expect to be connected to
- listens appropriately for incoming connections
- execs and monitors the worker processes, the number of worker instances per service for example is configurable.
The scheduler/worker functionality is tightly coupled to dcerpc (both the protocol and some other implementation details) I'd like to look into if it would be possible to make the this more generic (I have at least one use case that could use the same type of functionality). I'd like to understand the code that implements the above and be able to decide if it is possible to split things out in a more generic way. If the cost (and complexity) of doing this in a generic way isn't too high I'd like to try and create a more generic api and perhaps get a prototype working
Goal for Hackweek #2
Been meaning to have a look at the Rust language for a long time now, depending on how Goal #1 above plays out (e.g. if things look too hairy after initial investigations) I'd really like to look into some tutorials/exercises etc. on Rust to get some hands on experience.
This project is one of its kind!