Zammad: LDAP / Exchange UTF-8-Statuscode 500

Erstellt am 24. Juli 2018  ·  59Kommentare  ·  Quelle: zammad/zammad

Hallo, danke, dass du ein Problem eingereicht hast. Bitte stellen Sie Folgendes sicher, bevor Sie ein Problem erstellen - danke! 🤓 Seit dem 15. November bearbeiten wir alle Anfragen, mit Ausnahme von echten Fehlern, in unserem Community Board. Vollständige Erklärung: https://community.zammad.org/t/major-change-regarding-github-issues-community-board/21 Bitte posten Sie: - Funktionsanfragen - Entwicklungsfragen - Technische Fragen an die Tafel -> https: / /community.zammad.org! Wenn Sie glauben, dass Sie auf einen Fehler gestoßen sind, fahren Sie bitte fort: - Durchsuchen Sie vorhandene Probleme und CHANGELOG.md nach Ihrem Problem. - Möglicherweise gibt es bereits eine Lösung. - Verwenden Sie nach Möglichkeit die neueste Version von Zammad. - Fügen Sie das Protokoll / die Produktion hinzu. Protokolldatei von Ihrem System. Achtung: Stellen Sie sicher, dass keine vertraulichen Daten darin sind! - Bitte schreiben Sie das Problem auf Englisch. - Entfernen Sie die Vorlage nicht. Andernfalls schließen wir das Problem ohne weitere Kommentare. - Stellen Sie Fragen zur Konfiguration und Verwendung von Zammad auf unserer Mailingliste. Siehe: https://zammad.org/participate Hinweis: Wir geben immer unser Bestes. Leider gibt es manchmal zu viele Anfragen und wir können nicht alles auf einmal bearbeiten. Wenn Sie Ihr Problem priorisieren / eskalieren möchten, können Sie dies mithilfe eines Supportvertrags tun (siehe https://zammad.com/pricing#selfhosted). * Der obere Textblock wird automatisch entfernt, wenn Sie Ihr Problem einreichen. *

Infos:

  • Gebrauchte Zammad- Version: 2.6.x.
  • Installationsmethode (Quelle, Paket, ..): DEP
  • Betriebssystem: Ubuntu 18.04
  • Datenbank + Version: psql (PostgreSQL) 10.4 (Ubuntu 10.4-0ubuntu0.18.04)
  • Elasticsearch- Version: 6.6.1
  • Browser + Version:
    Chrom

Erwartetes Verhalten:

LDPA-Frame (im Konfigurationsmenü System -> Integration -> LDAP) ohne Fehler angezeigt
* *

Tatsächliches Verhalten:

