beremiz

7652995cf280
WAMP: Support Client Certificate authentication (WAMPS-CRT://...) for IDE

URI scheme according to selected authentication:
WAMP:// unencrypted http, use generated PSK for CRA authentication
WAMP-ANNON:// unencrypted http, no authentication
WAMPS:// https with verified host name, use generated PSK for CRA authentication
WAMPS-ANNON:// https with verified host name, no authentication
WAMPS-INSECURE:// https with no verification, no authentication
WAMPS-NOVERIFY:// https with no verification, use generated PSK for CRA authentication
WAMPS-CRT:// https with verified host name, client certificate authentication

Tests updated accordingly.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# See COPYING file for copyrights details.
from __future__ import absolute_import
from itertools import repeat, islice, chain
from connectors.SchemeEditor import SchemeEditor
model = [('host', _("Host:")),
('port', _("Port:"))]
# (scheme, model, secure)
models = [("LOCAL", [], False), ("PYRO", model, False), ("PYROS", model, True)]
Schemes = list(zip(*models)[0])
_PerSchemeConf = {sch: (mod, sec) for sch, mod, sec in models}
class PYRO_dialog(SchemeEditor):
def __init__(self, scheme, *args, **kwargs):
# ID selector is enabled only on PYROS (secure)
self.model, self.EnableIDSelector = _PerSchemeConf[scheme]
SchemeEditor.__init__(self, scheme, *args, **kwargs)
# pylint: disable=unused-variable
def SetLoc(self, loc):
hostport, ID = list(islice(chain(loc.split("#"), repeat("")), 2))
host, port = list(islice(chain(hostport.split(":"), repeat("")), 2))
self.SetFields(locals())
def GetLoc(self):
if self.model:
fields = self.GetFields()
template = "{host}"
if fields['port']:
template += ":{port}"
if self.EnableIDSelector:
if fields['ID']:
template += "#{ID}"
return template.format(**fields)
return ''