#57: Added optiona SSL verification if no URL is specified when creating app

This commit is contained in:
frikky
2020-06-13 15:51:18 +02:00
parent 927ca5504d
commit 18824daecc
6 changed files with 228 additions and 31 deletions
+202 -3
View File
@@ -300,6 +300,23 @@ func makePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet
urlInline = "{url}"
}
// Specific check for SSL verification
// This is critical for onprem stuff.
verifyParam := ""
verifyWrapper := ""
verifyAddin := ""
if len(swagger.Servers) == 0 {
verifyParam = ", verify=True"
verifyWrapper = `if type(ssl_verify) == str: ssl_verify = False if ssl_verify.lower() == "false" or ssl_verify == "0" else True`
verifyAddin = ", verify=ssl_verify"
} else {
if swagger.Servers[0].URL == "" {
verifyParam = ", ssl_verify=True"
verifyWrapper = `if type(ssl_verify) == str: ssl_verify = False if ssl_verify.lower() == "false" or ssl_verify == "0" else True`
verifyAddin = ", verify=ssl_verify"
}
}
if len(parameters) > 0 {
parameterData = fmt.Sprintf(", %s", strings.Join(parameters, ", "))
}
@@ -334,13 +351,14 @@ func makePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet
// Extra param for url if it's changeable
// Extra param for authentication scheme(s)
data := fmt.Sprintf(` async def %s(self%s%s%s%s%s):
data := fmt.Sprintf(` async def %s(self%s%s%s%s%s%s):
headers={}
url=f"%s%s"
%s
%s
%s
%s
return requests.%s(url, headers=headers%s%s).text
return requests.%s(url, headers=headers%s%s%s).text
`,
functionname,
authenticationParameter,
@@ -348,16 +366,21 @@ func makePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet
parameterData,
queryString,
bodyParameter,
verifyParam,
urlInline,
url,
verifyWrapper,
authenticationSetup,
queryData,
bodyFormatter,
method,
authenticationAddin,
bodyAddin,
verifyAddin,
)
log.Printf("CODE: %s", data)
//log.Println(data)
//log.Println(functionname)
return functionname, data
@@ -761,6 +784,32 @@ func handleConnect(swagger *openapi3.Swagger, api WorkflowApp, extraParameters [
optionalQueries := []string{}
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Connect.Parameters) > 0 {
for _, param := range path.Connect.Parameters {
if param.Value.Schema == nil || param.Value.In == "header" {
@@ -867,8 +916,33 @@ func handleGet(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wor
// FIXME - remove this when authentication is properly introduced
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify the SSL certificate request",
Multiline: false,
Required: false,
Example: "False - default=True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Get.Parameters) > 0 {
for _, param := range path.Get.Parameters {
if param.Value.Schema == nil || param.Value.In == "header" {
@@ -976,6 +1050,31 @@ func handleHead(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wo
optionalQueries := []string{}
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Head.Parameters) > 0 {
for _, param := range path.Head.Parameters {
if param.Value.Schema == nil || param.Value.In == "header" {
@@ -1081,6 +1180,31 @@ func handleDelete(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []
optionalQueries := []string{}
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Delete.Parameters) > 0 {
for _, param := range path.Delete.Parameters {
if param.Value.Schema == nil || param.Value.In == "header" {
@@ -1189,6 +1313,31 @@ func handlePost(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wo
optionalQueries := []string{}
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Post.Parameters) > 0 {
for _, param := range path.Post.Parameters {
@@ -1296,6 +1445,31 @@ func handlePatch(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []W
optionalQueries := []string{}
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Patch.Parameters) > 0 {
for _, param := range path.Patch.Parameters {
if param.Value.Schema == nil || param.Value.In == "header" {
@@ -1401,6 +1575,31 @@ func handlePut(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wor
optionalQueries := []string{}
parameters := []string{}
optionalParameters := []WorkflowAppActionParameter{}
if len(swagger.Servers) == 0 {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
} else {
if swagger.Servers[0].URL == "" {
optionalParameters = append(optionalParameters, WorkflowAppActionParameter{
Name: "ssl_verify",
Description: "Check if you want to verify request",
Multiline: false,
Required: false,
Example: "True",
Schema: SchemaDefinition{
Type: "string",
},
})
}
}
if len(path.Put.Parameters) > 0 {
for _, param := range path.Put.Parameters {
-1
View File
@@ -1475,7 +1475,6 @@ func saveWorkflow(resp http.ResponseWriter, request *http.Request) {
}
}
log.Printf("NewActions: %#v", newActions)
workflow.Actions = newActions
workflow.IsValid = true
+12 -12
View File
@@ -13,18 +13,6 @@ services:
restart: unless-stopped
depends_on:
- backend
database:
#build: ./backend/database
image: frikky/shuffle:database
container_name: shuffle-database
hostname: shuffle-database
ports:
- "8000:8000"
networks:
- shuffle
restart: unless-stopped
volumes:
- ${DB_LOCATION}:/etc/shuffle
backend:
#build: ./backend
image: frikky/shuffle:backend
@@ -59,6 +47,18 @@ services:
- BASE_URL=http://${OUTER_HOSTNAME}:${BACKEND_PORT}
- DOCKER_API_VERSION=1.40
restart: unless-stopped
database:
#build: ./backend/database
image: frikky/shuffle:database
container_name: shuffle-database
hostname: shuffle-database
ports:
- "8000:8000"
networks:
- shuffle
restart: unless-stopped
volumes:
- ${DB_LOCATION}:/etc/shuffle
networks:
shuffle:
driver: bridge
-1
View File
@@ -1401,7 +1401,6 @@ const AngularWorkflow = (props) => {
display: "flex",
}
const paperVariableStyle = {
minHeight: "50px",
maxHeight: "50px",
+10 -10
View File
@@ -67,7 +67,7 @@ const useStyles = makeStyles({
const rewrite = (args) => {
return args.reduce(function(args, a){
if (0 == a.indexOf('-X')) {
if (0 === a.indexOf('-X')) {
args.push('-X')
args.push(a.slice(2))
} else {
@@ -105,35 +105,35 @@ const parseCurl = (s) => {
out.url = arg
break;
case arg == '-A' || arg == '--user-agent':
case arg === '-A' || arg === '--user-agent':
state = 'user-agent'
break;
case arg == '-H' || arg == '--header':
case arg === '-H' || arg === '--header':
state = 'header'
break;
case arg == '-d' || arg == '--data' || arg == '--data-ascii':
case arg === '-d' || arg === '--data' || arg === '--data-ascii':
state = 'data'
break;
case arg == '-u' || arg == '--user':
case arg === '-u' || arg === '--user':
state = 'user'
break;
case arg == '-I' || arg == '--head':
case arg === '-I' || arg === '--head':
out.method = 'HEAD'
break;
case arg == '-X' || arg == '--request':
case arg === '-X' || arg === '--request':
state = 'method'
break;
case arg == '-b' || arg =='--cookie':
case arg === '-b' || arg === '--cookie':
state = 'cookie'
break;
case arg == '--compressed':
case arg === '--compressed':
out.header['Accept-Encoding'] = out.header['Accept-Encoding'] || 'deflate, gzip'
break;
@@ -149,7 +149,7 @@ const parseCurl = (s) => {
state = ''
break;
case 'data':
if (out.method == 'GET' || out.method == 'HEAD') out.method = 'POST'
if (out.method === 'GET' || out.method === 'HEAD') out.method = 'POST'
out.header['Content-Type'] = out.header['Content-Type'] || 'application/x-www-form-urlencoded'
out.body = out.body
? out.body + '&' + arg
+4 -4
View File
@@ -512,9 +512,9 @@ const Apps = (props) => {
}
const appView = isLoggedIn ?
<div style={{maxWidth: 1366, margin: "auto",}}>
<div style={{maxWidth: window.innerWidth > 1366 ? 1366 : 1200, margin: "auto",}}>
<div style={appViewStyle}>
<div>
<div style={{flex: 1}}>
<Breadcrumbs aria-label="breadcrumb" separator="" style={{color: "white",}}>
<Link to="/apps" style={{textDecoration: "none", color: "inherit",}}>
<h2 style={{color: "rgba(255,255,255,0.5)"}}>
@@ -532,10 +532,10 @@ const Apps = (props) => {
</Breadcrumbs>
<UploadView/>
</div>
<Divider style={{marginBottom: "10px", marginTop: "10px", height: "100%", width: "1px", backgroundColor: dividerColor}}/>
<Divider style={{marginBottom: 10, marginTop: 10, height: "100%", width: 1, backgroundColor: dividerColor}}/>
<div style={{flex: 1, marginLeft: 10, marginRight: 10}}>
<div style={{display: "flex"}}>
<div style={{flex: 10}}>
<div style={{flex: 1}}>
<h2>Available integrations</h2>
</div>
{isLoading ? <CircularProgress style={{marginTop: 13, marginRight: 15}} /> : null}