LDAP-Frame wird nicht angezeigt. Frame bleibt mit Fehlermeldung leer
Auch API und Überwachung
2018-07-24 08_35_07-microsoft edge
* *
StatusCode 500
{"error": "\" \ xC5 \ "von ASCII-8BIT nach UTF-8"}

Schritte zum Reproduzieren des Verhaltens:

nur LDAP konfigurieren.

* *
Meine Konfiguration:
Adapter: postgresql
Datenbank: zammad
Pool: 50
Zeitüberschreitung: 5000
Kodierung: utf8
Benutzername: zammad

log / Production.log:

/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:69:in `block in tagged'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:26:in `tagged'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:69:in `tagged'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:24:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/request_id.rb:25:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/method_override.rb:22:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/runtime.rb:22:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/executor.rb:12:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/static.rb:125:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/sendfile.rb:111:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/engine.rb:522:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/puma-3.11.0/lib/puma/configuration.rb:225:in `call'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/puma-3.11.0/lib/puma/server.rb:624:in `handle_request'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/puma-3.11.0/lib/puma/server.rb:438:in `process_client'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/puma-3.11.0/lib/puma/server.rb:302:in `block in run'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/puma-3.11.0/lib/puma/thread_pool.rb:120:in `block in spawn_thread'
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
I, [2018-07-24T09:47:49.326279 #12796]  INFO -- : Completed 500 Internal Server Error in 1121ms (Views: 0.3ms | ActiveRecord: 43.9ms)
I, [2018-07-24T09:47:50.981956 #12794]  INFO -- : 2018-07-24T09:47:50+0200: [Worker(host:support pid:12794)] Job Observer::UserDeviceLogJob (id=3437) RUNNING
I, [2018-07-24T09:47:51.081012 #12794]  INFO -- : 2018-07-24T09:47:51+0200: [Worker(host:support pid:12794)] Job Observer::UserDeviceLogJob (id=3437) COMPLETED after 0.0988

Ja, ich bin sicher, dass dies ein Fehler ist und keine Funktionsanforderung oder eine allgemeine Frage.

LDAP bug import

Hilfreichster Kommentar

Hallo,
Nur um zu informieren, dass ich wieder das gleiche Problem hatte, aber die alte Konfiguration noch vorhanden war. Gehen Sie daher wie folgt vor, wenn Sie dieses Problem erneut haben.

Löschen Sie die alte Konfiguration mit folgendem Befehl:
sudo RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"

  • Stoppen Sie den Zammad-Dienst

  • Update zammad

  • Starten Sie den zammad-Dienst erneut und versuchen Sie, die ldap-Verbindung neu zu konfigurieren

Danach hatte ich kein Problem mehr.

Grüße

Alle 59 Kommentare

Hi @ e311 - könnten Sie bitte auch den oberen Teil des Protokolls

Hallo,
Ich werde es versuchen.
Ich öffne das LDAP (in admin -> system -> Integarion). Ich starte die Konfiguration Alles in Ordnung.
Domänen-DN-Benutzerkennwort.
3 ldap

Ich habe das Standard-Mapping verwendet.
4

Der LDAP-Konfigurationsbildschirm sieht gut aus.
6
Ich drücke auf Safe. Und ich bekomme eine Fehlermeldung.
7

Nachdem ich die Seite neu geladen habe, ist der Rahmen leer.
2018-07-24 08_35_07-microsoft edge

und hier ist die vollständige Protokolldatei:

log.txt

Hi @ e311 - danke für die umfassende Zusammenfassung! Die interessante Zeile im Protokoll ist diese:

E, [2018-07-24T11:39:30.491795 #973] ERROR -- : "\xC5" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/core_ext/object/json.rb:36:in `encode'
...
/opt/zammad/app/controllers/application_controller/renders_models.rb:70:in `model_update_render_item'
/opt/zammad/app/controllers/application_controller/renders_models.rb:66:in `model_update_render'
/opt/zammad/app/controllers/settings_controller.rb:31:in `update'

Was im Grunde bedeutet, dass es in den LDAP-Einstellungen speziell codierte Zeichen gibt, die gespeichert werden. Ich kann diese auch im Protokoll sehen.

Ich denke, dies ist ausreichend, um das Problem zu reproduzieren. Vielen Dank für Ihre bisherige Unterstützung. Wir werden das Problem beheben.

Bitte beachten Sie, dass auch die Exchange-Integration betroffen ist: # 2152

Hi @ e311 ,

Wir haben uns mit diesem Problem befasst und sind ziemlich zuversichtlich, dass wir verstehen, was los ist, aber wir müssen erneut um Ihre Hilfe bitten, um ganz sicher zu sein.

Schritt 1: Bestätigen Sie die Ursache des Fehlers

Versuchen Sie die folgende Zeile in Ihrem Terminal im Zammad-Verzeichnis. Wenn unser Verdacht richtig ist, sollte er fehlschlagen (_i.e., _ einen Fehler auslösen und einen Traceback anzeigen):

$ rails r "puts Setting.get('ldap_config').to_json"

Wenn Sie einen Traceback für das gleiche Encoding::UndefinedConversionError , das Sie im ersten Fehlerbericht erhalten haben, dann großartig - auf Schritt 2! Wenn nicht, bestätigen Sie bitte, dass Sie Ihre Datenbank seit dem letzten Auftreten dieses Fehlers nicht zurückgesetzt oder Ihre LDAP-Konfiguration geändert haben. Wenn Sie immer noch keinen Fehler erhalten, teilen Sie uns dies bitte mit, damit wir die Untersuchung fortsetzen können.

Schritt 2: Senden Sie uns eine letzte wichtige Information

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

$ rails r "pp Setting.get('ldap_config').except('bind_pw')" > zammad_2140_debug_output.txt

Senden Sie dann die resultierende Datei ( zammad_2140_debug_output.txt ) an [email protected]. Erwähnen Sie unbedingt, dass die Nachricht für Thorsten Eckel und für Fehler Nr. 2140 bestimmt ist.

Damit sollten wir in der Lage sein, eine Lösung sofort zum Laufen zu bringen.

Nochmals danke für all deine Hilfe!

Dies ist die erste Massege

serveradmin @ support : / opt / zammad $ rails r "setzt Setting.get ('ldap_config'). to_json"
Traceback (letzter Anruf zuletzt):
4: von bin / Rails: 3 : in <main>'         3: from bin/rails:3:in require_relative '
2: von /opt/zammad/config/boot.rb:3:in <top (required)>'         1: from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in erfordern '
/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require ': solche Datei kann nicht geladen werden - Bundler / Setup (LoadError)

Gesendet: Montag, 06. August 2018 um 11:53 Uhr
Von: "Ryan Lue" [email protected]
An: zammad / zammad [email protected]
Cc: e311 [email protected] , Erwähnung Erwä[email protected]
Betreff: Betreff: [zammad / zammad] LDAP / Exchange UTF-8-Statuscode 500 (# 2140)

Hi @ e311 ,

Wir haben uns mit diesem Problem befasst und sind ziemlich zuversichtlich, dass wir verstehen, was los ist, aber wir müssen erneut um Ihre Hilfe bitten, um ganz sicher zu sein.

Schritt 1: Bestätigen Sie die Ursache des Fehlers

Versuchen Sie die folgende Zeile in Ihrem Terminal im Zammad-Verzeichnis. Wenn unser Verdacht richtig ist, sollte er fehlschlagen (dh einen Fehler auslösen und einen Traceback anzeigen):

$ rails r "setzt Setting.get ('ldap_config'). to_json"

Wenn Sie einen Traceback für denselben Encoding :: UndefinedConversionError gesehen haben, den Sie im ersten Fehlerbericht erhalten haben, dann großartig - auf Schritt 2! Wenn nicht, bestätigen Sie bitte, dass Sie Ihre Datenbank seit dem letzten Auftreten dieses Fehlers nicht zurückgesetzt oder Ihre LDAP-Konfiguration geändert haben. Wenn Sie immer noch keinen Fehler erhalten, teilen Sie uns dies bitte mit, damit wir die Untersuchung fortsetzen können.

Schritt 2: Senden Sie uns eine letzte wichtige Information

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

$ rails r "pp Setting.get ('ldap_config'). außer ('bind_pw')"> zammad_2140_debug_output.txt

Senden Sie dann die resultierende Datei (zammad_2140_debug_output.txt) an [email protected]. Erwähnen Sie unbedingt, dass die Nachricht für Thorsten Eckel und für Fehler Nr. 2140 bestimmt ist.

Damit sollten wir in der Lage sein, eine Lösung sofort zum Laufen zu bringen.

Nochmals danke für all deine Hilfe!

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub an oder schalten Sie den Thread stumm.

Schienen r "pp Setting.get ('ldap_config'). außer ('bind_pw')"> zammad_2140_debug_output.txt
produziere eine leere Datei (ich kann nicht hochladen, weil es leer ist)

befehl
output

Hi @ e311 - Bitte versuchen Sie Folgendes:

zammad run rails r "pp Setting.get('ldap_config').except('bind_pw')" > zammad_2140_debug_output.txt

ODER:

bundle exec rails r "pp Setting.get('ldap_config').except('bind_pw')" > zammad_2140_debug_output.txt

sollte aber die erste Zeile sein.

Ich versuche den ersten Befehl:
Das gleiche wie "Serveradmin" mit sudo oder ohne sudo
image
Bundel mein nicht installiert sein?
image

@ e311 , das ist sehr seltsam. Lassen Sie uns den zweiten Befehl ( bundle exec rails ... ) vorerst ignorieren - ich denke nicht, dass dies hier der richtige Weg ist. Könnten Sie vielleicht versuchen, die Protokolldatei zu sichern und eine neue leere zu erstellen?

/opt/zammad:# gzip production.log
/opt/zammad:# mv production.log.gz production.log.15.gz
/opt/zammad:# touch production.log
/opt/zammad:# chown zammad.zammad production.log
/opt/zammad:# chmod 0644 production.log
/opt/zammad:# zammad run rails r "pp Setting.get('ldap_config').except('bind_pw')" > zammad_2140_debug_output.txt

Vielen Dank für all Ihre Hilfe bei der Bearbeitung dieses Problems mit uns.

@rlue wir haben gestern die befehle mit

Das Protokoll hat einwandfreie Zugriffsrechte, das habe ich noch einmal überprüft.
Ich sende Ihnen die ldap-config-Ausgabe in den meisten Fällen, falls Sie sie noch nicht haben.

Hoppla, du hast mir gestern zu Beginn des Tages das Protokoll geschickt. Ich weiß nicht, wie ich es verpasst habe!

@ e311 , ich habe nicht gesehen, was ich in Ihrer Debug-Ausgabe erwartet hatte. Jetzt, da @MrGeneration Ihnen helfen konnte, Ihre zammad run rails r ... -Befehle zum Laufen zu bringen, können Sie Folgendes erneut versuchen und mir sagen, ob es die Encoding::UndefinedConversionError erhöht, für die dieses Problem bestimmt ist?

$ rails r "puts Setting.get('ldap_config').to_json"

Ich erhalte die Meldung "Ihre Ruby-Version ist 2.5.1, aber Ihre Gemfile hat 2.4.4 angegeben."
Es tut mir leid, dass es nicht funktionieren wird (ich versuche alle Gedanken, die Google mir sagt)

Ihre Ruby- und Ihre Elasticsearch-Version sind nicht mit Zammad kompatibel.
Verwenden Sie Ruby 2.4.4 und Elasticsearch bis 5.6.

@ e311 sorry eigentlich total meine schuld. Ich habe vergessen, zammad r erneut hinzuzufügen. -_- '

ich meinte

$ zammad run rails r "puts Setting.get('ldap_config').to_json"

Ther ist die Nachricht:

Neues Textdokument (3) .txt

Die Ausgabe des letzten Befehls war also genau das, was ich erwartet hatte. Zusammenfassend sieht es so aus, als ob einige der Benutzerattribute auf Ihrem LDAP-Server binäre Datenwerte haben. Zammad versucht, diese in Zeichenfolgen zu konvertieren und sie dann vom Backend zum Frontend weiterzugeben. Da es sich jedoch nicht um Zeichenfolgen handelt, treten einige Codierungs- / Konvertierungsprobleme auf.

Da ich keine Verbindung zu Ihrem LDAP-Server herstellen kann, kann ich natürlich nicht 100% sicher sein, dass ein Fix funktioniert, bis Sie es für uns versuchen. Deshalb möchte ich Sie in zwei weiteren Punkten um Hilfe bitten:

  1. Als ich Sie das letzte Mal gebeten habe, einige Befehle auszuführen und uns die Ausgabe per E-Mail zu senden (letzten Mittwoch), waren die Befehle, die ich Ihnen gegeben habe, nicht ganz richtig und gaben uns nicht genau die Informationen, die wir brauchten. Hier ist ein Skript, das es diesmal richtig machen sollte ( hier herunterladen ):

    # Place this script in your Zammad directory and run it with
    #
    #     $ zammad run rails r 2140_bug_report.rb
    #
    # It should create a file named 2140_bug_report.txt.
    # Please send this file to [email protected], and mention that it's for Ryan.
    
    class Hash
     def deep_values
       values.map { |v| v.try(:deep_values) || v }.flatten
     end
    end
    
    string_values = Setting.get('ldap_config').except('bind_pw').deep_values.select { |v| v.is_a?(String) }
    
    File.binwrite('2140_bug_report.txt', Marshal.dump(string_values))
    

    Tut mir leid, dass du es zweimal machst.

  2. Ich habe einen Patch geschrieben, der meiner Meinung nach das Problem beheben soll. Grundsätzlich überspringt es jedes Mal, wenn es bei der LDAP-Synchronisierung auf einen Binärdatenwert stößt, diesen, anstatt zu versuchen, ihn als Zeichenfolge zu speichern.

    Ich möchte bestätigen, dass das Update auf Ihrem Computer funktioniert, bevor wir diese Änderungen in der Hauptcodebasis zusammenführen. Hier ist eine Bugfixed-Version der lib/ldap/user.rb -Datei .

    Laden Sie es herunter und kopieren Sie es in /opt/zammad/lib/ldap/user.rb . Starten Sie dann

    screenshot_20180814_201507

Wenn Schritt 2 das Problem für Sie immer noch nicht behebt, führen Sie das Skript ab Schritt 1 erneut aus und senden Sie uns beide Dateien.

Nochmals vielen Dank für Ihre Hilfe und Ihre Geduld!

Ich starte das Lochsystem neu, aber ich kann den Änderungsknopf nicht drücken.

image

vor dem Patch
2140_bug_report (Schritt 1) ​​.txt

nach dem Patch
2140_bug_report (Schritt 2) .txt

Ich versuche auch eine neue LDAP-Konfiguration. Ich stelle das System vor der LDAP-Konfiguration wieder her. aber ist das gleiche Ergebnis.

Ich habe die Domain-Funktionsebene überprüft. Es ist 2003, kann dies das Problem sein

Ich starte das Lochsystem neu, aber ich kann den Änderungsknopf nicht drücken.

Vielen Dank für die Klarstellung. Ich hatte den Umfang des Problems ursprünglich nicht verstanden.

Ich versuche auch eine neue LDAP-Konfiguration. Ich stelle das System vor der LDAP-Konfiguration wieder her. aber ist das gleiche Ergebnis.

Meinen Sie damit, dass Sie das System vor der LDAP-Konfiguration wiederhergestellt, den gesamten Assistenten erfolgreich durchlaufen und immer noch das gleiche Problem hatten? Oder meinen Sie, Sie haben versucht, das System vor der LDAP-Konfiguration wiederherzustellen, aber Sie erhalten immer noch diesen Fehler und können nicht zum Assistenten gelangen?

Wenn es das erstere ist, braucht der Patch noch etwas mehr Arbeit; Ich sollte morgen eine Lösung für dich haben. Wenn es das letztere ist, können Sie versuchen, die LDAP-Konfiguration mit zurückzusetzen

$ RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"

(Sie können den Teil RAILS_ENV=production weglassen, wenn Sie dies in einer Entwicklungsumgebung tun.)

Ich habe eine Sicherung wiederhergestellt. Die Sicherung wurde erstellt, bevor ich die LDAP-Konfiguration zum ersten Mal gestartet habe.

Ich versuche die LDAP-Verbindung mit zurückzusetzen
$ RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"
Ich habe das Conf nicht "zurückgesetzt", es funktioniert immer noch.
Es scheint nun, als würde das gesamte System ohne Fehlermeldung ausgeführt

(Ohne LDAP)

Okay, du sagst also:

  1. Zammad arbeitet,
  2. Sie haben derzeit keine LDAP-Synchronisierung konfiguriert und
  3. Sie erhalten keine Fehlermeldung mehr auf der LDAP-Synchronisierungsseite?

(Um Punkt 2 zu bestätigen, können Sie RAILS_ENV=production zammad run rails r "puts Setting.get('ldap_config')" ausführen, wodurch {} auf die Konsole gedruckt werden soll.)


Wenn all dies zutrifft und Sie die gepatchte Version von lib/ldap/user.rb kopiert haben, auf die ich oben verlinkt habe, können Sie versuchen, die LDAP-Synchronisierung noch einmal einzurichten, und mir mitteilen, ob Sie immer noch auf die stoßen gleiches Problem?

Oder wenn ich falsch verstanden habe, lassen Sie mich bitte wissen, wie die Situation ist.

Vielen Dank.

Entschuldigung für die späte Antwort. Ja alles richtig. Nachdem das LDAP erneut konfiguriert wurde, hatte ich erneut den gleichen Fehler.

@rlue - wie @ e311 bereits sagte, stimmt immer noch etwas nicht: https://community.zammad.org/t/unable-to-access-ldap-in-integrations-statuscode-500/1116/21

Zu Ihrer Information: Ich habe das gleiche Problem und die gepatchte user.rb hat auch bei mir nicht funktioniert.
Vielen Dank für Ihre Arbeit im Voraus

Jeder, der nach dem Ändern der Datei und dem Neustart der Anwendung immer noch das Problem hat, gibt bitte den Fehler (einschließlich der Rückverfolgung) aus Ihrer log/production.log -Datei an. Vielen Dank!

@ e311 , @tbeitter und alle anderen, bei denen dieses Problem derzeit auftritt - Ich habe

Legen Sie es in Ihrem zammad-Verzeichnis ab und führen Sie es aus

$ zammad run rails r 2140_improved_bug_report.rb

Sie werden aufgefordert, Ihre LDAP-Server-URL und Ihre Anmeldeinformationen einzugeben. Anschließend generiert das Skript eine Datei mit dem Namen 2140_debug_log.txt . Diese Datei enthält ein Beispiel für Benutzerattribute von Ihrem LDAP-Server. Wenn dies also etwas Sensibles bedeutet, veröffentlichen Sie es NICHT öffentlich . Senden Sie es stattdessen an

Vielen Dank für Ihre fortgesetzte Geduld, während wir diesen Fehler beheben.

Hallo,
Wenn ich versuche, das neue Skript auszuführen, erhalte ich Folgendes (LDAP ist aktiviert), es wurde keine Datei erstellt.

serveradmin<strong i="7">@support</strong>:/opt/zammad$ sudo zammad run rails r 2140_improved_bug_report.rb
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/commands/runner/runner_command.rb:34:in `load': 2140_improved_bug_report.rb:77: invalid multibyte char (UTF-8) (SyntaxError)
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/commands/runner/runner_command.rb:34:in `perform'
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/command/base.rb:63:in `perform'
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/command.rb:44:in `invoke'
        from /opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/commands.rb:16:in `<top (required)>'
        from /opt/zammad/bin/rails:4:in `require'
        from /opt/zammad/bin/rails:4:in `<main>'
serveradmin<strong i="8">@support</strong>:/opt/zammad$

Production.log

habe auch diesen ldap Fehler ... (Ubuntu 16.04 Installation durch Repo)

root<strong i="6">@zammad01</strong>:/opt/zammad# zammad run rails r 2140_improved_bug_report.rb
Please specify a valid ruby command or the path of a script to run.
Run 'bin/rails runner -h' for help.

/opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/commands/runner/runner_command.rb:37: trailing `_' in number
2140_improved_bug_report.rb
     ^
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/commands/runner/runner_command.rb:37: syntax error, unexpected tIDENTIFIER, expecting end-of-input
2140_improved_bug_report.rb

@ redbear-ger, bitte stellen Sie sicher, dass sich 2140_improved_bug_report.rb in Ihrem Verzeichnis /opt/zammad .

@ e311 whoops, das ist ein komischer Bug.

Ich habe das Skript geändert, indem ich einige unnötige Multibyte-Zeichen aus der Konsolenausgabe entfernt habe. Sie können das Skript erneut herunterladen und erneut versuchen oder einfach die intelligenten Anführungszeichen in Zeile 77 in reguläre Anführungszeichen ändern:

# replace “#{default_base_dn}” with '#{default_base_dn}'
printf "Base DN (leave blank for default '#{default_base_dn}'): "

Ich bin mir nicht 100% sicher, ob dies das Problem beheben wird, aber ich habe eine Ahnung.

@rlue , no 2140_improved_bug_report.rb in / opt / zammad

Übrigens: Sobald ich die LDAP-Konfiguration lösche (RAILS_ENV = Production Zammad Run Rails r "Setting.set ('ldap_config', {})"), verschwindet das Problem.

@ redbear-ger danke für dein schnelles Feedback; Bitte laden Sie das Fehlerberichtsskript herunter , platzieren Sie es in /opt/zammad und versuchen Sie es erneut.

Selbst wenn das Problem jetzt zu 100% behoben ist, würde es sehr hilfreich sein, Ihre Beispieldaten zu haben, damit wir Tests erstellen können, um sicherzustellen, dass dies nicht erneut auftritt.

Der Bug ist weg aber auch die ldap Integration;)
Wird heute Abend das Berichtsskript herunterladen

Hallo,
Ich habe das gleiche Problem und habe alle oben genannten Vorschläge ausprobiert. Keiner von ihnen löst das Problem.
Deshalb habe ich beschlossen, das Problem auf einem Entwicklungssystem zu reproduzieren, um Ihnen eine Debug-Datei zu liefern, ohne vertrauliche Daten bereitzustellen.

Das Skript 2140_improved_bug_report.rb hat mir folgende Textdatei zurückgegeben:
2140_debug_log.txt

Vielen Dank!

Danke @hublux! Aus irgendeinem Grund gibt es eine Reihe von Stellen in der Datei, an denen Steuerzeichen (z. B. _ ^D ) durch ein wörtliches Karat ( ^ ) gefolgt von einem wörtlichen Buchstaben (_) ersetzt werden. D ), und dies verursacht Fehler beim Versuch, die Datei zu analysieren. Haben Sie vor dem Hochladen zufällig etwas an der Datei getan? (Sagen Sie, öffnen Sie es in einem Texteditor, schließen Sie es und klicken Sie auf "Änderungen speichern"?) Oder nehmen Sie an, dass GitHub beim Hochladen möglicherweise eine Verarbeitung vorgenommen hat?

Um zu bestätigen, dass die Originaldatei auf Ihrem Computer korrekt formatiert ist, versuchen Sie den folgenden Befehl in Ihrem Zammad-Verzeichnis und überprüfen Sie die Ausgabe:

$ zammad run rails r "puts Marshal.load(File.read('2140_debug_log.txt')).first.inspect"

# should print the following:
["dn", "CN=Exchange Online-ApplicationAccount,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=ebusiness,DC=local"]

Wenn das alles wie erwartet funktioniert, senden Sie die Datei [email protected].

Hallo,
Danke für Ihre Antwort.

Es sieht tatsächlich so aus, als hätten einige meiner Aktionen die Datei geändert, als ich den Inhalt daraus kopierte.
Wenn ich es mit einer Katze überprüfe, sieht es ein bisschen anders aus.

grafik

Ich habe den Befehl ausprobiert und die richtige Ausgabe erhalten.
grafik
Ich habe die Datei an den Support von Zammad gesendet.

Hier ist auch die neue Datei
2140_debug_log.txt

@hublux , nochmals

Ich habe seitdem das Debug-Skript gepatcht, um (hoffentlich) die 2140_debug_log.txt -Datei robuster und sicherer zu übertragen, ohne diese seltsamen Codierungsprobleme. Bitte laden Sie es noch einmal herunter und versuchen Sie es erneut. (Fühlen Sie sich frei, es in Ihre Antwort auf diesen Thread aufzunehmen, wenn es für Sie bequemer ist.)

Und wenn Sie wirklich neugierig sind, was mit dem Debug-Skript nicht stimmte ...

Es hat ursprünglich einen Ruby-Hash genommen, ihn gemarshallt und dann die gemarshallten Daten in eine binäre (codierungslose) 'Text'-Datei geschrieben. Ich weiß wirklich nicht, warum binäre Textdateien beschädigt werden, wenn sie von einem Computer auf einen anderen übertragen werden, aber genau das beobachten wir hier.

Dieser Fix nimmt die gemarshallten Daten und codiert sie mit Base-64, bevor sie in einer regulären Unicode-Textdatei gespeichert werden. Das sollte es sicherer machen, ohne Korruption zu senden, denn was ist universeller als Unicode?

2140_debug_log.txt
Dort haben Sie die Ausgabe mit dem neuen Skript
Grüße!

Hallo allerseits,
Ich mische mich auch ein, da das gleiche Problem auch mich betrifft - auch nach dem Update auf das neue lib/ldap/user.rb

2140_debug_log.txt

Ich fing auch an, ein bisschen im ldap_config -Hash herumzuwühlen und fing an, alle !binary -Inhalte loszuwerden. Aber es stellte sich heraus, dass, obwohl ich 4 davon hatte, nur zwei mit der Codierung verschraubt waren.

Ich musste usersmimecertificate und msexchmailboxsecuritydescriptor entfernen.

Die anderen beiden, msexchmasteraccountsid und securityprotocol , verursachten keine Probleme.

Hallo,

Nur zur Klarstellung, ich bin mir nicht sicher, ob dies offensichtlich ist, da ich niemanden gesehen habe, der dies erwähnt.
Als LDAP-Verbindung verwende ich Active Directory mit Deutsch als Systemsprache. Also habe ich ein neues System und eine separate Domain installiert. Der einzige Unterschied zum vorherigen System, bei dem das Problem aufgetreten ist, besteht darin, dass auf dem neuen System die Sprache auf US-Englisch anstelle von Deutsch eingestellt ist. Bei diesem Setup ist kein Fehler zu finden, alles funktioniert wie erwartet. Also nahm ich mein ursprüngliches zammad-System, auf dem ich das Problem hatte, und verband es mit der neu installierten Domain, und das Problem ist verschwunden.

Wenn ich im Arbeits-Setup Folgendes ausführe, erhalte ich folgende Ausgabe:
sudo zammad run rails r "puts Setting.get('ldap_config').to_json"

workingsetup.txt

Wenn ich den Befehl zum Überprüfen der ldap-Konfiguration mit dem ursprünglichen Setup ausführe, schlägt dies fehl und es wird folgende Fehlermeldung angezeigt:

grafik

Hoffe das hilft dir.
Grüße!

Danke @hublux! Dank Ihrer Eingabe haben wir eine Lösung in Arbeit. es sollte in Kürze zu develop !

screenshot_1

Nach dem Update wird immer noch der gleiche Fehler angezeigt. (Aber ohne Exchange-Setup nur LDAP-Sync)

Hallo @tidet , danke für das Feedback. Bitte folgen Sie den Anweisungen in diesem Kommentar ; Ihre Beispieldaten tragen wesentlich dazu bei, dieses Problem endgültig zu lösen.

Hallo,
Nur um zu informieren, dass ich wieder das gleiche Problem hatte, aber die alte Konfiguration noch vorhanden war. Gehen Sie daher wie folgt vor, wenn Sie dieses Problem erneut haben.

Löschen Sie die alte Konfiguration mit folgendem Befehl:
sudo RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"

  • Stoppen Sie den Zammad-Dienst

  • Update zammad

  • Starten Sie den zammad-Dienst erneut und versuchen Sie, die ldap-Verbindung neu zu konfigurieren

Danach hatte ich kein Problem mehr.

Grüße

@rlue sollte ich die obige Lösung ausprobieren oder zum Debuggen beim aktuellen Fehler bleiben?
E-Mail mit Protokolldatei soll @ unterstützen

@tidet , jetzt, da wir Ihre LDAP-Beispieldaten haben, können Sie die oben genannten Und ob die obigen Anweisungen es für Sie beheben oder nicht, es wird heute einen weiteren Patch in der Pipeline geben.

EDIT: Meine Meinung geändert. Da das Update für Sie funktioniert, werde ich es unterlassen, den Code zu ändern und unnötige Komplexität hinzuzufügen, bis er tatsächlich für jemanden kaputt ist.

@hublux Fix hat auch bei mir funktioniert.

@hublux auch behoben

Wir stehen immer noch vor diesem Problem. Ich habe @hublux geschrieben, die Konfiguration gelöscht, zammad (2.6.0-1534939663.6d23dae9.stretch jetzt) ​​aktualisiert, zammad neu gestartet und unsere ldap-Verbindung konfiguriert. Muss ich Code manuell patchen? Danke im Voraus.

Ich war im Urlaub, entschuldige die späte Antwort hier und wenn ich etwas verpasst habe :)

Hallo @tbeitter ,
Wenn Sie diesen Befehl ausführen, erhalten Sie eine Ausgabe:
sudo zammad run rails r "puts Setting.get('ldap_config').to_json"

Wenn ja, überprüfen Sie dies:
https://github.com/zammad/zammad/issues/2140#issuecomment -417605384

Grüße

Ja, ich erhalte eine ähnliche Fehlermeldung wie Sie:

"\xC2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

Hallo,

Ich habe gerade meine Version von Zammad überprüft, die ich heute Morgen aktualisiert habe:
grafik
Es unterscheidet sich von Ihrem.

Könnten Sie bitte noch einmal mit diesen Schritten fortfahren:

  • LDAP-Konfiguration löschen
  • Stoppen Sie den Zammad-Dienst
  • aktualisiere zammad erneut
  • Starten Sie den Zammad Service

Grüße

@hublux das hat bei mir funktioniert! Vielen Dank!

Ein großes Dankeschön an Ordnung zu

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen