[Pkg-xmpp-devel] Bug#1091230: sms4you: Policykit prevents SMS Messaging send

Tj tj.iam.tj at proton.me
Mon Dec 23 16:25:39 GMT 2024


Source: sms4you
Version: 0.0.7-2
Severity: important
X-Debbugs-Cc: tj.iam.tj at proton.me

Working on Bookworm amd64 but with dbussy (python3-dbussy) from latest
upstream to fix async I/O bugs affecting Python > v3.10 (Bookworm has
v3.11).

I'm just finishing writing a new GatewayFile module that monitors a
spool directory using aionotify and sends (validly formatted) file
content as an SMS.

When the message is passed to the SMS gateway a DBus exception is
generated that prevents sending:

sms4you[149293]: File accepted test-message.sms to +44xxxxxxxx
sms4you[149293]: Task exception was never retrieved
sms4you[149293]: future: <Task finished name='Task-4' coro=<GatewayFile._watch() done, defined at /usr/lib/sms4you/sms4you-file/__init__.py:57> exception=DBusError("org.freedesktop.ModemManager1.Error.Core.Unauthorized -- PolicyKit authorization failed: not authorized for 'org.freedesktop.ModemManager1.Messaging'")>
sms4you[149293]: Traceback (most recent call last):
sms4you[149293]:   File "/usr/lib/sms4you/sms4you-file/__init__.py", line 67, in _watch
sms4you[149293]:     await self.gateway.dispatch(number, message)
sms4you[149293]:   File "/usr/lib/sms4you/sms4you/core/gateway_sms.py", line 101, in dispatch
ms4you[149293]:     created = reply.expect_return_objects("o")[0]
sms4you[149293]:               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sms4you[149293]:   File "/usr/lib/python3/dist-packages/dbussy.py", line 4409, in expect_return_objects
sms4you[149293]:     raise DBusError(self.error_name, self.expect_objects("s")[0])
sms4you[149293]: dbussy.DBusError: org.freedesktop.ModemManager1.Error.Core.Unauthorized -- PolicyKit authorization failed: not authorized for 'org.freedesktop.ModemManager1.Messaging'

I've worked around this exception for now by relaxing the polkit rule thus:

/usr/share/polkit-1/rules.d/sms4you.rules:

  polkit.addRule(function(action, subject) {
    if (action.id.startsWith("org.freedesktop.ModemManager1") &&
      subject.isInGroup("_sms4you")) {
      return polkit.Result.YES;
    }
  });

but sending still (silently) fails; notice how the exception states:

  not authorized for 'org.freedesktop.ModemManager1.Messaging'

core/gateway_sms.py defines 

  MESSAGING_INTERFACE = MODEM_INTERFACE + ".Messaging"

and that is confirmed with an additional log message to be:

sms4you[149293]: MESSAGING_INTERFACE=org.freedesktop.ModemManager1.Modem.Messaging

So somehow "Modem." is going missing!

It's unclear if that is a bug in ModemManager or just an incorrect message.
I'll do additional research on this and report a separate bug if that is
what it turns out to be.



More information about the Pkg-xmpp-devel mailing list