tjarbo / discord-moodle-bot

Get notified about changes on moodle on you favorite platform!
https://docs.tjarbo.me/moodle-notification-service/1.0.0/home
GNU Affero General Public License v3.0
27 stars 2 forks source link

Probleme mit SSO #67

Closed FreshImmuc closed 3 years ago

FreshImmuc commented 3 years ago

Also ich habe MongoDB installiert und node.js auch sache ist dass wenn ich die docker befehle mache cmd sagt dass es diesen Befehl nicht gibt. Bitte um Hilfe. Die anderen sachen Funktionieren alle also Discord bot token usw

tjarbo commented 3 years ago

Moin, um welchen Befehl handelt es sich denn ?

FreshImmuc commented 3 years ago

es handelt sich um alle befehle unter dem Menüpunk: "Erstellen einer eigenen Instanz mit Hilfe von Docker"

tjarbo commented 3 years ago

Ich bin etwas verwirrt :thinking: Du meintest, dass deine cmd sagt, den Befehl gäbe es nicht: Docker hast du aber installiert (Anleitung)? Wenn dein Docker richtig eingerichtet ist, sollte dieser Befehl docker run hello-world auf jedenfall klappen.

FreshImmuc commented 3 years ago

Okay. ich habe jetzt docker installiert und in meinem Ordner mit den Dateien die Docker-Befehle ausgeführt. Der Bot ist Online. Wenn jetzt etwas neues Im Moodle hochgeladen wird, wird dann jetzt automatisch eine Notification in den channel geschickt?

Ausserdem funktioniert das Login mit dem Token anfordern nicht

Ausserdem steht in der Console "Mongoose NOT Connected" anstatt "Mongoose connected"

tjarbo commented 3 years ago

Bei der Verbindung mit der Datenbank kann ich dir leider nicht weiterhelfen - Alle Schritte funktionieren soweit, wenn ich es nachstelle. Wie lautet denn in der .env dein MONGO_HOST ? Ein Suchbegriff, welches dir hier weiter helfen wird, lautet"docker communication between containers". Das ist aber zu Betriebsystemspezifisch.

Das Problem mit dem Token muss tatsächlich noch im Wiki ergänzt werden. Der Bot kann nur Channels oder Nutzer anschreiben, die er schon "wahrgenommen" und im Cache gespeichert hat. Schreibe dem Bot einfach eine kleine "test" Nachricht privat, dann sollte es klappen :)

FreshImmuc commented 3 years ago

Mein Mongo Host ist: mongodb://localhost:27017/fmdb

Und nur damit ich es alles richtig gemacht habe:

  1. Die website Funktioniert immernoch nicht also localhost und dann Token anfordern Frage: was macht man eigendlich auf der Website wenn man sich mit dem Token einloggt?

  2. Bei npm run start kommen nach einer halben Minute als letzte Nachricht Fehlermeldungen:

**lerna ERR! npm run start stderr:

npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\Fritz\AppData\Roaming\npm-cache_logs\2020-11-14T21_02_42_375Z-debug.log

lerna ERR! npm run start exited 1 in '@fmdb/frontend' lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! fancy-moodle-discord-bot@1.0.0 start: lerna run start --parallel npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the fancy-moodle-discord-bot@1.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\Fritz\AppData\Roaming\npm-cache_logs\2020-11-14T21_02_42_498Z-debug.log**

tjarbo commented 3 years ago

Zu deiner ersten Frage: Über die Webseite kannst du den Bot verwalten und dort verschiedene Einstellungen vornehmen. Beispiele wären:

Manche dieser Einstellungen können auch über die .env-Variablen angepasst werden, erfordern jedoch einen Neustart.

tjarbo commented 3 years ago

Jetzt zu deinem Setup: An sich hast du gerade zwei verschiedene Wege mit einander vermischt:

1. mongoDB und nodeJS "selber hosten":

