diff --git a/.github/workflows/azure-webapps-node.yml b/.github/workflows/azure-webapps-node.yml new file mode 100644 index 0000000..94412a2 --- /dev/null +++ b/.github/workflows/azure-webapps-node.yml @@ -0,0 +1,31 @@ +name: 🔥 Firebase Hosting Deploy + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + id-token: write + contents: read + +jobs: + firebase-deploy: + name: 🚀 Deploy to Firebase Hosting + runs-on: ubuntu-latest + + steps: + - name: 📦 Checkout repo + uses: actions/checkout@v4 + + - name: 🔐 Authenticate to Google Cloud + uses: google-github-actions/auth@v1 + with: + workload_identity_provider: "${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}" + service_account: "${{ secrets.GCP_SERVICE_ACCOUNT }}" + + - name: 🛠️ Install Firebase CLI + run: npm install -g firebase-tools + + - name: 🚀 Deploy to Firebase Hosting + run: firebase deploy --only hosting --project ${{ secrets.GCP_PROJECT_ID }} diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..097ba55 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,27 @@ +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Setup Node.js environment + uses: actions/setup-node@v3.9.1 + with: + # Set always-auth in npmrc. + always-auth: # optional, default is false + # Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0. + node-version: # optional + # File containing the version Spec of the version to use. Examples: .nvmrc, .node-version, .tool-versions. + node-version-file: # optional + # Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default. + architecture: # optional + # Set this option if you want the action to check for the latest available version that satisfies the version spec. + check-latest: # optional + # Optional registry to set up for auth. Will set the registry in a project level .npmrc and .yarnrc file, and set up auth to read in from env.NODE_AUTH_TOKEN. + registry-url: # optional + # Optional scope for authenticating against scoped registries. Will fall back to the repository owner when using the GitHub Packages registry (https://npm.pkg.github.com/). + scope: # optional + # Used to pull node distributions from node-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. + token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }} + # Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm. + cache: # optional + # Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies. + cache-dependency-path: # optional diff --git a/.github/workflows/firebase-deploy.yml b/.github/workflows/firebase-deploy.yml new file mode 100644 index 0000000..9ec4abf --- /dev/null +++ b/.github/workflows/firebase-deploy.yml @@ -0,0 +1,19 @@ +name: Firebase Deploy + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: google-github-actions/auth@v1 + with: + workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} + service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} + - run: npm ci + - run: npm run build + - run: npx firebase deploy --only hosting diff --git a/.github/workflows/gcp-auth.yml b/.github/workflows/gcp-auth.yml index ba8b734..a5d8782 100644 --- a/.github/workflows/gcp-auth.yml +++ b/.github/workflows/gcp-auth.yml @@ -1,26 +1,14 @@ -name: GCP Auth Test +name: GCP Auth Setup on: workflow_dispatch: -permissions: - id-token: write - contents: read - jobs: auth: runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v1 - with: - workload_identity_provider: "projects/491439791457/locations/global/workloadIdentityPools/ci-pool-github-actions/providers/github" - service_account: "github-action-xpert-forex-trad@xpert-forex-trade.iam.gserviceaccount.com" - - - name: Verify identity - run: | - gcloud auth list + - name: Authenticate with GCP + uses: google-github-actions/auth@v1 + with: + workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} + service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} diff --git a/.yaml b/.yaml new file mode 100644 index 0000000..62ebec7 --- /dev/null +++ b/.yaml @@ -0,0 +1,18 @@ +## Cloudflare Endpoint Schema Upload + +**Location**: `intlhub.org → Security → Web Assets → Endpoint Management → Upload Schema` + +**Accepted Formats**: `.yml`, `.yaml`, `.json` + +**Schema Requirements**: +- OpenAPI or Swagger spec +- Define paths, methods, parameters, responses + +**Security Behavior**: +- Matches traffic to schema +- Blocks or logs non-compliant requests + +**Recommended**: +- Include contributor metadata in schema comments +- Version your schema for audit clarity +- Validate with PITR enabled for rollback protection diff --git a/app/Views/dashboard.php b/app/Views/dashboard.php new file mode 100644 index 0000000..b7b99b2 --- /dev/null +++ b/app/Views/dashboard.php @@ -0,0 +1,29 @@ + +
+

Welcome, !

+ +
+
+

Open Trades

+
    + +
  • + - - $ +
  • + +
+
+ +
+

Trade History

+
    + +
  • + - - +
  • + +
+
+
+
+ diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..96ddbb3 --- /dev/null +++ b/bot.py @@ -0,0 +1,9 @@ +# bot.py +# Entry point for the xpert_telegram_bot. + +def main(): + print("Bot is starting...") + # TODO: Implement bot logic here + +if __name__ == "__main__": + main() diff --git a/index-alt.html b/index-alt.html new file mode 100644 index 0000000..a8f379d --- /dev/null +++ b/index-alt.html @@ -0,0 +1,30 @@ + + + + + + Xpert-Forex-Tradex + + + + + +
+

Welcome to Xpert-Forex-Tradex

+

Your gateway to smarter trading insights and transparent onboarding.

+ Login + Register +
+ + + + + diff --git a/send_slack_alert() b/send_slack_alert() new file mode 100644 index 0000000..8b36e2d --- /dev/null +++ b/send_slack_alert() @@ -0,0 +1,25 @@ +from datetime import datetime + +def send_slack_alert(message, token=None): + webhook_url = os.getenv("SLACK_WEBHOOK_URL") + if not webhook_url: + return + + ip = request.remote_addr or "Unknown IP" + timestamp = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC") + token_preview = token[:6] + "..." if token else "No token" + + payload = { + "text": ( + f"🚨 *Auth Failure Alert*\n" + f"> 🕒 Time: {timestamp}\n" + f"> 🌐 IP: {ip}\n" + f"> 🔑 Token: `{token_preview}`\n" + f"> 📣 Message: {message}" + ) + } + + try: + requests.post(webhook_url, json=payload) + except Exception as e: + print(f"⚠️ Slack alert failed: {e}")