From: David Woodhouse Date: Thu, 29 Apr 2021 22:45:37 +0000 (+0100) Subject: Add hackery for authentication via browser X-Git-Tag: v1.4~2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b430eba40f9e5e389cfe2f78e37a68e3cc3aa40a;p=pidgin-chime.git Add hackery for authentication via browser --- diff --git a/Makefile.am b/Makefile.am index d170da5..5b55c8e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,7 +11,10 @@ endif AM_CPPFLAGS = @WFLAGS@ -bin_SCRIPTS = chime-joinable.py +bin_SCRIPTS = chime-joinable.py chime-auth.py + +applicationsdir = $(datadir)/applications +applications_DATA = chime-auth.desktop certs_DATA = certs/Amazon.com_InfoSec_CA_G3.pem \ certs/Amazon.com_Internal_Root_Certificate_Authority.pem \ diff --git a/chime-auth.desktop b/chime-auth.desktop new file mode 100644 index 0000000..ea94c00 --- /dev/null +++ b/chime-auth.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Pidgin Chime authentication handler +Exec=chime-auth.py %u +Type=Application +Terminal=false +MimeType=x-scheme-handler/chime; diff --git a/chime-auth.py b/chime-auth.py new file mode 100644 index 0000000..a18f34a --- /dev/null +++ b/chime-auth.py @@ -0,0 +1,34 @@ +#!/usr/bin/python3 + +import sys, dbus + +if len(sys.argv) != 2: + print("Need one argument: New Chime token") + exit(1) + +chimeurl = sys.argv[1] + +if not chimeurl.startswith('chime://sso_sessions?Token='): + print("Need Chime URL starting chime://sso_sessions?Token=") + exit(1) + +token = chimeurl[27:] + +bus = dbus.SessionBus() + +pidgin = bus.get_object("im.pidgin.purple.PurpleService", + "/im/pidgin/purple/PurpleObject") + +accounts = pidgin.PurpleAccountsGetAllActive() + +for account in accounts: + proto = pidgin.PurpleAccountGetProtocolName(account) + if proto != "Amazon Chime": + continue + token = pidgin.PurpleAccountSetString(account, "token", token) + print(token) + exit(0) + + +print("No Chime account found") +exit(1) diff --git a/debian/pidgin-chime.install b/debian/pidgin-chime.install index e871e68..6f4efaa 100644 --- a/debian/pidgin-chime.install +++ b/debian/pidgin-chime.install @@ -4,4 +4,4 @@ usr/lib/*-linux-gnu/farstream-0.2/* usr/lib/x86_64-linux-gnu/farstream-0.2 usr/lib/*-linux-gnu/gstreamer-1.0/*.so usr/lib/x86_64-linux-gnu/gstreamer-1.0 usr/lib/evolution/modules/* usr/lib/evolution/modules usr/lib/pidgin/*.so usr/lib/pidgin -usr/bin/chime-joinable.py usr/bin +usr/bin/chime-*.py usr/bin diff --git a/pidgin-chime.spec.in b/pidgin-chime.spec.in index 67bacbc..a61c423 100644 --- a/pidgin-chime.spec.in +++ b/pidgin-chime.spec.in @@ -67,6 +67,7 @@ BuildRequires: gettext BuildRequires: libtool BuildRequires: autoconf BuildRequires: automake +BuildRequires: desktop-file-utils Requires: purple-chime%{?_isa} = %{version}-%{release} Requires: evolution-chime @@ -120,6 +121,7 @@ make %{?_smp_mflags} %install %make_install +desktop-file-validate %{buildroot}/%{_datadir}/applications/chime-auth.desktop find %{buildroot} -type f -name "*.la" -delete -print %find_lang %{name} @@ -130,6 +132,8 @@ make %{?_smp_mflags} check %{_datadir}/pixmaps/pidgin/protocols/*/chime* %{_libdir}/pidgin/chimeseen.so %{_bindir}/chime-joinable.py +%{_bindir}/chime-auth.py +%{_datadir}/applications/*.desktop %files -n purple-chime -f %{name}.lang %{_libdir}/purple-2/libchimeprpl.so