From bbad13f570c9298d40e60e7f2bfd4abd9bf2ed81 Mon Sep 17 00:00:00 2001
From: Christopher Hase
Date: Thu, 17 Apr 2025 16:11:34 +0200
Subject: [PATCH] add config.json again, part 2
---
README.md | 7 +-
dist/backend/broker.js | 137 ---------------------------------------
dist/backend/config.json | 5 --
dist/backend/server.js | 15 -----
dist/frontend/deploy.js | 1 -
dist/frontend/event.mjs | 18 -----
dist/frontend/index.html | 67 -------------------
7 files changed, 2 insertions(+), 248 deletions(-)
delete mode 100644 dist/backend/broker.js
delete mode 100644 dist/backend/config.json
delete mode 100644 dist/backend/server.js
delete mode 100644 dist/frontend/deploy.js
delete mode 100644 dist/frontend/event.mjs
delete mode 100644 dist/frontend/index.html
diff --git a/README.md b/README.md
index ae36927..9de1b6b 100644
--- a/README.md
+++ b/README.md
@@ -11,10 +11,9 @@ This app will send an I-Ching horoscope to the pre-configured mailhog instance i
This app uses the I-Ching library app https://github.com/Velfi/i-ching.git.
-
-
+It is also possible to configure the intervall of days between the sending of horoscopes and the time of sending. The default is to send one email every seven days at 8 am.
This will start the deployment of the app in the pod, the service and an ingress for the HTTP frontend server and an ingress for the backend server.
When a pod with the app is initally started, one email will be sent to the configured receiver.
@@ -64,5 +63,3 @@ The app can be deployed by running:
$ kubectl apply -f deployment.yaml
```
Der HTTP-Server can be access in a browser with the address https://192-168-197-2.c-one-infra.de/iching/
-
-
\ No newline at end of file
diff --git a/dist/backend/broker.js b/dist/backend/broker.js
deleted file mode 100644
index 3977cc9..0000000
--- a/dist/backend/broker.js
+++ /dev/null
@@ -1,137 +0,0 @@
-import { exec } from 'child_process';
-import * as fs from 'fs';
-import * as nodemailer from 'nodemailer';
-import { fileURLToPath } from 'url';
-import * as path from 'path';
-var config;
-export function executeCommand() {
- exec('iching divine', (error, stdout, stderr) => {
- console.log(`I-Ching-Broker: \'iching divine\' called`);
- if (error) {
- console.error(`Error: ${error.message}`);
- return;
- }
- if (stderr) {
- console.error(`Stderr: ${stderr}`);
- return;
- }
- //Load config once
- if (config == undefined) {
- config = loadConfig();
- }
- console.log(`Horoscope received; sending E-Mail next`);
- sendEmail(stdout);
- });
-}
-// Run function once initially, called from Dockerfile
-executeCommand();
-// Load the Configuration
-function loadConfig() {
- console.log(`Load Config`);
- //const data = fs.readFileSync('config.json', 'utf-8');
- //const configPath = path.join(__dirname, 'config.json');
- const __filename = fileURLToPath(import.meta.url);
- const __dirname = path.dirname(__filename);
- const configPath = path.join(__dirname, 'config.json');
- const data = fs.readFileSync(configPath, 'utf-8');
- return JSON.parse(data);
-}
-// Send E-Mail
-async function sendEmail(content) {
- // Create Transporter
- const transporter = nodemailer.createTransport({
- host: config.mailHost, //"mailhog.mailhog.svc.cluster.local", //config.mailHost,
- port: config.mailPort, //1025, //config.mailPort,
- secure: false
- });
- try {
- const info = await transporter.sendMail({
- from: '"The Oracle" ',
- to: config.emailReceiver, //"test@mailhog.local", //config.emailReceiver,
- subject: "Your Horoscope Is Ready",
- text: content,
- html: html(content)
- });
- console.log("E-Mail sent: ", info.messageId + "\n\n");
- }
- catch (error) {
- console.error("Error Sending E-Mail:", error + "\n\n");
- console.log("Failed to send this horoscope: \n", content + "\n");
- }
-}
-// Generate 1) Parse Tree and 2) HTML
-export function html(inputText) {
- const parseTree = parse(inputText);
- const htmlOutput = render(parseTree);
- return htmlOutput;
-}
-// Generate the Parse Tree
-function parse(input) {
- console.log("Parse input text");
- const root = { type: "Root" };
- var currentNode = root;
- const lines = input.split("\n");
- for (const line of lines) {
- if (line.startsWith("Hexagram")) {
- const hexagram = { type: "Hexagram" };
- currentNode.child = hexagram;
- currentNode = hexagram;
- currentNode.value = "" + line + "
";
- }
- else if (line.startsWith("Judgement")) {
- const judgement = { type: "Judgement" };
- currentNode.child = judgement;
- currentNode = judgement;
- currentNode.value = "" + line + "
";
- }
- else if (line.startsWith("Images")) {
- const images = { type: "Images" };
- currentNode.child = images;
- currentNode = images;
- currentNode.value = "" + line + "
";
- }
- else if (line.startsWith("~") && currentNode.type != "ChangingLines") {
- const changingLines = { type: "ChangingLines" };
- currentNode.child = changingLines;
- currentNode = changingLines;
- currentNode.value = line;
- }
- else {
- currentNode.value = currentNode.value + line + "
";
- }
- }
- return root;
-}
-// Generate HTML from Parse Tree
-function render(node) {
- if (node == undefined) {
- console.log("I-Ching-Broker: Rendering of nodes finished!");
- return "";
- }
- var outputHTML = "";
- switch (node.type) {
- case "Root":
- return render(node.child);
- case "Hexagram":
- node.value = node.value?.replace("", "");
- node.value = node.value?.replace("
", "
");
- node.value = node.value?.replace("
", " - ");
- outputHTML = "
" + node.value + "
";
- outputHTML = outputHTML + render(node.child);
- return outputHTML;
- case "Images":
- outputHTML = "
" + node.value + "
"; //EXTRA closing div (was opened at beginning of hexagram)
- outputHTML = outputHTML + render(node.child);
- return outputHTML;
- case "ChangingLines":
- const regex = new RegExp("~", "g");
- node.value = node.value?.replace(regex, "");
- outputHTML = "
" + node.value + "
";
- outputHTML = outputHTML + render(node.child);
- return outputHTML;
- default:
- outputHTML = "" + node.value + "
";
- outputHTML = outputHTML + render(node.child);
- return outputHTML;
- }
-}
diff --git a/dist/backend/config.json b/dist/backend/config.json
deleted file mode 100644
index 121311d..0000000
--- a/dist/backend/config.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "emailReceiver": "test@mailhog.local",
- "mailHost": "mailhog.mailhog.svc.cluster.local",
- "mailPort": 1025
-}
\ No newline at end of file
diff --git a/dist/backend/server.js b/dist/backend/server.js
deleted file mode 100644
index b0f87f6..0000000
--- a/dist/backend/server.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import express from 'express';
-import cors from 'cors';
-import { executeCommand } from './broker.js';
-const app = express();
-const port = 8090;
-app.use(cors());
-app.post('/iching/api/command', (req, res) => {
- //TODO no logging from inside this method???
- console.log(`Backend-Server: receiving POST to /iching/api/command`);
- executeCommand();
- res.status(200).send('Backend-Server: Broker was called\n');
-});
-app.listen(port, '0.0.0.0', () => {
- console.log(`Backend-Server running on http://0.0.0.0:${port}`);
-});
diff --git a/dist/frontend/deploy.js b/dist/frontend/deploy.js
deleted file mode 100644
index 402c906..0000000
--- a/dist/frontend/deploy.js
+++ /dev/null
@@ -1 +0,0 @@
-window.DEPLOY_MODE = 'local';
diff --git a/dist/frontend/event.mjs b/dist/frontend/event.mjs
deleted file mode 100644
index c0fa2db..0000000
--- a/dist/frontend/event.mjs
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-function handleClick() {
- console.log("Der Button wurde geklickt!");
- //const deployMode = (window as { DEPLOY_MODE?: 'docker' | 'k8s' }).DEPLOY_MODE ?? 'k8s';
- const deployMode = window.DEPLOY_MODE ?? 'k8s';
- const endpoint = deployMode === 'docker' || deployMode === 'local'
- ? 'http://localhost:8090/iching/api/command'
- : '/iching/api/command';
- console.log(`DEPLOY_MODE=${deployMode}, sende POST an: ${endpoint}`);
- fetch(endpoint, { method: 'POST' })
- .then(res => res.text())
- .then(text => console.log("HTTP-Server says:", text))
- .catch(error => console.error("HTTP-Server - Error:", error));
-}
-document.addEventListener("DOMContentLoaded", () => {
- const button = document.getElementById("myButton");
- button?.addEventListener("click", handleClick);
-});
diff --git a/dist/frontend/index.html b/dist/frontend/index.html
deleted file mode 100644
index 9c6984a..0000000
--- a/dist/frontend/index.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
- Your I-Ging Horoscope
-
-
-
-
-
Do you want to know the future?
-
☝️ Look into the future with your personal I-Ging Horoscope! ☝️
-
Click on the Button to receive your personal Horoscope. 100% accuracy guaranteed!
-
-
-
-
-
-
-
-
-
\ No newline at end of file