Fix is in git.

2014-07-21 19:16 GMT+03:00 Leif Middelschulte <leif.middelschu...@gmail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Am 16.07.2014 10:53, schrieb Kai Huuhko:
>> kuuko pushed a commit to branch master.
>>
>> http://git.enlightenment.org/apps/econnman.git/commit/?id=80b83a2e2805ebedce3a710d79dde511d5dbc0d2
>>
>>  commit 80b83a2e2805ebedce3a710d79dde511d5dbc0d2 Author: Kai Huuhko
>> <kai.huu...@gmail.com> Date:   Wed Jul 16 11:46:47 2014 +0300
>>
>> Refactor pnac config into a class and separate module
> This breaks econnman-bin. The module isn't installed and therefore not
> found :-/
>
> Regards,
>
> Leif
>>
>> This will make it easier to add proper authorization for it in the
>> future. --- .gitignore      |   1 + econnman-bin.in | 155
>> ++++++++++---------------------------------------------- pnac.py
>> | 114 +++++++++++++++++++++++++++++++++++++++++ 3 files changed,
>> 141 insertions(+), 129 deletions(-)
>>
>> diff --git a/.gitignore b/.gitignore index a29def7..5cdde3b 100644
>> --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*.py[oc]
>> INSTALL Makefile Makefile.in diff --git a/econnman-bin.in
>> b/econnman-bin.in index 67f7454..0593ba8 100755 ---
>> a/econnman-bin.in +++ b/econnman-bin.in @@ -14,16 +14,10 @@ import
>> logging import argparse import os.path
>>
>> -# For python2 backwards compatibility -try: -    import
>> configparser -except ImportError: -    import ConfigParser as
>> configparser - try: import efl.evas as evas import efl.ecore as
>> ecore -    import efl.edje +    import efl.edje as edje  # Class
>> resolve hack for edje_get from efl.dbus_mainloop import
>> DBusEcoreMainLoop import efl.elementary as elm from efl.elementary
>> import ELM_POLICY_QUIT, \ @@ -51,7 +45,7 @@ except: import
>> elementary as elm import evas import ecore -    import edje +
>> import edje  # Class resolve hack for edje_get from e_dbus import
>> DBusEcoreMainLoop from elementary import Window, Background, Box,
>> Label, Naviframe, Popup, \ Button, Scroller, Check, Progressbar,
>> Genlist, GenlistItemClass, \ @@ -59,6 +53,7 @@ except:
>> ELM_WIN_DIALOG_BASIC, ELM_POLICY_QUIT, ELM_SCROLLER_POLICY_OFF, \
>> ELM_SCROLLER_POLICY_AUTO, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED
>>
>> +from pnac import PNACConfig
>>
>> dbus_ml = DBusEcoreMainLoop() bus =
>> dbus.SystemBus(mainloop=dbus_ml) @@ -72,9 +67,6 @@
>> log.addHandler(log_handler)
>>
>> manager = None
>>
>> -CONF_FILE = "/var/lib/connman/econnman.config" -configs = None -
>> EXPAND_BOTH = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
>> EXPAND_HORIZ = (evas.EVAS_HINT_EXPAND, 0.0)
>>
>> @@ -268,103 +260,6 @@ class ObjectView(object): return lb, en
>>
>>
>> -#######################################################################
>>
>>
> - -# Config Files Helper:
>> -def config_file_setup(): -    global configs -    configs =
>> configparser.RawConfigParser() -    configs.optionxform = str -
>> try: -        fd = open(CONF_FILE, 'r', encoding='utf8') -
>> configs.readfp(fd) -        fd.close() -    except IOError: -
>> popup_error( -            win, -            "Cannot read
>> configuration file", -            "Econnman cannot read the
>> coniguration file \"" + CONF_FILE + -            "\", used by
>> connman to configure your ieee802.1x networks. " -            "Make
>> sure the user running connman is able to read/write it." -
>> ) -        configs = None -        raise IOError - - -def
>> config_del(name): -    global configs -    secname = 'service_' +
>> name -    if configs is None: -        try: -
>> config_file_setup() -        except IOError: -            return -
>> if configs.has_section(secname): -
>> configs.remove_section(secname) -    config_write(name) - - -def
>> config_set(name, key, value): -    global configs -    secname =
>> 'service_' + name -    if configs is None: -        try: -
>> config_file_setup() -        except IOError: -            return -
>> if not configs.has_section(secname): -
>> configs.add_section(secname) -        configs.set(secname, 'Type',
>> 'wifi') -        configs.set(secname, 'Name', name) -    if value
>> is not None: -        configs.set(secname, key, value) -    elif
>> configs.has_option(secname, key): -
>> configs.remove_option(secname, key) -    config_write(name) - -
>> -def config_get(name): -    global configs -    if configs is
>> None: -        try: -            config_file_setup() -
>> except IOError: -            return None -    for sec in
>> configs.sections(): -        if configs.has_option(sec, 'Name') and
>> \ -                configs.get(sec, 'Name') == name: -
>> return sec -        else: -            return None - - -def
>> config_option_get(secname, key): -    if
>> configs.has_option(secname, key): -        return
>> configs.get(secname, key) -    return None - - -def
>> config_exists(name): -    if config_get(name): -        return
>> True -    else: -        return False - - -def config_write(name):
>> -    global configs -    try: -        with open(CONF_FILE, 'w',
>> encoding='utf8') as configfile: -
>> configs.write(configfile) -    except IOError: -
>> popup_error( -            win, -            "Cannot write
>> configuration file", -            "Econnman cannot write the
>> coniguration file \"" + CONF_FILE + -            "\", used by
>> connman to configure your ieee802.1x networks. " -            "Make
>> sure the user running connman is able to read/write it." -
>> ) - -
>> ########################################################################
>>
>>
> # Views:
>> class OfflineModeMonitor(object): @@ -967,10 +862,10 @@ class
>> ServiceView(ObjectView): if not self.immutable and self.type !=
>> "ethernet": self.forget = self.add_button(self.box, "Forget
>> Network", self._forget) -        elif (self.type == "wifi") and
>> ("ieee8021x" in self.security_mode): +        elif self.type ==
>> "wifi" and "ieee8021x" in self.security_mode: self.forget =
>> self.add_button(self.box, "Forget Network", self._forget) -
>> if not config_exists(self.name): +            if not
>> pnac_conf.has_section(self.name): self.forget.disabled = True
>>
>> self.error = self.add_label(self.box, "error here") @@ -1005,6
>> +900,7 @@ class ServiceView(ObjectView): self.domains_label = lb
>> self.domains_entry = en
>>
>> +        # section: IPv4 self.ipv4_properties = {"IPv4": {},
>> "IPv4.Configuration": {}} fr, bx = self.add_frame_and_box(self.box,
>> "IPv4") self.ipv4_frame = fr @@ -1018,10 +914,15 @@ class
>> ServiceView(ObjectView):
>> en.callback_unfocused_add(self._on_ipv4_property_unfocused)
>> setattr(self, attr, en)
>>
>> +        # section: IPv6: similar to ipv4? refactor ipv4? if
>> properties.get("IPv6"): fr, bx = self.add_frame_and_box(self.box,
>> "IPv6") lb = self.add_label(bx, "TODO")
>>
>> +        # section: Proxy: custom contents for direct, auto and
>> manual +        #  - direct: nothing +        #  - auto: url +
>> #  - manual: servers, excludes self.proxy_properties = {"Proxy":
>> {}, "Proxy.Configuration": {}} fr, bx =
>> self.add_frame_and_box(self.box, "Proxy") self.proxy_frame = fr @@
>> -1031,12 +932,7 @@ class ServiceView(ObjectView): bx, options,
>> self._on_proxy_method) self.add_label(bx, "TODO")
>>
>> -        # section IPv6: similar to ipv4? refactor ipv4? -        #
>> section Proxy: custom contents for direct, auto and manual -
>> #  - direct: nothing -        #  - auto: url -        #  - manual:
>> servers, excludes - +        # section: Ethernet / VPN if self.type
>> in ("wifi", "ethernet", "wimax", "bluetooth", "cellular"): fr, bx =
>> self.add_readonly_section("Ethernet", self.eth_fields)
>> self.ethernet_frame = fr @@ -1044,20 +940,19 @@ class
>> ServiceView(ObjectView): fr, bx = self.add_readonly_section("VPN",
>> self.vpn_fields) self.vpn_frame = fr
>>
>> -        # section 2 Phase Authentication - +        # section: Two
>> Phase Authentication if (self.type == "wifi") and ("ieee8021x" in
>> self.security_mode): fr, bx = self.add_frame_and_box(self.box,
>> "ieee8021x") self.ieee8021x_frame = fr -            cfg_sec =
>> config_get(self.name) +            #cfg_sec =
>> pnac_conf.section_get(self.name)
>>
>> lb = self.add_label(bx, "EAP:") options = ("PEAP", "TLS", "TTLS",
>> "None") self.eap_method, self.eap_method_items =
>> self.add_segment_control( bx, options, self._on_eap_method ) -
>> if cfg_sec: -                conf_val = config_option_get(cfg_sec,
>> 'EAP') +            if pnac_conf.has_section(self.name): +
>> conf_val = pnac_conf.get(self.name, 'EAP') if conf_val == "peap":
>> self.eap_method_items["PEAP"].selected = True elif conf_val ==
>> "tls": @@ -1072,8 +967,8 @@ class ServiceView(ObjectView):
>> self.phase2, self.phase2_items = self.add_segment_control( bx,
>> options, self._on_phase2 ) -            if cfg_sec: -
>> conf_val = config_option_get(cfg_sec, 'Phase2') +            if
>> pnac_conf.has_section(self.name): +                conf_val =
>> pnac_conf.get(self.name, 'Phase2') if conf_val == "tls":
>> self.phase2_items["TLS"].selected = True elif conf_val ==
>> "MSCHAPV2": @@ -1306,8 +1201,8 @@ class ServiceView(ObjectView):
>> self.forget.disabled = False
>>
>> if self.type == "wifi" and "ieee8021x" in self.security_mode: -
>> if config_exists(self.name): -
>> config_del(self.name) +            if
>> pnac_conf.has_section(self.name): +
>> pnac_conf.remove_section(self.name) for it in self.phase2_items:
>> self.phase2_items[it].selected = False for it in
>> self.eap_method_items: @@ -1456,7 +1351,7 @@ class
>> ServiceView(ObjectView): elif item.text == "None": eap_val = None
>>
>> -        config_set(self.name, "EAP", eap_val) +
>> pnac_conf.set(self.name, "EAP", eap_val) return
>>
>> def _on_phase2(self, obj, item): @@ -1468,7 +1363,7 @@ class
>> ServiceView(ObjectView): elif item.text == "None": phase2_val =
>> None
>>
>> -        config_set(self.name, 'Phase2', phase2_val) +
>> pnac_conf.set(self.name, 'Phase2', phase2_val) return
>>
>>
>> @@ -1501,8 +1396,8 @@ def connect_service(path, properties):
>> log.debug("connect to %s (%s): %s", name, path,
>> dbus_dict_to_str(properties))
>>
>> -    # Connman only supports 2 phase auth via config files -    if
>> ("ieee8021x" in sec) and not config_exists(name): +    # Connman
>> only supports two phase auth via config files +    if ("ieee8021x"
>> in sec) and not pnac_conf.has_section(name): popup_error( win,
>> "This Network needs Configuration", @@ -1738,6 +1633,8 @@ if
>> __name__ == "__main__": level -= 10 * args.verbose
>> log.setLevel(level)
>>
>> +    pnac_conf = PNACConfig() + elm.init()
>> elm.policy_set(ELM_POLICY_QUIT,
>> ELM_POLICY_QUIT_LAST_WINDOW_CLOSED)
>>
>> diff --git a/pnac.py b/pnac.py new file mode 100644 index
>> 0000000..da4d788 --- /dev/null +++ b/pnac.py @@ -0,0 +1,114 @@
>> +import sys +import logging +log =
>> logging.getLogger("econnman.pnac") + +CONF_FILE =
>> "/var/lib/connman/econnman.config" + +# python2 backwards
>> compatibility +try: +    from configparser import SafeConfigParser
>> +except ImportError: +    from ConfigParser import
>> SafeConfigParser + + +class PNACConfig(SafeConfigParser): + +
>> """A custom config parser for IEEE802.1x (PNAC) + +    Section
>> names are prefixed with service_ + +    """ + +    def
>> __init__(self): +        SafeConfigParser.__init__(self) +
>> self.optionxform = str + +    def read(self): +        args =
>> CONF_FILE, 'r' +        kwargs = {} +        if sys.hexversion >=
>> 0x03000000: +            kwargs["encoding"] = 'utf8' +        try:
>> +            with open(*args, **kwargs) as fd: +
>> self.readfp(fd) +        except IOError: +            log.error( +
>> "Econnman cannot read the configuration file \"%s\" used by " +
>> "connman to configure your ieee802.1x networks. Make sure the " +
>> "user running econnman is able to read/write it.", +
>> CONF_FILE +                ) +            #raise + +    #
>> defaults() +    # sections() + +    def add_section(self,
>> service_name): +        secname = 'service_' + service_name +
>> SafeConfigParser.add_section(self, secname) +
>> self.set(service_name, 'Type', 'wifi') +
>> self.set(service_name, 'Name', service_name) + +    def
>> has_section(self, service_name):  # config_exists +        return
>> bool(self.section_get(service_name)) + +    # options() + +    def
>> has_option(self, service_name, key): +        secname =
>> self.section_get(service_name) +        return
>> SafeConfigParser.has_option(secname, key) + +    # read() +    #
>> readfp() + +    def get(self, service_name, key):  #
>> config_option_get +        secname =
>> self.section_get(service_name) +        if
>> self.has_option(service_name, key): +            return
>> SafeConfigParser.get(self, secname, key) +        return None + +
>> # getint() +    # getfloat() +    # getboolean() +    # items() + +
>> def set(self, service_name, key, value):  # config_set +
>> secname = self.section_get(service_name) +        if not
>> self.has_section(service_name): +
>> self.add_section(service_name) +        if value is not None: +
>> SafeConfigParser.set(self, secname, key, value) +        elif
>> self.has_option(secname, key): +
>> self.remove_option(secname, key) +        #self.write() + +    def
>> write(self): +        try: +            with open(CONF_FILE, 'w',
>> encoding='utf8') as configfile: +
>> SafeConfigParser.write(self, configfile) +        except IOError: +
>> log.error( +                "Econnman cannot write to the
>> configuration file \"%s\" used " +                "by connman to
>> configure your ieee802.1x networks. Make sure " +
>> "the user running econnman is able to read/write it.", +
>> CONF_FILE +                ) + +    def remove_option(self,
>> service_name, key): +        secname =
>> self.section_get(service_name) +
>> SafeConfigParser.remove_option(self, secname, key) + +    def
>> remove_section(self, service_name):  # config_del +        secname
>> = self.section_get(service_name) +        ret =
>> SafeConfigParser.remove_section(self, secname) +
>> #self.write() +        return ret + +    def section_get(self,
>> service_name):  # config_get +        #secname = 'service_' +
>> service_name +        for sec in self.sections(): +            if
>> self.has_option(sec, 'Name') and \ +
>> self.get(sec, 'Name') == service_name: +                return sec
>> +            else: +                return None
>>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQEcBAEBAgAGBQJTzTzgAAoJEACAk+1XvqpKFYUH/j0/TMg1DYtMM4Y5j/4bTlpk
> OeE6XSqcx2NjJxAtAvl+H8jBhW0K+IIhdDMoHI3pfxQiP9SW4aCce9GrAlub2Zzy
> 4z3iqNHJ0q4HSZOPaGlMqZneBxfL0N8k33krah2FFLm2fxWRbGFPkeHX6Vw9qpDf
> bNwbWAdAtUm7RAm8DlZUaPZLiLSRkWamVYAK9ZTr5WijyEfsAVbLpnuovhSYJUeU
> 5XBv0McWcnK86G96a62aXfGdpcr8iiULUo6aJwCIsFNrSLIcTcsK704AnY25tB9k
> ccxPWLO16/e694OX7MWPkBmbkdnRYkFDl2BRk6Cb4+qCToBMVbcFoOHRurCTfjs=
> =294P
> -----END PGP SIGNATURE-----
>
> ------------------------------------------------------------------------------
> Want fast and easy access to all the code in your enterprise? Index and
> search up to 200,000 lines of code with a free copy of Black Duck
> Code Sight - the same software that powers the world's largest code
> search on Ohloh, the Black Duck Open Hub! Try it now.
> http://p.sf.net/sfu/bds
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to