Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
gajim
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
Daniel Brötzmann
gajim
Commits
5c995389
Commit
5c995389
authored
Oct 26, 2020
by
Philipp Hörist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SecurityLabels: Adapt to nbxmpp changes
parent
5e3e0ad3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
33 additions
and
52 deletions
+33
-52
gajim/chat_control_base.py
gajim/chat_control_base.py
+3
-2
gajim/common/modules/message.py
gajim/common/modules/message.py
+6
-3
gajim/common/modules/security_labels.py
gajim/common/modules/security_labels.py
+21
-44
gajim/conversation_textview.py
gajim/conversation_textview.py
+3
-3
No files found.
gajim/chat_control_base.py
View file @
5c995389
...
...
@@ -483,7 +483,8 @@ def _sec_labels_received(self, event):
model
.
clear
()
sel
=
0
_label
,
labellist
,
default
=
event
.
catalog
labellist
=
event
.
catalog
.
get_label_names
()
default
=
event
.
catalog
.
default
for
index
,
label
in
enumerate
(
labellist
):
model
.
append
([
label
])
if
label
==
default
:
...
...
@@ -973,7 +974,7 @@ def get_seclabel(self):
if
self
.
_type
.
is_privatechat
:
jid
=
self
.
gc_contact
.
room_jid
catalog
=
con
.
get_module
(
'SecLabels'
).
get_catalog
(
jid
)
labels
,
label_list
,
_
=
catalog
labels
,
label_list
=
catalog
.
labels
,
catalog
.
get_label_names
()
lname
=
label_list
[
idx
]
label
=
labels
[
lname
]
return
label
...
...
gajim/common/modules/message.py
View file @
5c995389
...
...
@@ -28,7 +28,6 @@
from
gajim.common.const
import
KindConstant
from
gajim.common.modules.base
import
BaseModule
from
gajim.common.modules.util
import
get_eme_message
from
gajim.common.modules.security_labels
import
parse_securitylabel
from
gajim.common.modules.misc
import
parse_correction
from
gajim.common.modules.misc
import
parse_oob
from
gajim.common.modules.misc
import
parse_xhtml
...
...
@@ -178,6 +177,10 @@ def _message_received(self, _con, stanza, properties):
if
properties
.
eme
is
not
None
:
msgtxt
=
get_eme_message
(
properties
.
eme
)
displaymarking
=
None
if
properties
.
has_security_label
:
displaymarking
=
properties
.
security_label
.
displaymarking
event_attr
=
{
'conn'
:
self
.
_con
,
'stanza'
:
stanza
,
...
...
@@ -195,7 +198,7 @@ def _message_received(self, _con, stanza, properties):
'gc_control'
:
gc_control
,
'popup'
:
False
,
'msg_log_id'
:
None
,
'displaymarking'
:
parse_securitylabel
(
stanza
)
,
'displaymarking'
:
displaymarking
,
'properties'
:
properties
,
}
...
...
@@ -306,7 +309,7 @@ def build_message_stanza(self, message):
stanza
.
setOriginID
(
message
.
message_id
)
if
message
.
label
:
stanza
.
addChild
(
node
=
message
.
label
)
stanza
.
addChild
(
node
=
message
.
label
.
to_node
()
)
# XEP-0172: user_nickname
if
message
.
user_nick
:
...
...
gajim/common/modules/security_labels.py
View file @
5c995389
...
...
@@ -14,15 +14,22 @@
# XEP-0258: Security Labels in XMPP
import
nbxmpp
from
nbxmpp.namespaces
import
Namespace
from
nbxmpp.errors
import
is_error
from
gajim.common
import
app
from
gajim.common.nec
import
Network
Incoming
Event
from
gajim.common.nec
import
NetworkEvent
from
gajim.common.modules.base
import
BaseModule
from
gajim.common.modules.util
import
as_task
class
SecLabels
(
BaseModule
):
_nbxmpp_extends
=
'SecurityLabels'
_nbxmpp_methods
=
[
'request_catalog'
,
]
def
__init__
(
self
,
con
):
BaseModule
.
__init__
(
self
,
con
)
...
...
@@ -36,58 +43,28 @@ def pass_disco(self, info):
self
.
supported
=
True
self
.
_log
.
info
(
'Discovered security labels: %s'
,
info
.
jid
)
@
as_task
def
request_catalog
(
self
,
jid
):
server
=
app
.
get_jid_from_account
(
self
.
_account
).
split
(
"@"
)[
1
]
iq
=
nbxmpp
.
Iq
(
typ
=
'get'
,
to
=
server
)
iq
.
addChild
(
name
=
'catalog'
,
namespace
=
Namespace
.
SECLABEL_CATALOG
,
attrs
=
{
'to'
:
jid
})
self
.
_log
.
info
(
'Request catalog: server: %s, to: %s'
,
server
,
jid
)
self
.
_con
.
connection
.
SendAndCallForResponse
(
iq
,
self
.
_catalog_received
)
def
_catalog_received
(
self
,
_nbxmpp_client
,
stanza
):
if
not
nbxmpp
.
isResultNode
(
stanza
):
self
.
_log
.
info
(
'Error: %s'
,
stanza
.
getError
())
return
_task
=
yield
query
=
stanza
.
getTag
(
'catalog'
,
namespace
=
Namespace
.
SECLABEL_CATALOG
)
to
=
query
.
getAttr
(
'to'
)
items
=
query
.
getTags
(
'item'
)
catalog
=
yield
self
.
_nbxmpp
(
'SecurityLabels'
).
request_catalog
(
jid
)
labels
=
{}
label_list
=
[]
default
=
None
for
item
in
items
:
label
=
item
.
getAttr
(
'selector'
)
labels
[
label
]
=
item
.
getTag
(
'securitylabel'
)
label_list
.
append
(
label
)
if
item
.
getAttr
(
'default'
)
==
'true'
:
default
=
label
if
is_error
(
catalog
):
self
.
_log
.
info
(
catalog
)
return
catalog
=
(
labels
,
label_list
,
default
)
self
.
_catalogs
[
to
]
=
catalog
self
.
_catalogs
[
jid
]
=
catalog
self
.
_log
.
info
(
'Received catalog: %s'
,
to
)
self
.
_log
.
debug
(
catalog
)
self
.
_log
.
info
(
'Received catalog: %s'
,
jid
)
app
.
nec
.
push_incoming_event
(
SecLabelCatalog
(
None
,
account
=
self
.
_account
,
jid
=
to
,
catalog
=
catalog
))
app
.
nec
.
push_incoming_event
(
NetworkEvent
(
'sec-catalog-received'
,
account
=
self
.
_account
,
jid
=
jid
,
catalog
=
catalog
))
def
get_catalog
(
self
,
jid
):
return
self
.
_catalogs
.
get
(
jid
)
def
parse_securitylabel
(
stanza
):
seclabel
=
stanza
.
getTag
(
'securitylabel'
,
namespace
=
Namespace
.
SECLABEL
)
if
seclabel
is
None
:
return
None
return
seclabel
.
getTag
(
'displaymarking'
)
class
SecLabelCatalog
(
NetworkIncomingEvent
):
name
=
'sec-catalog-received'
def
get_instance
(
*
args
,
**
kwargs
):
return
SecLabels
(
*
args
,
**
kwargs
),
'SecLabels'
gajim/conversation_textview.py
View file @
5c995389
...
...
@@ -1084,9 +1084,9 @@ def print_time(self, text, kind, tim, direction_mark, other_tags_for_time, iter_
'time_sometimes'
)
def
print_displaymarking
(
self
,
displaymarking
,
iter_
):
bgcolor
=
displaymarking
.
getAttr
(
'bgcolor'
)
or
'#FFF'
fgcolor
=
displaymarking
.
getAttr
(
'fgcolor'
)
or
'#000'
text
=
displaymarking
.
getData
()
bgcolor
=
displaymarking
.
bgcolor
fgcolor
=
displaymarking
.
fgcolor
text
=
displaymarking
.
name
if
text
:
buffer_
=
self
.
tv
.
get_buffer
()
tag
=
self
.
displaymarking_tags
.
setdefault
(
bgcolor
+
'/'
+
fgcolor
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment