Support accepted_pattern for certSelect API call
This commit is contained in:
parent
92e3c028bb
commit
da9af181dd
1 changed files with 11 additions and 3 deletions
|
@ -15,6 +15,7 @@ from util import QueryJson, RateLimit
|
||||||
from Plugin import PluginManager
|
from Plugin import PluginManager
|
||||||
from Translate import translate as _
|
from Translate import translate as _
|
||||||
from util import helper
|
from util import helper
|
||||||
|
from util import SafeRe
|
||||||
from Content.ContentManager import VerifyError, SignError
|
from Content.ContentManager import VerifyError, SignError
|
||||||
|
|
||||||
|
|
||||||
|
@ -425,11 +426,13 @@ class UiWebsocket(object):
|
||||||
inner_path = file_info["content_inner_path"]
|
inner_path = file_info["content_inner_path"]
|
||||||
|
|
||||||
# Add certificate to user files
|
# Add certificate to user files
|
||||||
if file_info and "cert_signers" in file_info and privatekey is None:
|
is_user_content = file_info and ("cert_signers" in file_info or "cert_signers_pattern" in file_info)
|
||||||
|
if is_user_content and privatekey is None:
|
||||||
cert = self.user.getCert(self.site.address)
|
cert = self.user.getCert(self.site.address)
|
||||||
extend["cert_auth_type"] = cert["auth_type"]
|
extend["cert_auth_type"] = cert["auth_type"]
|
||||||
extend["cert_user_id"] = self.user.getCertUserId(site.address)
|
extend["cert_user_id"] = self.user.getCertUserId(site.address)
|
||||||
extend["cert_sign"] = cert["cert_sign"]
|
extend["cert_sign"] = cert["cert_sign"]
|
||||||
|
self.log.debug("Extending content.json with cert %s" % extend["cert_user_id"])
|
||||||
|
|
||||||
if not self.hasFilePermission(inner_path):
|
if not self.hasFilePermission(inner_path):
|
||||||
self.log.error("SiteSign error: you don't own this site & site owner doesn't allow you to do so.")
|
self.log.error("SiteSign error: you don't own this site & site owner doesn't allow you to do so.")
|
||||||
|
@ -762,7 +765,7 @@ class UiWebsocket(object):
|
||||||
self.response(to, "ok")
|
self.response(to, "ok")
|
||||||
|
|
||||||
# Select certificate for site
|
# Select certificate for site
|
||||||
def actionCertSelect(self, to, accepted_domains=[], accept_any=False):
|
def actionCertSelect(self, to, accepted_domains=[], accept_any=False, accepted_pattern=None):
|
||||||
accounts = []
|
accounts = []
|
||||||
accounts.append(["", _["No certificate"], ""]) # Default option
|
accounts.append(["", _["No certificate"], ""]) # Default option
|
||||||
active = "" # Make it active if no other option found
|
active = "" # Make it active if no other option found
|
||||||
|
@ -770,11 +773,16 @@ class UiWebsocket(object):
|
||||||
# Add my certs
|
# Add my certs
|
||||||
auth_address = self.user.getAuthAddress(self.site.address) # Current auth address
|
auth_address = self.user.getAuthAddress(self.site.address) # Current auth address
|
||||||
site_data = self.user.getSiteData(self.site.address) # Current auth address
|
site_data = self.user.getSiteData(self.site.address) # Current auth address
|
||||||
|
|
||||||
|
if not accepted_domains and not accepted_pattern: # Accept any if no filter defined
|
||||||
|
accept_any = True
|
||||||
|
|
||||||
for domain, cert in self.user.certs.items():
|
for domain, cert in self.user.certs.items():
|
||||||
if auth_address == cert["auth_address"] and domain == site_data.get("cert"):
|
if auth_address == cert["auth_address"] and domain == site_data.get("cert"):
|
||||||
active = domain
|
active = domain
|
||||||
title = cert["auth_user_name"] + "@" + domain
|
title = cert["auth_user_name"] + "@" + domain
|
||||||
if domain in accepted_domains or not accepted_domains or accept_any:
|
accepted_pattern_match = accepted_pattern and SafeRe.match(accepted_pattern, domain)
|
||||||
|
if domain in accepted_domains or accept_any or accepted_pattern_match:
|
||||||
accounts.append([domain, title, ""])
|
accounts.append([domain, title, ""])
|
||||||
else:
|
else:
|
||||||
accounts.append([domain, title, "disabled"])
|
accounts.append([domain, title, "disabled"])
|
||||||
|
|
Loading…
Reference in a new issue