LOTS of security fixes of containers and other versions
This commit is contained in:
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
FROM golang:1.16.0-buster as builder
|
FROM golang:1.17.2-buster as builder
|
||||||
|
|
||||||
# Add files
|
# Add files
|
||||||
RUN mkdir /app
|
RUN mkdir /app
|
||||||
@@ -22,7 +22,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o webapp .
|
|||||||
FROM alpine:latest as certs
|
FROM alpine:latest as certs
|
||||||
RUN apk --update add ca-certificates
|
RUN apk --update add ca-certificates
|
||||||
|
|
||||||
FROM alpine:3.12
|
FROM alpine:3.14.2
|
||||||
|
|
||||||
COPY --from=builder /app/ /app
|
COPY --from=builder /app/ /app
|
||||||
COPY --from=builder /app_sdk/ /app_sdk
|
COPY --from=builder /app_sdk/ /app_sdk
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
FROM python:3.9.1-alpine as base
|
#FROM python:3.9.1-alpine as base
|
||||||
|
FROM python:3.10.0-alpine as base
|
||||||
FROM base as builder
|
FROM base as builder
|
||||||
RUN apk --no-cache add --update alpine-sdk libffi libffi-dev musl-dev openssl-dev tzdata coreutils
|
RUN apk --no-cache add --update alpine-sdk libffi libffi-dev musl-dev openssl-dev tzdata coreutils
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ NAME=shuffle-app_sdk
|
|||||||
VERSION=0.9.23
|
VERSION=0.9.23
|
||||||
|
|
||||||
docker rmi docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION --force
|
docker rmi docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION --force
|
||||||
docker build . -f Dockerfile -t frikky/shuffle:app_sdk -t frikky/$NAME:$VERSION -t docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION -t ghcr.io/frikky/$NAME:$VERSION
|
docker build . -f Dockerfile -t frikky/shuffle:app_sdk -t frikky/$NAME:$VERSION -t docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION -t ghcr.io/frikky/$NAME:$VERSION -t ghcr.io/frikky/$NAME:nightly
|
||||||
|
|
||||||
#docker push frikky/$NAME:$VERSION
|
#docker push frikky/$NAME:$VERSION
|
||||||
#docker push docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION
|
#docker push docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
urllib3==1.25.9
|
urllib3==1.26.5
|
||||||
requests==2.25.1
|
requests==2.25.1
|
||||||
MarkupSafe==2.0.1
|
MarkupSafe==2.0.1
|
||||||
liquidpy==0.7.1
|
liquidpy==0.7.1
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ module shuffle
|
|||||||
|
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
//replace github.com/frikky/shuffle-shared => ../../../../git/shuffle-shared
|
replace github.com/shuffle/shuffle-shared => ../../../../git/shuffle-shared
|
||||||
|
|
||||||
//replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi
|
//replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ require (
|
|||||||
github.com/docker/go-units v0.4.0 // indirect
|
github.com/docker/go-units v0.4.0 // indirect
|
||||||
github.com/elastic/go-elasticsearch/v7 v7.13.1 // indirect
|
github.com/elastic/go-elasticsearch/v7 v7.13.1 // indirect
|
||||||
github.com/frikky/kin-openapi v0.39.0
|
github.com/frikky/kin-openapi v0.39.0
|
||||||
github.com/frikky/shuffle-shared v0.1.14
|
github.com/frikky/shuffle-shared v0.1.15 // indirect
|
||||||
github.com/fsouza/go-dockerclient v1.7.2
|
github.com/fsouza/go-dockerclient v1.7.2
|
||||||
github.com/ghodss/yaml v1.0.0
|
github.com/ghodss/yaml v1.0.0
|
||||||
github.com/go-git/go-billy/v5 v5.0.0
|
github.com/go-git/go-billy/v5 v5.0.0
|
||||||
@@ -36,6 +36,7 @@ require (
|
|||||||
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||||
github.com/satori/go.uuid v1.2.0
|
github.com/satori/go.uuid v1.2.0
|
||||||
|
github.com/shuffle/shuffle-shared v0.1.14
|
||||||
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
|
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
||||||
golang.org/x/oauth2 v0.0.0-20210113160501-8b1d76fa0423
|
golang.org/x/oauth2 v0.0.0-20210113160501-8b1d76fa0423
|
||||||
|
|||||||
@@ -2742,121 +2742,6 @@ func validateAppYaml(fileLocation string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleSendalert(resp http.ResponseWriter, request *http.Request) {
|
|
||||||
user, err := shuffle.HandleApiAuthentication(resp, request)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("[WARNING] Api authentication failed in sendalert: %s", err)
|
|
||||||
resp.WriteHeader(401)
|
|
||||||
resp.Write([]byte(`{"success": false}`))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if user.Role != "mail" && user.Role != "admin" {
|
|
||||||
resp.WriteHeader(401)
|
|
||||||
resp.Write([]byte(`{"success": false, "reason": "You don't have access to send mail"}`))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReferenceExecution and below are for execution continuations when user inputs arrive
|
|
||||||
type mailcheck struct {
|
|
||||||
Targets []string `json:"targets"`
|
|
||||||
Body string `json:"body"`
|
|
||||||
Subject string `json:"subject"`
|
|
||||||
Type string `json:"type"`
|
|
||||||
SenderCompany string `json:"sender_company"`
|
|
||||||
ReferenceExecution string `json:"reference_execution"`
|
|
||||||
WorkflowId string `json:"workflow_id"`
|
|
||||||
ExecutionType string `json:"execution_type"`
|
|
||||||
Start string `json:"start"`
|
|
||||||
}
|
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(request.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Body data error on mail: %s", err)
|
|
||||||
resp.WriteHeader(401)
|
|
||||||
resp.Write([]byte(`{"success": false}`))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var mailbody mailcheck
|
|
||||||
err = json.Unmarshal(body, &mailbody)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Unmarshal error on mail: %s", err)
|
|
||||||
resp.WriteHeader(401)
|
|
||||||
resp.Write([]byte(`{"success": false}`))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
confirmMessage := `
|
|
||||||
You have a new alert from shuffler.io!
|
|
||||||
|
|
||||||
%s
|
|
||||||
|
|
||||||
Please contact us at shuffler.io or frikky@shuffler.io if there is an issue with this message.`
|
|
||||||
|
|
||||||
parsedBody := fmt.Sprintf(confirmMessage, mailbody.Body)
|
|
||||||
|
|
||||||
// FIXME - Make a continuation email here - might need more info from worker
|
|
||||||
// making the request, e.g. what the next start-node is and execution_id for
|
|
||||||
// how to make the links
|
|
||||||
if mailbody.Type == "User input" {
|
|
||||||
authkey := uuid.NewV4().String()
|
|
||||||
|
|
||||||
log.Printf("Should handle differentiator for user input in email!")
|
|
||||||
log.Printf("%#v", mailbody)
|
|
||||||
|
|
||||||
url := "https://shuffler.io"
|
|
||||||
//url := "http://localhost:5001"
|
|
||||||
continueUrl := fmt.Sprintf("%s/api/v1/workflows/%s/execute?authorization=%s&start=%s&reference_execution=%s&answer=true", url, mailbody.WorkflowId, authkey, mailbody.Start, mailbody.ReferenceExecution)
|
|
||||||
stopUrl := fmt.Sprintf("%s/api/v1/workflows/%s/execute?authorization=%s&start=%s&reference_execution=%s&answer=false", url, mailbody.WorkflowId, authkey, mailbody.Start, mailbody.ReferenceExecution)
|
|
||||||
|
|
||||||
//item := &memcache.Item{
|
|
||||||
// Key: authkey,
|
|
||||||
// Value: []byte(fmt.Sprintf(`{"role": "workflow_%s"}`, mailbody.WorkflowId)),
|
|
||||||
// Expiration: time.Minute * 1200,
|
|
||||||
//}
|
|
||||||
|
|
||||||
//if err := memcache.Add(ctx, item); err == memcache.ErrNotStored {
|
|
||||||
// if err := memcache.Set(ctx, item); err != nil {
|
|
||||||
// log.Printf("Error setting new user item: %v", err)
|
|
||||||
// }
|
|
||||||
//} else if err != nil {
|
|
||||||
// log.Printf("error adding item: %v", err)
|
|
||||||
//} else {
|
|
||||||
// log.Printf("Set cache for %s", item.Key)
|
|
||||||
//}
|
|
||||||
|
|
||||||
parsedBody = fmt.Sprintf(`
|
|
||||||
Action required!
|
|
||||||
|
|
||||||
%s
|
|
||||||
|
|
||||||
If this is TRUE click this: %s
|
|
||||||
|
|
||||||
IF THIS IS FALSE, click this: %s
|
|
||||||
|
|
||||||
Please contact us at shuffler.io or frikky@shuffler.io if there is an issue with this message.
|
|
||||||
`, mailbody.Body, continueUrl, stopUrl)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
msg := &mail.Message{
|
|
||||||
Sender: "Shuffle <frikky@shuffler.io>",
|
|
||||||
To: mailbody.Targets,
|
|
||||||
Subject: fmt.Sprintf("Shuffle - %s - %s", mailbody.Type, mailbody.Subject),
|
|
||||||
Body: parsedBody,
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Println(msg.Body)
|
|
||||||
if err := mail.Send(ctx, msg); err != nil {
|
|
||||||
log.Printf("Couldn't send email: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp.WriteHeader(200)
|
|
||||||
resp.Write([]byte(`{"success": true}`))
|
|
||||||
}
|
|
||||||
|
|
||||||
func setBadMemcache(ctx context.Context, path string) {
|
func setBadMemcache(ctx context.Context, path string) {
|
||||||
// Add to cache if it doesn't exist
|
// Add to cache if it doesn't exist
|
||||||
//item := &memcache.Item{
|
//item := &memcache.Item{
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
frontend:
|
frontend:
|
||||||
build: ./frontend
|
#build: ./frontend
|
||||||
image: ghcr.io/frikky/shuffle-frontend:nightly
|
image: ghcr.io/frikky/shuffle-frontend:nightly
|
||||||
container_name: shuffle-frontend
|
container_name: shuffle-frontend
|
||||||
hostname: shuffle-frontend
|
hostname: shuffle-frontend
|
||||||
@@ -16,7 +16,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
backend:
|
backend:
|
||||||
build: ./backend
|
#build: ./backend
|
||||||
image: ghcr.io/frikky/shuffle-backend:nightly
|
image: ghcr.io/frikky/shuffle-backend:nightly
|
||||||
container_name: shuffle-backend
|
container_name: shuffle-backend
|
||||||
hostname: ${BACKEND_HOSTNAME}
|
hostname: ${BACKEND_HOSTNAME}
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ COPY ./*.json /usr/src/app/
|
|||||||
RUN yarn build
|
RUN yarn build
|
||||||
|
|
||||||
# Production environment
|
# Production environment
|
||||||
FROM nginx:1.21
|
FROM nginx:1.21.3
|
||||||
|
|
||||||
RUN mkdir -p /usr/share/nginx/html/build
|
RUN mkdir -p /usr/share/nginx/html/build
|
||||||
RUN mkdir -p /usr/share/nginx/html/css
|
RUN mkdir -p /usr/share/nginx/html/css
|
||||||
|
|||||||
@@ -753,6 +753,10 @@ const ParsedAction = (props) => {
|
|||||||
var placeholder = "Static value"
|
var placeholder = "Static value"
|
||||||
if (data.example !== undefined && data.example !== null && data.example.length > 0) {
|
if (data.example !== undefined && data.example !== null && data.example.length > 0) {
|
||||||
placeholder = data.example
|
placeholder = data.example
|
||||||
|
|
||||||
|
if (data.name === "url" && data.value.length === 0) {
|
||||||
|
data.value = data.example
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.name.startsWith("${") && data.name.endsWith("}")) {
|
if (data.name.startsWith("${") && data.name.endsWith("}")) {
|
||||||
@@ -1270,6 +1274,13 @@ const ParsedAction = (props) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tmpitem = (tmpitem.charAt(0).toUpperCase()+tmpitem.substring(1)).replaceAll("_", " ")
|
tmpitem = (tmpitem.charAt(0).toUpperCase()+tmpitem.substring(1)).replaceAll("_", " ")
|
||||||
|
|
||||||
|
if (tmpitem === "Username basic") {
|
||||||
|
tmpitem = "Username"
|
||||||
|
} else if (tmpitem === "Password basic") {
|
||||||
|
tmpitem = "Password"
|
||||||
|
}
|
||||||
|
|
||||||
const description = data.description === undefined ? "" : data.description
|
const description = data.description === undefined ? "" : data.description
|
||||||
const tooltipDescription =
|
const tooltipDescription =
|
||||||
<span>
|
<span>
|
||||||
|
|||||||
@@ -9332,29 +9332,29 @@ const AngularWorkflow = (props) => {
|
|||||||
<div style={{flex: 3, borderLeft: `1px solid ${inputColor}`, padding: "70px 30px 30px 30px", maxHeight: 630, minHeight: 630, overflowY: "auto", overflowX: "hidden"}}>
|
<div style={{flex: 3, borderLeft: `1px solid ${inputColor}`, padding: "70px 30px 30px 30px", maxHeight: 630, minHeight: 630, overflowY: "auto", overflowX: "hidden"}}>
|
||||||
{selectedApp.documentation === undefined || selectedApp.documentation === null || selectedApp.documentation.length === 0 ?
|
{selectedApp.documentation === undefined || selectedApp.documentation === null || selectedApp.documentation.length === 0 ?
|
||||||
<span style={{textAlign: "center", }}>
|
<span style={{textAlign: "center", }}>
|
||||||
<Typography variant="h6">
|
<Typography variant="body1" style={{marginLeft: 25, marginRight: 25}}>
|
||||||
Description: {selectedApp.description}
|
{selectedApp.description}
|
||||||
</Typography>
|
</Typography>
|
||||||
<Divider style={{marginTop: 25, marginBottom: 25, backgroundColor: inputColor, }} />
|
<Divider style={{marginTop: 25, marginBottom: 25, backgroundColor: inputColor, }} />
|
||||||
<Typography variant="h4">
|
<Typography variant="h6">
|
||||||
There is currently no extended documentation available for this app.
|
There is currently no extended documentation available for this app.
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography variant="h6" style={{marginTop: 25}}>
|
<Typography variant="body1" style={{marginTop: 25}}>
|
||||||
Want help with this app? <a rel="norefferer" target="_blank" href="https://discord.gg/B2CBzUm" style={{textDecoration: "none", color: "#f86a3e"}}>Join the Discord!</a>
|
Want help with this app? <a rel="norefferer" target="_blank" href="https://discord.gg/B2CBzUm" style={{textDecoration: "none", color: "#f86a3e"}}>Join the Discord!</a>
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<Typography variant="h4" style={{marginTop: 50,}}>
|
<Typography variant="h6" style={{marginTop: 50,}}>
|
||||||
Want to help change this app?
|
Want to help change this app?
|
||||||
</Typography>
|
</Typography>
|
||||||
{selectedApp.reference_info === undefined || selectedApp.reference_info === null || selectedApp.reference_info.github_url === undefined || selectedApp.reference_info.github_url === null || selectedApp.reference_info.github_url.length === 0 ?
|
{selectedApp.reference_info === undefined || selectedApp.reference_info === null || selectedApp.reference_info.github_url === undefined || selectedApp.reference_info.github_url === null || selectedApp.reference_info.github_url.length === 0 ?
|
||||||
<span>
|
<span>
|
||||||
<Typography variant="h6" style={{marginTop: 25}}>
|
<Typography variant="body1" style={{marginTop: 25}}>
|
||||||
<a rel="norefferer" target="_blank" href={"https://github.com/frikky/shuffle-apps"} style={{textDecoration: "none", color: "#f86a3e"}}>Check it out on Github!</a>
|
<a rel="norefferer" target="_blank" href={"https://github.com/frikky/shuffle-apps"} style={{textDecoration: "none", color: "#f86a3e"}}>Check it out on Github!</a>
|
||||||
</Typography>
|
</Typography>
|
||||||
</span>
|
</span>
|
||||||
:
|
:
|
||||||
<span>
|
<span>
|
||||||
<Typography variant="h6" style={{marginTop: 25}}>
|
<Typography variant="body1" style={{marginTop: 25}}>
|
||||||
<a rel="norefferer" target="_blank" href={selectedApp.reference_info.github_url} style={{textDecoration: "none", color: "#f86a3e"}}>Check it out on Github!</a>
|
<a rel="norefferer" target="_blank" href={selectedApp.reference_info.github_url} style={{textDecoration: "none", color: "#f86a3e"}}>Check it out on Github!</a>
|
||||||
</Typography>
|
</Typography>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -201,8 +201,7 @@ const AppCreator = (props) => {
|
|||||||
const increaseAmount = 50
|
const increaseAmount = 50
|
||||||
const actionNonBodyRequest = ["GET", "HEAD", "DELETE", "CONNECT"]
|
const actionNonBodyRequest = ["GET", "HEAD", "DELETE", "CONNECT"]
|
||||||
const actionBodyRequest = ["POST", "PUT", "PATCH",]
|
const actionBodyRequest = ["POST", "PUT", "PATCH",]
|
||||||
//const authenticationOptions = ["No authentication", "API key", "Bearer auth", "Basic auth", "JWT", "Oauth2"]
|
const authenticationOptions = ["No authentication", "API key", "Bearer auth", "Basic auth", "Oauth2", "JWT"]
|
||||||
const authenticationOptions = ["No authentication", "API key", "Bearer auth", "Basic auth", "Oauth2"]
|
|
||||||
const apikeySelection = ["Header", "Query",]
|
const apikeySelection = ["Header", "Query",]
|
||||||
|
|
||||||
const [name, setName] = useState("");
|
const [name, setName] = useState("");
|
||||||
@@ -1004,8 +1003,15 @@ const AppCreator = (props) => {
|
|||||||
//if (Object.entries(securitySchemes) > 1 &&
|
//if (Object.entries(securitySchemes) > 1 &&
|
||||||
var newauth = []
|
var newauth = []
|
||||||
for (const [key, value] of Object.entries(securitySchemes)) {
|
for (const [key, value] of Object.entries(securitySchemes)) {
|
||||||
//console.log(key, value)
|
console.log(key, value)
|
||||||
if (value.scheme === "bearer") {
|
if (key === "jwt") {
|
||||||
|
setAuthenticationOption("JWT")
|
||||||
|
setAuthenticationRequired(true)
|
||||||
|
|
||||||
|
if (value.in !== undefined && value.in !== null && value.in.length > 0) {
|
||||||
|
setParameterName(value.in)
|
||||||
|
}
|
||||||
|
} else if (value.scheme === "bearer") {
|
||||||
setAuthenticationOption("Bearer auth")
|
setAuthenticationOption("Bearer auth")
|
||||||
setAuthenticationRequired(true)
|
setAuthenticationRequired(true)
|
||||||
} else if (key === "Oauth2" || key === "Oauth2c") {
|
} else if (key === "Oauth2" || key === "Oauth2c") {
|
||||||
@@ -1531,11 +1537,14 @@ const AppCreator = (props) => {
|
|||||||
"bearerFormat": "UUID",
|
"bearerFormat": "UUID",
|
||||||
}
|
}
|
||||||
} else if (authenticationOption === "JWT") {
|
} else if (authenticationOption === "JWT") {
|
||||||
data.components.securitySchemes["BearerAuth"] = {
|
data.components.securitySchemes["jwt"] = {
|
||||||
"type": "http",
|
"type": "http",
|
||||||
"scheme": "bearer",
|
"scheme": "bearer",
|
||||||
"bearerFormat": "JWT",
|
"bearerFormat": "JWT",
|
||||||
|
"in": parameterName,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("SECURITYSCHEMES: ", data.components)
|
||||||
} else if (authenticationOption === "Basic auth") {
|
} else if (authenticationOption === "Basic auth") {
|
||||||
data.components.securitySchemes["BasicAuth"] = {
|
data.components.securitySchemes["BasicAuth"] = {
|
||||||
"type": "http",
|
"type": "http",
|
||||||
@@ -1853,6 +1862,37 @@ const AppCreator = (props) => {
|
|||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
const jwtAuth = authenticationOption === "JWT" ?
|
||||||
|
<div style={{color: "white", marginTop: 20, }}>
|
||||||
|
<Typography variant="body1">JWT authentication</Typography>
|
||||||
|
<Typography variant="body2" color="textSecondary" style={{marginTop: 10,}}>
|
||||||
|
Authentication path
|
||||||
|
</Typography>
|
||||||
|
<TextField
|
||||||
|
required
|
||||||
|
style={{margin: 0, flex: "1", backgroundColor: inputColor}}
|
||||||
|
fullWidth={true}
|
||||||
|
placeholder="/security/user/authenticate"
|
||||||
|
type="name"
|
||||||
|
id="standard-required"
|
||||||
|
margin="normal"
|
||||||
|
variant="outlined"
|
||||||
|
defaultValue={parameterName}
|
||||||
|
helperText={<span style={{color:"white", marginBottom: "2px",}}>Must start with / and be a valid path</span>}
|
||||||
|
onBlur={e => setParameterName(e.target.value)}
|
||||||
|
InputProps={{
|
||||||
|
classes: {
|
||||||
|
notchedOutline: classes.notchedOutline,
|
||||||
|
},
|
||||||
|
style:{
|
||||||
|
color: "white",
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
:
|
||||||
|
null
|
||||||
|
|
||||||
const oauth2Auth = authenticationOption === "Oauth2" ?
|
const oauth2Auth = authenticationOption === "Oauth2" ?
|
||||||
<div style={{color: "white", marginTop: 20, }}>
|
<div style={{color: "white", marginTop: 20, }}>
|
||||||
<Typography variant="body1">Oauth2 authentication</Typography>
|
<Typography variant="body1">Oauth2 authentication</Typography>
|
||||||
@@ -3680,6 +3720,7 @@ const AppCreator = (props) => {
|
|||||||
{bearerAuth}
|
{bearerAuth}
|
||||||
{apiKey}
|
{apiKey}
|
||||||
{oauth2Auth}
|
{oauth2Auth}
|
||||||
|
{jwtAuth}
|
||||||
{extraKeys}
|
{extraKeys}
|
||||||
|
|
||||||
{/*authenticationOption === "No authentication" ? null :
|
{/*authenticationOption === "No authentication" ? null :
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM golang:1.16.0-buster as builder
|
FROM golang:1.17.2-buster as builder
|
||||||
|
|
||||||
RUN mkdir /app
|
RUN mkdir /app
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@@ -15,7 +15,7 @@ RUN go get github.com/docker/docker/api/types && \
|
|||||||
RUN go build
|
RUN go build
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o orborus .
|
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o orborus .
|
||||||
|
|
||||||
FROM alpine:3.12
|
FROM alpine:3.14.2
|
||||||
RUN apk add --no-cache bash tzdata
|
RUN apk add --no-cache bash tzdata
|
||||||
COPY --from=builder /app/ /
|
COPY --from=builder /app/ /
|
||||||
|
|
||||||
|
|||||||
@@ -3,21 +3,44 @@ module orborus
|
|||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
cloud.google.com/go/datastore v1.6.0 // indirect
|
||||||
|
cloud.google.com/go/storage v1.18.1 // indirect
|
||||||
github.com/Masterminds/semver v1.5.0 // indirect
|
github.com/Masterminds/semver v1.5.0 // indirect
|
||||||
github.com/Microsoft/go-winio v0.4.16 // indirect
|
github.com/Microsoft/go-winio v0.5.0 // indirect
|
||||||
github.com/algolia/algoliasearch-client-go/v3 v3.18.1 // indirect
|
github.com/algolia/algoliasearch-client-go/v3 v3.21.0 // indirect
|
||||||
github.com/bradfitz/slice v0.0.0-20180809154707-2b758aa73013 // indirect
|
github.com/bradfitz/slice v0.0.0-20180809154707-2b758aa73013 // indirect
|
||||||
github.com/containerd/containerd v1.4.3 // indirect
|
github.com/containerd/containerd v1.5.7 // indirect
|
||||||
|
github.com/creack/pty v1.1.16 // indirect
|
||||||
github.com/docker/distribution v2.7.1+incompatible // indirect
|
github.com/docker/distribution v2.7.1+incompatible // indirect
|
||||||
github.com/docker/docker v20.10.1+incompatible
|
github.com/docker/docker v20.10.9+incompatible
|
||||||
github.com/docker/go-connections v0.4.0 // indirect
|
github.com/docker/go-connections v0.4.0 // indirect
|
||||||
github.com/docker/go-units v0.4.0 // indirect
|
github.com/docker/go-units v0.4.0 // indirect
|
||||||
github.com/frikky/shuffle-shared v0.0.40
|
github.com/frikky/kin-openapi v0.40.0 // indirect
|
||||||
github.com/gogo/protobuf v1.3.1 // indirect
|
github.com/frikky/shuffle-shared v0.1.15
|
||||||
github.com/mackerelio/go-osstat v0.1.0
|
github.com/go-openapi/swag v0.19.15 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
|
github.com/google/go-querystring v1.1.0 // indirect
|
||||||
|
github.com/gorilla/mux v1.8.0 // indirect
|
||||||
|
github.com/kr/pretty v0.3.0 // indirect
|
||||||
|
github.com/mackerelio/go-osstat v0.2.1
|
||||||
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
|
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect
|
||||||
|
github.com/morikuni/aec v1.0.0 // indirect
|
||||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||||
github.com/opencontainers/image-spec v1.0.1 // indirect
|
github.com/opencontainers/image-spec v1.0.1 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/rogpeppe/go-internal v1.8.0 // indirect
|
||||||
github.com/satori/go.uuid v1.2.0
|
github.com/satori/go.uuid v1.2.0
|
||||||
github.com/sirupsen/logrus v1.7.0 // indirect
|
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
|
||||||
|
golang.org/x/mod v0.5.1 // indirect
|
||||||
|
golang.org/x/net v0.0.0-20211014172544-2b766c08f1c0 // indirect
|
||||||
|
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c // indirect
|
||||||
|
golang.org/x/text v0.3.7 // indirect
|
||||||
|
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
|
||||||
|
golang.org/x/tools v0.1.7 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20211013025323-ce878158c4d4 // indirect
|
||||||
|
google.golang.org/grpc v1.41.0 // indirect
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
FROM golang:1.16.0-buster as builder
|
FROM golang:1.17.2-buster as builder
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
#RUN go get github.com/docker/docker/api/types github.com/docker/docker/api/types/container github.com/docker/docker/client
|
#RUN go get github.com/docker/docker/api/types github.com/docker/docker/api/types/container github.com/docker/docker/client
|
||||||
@@ -25,7 +25,7 @@ RUN go build
|
|||||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker .
|
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker .
|
||||||
|
|
||||||
## ALPINE IMAGE
|
## ALPINE IMAGE
|
||||||
FROM alpine:3.12
|
FROM alpine:3.14.2
|
||||||
|
|
||||||
ENV SHUFFLE_BASE_IMAGE_REGISTRY=docker.io
|
ENV SHUFFLE_BASE_IMAGE_REGISTRY=docker.io
|
||||||
ENV SHUFFLE_BASE_IMAGE_NAME=frikky/shuffle
|
ENV SHUFFLE_BASE_IMAGE_NAME=frikky/shuffle
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
NAME=shuffle-worker
|
NAME=shuffle-worker
|
||||||
VERSION=0.9.16
|
VERSION=0.9.23
|
||||||
|
|
||||||
echo "Running docker build with $NAME:$VERSION"
|
echo "Running docker build with $NAME:$VERSION"
|
||||||
#CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker.bin .
|
#CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker.bin .
|
||||||
|
|||||||
@@ -3,26 +3,47 @@ module worker
|
|||||||
go 1.15
|
go 1.15
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
cloud.google.com/go/datastore v1.6.0 // indirect
|
||||||
|
cloud.google.com/go/storage v1.18.1 // indirect
|
||||||
github.com/Masterminds/semver v1.5.0 // indirect
|
github.com/Masterminds/semver v1.5.0 // indirect
|
||||||
github.com/Microsoft/go-winio v0.4.16 // indirect
|
github.com/Microsoft/go-winio v0.5.0 // indirect
|
||||||
github.com/algolia/algoliasearch-client-go/v3 v3.18.1 // indirect
|
github.com/algolia/algoliasearch-client-go/v3 v3.21.0 // indirect
|
||||||
github.com/bradfitz/slice v0.0.0-20180809154707-2b758aa73013 // indirect
|
github.com/bradfitz/slice v0.0.0-20180809154707-2b758aa73013 // indirect
|
||||||
github.com/containerd/containerd v1.4.4 // indirect
|
github.com/containerd/containerd v1.5.7 // indirect
|
||||||
|
github.com/creack/pty v1.1.16 // indirect
|
||||||
github.com/docker/distribution v2.7.1+incompatible // indirect
|
github.com/docker/distribution v2.7.1+incompatible // indirect
|
||||||
github.com/docker/docker v20.10.5+incompatible
|
github.com/docker/docker v20.10.9+incompatible
|
||||||
github.com/docker/go-connections v0.4.0 // indirect
|
github.com/docker/go-connections v0.4.0 // indirect
|
||||||
github.com/docker/go-units v0.4.0 // indirect
|
github.com/docker/go-units v0.4.0 // indirect
|
||||||
github.com/frikky/shuffle-shared v0.0.95
|
github.com/frikky/kin-openapi v0.40.0 // indirect
|
||||||
|
github.com/frikky/shuffle-shared v0.1.15
|
||||||
github.com/fsouza/go-dockerclient v1.7.2
|
github.com/fsouza/go-dockerclient v1.7.2
|
||||||
github.com/go-git/go-billy/v5 v5.3.1 // indirect
|
github.com/go-git/go-billy/v5 v5.3.1 // indirect
|
||||||
github.com/go-git/go-git/v5 v5.4.2 // indirect
|
github.com/go-git/go-git/v5 v5.4.2 // indirect
|
||||||
|
github.com/go-openapi/swag v0.19.15 // indirect
|
||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
github.com/google/go-github/v28 v28.1.1 // indirect
|
github.com/google/go-github/v28 v28.1.1 // indirect
|
||||||
|
github.com/google/go-querystring v1.1.0 // indirect
|
||||||
github.com/gorilla/mux v1.8.0
|
github.com/gorilla/mux v1.8.0
|
||||||
|
github.com/kr/pretty v0.3.0 // indirect
|
||||||
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
|
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect
|
||||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||||
github.com/opencontainers/image-spec v1.0.1 // indirect
|
github.com/opencontainers/image-spec v1.0.1 // indirect
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
google.golang.org/grpc v1.37.1 // indirect
|
github.com/rogpeppe/go-internal v1.8.0 // indirect
|
||||||
|
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
|
||||||
|
golang.org/x/mod v0.5.1 // indirect
|
||||||
|
golang.org/x/net v0.0.0-20211014172544-2b766c08f1c0 // indirect
|
||||||
|
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c // indirect
|
||||||
|
golang.org/x/text v0.3.7 // indirect
|
||||||
|
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
|
||||||
|
golang.org/x/tools v0.1.7 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20211013025323-ce878158c4d4 // indirect
|
||||||
|
google.golang.org/grpc v1.41.0 // indirect
|
||||||
gopkg.in/src-d/go-git.v4 v4.13.1 // indirect
|
gopkg.in/src-d/go-git.v4 v4.13.1 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -964,8 +964,8 @@ func handleExecutionResult(workflowExecution shuffle.WorkflowExecution) {
|
|||||||
// 3. Add remote repo location
|
// 3. Add remote repo location
|
||||||
images := []string{
|
images := []string{
|
||||||
image,
|
image,
|
||||||
fmt.Sprintf("%s:%s_%s", baseimagename, strings.Replace(action.AppName, " ", "-", -1), action.AppVersion),
|
|
||||||
fmt.Sprintf("%s/%s:%s_%s", registryName, baseimagename, parsedAppname, action.AppVersion),
|
fmt.Sprintf("%s/%s:%s_%s", registryName, baseimagename, parsedAppname, action.AppVersion),
|
||||||
|
fmt.Sprintf("%s:%s_%s", baseimagename, strings.Replace(action.AppName, " ", "-", -1), action.AppVersion),
|
||||||
}
|
}
|
||||||
|
|
||||||
// If cleanup is set, it should run for efficiency
|
// If cleanup is set, it should run for efficiency
|
||||||
|
|||||||
Reference in New Issue
Block a user