diff options
| author | Kali Kaneko <kali@leap.se> | 2013-08-26 21:54:13 +0200 | 
|---|---|---|
| committer | Kali Kaneko <kali@leap.se> | 2013-08-26 21:54:13 +0200 | 
| commit | 4c5fcefcb0205727aed5ef59cd18b0dd263c4cfd (patch) | |
| tree | 74faa509c3ef691cfd6c3272d0881ee6970743c2 /src | |
| parent | 9070d74a47158f5749c5e16b8d9d9e62a55d07df (diff) | |
| parent | 4a124f94730775b97afc49b48ccfa0206459190f (diff) | |
Merge tag '0.3.1' into debian-0.3.1
Tag leap.common version 0.3.1
Conflicts:
	pkg/requirements.pip
	src/leap/common/events/events_pb2.py
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/common/__init__.py | 4 | ||||
| -rw-r--r-- | src/leap/common/_version.py | 203 | ||||
| -rw-r--r-- | src/leap/common/events/Makefile | 2 | ||||
| -rw-r--r-- | src/leap/common/events/events.proto | 29 | ||||
| -rw-r--r-- | src/leap/common/events/events_pb2.py | 911 | ||||
| -rw-r--r-- | src/leap/common/events/server.py | 28 | 
6 files changed, 780 insertions, 397 deletions
| diff --git a/src/leap/common/__init__.py b/src/leap/common/__init__.py index 3946fe8..5619900 100644 --- a/src/leap/common/__init__.py +++ b/src/leap/common/__init__.py @@ -16,4 +16,6 @@ except ImportError:  __all__ = ["certs", "check", "files", "events"] -__version__ = "0.3.0" +from ._version import get_versions +__version__ = get_versions()['version'] +del get_versions diff --git a/src/leap/common/_version.py b/src/leap/common/_version.py new file mode 100644 index 0000000..597e2e4 --- /dev/null +++ b/src/leap/common/_version.py @@ -0,0 +1,203 @@ + +IN_LONG_VERSION_PY = True +# This file helps to compute a version number in source trees obtained from +# git-archive tarball (such as those provided by githubs download-from-tag +# feature). Distribution tarballs (build by setup.py sdist) and build +# directories (produced by setup.py build) will contain a much shorter file +# that just contains the computed version number. + +# This file is released into the public domain. Generated by +# versioneer-0.7+ (https://github.com/warner/python-versioneer) + +# these strings will be replaced by git during git-archive +git_refnames = "$Format:%d$" +git_full = "$Format:%H$" + + +import subprocess +import sys + +def run_command(args, cwd=None, verbose=False): +    try: +        # remember shell=False, so use git.cmd on windows, not just git +        p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd) +    except EnvironmentError: +        e = sys.exc_info()[1] +        if verbose: +            print("unable to run %s" % args[0]) +            print(e) +        return None +    stdout = p.communicate()[0].strip() +    if sys.version >= '3': +        stdout = stdout.decode() +    if p.returncode != 0: +        if verbose: +            print("unable to run %s (error)" % args[0]) +        return None +    return stdout + + +import sys +import re +import os.path + +def get_expanded_variables(versionfile_source): +    # the code embedded in _version.py can just fetch the value of these +    # variables. When used from setup.py, we don't want to import +    # _version.py, so we do it with a regexp instead. This function is not +    # used from _version.py. +    variables = {} +    try: +        f = open(versionfile_source,"r") +        for line in f.readlines(): +            if line.strip().startswith("git_refnames ="): +                mo = re.search(r'=\s*"(.*)"', line) +                if mo: +                    variables["refnames"] = mo.group(1) +            if line.strip().startswith("git_full ="): +                mo = re.search(r'=\s*"(.*)"', line) +                if mo: +                    variables["full"] = mo.group(1) +        f.close() +    except EnvironmentError: +        pass +    return variables + +def versions_from_expanded_variables(variables, tag_prefix, verbose=False): +    refnames = variables["refnames"].strip() +    if refnames.startswith("$Format"): +        if verbose: +            print("variables are unexpanded, not using") +        return {} # unexpanded, so not in an unpacked git-archive tarball +    refs = set([r.strip() for r in refnames.strip("()").split(",")]) +    # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of +    # just "foo-1.0". If we see a "tag: " prefix, prefer those. +    TAG = "tag: " +    tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) +    if not tags: +        # Either we're using git < 1.8.3, or there really are no tags. We use +        # a heuristic: assume all version tags have a digit. The old git %d +        # expansion behaves like git log --decorate=short and strips out the +        # refs/heads/ and refs/tags/ prefixes that would let us distinguish +        # between branches and tags. By ignoring refnames without digits, we +        # filter out many common branch names like "release" and +        # "stabilization", as well as "HEAD" and "master". +        tags = set([r for r in refs if re.search(r'\d', r)]) +        if verbose: +            print("discarding '%s', no digits" % ",".join(refs-tags)) +    if verbose: +        print("likely tags: %s" % ",".join(sorted(tags))) +    for ref in sorted(tags): +        # sorting will prefer e.g. "2.0" over "2.0rc1" +        if ref.startswith(tag_prefix): +            r = ref[len(tag_prefix):] +            if verbose: +                print("picking %s" % r) +            return { "version": r, +                     "full": variables["full"].strip() } +    # no suitable tags, so we use the full revision id +    if verbose: +        print("no suitable tags, using full revision id") +    return { "version": variables["full"].strip(), +             "full": variables["full"].strip() } + +def versions_from_vcs(tag_prefix, versionfile_source, verbose=False): +    # this runs 'git' from the root of the source tree. That either means +    # someone ran a setup.py command (and this code is in versioneer.py, so +    # IN_LONG_VERSION_PY=False, thus the containing directory is the root of +    # the source tree), or someone ran a project-specific entry point (and +    # this code is in _version.py, so IN_LONG_VERSION_PY=True, thus the +    # containing directory is somewhere deeper in the source tree). This only +    # gets called if the git-archive 'subst' variables were *not* expanded, +    # and _version.py hasn't already been rewritten with a short version +    # string, meaning we're inside a checked out source tree. + +    try: +        here = os.path.abspath(__file__) +    except NameError: +        # some py2exe/bbfreeze/non-CPython implementations don't do __file__ +        return {} # not always correct + +    # versionfile_source is the relative path from the top of the source tree +    # (where the .git directory might live) to this file. Invert this to find +    # the root from __file__. +    root = here +    if IN_LONG_VERSION_PY: +        for i in range(len(versionfile_source.split("/"))): +            root = os.path.dirname(root) +    else: +        root = os.path.dirname(here) +    if not os.path.exists(os.path.join(root, ".git")): +        if verbose: +            print("no .git in %s" % root) +        return {} + +    GIT = "git" +    if sys.platform == "win32": +        GIT = "git.cmd" +    stdout = run_command([GIT, "describe", "--tags", "--dirty", "--always"], +                         cwd=root) +    if stdout is None: +        return {} +    if not stdout.startswith(tag_prefix): +        if verbose: +            print("tag '%s' doesn't start with prefix '%s'" % (stdout, tag_prefix)) +        return {} +    tag = stdout[len(tag_prefix):] +    stdout = run_command([GIT, "rev-parse", "HEAD"], cwd=root) +    if stdout is None: +        return {} +    full = stdout.strip() +    if tag.endswith("-dirty"): +        full += "-dirty" +    return {"version": tag, "full": full} + + +def versions_from_parentdir(parentdir_prefix, versionfile_source, verbose=False): +    if IN_LONG_VERSION_PY: +        # We're running from _version.py. If it's from a source tree +        # (execute-in-place), we can work upwards to find the root of the +        # tree, and then check the parent directory for a version string. If +        # it's in an installed application, there's no hope. +        try: +            here = os.path.abspath(__file__) +        except NameError: +            # py2exe/bbfreeze/non-CPython don't have __file__ +            return {} # without __file__, we have no hope +        # versionfile_source is the relative path from the top of the source +        # tree to _version.py. Invert this to find the root from __file__. +        root = here +        for i in range(len(versionfile_source.split("/"))): +            root = os.path.dirname(root) +    else: +        # we're running from versioneer.py, which means we're running from +        # the setup.py in a source tree. sys.argv[0] is setup.py in the root. +        here = os.path.abspath(sys.argv[0]) +        root = os.path.dirname(here) + +    # Source tarballs conventionally unpack into a directory that includes +    # both the project name and a version string. +    dirname = os.path.basename(root) +    if not dirname.startswith(parentdir_prefix): +        if verbose: +            print("guessing rootdir is '%s', but '%s' doesn't start with prefix '%s'" % +                  (root, dirname, parentdir_prefix)) +        return None +    return {"version": dirname[len(parentdir_prefix):], "full": ""} + +tag_prefix = "" +parentdir_prefix = "leap.common-" +versionfile_source = "src/leap/common/_version.py" + +def get_versions(default={"version": "unknown", "full": ""}, verbose=False): +    variables = { "refnames": git_refnames, "full": git_full } +    ver = versions_from_expanded_variables(variables, tag_prefix, verbose) +    if not ver: +        ver = versions_from_vcs(tag_prefix, versionfile_source, verbose) +    if not ver: +        ver = versions_from_parentdir(parentdir_prefix, versionfile_source, +                                      verbose) +    if not ver: +        ver = default +    return ver + diff --git a/src/leap/common/events/Makefile b/src/leap/common/events/Makefile index 4f73dea..5b7e60d 100644 --- a/src/leap/common/events/Makefile +++ b/src/leap/common/events/Makefile @@ -25,7 +25,7 @@ all: events_pb2.py  %_pb2.py: %.proto  	$(PROTOC) --python_out=./ $< -	autopep8 --in-place --aggressive $@ +#	autopep8 --in-place --aggressive $@  clean:  	rm -f *_pb2.py diff --git a/src/leap/common/events/events.proto b/src/leap/common/events/events.proto index b844f42..2708b93 100644 --- a/src/leap/common/events/events.proto +++ b/src/leap/common/events/events.proto @@ -34,6 +34,35 @@ enum Event {    UPDATER_NEW_UPDATES = 11;    UPDATER_DONE_UPDATING = 12;    RAISE_WINDOW = 13; +  SMTP_SERVICE_STARTED = 14; +  SMTP_SERVICE_FAILED_TO_START = 15; +  SMTP_RECIPIENT_ACCEPTED_ENCRYPTED = 16; +  SMTP_RECIPIENT_ACCEPTED_UNENCRYPTED = 17; +  SMTP_RECIPIENT_REJECTED = 18; +  SMTP_START_ENCRYPT_AND_SIGN = 19; +  SMTP_END_ENCRYPT_AND_SIGN = 20; +  SMTP_START_SIGN = 21; +  SMTP_END_SIGN = 22; +  SMTP_SEND_MESSAGE_START = 23; +  SMTP_SEND_MESSAGE_SUCCESS = 24; +  SMTP_SEND_MESSAGE_ERROR = 25; +  SMTP_CONNECTION_LOST = 26; +  IMAP_SERVICE_STARTED = 30; +  IMAP_SERVICE_FAILED_TO_START = 31; +  IMAP_CLIENT_LOGIN = 32; +  IMAP_FETCHED_INCOMING = 33; +  IMAP_MSG_PROCESSING = 34; +  IMAP_MSG_DECRYPTED = 35; +  IMAP_MSG_SAVED_LOCALLY = 36; +  IMAP_MSG_DELETED_INCOMING = 37; +  IMAP_UNHANDLED_ERROR = 38; +  IMAP_UNREAD_MAIL = 39; +  KEYMANAGER_LOOKING_FOR_KEY = 40; +  KEYMANAGER_KEY_FOUND = 41; +  KEYMANAGER_KEY_NOT_FOUND = 42; +  KEYMANAGER_STARTED_KEY_GENERATION = 43; +  KEYMANAGER_FINISHED_KEY_GENERATION = 44; +  KEYMANAGER_DONE_UPLOADING_KEYS = 45;  } diff --git a/src/leap/common/events/events_pb2.py b/src/leap/common/events/events_pb2.py index e25c7da..6151714 100644 --- a/src/leap/common/events/events_pb2.py +++ b/src/leap/common/events/events_pb2.py @@ -9,74 +9,191 @@ from google.protobuf import descriptor_pb2  # @@protoc_insertion_point(imports) +  DESCRIPTOR = descriptor.FileDescriptor( -    name='events.proto', -    package='leap.common.events', -    serialized_pb='\n\x0c\x65vents.proto\x12\x12leap.common.events\"\x97\x01\n\rSignalRequest\x12(\n\x05\x65vent\x18\x01 \x02(\x0e\x32\x19.leap.common.events.Event\x12\x0f\n\x07\x63ontent\x18\x02 \x02(\t\x12\x12\n\nmac_method\x18\x03 \x02(\t\x12\x0b\n\x03mac\x18\x04 \x02(\x0c\x12\x12\n\nenc_method\x18\x05 \x01(\t\x12\x16\n\x0e\x65rror_occurred\x18\x06 \x01(\x08\"j\n\x0fRegisterRequest\x12(\n\x05\x65vent\x18\x01 \x02(\x0e\x32\x19.leap.common.events.Event\x12\x0c\n\x04port\x18\x02 \x02(\x05\x12\x12\n\nmac_method\x18\x03 \x02(\t\x12\x0b\n\x03mac\x18\x04 \x02(\x0c\"l\n\x11UnregisterRequest\x12(\n\x05\x65vent\x18\x01 \x02(\x0e\x32\x19.leap.common.events.Event\x12\x0c\n\x04port\x18\x02 \x02(\x05\x12\x12\n\nmac_method\x18\x03 \x02(\t\x12\x0b\n\x03mac\x18\x04 \x02(\x0c\"\r\n\x0bPingRequest\"\x82\x01\n\rEventResponse\x12\x38\n\x06status\x18\x01 \x02(\x0e\x32(.leap.common.events.EventResponse.Status\x12\x0e\n\x06result\x18\x02 \x01(\t\"\'\n\x06Status\x12\x06\n\x02OK\x10\x01\x12\n\n\x06UNAUTH\x10\x02\x12\t\n\x05\x45RROR\x10\x03*\xe7\x02\n\x05\x45vent\x12\x15\n\x11\x43LIENT_SESSION_ID\x10\x01\x12\x0e\n\nCLIENT_UID\x10\x02\x12\x19\n\x15SOLEDAD_CREATING_KEYS\x10\x03\x12\x1e\n\x1aSOLEDAD_DONE_CREATING_KEYS\x10\x04\x12\x1a\n\x16SOLEDAD_UPLOADING_KEYS\x10\x05\x12\x1f\n\x1bSOLEDAD_DONE_UPLOADING_KEYS\x10\x06\x12\x1c\n\x18SOLEDAD_DOWNLOADING_KEYS\x10\x07\x12!\n\x1dSOLEDAD_DONE_DOWNLOADING_KEYS\x10\x08\x12\x1c\n\x18SOLEDAD_NEW_DATA_TO_SYNC\x10\t\x12\x1a\n\x16SOLEDAD_DONE_DATA_SYNC\x10\n\x12\x17\n\x13UPDATER_NEW_UPDATES\x10\x0b\x12\x19\n\x15UPDATER_DONE_UPDATING\x10\x0c\x12\x10\n\x0cRAISE_WINDOW\x10\r2\xdd\x02\n\x13\x45ventsServerService\x12J\n\x04ping\x12\x1f.leap.common.events.PingRequest\x1a!.leap.common.events.EventResponse\x12R\n\x08register\x12#.leap.common.events.RegisterRequest\x1a!.leap.common.events.EventResponse\x12V\n\nunregister\x12%.leap.common.events.UnregisterRequest\x1a!.leap.common.events.EventResponse\x12N\n\x06signal\x12!.leap.common.events.SignalRequest\x1a!.leap.common.events.EventResponse2\xb1\x01\n\x13\x45ventsClientService\x12J\n\x04ping\x12\x1f.leap.common.events.PingRequest\x1a!.leap.common.events.EventResponse\x12N\n\x06signal\x12!.leap.common.events.SignalRequest\x1a!.leap.common.events.EventResponseB\x03\x90\x01\x01') +  name='events.proto', +  package='leap.common.events', +  serialized_pb='\n\x0c\x65vents.proto\x12\x12leap.common.events\"\x97\x01\n\rSignalRequest\x12(\n\x05\x65vent\x18\x01 \x02(\x0e\x32\x19.leap.common.events.Event\x12\x0f\n\x07\x63ontent\x18\x02 \x02(\t\x12\x12\n\nmac_method\x18\x03 \x02(\t\x12\x0b\n\x03mac\x18\x04 \x02(\x0c\x12\x12\n\nenc_method\x18\x05 \x01(\t\x12\x16\n\x0e\x65rror_occurred\x18\x06 \x01(\x08\"j\n\x0fRegisterRequest\x12(\n\x05\x65vent\x18\x01 \x02(\x0e\x32\x19.leap.common.events.Event\x12\x0c\n\x04port\x18\x02 \x02(\x05\x12\x12\n\nmac_method\x18\x03 \x02(\t\x12\x0b\n\x03mac\x18\x04 \x02(\x0c\"l\n\x11UnregisterRequest\x12(\n\x05\x65vent\x18\x01 \x02(\x0e\x32\x19.leap.common.events.Event\x12\x0c\n\x04port\x18\x02 \x02(\x05\x12\x12\n\nmac_method\x18\x03 \x02(\t\x12\x0b\n\x03mac\x18\x04 \x02(\x0c\"\r\n\x0bPingRequest\"\x82\x01\n\rEventResponse\x12\x38\n\x06status\x18\x01 \x02(\x0e\x32(.leap.common.events.EventResponse.Status\x12\x0e\n\x06result\x18\x02 \x01(\t\"\'\n\x06Status\x12\x06\n\x02OK\x10\x01\x12\n\n\x06UNAUTH\x10\x02\x12\t\n\x05\x45RROR\x10\x03*\xc0\t\n\x05\x45vent\x12\x15\n\x11\x43LIENT_SESSION_ID\x10\x01\x12\x0e\n\nCLIENT_UID\x10\x02\x12\x19\n\x15SOLEDAD_CREATING_KEYS\x10\x03\x12\x1e\n\x1aSOLEDAD_DONE_CREATING_KEYS\x10\x04\x12\x1a\n\x16SOLEDAD_UPLOADING_KEYS\x10\x05\x12\x1f\n\x1bSOLEDAD_DONE_UPLOADING_KEYS\x10\x06\x12\x1c\n\x18SOLEDAD_DOWNLOADING_KEYS\x10\x07\x12!\n\x1dSOLEDAD_DONE_DOWNLOADING_KEYS\x10\x08\x12\x1c\n\x18SOLEDAD_NEW_DATA_TO_SYNC\x10\t\x12\x1a\n\x16SOLEDAD_DONE_DATA_SYNC\x10\n\x12\x17\n\x13UPDATER_NEW_UPDATES\x10\x0b\x12\x19\n\x15UPDATER_DONE_UPDATING\x10\x0c\x12\x10\n\x0cRAISE_WINDOW\x10\r\x12\x18\n\x14SMTP_SERVICE_STARTED\x10\x0e\x12 \n\x1cSMTP_SERVICE_FAILED_TO_START\x10\x0f\x12%\n!SMTP_RECIPIENT_ACCEPTED_ENCRYPTED\x10\x10\x12\'\n#SMTP_RECIPIENT_ACCEPTED_UNENCRYPTED\x10\x11\x12\x1b\n\x17SMTP_RECIPIENT_REJECTED\x10\x12\x12\x1f\n\x1bSMTP_START_ENCRYPT_AND_SIGN\x10\x13\x12\x1d\n\x19SMTP_END_ENCRYPT_AND_SIGN\x10\x14\x12\x13\n\x0fSMTP_START_SIGN\x10\x15\x12\x11\n\rSMTP_END_SIGN\x10\x16\x12\x1b\n\x17SMTP_SEND_MESSAGE_START\x10\x17\x12\x1d\n\x19SMTP_SEND_MESSAGE_SUCCESS\x10\x18\x12\x1b\n\x17SMTP_SEND_MESSAGE_ERROR\x10\x19\x12\x18\n\x14SMTP_CONNECTION_LOST\x10\x1a\x12\x18\n\x14IMAP_SERVICE_STARTED\x10\x1e\x12 \n\x1cIMAP_SERVICE_FAILED_TO_START\x10\x1f\x12\x15\n\x11IMAP_CLIENT_LOGIN\x10 \x12\x19\n\x15IMAP_FETCHED_INCOMING\x10!\x12\x17\n\x13IMAP_MSG_PROCESSING\x10\"\x12\x16\n\x12IMAP_MSG_DECRYPTED\x10#\x12\x1a\n\x16IMAP_MSG_SAVED_LOCALLY\x10$\x12\x1d\n\x19IMAP_MSG_DELETED_INCOMING\x10%\x12\x18\n\x14IMAP_UNHANDLED_ERROR\x10&\x12\x14\n\x10IMAP_UNREAD_MAIL\x10\'\x12\x1e\n\x1aKEYMANAGER_LOOKING_FOR_KEY\x10(\x12\x18\n\x14KEYMANAGER_KEY_FOUND\x10)\x12\x1c\n\x18KEYMANAGER_KEY_NOT_FOUND\x10*\x12%\n!KEYMANAGER_STARTED_KEY_GENERATION\x10+\x12&\n\"KEYMANAGER_FINISHED_KEY_GENERATION\x10,\x12\"\n\x1eKEYMANAGER_DONE_UPLOADING_KEYS\x10-2\xdd\x02\n\x13\x45ventsServerService\x12J\n\x04ping\x12\x1f.leap.common.events.PingRequest\x1a!.leap.common.events.EventResponse\x12R\n\x08register\x12#.leap.common.events.RegisterRequest\x1a!.leap.common.events.EventResponse\x12V\n\nunregister\x12%.leap.common.events.UnregisterRequest\x1a!.leap.common.events.EventResponse\x12N\n\x06signal\x12!.leap.common.events.SignalRequest\x1a!.leap.common.events.EventResponse2\xb1\x01\n\x13\x45ventsClientService\x12J\n\x04ping\x12\x1f.leap.common.events.PingRequest\x1a!.leap.common.events.EventResponse\x12N\n\x06signal\x12!.leap.common.events.SignalRequest\x1a!.leap.common.events.EventResponseB\x03\x90\x01\x01')  _EVENT = descriptor.EnumDescriptor( -    name='Event', -    full_name='leap.common.events.Event', -    filename=None, -    file=DESCRIPTOR, -    values=[ -        descriptor.EnumValueDescriptor( -            name='CLIENT_SESSION_ID', index=0, number=1, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='CLIENT_UID', index=1, number=2, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_CREATING_KEYS', index=2, number=3, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_DONE_CREATING_KEYS', index=3, number=4, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_UPLOADING_KEYS', index=4, number=5, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_DONE_UPLOADING_KEYS', index=5, number=6, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_DOWNLOADING_KEYS', index=6, number=7, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_DONE_DOWNLOADING_KEYS', index=7, number=8, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_NEW_DATA_TO_SYNC', index=8, number=9, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='SOLEDAD_DONE_DATA_SYNC', index=9, number=10, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='UPDATER_NEW_UPDATES', index=10, number=11, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='UPDATER_DONE_UPDATING', index=11, number=12, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='RAISE_WINDOW', index=12, number=13, -            options=None, -            type=None), -    ], -    containing_type=None, -    options=None, -    serialized_start=557, -    serialized_end=916, +  name='Event', +  full_name='leap.common.events.Event', +  filename=None, +  file=DESCRIPTOR, +  values=[ +    descriptor.EnumValueDescriptor( +      name='CLIENT_SESSION_ID', index=0, number=1, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='CLIENT_UID', index=1, number=2, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_CREATING_KEYS', index=2, number=3, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_DONE_CREATING_KEYS', index=3, number=4, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_UPLOADING_KEYS', index=4, number=5, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_DONE_UPLOADING_KEYS', index=5, number=6, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_DOWNLOADING_KEYS', index=6, number=7, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_DONE_DOWNLOADING_KEYS', index=7, number=8, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_NEW_DATA_TO_SYNC', index=8, number=9, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SOLEDAD_DONE_DATA_SYNC', index=9, number=10, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='UPDATER_NEW_UPDATES', index=10, number=11, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='UPDATER_DONE_UPDATING', index=11, number=12, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='RAISE_WINDOW', index=12, number=13, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_SERVICE_STARTED', index=13, number=14, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_SERVICE_FAILED_TO_START', index=14, number=15, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_RECIPIENT_ACCEPTED_ENCRYPTED', index=15, number=16, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_RECIPIENT_ACCEPTED_UNENCRYPTED', index=16, number=17, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_RECIPIENT_REJECTED', index=17, number=18, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_START_ENCRYPT_AND_SIGN', index=18, number=19, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_END_ENCRYPT_AND_SIGN', index=19, number=20, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_START_SIGN', index=20, number=21, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_END_SIGN', index=21, number=22, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_SEND_MESSAGE_START', index=22, number=23, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_SEND_MESSAGE_SUCCESS', index=23, number=24, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_SEND_MESSAGE_ERROR', index=24, number=25, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='SMTP_CONNECTION_LOST', index=25, number=26, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_SERVICE_STARTED', index=26, number=30, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_SERVICE_FAILED_TO_START', index=27, number=31, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_CLIENT_LOGIN', index=28, number=32, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_FETCHED_INCOMING', index=29, number=33, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_MSG_PROCESSING', index=30, number=34, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_MSG_DECRYPTED', index=31, number=35, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_MSG_SAVED_LOCALLY', index=32, number=36, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_MSG_DELETED_INCOMING', index=33, number=37, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_UNHANDLED_ERROR', index=34, number=38, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='IMAP_UNREAD_MAIL', index=35, number=39, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='KEYMANAGER_LOOKING_FOR_KEY', index=36, number=40, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='KEYMANAGER_KEY_FOUND', index=37, number=41, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='KEYMANAGER_KEY_NOT_FOUND', index=38, number=42, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='KEYMANAGER_STARTED_KEY_GENERATION', index=39, number=43, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='KEYMANAGER_FINISHED_KEY_GENERATION', index=40, number=44, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='KEYMANAGER_DONE_UPLOADING_KEYS', index=41, number=45, +      options=None, +      type=None), +  ], +  containing_type=None, +  options=None, +  serialized_start=557, +  serialized_end=1773,  ) @@ -93,393 +210,411 @@ SOLEDAD_DONE_DATA_SYNC = 10  UPDATER_NEW_UPDATES = 11  UPDATER_DONE_UPDATING = 12  RAISE_WINDOW = 13 +SMTP_SERVICE_STARTED = 14 +SMTP_SERVICE_FAILED_TO_START = 15 +SMTP_RECIPIENT_ACCEPTED_ENCRYPTED = 16 +SMTP_RECIPIENT_ACCEPTED_UNENCRYPTED = 17 +SMTP_RECIPIENT_REJECTED = 18 +SMTP_START_ENCRYPT_AND_SIGN = 19 +SMTP_END_ENCRYPT_AND_SIGN = 20 +SMTP_START_SIGN = 21 +SMTP_END_SIGN = 22 +SMTP_SEND_MESSAGE_START = 23 +SMTP_SEND_MESSAGE_SUCCESS = 24 +SMTP_SEND_MESSAGE_ERROR = 25 +SMTP_CONNECTION_LOST = 26 +IMAP_SERVICE_STARTED = 30 +IMAP_SERVICE_FAILED_TO_START = 31 +IMAP_CLIENT_LOGIN = 32 +IMAP_FETCHED_INCOMING = 33 +IMAP_MSG_PROCESSING = 34 +IMAP_MSG_DECRYPTED = 35 +IMAP_MSG_SAVED_LOCALLY = 36 +IMAP_MSG_DELETED_INCOMING = 37 +IMAP_UNHANDLED_ERROR = 38 +IMAP_UNREAD_MAIL = 39 +KEYMANAGER_LOOKING_FOR_KEY = 40 +KEYMANAGER_KEY_FOUND = 41 +KEYMANAGER_KEY_NOT_FOUND = 42 +KEYMANAGER_STARTED_KEY_GENERATION = 43 +KEYMANAGER_FINISHED_KEY_GENERATION = 44 +KEYMANAGER_DONE_UPLOADING_KEYS = 45  _EVENTRESPONSE_STATUS = descriptor.EnumDescriptor( -    name='Status', -    full_name='leap.common.events.EventResponse.Status', -    filename=None, -    file=DESCRIPTOR, -    values=[ -        descriptor.EnumValueDescriptor( -            name='OK', index=0, number=1, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='UNAUTH', index=1, number=2, -            options=None, -            type=None), -        descriptor.EnumValueDescriptor( -            name='ERROR', index=2, number=3, -            options=None, -            type=None), -    ], -    containing_type=None, -    options=None, -    serialized_start=515, -    serialized_end=554, +  name='Status', +  full_name='leap.common.events.EventResponse.Status', +  filename=None, +  file=DESCRIPTOR, +  values=[ +    descriptor.EnumValueDescriptor( +      name='OK', index=0, number=1, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='UNAUTH', index=1, number=2, +      options=None, +      type=None), +    descriptor.EnumValueDescriptor( +      name='ERROR', index=2, number=3, +      options=None, +      type=None), +  ], +  containing_type=None, +  options=None, +  serialized_start=515, +  serialized_end=554,  )  _SIGNALREQUEST = descriptor.Descriptor( -    name='SignalRequest', -    full_name='leap.common.events.SignalRequest', -    filename=None, -    file=DESCRIPTOR, -    containing_type=None, -    fields=[ -        descriptor.FieldDescriptor( -            name='event', full_name='leap.common.events.SignalRequest.event', index=0, -            number=1, type=14, cpp_type=8, label=2, -            has_default_value=False, default_value=1, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='content', full_name='leap.common.events.SignalRequest.content', index=1, -            number=2, type=9, cpp_type=9, label=2, -            has_default_value=False, default_value=unicode("", "utf-8"), -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='mac_method', full_name='leap.common.events.SignalRequest.mac_method', index=2, -            number=3, type=9, cpp_type=9, label=2, -            has_default_value=False, default_value=unicode("", "utf-8"), -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='mac', full_name='leap.common.events.SignalRequest.mac', index=3, -            number=4, type=12, cpp_type=9, label=2, -            has_default_value=False, default_value="", -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='enc_method', full_name='leap.common.events.SignalRequest.enc_method', index=4, -            number=5, type=9, cpp_type=9, label=1, -            has_default_value=False, default_value=unicode("", "utf-8"), -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='error_occurred', full_name='leap.common.events.SignalRequest.error_occurred', index=5, -            number=6, type=8, cpp_type=7, label=1, -            has_default_value=False, default_value=False, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -    ], -    extensions=[ -    ], -    nested_types=[], -    enum_types=[ -    ], -    options=None, -    is_extendable=False, -    extension_ranges=[], -    serialized_start=37, -    serialized_end=188, +  name='SignalRequest', +  full_name='leap.common.events.SignalRequest', +  filename=None, +  file=DESCRIPTOR, +  containing_type=None, +  fields=[ +    descriptor.FieldDescriptor( +      name='event', full_name='leap.common.events.SignalRequest.event', index=0, +      number=1, type=14, cpp_type=8, label=2, +      has_default_value=False, default_value=1, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='content', full_name='leap.common.events.SignalRequest.content', index=1, +      number=2, type=9, cpp_type=9, label=2, +      has_default_value=False, default_value=unicode("", "utf-8"), +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='mac_method', full_name='leap.common.events.SignalRequest.mac_method', index=2, +      number=3, type=9, cpp_type=9, label=2, +      has_default_value=False, default_value=unicode("", "utf-8"), +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='mac', full_name='leap.common.events.SignalRequest.mac', index=3, +      number=4, type=12, cpp_type=9, label=2, +      has_default_value=False, default_value="", +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='enc_method', full_name='leap.common.events.SignalRequest.enc_method', index=4, +      number=5, type=9, cpp_type=9, label=1, +      has_default_value=False, default_value=unicode("", "utf-8"), +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='error_occurred', full_name='leap.common.events.SignalRequest.error_occurred', index=5, +      number=6, type=8, cpp_type=7, label=1, +      has_default_value=False, default_value=False, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +  ], +  extensions=[ +  ], +  nested_types=[], +  enum_types=[ +  ], +  options=None, +  is_extendable=False, +  extension_ranges=[], +  serialized_start=37, +  serialized_end=188,  )  _REGISTERREQUEST = descriptor.Descriptor( -    name='RegisterRequest', -    full_name='leap.common.events.RegisterRequest', -    filename=None, -    file=DESCRIPTOR, -    containing_type=None, -    fields=[ -        descriptor.FieldDescriptor( -            name='event', full_name='leap.common.events.RegisterRequest.event', index=0, -            number=1, type=14, cpp_type=8, label=2, -            has_default_value=False, default_value=1, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='port', full_name='leap.common.events.RegisterRequest.port', index=1, -            number=2, type=5, cpp_type=1, label=2, -            has_default_value=False, default_value=0, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='mac_method', full_name='leap.common.events.RegisterRequest.mac_method', index=2, -            number=3, type=9, cpp_type=9, label=2, -            has_default_value=False, default_value=unicode("", "utf-8"), -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='mac', full_name='leap.common.events.RegisterRequest.mac', index=3, -            number=4, type=12, cpp_type=9, label=2, -            has_default_value=False, default_value="", -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -    ], -    extensions=[ -    ], -    nested_types=[], -    enum_types=[ -    ], -    options=None, -    is_extendable=False, -    extension_ranges=[], -    serialized_start=190, -    serialized_end=296, +  name='RegisterRequest', +  full_name='leap.common.events.RegisterRequest', +  filename=None, +  file=DESCRIPTOR, +  containing_type=None, +  fields=[ +    descriptor.FieldDescriptor( +      name='event', full_name='leap.common.events.RegisterRequest.event', index=0, +      number=1, type=14, cpp_type=8, label=2, +      has_default_value=False, default_value=1, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='port', full_name='leap.common.events.RegisterRequest.port', index=1, +      number=2, type=5, cpp_type=1, label=2, +      has_default_value=False, default_value=0, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='mac_method', full_name='leap.common.events.RegisterRequest.mac_method', index=2, +      number=3, type=9, cpp_type=9, label=2, +      has_default_value=False, default_value=unicode("", "utf-8"), +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='mac', full_name='leap.common.events.RegisterRequest.mac', index=3, +      number=4, type=12, cpp_type=9, label=2, +      has_default_value=False, default_value="", +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +  ], +  extensions=[ +  ], +  nested_types=[], +  enum_types=[ +  ], +  options=None, +  is_extendable=False, +  extension_ranges=[], +  serialized_start=190, +  serialized_end=296,  )  _UNREGISTERREQUEST = descriptor.Descriptor( -    name='UnregisterRequest', -    full_name='leap.common.events.UnregisterRequest', -    filename=None, -    file=DESCRIPTOR, -    containing_type=None, -    fields=[ -        descriptor.FieldDescriptor( -            name='event', full_name='leap.common.events.UnregisterRequest.event', index=0, -            number=1, type=14, cpp_type=8, label=2, -            has_default_value=False, default_value=1, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='port', full_name='leap.common.events.UnregisterRequest.port', index=1, -            number=2, type=5, cpp_type=1, label=2, -            has_default_value=False, default_value=0, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='mac_method', full_name='leap.common.events.UnregisterRequest.mac_method', index=2, -            number=3, type=9, cpp_type=9, label=2, -            has_default_value=False, default_value=unicode("", "utf-8"), -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='mac', full_name='leap.common.events.UnregisterRequest.mac', index=3, -            number=4, type=12, cpp_type=9, label=2, -            has_default_value=False, default_value="", -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -    ], -    extensions=[ -    ], -    nested_types=[], -    enum_types=[ -    ], -    options=None, -    is_extendable=False, -    extension_ranges=[], -    serialized_start=298, -    serialized_end=406, +  name='UnregisterRequest', +  full_name='leap.common.events.UnregisterRequest', +  filename=None, +  file=DESCRIPTOR, +  containing_type=None, +  fields=[ +    descriptor.FieldDescriptor( +      name='event', full_name='leap.common.events.UnregisterRequest.event', index=0, +      number=1, type=14, cpp_type=8, label=2, +      has_default_value=False, default_value=1, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='port', full_name='leap.common.events.UnregisterRequest.port', index=1, +      number=2, type=5, cpp_type=1, label=2, +      has_default_value=False, default_value=0, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='mac_method', full_name='leap.common.events.UnregisterRequest.mac_method', index=2, +      number=3, type=9, cpp_type=9, label=2, +      has_default_value=False, default_value=unicode("", "utf-8"), +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='mac', full_name='leap.common.events.UnregisterRequest.mac', index=3, +      number=4, type=12, cpp_type=9, label=2, +      has_default_value=False, default_value="", +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +  ], +  extensions=[ +  ], +  nested_types=[], +  enum_types=[ +  ], +  options=None, +  is_extendable=False, +  extension_ranges=[], +  serialized_start=298, +  serialized_end=406,  )  _PINGREQUEST = descriptor.Descriptor( -    name='PingRequest', -    full_name='leap.common.events.PingRequest', -    filename=None, -    file=DESCRIPTOR, -    containing_type=None, -    fields=[ -    ], -    extensions=[ -    ], -    nested_types=[], -    enum_types=[ -    ], -    options=None, -    is_extendable=False, -    extension_ranges=[], -    serialized_start=408, -    serialized_end=421, +  name='PingRequest', +  full_name='leap.common.events.PingRequest', +  filename=None, +  file=DESCRIPTOR, +  containing_type=None, +  fields=[ +  ], +  extensions=[ +  ], +  nested_types=[], +  enum_types=[ +  ], +  options=None, +  is_extendable=False, +  extension_ranges=[], +  serialized_start=408, +  serialized_end=421,  )  _EVENTRESPONSE = descriptor.Descriptor( -    name='EventResponse', -    full_name='leap.common.events.EventResponse', -    filename=None, -    file=DESCRIPTOR, -    containing_type=None, -    fields=[ -        descriptor.FieldDescriptor( -            name='status', full_name='leap.common.events.EventResponse.status', index=0, -            number=1, type=14, cpp_type=8, label=2, -            has_default_value=False, default_value=1, -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -        descriptor.FieldDescriptor( -            name='result', full_name='leap.common.events.EventResponse.result', index=1, -            number=2, type=9, cpp_type=9, label=1, -            has_default_value=False, default_value=unicode("", "utf-8"), -            message_type=None, enum_type=None, containing_type=None, -            is_extension=False, extension_scope=None, -            options=None), -    ], -    extensions=[ -    ], -    nested_types=[], -    enum_types=[ -        _EVENTRESPONSE_STATUS, -    ], -    options=None, -    is_extendable=False, -    extension_ranges=[], -    serialized_start=424, -    serialized_end=554, +  name='EventResponse', +  full_name='leap.common.events.EventResponse', +  filename=None, +  file=DESCRIPTOR, +  containing_type=None, +  fields=[ +    descriptor.FieldDescriptor( +      name='status', full_name='leap.common.events.EventResponse.status', index=0, +      number=1, type=14, cpp_type=8, label=2, +      has_default_value=False, default_value=1, +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +    descriptor.FieldDescriptor( +      name='result', full_name='leap.common.events.EventResponse.result', index=1, +      number=2, type=9, cpp_type=9, label=1, +      has_default_value=False, default_value=unicode("", "utf-8"), +      message_type=None, enum_type=None, containing_type=None, +      is_extension=False, extension_scope=None, +      options=None), +  ], +  extensions=[ +  ], +  nested_types=[], +  enum_types=[ +    _EVENTRESPONSE_STATUS, +  ], +  options=None, +  is_extendable=False, +  extension_ranges=[], +  serialized_start=424, +  serialized_end=554,  )  _SIGNALREQUEST.fields_by_name['event'].enum_type = _EVENT  _REGISTERREQUEST.fields_by_name['event'].enum_type = _EVENT  _UNREGISTERREQUEST.fields_by_name['event'].enum_type = _EVENT  _EVENTRESPONSE.fields_by_name['status'].enum_type = _EVENTRESPONSE_STATUS -_EVENTRESPONSE_STATUS.containing_type = _EVENTRESPONSE +_EVENTRESPONSE_STATUS.containing_type = _EVENTRESPONSE;  DESCRIPTOR.message_types_by_name['SignalRequest'] = _SIGNALREQUEST  DESCRIPTOR.message_types_by_name['RegisterRequest'] = _REGISTERREQUEST  DESCRIPTOR.message_types_by_name['UnregisterRequest'] = _UNREGISTERREQUEST  DESCRIPTOR.message_types_by_name['PingRequest'] = _PINGREQUEST  DESCRIPTOR.message_types_by_name['EventResponse'] = _EVENTRESPONSE -  class SignalRequest(message.Message): -    __metaclass__ = reflection.GeneratedProtocolMessageType -    DESCRIPTOR = _SIGNALREQUEST - -    # @@protoc_insertion_point(class_scope:leap.common.events.SignalRequest) +  __metaclass__ = reflection.GeneratedProtocolMessageType +  DESCRIPTOR = _SIGNALREQUEST +  # @@protoc_insertion_point(class_scope:leap.common.events.SignalRequest)  class RegisterRequest(message.Message): -    __metaclass__ = reflection.GeneratedProtocolMessageType -    DESCRIPTOR = _REGISTERREQUEST - -    # @@protoc_insertion_point(class_scope:leap.common.events.RegisterRequest) +  __metaclass__ = reflection.GeneratedProtocolMessageType +  DESCRIPTOR = _REGISTERREQUEST +  # @@protoc_insertion_point(class_scope:leap.common.events.RegisterRequest)  class UnregisterRequest(message.Message): -    __metaclass__ = reflection.GeneratedProtocolMessageType -    DESCRIPTOR = _UNREGISTERREQUEST - -    # @@protoc_insertion_point(class_scope:leap.common.events.UnregisterRequest) +  __metaclass__ = reflection.GeneratedProtocolMessageType +  DESCRIPTOR = _UNREGISTERREQUEST +  # @@protoc_insertion_point(class_scope:leap.common.events.UnregisterRequest)  class PingRequest(message.Message): -    __metaclass__ = reflection.GeneratedProtocolMessageType -    DESCRIPTOR = _PINGREQUEST - -    # @@protoc_insertion_point(class_scope:leap.common.events.PingRequest) +  __metaclass__ = reflection.GeneratedProtocolMessageType +  DESCRIPTOR = _PINGREQUEST +  # @@protoc_insertion_point(class_scope:leap.common.events.PingRequest)  class EventResponse(message.Message): -    __metaclass__ = reflection.GeneratedProtocolMessageType -    DESCRIPTOR = _EVENTRESPONSE +  __metaclass__ = reflection.GeneratedProtocolMessageType +  DESCRIPTOR = _EVENTRESPONSE -    # @@protoc_insertion_point(class_scope:leap.common.events.EventResponse) +  # @@protoc_insertion_point(class_scope:leap.common.events.EventResponse)  _EVENTSSERVERSERVICE = descriptor.ServiceDescriptor( -    name='EventsServerService', -    full_name='leap.common.events.EventsServerService', -    file=DESCRIPTOR, +  name='EventsServerService', +  full_name='leap.common.events.EventsServerService', +  file=DESCRIPTOR, +  index=0, +  options=None, +  serialized_start=1776, +  serialized_end=2125, +  methods=[ +  descriptor.MethodDescriptor( +    name='ping', +    full_name='leap.common.events.EventsServerService.ping',      index=0, +    containing_service=None, +    input_type=_PINGREQUEST, +    output_type=_EVENTRESPONSE,      options=None, -    serialized_start=919, -    serialized_end=1268, -    methods=[ -        descriptor.MethodDescriptor( -            name='ping', -            full_name='leap.common.events.EventsServerService.ping', -            index=0, -            containing_service=None, -            input_type=_PINGREQUEST, -            output_type=_EVENTRESPONSE, -            options=None, -        ), -        descriptor.MethodDescriptor( -            name='register', -            full_name='leap.common.events.EventsServerService.register', -            index=1, -            containing_service=None, -            input_type=_REGISTERREQUEST, -            output_type=_EVENTRESPONSE, -            options=None, -        ), -        descriptor.MethodDescriptor( -            name='unregister', -            full_name='leap.common.events.EventsServerService.unregister', -            index=2, -            containing_service=None, -            input_type=_UNREGISTERREQUEST, -            output_type=_EVENTRESPONSE, -            options=None, -        ), -        descriptor.MethodDescriptor( -            name='signal', -            full_name='leap.common.events.EventsServerService.signal', -            index=3, -            containing_service=None, -            input_type=_SIGNALREQUEST, -            output_type=_EVENTRESPONSE, -            options=None, -        ), -    ]) - +  ), +  descriptor.MethodDescriptor( +    name='register', +    full_name='leap.common.events.EventsServerService.register', +    index=1, +    containing_service=None, +    input_type=_REGISTERREQUEST, +    output_type=_EVENTRESPONSE, +    options=None, +  ), +  descriptor.MethodDescriptor( +    name='unregister', +    full_name='leap.common.events.EventsServerService.unregister', +    index=2, +    containing_service=None, +    input_type=_UNREGISTERREQUEST, +    output_type=_EVENTRESPONSE, +    options=None, +  ), +  descriptor.MethodDescriptor( +    name='signal', +    full_name='leap.common.events.EventsServerService.signal', +    index=3, +    containing_service=None, +    input_type=_SIGNALREQUEST, +    output_type=_EVENTRESPONSE, +    options=None, +  ), +])  class EventsServerService(service.Service): -    __metaclass__ = service_reflection.GeneratedServiceType -    DESCRIPTOR = _EVENTSSERVERSERVICE - - +  __metaclass__ = service_reflection.GeneratedServiceType +  DESCRIPTOR = _EVENTSSERVERSERVICE  class EventsServerService_Stub(EventsServerService): -    __metaclass__ = service_reflection.GeneratedServiceStubType -    DESCRIPTOR = _EVENTSSERVERSERVICE +  __metaclass__ = service_reflection.GeneratedServiceStubType +  DESCRIPTOR = _EVENTSSERVERSERVICE  _EVENTSCLIENTSERVICE = descriptor.ServiceDescriptor( -    name='EventsClientService', -    full_name='leap.common.events.EventsClientService', -    file=DESCRIPTOR, +  name='EventsClientService', +  full_name='leap.common.events.EventsClientService', +  file=DESCRIPTOR, +  index=1, +  options=None, +  serialized_start=2128, +  serialized_end=2305, +  methods=[ +  descriptor.MethodDescriptor( +    name='ping', +    full_name='leap.common.events.EventsClientService.ping', +    index=0, +    containing_service=None, +    input_type=_PINGREQUEST, +    output_type=_EVENTRESPONSE, +    options=None, +  ), +  descriptor.MethodDescriptor( +    name='signal', +    full_name='leap.common.events.EventsClientService.signal',      index=1, +    containing_service=None, +    input_type=_SIGNALREQUEST, +    output_type=_EVENTRESPONSE,      options=None, -    serialized_start=1271, -    serialized_end=1448, -    methods=[ -        descriptor.MethodDescriptor( -            name='ping', -            full_name='leap.common.events.EventsClientService.ping', -            index=0, -            containing_service=None, -            input_type=_PINGREQUEST, -            output_type=_EVENTRESPONSE, -            options=None, -        ), -        descriptor.MethodDescriptor( -            name='signal', -            full_name='leap.common.events.EventsClientService.signal', -            index=1, -            containing_service=None, -            input_type=_SIGNALREQUEST, -            output_type=_EVENTRESPONSE, -            options=None, -        ), -    ]) - +  ), +])  class EventsClientService(service.Service): -    __metaclass__ = service_reflection.GeneratedServiceType -    DESCRIPTOR = _EVENTSCLIENTSERVICE - - +  __metaclass__ = service_reflection.GeneratedServiceType +  DESCRIPTOR = _EVENTSCLIENTSERVICE  class EventsClientService_Stub(EventsClientService): -    __metaclass__ = service_reflection.GeneratedServiceStubType -    DESCRIPTOR = _EVENTSCLIENTSERVICE +  __metaclass__ = service_reflection.GeneratedServiceStubType +  DESCRIPTOR = _EVENTSCLIENTSERVICE  # @@protoc_insertion_point(module_scope) diff --git a/src/leap/common/events/server.py b/src/leap/common/events/server.py index 59f3454..861cb4f 100644 --- a/src/leap/common/events/server.py +++ b/src/leap/common/events/server.py @@ -77,18 +77,32 @@ def ensure_server(port=SERVER_PORT):          s.connect(('localhost', port))          s.close()          # port is taken, check if there's a server running there -        response = ping(port) -        if response is not None and response.status == proto.EventResponse.OK: -            logger.info('A server is already running on port %d.', port) -            return None -        # port is taken, and not by an events server -        logger.info('Port %d is taken by something not an events server.', port) -        raise PortAlreadyTaken(port) +        ping(port, +             reqcbk=lambda req, res: process_ping(port, req, res), +             timeout=10)      except socket.error:          # port is available, run a server          logger.info('Launching server on port %d.', port)          return EventsServerDaemon.ensure(port) +def process_ping(port, request, response): +    """ +    Response callback for the ping event. + +    :param port: Port that is trying to be used +    :type port: int +    :param request: Ping request made +    :type request: proto.PingRequest +    :param response: Response from the event +    :type response: proto.EventResponse +    """ +    if response is not None and response.status == proto.EventResponse.OK: +        logger.info('A server is already running on port %d.', port) +        return +    # port is taken, and not by an events server +    logger.info('Port %d is taken by something not an events server.', port) +    raise PortAlreadyTaken(port) +  def ping(port=SERVER_PORT, reqcbk=None, timeout=1000):      """ | 
