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:
parent
40ad9bd58d
commit
644842ab6d
4 changed files with 1278 additions and 31 deletions
59
clients.toml
59
clients.toml
|
@ -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
26
fasi.py
|
@ -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
1213
img/xabber.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 128 KiB |
|
@ -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" />
|
||||||
|
|
Loading…
Reference in a new issue