Python : Handle situations in which FASI is unable to access to a group chat;

SVG    : Add Xabber;
TOML   : Add Xabber and update several descriptions;
XHTML  : Update note for Haiku.
This commit is contained in:
Schimon Jehudah, Adv. 2024-10-21 17:01:31 +03:00
parent 40ad9bd58d
commit 644842ab6d
4 changed files with 1278 additions and 31 deletions

View file

@ -31,7 +31,7 @@ features = ["chat", "console", "desktop"]
#and a few enhancements. #and a few enhancements.
#""" #"""
#apple = "https://beagle.im/#about" #apple = "https://beagle.im/#about"
#features = ["chat", "desktop", "graphical"] #features = ["chat", "desktop", "graphical", "omemo"]
[blabber] [blabber]
title = "blabber.im" title = "blabber.im"
@ -118,7 +118,7 @@ It is easy to use, reliable, battery friendly. With built-in support for \
images, group chats and e2e encryption. images, group chats and e2e encryption.
""" """
divestos = "https://f-droid.org/packages/eu.siacs.conversations" divestos = "https://f-droid.org/packages/eu.siacs.conversations"
features = ["chat", "fdroid", "graphical", "mobile", "omemo", "openpgp"] features = ["chat", "fdroid", "graphical", "mobile", "omemo", "openpgp", "pwa"]
[conversations-classic] [conversations-classic]
title = "Conversations Classic" title = "Conversations Classic"
@ -194,8 +194,8 @@ home = "https://gajim.org"
about = """ about = """
Gajim aims to be an easy to use and fully-featured XMPP client. Gajim aims to be an easy to use and fully-featured XMPP client.
Chat securely with End-to-End encryption with your friends or family; easily \ Chat securely, using End-to-End encryption, with your friends or family; \
share pictures and thoughts; or discuss the news with your groups. easily share pictures and thoughts; or discuss the news with your groups.
Gajim integrates well with your other devices: simply continue conversations \ Gajim integrates well with your other devices: simply continue conversations \
on your mobile device. on your mobile device.
@ -362,14 +362,14 @@ about = """
Poezio is a free console XMPP client (the protocol on which the Jabber IM \ Poezio is a free console XMPP client (the protocol on which the Jabber IM \
network is built). network is built).
Its purpose is to let you connect very easily (no account creation needed) to \ It allows you to connect very easily (no account creation needed) to the \
the network and join various chatrooms, immediately. It tries to look like the \ XMPP network, and join to various of chatrooms, immediately.
most famous IRC clients (weechat, irssi, etc). Many commands are identical and \
you will not be lost if you already know these clients. Configuration can be \
made in a configuration file or directly from the client.
You will find the light, fast, geeky and anonymous spirit of IRC while using a \ It mimics the appearance of the most famous IRC clients (weechat, irssi, etc), \
powerful, standard and open protocol. and it includes many identical commands. You will be immediately familiar, if \
you already know these clients. Configuration can be made in a configuration \
file or directly from the client. You will find the light, fast, geeky and \
anonymous spirit of IRC while using a powerful, standard and open protocol.
""" """
haiku = "https://depot.haiku-os.org/poezio" haiku = "https://depot.haiku-os.org/poezio"
posix = "https://poez.io/en/#download" posix = "https://poez.io/en/#download"
@ -409,7 +409,7 @@ supported operating system.
apple = "https://psi-im.org" apple = "https://psi-im.org"
linux = "https://psi-im.org" linux = "https://psi-im.org"
reactos = "https://psi-im.org" reactos = "https://psi-im.org"
features = ["adhoc", "admin", "chat", "desktop", "graphical", "openpgp", "otr"] features = ["adhoc", "admin", "chat", "desktop", "graphical", "omemo", "openpgp", "otr"]
[psi-plus] [psi-plus]
title = "Psi+" title = "Psi+"
@ -425,7 +425,7 @@ apple = "https://psi-plus.com/wiki/en:downloads#macos"
haiku = "https://depot.haiku-os.org/psi_plus" haiku = "https://depot.haiku-os.org/psi_plus"
linux = "https://psi-plus.com/wiki/en:downloads#linux" linux = "https://psi-plus.com/wiki/en:downloads#linux"
reactos = "https://psi-plus.com/wiki/en:downloads#ms_windows" reactos = "https://psi-plus.com/wiki/en:downloads#ms_windows"
features = ["adhoc", "admin", "chat", "desktop", "graphical", "haikudepot", "openpgp", "otr"] features = ["adhoc", "admin", "chat", "desktop", "graphical", "haikudepot", "omemo", "openpgp", "otr"]
[reeder] [reeder]
title = "Reeder" title = "Reeder"
@ -532,19 +532,19 @@ features = ["chat", "desktop", "graphical"]
title = "UWPX" title = "UWPX"
home = "https://uwpx.org" home = "https://uwpx.org"
about = """ about = """
UWPX is a app for your UWP (Windows 10 and Windows 11) devices. It implements \ UWPX is a Windows app for your UWP (Windows 10 and Windows 11) devices.
the Extensible Messaging and Presence Protocol (XMPP). At the moment UWPX is \
in BETA stage so expect unexpected behavior sometimes.
By default every connection between you and your server is encrypted via \ At the moment, development on UWPX has stopped, and we are looking for a new \
TLS 1.2. This prevents attackers from reading your chat messages or metadata. maintainer.
OMEMO support is actively being worked on. Once implemented, OMEMO will \ There is support for a wide range of features link bookmarks, user avatars, \
provide a multi-client end-to-end encryption so not even your own server can \ chat markers and experimental OMEMO support.
read your chat messages.
For a complete list of features, please refer to the project: \
https://github.com/UWPX/UWPX-Client?tab=readme-ov-file#features
""" """
reactos = "https://uwpx.org" reactos = "https://uwpx.org"
features = ["chat", "desktop", "graphical", "mobile"] features = ["chat", "desktop", "graphical", "mobile", "omemo"]
[weechat] [weechat]
title = "WeeChat" title = "WeeChat"
@ -560,6 +560,21 @@ haiku = "https://depot.haiku-os.org/weechat"
posix = "https://github.com/bqv/weechat-xmpp" posix = "https://github.com/bqv/weechat-xmpp"
features = ["chat", "console", "desktop", "omemo", "openpgp"] features = ["chat", "console", "desktop", "omemo", "openpgp"]
[xabber]
title = "Xabber"
home = "https://xabber.com"
about = """
Open source Jabber (XMPP) client with multi-account support, and a clean \
interface to provide you with a first-class chat experience.
Free (as in freedom!) and ad-free, Xabber looks and works great, and is built \
to provide people with a simple, fast and secure messaging, based on \
interoperable open standards.
"""
browser = "https://xabber.com"
divestos = "https://xabber.com"
features = ["chat", "desktop", "graphical", "omemo", "mobile"]
#[xmpp-web] #[xmpp-web]
#title = "XMPP Web" #title = "XMPP Web"
#home = "https://github.com/nioc/xmpp-web" #home = "https://github.com/nioc/xmpp-web"

26
fasi.py
View file

@ -1,6 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from asyncio import TimeoutError
from datetime import datetime from datetime import datetime
from email.utils import parseaddr from email.utils import parseaddr
from fastapi import FastAPI, Form, HTTPException, Request, Response from fastapi import FastAPI, Form, HTTPException, Request, Response
@ -681,6 +682,12 @@ class HttpInstance:
title = 'Internal Server Error' title = 'Internal Server Error'
return result_get(request, action, title) return result_get(request, action, title)
@self.app.exception_handler(504)
def time_out_exception_handler(request: Request, exc: HTTPException):
action = 'Warning'
title = 'Time Out'
return result_get(request, action, title)
def result_get(request: Request, action: str, title: str): def result_get(request: Request, action: str, title: str):
template_file = 'result.xhtml' template_file = 'result.xhtml'
template_dict = { template_dict = {
@ -850,12 +857,17 @@ class FileUtilities:
node_title = jid_info['condition'] node_title = jid_info['condition']
node_note = jid_info['text'] node_note = jid_info['text']
services = services_sorted = None services = services_sorted = None
elif isinstance(room_info_muc, IqTimeout): elif isinstance(room_info_muc['iq'], TimeoutError):
action = 'Warning'
node_title = 'Timeout'
node_note = 'Request timeout has reached'
services = services_sorted = None
elif isinstance(room_info_muc['iq'], IqTimeout):
action = 'Warning' action = 'Warning'
node_title = 'Timeout' node_title = 'Timeout'
node_note = 'Timeout error' node_note = 'Timeout error'
services = services_sorted = None services = services_sorted = None
elif isinstance(room_info_muc, IqError): elif isinstance(room_info_muc['iq'], IqError):
action = 'Warning' action = 'Warning'
breakpoint() breakpoint()
node_title = room_info_muc['condition'] node_title = room_info_muc['condition']
@ -1366,11 +1378,17 @@ class XmppXep0045:
#presence_options = {"pfrom" : jid_from}, #presence_options = {"pfrom" : jid_from},
#seconds=seconds, #seconds=seconds,
#since=since, #since=since,
#timeout=30 timeout=5
) )
except TimeoutError as e:
#raise HTTPException(status_code=504, detail='request-timeout-reached')
error = True
iq = e
condition = 'Request timeout reached'
text = str(e)
except (IqError, IqTimeout, PresenceError) as e: except (IqError, IqTimeout, PresenceError) as e:
error = True error = True
iq = None iq = e
condition = e.iq['error']['condition'] condition = e.iq['error']['condition']
text = e.iq['error']['text'] text = e.iq['error']['text']
result = { result = {

1213
img/xabber.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 128 KiB

View file

@ -60,8 +60,9 @@
<img src="/img/haiku.svg" /> <img src="/img/haiku.svg" />
</a> </a>
<span> <span>
Please refer to <a href="/download/haiku">this page</a>, if Please refer to the section <a href="/download/haiku">XMPP
you are using the Haiku operating system. Clients For Haiku</a>, if you are using the Haiku operating
system.
</span> </span>
</span> </span>
</div> </div>
@ -124,7 +125,7 @@
</a> </a>
<span> <span>
Please refer to <a href="/download/posix">this page</a>, if Please refer to <a href="/download/posix">this page</a>, if
you are prefer text based (i.e. console) interface. you prefer software with text based (i.e. console) interface.
</span> </span>
</span> </span>
</div> </div>
@ -183,8 +184,8 @@
XMPP is the decentralized, free, open, and private messaging XMPP is the decentralized, free, open, and private messaging
and publishing protocol that drives the world's top-tier and and publishing protocol that drives the world's top-tier and
largest open IM network which allows for end-to-end largest open IM network which allows for end-to-end
encrypted messaging, group chats, voice calls, video calls encrypted messaging, group chats, voice calls, video
and more. Join to the community! (est. 1999) conferences and more. Join to the community! (est. 1999)
</span> </span>
<span> <span>
<img class="wide" src="/img/xmpp.svg" /> <img class="wide" src="/img/xmpp.svg" />