|
@@ -5,6 +5,8 @@ from slicer.ScriptedLoadableModule import *
|
|
|
import slicerNetwork
|
|
|
import loadDicom
|
|
|
import json
|
|
|
+import zipfile
|
|
|
+import pathlib
|
|
|
|
|
|
#
|
|
|
# labkeySlicerPythonExtension
|
|
@@ -69,7 +71,8 @@ class labkeyBrowserWidget(ScriptedLoadableModuleWidget):
|
|
|
|
|
|
self.privateKeyButton=qt.QPushButton("Load")
|
|
|
self.privateKeyButton.toolTip="Load private key"
|
|
|
- self.privateKeyButton.connect('clicked(bool)',self.onPrivateKeyButtonClicked)
|
|
|
+ self.privateKeyButton.connect('clicked(bool)',\
|
|
|
+ self.onPrivateKeyButtonClicked)
|
|
|
|
|
|
connectionFormLayout.addRow("Private key:",self.privateKeyButton)
|
|
|
|
|
@@ -82,9 +85,17 @@ class labkeyBrowserWidget(ScriptedLoadableModuleWidget):
|
|
|
|
|
|
self.loadConfigButton=qt.QPushButton("Load configuration")
|
|
|
self.loadConfigButton.toolTip="Load configuration"
|
|
|
- self.loadConfigButton.connect('clicked(bool)',self.onLoadConfigButtonClicked)
|
|
|
+ self.loadConfigButton.connect('clicked(bool)',\
|
|
|
+ self.onLoadConfigButtonClicked)
|
|
|
connectionFormLayout.addRow("Configuration:",self.loadConfigButton)
|
|
|
|
|
|
+ self.loadZipButton=qt.QPushButton("Load certificates (.zip)")
|
|
|
+ self.loadZipButton.toolTip="Load certificates from zip file"
|
|
|
+ self.loadZipButton.connect('clicked(bool)',\
|
|
|
+ self.onLoadZipButtonClicked)
|
|
|
+ connectionFormLayout.addRow("Load certificates (merlin):",\
|
|
|
+ self.loadZipButton)
|
|
|
+
|
|
|
self.saveConfigButton=qt.QPushButton("Save configuration")
|
|
|
self.saveConfigButton.toolTip="Save configuration"
|
|
|
self.saveConfigButton.clicked.connect(self.onSaveConfigButtonClicked)
|
|
@@ -259,7 +270,39 @@ class labkeyBrowserWidget(ScriptedLoadableModuleWidget):
|
|
|
#self.authPass.setText(self.network.auth_pass)
|
|
|
|
|
|
self.loadConfigButton.setText(os.path.basename(filename))
|
|
|
-
|
|
|
+
|
|
|
+ def onLoadZipButtonClicked(self):
|
|
|
+ filename=qt.QFileDialog.getOpenFileName(\
|
|
|
+ None,'Open certificate file (zip)',
|
|
|
+ self.configDir, '*.zip')
|
|
|
+ zpath=pathlib.Path(filename)
|
|
|
+ user=zpath.stem
|
|
|
+ userDir=os.path.join(os.path.expanduser('~'),'.labkey',user)
|
|
|
+ if not os.path.isdir(userDir):
|
|
|
+ os.mkdir(userDir)
|
|
|
+
|
|
|
+ caName=None
|
|
|
+ with zipfile.ZipFile(filename,'r') as zipObj:
|
|
|
+ zipObj.extract(user+'.crt',userDir)
|
|
|
+ zipObj.extract(user+'.key',userDir)
|
|
|
+ zipList=zipObj.namelist()
|
|
|
+ for f in zipList:
|
|
|
+ if f.find('CA')>-1:
|
|
|
+ caName=f
|
|
|
+ zipObj.extract(f,userDir)
|
|
|
+
|
|
|
+ self.serverURL.setText('https://merlin.fmf.uni-lj.si')
|
|
|
+ self.privateKeyButton.setText(os.path.join(userDir,user+'.key'))
|
|
|
+ self.userCertButton.setText(os.path.join(userDir,user+'.crt'))
|
|
|
+ self.pwd='notUsed'
|
|
|
+ self.caCertButton.setText(os.path.join(userDir,caName))
|
|
|
+ self.authName.setText("guest")
|
|
|
+ self.authPass.setText("guest")
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
def onSaveConfigButtonClicked(self):
|
|
|
connectionConfig=self.generateConfig()
|
|
|
fhome=os.path.expanduser('~')
|
|
@@ -288,8 +331,12 @@ class labkeyBrowserWidget(ScriptedLoadableModuleWidget):
|
|
|
sslSetup['user']=self.userCertButton.text
|
|
|
sslSetup['key']=self.privateKeyButton.text
|
|
|
sslSetup['ca']=self.caCertButton.text
|
|
|
- sslSetup['keyPwd']=self.pwd
|
|
|
+ try:
|
|
|
+ sslSetup['keyPwd']=self.pwd
|
|
|
+ except AttributeError:
|
|
|
+ sslSetup['keyPwd']='notUsed'
|
|
|
connectionConfig['SSL']=sslSetup
|
|
|
+
|
|
|
connectionConfig["host"]=self.serverURL.text
|
|
|
connectionConfig["context"]="labkey"
|
|
|
labkeySetup={}
|