From 65b9275667feb3451813e940dd06640adadc7b80 Mon Sep 17 00:00:00 2001 From: Babil Golam Sarwar Date: Mon, 28 May 2018 11:17:47 +0100 Subject: [PATCH] Add native message maker --- native/gen_native_message.py | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 native/gen_native_message.py diff --git a/native/gen_native_message.py b/native/gen_native_message.py new file mode 100755 index 00000000..0071eeb6 --- /dev/null +++ b/native/gen_native_message.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import sys +import json +import struct + + +def usage(): + """Show usage and exit with non-zero status.""" + sys.stderr.write( + "\n[+] Usage: %s cmd [command] | %s\n" + % (os.path.basename(__file__), "native_main.py") + ) + + sys.stderr.write("\n - Note: Use '..' as key-value separator") + sys.stderr.write( + "\n - Example: %s %s %s %s | %s\n" + % ( + os.path.basename(__file__), + "cmd..win_restart_firefox", + "profiledir..auto", + "browser..firefox", + "native_main.py", + ) + ) + + exit(-1) + + +if __name__ == "__main__": + """Main functionalities are here for now.""" + separator = ".." + msg = dict() + if len(sys.argv) > 1: + for i in range(1, len(sys.argv)): + key = sys.argv[i].strip().split(separator)[0] + val = sys.argv[i].strip().split(separator)[1] + msg[key] = val + + if len(sys.argv) == 1: + usage() + + msg = json.dumps(msg) + msg = "\r\n" + msg + "\r\n" + msg = msg.encode("utf-8") + packed_len = struct.pack("@I", len(msg)) + + sys.stdout.buffer.write(packed_len + msg) + sys.stdout.flush()