Как лучше всего реализовать простое сообщение о сбоях / ошибках?

Как лучше всего реализовать простой механизм сообщения о сбоях / ошибках?

Детали: мое приложение кроссплатформенное (mac/windows/linux) и написано на Python, поэтому мне просто нужно что-то, что отправит мне небольшой объем текста, например, просто отметку времени и трассировку (которую я уже генерирую и показываю в мой диалог ошибок).

Было бы хорошо, если бы он мог просто отправить его по электронной почте, но я не могу придумать, как это сделать, не включая имя пользователя и пароль для сервера smtp в приложение... Должен ли я реализовать простой веб-сервис на стороне сервера и мое приложение отправляет запрос HTTP с информацией? Есть идеи получше?

6 ответов

Решение

Веб-сервис - лучший способ, но есть несколько предостережений:

  1. Вы должны всегда спрашивать пользователя, если это нормально, чтобы отправить информацию об ошибке обратной связи.
  2. Вы должны быть готовы к грациозному сбою в случае сетевых ошибок. Не позволяйте сообщению о сбое препятствовать восстановлению!
  3. Вы должны избегать включения идентифицирующей или конфиденциальной информации пользователя, если пользователь не знает (см. #1), и вы должны либо использовать SSL, либо защищать его иным образом. Некоторые юрисдикции накладывают на вас бремя, с которым вы, возможно, не захотите иметь дело, поэтому лучше просто не сохранять такую ​​информацию.
  4. Как и любой веб-сервис, убедитесь, что ваш сервис не может быть использован злоумышленниками.

Я не могу придумать способ сделать это без включения имени пользователя и пароля для сервера smtp в приложение...

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

При этом некоторые интернет-провайдеры блокируют исходящий трафик через порт 25, поэтому наиболее надежной альтернативой является HTTP POST, который вряд ли что-либо заблокирует. Обязательно выберите URL-адрес, который вы не будете чувствовать себя ограниченным позднее или, что еще лучше, периодически проверяйте приложение на наличие обновлений, поэтому, если вы решите сменить домен или что-то еще, вы можете заранее отправить обновление.

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

Что касается полезной нагрузки, PyCrash может помочь вам в этом.

Хит в Интернете - это путь, но убедитесь, что вы выбрали хороший URL - ваше приложение будет посещать его в течение многих лет.

Независимо от того, используете ли вы SMTP или HTTP для отправки данных, вам необходимо иметь имя пользователя / пароль в приложении, чтобы никто не мог посылать вам случайные данные.

Имея это в виду, я подозреваю, что было бы проще использовать SMTP, а не HTTP для отправки данных.

Какой-то простой веб-сервис будет достаточно. Вы должны были бы рассмотреть вопрос о безопасности, чтобы не каждый мог отправлять запросы к вашим услугам.

В более широком масштабе мы рассмотрели систему обмена сообщениями JMS. Поместите в очередь сериализованный объект данных, содержащий трассировку / сообщение об ошибке, и используйте его каждые x минут, создавая отчеты / оповещения из этих данных.

Другие вопросы по тегам