Cleanup Gajims disco features

This commit is contained in:
Philipp Hörist 2018-12-19 00:11:24 +01:00
parent de4cd80b83
commit 99cfb8f629
2 changed files with 68 additions and 51 deletions

View File

@ -142,17 +142,43 @@ socks5queue = None
gupnp_igd = None gupnp_igd = None
gajim_identity = {'type': 'pc', 'category': 'client', 'name': 'Gajim'} gajim_identity = {'type': 'pc', 'category': 'client', 'name': 'Gajim'}
gajim_common_features = [nbxmpp.NS_BYTESTREAM, nbxmpp.NS_SI, nbxmpp.NS_FILE,
nbxmpp.NS_MUC, nbxmpp.NS_MUC_USER, nbxmpp.NS_MUC_ADMIN, nbxmpp.NS_MUC_OWNER, gajim_common_features = [
nbxmpp.NS_MUC_CONFIG, nbxmpp.NS_COMMANDS, nbxmpp.NS_DISCO_INFO, 'ipv6', nbxmpp.NS_BYTESTREAM,
'jabber:iq:gateway', nbxmpp.NS_LAST, nbxmpp.NS_PRIVACY, nbxmpp.NS_PRIVATE, nbxmpp.NS_SI,
nbxmpp.NS_REGISTER, nbxmpp.NS_VERSION, nbxmpp.NS_DATA, nbxmpp.NS_ENCRYPTED, nbxmpp.NS_FILE,
'msglog', 'sslc2s', 'stringprep', nbxmpp.NS_PING, nbxmpp.NS_TIME_REVISED, nbxmpp.NS_MUC,
nbxmpp.NS_SSN, nbxmpp.NS_MOOD, nbxmpp.NS_ACTIVITY, nbxmpp.NS_NICK, nbxmpp.NS_COMMANDS,
nbxmpp.NS_ROSTERX, nbxmpp.NS_SECLABEL, nbxmpp.NS_HASHES_2, nbxmpp.NS_DISCO_INFO,
nbxmpp.NS_HASHES_MD5, nbxmpp.NS_HASHES_SHA1, nbxmpp.NS_HASHES_SHA256, nbxmpp.NS_LAST,
nbxmpp.NS_HASHES_SHA512, nbxmpp.NS_CONFERENCE, nbxmpp.NS_CORRECT, nbxmpp.NS_DATA,
nbxmpp.NS_EME, 'urn:xmpp:avatar:metadata+notify', 'storage:bookmarks+notify'] nbxmpp.NS_ENCRYPTED,
nbxmpp.NS_PING,
nbxmpp.NS_TIME_REVISED,
nbxmpp.NS_VERSION,
nbxmpp.NS_ROSTERX,
nbxmpp.NS_SECLABEL,
nbxmpp.NS_CONFERENCE,
nbxmpp.NS_CORRECT,
nbxmpp.NS_EME,
nbxmpp.NS_HASHES,
nbxmpp.NS_HASHES_2,
nbxmpp.NS_HASHES_MD5,
nbxmpp.NS_HASHES_SHA1,
nbxmpp.NS_HASHES_SHA256,
nbxmpp.NS_HASHES_SHA512,
nbxmpp.NS_HASHES_SHA3_256,
nbxmpp.NS_HASHES_SHA3_512,
nbxmpp.NS_HASHES_BLAKE2B_256,
nbxmpp.NS_HASHES_BLAKE2B_512,
nbxmpp.NS_JINGLE,
nbxmpp.NS_JINGLE_FILE_TRANSFER_5,
nbxmpp.NS_JINGLE_XTLS,
nbxmpp.NS_JINGLE_BYTESTREAM,
nbxmpp.NS_JINGLE_IBB,
nbxmpp.NS_AVATAR_METADATA + '+notify',
nbxmpp.NS_BOOKMARKS + '+notify',
]
# Optional features gajim supports per account # Optional features gajim supports per account
gajim_optional_features = {} # type: Dict[str, List[str]] gajim_optional_features = {} # type: Dict[str, List[str]]

View File

