Zammad: Код состояния LDAP / Exchange UTF-8 500

Созданный на 24 июл. 2018  ·  59Комментарии  ·  Источник: zammad/zammad

Привет! Спасибо за сообщение о проблеме. Прежде чем создавать проблему, убедитесь в следующем - спасибо! 🤓 С 15 ноября мы обрабатываем все запросы, кроме реальных ошибок, на нашем форуме сообщества. Полное объяснение: https://community.zammad.org/t/major-change-regarding-github-issues-community-board/21 Пожалуйста, публикуйте: - Запросы функций - Вопросы разработки - Технические вопросы на доске -> https: / /community.zammad.org! Если вы думаете, что столкнулись с ошибкой, продолжайте: - Найдите существующие проблемы и CHANGELOG.md для вашей проблемы - возможно, уже существует решение - Убедитесь, что вы используете последнюю версию Zammad, если возможно - Добавьте файл `log / production. log из вашей системы. Внимание: убедитесь, что в нем нет конфиденциальных данных! - Пожалуйста, напишите о проблеме на английском языке - Не удаляйте шаблон - в противном случае мы закроем проблему без дальнейших комментариев - Задавайте вопросы о конфигурации и использовании Zammad в нашем списке рассылки. См .: https://zammad.org/participate Примечание: мы всегда делаем все возможное. К сожалению, иногда запросов бывает слишком много, и мы не можем обработать все сразу. Если вы хотите расставить приоритеты / обострить проблему, вы можете сделать это с помощью контракта на поддержку (см. Https://zammad.com/pricing#selfhosted). * Верхний текстовый блок будет автоматически удален, когда вы отправите сообщение о проблеме *

Информация:

  • Используемая версия Zammad
  • Способ установки (исходный код, пакет, ..): DEP
  • Операционная система: ubuntu 18.04
  • База данных + версия: psql (PostgreSQL) 10.4 (Ubuntu 10.4-0ubuntu0.18.04)
  • Версия Elasticsearch
  • Браузер + версия:
    Хром

Ожидаемое поведение:

Кадр LDPA отображается (в меню конфигурации Система -> Интеграция -> LDAP) без ошибок
*

Фактическое поведение:

Кадр LDAP не отображается. Фрейм остается пустым с сообщением об ошибке
Также API и мониторинг
2018-07-24 08_35_07-microsoft edge
*
StatusCode 500
{"error": "\" \ xC5 \ "из ASCII-8BIT в UTF-8"}

Шаги по воспроизведению поведения:

Только Настроить LDAP.

*
Моя конфигурация:
адаптер: postgresql
база данных: zammad
бассейн: 50
тайм-аут: 5000
кодировка: utf8
имя пользователя: zammad

журнал / 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

Да, я уверен, что это ошибка, а не запрос функции или общий вопрос.

LDAP bug import

Самый полезный комментарий

Привет,
Просто чтобы сообщить, что у меня снова возникла та же проблема, но старая конфигурация все еще существовала. Поэтому, если вы снова столкнетесь с этой проблемой, действуйте следующим образом.

Удалите старую конфигурацию с помощью следующей команды:
sudo RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"

  • остановить службу заммад

  • обновить заммад

  • снова запустите службу zammad и попробуйте перенастроить соединение ldap

После этого у меня не возникло никаких проблем.

С Уважением

Все 59 Комментарий

Привет @ e311 - не могли бы вы также предоставить верхнюю часть журнала? Здесь печатается необходимая информация, которая в настоящее время отсутствует. Дополнительно: Не могли бы вы описать шаги, которые вы выполнили для решения проблемы? В настоящее время это не ясно. Спасибо!

Привет,
Я попробую.
Я открываю (в админке -> система -> Integarion) LDAP. Начинаю настройку Все нормально.
Пароль пользователя DN домена.
3 ldap

Я использовал стандартное отображение.
4

Экран конфигурации LDAP выглядит нормально.
6
Я нажимаю сейф. И я получаю сообщение об ошибке.
7

После перезагрузки страницы фрейм пуст.
2018-07-24 08_35_07-microsoft edge

и вот полный файл журнала:

log.txt

Привет @ e311 - спасибо за подробное описание! Интересная строка в журнале такая:

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'

Это в основном говорит о том, что в настройках LDAP есть специально закодированные символы, которые будут / сохранены. Я тоже вижу их в журнале.

Думаю, этого достаточно, чтобы воспроизвести проблему. Спасибо за вашу поддержку. Мы исправим проблему.

Обратите внимание, что это затронет и интеграцию с Exchange: # 2152

Привет @ e311!

Мы занимаемся этой проблемой и уверены, что понимаем, что происходит, но нам нужно снова попросить вас о помощи, чтобы быть полностью уверенными.

Шаг 1. Подтвердите причину ошибки

Попробуйте ввести следующую строку в свой терминал в каталоге Zammad. Если наши подозрения верны, тогда он должен потерпеть неудачу (_ т.е. _ вызовет ошибку и покажет трассировку):

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

Если вы видели трассировку для того же Encoding::UndefinedConversionError которое вы получили в первоначальном отчете об ошибке, тогда отлично - переходите к Шагу 2! Если нет, подтвердите, что вы не сбрасывали свою базу данных и не изменяли конфигурацию LDAP с момента последнего появления этой ошибки. Если вы по-прежнему не получаете сообщение об ошибке, сообщите нам об этом, и мы продолжим расследование.

Шаг 2. Отправьте нам последнюю важную информацию

Выполните следующую команду в своем терминале:

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

Затем отправьте полученный файл ( zammad_2140_debug_output.txt ) на адрес [email protected]. Не забудьте упомянуть, что это сообщение предназначено для Торстена Экеля и для ошибки № 2140.

Благодаря этому мы сразу же сможем исправить это.

Еще раз спасибо за вашу помощь!

Это первый массаж

serveradmin @ support : / opt / zammad $ rails r "помещает Setting.get ('ldap_config'). to_json"
Отслеживание (последний вызов последний):
4: из bin / rails: 3 : в <main>'         3: from bin/rails:3:in require_relative '
2: из /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 require '
/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require ': невозможно загрузить такой файл - бандлер / настройка (LoadError)

Гесендет: Монтэг, 06 августа 2018 г. 11:53 Uhr
Фон: "Райан Лю" [email protected]
An: zammad / zammad [email protected]
Копия: e311 [email protected] , Mention упоминание@noreply.github.com
Betreff: Re: [zammad / zammad] Код состояния LDAP / Exchange UTF-8 500 (# 2140)

Привет @ e311!

Мы занимаемся этой проблемой и уверены, что понимаем, что происходит, но нам нужно снова попросить вас о помощи, чтобы быть полностью уверенными.

Шаг 1. Подтвердите причину ошибки

Попробуйте ввести следующую строку в свой терминал в каталоге Zammad. Если наши подозрения верны, тогда он должен потерпеть неудачу (т.е. вызвать ошибку и показать обратную трассировку):

$ rails r "помещает Setting.get ('ldap_config'). to_json"

Если вы видели обратную трассировку для той же ошибки Encoding :: UndefinedConversionError, которую вы получили в первоначальном отчете об ошибке, тогда отлично - переходите к Шагу 2! Если нет, подтвердите, что вы не сбрасывали свою базу данных и не изменяли конфигурацию LDAP с момента последнего появления этой ошибки. Если вы по-прежнему не получаете сообщение об ошибке, сообщите нам об этом, и мы продолжим расследование.

Шаг 2. Отправьте нам последнюю важную информацию

Выполните следующую команду в своем терминале:

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

Затем отправьте полученный файл (zammad_2140_debug_output.txt) на адрес [email protected]. Не забудьте упомянуть, что это сообщение предназначено для Торстена Экеля и для ошибки № 2140.

Благодаря этому мы сразу же сможем исправить это.

Еще раз спасибо за вашу помощь!

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите чат.

rails r "pp Setting.get ('ldap_config'). except ('bind_pw')"> zammad_2140_debug_output.txt
создать пустой файл (я не могу загрузить, потому что он пустой)

befehl
output

Привет @ e311 - Попробуйте следующее:

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

ИЛИ ЖЕ:

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

но должна быть первая строка.

Пробую первую команду:
То же, что "Serveradmin" с sudo или без sudo
image
Бундель мой быть не установлен?
image

@ e311 , это очень странно. Давайте пока проигнорируем вторую команду ( bundle exec rails ... ) - я не думаю, что здесь правильный путь. Не могли бы вы попробовать сделать резервную копию файла журнала и создать новый пустой?

/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

Спасибо за вашу помощь в решении этой проблемы с нами.

@rlue мы вчера выполнили команды с @ e311 .

Журнал имеет прекрасные права доступа, я дважды это проверил.
Я пришлю вам вывод ldap-config в самом важном случае, если у вас его еще нет.

Упс, вы полностью отправили мне журнал вчера в начале дня. Не знаю, как я это пропустил!

@ e311 , я не увидел того, что ожидал увидеть в ваших отладочных выводах. Теперь, когда @MrGeneration смогла помочь вам заставить ваши zammad run rails r ... команды работать, не могли бы вы попробовать следующее еще раз и сказать мне, поднимает ли он Encoding::UndefinedConversionError , для которого эта проблема?

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

Я получаю сообщение "Ваша версия Ruby - 2.5.1, но в вашем Gemfile указано 2.4.4"
Извините, это не сработает (я пробую все мысли, которые мне говорят в Google)

Ваша версия Ruby и Elasticsearch несовместима с Zammad.
Используйте Ruby 2.4.4 и Elasticsearch до 5.6.

@ e311 извини, это полностью моя вина. Снова забыл добавить zammad r . -_- '

я имел в виду

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

Вот сообщение:

Neues Textdokument (3) .txt

Таким образом, результат последней команды оказался именно таким, как я ожидал. Подводя итог, похоже, что некоторые пользовательские атрибуты на вашем сервере LDAP имеют значения двоичных данных. Zammad пытается преобразовать их в строки, а затем передать их из бэкэнда во внешний интерфейс, но, поскольку на самом деле они не являются строками, мы сталкиваемся с некоторыми проблемами кодирования / преобразования.

Конечно, поскольку я не могу подключиться к вашему серверу LDAP, я не могу быть на 100% уверен, что исправление сработает, пока вы не попробуете его для нас. Итак, я хотел бы попросить вашей помощи еще по двум пунктам:

  1. В прошлый раз, когда я просил вас выполнить несколько команд и отправить нам результат по электронной почте (в прошлую среду), команды, которые я вам дал, были не совсем правильными и не совсем давали нам необходимую информацию. Вот сценарий, который на этот раз должен все исправить ( скачать здесь ):

    # 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))
    

    Извините, что заставил вас сделать это дважды.

  2. Я написал патч, который, как мне кажется, должен решить эту проблему. По сути, всякий раз, когда он встречает двоичное значение данных в синхронизации LDAP, он пропускает его, вместо того, чтобы пытаться сохранить его как строку.

    Я хотел бы подтвердить, что исправление работает на вашем компьютере, прежде чем мы объединим эти изменения в основную кодовую базу. Вот исправленная версия файла lib/ldap/user.rb .

    Загрузите его и скопируйте в /opt/zammad/lib/ldap/user.rb , затем перезапустите Zammad (важно!) И снова запустите весь мастер настройки LDAP. Поскольку у вас уже есть существующая конфигурация LDAP, это означает, что вам нужно будет нажать кнопку «Изменить» в нижней части панели:

    screenshot_20180814_201507

Если шаг 2 по- прежнему не помогает, запустите сценарий из шага 1 еще раз и обязательно отправьте нам оба файла.

Еще раз спасибо за вашу помощь и терпение!

Я перезагружаю систему отверстий, но не могу нажать кнопку изменения.

image

перед патчем
2140_bug_report (Шаг1) .txt

после патча
2140_bug_report (Шаг 2) .txt

Я также попробую новую конфигурацию LDAP. Я восстанавливаю Систему перед конфигурированием LDAP. но результат тот же.

Я проверил функциональный уровень домена. Это 2003 год, может в этом проблема?

Я перезагружаю систему отверстий, но не могу нажать кнопку изменения.

Спасибо за разъяснение. Изначально я не понимал масштаб проблемы.

Я также попробую новую конфигурацию LDAP. Я восстанавливаю Систему перед конфигурированием LDAP. но результат тот же.

Вы имеете в виду, что вы восстановили систему до конфигурации до LDAP conf, успешно выполнили весь мастер и все еще столкнулись с той же проблемой? Или вы имеете в виду, что вы пытались восстановить систему до конфигурации LDAP, но вы по-прежнему получаете эту ошибку и не можете получить доступ к мастеру?

Если первое, то над патчем все еще нужно доработать; Я должен приготовить для тебя завтра. Если последнее, то вы можете попробовать сбросить конфигурацию LDAP с помощью

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

(Вы можете опустить часть RAILS_ENV=production если делаете это в среде разработки.)

Я восстановил резервную копию, резервная копия была создана до того, как я впервые начал настройку LDAP.

Я пытаюсь сбросить ошибку LDAP с помощью
$ RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"
я не «сбрасываю» конфиг, он все равно работает.
Теперь кажется, что вся система работает, без сообщения об ошибке.

(Без LDAP)

Итак, вы говорите:

  1. Заммад работает,
  2. у вас в настоящее время не настроена синхронизация LDAP, и
  3. вы больше не получаете сообщение об ошибке на странице синхронизации LDAP?

(Чтобы подтвердить пункт 2, вы можете запустить RAILS_ENV=production zammad run rails r "puts Setting.get('ldap_config')" , который должен вывести {} на консоль.)


Если все вышеперечисленное верно, и вы скопировали исправленную версию lib/ldap/user.rb которую я ссылался выше, можете ли вы попытаться настроить синхронизацию LDAP еще раз и сообщить мне, если вы все еще сталкиваетесь с та же проблема?

Или, если я неправильно понял, дайте мне знать, в какой ситуации.

Спасибо.

Извините за задержку с ответом. Да все правильно. После повторной настройки LDAP у меня снова была та же ошибка.

@rlue - как уже говорилось в @ e311, все еще что-то не так: https://community.zammad.org/t/unable-to-access-ldap-in-integrations-statuscode-500/1116/21

К вашему сведению: у меня такая же проблема, и пропатченный user.rb у меня тоже не работал.
Заранее спасибо за вашу работу

Всем, у кого все еще есть проблема после изменения файла и перезапуска приложения, пожалуйста, укажите ошибку (включая обратную трассировку) из вашего файла log/production.log . Спасибо!

@ e311 , @tbeitter и все остальные, кто в настоящее время сталкивается с этой проблемой - у меня есть еще один сценарий отладки, который я бы хотел, чтобы вы запустили . Я не хочу говорить слишком рано, но это действительно должно быть последнее.

Поместите его в свой каталог zammad, а затем запустите

$ zammad run rails r 2140_improved_bug_report.rb

Вам будет предложено ввести URL-адрес вашего LDAP-сервера и учетные данные для входа, а затем сценарий сгенерирует файл с именем 2140_debug_log.txt . Этот файл содержит образец пользовательских атрибутов с вашего LDAP-сервера, поэтому, если это может означать что-то конфиденциальное, НЕ публикуйте его публично . Вместо этого отправьте его на [email protected] и

Спасибо всем за ваше терпение в работе над этой ошибкой.

Привет,
Если я попытаюсь запустить новый скрипт, я получаю это (LDAP включен), файл не был создан.

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

также есть эта ошибка ldap ... (установка ubuntu 16.04 через репо)

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, убедитесь, что 2140_improved_bug_report.rb находится в вашем каталоге /opt/zammad .

@ e311 Ой , это странная ошибка.

Я изменил сценарий, удалив из вывода консоли некоторые ненужные многобайтовые символы. Вы можете повторно загрузить скрипт и попробовать еще раз или просто заменить умные кавычки в строке 77 на обычные:

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

Не уверен на 100%, что это исправит, но у меня есть догадка.

@rlue , нет 2140_improved_bug_report.rb в / opt / zammad

Кстати: как только я удалю конфигурацию LDAP (RAILS_ENV = production zammad run rails r "Setting.set ('ldap_config', {})"), проблема исчезнет.

@ redbear-ger благодарим за быстрый отзыв; пожалуйста, загрузите скрипт отчета об ошибке , поместите его в /opt/zammad и повторите попытку.

Даже если проблема на 100% решена, было бы очень полезно иметь ваши образцы данных, чтобы мы могли построить тесты, чтобы убедиться, что это больше не повторится.

Ошибка исчезла, но также и интеграция с ldap;)
Я скачаю сценарий отчета сегодня вечером

Привет,
У меня такая же проблема, и я попробовал все предложения выше. Ни один из них не решает проблему.
Поэтому я решил воспроизвести проблему в системе разработки, чтобы предоставить вам файл отладки без предоставления конфиденциальных данных.

Скрипт 2140_improved_bug_report.rb вернул мне следующий текстовый файл:
2140_debug_log.txt

Спасибо!

Спасибо @hublux! По какой-то причине в файле есть множество мест, где управляющие символы (_ например, _ ^D ) заменяются буквальным каратом ( ^ ), за которым следует буквальная буква ( D ), и это вызывает ошибки при попытке синтаксического анализа файла. Вы случайно не сделали что-нибудь с файлом перед загрузкой? (Скажем, открыть его в текстовом редакторе, затем закрыть и нажать «сохранить изменения»?) Или вы думаете, что, возможно, GitHub мог обработать его, когда вы его загрузили?

Чтобы убедиться, что исходный файл правильно отформатирован на вашем компьютере, попробуйте выполнить следующую команду в каталоге Zammad и проверьте результат:

$ 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"]

Если все работает должным образом, отправьте файл по электронной почте на адрес [email protected].

Привет,
Спасибо за ваш ответ.

Действительно, похоже, что некоторые из моих действий действительно изменили файл, когда я скопировал из него содержимое.
проверив это с кошкой, это выглядит немного иначе.

grafik

Я попробовал команду и получил правильный результат.
grafik
Я отправил файл в службу поддержки zammad.

Вот и новый файл
2140_debug_log.txt

@hublux , еще раз спасибо за быстрый отзыв. Я думаю, что что-то не так с написанным мной сценарием отладки, потому что этот новый файл тоже не совсем правильный (в нем отсутствует много данных - 4 КБ по сравнению с изначально отправленным вами журналом отладки 16 КБ).

С тех пор я исправил сценарий отладки, чтобы (надеюсь) сделать файл 2140_debug_log.txt более надежным и безопасным для передачи без этих странных проблем с кодированием. Пожалуйста, скачайте его еще раз и попробуйте еще раз. (Не стесняйтесь включить его в свой ответ в этой ветке, если вам так удобнее.)

И если вам действительно интересно узнать, что не так со скриптом отладки ...

Первоначально он взял хеш Ruby, упорядочил его , а затем записал упорядоченные данные в двоичный (без кодирования) «текстовый» файл. Я действительно не знаю, почему двоичные текстовые файлы повреждаются при передаче с одной машины на другую, но это то, что мы наблюдаем здесь.

Это исправление берет упорядоченные данные и кодирует их в формате base-64 перед сохранением в обычный текстовый файл Unicode. Это должно сделать его более безопасным для передачи без искажений, потому что что может быть универсальнее Юникода?

2140_debug_log.txt
Вот и результат с новым скриптом
С уважением!

Привет всем,
также вмешивается, так как та же проблема влияет и на меня - даже после обновления до нового lib/ldap/user.rb

2140_debug_log.txt

Я также начал немного копаться в ldap_config -hash и начал избавляться от всего содержимого !binary . Но оказалось, что хотя у меня их было 4, с кодировкой прикрутили только два.

Мне пришлось удалить usersmimecertificate и msexchmailboxsecuritydescriptor .

Два других, msexchmasteraccountsid и securityprotocol , не вызывали никаких проблем.

Привет,

Просто чтобы уточнить, я не уверен, очевидно ли это, поскольку я не видел, чтобы кто-то упоминал об этом.
В качестве LDAP-соединения я использую Active Directory с немецким языком в качестве системного языка. Итак, я установил новую систему и отдельный домен. Единственное отличие от предыдущей системы, в которой возникла проблема, состоит в том, что в новой системе язык установлен на американский английский вместо немецкого. При такой настройке ошибок не обнаружено, все работает как положено. Итак, я взял свою оригинальную систему zammad, в которой у меня была проблема, и подключил ее к недавно установленному домену, и проблема исчезла.

Выполнение следующих действий в рабочей настройке дает мне следующий результат:
sudo zammad run rails r "puts Setting.get('ldap_config').to_json"

workingsetup.txt

Если я запускаю команду, чтобы проверить конфигурацию ldap с исходной настройкой, она не работает и появляется следующая ошибка:

grafik

Надеюсь, это тебе поможет.
С Уважением!

Спасибо @hublux! Благодаря вашему вкладу мы работаем над исправлением; он должен быть объединен с develop ближайшее время!

screenshot_1

После обновления все еще появляется та же ошибка. (Но без Exchange-настройки только LDAP-Sync)

Привет @tidet , спасибо за отзыв. Пожалуйста, следуйте инструкциям в этом комментарии ; Ваши образцы данных будут иметь большое значение, чтобы помочь нам окончательно решить эту проблему.

Привет,
Просто чтобы сообщить, что у меня снова возникла та же проблема, но старая конфигурация все еще существовала. Поэтому, если вы снова столкнетесь с этой проблемой, действуйте следующим образом.

Удалите старую конфигурацию с помощью следующей команды:
sudo RAILS_ENV=production zammad run rails r "Setting.set('ldap_config', {})"

  • остановить службу заммад

  • обновить заммад

  • снова запустите службу zammad и попробуйте перенастроить соединение ldap

После этого у меня не возникло никаких проблем.

С Уважением

@rlue, следует ли мне попробовать решение, указанное выше, или
Электронная почта с файлом журнала не поддерживает @

@tidet , теперь, когда у нас есть ваш образец данных LDAP, вы можете попробовать то, что описано выше. Я нашел одно значение, которое _может_ все равно вызывать проблемы, но, вероятно, это нормально. И независимо от того, исправят ли это для вас приведенные выше инструкции или нет, сегодня в разработке будет еще один патч.

РЕДАКТИРОВАТЬ: передумал. Поскольку исправление работает на вас, я воздержусь от изменения кода и добавления ненужных сложностей, пока он действительно не сломается для кого-то.

@hublux Fix у меня тоже сработал.

@hublux также исправлен

мы все еще сталкиваемся с этой проблемой. Я сделал это, написал

Я был в отпуске, извините за поздний ответ и если что-то пропустил :)

Привет @tbeitter!
Если вы запустите эту команду, получите ли вы какой-либо вывод:
sudo zammad run rails r "puts Setting.get('ldap_config').to_json"

Если да, проверьте это:
https://github.com/zammad/zammad/issues/2140#issuecomment -417605384

С Уважением

Да, я получаю ошибку, похожую на вашу:

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

Привет,

Я только что проверил свою версию Заммада, которую обновил сегодня утром:
grafik
Он отличается от вашего.

Не могли бы вы выполнить следующие действия еще раз:

  • Удалить конфигурацию LDAP
  • остановить службу заммад
  • обновить Заммад снова
  • запустить службу заммад

С Уважением

@hublux, который у меня сработал! Спасибо!

Большое спасибо @hublux за вашу помощь в

Была ли эта страница полезной?
0 / 5 - 0 рейтинги