]> www.infradead.org Git - pidgin-chime.git/commitdiff
Add hackery for authentication via browser
authorDavid Woodhouse <dwmw@amazon.co.uk>
Thu, 29 Apr 2021 22:45:37 +0000 (23:45 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Thu, 29 Apr 2021 22:52:50 +0000 (23:52 +0100)
Makefile.am
chime-auth.desktop [new file with mode: 0644]
chime-auth.py [new file with mode: 0644]
debian/pidgin-chime.install
pidgin-chime.spec.in

index d170da5354c77bec6b039be07180f4e0f44aebe9..5b55c8e08b1eaa6ccc2a7e5d6116cf144815d960 100644 (file)
@@ -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 (file)
index 0000000..ea94c00
--- /dev/null
@@ -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 (file)
index 0000000..a18f34a
--- /dev/null
@@ -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)
index e871e68dfacf9c3792c9a798e45244e0e699e078..6f4efaa69962834ab108d706e6b6da1fb63a0c0a 100644 (file)
@@ -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
index 67bacbc7ebb2f55254651c87395748b593fc38cf..a61c42304b14317373934438422d3dd35aab461e 100644 (file)
@@ -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