diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 5e3f7c6..6b949a0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,35 +1,35 @@ -name: "Docker" +name: Docker Build and Publish + on: push: + tags: ['v*'] env: - PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7 + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} jobs: - monolith: - name: Docker image + build: runs-on: ubuntu-latest permissions: contents: read packages: write + steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Login to GitHub Containers - uses: docker/login-action@v2 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 with: - registry: ghcr.io - username: ${{ github.repository_owner }} + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build Docker image - uses: docker/build-push-action@v3 + + - name: Build and push Docker image + uses: docker/build-push-action@v5 with: context: . - platforms: ${{ env.PLATFORMS }} push: true - tags: | - ghcr.io/${{ github.repository_owner }}/yggmail:${{ github.ref_name == 'main' && 'latest' || github.ref_name }} + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest, ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} + diff --git a/README.md b/README.md index 21fe9d1..3a21d6a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,43 @@ **Ygggo** is a fork of [Yggmail](https://www.google.com/search?q=https://github.com/yggdrasil-network/yggmail). It is a single-binary, all-in-one Mail Transfer Agent (MTA) that sends and receives email natively over the [Yggdrasil Network](https://yggdrasil-network.github.io/). -## 🚀 Key Improvements in Ygggo (Changelog) + +## 🛠 CURRENT STATUS: Testing & PoF (Proof of Failure) + +**WARNING:** The current version of Ygggo is an experimental implementation. It is susceptible to resource exhaustion attacks and high-load instability. Use only for testing and research purposes. + +## TODO / Roadmap + +### !!! Performance & Reliability + +* **!!! Worker Pool Implementation:** Transitioning from "goroutine-per-request" to a managed Worker Pool to prevent resource exhaustion during high load. **Current state: Vulnerable to OOM/Overload.** +* **!!! Memory Management:** Continuous audit of escape analysis to minimize heap allocations in hot paths. +* **!!! Context Propagation:** Ensuring strict `context.Context` usage across all I/O operations for reliable timeouts and Graceful Shutdown. +* **!!! Enhanced Caching:** Implementing an in-memory decorator for the Storage layer to reduce SQLite contention. + +All of this is Legacy from yggmail. + +Its mean. Ygggo can overload your server, node and can be attacked! ONLY FOR Test and see on PoC! + + +### ⚙️ Core & Architecture +* **Code Decomposition:** Extracting `ygggo-core` to allow integration into third-party Go projects without pulling in the entire MTA stack. +* **Multi-network Transport:** Decoupling the transport layer from Yggdrasil-only logic. Transitioning to a composition-based approach where routing is based on ed25519 public keys, regardless of the underlying network (L3/L4/Overlay) +Transitioning from a monolithic MTA to a modular ecosystem based on the principle of Separation of Concerns: + +* **ygggo-core:** Extraction of core primitives into a standalone Go module. + * Unified Cryptography API (Ed25519 <-> X25519 conversion). + * Common Protobuf definitions for cross-module compatibility. + * Generic streaming interfaces for data handling. +* **ygggo-node:** Specialized implementation for high-traffic public nodes. + * Focus on scalability: Worker Pool, advanced SQLite/PostgreSQL connection pooling. + * Public-facing bridge functionality with rate limiting and DDoS protection. + +**BREAKING CHANGES NOTICE:** Future updates will break compatibility with "old-node" versions. The repository structure is subject to major changes. + +You shouldnt make Federation now! + +## Key Improvements in Ygggo (Changelog) This fork introduces several architectural shifts and performance optimizations: @@ -23,7 +59,6 @@ This fork introduces several architectural shifts and performance optimizations: * **Code Quality:** Significant decomposition of the original codebase for better maintainability. - --- ## Features