1
1
#!/usr/bin/env python3
2
-
3
2
"""
4
3
Host application of the browser extension PassFF
5
4
that wraps around the zx2c4 pass script.
6
5
"""
7
6
8
- import os , sys , json , struct , subprocess
7
+ import json
8
+ import os
9
+ import struct
10
+ import subprocess
11
+ import sys
9
12
10
13
VERSION = "_VERSIONHOLDER_"
11
14
12
- ################################################################################
13
- ######################## Begin preferences section #############################
14
- ################################################################################
15
- COMMAND = "pass"
15
+ ###############################################################################
16
+ ######################## Begin preferences section ############################
17
+ ###############################################################################
18
+ COMMAND = "pass"
16
19
COMMAND_ARGS = []
17
- COMMAND_ENV = {
20
+ COMMAND_ENV = {
18
21
"TREE_CHARSET" : "ISO-8859-1" ,
19
22
"PATH" : "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" ,
20
23
}
21
- CHARSET = "UTF-8"
22
- ################################################################################
23
- ######################### End preferences section ##############################
24
- ################################################################################
24
+ CHARSET = "UTF-8"
25
+
26
+ ###############################################################################
27
+ ######################### End preferences section #############################
28
+ ###############################################################################
29
+
25
30
26
31
def getMessage ():
27
32
""" Read a message from stdin and decode it. """
@@ -32,18 +37,21 @@ def getMessage():
32
37
message = sys .stdin .buffer .read (messageLength ).decode ("utf-8" )
33
38
return json .loads (message )
34
39
40
+
35
41
def encodeMessage (messageContent ):
36
42
""" Encode a message for transmission, given its content. """
37
43
encodedContent = json .dumps (messageContent )
38
44
encodedLength = struct .pack ('@I' , len (encodedContent ))
39
45
return {'length' : encodedLength , 'content' : encodedContent }
40
46
47
+
41
48
def sendMessage (encodedMessage ):
42
49
""" Send an encoded message to stdout. """
43
50
sys .stdout .buffer .write (encodedMessage ['length' ])
44
51
sys .stdout .write (encodedMessage ['content' ])
45
52
sys .stdout .flush ()
46
53
54
+
47
55
if __name__ == "__main__" :
48
56
# Read message from standard input
49
57
receivedMessage = getMessage ()
@@ -94,9 +102,10 @@ def sendMessage(encodedMessage):
94
102
proc = subprocess .run (cmd , ** proc_params )
95
103
96
104
# Send response
97
- sendMessage (encodeMessage ({
98
- "exitCode" : proc .returncode ,
99
- "stdout" : proc .stdout .decode (CHARSET ),
100
- "stderr" : proc .stderr .decode (CHARSET ),
101
- "version" : VERSION
102
- }))
105
+ sendMessage (
106
+ encodeMessage ({
107
+ "exitCode" : proc .returncode ,
108
+ "stdout" : proc .stdout .decode (CHARSET ),
109
+ "stderr" : proc .stderr .decode (CHARSET ),
110
+ "version" : VERSION
111
+ }))
0 commit comments