@ -1161,56 +1161,47 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
return keyID return keyID
def update_optional_features(account=None): def update_optional_features(account=None):
if account: if account is not None:
accounts = [account] accounts = [account]
else: else:
accounts = [a for a in app.connections] accounts = app.connections.keys()
for a in accounts:
app.gajim_optional_features[a] = [] for account_ in accounts:
if app.config.get_per('accounts', a, 'subscribe_mood'): features = []
app.gajim_optional_features[a].append(nbxmpp.NS_MOOD + '+notify') app.gajim_optional_features[account_] = features
if app.config.get_per('accounts', a, 'subscribe_activity'): if app.config.get_per('accounts', account_, 'subscribe_mood'):
app.gajim_optional_features[a].append(nbxmpp.NS_ACTIVITY + \ features.append(nbxmpp.NS_MOOD + '+notify')
'+notify') if app.config.get_per('accounts', account_, 'subscribe_activity'):
if app.config.get_per('accounts', a, 'publish_tune'): features.append(nbxmpp.NS_ACTIVITY + '+notify')
app.gajim_optional_features[a].append(nbxmpp.NS_TUNE) if app.config.get_per('accounts', account_, 'subscribe_tune'):
if app.config.get_per('accounts', a, 'publish_location'): features.append(nbxmpp.NS_TUNE + '+notify')
app.gajim_optional_features[a].append(nbxmpp.NS_LOCATION) if app.config.get_per('accounts', account_, 'subscribe_nick'):
if app.config.get_per('accounts', a, 'subscribe_tune'): features.append(nbxmpp.NS_NICK + '+notify')
app.gajim_optional_features[a].append(nbxmpp.NS_TUNE + '+notify') if app.config.get_per('accounts', account_, 'subscribe_location'):
if app.config.get_per('accounts', a, 'subscribe_nick'): features.append(nbxmpp.NS_LOCATION + '+notify')
app.gajim_optional_features[a].append(nbxmpp.NS_NICK + '+notify')
if app.config.get_per('accounts', a, 'subscribe_location'):
app.gajim_optional_features[a].append(nbxmpp.NS_LOCATION + \
'+notify')
if app.config.get('outgoing_chat_state_notifactions') != 'disabled': if app.config.get('outgoing_chat_state_notifactions') != 'disabled':
app.gajim_optional_features[a].append(nbxmpp.NS_CHATSTATES) features.append(nbxmpp.NS_CHATSTATES)
if not app.config.get('ignore_incoming_xhtml'): if not app.config.get('ignore_incoming_xhtml'):
app.gajim_optional_features[a].append(nbxmpp.NS_XHTML_IM) features.append(nbxmpp.NS_XHTML_IM)
if app.config.get_per('accounts', a, 'answer_receipts'): if app.config.get_per('accounts', account_, 'answer_receipts'):
app.gajim_optional_features[a].append(nbxmpp.NS_RECEIPTS) features.append(nbxmpp.NS_RECEIPTS)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE)
if app.is_installed('FARSTREAM'): if app.is_installed('FARSTREAM'):
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP) features.append(nbxmpp.NS_JINGLE_RTP)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP_AUDIO) features.append(nbxmpp.NS_JINGLE_RTP_AUDIO)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP_VIDEO) features.append(nbxmpp.NS_JINGLE_RTP_VIDEO)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_ICE_UDP) features.append(nbxmpp.NS_JINGLE_ICE_UDP)
app.gajim_optional_features[a].append(
nbxmpp.NS_JINGLE_FILE_TRANSFER_5)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_XTLS)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_BYTESTREAM)
app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_IBB)
# Give plugins the possibility to add their features # Give plugins the possibility to add their features
app.plugin_manager.extension_point('update_caps', a) app.plugin_manager.extension_point('update_caps', account_)
app.caps_hash[a] = caps_cache.compute_caps_hash([app.gajim_identity], app.caps_hash[account_] = caps_cache.compute_caps_hash(
app.gajim_common_features + app.gajim_optional_features[a]) [app.gajim_identity],
app.gajim_common_features + features)
# re-send presence with new hash # re-send presence with new hash
connected = app.connections[a].connected connected = app.connections[account_].connected
if connected > 1 and app.SHOW_LIST[connected] != 'invisible': if connected > 1 and app.SHOW_LIST[connected] != 'invisible':
app.connections[a].change_status(app.SHOW_LIST[connected], app.connections[account_].change_status(
app.connections[a].status) app.SHOW_LIST[connected], app.connections[account_].status)
def jid_is_blocked(account, jid): def jid_is_blocked(account, jid):
con = app.connections[account] con = app.connections[account]