Schulkonsole zeigt "Internal Server Error" nach Anmeldung als global-admin

Hallo @Arnaud !

Vorhin wollte ich mich an der Schulkonsole (linuxmuster-webui7 7.1.37) als global-admin anmelden, was mit „Internal Server Error“ quittiert wird.
Die Anmeldung als Lehrer oder Schüler funktioniert normal.

Die webui mit
ajenti-panel --dev --stock-plugins --plugins /usr/lib/linuxmuster-webui/plugins
gestartet gibt eine ähnliche Meldung, wie ich sie in /var/log/ajenti/ajenti.log gesehen habe:

File "/usr/local/lib/python3.6/dist-packages/aj/gate/worker.py", line 199, in handle_http_request content = HttpMiddlewareAggregator(stack + [self.handler]).handle(http_context)

File „/usr/local/lib/python3.6/dist-packages/aj/http.py“, line 82, in handle
output = middleware.handle(http_context)

File „/usr/local/lib/python3.6/dist-packages/aj/http.py“, line 82, in handle
output = middleware.handle(http_context)

File „/usr/local/lib/python3.6/dist-packages/aj/routing.py“, line 96, in handle
for instance in HttpPlugin.all(self.context):

File „/usr/local/lib/python3.6/dist-packages/jadi/jadi.py“, line 122, in _all
return list(context.get_components(cls, ignore_exceptions=ignore_exceptions))

File „/usr/local/lib/python3.6/dist-packages/jadi/jadi.py“, line 38, in get_components
instance = self.get_component(comp)

File „/usr/local/lib/python3.6/dist-packages/jadi/jadi.py“, line 32, in get_component
self.component_instances[fqdn] = cls(self)

File „/usr/lib/linuxmuster-webui/plugins/lmn_samba_dns/views.py“, line 17, in init
self.dns = SambaToolDNS() # Context !

File „/usr/lib/linuxmuster-webui/plugins/lmn_samba_dns/smbtool.py“, line 15, in init
self._get_ignore_list()

File „/usr/lib/linuxmuster-webui/plugins/lmn_samba_dns/smbtool.py“, line 60, in _get_ignore_list
for device in devices.data:

File „/usr/lib/python3.6/csv.py“, line 112, in next
row = next(self.reader)
_csv.Error: field larger than field limit (131072)

(…)

Traceback (most recent call last):

File „/usr/local/lib/python3.6/dist-packages/gevent/pywsgi.py“, line 999, in handle_one_response
self.run_application()

File „/usr/local/lib/python3.6/dist-packages/aj/wsgi.py“, line 28, in run_application
super(WebSocketHandler, self).run_application()

File „/usr/local/lib/python3.6/dist-packages/gevent/pywsgi.py“, line 945, in run_application
self.result = self.application(self.environ, self.start_response)

File „/usr/local/lib/python3.6/dist-packages/engineio/middleware.py“, line 74, in call
return self.wsgi_app(environ, start_response)

File „/usr/local/lib/python3.6/dist-packages/aj/http.py“, line 57, in dispatch
content = self.handler.handle(http_context)

File „/usr/local/lib/python3.6/dist-packages/aj/http.py“, line 82, in handle
output = middleware.handle(http_context)

File „/usr/local/lib/python3.6/dist-packages/aj/gate/middleware.py“, line 196, in handle
raise WorkerError(resp.object)

aj.gate.worker.WorkerError: {„type“: „http“, „error“: „field larger than field limit (131072)“, „exception“: „Error(‚field larger than field limit (131072)‘,)“}

2022-08-09T12:57:51Z {‚REMOTE_ADDR‘: ‚CLIENT-IP‘, ‚REMOTE_PORT‘: ‚54400‘, ‚HTTP_HOST‘: ‚URL‘, (hidden keys: 35)} failed with WorkerError

Ich vermute in „field larger than field limit (131072)“ liegt der Schlüssel, bin aber an dieser Stelle mit meinem Latein am Ende.

Gruß - Rainer

Hallo Rainer,

Ich verstehe den Fehler so, dass einen CSV Datei falsch formatiert ist. Ich kann mich nicht vorstellen, dass ein CSV ein so großes Feld hat.

Vielleicht kannst du in einer Python3 Konsole testen, welches problematisch ist :

$ python3
Python 3.6.9 (default, Jun 29 2022, 11:45:57) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> totest = '/etc/linuxmuster/subnets.csv'
>>> test = csv.DictReader(totest)

Die CSV zu testen sind folgende :

/etc/linuxmuster/subnets.csv
/etc/linuxmuster/sophomorix/default-school/devices.csv
/etc/linuxmuster/sophomorix/default-school/teachers.csv
/etc/linuxmuster/sophomorix/default-school/extraclasses.csv
/etc/linuxmuster/sophomorix/default-school/students.csv
/etc/linuxmuster/sophomorix/default-school/extrastudents.csv

Gruß

Arnaud

Hallo Arnaud!
Nichts auffälliges

# python3
Python 3.6.9 (default, Jun 29 2022, 11:45:57) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> totest = '/etc/linuxmuster/sophomorix/default-school/devices.csv'
>>> test = csv.DictReader(totest)
>>> import csv
>>> totest = '/etc/linuxmuster/sophomorix/default-school/teachers.csv'
>>> test = csv.DictReader(totest)
>>> import csv
>>> totest = '/etc/linuxmuster/sophomorix/default-school/extraclasses.csv'
>>> test = csv.DictReader(totest)
>>> import csv
>>> totest = '/etc/linuxmuster/sophomorix/default-school/students.csv'
>>> test = csv.DictReader(totest)
>>> import csv
>>> totest = '/etc/linuxmuster/sophomorix/default-school/extrastudents.csv'
>>> test = csv.DictReader(totest)
>>> import csv
>>> totest = '/etc/linuxmuster/subnets.csv'
>>> test = csv.DictReader(totest)

oder muss ich das als wwwadmin ausführen?

Gruß - Rainer

Hallo Rainer,

Nein, wwwadmin nutzt man nicht mehr :wink:

Ich kann jetzt die formatierte Fehlermeldung besser lesen, und es liegt eindeutig am devices.csv. Vielleicht kannst du probieren es mit Libreoffice zu öffnen und schauen ob alle Felder ok sind, ob eine Apostrophe oder andere Trennzeichen da liegt.

Ich habe gerade alle meine Server getestet, und kann es nicht reproduzieren.

Gruß

Arnaud

Hallo Arnaud!
Vielen Dank für deine Unterstützung.
Es lag tatsächlich an der devices.csv, aber nicht an falscher Syntax, sondern an der Größe.
Ich habe viel experimentiert und bei ca. 131900 Zeichen in der Datei gibt es den „Internal Server Error“ bei Anmeldung als global-admin. (# wc -c devices.csv → 131866 funktioniert, 131985 führt zum Fehler)
Dabei spielt die Anzahl der Zeilen (auskommentiert oder nicht) keine Rolle. Bei uns sind es ca. 900 Einträge für Geräte (bzw. 1800 Zeilen mit Kommentaren) - also eine seeeehr große Schule. :wink:
Ich habe abschließend einige Kommentare gelöscht und jetzt kann man sich als global-admin an der Schulkonsole wieder anmelden.
Gruß - Rainer

Hallo @roesslerrr ,

Ich habe mal die Grenze erhöht :

Gruß

Arnaud