You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: introduce SideDNS project structure and core functionalities
This commit introduces the initial project structure for SideDNS, a local DNS router and transparent HTTP/HTTPS proxy. It sets up the core daemon logic, CLI, and essential configurations.
Key changes include:
- **Project Initialization**: Creates `Cargo.toml` for the main workspace and individual crates (`core`, `cli`).
- **Core Crate (`core`)**:
- Defines `DnsRule` for routing configuration.
- Implements `RuleStore` for managing DNS rules with `arc-swap` for concurrent access.
- Sets up `certs` module for CA generation, certificate signing, and trust store management (system, NSS, Java).
- Introduces `dns` module with `DomainResolver` and `DnsHandler` for local DNS resolution and forwarding.
- Implements `ipc` module for inter-process communication between the CLI/GUI and the daemon.
- Adds `proxy` module for HTTP/HTTPS reverse proxying with WebSocket support.
- Establishes `logging` for structured logging.
- Defines `config` constants for application-wide settings (ports, paths, regex).
- Implements the main `runner` function to orchestrate daemon components.
- **CLI Crate (`cli`)**:
- Defines CLI commands using `clap` for `add`, `remove`, `list`, `resolve`, `daemon`, `run`, `status`, `watch`, `cert`, and `clean` actions.
- Implements command handlers that interact with the core daemon via IPC.
- Includes logic for daemon lifecycle management (start, stop, backgrounding).
- Adds port auto-detection for the `run` command.
- **GitHub Workflows**:
- Introduces `ci.yml` for linting, testing across platforms, and code coverage.
- Adds `release.yml` for automated releases, including changelog generation, multi-platform binary builds, and publishing to `crates.io`.
- **Documentation and Configuration**:
- Creates `README.md` with project overview, features, architecture, installation, and command reference.
- Adds `CONTRIBUTING.md` with guidelines for contributing, development setup, coding standards, and commit conventions.
- Includes `SECURITY.md` for vulnerability reporting.
- Sets up `cliff.toml` for automated changelog generation.
- Adds `.gitignore` and `rustfmt.toml` for code quality and consistency.
This commit lays the foundation for a robust local DNS routing and proxying tool, enabling developers to manage local domains and services efficiently.