mirror of
https://github.com/openfaas/faas.git
synced 2025-06-08 16:26:47 +00:00
Update the sample functions
**What** - Move the new secrets sample function to ApiKeyProtected-Secrets - Bring back the original ApiKeyProtected sample function Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
This commit is contained in:
parent
1a055deb49
commit
156103e2db
2
sample-functions/ApiKeyProtected-Secrets/.gitignore
vendored
Normal file
2
sample-functions/ApiKeyProtected-Secrets/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
ApiKeyProtected
|
||||
|
23
sample-functions/ApiKeyProtected-Secrets/Dockerfile
Normal file
23
sample-functions/ApiKeyProtected-Secrets/Dockerfile
Normal file
@ -0,0 +1,23 @@
|
||||
FROM golang:1.7.5 as builder
|
||||
RUN mkdir -p /go/src/app
|
||||
COPY handler.go /go/src/app
|
||||
WORKDIR /go/src/app
|
||||
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
|
||||
|
||||
|
||||
FROM alpine:latest
|
||||
|
||||
WORKDIR /root/
|
||||
|
||||
EXPOSE 8080
|
||||
ENV http_proxy ""
|
||||
ENV https_proxy ""
|
||||
|
||||
ADD https://github.com/alexellis/faas/releases/download/0.6.6d/fwatchdog /usr/bin
|
||||
RUN chmod +x /usr/bin/fwatchdog
|
||||
|
||||
COPY --from=builder /go/src/app/app .
|
||||
|
||||
ENV fprocess="/root/app"
|
||||
CMD ["fwatchdog"]
|
6
sample-functions/ApiKeyProtected-Secrets/README.md
Normal file
6
sample-functions/ApiKeyProtected-Secrets/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
### Api-Key-Protected sample
|
||||
|
||||
See the [secure secret management guide](../guide/secure_secret_management.md) for instructions on how to use this function.
|
||||
|
||||
When calling via the gateway pass the additional header "X-Api-Key", if it matches the `secret_api_key` value then the function will give access, otherwise access denied.
|
||||
|
BIN
sample-functions/ApiKeyProtected-Secrets/app
Executable file
BIN
sample-functions/ApiKeyProtected-Secrets/app
Executable file
Binary file not shown.
3
sample-functions/ApiKeyProtected-Secrets/build.sh
Executable file
3
sample-functions/ApiKeyProtected-Secrets/build.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
echo Building functions/api-key-protected:latest
|
||||
docker build --no-cache -t functions/api-key-protected:latest .
|
31
sample-functions/ApiKeyProtected-Secrets/handler.go
Normal file
31
sample-functions/ApiKeyProtected-Secrets/handler.go
Normal file
@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func handle(body []byte) {
|
||||
key := os.Getenv("Http_X_Api_Key")
|
||||
|
||||
secretBytes, err := ioutil.ReadFile("/run/secrets/secret_api_key")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
secret := strings.TrimSpace(string(secretBytes))
|
||||
|
||||
if key == secret {
|
||||
fmt.Println("Unlocked the function!")
|
||||
} else {
|
||||
fmt.Println("Access denied!")
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
bytes, _ := ioutil.ReadAll(os.Stdin)
|
||||
handle(bytes)
|
||||
}
|
9
sample-functions/ApiKeyProtected/Dockerfile.build
Normal file
9
sample-functions/ApiKeyProtected/Dockerfile.build
Normal file
@ -0,0 +1,9 @@
|
||||
FROM golang:1.7.5
|
||||
RUN mkdir -p /go/src/app
|
||||
COPY handler.go /go/src/app
|
||||
WORKDIR /go/src/app
|
||||
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
|
||||
|
||||
CMD ["echo"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
### Api-Key-Protected sample
|
||||
|
||||
See the [secure secret management guide](../guide/secure_secret_management.md) for instructions on how to use this function.
|
||||
To use this sample provide an env variable for the container/service in `secret_api_key`.
|
||||
|
||||
When calling via the gateway pass the additional header "X-Api-Key", if it matches the `secret_api_key` value then the function will give access, otherwise access denied.
|
||||
Then when calling via the gateway pass the additional header "X-Api-Key", if it matches the `secret_api_key` value then the function will give access, otherwise access denied.
|
||||
|
||||
|
12
sample-functions/ApiKeyProtected/build.sh
Executable file
12
sample-functions/ApiKeyProtected/build.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
echo Building functions/api-key-protected:build
|
||||
|
||||
docker build --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy \
|
||||
-t functions/api-key-protected . -f Dockerfile.build
|
||||
|
||||
docker create --name render_extract functions/api-key-protected
|
||||
docker cp render_extract:/go/src/app/app ./app
|
||||
docker rm -f render_extract
|
||||
|
||||
echo Building functions/api-key-protected:latest
|
||||
docker build --no-cache -t functions/api-key-protected:latest .
|
@ -4,21 +4,15 @@ import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/openfaas/faas/watchdog/types"
|
||||
)
|
||||
|
||||
func handle(body []byte) {
|
||||
key := os.Getenv("Http_X_Api_Key")
|
||||
|
||||
secretBytes, err := ioutil.ReadFile("/run/secrets/secret_api_key")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
secret := strings.TrimSpace(string(secretBytes))
|
||||
|
||||
if key == secret {
|
||||
func handle(header http.Header, body []byte) {
|
||||
key := header.Get("X-Api-Key")
|
||||
if key == os.Getenv("secret_api_key") {
|
||||
fmt.Println("Unlocked the function!")
|
||||
} else {
|
||||
fmt.Println("Access denied!")
|
||||
@ -27,5 +21,9 @@ func handle(body []byte) {
|
||||
|
||||
func main() {
|
||||
bytes, _ := ioutil.ReadAll(os.Stdin)
|
||||
handle(bytes)
|
||||
req, err := types.UnmarshalRequest(bytes)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
handle(req.Header, req.Body.Raw)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user