diff --git a/ietf/settings.py b/ietf/settings.py
index 349e809df..d7f1e7177 100644
--- a/ietf/settings.py
+++ b/ietf/settings.py
@@ -1122,6 +1122,7 @@ if DEBUG:
STATS_NAMES_LIMIT = 25
+UTILS_MEETING_CONFERENCE_DOMAINS = ['webex.com', 'zoom.us', 'jitsi.org', 'meetecho.com', ]
UTILS_TEST_RANDOM_STATE_FILE = '.factoryboy_random_state'
UTILS_APIKEY_GUI_LOGIN_LIMIT_DAYS = 30
diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html
index dd84b34e6..f4a60fe50 100644
--- a/ietf/templates/meeting/agenda.html
+++ b/ietf/templates/meeting/agenda.html
@@ -324,7 +324,7 @@
CANCELLED
{% endif %}
- {% if item.session.agenda_note|first_url %}
+ {% if item.session.agenda_note|first_url|conference_url %}
{{item.session.agenda_note|slice:":23"}}
{% elif item.session.agenda_note %}
{{item.session.agenda_note}}
diff --git a/ietf/templates/meeting/interim_session_buttons.html b/ietf/templates/meeting/interim_session_buttons.html
index 33277a0be..df1371144 100644
--- a/ietf/templates/meeting/interim_session_buttons.html
+++ b/ietf/templates/meeting/interim_session_buttons.html
@@ -32,13 +32,13 @@
{% if now < item.timeslot.end_time %}
-
- {% if "webex.com/" in session.agenda_note|first_url %}
+
+ {% if session.agenda_note|first_url|conference_url %}
+ title="Session call-in">
- {% elif session.remote_instructions|first_url %}
+ {% elif session.remote_instructions|first_url|conference_url %}
@@ -57,7 +57,7 @@
{% else %}
+ title="No remote call-in info found in remote instructions or agenda note">
{% endif %}
{% else %}
diff --git a/ietf/templates/meeting/session_buttons_include.html b/ietf/templates/meeting/session_buttons_include.html
index fc6ba4291..ea3ecc0bc 100644
--- a/ietf/templates/meeting/session_buttons_include.html
+++ b/ietf/templates/meeting/session_buttons_include.html
@@ -50,11 +50,16 @@
title="Audio stream">
{% endif %}
-
- {% if "webex.com/" in session.agenda_note|first_url %}
+
+ {% if session.agenda_note|first_url|conference_url %}
+ title="Session call-in">
+
+ {% elif session.remote_instructions|first_url|conference_url %}
+
{% elif item.timeslot.location.webex_url %}
Remote instructions:
- {% if "https://ietf.webex.com" in session.agenda_note|first_url %}
+ {% if session.agenda_note|first_url|conference_url %}
+ title="Session call-in">
- {% elif "https://ietf.webex.com" in session.remote_instructions|first_url %}
+ {% elif session.remote_instructions|first_url|conference_url %}
+ title="Session call-in">
{% endif %}
{{ session.remote_instructions }}
diff --git a/ietf/utils/templatetags/textfilters.py b/ietf/utils/templatetags/textfilters.py
index 980915330..fed4144c7 100644
--- a/ietf/utils/templatetags/textfilters.py
+++ b/ietf/utils/templatetags/textfilters.py
@@ -6,6 +6,7 @@ import re
import bleach
from django import template
+from django.conf import settings
from django.template.defaultfilters import stringfilter
from django.utils.html import escape
from django.utils.safestring import mark_safe
@@ -84,3 +85,12 @@ def first_url(value):
urls = re.findall(r"http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+", value)
url = urls[0] if urls else None
return url
+
+@register.filter
+@stringfilter
+def conference_url(value):
+ conf_re = r"http[s]?://\S*(%s)/" % ('|'.join(settings.UTILS_MEETING_CONFERENCE_DOMAINS), )
+ return value if re.match(conf_re, value) else None
+
+
+
\ No newline at end of file