Hide cookie in process list (stop using shell=True).

This commit is contained in:
Andris Raugulis
2018-09-04 18:14:39 +03:00
parent ac0066adad
commit 1520db2cec
+15 -10
View File
@@ -24,7 +24,7 @@
THE SOFTWARE. THE SOFTWARE.
""" """
from __future__ import print_function from __future__ import print_function
import io, os, sys, re, json, base64, getpass, subprocess import io, os, sys, re, json, base64, getpass, subprocess, shlex
from lxml import etree from lxml import etree
import requests import requests
@@ -337,19 +337,24 @@ def main():
cmd = conf.get('openconnect_cmd') or 'openconnect' cmd = conf.get('openconnect_cmd') or 'openconnect'
cmd += ' --protocol=gp -u "{0}"' cmd += ' --protocol=gp -u "{0}"'
cmd += ' --usergroup portal:portal-userauthcookie' cmd += ' --usergroup portal:portal-userauthcookie'
cmd += ' --passwd-on-stdin ' + conf.get('openconnect_args') + ' "{2}"' cmd += ' --passwd-on-stdin ' + conf.get('openconnect_args') + ' "{1}"'
gateway = (conf.get('gateway') or '').strip() cmd = cmd.format(saml_username, conf.get('vpn_url'))
args = [saml_username, userauthcookie, conf.get('vpn_url')] gw = (conf.get('gateway') or '').strip()
nlbug = '\\n' if conf.get('bug.nl', '').lower() in ['1', 'true'] else '' nlbug = '\\n' if conf.get('bug.nl', '').lower() in ['1', 'true'] else ''
if len(gateway) > 0: if len(gw) > 0:
cmd = '\nprintf "' + nlbug + '{1}\\n{3}" | ' + cmd pcmd = 'printf "' + nlbug + '{0}\\n{1}"'.format(userauthcookie, gw)
args.append(gateway)
else: else:
cmd = '\nprintf "' + nlbug + '{1}" | ' + cmd pcmd = 'printf "' + nlbug + '{0}"'.format(userauthcookie)
print()
if conf.get('execute', '').lower() in ['1', 'true']: if conf.get('execute', '').lower() in ['1', 'true']:
subprocess.call(cmd.format(*args), shell=True) cmd = shlex.split(cmd)
cmd = [os.path.expandvars(os.path.expanduser(x)) for x in cmd]
pp = subprocess.Popen(shlex.split(pcmd), stdout=subprocess.PIPE)
cp = subprocess.Popen(cmd, stdin=pp.stdout, stdout=subprocess.PIPE)
pp.stdout.close()
cp.communicate()
else: else:
print(cmd.format(*args)) print('{0} | {1}'.format(pcmd, cmd))
if __name__ == '__main__': if __name__ == '__main__':