Du kannst natürlich auch deinen eigenen mongoDB Server verwenden und den FMDB mittels node-Prozess betreiben. Denk nur daran, dass der Server nicht mehr läuft, wenn du den Prozess beendest. Hierbei können wir dir aber wenig weiterhelfen, weil der Ablauf stark von deinem "Setup" abhängig ist. Im wesentlichen hast du aber die Befehle schon korrekt gemacht:

  1. Mit git clone das Projekt herunterladen
  2. Den Befehl npm ci einmal unter packages/frontend und einmal unter packages/backend ausführen.
  3. Mit npm run build im root-Verzeichnis des Projektes die TS-Dateien compilieren.
  4. Die Datei packages/backend/.env mit den Inhalten wie bekannt anlegen
  5. Mit node packages/backend/dist/index.js den Bot starten Das aber ist, wie gesagt, eher ein Development-Setup und da wir nicht von jedem fordern können einen mongoDB-Server sowie nodeJS zu installieren empfehlen wir Docker zu verwenden.

2. Docker :whale:

Um den Bot mit Docker aufzusetzen benötigst du nur

  1. Docker
  2. Die .env-Datei
  3. Internet

Der MONGO_HOST sollte dabei mongodb://mongo:27017/fmdb lauten, da mongo in diesem Falle auf den Namen des mongoDB-Containers verweist. Die Befehle hierzu kennst du ja - du musst nichts "klonen"

FreshImmuc commented 3 years ago

Okay also ich habe es jetzt auf dem PC von einem Freund probiert und da klappt es. Es liegt also an mir. Danke trotzdem für den Support usw. Ich werde es bei mir einfach alles nochmal neu installieren. Die sache ist, dass bei Status der Moodle verbindung Unknown steht. Und wenn ich die Seite reloade dann steht unten rechts: "No courses found". Heisst das jtz dass der Bot nicht mit moodle in verbindung steht? Also dass er keine updates sendet?

Update: Ich habe es neu installiert und jetzt klappt alles perfekt auf meinem Computer! trotzdem steht auf der Admin Panel seite halt immernoch das, was ich oben schon geschrieben habe.

tjarbo commented 3 years ago

Super, dass das geklappt hat :+1:

Leider ist das Moodle-Interface noch etwas, das wir verbessern müssen. Deshalb stellt der Bot dafür noch keine genaue Fehlermeldungen zur Verfügung - aber wie du schon richtig erkannt hast: Wenn der Bot die Kurse nicht laden kann, dann scheitert die Verbindung zu Moodle. Es kann entweder an der Konfiguration des Bots oder aber auch an der Konfiguration der Moodle-Webseite liegen.

Habe gerade mal eine PR #69 erstellt. Wenn diese gemergt wurde, kannst du nochmal https://fmdb.tjarbo.me aufrufen und die Tokengenerierung nochmal durchführen. Danach wird dort versucht die Moodle-Schnittstelle aufzurufen - wenn diese fehlschlägt, wird eine zusätzliche Fehlermeldung angezeigt.

FreshImmuc commented 3 years ago

Also ich benutze nicht so oft GitHub wo steht wenn es gemergt wurde? Unter der Überschrift richtig? Also dieses Lilane "Merged" heisst dass es schon gemergt wurde?

tjarbo commented 3 years ago

Jep, genau :+1: Versuche es jetzt nochmal audf https://fmdb.tjarbo.me

FreshImmuc commented 3 years ago

