Weiter Zurück Inhalt


NOViA Interactive Network Services

Technische Dokumentation

von Thorsten Gehler campino@TUCHome.de


V 0.01, 02. Dezember 1999


Dieses Dokument beschreibt die grundsätzlichen technologischen Verfahren und Funktionen des Open Source BBS Project Novia INS.


Actuelle Version: 0.74 alpha

Ftp://ftp.uni-paderborn.de/pub/aminet/comm/bbs/novia.lha

http://www.TUCHome.de/files/novia.lha



1. Aufruf

Das Projekt ist nun seit ca. 3 Jahren in der Entwicklung. Mittlerweile habe ich ca. 40000 zeilen Code zusammen geschrieben was etwa 1 MegaByte entspricht. Die Executable Size Beträgt mittlerweile ca. 450 KByte.

Warum Open Source ?

Anfangs hatte ich vor es auch kommerziell zu vermarkten. Jedoch ist der BBS-Markt, durch die rasche Expansion des WWW mittlerweile so klein geworden, das mit BBS-Software kaum noch Geld zu verdienen ist. Außerdem würde die fertig Stellung des System im Alleingang noch länger dauern.

Nach meiner Meinung steigert Open Source Außerdem die Qualität und Sicherheit einer Software erheblich, da jeder Benutzer Fehler im Quellcode selbst suchen und beheben kann. Microsoft beschäftigt ca. 1000 Entwickler mit der Entwicklung von Windows. Aber nur ein einziges Team von vielleicht 20 Programmierern kümmert sich um die Suche und Beseitigung von Bugs. Bei Linux sind es ein paar Millionen.

Jeder der mir helfen will ein System zu entwickeln das irgendwann auch mal das Internet revolutionieren kann, ist jederzeit in unserem Team willkommen.



2. Copyright

NOVIA Interactive Network Services, Copyright © 1996-1999 by Thorsten Gehler/UFoP

Jeder der Teile des Quellcodes für seine Programme verwenden möchte, kann dies gerne tun, jedoch bitte ich die beigefügte General Public License 2.0 zu beachten. Stichpunkthaltig habe ich einige Punkte ins deutsche übersetzt.





Wenn Sie Fragen zu dieser Lizenz haben, wenden Sie sich bitte an:



Free Software Foundation, Inc

675 Mass Avenue

Cambridge, MA 02139

USA



Ansonsten ist der Autor Erreichbar unter

UUCP: Thorsten Gehler <campino@TUCHome.de>

FIDO: Thorsten Gehler campino@2:244/1537.0


mail:


Thorsten Gehler

Kleine Schmieh 57

D-61440 Oberursel

Germany



3. Einleitung

NOViA INS (Interactive Network Services) ist einfach gesagt ein netzwerkübergreifendes BBS-System. Die Philosophie die hinter diesem System steckt ist die Benutzerfreundlichkeit und den Bedienung einer Mailbox in ein großes Netzwerk (LAN, Internet) zu integrieren.



Ziel meiner Arbeit ist es, verschiedene BBS und Internet-Dienste zu vereinigen. Die Messaging-Dienste ZConnect, UUCP bzw. SMTP/POP/IMAP werden zum Beispiel über einen Mailer-Daemon der als Gateway fungiert verbunden und dem User z.B. über das Novia Message Service Protocol (NMSP) bzw. auch über eine POP3-Mailbox zur Verfügung gestellt. NNTP-Newsgroups, FIDO-Boards, oder BBS-Messageboards können z.B. über ein ANSI-Terminal über ein NNTP-Client oder über einen speziellen Novia-Client auf dem Rechner des Benutzers dargestellt werden.



Thema Instant Messaging



Auf Mailboxen auch als OnlineMessages (OLM) bekannt. Meine Grundidee liegt darin diesen Dienst in den Novia-Client zu integrieren. Um den Server zu entlasten, ist es möglich OLMs auch direkt an einen Kommunikationspartner zu senden.



Server-Vernetzung und Kommunikation



