2024-08-05 22:09:26 +03:00
|
|
|
# core_daemon
|
|
|
|
|
2024-08-05 22:28:02 +03:00
|
|
|
My attempt of creating python daemon handler.
|
|
|
|
This was written with Python 3.11
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
- Core daemon that runs continuously and manages modules
|
|
|
|
- Interactive shell for user interaction
|
|
|
|
- Dynamic loading and unloading of modules
|
|
|
|
- Custom command execution from loaded modules
|
|
|
|
- Auto-completion for commands in the shell
|
|
|
|
- Ability to upgrade the core daemon
|
|
|
|
- Modules are loaded from an 'modules' directory
|
|
|
|
|
|
|
|
## Structure
|
|
|
|
|
|
|
|
dynamic-module-manager/
|
|
|
|
├── core_daemon.py
|
|
|
|
├── daemon_cli.py
|
|
|
|
├── modules/
|
|
|
|
│ ├── extra_commands.py
|
|
|
|
│ └── http_service.py
|
|
|
|
└── README.md
|
|
|
|
|
|
|
|
## Getting Started
|
|
|
|
|
|
|
|
1. Start the core daemon:
|
|
|
|
|
|
|
|
python3 core_daemon.py
|
|
|
|
|
|
|
|
|
|
|
|
2. In a separate terminal, start the shell:
|
|
|
|
|
|
|
|
python3 shell.py
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Once in the shell, you can use the following commands:
|
|
|
|
|
|
|
|
- `list_available`: List all available modules in the 'modules' directory
|
|
|
|
- `load <module_name>`: Load a module
|
|
|
|
- `unload <module_name>`: Unload a module
|
|
|
|
- `list`: List all currently loaded modules
|
|
|
|
- `upgrade`: Upgrade the core daemon (restarts the daemon in current implementation)
|
|
|
|
- Any custom commands provided by loaded modules
|
|
|
|
|
|
|
|
Use tab completion to see available commands and modules.
|
|
|
|
|
|
|
|
## Creating New Modules
|
|
|
|
|
|
|
|
To create a new module:
|
|
|
|
|
|
|
|
1. Create a new Python file in the 'modules' directory
|
|
|
|
2. Define your module as a class
|
|
|
|
3. Implement at least one of these functions `initialize()`, `shutdown()`, `get_commands()`
|
|
|
|
|
|
|
|
See `modules/extra_commands.py` and `modules/http_service.py` for an example of how to structure a module.
|
|
|
|
|
|
|
|
|
|
|
|
# Todo
|
|
|
|
|
|
|
|
- Maybe add ability to search for modules in directories set by a command
|
|
|
|
|
|
|
|
- Create module to add auth for the cli connections...
|
|
|
|
|
|
|
|
- Add error handling to core_daemon and daemon_cli...
|