From ad101705ae1a16036404092848789472cd70e006 Mon Sep 17 00:00:00 2001 From: drebs Date: Tue, 19 Mar 2013 11:23:58 -0300 Subject: Add notification .proto file. --- src/leap/common/ipc/Makefile | 30 +++++++ src/leap/common/ipc/notification.proto | 23 ++++++ src/leap/common/ipc/notification_pb2.py | 135 ++++++++++++++++++++++++++++++++ 3 files changed, 188 insertions(+) create mode 100644 src/leap/common/ipc/Makefile create mode 100644 src/leap/common/ipc/notification.proto create mode 100644 src/leap/common/ipc/notification_pb2.py diff --git a/src/leap/common/ipc/Makefile b/src/leap/common/ipc/Makefile new file mode 100644 index 0000000..7c01fc6 --- /dev/null +++ b/src/leap/common/ipc/Makefile @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Makefile +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# This file is used to generate protobuf python files that are used for IPC: +# +# https://developers.google.com/protocol-buffers/docs/pythontutorial + +PROTOC = protoc + +all: notification_pb2.py + +%_pb2.py: %.proto + $(PROTOC) --python_out=./ $< + +clean: + rm -f *_pb2.py diff --git a/src/leap/common/ipc/notification.proto b/src/leap/common/ipc/notification.proto new file mode 100644 index 0000000..4ae0406 --- /dev/null +++ b/src/leap/common/ipc/notification.proto @@ -0,0 +1,23 @@ +// https://developers.google.com/protocol-buffers/docs/pythontutorial +// https://developers.google.com/protocol-buffers/docs/reference/python-generated + +package leap.common; + +message Notification { + + enum Component { + client = 0; + soledad = 1; + eip = 2; + smtp_relay = 3; + mx = 4; + } + + required int32 id = 1; + required Component component = 2; + required string content = 3; + required string mac_method = 4; + required bytes mac = 5; + optional string enc_method = 6; + optional bool error_occurred = 7; +} diff --git a/src/leap/common/ipc/notification_pb2.py b/src/leap/common/ipc/notification_pb2.py new file mode 100644 index 0000000..a1c285f --- /dev/null +++ b/src/leap/common/ipc/notification_pb2.py @@ -0,0 +1,135 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: notification.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='notification.proto', + package='leap.common', + serialized_pb='\n\x12notification.proto\x12\x0bleap.common\"\xf7\x01\n\x0cNotification\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x36\n\tcomponent\x18\x02 \x02(\x0e\x32#.leap.common.Notification.Component\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\t\x12\x12\n\nmac_method\x18\x04 \x02(\t\x12\x0b\n\x03mac\x18\x05 \x02(\x0c\x12\x12\n\nenc_method\x18\x06 \x01(\t\x12\x16\n\x0e\x65rror_occurred\x18\x07 \x01(\x08\"E\n\tComponent\x12\n\n\x06\x63lient\x10\x00\x12\x0b\n\x07soledad\x10\x01\x12\x07\n\x03\x65ip\x10\x02\x12\x0e\n\nsmtp_relay\x10\x03\x12\x06\n\x02mx\x10\x04') + + + +_NOTIFICATION_COMPONENT = _descriptor.EnumDescriptor( + name='Component', + full_name='leap.common.Notification.Component', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='client', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='soledad', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='eip', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='smtp_relay', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='mx', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=214, + serialized_end=283, +) + + +_NOTIFICATION = _descriptor.Descriptor( + name='Notification', + full_name='leap.common.Notification', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='leap.common.Notification.id', index=0, + number=1, 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='component', full_name='leap.common.Notification.component', index=1, + number=2, type=14, cpp_type=8, 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='content', full_name='leap.common.Notification.content', 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_method', full_name='leap.common.Notification.mac_method', index=3, + number=4, 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.Notification.mac', index=4, + number=5, 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.Notification.enc_method', index=5, + number=6, 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.Notification.error_occurred', index=6, + number=7, 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=[ + _NOTIFICATION_COMPONENT, + ], + options=None, + is_extendable=False, + extension_ranges=[], + serialized_start=36, + serialized_end=283, +) + +_NOTIFICATION.fields_by_name['component'].enum_type = _NOTIFICATION_COMPONENT +_NOTIFICATION_COMPONENT.containing_type = _NOTIFICATION; +DESCRIPTOR.message_types_by_name['Notification'] = _NOTIFICATION + +class Notification(_message.Message): + __metaclass__ = _reflection.GeneratedProtocolMessageType + DESCRIPTOR = _NOTIFICATION + + # @@protoc_insertion_point(class_scope:leap.common.Notification) + + +# @@protoc_insertion_point(module_scope) -- cgit v1.2.3 From a16d533125d4fc1c40ee85ad2e626d7373e7719a Mon Sep 17 00:00:00 2001 From: drebs Date: Wed, 20 Mar 2013 13:12:00 -0300 Subject: Change protobuf message name. --- src/leap/common/events/Makefile | 30 ++++ src/leap/common/events/signal.proto | 57 ++++++++ src/leap/common/events/signal_pb2.py | 250 ++++++++++++++++++++++++++++++++ src/leap/common/ipc/Makefile | 30 ---- src/leap/common/ipc/notification.proto | 23 --- src/leap/common/ipc/notification_pb2.py | 135 ----------------- 6 files changed, 337 insertions(+), 188 deletions(-) create mode 100644 src/leap/common/events/Makefile create mode 100644 src/leap/common/events/signal.proto create mode 100644 src/leap/common/events/signal_pb2.py delete mode 100644 src/leap/common/ipc/Makefile delete mode 100644 src/leap/common/ipc/notification.proto delete mode 100644 src/leap/common/ipc/notification_pb2.py diff --git a/src/leap/common/events/Makefile b/src/leap/common/events/Makefile new file mode 100644 index 0000000..4f99f35 --- /dev/null +++ b/src/leap/common/events/Makefile @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Makefile +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# This file is used to generate protobuf python files that are used for IPC: +# +# https://developers.google.com/protocol-buffers/docs/pythontutorial + +PROTOC = protoc + +all: signal_pb2.py + +%_pb2.py: %.proto + $(PROTOC) --python_out=./ $< + +clean: + rm -f *_pb2.py diff --git a/src/leap/common/events/signal.proto b/src/leap/common/events/signal.proto new file mode 100644 index 0000000..336471c --- /dev/null +++ b/src/leap/common/events/signal.proto @@ -0,0 +1,57 @@ +// signal.proto +// Copyright (C) 2013 LEA +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package leap.common.events; + +message SignalRequest { + + enum Signal { + CLIENT_SESSION_ID = 1; + CLIENT_UID = 2; + SOLEDAD_CREATING_KEYS = 3; + SOLEDAD_DONE_CREATING_KEYS = 4; + SOLEDAD_UPLOADING_KEYS = 5; + SOLEDAD_DONE_UPLOADING_KEYS = 6; + SOLEDAD_DOWNLOADING_KEYS = 7; + SOLEDAD_DONE_DOWNLOADING_KEYS = 8; + SOLEDAD_NEW_DATA_TO_SYNC = 9; + SOLEDAD_DONE_DATA_SYNC = 10; + } + + required int32 id = 1; + required Signal signal = 2; + required string content = 3; + required string mac_method = 4; + required bytes mac = 5; + optional string enc_method = 6; + optional bool error_occurred = 7; +} + +message SignalResponse { + + enum Status { + OK = 1; + UNAUTH = 2; + ERROR = 3; + } + + required int32 id = 1; + required Status status = 2; +} + +service SignalService { + rpc signal(SignalRequest) returns (SignalResponse); +} diff --git a/src/leap/common/events/signal_pb2.py b/src/leap/common/events/signal_pb2.py new file mode 100644 index 0000000..b21676f --- /dev/null +++ b/src/leap/common/events/signal_pb2.py @@ -0,0 +1,250 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! + +from google.protobuf import descriptor +from google.protobuf import message +from google.protobuf import reflection +from google.protobuf import service +from google.protobuf import service_reflection +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + + +DESCRIPTOR = descriptor.FileDescriptor( + name='signal.proto', + package='leap.common.events', + serialized_pb='\n\x0csignal.proto\x12\x12leap.common.events\"\xd8\x03\n\rSignalRequest\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x38\n\x06signal\x18\x02 \x02(\x0e\x32(.leap.common.events.SignalRequest.Signal\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\t\x12\x12\n\nmac_method\x18\x04 \x02(\t\x12\x0b\n\x03mac\x18\x05 \x02(\x0c\x12\x12\n\nenc_method\x18\x06 \x01(\t\x12\x16\n\x0e\x65rror_occurred\x18\x07 \x01(\x08\"\xa2\x02\n\x06Signal\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\"\x80\x01\n\x0eSignalResponse\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x39\n\x06status\x18\x02 \x02(\x0e\x32).leap.common.events.SignalResponse.Status\"\'\n\x06Status\x12\x06\n\x02OK\x10\x01\x12\n\n\x06UNAUTH\x10\x02\x12\t\n\x05\x45RROR\x10\x03\x32`\n\rSignalService\x12O\n\x06signal\x12!.leap.common.events.SignalRequest\x1a\".leap.common.events.SignalResponse') + + + +_SIGNALREQUEST_SIGNAL = descriptor.EnumDescriptor( + name='Signal', + full_name='leap.common.events.SignalRequest.Signal', + 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), + ], + containing_type=None, + options=None, + serialized_start=219, + serialized_end=509, +) + +_SIGNALRESPONSE_STATUS = descriptor.EnumDescriptor( + name='Status', + full_name='leap.common.events.SignalResponse.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=601, + serialized_end=640, +) + + +_SIGNALREQUEST = descriptor.Descriptor( + name='SignalRequest', + full_name='leap.common.events.SignalRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + descriptor.FieldDescriptor( + name='id', full_name='leap.common.events.SignalRequest.id', index=0, + number=1, 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='signal', full_name='leap.common.events.SignalRequest.signal', index=1, + number=2, 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=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_method', full_name='leap.common.events.SignalRequest.mac_method', index=3, + number=4, 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=4, + number=5, 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=5, + number=6, 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=6, + number=7, 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=[ + _SIGNALREQUEST_SIGNAL, + ], + options=None, + is_extendable=False, + extension_ranges=[], + serialized_start=37, + serialized_end=509, +) + + +_SIGNALRESPONSE = descriptor.Descriptor( + name='SignalResponse', + full_name='leap.common.events.SignalResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + descriptor.FieldDescriptor( + name='id', full_name='leap.common.events.SignalResponse.id', index=0, + number=1, 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='status', full_name='leap.common.events.SignalResponse.status', index=1, + number=2, 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), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _SIGNALRESPONSE_STATUS, + ], + options=None, + is_extendable=False, + extension_ranges=[], + serialized_start=512, + serialized_end=640, +) + + +_SIGNALREQUEST.fields_by_name['signal'].enum_type = _SIGNALREQUEST_SIGNAL +_SIGNALREQUEST_SIGNAL.containing_type = _SIGNALREQUEST; +_SIGNALRESPONSE.fields_by_name['status'].enum_type = _SIGNALRESPONSE_STATUS +_SIGNALRESPONSE_STATUS.containing_type = _SIGNALRESPONSE; + +class SignalRequest(message.Message): + __metaclass__ = reflection.GeneratedProtocolMessageType + DESCRIPTOR = _SIGNALREQUEST + + # @@protoc_insertion_point(class_scope:leap.common.events.SignalRequest) + +class SignalResponse(message.Message): + __metaclass__ = reflection.GeneratedProtocolMessageType + DESCRIPTOR = _SIGNALRESPONSE + + # @@protoc_insertion_point(class_scope:leap.common.events.SignalResponse) + + +_SIGNALSERVICE = descriptor.ServiceDescriptor( + name='SignalService', + full_name='leap.common.events.SignalService', + file=DESCRIPTOR, + index=0, + options=None, + serialized_start=642, + serialized_end=738, + methods=[ + descriptor.MethodDescriptor( + name='signal', + full_name='leap.common.events.SignalService.signal', + index=0, + containing_service=None, + input_type=_SIGNALREQUEST, + output_type=_SIGNALRESPONSE, + options=None, + ), +]) + +class SignalService(service.Service): + __metaclass__ = service_reflection.GeneratedServiceType + DESCRIPTOR = _SIGNALSERVICE +class SignalService_Stub(SignalService): + __metaclass__ = service_reflection.GeneratedServiceStubType + DESCRIPTOR = _SIGNALSERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/src/leap/common/ipc/Makefile b/src/leap/common/ipc/Makefile deleted file mode 100644 index 7c01fc6..0000000 --- a/src/leap/common/ipc/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Makefile -# Copyright (C) 2013 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# This file is used to generate protobuf python files that are used for IPC: -# -# https://developers.google.com/protocol-buffers/docs/pythontutorial - -PROTOC = protoc - -all: notification_pb2.py - -%_pb2.py: %.proto - $(PROTOC) --python_out=./ $< - -clean: - rm -f *_pb2.py diff --git a/src/leap/common/ipc/notification.proto b/src/leap/common/ipc/notification.proto deleted file mode 100644 index 4ae0406..0000000 --- a/src/leap/common/ipc/notification.proto +++ /dev/null @@ -1,23 +0,0 @@ -// https://developers.google.com/protocol-buffers/docs/pythontutorial -// https://developers.google.com/protocol-buffers/docs/reference/python-generated - -package leap.common; - -message Notification { - - enum Component { - client = 0; - soledad = 1; - eip = 2; - smtp_relay = 3; - mx = 4; - } - - required int32 id = 1; - required Component component = 2; - required string content = 3; - required string mac_method = 4; - required bytes mac = 5; - optional string enc_method = 6; - optional bool error_occurred = 7; -} diff --git a/src/leap/common/ipc/notification_pb2.py b/src/leap/common/ipc/notification_pb2.py deleted file mode 100644 index a1c285f..0000000 --- a/src/leap/common/ipc/notification_pb2.py +++ /dev/null @@ -1,135 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: notification.proto - -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='notification.proto', - package='leap.common', - serialized_pb='\n\x12notification.proto\x12\x0bleap.common\"\xf7\x01\n\x0cNotification\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x36\n\tcomponent\x18\x02 \x02(\x0e\x32#.leap.common.Notification.Component\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\t\x12\x12\n\nmac_method\x18\x04 \x02(\t\x12\x0b\n\x03mac\x18\x05 \x02(\x0c\x12\x12\n\nenc_method\x18\x06 \x01(\t\x12\x16\n\x0e\x65rror_occurred\x18\x07 \x01(\x08\"E\n\tComponent\x12\n\n\x06\x63lient\x10\x00\x12\x0b\n\x07soledad\x10\x01\x12\x07\n\x03\x65ip\x10\x02\x12\x0e\n\nsmtp_relay\x10\x03\x12\x06\n\x02mx\x10\x04') - - - -_NOTIFICATION_COMPONENT = _descriptor.EnumDescriptor( - name='Component', - full_name='leap.common.Notification.Component', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='client', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='soledad', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='eip', index=2, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='smtp_relay', index=3, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='mx', index=4, number=4, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=214, - serialized_end=283, -) - - -_NOTIFICATION = _descriptor.Descriptor( - name='Notification', - full_name='leap.common.Notification', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='leap.common.Notification.id', index=0, - number=1, 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='component', full_name='leap.common.Notification.component', index=1, - number=2, type=14, cpp_type=8, 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='content', full_name='leap.common.Notification.content', 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_method', full_name='leap.common.Notification.mac_method', index=3, - number=4, 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.Notification.mac', index=4, - number=5, 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.Notification.enc_method', index=5, - number=6, 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.Notification.error_occurred', index=6, - number=7, 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=[ - _NOTIFICATION_COMPONENT, - ], - options=None, - is_extendable=False, - extension_ranges=[], - serialized_start=36, - serialized_end=283, -) - -_NOTIFICATION.fields_by_name['component'].enum_type = _NOTIFICATION_COMPONENT -_NOTIFICATION_COMPONENT.containing_type = _NOTIFICATION; -DESCRIPTOR.message_types_by_name['Notification'] = _NOTIFICATION - -class Notification(_message.Message): - __metaclass__ = _reflection.GeneratedProtocolMessageType - DESCRIPTOR = _NOTIFICATION - - # @@protoc_insertion_point(class_scope:leap.common.Notification) - - -# @@protoc_insertion_point(module_scope) -- cgit v1.2.3 From 0e6d6850d3c3df67eba054398fa84cd8b9977ecd Mon Sep 17 00:00:00 2001 From: drebs Date: Wed, 20 Mar 2013 13:12:50 -0300 Subject: Add callback registering. --- src/leap/common/events/__init__.py | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/leap/common/events/__init__.py diff --git a/src/leap/common/events/__init__.py b/src/leap/common/events/__init__.py new file mode 100644 index 0000000..27542a9 --- /dev/null +++ b/src/leap/common/events/__init__.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# __init__.py +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from leap.common.events import ( + signal_pb2, +) + + +# the `registered_callbacks` dictionary below should have the following +# format: +# +# { component: [ (uid, callback), ... ], ... } +# +registered_callbacks = {} + + +def register(signal, callback, uid=None, replace=False): + """ + Registers `callback` to be called when `signal` is signaled. + """ + if not registered_callbacks.has_key(signal): + registered_callbacks[signal] = [] + cbklist = registered_callbacks[signal] + if uid and filter(lambda (x,y): x == uid, cbklist): + # TODO: create appropriate exception + if not replace: + raise Exception("Callback already registered.") + else: + registered_callbacks[signal] = filter(lambda(x,y): x != uid, + cbklist) + registered_callbacks[signal].append((uid, callback)) + return uid + +#def get_registered_callbacks(): +# return registered_callbacks + +#__all__ = ['signal_pb2', 'service', 'register', 'registered_callbacks'] -- cgit v1.2.3 From 687b2a8aaa3f1aec29a0d8e41e08cc9fda04d46b Mon Sep 17 00:00:00 2001 From: drebs Date: Wed, 20 Mar 2013 13:13:23 -0300 Subject: Add service for receiving signal. --- src/leap/common/events/service.py | 114 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/leap/common/events/service.py diff --git a/src/leap/common/events/service.py b/src/leap/common/events/service.py new file mode 100644 index 0000000..fda45b2 --- /dev/null +++ b/src/leap/common/events/service.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# service.py +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import logging +import threading +from protobuf.socketrpc.server import ( + SocketRpcServer, + ThreadedTCPServer, + SocketHandler, +) +from leap.common.events import ( + signal_pb2 as proto, + registered_callbacks, +) + + +logger = logging.getLogger(__name__) + + +class SignalRpcServer(SocketRpcServer): + + def __init__(self, port, host='localhost'): + '''port - Port this server is started on''' + self.port = port + self.host = host + self.serviceMap = {} + self.server = None + + def run(self): + '''Activate the server.''' + logger.info('Running server on port %d' % self.port) + self.server = ThreadedTCPServer((self.host, self.port), + SocketHandler, self) + self.server.serve_forever() + + def stop(self): + self.server.shutdown() + + +class SignalService(proto.SignalService): + ''' + Handles signaling for LEAP components. + ''' + + def signal(self, controller, request, done): + logger.info('Received signal.') + + # Run registered callbacks + if registered_callbacks.has_key(request.signal): + for (_, cbk) in registered_callbacks[request.signal]: + cbk(request) + + # Create response message + response = proto.SignalResponse() + # TODO: change id for something meaningful + response.id = 1 + response.status = proto.SignalResponse.OK + + # Call provided callback with response message + done.run(response) + + +class SignalServiceThread(threading.Thread): + """ + Singleton class for starting a server thread + """ + + # Singleton instance + _instance = None + + def __init__(self, port): + super(SignalServiceThread, self).__init__() + self._service = SignalService() + self._port = port + self._server = SignalRpcServer(self._port) + self._server.registerService(self._service) + self.setDaemon(True) + + @staticmethod + def start_service(port): + """ + Start the singleton instance if not already running + Will not exit until the process ends + """ + if SignalServiceThread._instance == None: + SignalServiceThread._instance = SignalServiceThread(port) + SignalServiceThread._instance.start() + elif port != SignalServiceThread._instance._port: + # TODO: make this exception more self-explanatory + raise Exception() + return SignalServiceThread._instance + + def get_instance(self): + return self._instance + + def run(self): + self._server.run() + + def stop(self): + self._server.stop() -- cgit v1.2.3 From b966eec96fd3621908baab8697de8e2ed61ba136 Mon Sep 17 00:00:00 2001 From: drebs Date: Wed, 20 Mar 2013 13:14:10 -0300 Subject: Add tests for registering signals. --- src/leap/common/events/test_events.py | 88 +++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/leap/common/events/test_events.py diff --git a/src/leap/common/events/test_events.py b/src/leap/common/events/test_events.py new file mode 100644 index 0000000..ae55319 --- /dev/null +++ b/src/leap/common/events/test_events.py @@ -0,0 +1,88 @@ +import unittest +from protobuf.socketrpc import RpcService +from leap.common import events +from leap.common.events import service +from leap.common.events.signal_pb2 import ( + SignalRequest, + SignalService, + SignalService_Stub, +) + + +port = 8090 + +class EventsTestCase(unittest.TestCase): + + def _start_service(self): + return service.SignalServiceThread.start_service(port) + + def setUp(self): + super(EventsTestCase, self).setUp() + self._service = self._start_service() + + def tearDown(self): + events.registered_callbacks = {} + super(EventsTestCase, self).tearDown() + + def test_service_singleton(self): + self.assertTrue(self._service.get_instance() == self._service, + "Can't get singleton class for service.") + + def test_register_signal(self): + key = SignalRequest.SOLEDAD_CREATING_KEYS + self.assertEqual({}, events.registered_callbacks, + 'There should be no registered_callbacks events when ' + 'service has just started.') + events.register(key, lambda x: True) + self.assertEqual(1, len(events.registered_callbacks), + 'Wrong number of registered callbacks.') + self.assertEqual(events.registered_callbacks.keys(), [key], + 'Couldn\'t locate registered signal.') + events.register(key, lambda x: True) + self.assertEqual(1, len(events.registered_callbacks), + 'Wrong number of registered callbacks.') + self.assertEqual(events.registered_callbacks.keys(), [key], + 'Couldn\'t locate registered signal.') + self.assertEqual( + 2, + len(events.registered_callbacks[SignalRequest.SOLEDAD_CREATING_KEYS]), + 'Wrong number of registered callbacks.') + key2 = SignalRequest.CLIENT_UID + events.register(key2, lambda x: True) + self.assertEqual(2, len(events.registered_callbacks), + 'Wrong number of registered callbacks.') + self.assertEqual( + sorted(events.registered_callbacks.keys()), + sorted([key2, key]), + 'Wrong keys in `registered_keys`.') + + def test_register_signal_replace(self): + key = SignalRequest.SOLEDAD_CREATING_KEYS + cbk = lambda x: True + self.assertEqual({}, events.registered_callbacks, + 'There should be no registered_callbacks events when ' + 'service has just started.') + events.register(key, cbk, uid=1) + self.assertRaises(Exception, events.register, key, lambda x: True, uid=1) + self.assertEquals(1, + events.register(key, lambda x: True, uid=1, replace=True), + "Could not replace callback.") + self.assertEqual(1, len(events.registered_callbacks), + 'Wrong number of registered callbacks.') + self.assertEqual(events.registered_callbacks.keys(), [key], + 'Couldn\'t locate registered signal.') + + def test_signal_response_status(self): + sig = SignalRequest.SOLEDAD_CREATING_KEYS + cbk = lambda x: True + events.register(sig, cbk) + request = SignalRequest() + request.id = 1 + request.signal = sig + request.content = 'my signal contents' + request.mac_method = 'nomac' + request.mac = "" + service = RpcService(SignalService_Stub, port, 'localhost') + response = service.signal(request, timeout=1000) + self.assertEqual(response.OK, response.status, + 'Wrong response status.') -- cgit v1.2.3 From 396de6ae9ec3c05c9ce8c48f0d74021773b22102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 28 Jun 2013 14:50:28 -0300 Subject: Fold in changes for 0.2.2 --- CHANGELOG | 21 +++++++++++++++++++++ changes/bug-3029_default-localization-language | 2 -- changes/bug_add-data-files | 1 - changes/bug_allow-absolute-paths | 1 - changes/bug_fix-deprecation-warning | 1 - ...fix-do-not-attempt-to-fetch-privkeys-from-server | 1 - changes/bug_fix-imports | 1 - changes/feature_add-events-ungerister | 1 - changes/feature_events_signals | 1 - changes/feature_improve_which | 2 -- changes/feature_key-manager | 1 - ...e_move-symmetric-encryption-code-to-leap.soledad | 1 - changes/feature_openpgp-context-manager | 1 - changes/feature_openpgp-sign-verify | 1 - changes/feature_raise-window-event | 1 - .../feature_use-pycrypto-for-symmetric-encryption | 1 - 16 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 CHANGELOG delete mode 100644 changes/bug-3029_default-localization-language delete mode 100644 changes/bug_add-data-files delete mode 100644 changes/bug_allow-absolute-paths delete mode 100644 changes/bug_fix-deprecation-warning delete mode 100644 changes/bug_fix-do-not-attempt-to-fetch-privkeys-from-server delete mode 100644 changes/bug_fix-imports delete mode 100644 changes/feature_add-events-ungerister delete mode 100644 changes/feature_events_signals delete mode 100644 changes/feature_improve_which delete mode 100644 changes/feature_key-manager delete mode 100644 changes/feature_move-symmetric-encryption-code-to-leap.soledad delete mode 100644 changes/feature_openpgp-context-manager delete mode 100644 changes/feature_openpgp-sign-verify delete mode 100644 changes/feature_raise-window-event delete mode 100644 changes/feature_use-pycrypto-for-symmetric-encryption diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..5f9cb69 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,21 @@ +0.2.2 Jun 28: + o Bugfix: use the provider's default language as default + string. Also take care (and note) a possible case with a + problematic provider misconfiguration. Closes #3029. + o Add data files to setup and manifest (certificates for tests) + o Allow absolute paths in baseconfig.load + o Fix deprecation warnings + o Fix attempt to fetch private keys from server. + o Fix missing imports + o Add possibility of unregistering callbacks for a signal. + o Add a mechanism for events signaling between components. + o Prioritize the path_extension in the which method so it finds our + bundled app before the system one, if any. + o Move the Key Manager to leap client repository. + o Move symmetric encryption code to leap.soledad. + o Refactor opengpg utility functions implementation so it uses a + context manager. + o Add OpenPGP sign/verify + o Add RAISE_WINDOW event + o Add AES-256 (CTR mode) encrypting/decrypting functions using + PyCrypto. diff --git a/changes/bug-3029_default-localization-language b/changes/bug-3029_default-localization-language deleted file mode 100644 index 1fbb464..0000000 --- a/changes/bug-3029_default-localization-language +++ /dev/null @@ -1,2 +0,0 @@ - o Bugfix: use the provider's default language as default string. Also take care (and note) a possible case with a problematic provider -misconfiguration. Closes #3029. diff --git a/changes/bug_add-data-files b/changes/bug_add-data-files deleted file mode 100644 index 5231fb8..0000000 --- a/changes/bug_add-data-files +++ /dev/null @@ -1 +0,0 @@ - o Add data files to setup and manifest (certificates for tests) diff --git a/changes/bug_allow-absolute-paths b/changes/bug_allow-absolute-paths deleted file mode 100644 index deaff1f..0000000 --- a/changes/bug_allow-absolute-paths +++ /dev/null @@ -1 +0,0 @@ - o Allow absolute paths in baseconfig.load diff --git a/changes/bug_fix-deprecation-warning b/changes/bug_fix-deprecation-warning deleted file mode 100644 index ac58117..0000000 --- a/changes/bug_fix-deprecation-warning +++ /dev/null @@ -1 +0,0 @@ - o Fix deprecation warnings diff --git a/changes/bug_fix-do-not-attempt-to-fetch-privkeys-from-server b/changes/bug_fix-do-not-attempt-to-fetch-privkeys-from-server deleted file mode 100644 index 4c8c0eb..0000000 --- a/changes/bug_fix-do-not-attempt-to-fetch-privkeys-from-server +++ /dev/null @@ -1 +0,0 @@ - o Fix attempt to fetch private keys from server. diff --git a/changes/bug_fix-imports b/changes/bug_fix-imports deleted file mode 100644 index 509f2f4..0000000 --- a/changes/bug_fix-imports +++ /dev/null @@ -1 +0,0 @@ - o Fix missing imports diff --git a/changes/feature_add-events-ungerister b/changes/feature_add-events-ungerister deleted file mode 100644 index 0f17626..0000000 --- a/changes/feature_add-events-ungerister +++ /dev/null @@ -1 +0,0 @@ - o Add possibility of unregistering callbacks for a signal. diff --git a/changes/feature_events_signals b/changes/feature_events_signals deleted file mode 100644 index ae0b7b0..0000000 --- a/changes/feature_events_signals +++ /dev/null @@ -1 +0,0 @@ - o Add a mechanism for events signaling between components. diff --git a/changes/feature_improve_which b/changes/feature_improve_which deleted file mode 100644 index d1d1fb5..0000000 --- a/changes/feature_improve_which +++ /dev/null @@ -1,2 +0,0 @@ - o Prioritize the path_extension in the which method so it finds our bundled - app before the system one, if any. diff --git a/changes/feature_key-manager b/changes/feature_key-manager deleted file mode 100644 index 47a62ed..0000000 --- a/changes/feature_key-manager +++ /dev/null @@ -1 +0,0 @@ - o Move the Key Manager to leap client repository. diff --git a/changes/feature_move-symmetric-encryption-code-to-leap.soledad b/changes/feature_move-symmetric-encryption-code-to-leap.soledad deleted file mode 100644 index 1541362..0000000 --- a/changes/feature_move-symmetric-encryption-code-to-leap.soledad +++ /dev/null @@ -1 +0,0 @@ - o Move symmetric encryption code to leap.soledad. diff --git a/changes/feature_openpgp-context-manager b/changes/feature_openpgp-context-manager deleted file mode 100644 index 4dbf759..0000000 --- a/changes/feature_openpgp-context-manager +++ /dev/null @@ -1 +0,0 @@ - o Refactor opengpg utility functions implementation so it uses a context manager. diff --git a/changes/feature_openpgp-sign-verify b/changes/feature_openpgp-sign-verify deleted file mode 100644 index 9422edc..0000000 --- a/changes/feature_openpgp-sign-verify +++ /dev/null @@ -1 +0,0 @@ - o Add OpenPGP sign/verify diff --git a/changes/feature_raise-window-event b/changes/feature_raise-window-event deleted file mode 100644 index 382ff3f..0000000 --- a/changes/feature_raise-window-event +++ /dev/null @@ -1 +0,0 @@ - o Add RAISE_WINDOW event diff --git a/changes/feature_use-pycrypto-for-symmetric-encryption b/changes/feature_use-pycrypto-for-symmetric-encryption deleted file mode 100644 index 5448483..0000000 --- a/changes/feature_use-pycrypto-for-symmetric-encryption +++ /dev/null @@ -1 +0,0 @@ - o Add AES-256 (CTR mode) encrypting/decrypting functions using PyCrypto. -- cgit v1.2.3