You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 37afc69
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/onebox.run-v1.schema.json
+184-5Lines changed: 184 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -578,10 +578,11 @@
578
578
"type": "object"
579
579
},
580
580
"domain": {
581
-
"description": "Domain shorthand for one HTTPS route; requires port and cannot be combined with routes.",
581
+
"description": "Domain shorthand for one HTTPS route; requires port and cannot be combined with routes. Expects an exact host with no wildcard, control character or backtick; use wildcard_suffix for wildcard routing.",
582
582
"examples": [
583
583
"shop.example.com"
584
584
],
585
+
"pattern": "^[^\\x00-\\x1f\\x7f`*]+$",
585
586
"type": "string"
586
587
},
587
588
"environments": {
@@ -1169,10 +1170,45 @@
1169
1170
},
1170
1171
"properties": {
1171
1172
"config": {
1172
-
"description": "Repository-relative proxy configuration directory. Dynamic YAML or TOML files extend Onebox's managed configuration. Including traefik.yml or traefik.yaml instead takes ownership of the static configuration, which must use the watched file-provider directory /etc/traefik/dynamic, must not enable the Docker provider, and must define certificatesResolvers.letsencrypt when a route terminates TLS. Dynamic files may not reuse Onebox-generated router or service names or redefine the managed onebox-compress middleware. Expects a path inside the repository, with no control character or shell metacharacter.",
1173
+
"description": "Repository-relative proxy configuration directory. Dynamic YAML or TOML files extend Onebox's managed configuration. A managed DNS challenge may use a directory containing only .env for provider credentials. Including traefik.yml or traefik.yaml instead takes ownership of the static configuration, which must use the watched file-provider directory /etc/traefik/dynamic, must not enable the Docker provider, must define certificatesResolvers.letsencrypt for exact terminating routes, and must define the DNS-01 certificatesResolvers.onebox-wildcard for wildcard terminating routes. Dynamic files may not reuse Onebox-generated router or service names or redefine the managed onebox-compress middleware. Expects a path inside the repository, with no control character or shell metacharacter.",
"description": "Managed ACME DNS-01 challenge used to issue wildcard certificates. Provider credentials belong in proxy.config/.env; Onebox continues to own the static proxy configuration.",
1180
+
"patternProperties": {
1181
+
"^x-": {}
1182
+
},
1183
+
"properties": {
1184
+
"provider": {
1185
+
"description": "Traefik DNS challenge provider name. Its credential variables must be supplied through proxy.config/.env. Expects a lower-case Traefik DNS provider name such as cloudflare or route53.",
1186
+
"examples": [
1187
+
"cloudflare"
1188
+
],
1189
+
"pattern": "^[a-z][a-z0-9_-]*$",
1190
+
"type": "string"
1191
+
},
1192
+
"resolvers": {
1193
+
"description": "DNS resolvers used to verify challenge propagation, written as host:port.",
1194
+
"examples": [
1195
+
[
1196
+
"1.1.1.1:53"
1197
+
]
1198
+
],
1199
+
"items": {
1200
+
"description": "Expects a lower-case DNS name, IPv4 address, or bracketed IPv6 address followed by a port.",
"description": "Ingress routes exposed by this workload.",
1263
1299
"items": {
1264
1300
"additionalProperties": false,
1301
+
"allOf": [
1302
+
{
1303
+
"if": {
1304
+
"properties": {
1305
+
"domain": {
1306
+
"const": "*"
1307
+
}
1308
+
},
1309
+
"required": [
1310
+
"domain"
1311
+
]
1312
+
},
1313
+
"then": {
1314
+
"properties": {
1315
+
"protocol": {
1316
+
"const": "tcp"
1317
+
},
1318
+
"tls": {
1319
+
"enum": [
1320
+
"none",
1321
+
"passthrough"
1322
+
]
1323
+
}
1324
+
},
1325
+
"required": [
1326
+
"protocol",
1327
+
"tls"
1328
+
]
1329
+
}
1330
+
}
1331
+
],
1332
+
"oneOf": [
1333
+
{
1334
+
"not": {
1335
+
"required": [
1336
+
"wildcard_suffix"
1337
+
]
1338
+
},
1339
+
"required": [
1340
+
"domain"
1341
+
]
1342
+
},
1343
+
{
1344
+
"not": {
1345
+
"required": [
1346
+
"domain"
1347
+
]
1348
+
},
1349
+
"required": [
1350
+
"wildcard_suffix"
1351
+
]
1352
+
}
1353
+
],
1265
1354
"patternProperties": {
1266
1355
"^x-": {}
1267
1356
},
1268
1357
"properties": {
1269
1358
"domain": {
1270
-
"description": "DNS name matched by the proxy.",
1359
+
"anyOf": [
1360
+
{
1361
+
"description": "Expects an exact host with no wildcard, control character or backtick; use wildcard_suffix for wildcard routing.",
1362
+
"pattern": "^[^\\x00-\\x1f\\x7f`*]+$"
1363
+
},
1364
+
{
1365
+
"const": "*"
1366
+
}
1367
+
],
1368
+
"description": "Exact DNS name matched by the proxy. Mutually exclusive with wildcard_suffix.",
1271
1369
"examples": [
1272
1370
"shop.example.com"
1273
1371
],
@@ -1330,6 +1428,15 @@
1330
1428
"none"
1331
1429
],
1332
1430
"type": "string"
1431
+
},
1432
+
"wildcard_suffix": {
1433
+
"description": "DNS suffix whose immediate subdomains are matched. For example, example.com matches shop.example.com but not example.com or a.b.example.com. Mutually exclusive with domain.",
"description": "Domain shorthand for one HTTPS route; requires port and cannot be combined with routes.",
2161
+
"description": "Domain shorthand for one HTTPS route; requires port and cannot be combined with routes. Expects an exact host with no wildcard, control character or backtick; use wildcard_suffix for wildcard routing.",
2055
2162
"examples": [
2056
2163
"shop.example.com"
2057
2164
],
2165
+
"pattern": "^[^\\x00-\\x1f\\x7f`*]+$",
2058
2166
"type": "string"
2059
2167
},
2060
2168
"drain": {
@@ -2662,12 +2770,74 @@
2662
2770
"description": "Ingress routes exposed by this workload.",
2663
2771
"items": {
2664
2772
"additionalProperties": false,
2773
+
"allOf": [
2774
+
{
2775
+
"if": {
2776
+
"properties": {
2777
+
"domain": {
2778
+
"const": "*"
2779
+
}
2780
+
},
2781
+
"required": [
2782
+
"domain"
2783
+
]
2784
+
},
2785
+
"then": {
2786
+
"properties": {
2787
+
"protocol": {
2788
+
"const": "tcp"
2789
+
},
2790
+
"tls": {
2791
+
"enum": [
2792
+
"none",
2793
+
"passthrough"
2794
+
]
2795
+
}
2796
+
},
2797
+
"required": [
2798
+
"protocol",
2799
+
"tls"
2800
+
]
2801
+
}
2802
+
}
2803
+
],
2804
+
"oneOf": [
2805
+
{
2806
+
"not": {
2807
+
"required": [
2808
+
"wildcard_suffix"
2809
+
]
2810
+
},
2811
+
"required": [
2812
+
"domain"
2813
+
]
2814
+
},
2815
+
{
2816
+
"not": {
2817
+
"required": [
2818
+
"domain"
2819
+
]
2820
+
},
2821
+
"required": [
2822
+
"wildcard_suffix"
2823
+
]
2824
+
}
2825
+
],
2665
2826
"patternProperties": {
2666
2827
"^x-": {}
2667
2828
},
2668
2829
"properties": {
2669
2830
"domain": {
2670
-
"description": "DNS name matched by the proxy.",
2831
+
"anyOf": [
2832
+
{
2833
+
"description": "Expects an exact host with no wildcard, control character or backtick; use wildcard_suffix for wildcard routing.",
2834
+
"pattern": "^[^\\x00-\\x1f\\x7f`*]+$"
2835
+
},
2836
+
{
2837
+
"const": "*"
2838
+
}
2839
+
],
2840
+
"description": "Exact DNS name matched by the proxy. Mutually exclusive with wildcard_suffix.",
2671
2841
"examples": [
2672
2842
"shop.example.com"
2673
2843
],
@@ -2730,6 +2900,15 @@
2730
2900
"none"
2731
2901
],
2732
2902
"type": "string"
2903
+
},
2904
+
"wildcard_suffix": {
2905
+
"description": "DNS suffix whose immediate subdomains are matched. For example, example.com matches shop.example.com but not example.com or a.b.example.com. Mutually exclusive with domain.",
0 commit comments