Okay also ich habe es nochmal Probiert und die sache ist halt die: Die Seite zeigt keine Fehler an, wenn ich die URL https://portal.lernraum-berlin.de/moodle/ benutze. Wenn ich jedoch https://www.lernraum-berlin.de/v1und2/ nehme, dann sagt die Seite dass es Falsche Anmeldedaten sind. Ich sollte aber eigendlich die 2. URL benutzen. Ich weiss nicht wo du wohnst aber wir in Berlin nutzen halt den "Lernraum" als sozusagen Datei hub. Sie haben in der Corona welle im März den Lernraum in 3 Teile geteilt und ja... Der Link den die meinen den man Benutzen soll lautet: https://www.lernraum-berlin.de/v1und2/ . Die sache ist dass dieser Link als Moodle auf der Token seite erkannt wird, aber immer sagt meine Anmeldedaten seien Falsch. Wenn ich jedoch diese Seite angebe: https://portal.lernraum-berlin.de/moodle/ dann wird es als richtig erkannt. Ich habe wie gesagt jetzt die Administration angeschrieben und hier ist, was sie geantwortet haben.:


Hallo Herr xxxx,

Der Token muss für Sie zwingend von der "v1und2" URL kommen. Nur dort liegen Ihre Kurse. Wie es aussieht, ist allerdings der Service der Seite "https://fmdb.tjarbo.me/" nicht kompatibel mit einer SSO-Authentifizierung, wie wir sie auf Lernraum nutzen. Das heißt, dass auf deren Seite die Routine zum Erzeugen des Token angepasst werden muss analog zur Moodle-App. Von unserer Seite können wir hier leider nicht viel tun. Möglicherweise können Sie aber den Token nutzen, der bereits für Ihre Moodle-App erzeugt wurde. Diesen können Sie in Ihren Profil-Einstellungen auslesen (siehe Screenshot).

Ich hoffe, ich konnte etwas weiterhelfen.


Also meine Frage ist jetzt halt ob du oder ihr halt wenn ihr ein Team seit da noch irgendwas machen könnt und diese Authentifizierung mit einbauen könnt, oder ob ihr halt eine integration der schon von der Seite generierten schlüssel hinzufügen könntet... LG

tjarbo commented 3 years ago

Moin, ich verstehe das Problem :thinking: Leider kann ich dir an dieser Stelle nicht mehr direkt weiterhelfen :slightly_frowning_face: Der Bot wurde für ein wesentlich einfacheres Setup programmiert. Wir schaffen es auch zeitlich nicht, ein SSO zu planen und zu implementieren.

Was du aber noch versuchen kannst, ist es ein wenig zu basteln. https://fmdb.tjarbo.me ist nur ein Hilfe-Tool um dich dabei zu unterstützen die richtigen Env-Variablen zu genieren. Du kannst also natürlich diese frei setzten. Vielleicht findest du so also so eine Kombination, sodass die Anfragen funktionieren. Kopiere dir beispielsweise die Anfrage-URL aus der Fehlermeldung von fmdb.tjarbo.me und ersetze den Host-URL oder benutzte einen anderen Token. Es handelt sich dabei um eine einfache GET-Anfrage, welche als du einfach in deine Browser-URL Zeile kopieren und aufrufen kannst. So kannst du versuchen die richtige Kombination zu finden. Dabei helfen kann dir vielleicht auch dieser Wiki-Artikel. Es handelt sich hierbei um den selben Token der extrahiert werden muss.

Ich hoffe, ich konnte dir damit weiter helfen :v:

tjarbo commented 3 years ago

@FreshImmuc

Moin :wave: zwar unterstützt fmdb.tjarbo.me immer noch kein SSO, aber für den Lernraum Berlin konnten wir die Einzelschritte erarbeiten, sodass du den Bot trotzdem aufsetzten kannst: https://github.com/tjarbo/discord-moodle-bot/issues/83#issuecomment-757985921

FreshImmuc commented 3 years ago

Eeeendlich 😅 wow nice Danke :) Habe so lange drauf gewartet haha.

Habe die einzelschritte in dem Issue von Stektax alle befolgt und es Funktioniert endlich einwandfrei! Kann ihm nur zustimmen es ist echt hilfreich in der Corona Zeit 👍🏻 auch jtz als Stern markiert ;)

LG

tjarbo commented 3 years ago

Super, vielen Dank :star: !