blob: 8b9726ba4ea471f0dbefe2bf91308f989bab6643 [file] [log] [blame]
Skyler Grey8b0e52f2023-05-01 21:31:07 +00001{
2 "apps": {
3 "http": {
4 "servers": {
5 "srv0": {
6 "listen": [":443"],
7 "routes": [
8 {
9 "match": [
10 {
11 "host": ["signup.hopescaramels.com"]
12 }
13 ],
14 "handle": [
15 {
16 "handler": "subroute",
17 "routes": [
18 {
19 "handle": [
20 {
21 "handler": "reverse_proxy",
22 "upstreams": [
23 {
24 "dial": "192.168.0.4:3035"
25 }
26 ]
27 }
28 ]
29 }
30 ]
31 }
32 ],
33 "terminal": true
34 },
35 {
36 "match": [
37 {
38 "host": ["homebridge.coded.codes"]
39 }
40 ],
41 "handle": [
42 {
43 "handler": "subroute",
44 "routes": [
45 {
46 "handle": [
47 {
48 "handler": "reverse_proxy",
49 "upstreams": [
50 {
51 "dial": "localhost:8581"
52 }
53 ]
54 }
55 ]
56 }
57 ]
58 }
59 ],
60 "terminal": true
61 },
62 {
63 "match": [
64 {
65 "host": [
66 "mail.coded.codes",
67 "mail.clicks.codes",
68 "mail.hopescaramels.com"
69 ]
70 }
71 ],
72 "handle": [
73 {
74 "handler": "subroute",
75 "routes": [
76 {
77 "handle": [
78 {
79 "handler": "reverse_proxy",
80 "transport": {
81 "protocol": "http"
82 },
83 "upstreams": [
84 {
85 "dial": "localhost:1080"
86 }
87 ]
88 }
89 ]
90 }
91 ]
92 }
93 ],
94 "terminal": true
95 },
96 {
97 "match": [
98 {
99 "host": ["etherpad.clicks.codes"]
100 }
101 ],
102 "handle": [
103 {
104 "handler": "subroute",
105 "routes": [
106 {
107 "handle": [
108 {
109 "handler": "reverse_proxy",
110 "upstreams": [
111 {
112 "dial": "127.0.0.1:9001"
113 }
114 ]
115 }
116 ]
117 }
118 ]
119 }
120 ],
121 "terminal": true
122 },
123 {
124 "match": [
125 {
126 "host": ["www.hopescaramels.com"]
127 }
128 ],
129 "handle": [
130 {
131 "handler": "subroute",
132 "routes": [
133 {
134 "handle": [
135 {
136 "handler": "static_response",
137 "headers": {
138 "Location": ["https://etsy.com/shop/HopesCaramels"]
139 },
140 "status_code": 302
141 }
142 ]
143 }
144 ]
145 }
146 ],
147 "terminal": true
148 },
149 {
150 "match": [
151 {
152 "host": ["jellyfin.coded.codes"]
153 }
154 ],
155 "handle": [
156 {
157 "handler": "subroute",
158 "routes": [
159 {
160 "handle": [
161 {
162 "handler": "reverse_proxy",
163 "upstreams": [
164 {
165 "dial": "localhost:8096"
166 }
167 ]
168 }
169 ]
170 }
171 ]
172 }
173 ],
174 "terminal": true
175 },
176 {
177 "match": [
178 {
179 "host": ["codedpc.coded.codes"]
180 }
181 ],
182 "handle": [
183 {
184 "handler": "subroute",
185 "routes": [
186 {
187 "handle": [
188 {
189 "handler": "reverse_proxy",
190 "upstreams": [
191 {
192 "dial": "192.168.0.2:3389"
193 }
194 ]
195 }
196 ]
197 }
198 ]
199 }
200 ],
201 "terminal": true
202 },
203 {
204 "match": [
205 {
206 "host": ["testing.coded.codes"]
207 }
208 ],
209 "handle": [
210 {
211 "handler": "subroute",
212 "routes": [
213 {
214 "handle": [
215 {
216 "handler": "reverse_proxy",
217 "upstreams": [
218 {
219 "dial": "192.168.0.2:3030"
220 }
221 ]
222 }
223 ]
224 }
225 ]
226 }
227 ],
228 "terminal": true
229 },
230 {
231 "match": [
232 {
233 "host": ["kavita.coded.codes"]
234 }
235 ],
236 "handle": [
237 {
238 "handler": "subroute",
239 "routes": [
240 {
241 "handle": [
242 {
243 "handler": "reverse_proxy",
244 "upstreams": [
245 {
246 "dial": "localhost:5000"
247 }
248 ]
249 }
250 ]
251 }
252 ]
253 }
254 ],
255 "terminal": true
256 },
257 {
258 "match": [
259 {
260 "host": ["hopescaramels.com"]
261 }
262 ],
263 "handle": [
264 {
265 "handler": "subroute",
266 "routes": [
267 {
268 "handle": [
269 {
270 "handler": "static_response",
271 "headers": {
272 "Location": ["https://etsy.com/shop/HopesCaramels"]
273 },
274 "status_code": 302
275 }
276 ]
277 }
278 ]
279 }
280 ],
281 "terminal": true
282 },
283 {
284 "match": [
285 {
286 "host": ["api.clicks.codes"]
287 }
288 ],
289 "handle": [
290 {
291 "handler": "subroute",
292 "routes": [
293 {
294 "handle": [
295 {
296 "handler": "subroute",
297 "routes": [
298 {
299 "handle": [
300 {
301 "handler": "rewrite",
302 "strip_path_prefix": "/nucleus"
303 }
304 ]
305 },
306 {
307 "handle": [
308 {
309 "handler": "reverse_proxy",
310 "upstreams": [
311 {
312 "dial": "127.0.0.1:10000"
313 }
314 ]
315 }
316 ]
317 }
318 ]
319 }
320 ],
321 "match": [
322 {
323 "path": ["/nucleus/*"]
324 }
325 ]
326 },
327 {
328 "handle": [
329 {
330 "handler": "static_response",
331 "status_code": 503
332 }
333 ]
334 }
335 ]
336 }
337 ],
338 "terminal": true
339 },
340 {
341 "match": [
342 {
343 "host": ["omv.coded.codes"]
344 }
345 ],
346 "handle": [
347 {
348 "handler": "subroute",
349 "routes": [
350 {
351 "handle": [
352 {
353 "handler": "reverse_proxy",
354 "upstreams": [
355 {
356 "dial": "localhost:6773"
357 }
358 ]
359 }
360 ]
361 }
362 ]
363 }
364 ],
365 "terminal": true
366 },
367 {
368 "match": [
369 {
370 "host": ["api.coded.codes"]
371 }
372 ],
373 "handle": [
374 {
375 "handler": "subroute",
376 "routes": [
377 {
378 "handle": [
379 {
380 "handler": "subroute",
381 "routes": [
382 {
383 "handle": [
384 {
385 "handler": "rewrite",
386 "strip_path_prefix": "/nucleus"
387 }
388 ]
389 },
390 {
391 "handle": [
392 {
393 "handler": "reverse_proxy",
394 "upstreams": [
395 {
396 "dial": "192.168.0.2:10000"
397 }
398 ]
399 }
400 ]
401 }
402 ]
403 }
404 ],
405 "match": [
406 {
407 "path": ["/nucleus/*"]
408 }
409 ]
410 },
411 {
412 "handle": [
413 {
414 "handler": "static_response",
415 "status_code": 404
416 }
417 ]
418 }
419 ]
420 }
421 ],
422 "terminal": true
423 },
424 {
425 "match": [
426 {
427 "host": ["www.clicks.codes"]
428 }
429 ],
430 "handle": [
431 {
432 "handler": "subroute",
433 "routes": [
434 {
435 "handle": [
436 {
437 "handler": "static_response",
438 "headers": {
439 "Location": [
440 "https://clicks.codes{http.request.uri}"
441 ]
442 },
443 "status_code": 302
444 }
445 ]
446 }
447 ]
448 }
449 ],
450 "terminal": true
451 },
452 {
453 "match": [
454 {
455 "host": ["clicks.codes"]
456 }
457 ],
458 "handle": [
459 {
460 "handler": "subroute",
461 "routes": [
462 {
463 "handle": [
464 {
465 "handler": "reverse_proxy",
466 "upstreams": [
467 {
468 "dial": "127.0.0.1:3000"
469 }
470 ]
471 }
472 ]
473 }
474 ]
475 }
476 ],
477 "terminal": true
478 },
479 {
480 "match": [
481 {
482 "host": ["coded.codes"]
483 }
484 ],
485 "handle": [
486 {
487 "handler": "subroute",
488 "routes": [
489 {
490 "handle": [
491 {
492 "handler": "static_response",
493 "headers": {
494 "Location": [
495 "https://clicks.codes{http.request.uri}"
496 ]
497 },
498 "status_code": 302
499 }
500 ]
501 }
502 ]
503 }
504 ],
505 "terminal": true
506 }
507 ]
508 },
509 "srv1": {
510 "listen": [":80"],
511 "routes": [
512 {
513 "match": [
514 {
515 "host": [
516 "mail.clicks.codes",
517 "mail.coded.codes",
518 "mail.hopescaramels.com",
519 "autoconfig.coded.codes",
520 "autoconfig.clicks.codes",
521 "autoconfig.hopescaramels.com",
522
523 "imap.coded.codes",
524 "imap.clicks.codes",
525 "imap.hopescaramels.com",
526 "pop.coded.codes",
527 "pop.clicks.codes",
528 "pop.hopescaramels.com",
529 "smtp.coded.codes",
530 "smtp.clicks.codes",
531 "smtp.hopescaramels.com"
532 ]
533 }
534 ],
535 "handle": [
536 {
537 "handler": "subroute",
538 "routes": [
539 {
540 "handle": [
541 {
542 "handler": "reverse_proxy",
543 "upstreams": [
544 {
545 "dial": "localhost:1080"
546 }
547 ]
548 }
549 ]
550 }
551 ]
552 }
553 ],
554 "terminal": true
555 }
556 ]
557 }
558 }
559 },
560 "layer4": {
561 "servers": {
562 "smtp-25": {
563 "listen": ["0.0.0.0:25"],
564 "routes": [
565 {
566 "handle": [
567 {
568 "handler": "proxy",
569 "proxy_protocol": "v2",
570 "upstreams": [{ "dial": ["127.0.0.1:1025"] }]
571 }
572 ]
573 }
574 ]
575 },
576 "smtp-465": {
577 "listen": ["0.0.0.0:465"],
578 "routes": [
579 {
580 "handle": [
581 {
582 "handler": "proxy",
583 "proxy_protocol": "v2",
584 "upstreams": [{ "dial": ["127.0.0.1:1465"] }]
585 }
586 ]
587 }
588 ]
589 },
590 "smtp-587": {
591 "listen": ["0.0.0.0:587"],
592 "routes": [
593 {
594 "handle": [
595 {
596 "handler": "proxy",
597 "proxy_protocol": "v2",
598 "upstreams": [{ "dial": ["127.0.0.1:1587"] }]
599 }
600 ]
601 }
602 ]
603 },
604 "pop-110": {
605 "listen": ["0.0.0.0:110"],
606 "routes": [
607 {
608 "handle": [
609 {
610 "handler": "proxy",
611 "proxy_protocol": "v2",
612 "upstreams": [{ "dial": ["127.0.0.1:1110"] }]
613 }
614 ]
615 }
616 ]
617 },
618 "pop-995": {
619 "listen": ["0.0.0.0:995"],
620 "routes": [
621 {
622 "handle": [
623 {
624 "handler": "proxy",
625 "proxy_protocol": "v2",
626 "upstreams": [{ "dial": ["127.0.0.1:1995"] }]
627 }
628 ]
629 }
630 ]
631 },
632 "imap-143": {
633 "listen": ["0.0.0.0:143"],
634 "routes": [
635 {
636 "handle": [
637 {
638 "handler": "proxy",
639 "proxy_protocol": "v2",
640 "upstreams": [{ "dial": ["127.0.0.1:1143"] }]
641 }
642 ]
643 }
644 ]
645 },
646 "imap-993": {
647 "listen": ["0.0.0.0:993"],
648 "routes": [
649 {
650 "handle": [
651 {
652 "handler": "proxy",
653 "proxy_protocol": "v2",
654 "upstreams": [{ "dial": ["127.0.0.1:1993"] }]
655 }
656 ]
657 }
658 ]
659 }
660 }
661 }
662 }
663}