Forum: PC-Programmierung Webprogrammierung


von Dennis S. (eltio)


Lesenswert?

Hallo zusammen,

auf einem Server laufen einige Dienstprogramme, die ich per Website 
konfigurierien möchte. Das ganze kann in einer einfachen Textdatei 
passieren. Jetzt fehlt mir leider ein bisschen der Überblick über die 
vielen verschiedenen Technologien.

Ich würde das gerne mit Node.js versuchen. Unter [1] ist beschrieben, 
wie ich auf das Dateisystem zugreife. Unter [2], wie ich einen Server 
starte. Mir fehlt nun irgendwie die Verbindung zwischen den beiden.

Ich nehmen an ich muss im HTML-File "irgendwie" die 
Javascript-Funktionen aufrufen, diese werden jedoch nicht gefunden.

Kann mir jemand einen Tipp geben?

Viele Grüße
Dennis

[1] https://www.tutorialspoint.com/nodejs/nodejs_file_system.htm
[2] https://www.tutorialspoint.com/nodejs/nodejs_web_module.htm

von Dennis S. (eltio)


Angehängte Dateien:

Lesenswert?

Anbei die Dateien zur Verdeutlichung. Es soll erstmal einfach beim Laden 
der Seite eine Datei geschrieben werden.

von Irgendwer (Gast)


Lesenswert?

Du solltest dir erstmal klar werden wo du überhaupt was verändern willst 
- Client oder Server.

javascript ist Cientseitig.
Wenn du auf deinem Server irgendwas verändern willst ist her PHP oder 
ähnliches dein freund.

von TestX (Gast)


Lesenswert?

@Irgendwer
NodeJS ist serverseitig

@elito
schau dir mal express.js an - das ist eine Middleware für NodeJS die 
einem bei sowas helfen kann.

Generell muss du einen Controller für den HTTP Server schreiben, der die 
von dir gewünschten Aufgaben umsetzt. Hier ist auch die frage was du 
genau machen willst.

von Dennis S. (eltio)


Lesenswert?

Irgendwer schrieb:
> Du solltest dir erstmal klar werden wo du überhaupt was verändern
> willst
> - Client oder Server.
>
> javascript ist Cientseitig.
> Wenn du auf deinem Server irgendwas verändern willst ist her PHP oder
> ähnliches dein freund.

Im Prinzip soll es trotz Javascript auf dem Server verändert werden. 
Dank Node.js ist das ja auch machbar. Mir fehlt nur einfach die 
Verbindung zwischen den beiden Modulen ("Filesystem" und "Web Module").

Danke für deine Antwort.

von Dennis S. (eltio)


Lesenswert?

Okay, nochmal ein Nachtrag. Die Konsolen-Ausgabe ist
1
Server running at http://127.0.0.1:8081/
2
Request for / received.
3
{ Error: ENOENT: no such file or directory, open ''
4
    at Error (native) errno: -4058, code: 'ENOENT', syscall: 'open', path: '' }

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

http://127.0.0.1:8081/index.htm geht. Allerdings benutzt du deine 
main_write.js falsch, diese wird nämlich wieder clientseitig benutzt. 
Das siehst du, wenn du im Browser die JavaScript console aufmachst. 
Unter Chromium mit Ctrl+Shift+J.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Verstehst du den Code? Entscheidend ist hierzu zunächst die Stelle:
1
   // Read the requested file content from file system
2
   fs.readFile(pathname.substr(1), function (err, data) {
Wenn du im Browser http://127.0.0.1:8081/ eingibst, dann enthält 
pathname '/'. pathname.substr(1) gibt pathname ohne das erste Zeichen 
zurück, also ''. fs.readFile versucht also im cwd (Current Working 
Directory) eine Datei mit Namen '' zu öffnen. Eine Datei ohne Namen kann 
nicht existieren, wird somit nicht gefunden, und du bekommst deine 
Fehlermeldung. Versuche im Browser http://127.0.0.1:8081/index.htm 
aufzurufen, und stelle sicher, dass du den Server in dem Verzeichnis 
gestartet hast, in welchem sich die index.htm befindet. 
pathname.substr(1) von '/index.htm' wäre dann 'index.htm' und es würde 
im cwd die datei index.htm ausgelesen.

Es sollte beachtet werden, dass url.parse den Pfad nicht normalisiert, 
mit telnet kann man so eigentlich immer Dateien abfragen, die Entwickler 
eigentlich nicht zugänglich machen wollten. z.B. könnte man hier mit 
telnet den Pfad //etc/passwd angeben, und das pathname.substr(1) würde 
zu /etc/passwd. Schon hätte ich die Benutzeraccounts. Dann noch 
//etc/shadow runterladen, und ich kann die Passwort hashs durchs 
Wörterbuch jagen. 
https://www.tutorialspoint.com/execute_nodejs_online.php?PID=0Bw_CjBb95KQMSFRoSUQ3cWt5SzQ

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Md M. schrieb:
> Allerdings benutzt du deine
> main_write.js falsch, diese wird nämlich wieder clientseitig benutzt.

Oder klarer: alles aus deiner main_write.js muss in die server.js mit in 
den else-Zweig.

von Dennis S. (eltio)


Lesenswert?

Okay.. verstanden!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.