tree 68168143ffd8e42874b32396371bbed01afc6e17
parent d85f391e9878b44f6401f393075910f74f9a0e73
author Paul Fertser <fercerpav@gmail.com> 1649668719 +0000
committer Patrick Williams <patrick@stwcx.xyz> 1649797984 +0000

Syslog: introduce interfaces for e-mail sending

Interfaces to configure multiple e-mail destinations, each with an
individual threshold for the priority level of the syslog messages.

The idea is to provide facilities to implement a minimally useful subset
of Redfish Event Destinations for e-mail with ability to add additional
properties if the need arises.

D-Bus object path for each destination contains 8 digits of a mailto
hash, so Level can be changed later but for another URI a new object
needs to be created.

Current set of properties is made on assumption that organisation has an
SMTP smarthost (that BMC is allowed to use without authentication) which
takes care of dispatching messages; rsyslog's ommail module is
considered for the initial implementation.

Example session:

root@qemuarm:~# busctl tree xyz.openbmc_project.Syslog.Config
└─/xyz
  └─/xyz/openbmc_project
    └─/xyz/openbmc_project/logging
      └─/xyz/openbmc_project/logging/config
        ├─/xyz/openbmc_project/logging/config/mail
        │ ├─/xyz/openbmc_project/logging/config/mail/2dc1e699
        │ ├─/xyz/openbmc_project/logging/config/mail/5d43d672
        │ ├─/xyz/openbmc_project/logging/config/mail/b4dc9055
        │ ├─/xyz/openbmc_project/logging/config/mail/d5d4db03
        │ └─/xyz/openbmc_project/logging/config/mail/e0974603
        └─/xyz/openbmc_project/logging/config/remote
root@qemuarm:~# busctl introspect xyz.openbmc_project.Syslog.Config /xyz/openbmc_project/logging/config/mail
NAME                                                       TYPE      SIGNATURE RESULT/VALUE       FLAGS
org.freedesktop.DBus.Introspectable                        interface -         -                  -
.Introspect                                                method    -         s                  -
org.freedesktop.DBus.Peer                                  interface -         -                  -
.GetMachineId                                              method    -         s                  -
.Ping                                                      method    -         -                  -
org.freedesktop.DBus.Properties                            interface -         -                  -
.Get                                                       method    ss        v                  -
.GetAll                                                    method    s         a{sv}              -
.Set                                                       method    ssv       -                  -
.PropertiesChanged                                         signal    sa{sv}as  -                  -
xyz.openbmc_project.Collection.DeleteAll                   interface -         -                  -
.DeleteAll                                                 method    -         -                  -
xyz.openbmc_project.Logging.Syslog.Destination.Mail        interface -         -                  -
.From                                                      property  s         "from@some.domain" emits-change writable
xyz.openbmc_project.Logging.Syslog.Destination.Mail.Create interface -         -                  -
.Create                                                    method    ss        o                  -
xyz.openbmc_project.Network.Client                         interface -         -                  -
.Address                                                   property  s         "smarthost.lan"    emits-change writable
.Port                                                      property  q         25                 emits-change writable
xyz.openbmc_project.Object.Enable                          interface -         -                  -
.Enabled                                                   property  b         true               emits-change writable
root@qemuarm:~# busctl introspect xyz.openbmc_project.Syslog.Config /xyz/openbmc_project/logging/config/mail/d5d4db03
NAME                                                      TYPE      SIGNATURE RESULT/VALUE                             FLAGS
org.freedesktop.DBus.Introspectable                       interface -         -                                        -
.Introspect                                               method    -         s                                        -
org.freedesktop.DBus.Peer                                 interface -         -                                        -
.GetMachineId                                             method    -         s                                        -
.Ping                                                     method    -         -                                        -
org.freedesktop.DBus.Properties                           interface -         -                                        -
.Get                                                      method    ss        v                                        -
.GetAll                                                   method    s         a{sv}                                    -
.Set                                                      method    ssv       -                                        -
.PropertiesChanged                                        signal    sa{sv}as  -                                        -
xyz.openbmc_project.Logging.Syslog.Destination.Mail.Entry interface -         -                                        -
.Level                                                    property  s         "xyz.openbmc_project.Logging.Entry.Leve… emits-change writable
.Mailto                                                   property  s         "mailto://someone2@otherdomain.test"     emits-change
xyz.openbmc_project.Object.Delete                         interface -         -                                        -
.Delete                                                   method    -         -                                        -

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Change-Id: Ic78fc2bf3608c1dd7ec0c962412e69062dde48d4