Ein User einer Novia-Systems, hat die Möglichkeit sich in andere angeschlossene Novia Systeme anzumelden. Dabei entscheiden er selbst welche Userdaten und Services er an angeschlossene Systeme freigibt. Die Systeme selber werden dabei in Locations eingeteilt. Wie schon aus dem Fido-Netz bekannt werden diese Locations jedoch wesentlich feiner unterteilt. Zum Beispiel: Deutschland->Hessen->Rhein-Main-Gebiet oder Groß-Britannien->England->London. Ziel ist es die Persönlichkeit die Mailbox-Systeme bieten auf das Internet zu übertragen.







4. Interna



Vorwort:



Die nun folgende Einleitung in die Technologie des Novia Systems basiert teilweise noch auf theoretischen Entwürfen. Ich kann daher keine Garantie dafür geben, das hier beschriebene Funktionen und Protokolle tatsächlich so umgesetzt werden wie sie hier aufgeführt werden.



Systemstart



1.1 Systemresourcen laden und öffnen.

1.2 noviasys.library erzeugen

1.3 mainportconfig (env:novia_mainportconfig) laden

1.4 Novia Services wie Novia File Server (NFS), Novia Relay Chat Server (NRCS starten

1.5 system shell (Client 0) erzeugen

1.6 Client Ports, GUI... etc. starten bzw. erzeugen.





In der Jetzigen Ausführung der Software sind alle Programmteile (Kernel, Clients, GUI, libraries... etc..) wegen noch zu einem großen executable gelinkt.

Sobald die Software in den Betastatus wechselt, werde diese Programmteile aufgeteilt werden.



Aufbau des Hauptprogrammes



nach dem Laden des Programmes wird ein Prozess Namens novia_main erzeugt. Dieser richtet folgende Message Ports ein:

MainGUIPort //Zur Kommunikation mit der GUI

MainPort (cport->MainPort) //ClientPort für Services

ConPort (cport->ConPort) //Fürs console.device

rexxport (cport->rexxport) //Für Arexx-Programme

rtport (cport->rtport) //Zur Kommunikation mir DOS oder NDOS-Programmen

nfs_port (cport->nfs_port) //ClientPort für den Novia File Services Server



Um das Hauptprogramm zu entlasten werden GUI, der Novia File Services Server, der Novia Relay Chat Server und der Reminder als eigene Prozesse gestartet. Jeder dieser Services hat jeweils zwei Message Ports. Ein Message Port zur Kommunikation mit den Clients und einen zum Steuern des Dienstes (Service-Port). Auf den Service-Port hat nur das Hauptprogramm (novia_main) Zugriff.

Falls die GUI geladen wird (Einstellbar in der mainportconfig). Wird ein neuer Prozess erzeugt. Jedoch kann nur der novia_main-Prozess auf die GUI zugreifen.



Der Novia File Services Server (NFSS):

Um Zugriff auf Dateien und Verzeichnisse zu haben, stellt die noviasys.library Funktionen bereit um auf den Novia File Services Server zugreifen zu können. Der Grundsätzliche Aufbau ähneld der von AmigaDOS. Der Client ruft zum Beispiel die Funktion ndos_mkdir() auf. Die Funktion ist wie folgt aufgebaut.


Directory * __saveds ASM nslib_mkdir(register __a0 char *name)

{

struct PortData *cport = (struct PortData *)FindTask(NULL)->tc_UserData;

return((Directory *)DoNFSPacket(ACTION_NFS_MAKEDIR, (LONG)name, 0, 0, 0, 0, cport));

}



Als erstes wird die Addresse der PortData (cport) Strukture geholt, (EigenerProzess->pr_Task.tc_UserData). Danach wird mit der Funktion DoNFSPacket() ein NoviaDosPacket erzeugt und mit den Packet-Type ACTION_NFS_MAKEDIR und der Addresse der PortData-Struktur gefüllt. Danach sendet DoNFSPacket() dieses Packet an den NFS-Server. Konnte ein Verzeichnis erzeugt werden, wird dieses zurück gegeben. Falls dies fehl schlug, wird NULL zurück gegeben.





Novia Reminder.

Der Novia Reminder ist ein Zeitplaner und erlaubt es zu bestimmten Uhrzeiten Programme oder Aktionen aus zu führen. Zum beispiel ist es mit dem Reminder möglich jeweils um Mitternacht ein Programm zu starten, das Happy Birthday Mails verschickt. Oder es alle 2 Stunden wird nach neuer Post beim ISP geschaut.

Bisher ist der Reminder ein eigenständiges Programm, der nur Programme oder Scripte ausführen kann. Später soll er auch eine API für Clients anbieten können.



Novia-GUI

Wie schon oberhalb beschrieben gibt es eine eigene GUI, die um Speicher und Rechenzeit zu sparen nur bei Bedarf gestartet wird. Außerdem wird so die Stabilität des gesamten Systems erhöht, da nach einem Absturz der GUI das Haupt Programm trotzdem weiter läuft. Alle Funktionen die die Shell bietet können auch über die GUI erreicht werden.

Momentan ist das Graphic User Interface noch mit Hilfe MUI (Magic User Interface) realisiert. Da als neues Subsystem für die AmigaGUI jetzt Reaction (früher ClassAct) standardisiert wurde, wird die NoviaGUI irgendwann auch auf diesem Klassensystem umgesetzt werden. Da ich seit einiger Zeit nicht mehr an der GUI weiter gearbeitet habe und sich viele Strukturen im Novia System mittlerweile geändert haben, funktioniert diese nur noch Eingeschränkt und ist sehr instabil geworden.



Remote Zugriff

Wie bei jedem BBS-System stellt auch Novia Nodes bereit um den Benutzern die Möglichkeit zu geben sich von aussen in das System ein zu loggen. Dabei ist es physikalisch ziemlich egal wie diese Client-/Serververbindung zustande kommt.





5. Multi User File System



Was mich auf dem Amiga immer fehlte, ist richtigen Multi-User-Filesystem. So gut wie alle

Mailbox-Programme auf dem Amiga haben bisher immer ihr eigenes Filesystem auf das FFS aufgesetzt. Die Files liegen ganz normal im AmigaDOS-Verzeichnis und werden dem Benutzter über die über Index-Einträge zur verfügung gestellt. Das Problem an der ganzen Sache ist die Sicherheit. Ein User kann zwar nicht so einfach auf Verzeichnisse zugreifen, für die er keine Berechtigung hat, jedoch hat jeder einfache Process auf dem BBS-System vollen Zugriff auf das AmigaDOS und kann somit mit dem System machen was es will. Der Systemoperator muß sich darauf verlassen, daß jedes kleiner C:-Programm auch das macht was es soll. Früher nutzen wir zum Beispiel haufenweise solche Bugs in kleinen Tools aus um in ein System zu hacken. Zum Beispiel kann man bei ".arc"-Archiven einen vollen Pfad angeben. Uploaded ein User nun das Archiv test.arc, in diesem steht nun ein file namens c:copy. Nach dem Upload testet das BBS-Programm automatisch die Fileintegrität und kopiert alles bis auf das eine File schön nach temp. Beim nächten benutzen von copy stehen dann alle Benutzerdaten in der Mailbox des Users. Das MultiUserFileSystem (MuFS), das auf FFS aufbaut, bringt zwar ein wenig Sicherheit mit, jedoch schränkt es Programme selber nicht unbedingt ein. Außerdem kann der Benutzer nur Zugriffsrechte vergeben. BBS-Programme erlauben aber auch andere Zugriffsrechte, z.B. Unterscheidung des Geschlechts, Download-Konto oder andere Daten oder aber auch die Größenbegrenzung eine Verzeichnisses. Unter UNiX-System oder mit Zusatz-Programmen unter WindowsNT ist so etwas auch als "Quotas" bekannt.





Benutzerverwaltung.

Im Prinzipiellen ähnelt die Benutzerverwaltung von Novia der von UNIX. Mit ein paar wenigen Unterscheidungen:

Es wird zwischen User, Services, Prozessen unterschieden. Dafür gibt es für jede Usergruppe eine eigene Datenbank. Um das System besser zu administrieren, wird auch bei den Dateizugriffsrechten zwischen diesen drei Usertypes unterschieden.

  1. User dieser drei Datenbanken können wie gewohnt in Gruppen eingeteilt werden. Da eine Gruppe für einen bestimmten Typ angelegt wird, ist es auch nur möglich User dieses Types in diese Gruppe ein zu tragen.

  2. Userlisten. Es ist möglich User und Usergruppen aller Typen in Userlisten zusammen zu fassen. So ist es beispielsweise relativ einfach möglich den Zugriff auf ein globales SMTP-Outgoing Verzeichnis für mehrere viele Gruppen auf einmal frei zu geben. Oder Userlisten können von den Usern dieser Userliste selbst eingesehen werden.



Dateizugriffsrechte

Neben den schon bekannten Zugriffsrechten wie Lesen, Schreiben, Löschen etc... gibt es noch jede Menge weitere Zugriffsrechte wie Geschlecht, Alter... etc. die erfüllt sein müssen um Zugriff auf ein Verzeichnis oder ein File zu erhalten. Beim erzeugen einer neuen Datei werden diese Zugriffe automatisch auf „by Directory“ gesetzt. Das bedeutet, das die Zugriffsrechte vom Verzeichnis übernommen werden, in dem die Datei liegt. Es ist aber zum Beispiel auch möglich für einzelne Files diese explizit auf einen User, Gruppe oder Liste zu setzten. Oder auch für mehrere User einzeln zu sperren, ohne eine neue Gruppe anlegen zu müssen.

Ich habe diese ganze Einleitung in etwa 2 Stunden zusammen geschrieben. Um wenigstens ein bißchen Dokumentation dem Packet bei zu legen. Daher alles noch ein bißchen dürftig und chaotisch. Mit ein paar Rechtschreibfehlern und vielen verdrehten Sätzen.





6. Systemanforderungen



AmigaOS-Version (Version 0.75 alpha, lauffähig):





Linux-Version (Version 0.00.1, Grundgerüst vorhanden):




NetBSD-Version (Version 0.00.0, Project noch nicht gestartet):





Apple Macintosh (Version 0.00, Project noch nicht gestartet):




Microsoft Windows9x/NT/2000 (Version 0.0, Project noch nicht gestartet):






Zur Zeit arbeite Ich immer noch an der Amiga Version. Wenn diese endlich mal fertig werden wird, werde ich mich intensiver an der Portierung auf Linux kümmern.



7.Installation

Ich habe noch keine Installer-Script geschrieben, daher muss die Installation manuell erfolgen. Zur Installation einfach alle alle Dateien in ein Verzeichnis kopieren und den assign NOVIA: darauf lege. dann novia über die Shell starten und Registrationfeld ausfüllen.



8. Credits



9. Anhang, copyright MUI



Dieses Programm benutzt

MUI - MagicUserInterface


(c) Copyright 1993-96 by Stefan Stuntz



MUI ist ein System zur Erstellung und Pflege von grafischen

Benutzeroberflächen. Mit Hilfe eines Voreinstellers hat der Benutzer eines

Programs die Möglichkeit, dessen Aussehen nach seinem persönlichen Geschmack

zu verändern.


MUI wird als Shareware vertrieben. Ein komplettes Paket, welches viele

Beispiele und mehr Information über die Registrierung enthält, finden Sie in

einer Datei namens "muiXXXusr.lha" (XX ist die aktuelle Versionsnummer) in

Ihrer Mailbox oder auf auf Public Domain-Disketten.


Wenn Sie sich direkt registrieren wollen, senden Sie


DM 30.- oder US$ 20.-


an


Stefan Stuntz

Eduard-Spranger-Straße 7

80935 München

DEUTSCHLAND




Unterstützung und Online-Registrierung ist verfügbar unter

http://www.sasg.com/




Weiter Zurück Inhalt