implement main method

update protobuf to spectrum 2.0.5
This commit is contained in:
Nicolas 2017-09-09 20:34:23 +02:00
parent 0c199a8231
commit d88d13d1e3
3 changed files with 330 additions and 182 deletions

View file

@ -89,6 +89,7 @@ message Room {
message RoomList { message RoomList {
repeated string room = 1; repeated string room = 1;
repeated string name = 2; repeated string name = 2;
optional string user = 3;
} }
enum ParticipantFlag { enum ParticipantFlag {
@ -111,6 +112,7 @@ message Participant {
optional string statusMessage = 6; optional string statusMessage = 6;
optional string newname = 7; optional string newname = 7;
optional string iconHash = 8; optional string iconHash = 8;
optional string alias = 9;
} }
message VCard { message VCard {
@ -152,6 +154,10 @@ message BackendConfig {
required string config = 1; required string config = 1;
} }
message APIVersion {
required int32 version = 1;
}
message WrapperMessage { message WrapperMessage {
enum Type { enum Type {
TYPE_CONNECTED = 1; TYPE_CONNECTED = 1;
@ -188,8 +194,10 @@ message WrapperMessage {
TYPE_CONV_MESSAGE_ACK = 33; TYPE_CONV_MESSAGE_ACK = 33;
TYPE_RAW_XML = 34; TYPE_RAW_XML = 34;
TYPE_BUDDIES = 35; TYPE_BUDDIES = 35;
TYPE_API_VERSION = 36;
} }
required Type type = 1; required Type type = 1;
optional bytes payload = 2; optional bytes payload = 2;
} }
; ;

File diff suppressed because one or more lines are too long

View file

@ -58,36 +58,36 @@ args, unknown = parser.parse_known_args()
YowConstants.PATH_STORAGE='/var/lib/spectrum2/' + args.j YowConstants.PATH_STORAGE='/var/lib/spectrum2/' + args.j
if args.log is None: if args.log is None:
args.log = '/var/log/spectrum2/' + args.j + '/backends/backend.log' args.log = '/var/log/spectrum2/' + args.j + '/backends/backend.log'
# Logging # Logging
logging.basicConfig( logging.basicConfig(
filename = args.log, filename = args.log,
format = "%(asctime)-15s %(levelname)s %(name)s: %(message)s", format = "%(asctime)-15s %(levelname)s %(name)s: %(message)s",
level = logging.DEBUG if args.debug else logging.INFO level = logging.DEBUG if args.debug else logging.INFO
) )
if args.config is not None: if args.config is not None:
specConf = SpectrumConfig(args.config) specConf = SpectrumConfig(args.config)
else: else:
specConf = None specConf = None
# Handler # Handler
def handleTransportData(data): def handleTransportData(data):
try: try:
plugin.handleDataRead(data) plugin.handleDataRead(data)
except SystemExit as e: except SystemExit as e:
raise e raise e
except: except:
logger = logging.getLogger('transwhat') logger = logging.getLogger('transwhat')
logger.error(traceback.format_exc()) logger.error(traceback.format_exc())
e4u.load() e4u.load()
closed = False closed = False
def connectionClosed(): def connectionClosed():
global closed global closed
closed = True closed = True
# Main # Main
io = IOChannel(args.host, args.port, handleTransportData, connectionClosed) io = IOChannel(args.host, args.port, handleTransportData, connectionClosed)
@ -95,34 +95,34 @@ io = IOChannel(args.host, args.port, handleTransportData, connectionClosed)
plugin = WhatsAppBackend(io, args.j, specConf) plugin = WhatsAppBackend(io, args.j, specConf)
plugin.handleBackendConfig({ plugin.handleBackendConfig({
'features': [ 'features': [
('send_buddies_on_login', 1), ('send_buddies_on_login', 1),
('muc', 'true'), ('muc', 'true'),
], ],
}) })
def main():
while True: while True:
try: try:
asyncore.loop(timeout=1.0, count=10, use_poll = True) asyncore.loop(timeout=1.0, count=10, use_poll = True)
try: try:
callback = YowStack._YowStack__detachedQueue.get(False) #doesn't block callback = YowStack._YowStack__detachedQueue.get(False) #doesn't block
callback() callback()
except Queue.Empty: except Queue.Empty:
pass pass
else: else:
break break
if closed: if closed:
break break
while True: while True:
try: try:
callback = threadutils.eventQueue.get_nowait() callback = threadutils.eventQueue.get_nowait()
except Queue.Empty: except Queue.Empty:
break break
else: else:
callback() callback()
except SystemExit: except SystemExit:
break break
except: except:
logger = logging.getLogger('transwhat') logger = logging.getLogger('transwhat')
logger.error(traceback.format_exc()) logger.error(traceback.format_exc())