diff options
Diffstat (limited to 'dhall/server')
-rw-r--r-- | dhall/server/Server.dhall | 9 | ||||
-rw-r--r-- | dhall/server/functions.dhall | 1 | ||||
-rw-r--r-- | dhall/server/mkServer.dhall | 17 | ||||
-rw-r--r-- | dhall/server/service/Service.dhall | 5 | ||||
-rw-r--r-- | dhall/server/service/functions.dhall | 1 | ||||
-rw-r--r-- | dhall/server/service/plugin/Config.dhall | 9 | ||||
-rw-r--r-- | dhall/server/service/plugin/CorrelationId.dhall | 11 | ||||
-rw-r--r-- | dhall/server/service/plugin/Plugin.dhall | 1 | ||||
-rw-r--r-- | dhall/server/service/plugin/functions.dhall | 9 | ||||
-rw-r--r-- | dhall/server/service/plugin/mkIPRestriction.dhall | 11 | ||||
-rw-r--r-- | dhall/server/service/plugin/mkRequestTermination.dhall | 20 | ||||
-rw-r--r-- | dhall/server/service/plugin/mkRequestTransformer.dhall | 11 | ||||
-rw-r--r-- | dhall/server/service/route/Route.dhall | 1 |
13 files changed, 106 insertions, 0 deletions
diff --git a/dhall/server/Server.dhall b/dhall/server/Server.dhall new file mode 100644 index 0000000..beddd7d --- /dev/null +++ b/dhall/server/Server.dhall | |||
@@ -0,0 +1,9 @@ | |||
1 | let Service = ./service/Service.dhall | ||
2 | |||
3 | in { kong_app_admin_url : | ||
4 | Text | ||
5 | , kong_app_admin_apikey : | ||
6 | Text | ||
7 | , services : | ||
8 | List Service | ||
9 | } | ||
diff --git a/dhall/server/functions.dhall b/dhall/server/functions.dhall new file mode 100644 index 0000000..2775fb9 --- /dev/null +++ b/dhall/server/functions.dhall | |||
@@ -0,0 +1 @@ | |||
{ Service = ./service/functions.dhall, mkServer = ./mkServer.dhall } | |||
diff --git a/dhall/server/mkServer.dhall b/dhall/server/mkServer.dhall new file mode 100644 index 0000000..f02055b --- /dev/null +++ b/dhall/server/mkServer.dhall | |||
@@ -0,0 +1,17 @@ | |||
1 | let Server = ./Server.dhall | ||
2 | |||
3 | in let Service = ./service/Service.dhall | ||
4 | |||
5 | in let Vault = ./../Vault.dhall | ||
6 | |||
7 | in λ(vault : Vault) | ||
8 | → λ(adminUrl : Text) | ||
9 | → λ(services : List Service) | ||
10 | → { kong_app_admin_url = | ||
11 | adminUrl | ||
12 | , kong_app_admin_apikey = | ||
13 | vault.appAdminApiKey | ||
14 | , services = | ||
15 | services | ||
16 | } | ||
17 | : Server | ||
diff --git a/dhall/server/service/Service.dhall b/dhall/server/service/Service.dhall new file mode 100644 index 0000000..f238553 --- /dev/null +++ b/dhall/server/service/Service.dhall | |||
@@ -0,0 +1,5 @@ | |||
1 | let Plugin = ./plugin/Plugin.dhall | ||
2 | |||
3 | in let Route = ./route/Route.dhall | ||
4 | |||
5 | in { name : Text, url : Text, plugins : List Plugin, routes : List Route } | ||
diff --git a/dhall/server/service/functions.dhall b/dhall/server/service/functions.dhall new file mode 100644 index 0000000..08f25c0 --- /dev/null +++ b/dhall/server/service/functions.dhall | |||
@@ -0,0 +1 @@ | |||
{ Plugin = ./plugin/functions.dhall } | |||
diff --git a/dhall/server/service/plugin/Config.dhall b/dhall/server/service/plugin/Config.dhall new file mode 100644 index 0000000..73a333f --- /dev/null +++ b/dhall/server/service/plugin/Config.dhall | |||
@@ -0,0 +1,9 @@ | |||
1 | < CorrelationId : | ||
2 | { header_name : Text, echo_downstream : Bool } | ||
3 | | RequestTransformer : | ||
4 | { `add.headers` : Text } | ||
5 | | RequestTermination : | ||
6 | { status_code : Natural, content_type : Text, body : Text } | ||
7 | | IPRestriction : | ||
8 | { whitelist : Text } | ||
9 | > | ||
diff --git a/dhall/server/service/plugin/CorrelationId.dhall b/dhall/server/service/plugin/CorrelationId.dhall new file mode 100644 index 0000000..d96bfc9 --- /dev/null +++ b/dhall/server/service/plugin/CorrelationId.dhall | |||
@@ -0,0 +1,11 @@ | |||
1 | let Plugin = ./Plugin.dhall | ||
2 | |||
3 | in let config = constructors ./Config.dhall | ||
4 | |||
5 | in { name = | ||
6 | "correlation-id" | ||
7 | , config = | ||
8 | config.CorrelationId | ||
9 | { header_name = "X-correl", echo_downstream = True } | ||
10 | } | ||
11 | : Plugin | ||
diff --git a/dhall/server/service/plugin/Plugin.dhall b/dhall/server/service/plugin/Plugin.dhall new file mode 100644 index 0000000..548061c --- /dev/null +++ b/dhall/server/service/plugin/Plugin.dhall | |||
@@ -0,0 +1 @@ | |||
let Config = ./Config.dhall in { name : Text, config : Config } | |||
diff --git a/dhall/server/service/plugin/functions.dhall b/dhall/server/service/plugin/functions.dhall new file mode 100644 index 0000000..dcf2c9a --- /dev/null +++ b/dhall/server/service/plugin/functions.dhall | |||
@@ -0,0 +1,9 @@ | |||
1 | { mkRequestTermination = | ||
2 | ./mkRequestTermination.dhall | ||
3 | , mkRequestTransformer = | ||
4 | ./mkRequestTransformer.dhall | ||
5 | , mkIPRestriction = | ||
6 | ./mkIPRestriction.dhall | ||
7 | , CorrelationId = | ||
8 | ./CorrelationId.dhall | ||
9 | } | ||
diff --git a/dhall/server/service/plugin/mkIPRestriction.dhall b/dhall/server/service/plugin/mkIPRestriction.dhall new file mode 100644 index 0000000..f803769 --- /dev/null +++ b/dhall/server/service/plugin/mkIPRestriction.dhall | |||
@@ -0,0 +1,11 @@ | |||
1 | let Plugin = ./Plugin.dhall | ||
2 | |||
3 | in let config = constructors ./Config.dhall | ||
4 | |||
5 | in λ(whiteList : Text) | ||
6 | → { name = | ||
7 | "ip-restriction" | ||
8 | , config = | ||
9 | config.IPRestriction { whitelist = whiteList } | ||
10 | } | ||
11 | : Plugin | ||
diff --git a/dhall/server/service/plugin/mkRequestTermination.dhall b/dhall/server/service/plugin/mkRequestTermination.dhall new file mode 100644 index 0000000..aff538f --- /dev/null +++ b/dhall/server/service/plugin/mkRequestTermination.dhall | |||
@@ -0,0 +1,20 @@ | |||
1 | let Plugin = ./Plugin.dhall | ||
2 | |||
3 | in let config = constructors ./Config.dhall | ||
4 | |||
5 | in λ(statusCode : Natural) | ||
6 | → λ(contentType : Text) | ||
7 | → λ(body : Text) | ||
8 | → { name = | ||
9 | "request-termination" | ||
10 | , config = | ||
11 | config.RequestTermination | ||
12 | { status_code = | ||
13 | statusCode | ||
14 | , content_type = | ||
15 | contentType | ||
16 | , body = | ||
17 | body | ||
18 | } | ||
19 | } | ||
20 | : Plugin | ||
diff --git a/dhall/server/service/plugin/mkRequestTransformer.dhall b/dhall/server/service/plugin/mkRequestTransformer.dhall new file mode 100644 index 0000000..90789c8 --- /dev/null +++ b/dhall/server/service/plugin/mkRequestTransformer.dhall | |||
@@ -0,0 +1,11 @@ | |||
1 | let Plugin = ./Plugin.dhall | ||
2 | |||
3 | in let config = constructors ./Config.dhall | ||
4 | |||
5 | in λ(header : Text) | ||
6 | → { name = | ||
7 | "request-transformer" | ||
8 | , config = | ||
9 | config.RequestTransformer { `add.headers` = header } | ||
10 | } | ||
11 | : Plugin | ||
diff --git a/dhall/server/service/route/Route.dhall b/dhall/server/service/route/Route.dhall new file mode 100644 index 0000000..c0fa1a9 --- /dev/null +++ b/dhall/server/service/route/Route.dhall | |||
@@ -0,0 +1 @@ | |||
{ paths : List Text, protocols : List Text, hosts : List Text } | |||