moved 2025 to archive

This commit is contained in:
marko
2025-12-31 14:08:30 +01:00
parent 696bfee480
commit a1944c9885
42 changed files with 542 additions and 196 deletions

View File

@@ -125,7 +125,40 @@ dist: all
mkdir -p $(distDir)/httpdocs/ressourcen/fonts
find ./res/fonts -type f -exec $(LN) {} $(distDir)/httpdocs/ressourcen/fonts \;
<<<<<<< Updated upstream
# htaccess
=======
# sitemap
$(LN) ./sitemaps/cwsvjudo-de.xml $(distWebRoot)/sitemap.xml
# @todo shouldn't be used any more
$(LN) configs/local/db.config.php $(distDir)/.local/db.config.php
# participo
mkdir -p $(participoTarget)
for dir in api api/inc config css images lib lib/participoLib local shared sidenav; do mkdir $(participoTarget)/$$dir; done;
$(LN) $(participoSource)/.htaccess $(participoTarget)
$(LN) $(participoSource)/api/*.php $(participoTarget)/api/
$(LN) $(participoSource)/api/inc/*.php $(participoTarget)/api/inc
$(LN) $(participoSource)/*.php $(participoTarget)
$(LN) $(participoSource)/*.js $(participoTarget)
$(LN) $(participoSource)/css/*.css $(participoTarget)/css/
$(LN) $(participoSource)/images/*.svg $(participoTarget)/images/
for dir in lib lib/participoLib shared sidenav; do $(LN) $(participoSource)/$$dir/*.php $(participoTarget)/$$dir; done;
# @todo Make bash call work in Makefile
# ./scripts/deep-directory-linking $(participoSource)/markdown $(participoTarget)/markdown
cp -r $(participoSource)/markdown/ $(participoTarget)/
# @todo check why a linked file isn't validating as php function `is_file` proberly.
cp -r $(participoSource)/videos/ $(participoTarget)/
# library
# - games
# - @todo decide about a directory structure (libary of exercices)
mkdir $(distDir)/games
$(LN) ./src/games/*.md $(distDir)/games/
# htaccess
>>>>>>> Stashed changes
$(LN) ./src/htaccess/heliohost/.htaccess $(distDir)/httpdocs/.htaccess
$(LN) ./src/htaccess/heliohost/pages/responsive/.htaccess $(distDir)/httpdocs/pages/responsive/.htaccess

View File

@@ -0,0 +1,17 @@
{
"cwsvJudo": {
"http": {
"serve_dir": "httpdocs"
},
"db": {
"host": "localhost",
"name": "cwsvjudo_main",
"user": "cwsvjudo_marko",
"dbCharset": "ISO-8859-1",
"outCharset": "UTF-8"
},
"paths": {
"wallpapers": "/ressourcen/graphiken/wallpapers"
}
}
}

View File

@@ -0,0 +1,63 @@
version: "3.3"
services:
web:
# check the php version you need for your project
# image: php:8.2-apache
build:
context: .
dockerfile: PHP.dockerfile
network: host
ports:
# this line maps your pc port to the container port
- "8080:80"
depends_on:
# this line links this container to the db container
- db
volumes:
# this line maps the content of ./html in your pc to the /var/www/html of the container
- ./build/dist/heliohost/httpdocs:/var/www/html
- ./build/dist/heliohost/pages:/var/www/pages
- ./build/dist/heliohost/games:/var/www/games
- ./build/dist/heliohost/shared:/var/www/shared
- ./build/dist/heliohost/libs:/var/www/libs
- ./configs/localDocker/config.json:/var/www/.local/config.json
- ./configs/localDocker/secrets.json:/var/www/.local/secrets.json
db:
# check the mysql version you need for your project
image: mariadb:latest
restart: always
environment:
MARIADB_USER: "cwsvjudo_marko"
MARIADB_DATABASE: "cwsvjudo_main"
MARIADB_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MARIADB_PASSWORD_FILE: /run/secrets/db_password
MARIADB_TCP_PORT: "3306"
volumes:
# this line maps the content of ./mysql_data in your pc to the /var/lib/mysql of the container
- mysqldata:/var/lib/mysql
- ./cwsvjudo.sql:/docker-entrypoint-initdb.d/cwsvjudo.sql
secrets:
- db_root_password
- db_password
# phpmyadmin
phpmyadmin:
image: phpmyadmin:latest
restart: always
depends_on:
- db
- web
ports:
- 8081:80
environment:
# name of the host is the name of the db service started above! Why? I don't know!
- PMA_HOST=db
- PMA_PORT=3306
volumes:
# data storage for the db
mysqldata: {}
secrets:
db_root_password:
file: db_root_password.txt
db_password:
file: db_password.txt

View File

@@ -0,0 +1,14 @@
#! /usr/bin/env bash
open cwsvjudo.de
user cwsvjudo CTI/eiT4RYe6?ac5
# @todo enable ssl check
set ssl:verify-certificate no
set ftp:ssl-allow off
# upload:
mirror --only-newer --ignore-time --verbose --continue --parallel=8 --reverse ./build/dist/heliohost /
put configs/heliohost/config.json -o .local/config.json
put configs/heliohost/secrets.json -o .local/secrets.json
put configs/heliohost/pages.config.inc.php -o httpdocs/pages/responsive/config.php
put configs/heliohost/participo/config.php -o httpdocs/participo/config.php
put configs/heliohost/participo/api/config.php -o httpdocs/participo/api/config.php

View File

@@ -0,0 +1,33 @@
---
title: (Korrektur) Räucherkerzenpokal und Nikolausrandori
---
*In der letzten Mail haben leider die Links nicht richtig funktioniert! Deshalb hier dieselbe Mail nochmal mit funktionierenden Links*
Hallo liebe Judoka,
hallo liebe Eltern!
Die Adventszeit hat es in sich:
## [Räucherkerzenpokal 2025-11-22][RKP]
Die Teilnehmer für den Räucherkerzenpokal geben mir bitte Bescheid, ob für die Anreise noch Mitfahrplätze gebraucht werden, oder auch zur Verfügung gestellt werden können. Vielleicht können wir ein wenig Carpooling betreiben, damit nicht jeder in einem einzelnen Auto fahren muss.
## [Nikolausrandori][Nikolausrandori]
Für den 5.12. (Freitag!) sind wir nach Rochlitz zu einem kleinem gemeinsamen Randori eingeladen worden. Das ganze wird anstelle des üblichen Trainings in Rochlitz stattfinden. Neben den [Teilnehmern][Nikolausrandori] suche ich hier dann auch nach Unterstützung in Form von Fahrern, die helfen könnten uns alle nach Rochlitz zu bringen. Bitte gebt mir Bescheid, ob ihr helfen könnt.
## [Nikolausturnier 2025-12-06][Nikolausturnier]
Am 06.12. danach gibt es dann auch gleich das Nikolausturnier für die U9/U11. Bitte [tragt euch dafür ein][Nikolausturnier].
## [LionsCup 2025-11-30][LionsCup]
Am 30.11. (Sonntag!) wäre dann für die U13 die Gelegenheit mal gemeinsam mit der U11 und U9 in Leipzig anzutreten. Auch hier [schreibt euch bitte im Planer][LionsCup] ein.
MsG marko
[Nikolausrandori]: https://cwsvjudo.de/participo/event?eventId=257
[RKP]: https://cwsvjudo.de/participo/event?eventId=254
[LionsCup]: https://cwsvjudo.de/participo/event?eventId=256
[Nikolausturnier]: https://cwsvjudo.de/participo/event?eventId=245

View File

@@ -0,0 +1,39 @@
---
title: Nikolausrandori und Nikolausturnier
---
Hallo liebe Judoka,
hallo liebe Eltern!
## [Nikolausrandori][Nikolausrandori]
Da ich immer wieder nachgefragt habe, weiß ich, dass sehr viele zum Nikolausrandori kommen wollen. Allerdings hat sich kaum jemand [im Planer eingetragen gehabt][Nikolausturnier]. Ich habe jetzt mal aus dem Kopf alle eingetragen, mit denen ich rechnen würde. Bitte schaut nach, ob ich jemanden zuviel eingetragen habe oder noch jemand fehlt.
### Zeitplan
- Zeit: 16:30 Uhr
- Ort: [Sporthalle "Ziegeleiweg", Am Regenbogen 1, 09306 Rochlitz][Ziegeleiweg]
- *Achtung, Verwechslungsgefahr*: Es gibt fast nebenan noch die Turnhalle "Am Regenbogen". Die ist es nicht. Nehmt, wenn ihr in die Straße Am Regenbogen einbiegt, gleich den Parkplatz und lauft rechts den Ziegeleiweg hoch (und nicht links Am Regenbogen).
Das gemeinsame Training soll am 16:30 Uhr starten. Da wir mit Freitag-Feierabend-Verkehr rechnen müssen, würde ich gerne bereits 15:30 in Chemnitz losfahren. Ich rechne aber damit, dass einige erst 16:00 am Dojo seien können. Deshalb würde ich am liebsten einen Teil bereits 15:30 Uhr nach Rochlitz schicken und ich würde dann in einer zweiten Welle hinterherkommen.
Ich habe für die, wo ich es wusste, bereits Mitfahrgelegenheiten organisiert. Insgesamt sollten wir trotzdem mehr Mitfahrgelegenheiten als Sportler haben. Es würde mich freuen, wenn wir die Mitfahrer schön verteilen könnten.
## [Nikolausturnier 2025-12-06][Nikolausturnier]
Auch für das [Nikolausturnier in Werdeau][Nikolausturnier] hatten sich zwar Interessenten gemeldet, aber tatsächlich eingetragen hatten sich dann doch sehr viel weniger. Bitte kontrolliert noch mal.
## [Dojoübernachtung 28./29.12.2025][Dojoübernachtung]
Nach langer Zeit würde ich auch gerne wieder mal eine Übernachtung Dojo durchführen. Beginn soll am 28.12. 16:00 Uhr sein. Danach wird es ein ausgedehntes Spiele-Training geben, danach ein gemeinsames Abendessen und anschließend wird auf der Matte der Schlafsack ausgebreitet. Am 29.12. gibt es noch ein gemeinsames Frühstück und zwischen 10 und 11 Uhr können dann die Kinder wieder abgeholt werden.
Ich bitte wieder mal darum, dass sich [im Planer eingetragen wird][Dojoübernachtung].
Auch suche ich Unterstützung in Form von Nahrung: Kann jemand leckere, selbstgemachte Sachen (Salate, Obstteller, Brot, ....) beisteuern?
MsG marko
[Nikolausrandori]: https://cwsvjudo.de/participo/event?eventId=257
[Ziegeleiweg]: https://osm.org/go/0MJDxHvCt
[Nikolausturnier]: https://cwsvjudo.de/participo/event?eventId=245
[Dojoübernachtung]: https://cwsvjudo.de/participo/event?eventId=258

View File

@@ -0,0 +1,38 @@
---
title: Newsletter Jahreswechsel 2025/26
---
Hallo liebe Eltern,
Hallo liebe Judoka!
## [Dojoübernachtung 28./29.12.2025][Dojoübernachtung]
Nach langer Zeit würde ich auch gerne wieder mal eine Übernachtung Dojo durchführen. Beginn soll am 28.12. 16:00 Uhr sein. Danach wird es ein ausgedehntes Spiele-Training geben, danach ein gemeinsames Abendessen und anschließend wird auf der Matte der Schlafsack ausgebreitet.
Am 29.12. ist der Zeitplan etwas enger geworden. Bis 9:30 Uhr müssen wir das Dojo ausgeräumt und den Beratungsraum gesäubert haben.
Bisher haben erst recht wenige [im Planer signalisiert][Dojoübernachtung], ob sie teilnehmen oder nicht. Bitte holt das noch nach. Und zwar sowohl wer teilnimmt als auch wer nicht. Einfach nur [hier klicken][Dojoübernachtung].
### Mitbringliste
Mitgebracht nicht vergessen werden sollte:
- Essgeschirr
- Schlafsack
- Luftmatratze
Auch suche ich immer noch Unterstützung in Form von Nahrung: Kann jemand leckere, selbstgemachte Sachen (Salate, Obstteller, Brot, ....) beisteuern?
### Letzter Trainingstag 2025
- Freitag, 19.12.2024
- 16:00-17:45 Uhr Kinder/Jugend
- 17:30-19:15 Uhr Jugend/Erwachsene
### Erster Trainingstag 2025
- Freitag, 02.01.2026
- 16:00-17:45 Uhr Kinder/Jugend
- 17:30-19:15 Uhr Jugend/Erwachsene
[Dojoübernachtung]: https://cwsvjudo.de/participo/event?eventId=258

View File

@@ -0,0 +1,3 @@
shiaiName: 44. Nikolausturnier Werdau
cloudPassword: Wt8tZzHG
cloudLink: https://magentacloud.de/s/t2jEsN63e4F7LmL

View File

@@ -0,0 +1,3 @@
shiaiName: 26. Räucherkerzenpokal
cloudPassword: tztoK3ns
cloudLink: https://magentacloud.de/s/K2XLBCMN8a47Zgd

View File

@@ -1,6 +1,6 @@
[
{
"id": "1",
"id": "2",
"loginName": "marko",
"pwHash": "$2y$10$Dw0HYuSGqU58lpRp0Em46.b.X0KYTrUNtgdkIH6lWVWOnD.lMvuJS",
"pwAlg": "",
@@ -8,7 +8,7 @@
"vorname": "Marko",
"gebDatum": "1982-05-22",
"kinder": "1,2,13,30,40,45,49,80,82,83,84,89,93,95,97,98,99,100",
"eltern": "",
"eltern": null,
"eMail": ["cwsvjudo@arcor.de"],
"attribute": "wantsNewsletter=true",
"config": "{\"colors\":{\"backgroundColor\":\"#7f7f7f\",\"highlightColor\":\"#3f3f3f\",\"buttonColor\":\"#1f1f1f\"}}",
@@ -16,10 +16,12 @@
"corona_telephon": "015901631103",
"corona_PLZ": "09117",
"machsUploadUrl": "https://www.magentacloud.de/share/itaja0u0ho",
"machsUploadPw": "dohk3Ei0"
"machsUploadPw": "dohk3Ei0",
"userId": "1",
"attributeId": "2"
},
{
"id": "2",
"id": "3",
"loginName": "NickW",
"pwHash": "$2y$10$I9KY//8lSiOVhN.MTqQk0.G4PejVSa82yoGjFhBTaU7fYQ3AuY5de",
"pwAlg": "",
@@ -27,18 +29,20 @@
"vorname": "Nick",
"gebDatum": "1997-05-02",
"kinder": "2",
"eltern": "",
"eltern": null,
"eMail": ["nick.weidensager@web.de"],
"attribute": "wantsNewsletter=true",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": "https://www.magentacloud.de/share/jnz7kxem1p",
"machsUploadPw": "ooz6va0E"
"machsUploadPw": "ooz6va0E",
"userId": "2",
"attributeId": "2"
},
{
"id": "6",
"id": "167",
"loginName": "AlexanderDumler",
"pwHash": "",
"pwAlg": "",
@@ -46,15 +50,17 @@
"vorname": "Alexander",
"gebDatum": "0000-00-00",
"kinder": "7",
"eltern": "",
"eltern": null,
"eMail": ["alled82@gmx.de"],
"attribute": "wantsNewsletter=true",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "6",
"attributeId": "2"
},
{
"id": "7",
@@ -64,19 +70,42 @@
"name": "Dumler",
"vorname": "Arthur",
"gebDatum": "2007-12-24",
"kinder": "",
"kinder": null,
"eltern": "6",
"eMail": ["dumlerarthur2412@gmail.com"],
"attribute": "",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": "https://www.magentacloud.de/share/9h8jg3qojw",
"machsUploadPw": "ne4Meit4"
"machsUploadPw": "ne4Meit4",
"userId": "7",
"attributeId": "2"
},
{
"id": "20",
"id": "7",
"loginName": "nSchmidl",
"pwHash": "$2y$10$6HSKdKlTn1OLebrKQdohreAfPlz.BD.FrOBWnkr8yfWI/ImG0Osn.",
"pwAlg": "",
"name": "Schmidl",
"vorname": "Norman",
"gebDatum": "0000-00-00",
"kinder": "13",
"eltern": null,
"eMail": ["post@was7.de"],
"attribute": "wantsNewsletter=true",
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "15",
"attributeId": "2"
},
{
"id": "8",
"loginName": "elternBrittnacher",
"pwHash": "$2y$10$HBejDZ.Ke7bYoaRZcATwAeTb.qqb1WjdzWho.aI987sOVFtMDlc62",
"pwAlg": "",
@@ -84,18 +113,20 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "19",
"eltern": "",
"eltern": null,
"eMail": ["stephanie.brittnacher@gmail.com"],
"attribute": "wantsNewsletter=true",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "20",
"attributeId": "2"
},
{
"id": "59",
"id": "76",
"loginName": "fuchshund",
"pwHash": "$2y$10$5d8bWf/xSktW/QNDDsdeC.tm1gJok7FGCpBcauUuiFg3ezWWcyoHu",
"pwAlg": "",
@@ -103,18 +134,41 @@
"vorname": "Thomas",
"gebDatum": "0000-00-00",
"kinder": "19",
"eltern": "",
"eltern": null,
"eMail": ["thomas@blankfuchs.de"],
"attribute": "wantsNewsletter=true",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "59",
"attributeId": "2"
},
{
"id": "85",
"id": "81",
"loginName": "mohamadZahra",
"pwHash": "",
"pwAlg": "",
"name": "Zahra",
"vorname": "Mohamad",
"gebDatum": "0000-00-00",
"kinder": null,
"eltern": null,
"eMail": ["mohamad.zahra1986@gmail.com"],
"attribute": null,
"config": null,
"corona_eMail": ["mohamad.zahra1986@gmail.com"],
"corona_telephon": "+4917657906737",
"corona_PLZ": "09111",
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "81",
"attributeId": "2"
},
{
"id": "169",
"loginName": "elternGerlach",
"pwHash": "$2y$10$WfSIntzXxRbfmFXi7fFV4ehHXyOdBwPArWYl1tzu6VWcDQBfeI1b2",
"pwAlg": "",
@@ -122,37 +176,41 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "82,83,84",
"eltern": "",
"eltern": null,
"eMail": ["manja.bunzel@gmx.de", "michael_gerlach@gmx.net"],
"attribute": "",
"config": "",
"attribute": null,
"config": null,
"corona_eMail": "manja.bunzel@gmx.de",
"corona_telephon": "01637529146",
"corona_PLZ": "09224",
"machsUploadUrl": "",
"machsUploadPw": ""
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "85",
"attributeId": "2"
},
{
"id": "103",
"id": "172",
"loginName": "elternBoehme",
"pwHash": "$2y$10$wvmShRitXx12hKy8uGogQemifFPOJ1O0/g5Ne5.ht672BJPE51CYK",
"pwAlg": "",
"name": "B\u00f6hme",
"name": "Böhme",
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "102",
"eltern": "",
"eltern": null,
"eMail": ["jeannette.boehme@mail.de", "marcus.boehme@mail.de"],
"attribute": "",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "103",
"attributeId": "2"
},
{
"id": "108",
"id": "173",
"loginName": "elternRichter",
"pwHash": "",
"pwAlg": "",
@@ -160,18 +218,20 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "106,107",
"eltern": "",
"eltern": null,
"eMail": ["grericht@gmail.com"],
"attribute": "",
"attribute": null,
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "108",
"attributeId": "2"
},
{
"id": "110",
"id": "174",
"loginName": "elternOrtmans",
"pwHash": "",
"pwAlg": "",
@@ -179,18 +239,20 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "109",
"eltern": "",
"eltern": null,
"eMail": ["jortmans@gmx.de"],
"attribute": "",
"attribute": null,
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "110",
"attributeId": "2"
},
{
"id": "113",
"id": "175",
"loginName": "ElternEberlein",
"pwHash": "",
"pwAlg": "",
@@ -198,18 +260,20 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "111,112",
"eltern": "",
"eltern": null,
"eMail": ["jana.eberlein@yahoo.de"],
"attribute": "",
"attribute": null,
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "113",
"attributeId": "2"
},
{
"id": "115",
"id": "176",
"loginName": "elternKutschmann",
"pwHash": "",
"pwAlg": "",
@@ -217,21 +281,23 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "114",
"eltern": "",
"eltern": null,
"eMail": [
"uwe.schwerdtfeger@uni-dortmund.de",
"pia.kutschmann@uni-dortmund.de"
],
"attribute": "",
"attribute": null,
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "115",
"attributeId": "2"
},
{
"id": "117",
"id": "177",
"loginName": "elternLafdhal",
"pwHash": "",
"pwAlg": "",
@@ -239,18 +305,20 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "116",
"eltern": "",
"eltern": null,
"eMail": ["Saddam20@outlook.it"],
"attribute": "",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "117",
"attributeId": "2"
},
{
"id": "127",
"id": "209",
"loginName": "elternWolf",
"pwHash": "",
"pwAlg": "",
@@ -258,33 +326,79 @@
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "126",
"eltern": "",
"eltern": null,
"eMail": ["mail_markus@web.de"],
"attribute": "",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "127",
"attributeId": "2"
},
{
"id": "131",
"id": "221",
"loginName": "elternMeyerhoff",
"pwHash": "",
"pwAlg": "",
"name": "Meyerhoff",
"vorname": "Eltern",
"gebDatum": "0000-00-00",
"kinder": "",
"eltern": "",
"kinder": null,
"eltern": null,
"eMail": ["marina.parschina@gmail.com"],
"attribute": "",
"config": "",
"corona_eMail": "",
"corona_telephon": "",
"corona_PLZ": "",
"machsUploadUrl": "",
"machsUploadPw": ""
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "131",
"attributeId": "2"
},
{
"id": "220",
"loginName": "elternUrlass",
"pwHash": null,
"pwAlg": "",
"name": "Urlaß",
"vorname": "Eltern",
"gebDatum": null,
"kinder": null,
"eltern": null,
"eMail": ["winklerurlass@hotmail.de"],
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "133",
"attributeId": "2"
},
{
"id": "219",
"loginName": "martinaGerlach",
"pwHash": null,
"pwAlg": "",
"name": "Gerlach",
"vorname": "Martina",
"gebDatum": null,
"kinder": null,
"eltern": null,
"eMail": ["martinajoel@gmail.com"],
"attribute": null,
"config": null,
"corona_eMail": null,
"corona_telephon": null,
"corona_PLZ": null,
"machsUploadUrl": null,
"machsUploadPw": null,
"userId": "135",
"attributeId": "2"
}
]

View File

@@ -18,10 +18,9 @@ import logging
# only for develop
endDate = (datetime.datetime.now() +
datetime.timedelta(days=7)).strftime("%Y-%m-%d")
endDate = (datetime.datetime.now() + datetime.timedelta(days=7)).strftime("%Y-%m-%d")
participoUrl = "http://cwsvjudo.bplaced.net/participo"
PARTICIPO_URL = "https://cwsvjudo.de/participo"
class Email:
@@ -32,21 +31,21 @@ class Email:
self.title = title
self.mdText = mdText
def addApiKeyToUrls(self, apiKey, url=participoUrl):
self.mdText = re.sub(url+"([^#,\n]*)", url + "\\1" +
"?apiKey="+apiKey, self.mdText)
def addApiKeyToUrls(self, apiKey, url=PARTICIPO_URL):
self.mdText = re.sub(
url + "([^#,\n]*)", url + "\\1" + "&apiKey=" + apiKey, self.mdText
)
@staticmethod
def loadFromMdFile(path):
from yaml import safe_load
# read markdownfile as header and text
mdHeader = None
with open(argv.mdFilePath) as f:
mdHeader = safe_load(get_yaml(f))
title = mdHeader['title'] if checkHeader(
mdHeader) else "cwsvJudo newsLetter"
title = mdHeader["title"] if checkHeader(mdHeader) else "cwsvJudo newsLetter"
mdText = None
with open(argv.mdFilePath) as f:
@@ -56,16 +55,16 @@ class Email:
def get_yaml(f):
'''Extracts the yamlHeader from a Markdown file'''
"""Extracts the yamlHeader from a Markdown file"""
yamlHeader = None
pointer = f.tell()
if f.readline() != '---\n':
if f.readline() != "---\n":
f.seek(pointer)
return ''
readline = iter(f.readline, '')
readline = iter(readline.__next__, '---\n')
return ""
readline = iter(f.readline, "")
readline = iter(readline.__next__, "---\n")
yamlHeader = ''.join(readline)
yamlHeader = "".join(readline)
return yamlHeader
@@ -82,34 +81,33 @@ def checkHeader(header):
bool: true if header is alright, false if an error was detected
"""
retVal = True
if not 'title' in header:
if not "title" in header:
logging.info("Header has no 'title' attribute!")
retVal = False
else:
if header['title'] is False:
if header["title"] is False:
logging.info("Empty title!")
retVal = False
return retVal
def getArguments():
argParser = argparse.ArgumentParser(
description="Send an Markdown-File as eMail"
argParser = argparse.ArgumentParser(description="Send an Markdown-File as eMail")
argParser.add_argument("mdFilePath", help="Path to MarkdownFile to send")
argParser.add_argument("-r", "--receiver", help="json file with the receiver")
argParser.add_argument("--dontSend", action="store_true")
argParser.add_argument(
"-c",
"--config",
nargs="+",
type=argparse.FileType("r"),
help="yaml formatted config file(s)",
)
argParser.add_argument(
"mdFilePath",
help="Path to MarkdownFile to send"
)
argParser.add_argument(
"-r", "--receiver", help="json file with the receiver")
argParser.add_argument(
"--dontSend",
action="store_true"
)
argParser.add_argument(
"-c", "--config",
nargs="+", type=argparse.FileType("r"),
help="yaml formatted config file(s)"
"-p",
"--participoUrl",
help="url for the participo app (e.g. indicator for appending the personal apiKey to the event url)",
default=PARTICIPO_URL,
)
return argParser.parse_args()
@@ -125,7 +123,7 @@ def loadFromJson(path):
def loadFromYamlFile(yamlFile):
from yaml import safe_load
with yamlFile as f:
return safe_load(yamlFile)
@@ -142,17 +140,16 @@ def createApiKey(allowKey, userId, rights, endDate):
return: new api key or none on failure
"""
postData = {
'apiKey': allowKey,
'userId': userId,
'rights': rights,
'endDate': endDate
"apiKey": allowKey,
"userId": userId,
"rights": rights,
"endDate": endDate,
}
response = requests.post(
participoUrl+"/api.apiKeys.add", json=postData)
response = requests.post(argv.participoUrl + "/api.apiKeys.add", json=postData)
jsonResponse = response.json()
return jsonResponse['apiKey'] if 'apiKey' else None
return jsonResponse["apiKey"] if "apiKey" else None
def randomSleep(min=60, max=600):
@@ -181,9 +178,15 @@ if __name__ == "__main__":
for user in receivers:
apiKey = createApiKey(
config['apiKey']['createApiKey'], user['id'], "login", endDate)
config["apiKey"]["createApiKey"],
user.get("userId", user.get("id")),
"login",
endDate,
)
if apiKey is None:
logging.info(f"Couldn't get apiKey for apiKey creation! Ok if no apiKey needs to be created.")
logging.error(
f"Failed to create apiKey for user {user['id']} ({user['loginName']})"
)
continue
email = Email.loadFromMdFile(argv.mdFilePath) # emailTemplate
@@ -193,23 +196,31 @@ if __name__ == "__main__":
# text = pypandoc.convert_text(email.mdText, "plain", format='md', extra_args=[
# "--self-contained", "--resource-path=../aufgaben"])
# plain text did swallow the Url. As workaround we are trying markdown for the plain text
text = pypandoc.convert_text(email.mdText, "markdown", format='md', extra_args=[
"--self-contained", "--resource-path=../aufgaben"])
html = pypandoc.convert_text(email.mdText, "html", format='md', extra_args=[
"--self-contained", "--resource-path=../aufgaben"])
text = pypandoc.convert_text(
email.mdText,
"markdown",
format="md",
extra_args=["--self-contained", "--resource-path=../aufgaben"],
)
html = pypandoc.convert_text(
email.mdText,
"html",
format="md",
extra_args=["--self-contained", "--resource-path=../aufgaben"],
)
# Turn these into plain/html MIMEText objects
txtMimeText = MIMEText(text, "plain")
htmlMimeText = MIMEText(html, "html")
# @todo the message has to be recreated for every email address since it seems to be added by reference to the queue. meaning changing the emailAddress changes it in the previously added also
for toAddress in user['eMail']:
for toAddress in user["eMail"]:
# create the mail
message = MIMEMultipart("alternative")
# Setting header data
message["Subject"] = email.title
message["From"] = config['senderEmailAddress']
message["Reply-To"] = config['senderEmailAddress']
message["From"] = config["senderEmailAddress"]
message["Reply-To"] = config["senderEmailAddress"]
message["Date"] = str(utils.formatdate(localtime=True))
# only set the to-header one time: setting it multiple
@@ -231,18 +242,21 @@ if __name__ == "__main__":
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
for message in messageQueue:
# randomSleep(min=10, max=20)
with smtplib.SMTP_SSL(config['smtp']['serverAddress'], config['smtp']['serverPort'], context=context) as server:
server.login(config['smtp']['login'], config['smtp']['password'])
with smtplib.SMTP_SSL(
config["smtp"]["serverAddress"],
config["smtp"]["serverPort"],
context=context,
) as server:
server.login(config["smtp"]["login"], config["smtp"]["password"])
if not argv.dontSend:
logging.info(f"sending to {message['To']}")
server.sendmail(
from_addr=config['senderEmailAddress'],
from_addr=config["senderEmailAddress"],
to_addrs=message["To"],
msg=message.as_string()
msg=message.as_string(),
)
# except smtplib.SMTPSenderRefused as exception:
# if exception.smtp_code == 450:
@@ -250,4 +264,3 @@ if __name__ == "__main__":
# time.sleep(60 * 60)
# server.login(config['smtp']['login'], config['smtp']['password'])
# logging.error(f"Unexpected SMTPSenderRefused exception: {exception} - {repr(exception)}")

View File

@@ -1,12 +0,0 @@
---
title: 28. Frühjahrskrümelrandori - Mediasharing
---
Hier der Link zu den Videos und Bildern des 28. Frühjahrskrümelrandori:
- Passwort: xkw762YL
- Link: https://magentacloud.de/s/akRTozY5MrKTxQF
Wie immer würde ich mich freuen, wenn auch alle anderen ihre gemachten Bilder und Videos mit hochladen.
MsG marko

View File

@@ -1,12 +0,0 @@
---
title: Judo Safari - Mediasharing
---
Hier der Link zu den Videos und Bildern der Judo Safari:
- Passwort: smTS39WK
- Link: https://magentacloud.de/s/4qyJCxHyD2aspkq
Wie immer würde ich mich freuen, wenn auch alle anderen ihre gemachten Bilder und Videos mit hochladen.
MsG marko