From bc034e34659b520d776af0992392992ad9767bee Mon Sep 17 00:00:00 2001 From: Evan Jarrett Date: Sun, 8 Feb 2026 20:50:31 -0600 Subject: [PATCH] updated favicons, fix domain rerouting, fix deploy provisioning --- deploy/upcloud/provision.go | 52 ++++++++++ pkg/appview/public/apple-touch-icon.png | Bin 5471 -> 5161 bytes pkg/appview/public/atcr.png | Bin 0 -> 48302 bytes pkg/appview/public/favicon-96x96.png | Bin 2988 -> 3084 bytes pkg/appview/public/favicon.ico | Bin 15086 -> 15086 bytes pkg/appview/public/favicon.svg | 91 +++++++++++++++--- .../public/web-app-manifest-192x192.png | Bin 5400 -> 4370 bytes .../public/web-app-manifest-512x512.png | Bin 16633 -> 14096 bytes pkg/appview/server.go | 69 +++++++++---- 9 files changed, 180 insertions(+), 32 deletions(-) create mode 100644 pkg/appview/public/atcr.png diff --git a/deploy/upcloud/provision.go b/deploy/upcloud/provision.go index 83d54c0..9f204ef 100644 --- a/deploy/upcloud/provision.go +++ b/deploy/upcloud/provision.go @@ -256,6 +256,11 @@ func cmdProvision(token, zone, plan, sshKeyPath, s3Secret string) error { saveState(state) } + // Always reconcile forwarded headers rule (handles existing LBs) + if err := ensureLBForwardedHeaders(ctx, svc, state.LB.UUID); err != nil { + return fmt.Errorf("LB forwarded headers: %w", err) + } + // Always reconcile TLS certs (handles partial failures and re-runs) tlsDomains := []string{cfg.BaseDomain} tlsDomains = append(tlsDomains, cfg.RegistryDomains...) @@ -566,6 +571,14 @@ func createLoadBalancer(ctx context.Context, svc *service.Service, cfg *InfraCon {Name: "public"}, }, Rules: []request.LoadBalancerFrontendRule{ + { + Name: "set-forwarded-headers", + Priority: 1, + Matchers: []upcloud.LoadBalancerMatcher{}, + Actions: []upcloud.LoadBalancerAction{ + request.NewLoadBalancerSetForwardedHeadersAction(), + }, + }, { Name: "route-hold", Priority: 10, @@ -720,6 +733,45 @@ func ensureLBCertificates(ctx context.Context, svc *service.Service, lbUUID stri return nil } +// ensureLBForwardedHeaders ensures the "https" frontend has a set_forwarded_headers rule. +// This makes the LB set X-Forwarded-For, X-Forwarded-Proto, and X-Forwarded-Port headers, +// overwriting any pre-existing values (prevents spoofing). +func ensureLBForwardedHeaders(ctx context.Context, svc *service.Service, lbUUID string) error { + rules, err := svc.GetLoadBalancerFrontendRules(ctx, &request.GetLoadBalancerFrontendRulesRequest{ + ServiceUUID: lbUUID, + FrontendName: "https", + }) + if err != nil { + return fmt.Errorf("get frontend rules: %w", err) + } + + for _, r := range rules { + if r.Name == "set-forwarded-headers" { + fmt.Println(" Forwarded headers rule: exists") + return nil + } + } + + _, err = svc.CreateLoadBalancerFrontendRule(ctx, &request.CreateLoadBalancerFrontendRuleRequest{ + ServiceUUID: lbUUID, + FrontendName: "https", + Rule: request.LoadBalancerFrontendRule{ + Name: "set-forwarded-headers", + Priority: 1, + Matchers: []upcloud.LoadBalancerMatcher{}, + Actions: []upcloud.LoadBalancerAction{ + request.NewLoadBalancerSetForwardedHeadersAction(), + }, + }, + }) + if err != nil { + return fmt.Errorf("create forwarded headers rule: %w", err) + } + fmt.Println(" Forwarded headers rule: created") + + return nil +} + // lookupObjectStorage discovers details of an existing Managed Object Storage. func lookupObjectStorage(ctx context.Context, svc *service.Service, uuid string) (ObjectStorageState, error) { storage, err := svc.GetManagedObjectStorage(ctx, &request.GetManagedObjectStorageRequest{ diff --git a/pkg/appview/public/apple-touch-icon.png b/pkg/appview/public/apple-touch-icon.png index 97531ba5ee18a399ad3755b39e8950d99ff970a9..15e68ef9a4ff6a87bfd5c21a2aaa4c76457fbec2 100644 GIT binary patch literal 5161 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 jV*lrzuK&3#%I7h2{vee-~)q)7l#1B-JRg> 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 diff --git a/pkg/appview/public/atcr.png b/pkg/appview/public/atcr.png new file mode 100644 index 0000000000000000000000000000000000000000..c4efe28cb92cc072a52fb4dc2ef7bf080e5c1b9d GIT binary patch literal 48302 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 literal 0 HcmV?d00001 diff --git a/pkg/appview/public/favicon-96x96.png b/pkg/appview/public/favicon-96x96.png index 8b9ed2cb3ed761e4911a01e44e6ef8fad204c771..91a0aefc637f8feb073be042eddfb98ba97ba355 100644 GIT binary patch delta 3078 zcmV+h4Egh{7mOH?B!AOML_t(|UhSO=aFbOQ$Nzb!ZA#NOltO{@0R?$U(G?U|6zPg( zdAKM$in!uyVOJbik<}G-cN}$e)P)sAQFmt@k%tN@P_1sQAfO-!S{{91OP`cBY15>6 zH9O~~d3^oS^lQNhHTO5e3{CEro814s=bm%!$rsse2a4SofPWm>@FtFIc#FOBM{dl; zBL%qw@KXRXE#?CSaa+4Jpm!b&Tx7+PTNtF{O zn;ZEC6_g5D(0_KPjV{(MKU0OIXnD{!Qu^}}Qh>%ICvjxmd#tVAFbsJQFA;Uie~W9e949=QAwIRpZHDM~T|d;OD<%MyDG{jDG@(mkfd`h)`1clO#a-juKSt zDE2kJ?zKlnZ>qhn340%3?|XdwJqwXKd9d4VF*Uiuzu;yB(jDIXx33L5>}_#ERM!mOHRwm&Nz^&c!;6iWjdaDg8+l zpcoZ9N`FEMV6JV%*K1z$wYlW3`4~J!9F^{Qd_636O{`tYrDHJR?gc>v=)J%G31ISF zw>(dS6+r~})2?>xF82svNRZ=`AOesXyMMP|fRApDK~|!8HRVX?j|YjnWE@Y%@pLr7-Ow(0E{NxXcrJ*ai17m%ejr2eGvO|RRbhDH+0ZU{ zDuSmXcq)RYB6unyK-ktFF*s=_GM&=;|U1 zwjOt|HWLRcuxWu#^!`e!9Jq6bzclfGOLQ2b6W4}H>Ca2ZTu_J6j33_okQLw>3T9yF z^oc=a0#0rzLhYWzNE)AoaZ3w=wrM(g3V+AnEre!}4r6Z3hb}Ee)J|%DL|@#{caPbz z_L~mmCd={6%xJ_%iOb4Mo1A#`3oFbvHy)c2h3UgoqW5Qaxv~0l3oB2*d8`^MFBex( z6H@wGca57b{$VFvA51GhBc$!vzR4T!1k1ixFVLvfBsb-BRig9)Cu| zp~Gw%OwUfnl{v{_o)Z0ozB)J{1^A`F1qd^;gprd6X&>?K?&3|y%+Mra$KpUGB^dmX#7S>KCQ$VXrf?O#+@{`&h z@pHPNLv$)!k`j$k@fr+|(;zWQ3B6Wti_2Z zzpTNj<_^i1MYI43S_S?#BYz#E6UAjJ1Wo4hmJZaJ9cXNKF!Q6=DiNnuAU7!r(JFCu z1+4%Q;hWlaNg_n706B?TteKIHc&)ImhX(Mg>NXTrwBl%^1-2e+JFT3FsnM7}CIM51 z2v43 zXfPs9fR|@yAUnZt^T~Z&Q+x)8>is2$K8Hdf!w9_wX*xAhbt)+3GPvAs)SDeR(`v_Q zqs`~_&{|rTKZ3cgUVnaUvf_clD!u}|6lCjh-;`9}-?Yg-@nsG6*O&!^loqSP?Guu5 z)$rhPj~6m8+m1J5<6+PJP-l&b!vmKO7QEK)ww9sQ=IT*|h*<$-@Bce56EOjv%LgY~ zu>N49U~pz+#A4-TLqz*SPwXl;;l=&+>}l#_+fCVQgZ8re^MC4~tIJEo2ykPz9)Ap& z{T62@mV8jof+#PG#wK9tguWf_KeM+EUz~3By~aE93`mIb#}h9dsK?H-p7()>5#aSX zBauEx?Hi~qrOkN#JCErgXy!jMEln`dNu+J1EhwpKMU}}8LxKitXA6VT#oNlz+~GGd z|D2t{yeuypzJEK5t)3y1jzAieA(4@3{t+>+xdjaN)tvs@P`h z<%TRhR^<8j5PI&;k17SP`}}po1*wcT4xh#5A0u3V8#47+G1WhCKbh>f`(yvW%^w|) zyCw@$BM%or;`j*~{L`?f*QX2YD3%zxGOLi+>l6Fm_TCTP{PG+dqG z_hq1o-%t9DfA<(#YRSYFWmUn3JW)@&M0w^Ws_5|AYk^BkhgwN4r?#jxQGy7(}GOI1-O|1`nCbvyY>Lu zoN1E|giH&W7=mI4axDX|Cj!mbY(pIGzf72dkTUxt#sqZ_!Zw#S;&%UYh^V zq@u-!`*!*_&}Xk5j`1m>&w)v_c{vFJ7c&@TEjBjzWP+p+5dsus$K$>!!a(cy@0a@y zUMO%P_c1V07s#g-t$2Q49m^9@z9<+p+kbbK8JX$n%fWm^2#^w^WL`|*`4{a0v=?}x zqscoarm#qtvYKRu=x}{knGpv9&Udd!*C9VskI_k<6;oxh;ZR*WOUTuBr8fFPLjTdM`a?tsKzqQ`Gl#KqlJ3x8Qey2`qZKu6cDMsv zNQInoMk-&)Vos74D!B~r{pdfA>@N`|07038doN98DTwoh^8A$VKOcG#zzB!clQkrQ zl_qvN9k7`Esavfs8Oorgi8XM$JbwouJ(ni--k+EAtqmn_=8j3pNRRdB?)%DyLyg#a zJan$7H$n>FuvuU;dk(E-N;P8QgdscOc6Xw^rJDZ3{*H9wmlS7!gAtV2flBxps3Q+FSoNhy?=f`!0G5< zvz!WUW%A%ZVBFd1gwtk$LZyX5+4GEYbeJKND}q)}dy&!~alR{{J7k)25~Engla40o zpIqh<#B6t=w8_fi0x9W*zR;@x7b_Q9fN;SD2s2!OFvA51GhBc$!vzR4T!1k1f1^+q UN^d##yZ`_I07*qoM6N<$f)>f!&Hw-a delta 2982 zcmV;X3t9Ax7_1kNB!6>BL_t(|UhSQER8-d;$G^-l%)l_R$N&SPfPh47^NFF3va1GJe;?1=Pu9cBzo^5W>gak9*a?Rl5Q6L1h9 z>+uyx%egynXXgbUPMijFO)WcO(x3$V>wzpUjt(3f4wc|{?;Yg=1PU%dfZ+lJ7@q_v zKX3v?Tfan9dVhBeSUBD7CHQj;;i(VEt8BxgyG_ukffvVzAyKDvIe&kS@kxL^OJ0E0 z)XGjgbMb7%^mmPv{5i%O0q)Tb;dt_0+y`(Uzce;8Cu?^8lU)@H~L$0Xz@jc>vD??6_5hHcvi> zJ7MmGxqlPpPMAAk?u31I!u{svAR%jj^G)QC3E%E9-W22JT?Fvw7;gl4?w|?(_}0RXd2+M{_x4x2oV!2A_#}X- zrXGd4dk{OMFX9IEa=8G)pJTicfLQru3-nqA7Jm(KeKtVAUt@d{pfloWHMFzA1qd)) zfB?e<2rwNApj4}&P^kiZik@+;sYx6dtPFxSB-pb91B}Jm4wJWT11v4|P^#1j)wxze z34e|uZif%(qE=#HTp0T4L(x4#jd-mJI<*p-V2V`$bK7+^wpvl%Xu(BeD~?w-HSK8*{4!7?;uoa|Y-UrsT$c~#h1Sl^*|TmS$G;eRSD z%Su3>7^y!%=4D$!9kvx1QQ35@!$~A)K8hlvMca#UsnOA#$#Mnsj}67@aoxqclcL5a_m$&lMYGGi)9M(O z7>-d%;Yg3xAXck_CRhP;TRTeYEjU!xi0uVNgsK#nk`aYsqZ#`yHnPv52!HCGoSvdn zCx7tQuPYqBLv{j$hbXWnI~CCy>1~PY@~W}vjP0$v_Vnti!P1cibng-({@HpRs57@A zS`#b^SZlT-T%|yWG6=67y@F5jjpF#6j7Z!+#P%+9S_QK=7qTcyKz0Hw9u|j5X_4Xt z9ItG_pZ1iwOg=f%-wf1?d4B*+-ntXj>~5$3j!-MHEX#l)2Cc)f%XgLGWL1m!w@8f= z|D2X4inaPs1#|MU6rh_f1Z%QW#L1u-fAOa!D6F-;f>U5dpJ>d_lzu*eOw<$m%5lue zMBSYhi3f){zUiOt@cLHA1Z>^pR3z$boy9HZ>+t5WDtQX<@Q8T)EPpjZy!eA?}c1opkq;4PP@U1@YlhADqn1oGnGDb5mCM`-EhNr0e9B7A)WG zYR;C9FyN=DUD%|buYWOP$!8bkC%~BGE?ALe5HGy6!GeX`q)rqut#=fDJJ_+f`1yr; z{OvIPsE8w^eWcw|>8D@Qx?sXo&5FM!fnTSDQ|}G`_bI?^`~mE{?t{MJDMEu zN3${~zQbfM$kgMW8xtk4qtJ*~+?XKyDyM+6Z6_$NczCz!7qQ*mHoSO z0wy4f6+mp7kq%vmLcH+#+lo}Y!Wi#rG2h{Idoa9+Y3;= zhE{?7MhG%jw9BEvV#N?cIO`iz-{A4R<*bRnY^0Q3=hvEXxV#C;k!t*;yN-PhIs9i2 zUSjdTJ7lv0e%`Mu<_?UxsePvei|Y4ezuj@F%7n-Fma)5$!U{6UsK0aT^nlkoKw~V@B zJtEbt=y$2n!W!{g&)2b5XGh3J0A|nc?1o_pQUiq=ESt`{cEbFLtOTHX50#LG0w%Qv z@7sF8rGes4WF-JGZ;&1{``QvC;zVT&Yk$alv!C-;B0B-dw>~#EiEX+SpsFZEDqifV zy(tvVMu!GFG<@74I{}C=m4dY$Y1gwrL9Ll>8F3e@dqY^T0y({+SW}-`l(ZK}h?uwl zc2Jl(KQk7SGa|*vh|JK=LL;{28(9|Y4Jnao)^xcmC4y~zp+JdB8EcMJ-39^bN`Ha& zn`}?_;~2u%=L2Yy)MaPnzpzP5kWe`kl?JR%j$gz3@7a+iJ0Rl{i0%&7;K&`Vi6goR~r6+OS zYU{Oz8IoZbncdk>nbA;k2Gz&+i08^*))8Px0D6KzdUS;2Pbx@&c>q=e_#fY}J^w$@ c_Uq;U1$4PJX9-qq{Qv*}07*qoM6N<$f=Mx`ZvX%Q diff --git a/pkg/appview/public/favicon.ico b/pkg/appview/public/favicon.ico index a79a8123c5a50ad18a002f8605d18ad848295a14..9e7c7062698f9d023eedfd89ee6d461ef5107df7 100644 GIT binary patch literal 15086 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 literal 15086 zcmeHO33Qaz6`pLw*iZt+l7%Ia#HCP^1`Im}l#qo45&{$n5Dc_>KsYUGr9i8I)T#lh z_ShD**4DB}2#W%;8c9J^gb-!22eR)ZWM6OJcjN!~LuQgccA62+ymRjS_q}=l-0!~i zzIX5FbXGbWosW-BJl%D>ymUH0olfWO{%zh#r^^y$PU4C0pS0EKHj4@mh&tjGU9=#S zcaciPcXXRl32@unS(A&CgUJcMeODiA@_Vqq$;rvlPPX~5fj^*Sk9wJ$tgUq9?s7M! zyg$8LO8X#^G7m&k#=gfX<=;Ww)}QKokJ<6(p874_$T>qT4VA>HtyMhQsI9e$YKxMn z@UyLywkN`%F2?XLnB+l0zOEEA)l>GzjL~j1Z~QQs*HQ=lX{`M-_RSagE;8hrf-flV z(+!j!H(%fkWXjyXhzifeiaM8Ax5Cf1bke~X{>X7dX_}7%)i5K~>hX>2NmO94p zr^o%Anrn)vt)+qTKi${~*R5mi>XE0ZD(iTsF=a0NXj7#8GcR?E{Z?Jnd2`^;J-v>x zV{EIjr0<h7i&7!Mx@l8GZ;s0;RVhEn=&p65?|&reB_>5%jM7)eN>wC z4_U9b@ne7DBycEL8!NAJQC;z6S(f&}Y*E&(C;CLGTT}2QHP@BNd~f5&o~qzd=4pND z6~^CCnJsYvZ&P&vmzP}JA;fGKPwjc+QK>fKqpb zNvz7;t<3ybmSN5#<$dydv*CxWfK+t;PmJN}(UqLXM_$4U5^LGze{y+U$=9+hFX2Tl z!@i6@GDrI>>kVuMWn5S1{)chFo>0nQPawfAQp$iEN!hc_fgkHmb8RW($UgiOV}pH$ zH4~}q^1pa(Qm~>7^BFoQ;~(|}^5(z~xdmrm1uUvBOA-52Fk^vUrI-FrSdZG8>sd$4 z4UC_wM^|y3hU-~k{VA7rkh$s_oEU_#I>I58FQQXRh?bl$-W{h_L_Xj_YXucUQ-l{Va757%>vWDWhToLuNMq+0wGOapu(o5(Z@Q7sy1#F1qFvu_^ZjXOiLYO?Z09D1inAn9XCtj#r?_h=!axpOC4kQ z11624>5om3Si^q(F3SsB6DP~G)Un`qp|1MK(*9kKG0XU|j34Z4mi0$RYWqRU+ODOJ zW&N?NKNtfbi~VrZe%4~!XsKh_zrLUQ*Y+JjG<%8%9ZR@r|3^nWKre5cEbV74b&Rc_ z!I4WTIO@o#>S5_XHD@mbbc|_S@KT8->;uN`S=bpIa!JL2b(?) zbkBVgO-_9r2Po(FOSft4jKFV|B(PhO8Cw8xTJD1U1$7gr)gY=UW3E@9Vji*VsUw^z z#MiCI^g{_ym<- z*~_s7^<{dhE&NK{SDzGqz!yb5#No928%}JU)Jgs{Z)aNK-yUD1g}+sP@rA##j|l!e z#lHo4h^;C5{0+LEcBpIl;yxk@RY|HL=wS4$F;iH27ijG}94eGB!rW%)8enWXW zRp|GzZ1~dPGpH+07I6|w2NaV|*3U;LT%gl`Qg^T1-xBgP88&i{x0h>O5)Bf;kiJ(bv^ zoRiOU9_>+l;V&kY4>|CIR-_(a-zj{-O6*3)KG7c{Vf>?BRn`f{W=j3>yG5eCTbpWl ze6{koW=@Zn=TVs0Y74(oxb z^+y|E&4K(n5r2a5jxvSN7L8T896O0JL-IpLxk>-17G6F76*+if4q%)i4yLX+iJ#TE zXX)DU)e?^(`91Y<8k4WaVvJYIA34N{d_4yAnCyig$=kCZt%w-jV_FnAOzuBF89DGf z*~s?xHss*s`kidx0Uo2J{9Wt4jRbh#IF$E)T4 zZqp>%_EtcT$!&07a`T-@k392Hk7>-ZcXNzLZa9kyR6Yt~yEiqGvQ^eSzr0}x^ue@KH^e*KmZl<#2_c_KL@%kD2 z7n0WZaXv-7C*t04PJsDS0exAa&=qYr? z8x#UQ_6qZN%KLA=K8;SDjiRlwQ%KD#?HBs1cPQfZYcz9BJgIr;KVkCVM6{tHLf;M^ VGbjK4;MICV - - - - - - - - - - - - @ + + + + + + + + + + + + + + - \ No newline at end of file + + diff --git a/pkg/appview/public/web-app-manifest-192x192.png b/pkg/appview/public/web-app-manifest-192x192.png index 51ff795b3e498d9682e313fd0c5d7f36cc590026..4497c0fe716c4a5b23a525aa7d8942a3dd66cccd 100644 GIT binary patch literal 4370 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 literal 5400 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 Z=zTv(pV|N7YQ0i)|F*NNB$)v2h%<#vs zQSwx~X2CSVGsMh<<)qI5kICB`J@!xME1Y0;jY0_^ZXif~Lt+>z&K4XXClVL%Mc0$# z+nOA-(Z`c2W=FH@N32w%i~0OP*1vX?_NDY|<)VS{vT83YVmc_cX{5lH3y{Bq9bO{K z6h{6w$n5JV?B6?3;-g4!KL#S!S>6TeaV8BS=&D#1o!&E1#v?clgk~< zCv-%j!#Q%L_l|yaq$s|M7t(k3KbObM^`Q0Xn*OzKrm-k?t_M0JucY@!8;P)<)H!nD zLd{BklCc_6t{l!F9S#&X3__JGQtUB{6k2BMV?*56P&wB{8-y38>qQ{BS`+L~X5x9U zH zzf!gsvylkcJ--bm#`ss4wIFWi@F44#qkPc^StARS06js)&jUfR=WhDq=I+cbDzh|g z)bV!DeBw7wm~M|M5VD5r12_HvDh@FLgY3Yi`#=RBlY=BPPxpfO zi4&H2DB3+xIZ?PMIABq2r{Gsv;52o#Q%=f&1PiTiC@6M|RkHMkXFdp%%u=}S`v-@4 z(}exmy*d{|6B-eDhHmNgcg7w`r(Mq$3$ZR{Tv;50&SZJo4fOSk4(d5|tsk^bOi3ft zyxbQzwY)=%I@XC-35rFnZDcQNyK&sIo1Sj!RcWKvSQ`J&p&B?0s9Tl6OW@elbljUw zl6Y64(K8zpO66=-OEoGw zB`KZ7lE2fiX~B?6jy2o}zqZ64T&vN_^%6+9K9;e;OKWmIA5tt3I$e#Wn|BrhwNw4h zA$cVP?T7%9W1a7`!5%$S{HE-4U2df=a(xqn`c=iG1OA4qSFs)<=(+vTn;-1OD^YIk zb5*8a(%sH7ulp^|eeK2Y3A)y8J-DSBX5prP;^(xv5&-zuyzlG^g$vx9MQLlY_tsAd z5Go`0$*3nruI1x?*8#SDqLx4XaN>0tmwSK8Bwo%dP4h;(HpW1Uh@p zuE~8G3({V1n%l(0v8)75eIO~&rXK2Pxkq^Hi&VGwPRc=!YE8PxeC~c`V=N;NHKig7 zN_`ojlxz~gdusJ+-9|FAs`J}4#oNe_KGPhf#G%;TQ!De*b+}~aG<&aE0;Z7c<&7#| z4gz~B$W)66K#Bn-<_o&e&L=OPq}F2wfOH& z86ol1#XDwNp(W*>Nu%p?Do&qSdQXn`R85ZOs2tI77p7Nv1e4_qwlb{Dq&d9k4`vRf zY2q;%oJ`N=kEm|Z^+qci7*(tG&|{OcNuR@nE#ol0Ul>XTczZZMdF?BSL@Wq#)?>ns zjfufE2Zjhuo12)y{WGu9oMq47y%)BzK-b^g+^iLnCJ?y1M}a&)3Oj4GxU3#A7stHq zvyQTrY%NO5iR$Z)0d821i#-uq4bsW9N|Qk$b31yi;6np(SwxaVMv_<2I+VKAtE8y9 z){-LVJH1xgv`LAWo$W*kdCw~JWp$6?+P&YC#>!XBx3W(E-8rqB#LBSk5soIU@X__h z3Ix2>_So696jX>=i9OxD^0P)t`{(DQRyhRsai>(qB!cbgxuxErHRD9dxvbv8YfjzoPqWyP(Tb}&rFIWAK!SHC>Z z2^;9?h}s>R`F#B>>We?4b`ZD#9MuDOfbbK*w_OGj*@Q0j$>?ywWj4#BYkOaQaU zUhr3ttRg|>rvrQhm~?g+jt4x+9(hy*yal91@Fc**!vbCpQk)KWQUtiQbN!!>WYswU zUcbX};K@kf5fgYlNQ^r-^8jabfCDK&t@+KMVG5bQ-K?2%OLB7c#{Q$Q3Z7>moq}!a z0Y{k}Sb?YiZ(9F1zv=e6N?K`*WiGj| zRUEn(EWPJ|_Kp1`pf&(QA_{h0o*B^lcLn9&+^v7(2pqrw!L}t3yYF}t9r*OuJ0V66 zk`5l_%|EmV}Kk*LF=s>NXbp~}iE)Wut{4fgBusxapNcyj(H-r?Ur z6aKfc{}Mp?uMT6r8gN!)qvUP)j4EW}(mzPX5=D#huqI#sSCZM$PL*r4fX=gPS2YPI z(|oZ8O*KZdUo&9hpT`5m$9ok2WEwDaV>p>sjg8>8MAIY!0tGTn6GE^fv3ehA&gEtp za(Kisjrc94HOw=kM-J--A7>1tdMNguxm|_B>gw)1bX@Lz7XeGST$48U;8-0|xQGuV zzo+`cxXvK>;TTfs<#$hAiy-4kQ{f`f7HrMKXl%;X3akgMoe7m^Qyt;P8eqivj7jHvcS9y_I4DFb|yw{kEBQ2G9)6t|M-+goXLs* zytN^ewC^{e39Vust`yLDBu1)I*RVqN>~IRb^eUR9=H)s`)f1}D9e$G6kv z5nHGv&so*Q9J;Yy4+ym5PHw5?iHCzUGr^GjK)|f`>!*^yw~6a*6c^T5FLKH-&~q-# z44m6YOiRl0AFuFW2Le`TMwNk9Rs#t>^mPGJ`NP>S0twr?QSVPC!rQfbx|8s;8LB+! z>Wz+f49v6jsuCL$nP*R2(o}g+2&ADb6^VMD%GfIYUDeBWk&ZpMTg#;^0;X?Z6#dak ze^TUx&L_t~r{Tjn$&KHgV=k%Nj5*hQ>rwvWL!&mTOagT$qN*t?m~_87HQPZ>9}QtTn%e;`GhNc++Ha7 zM%XRa!f(EA_j`ohSDO9X@t(vgm2oy|{9Jq&aZ?@nt!F}gW4WM|*s!%%C|>)HSyq^=ZPHSF;~( zEiN9ZoB1wISgO?)@BI+E&=TCwVr2GpWGg4)dSQp%+@a3Lygi@d2WShh07kfEPva2-kPP&8LKbc zp6*%z7WK@zR#u_0N?v8p;|q^Srk!isw!RnPFZ)19U}FriqSDaUQ;l{~(otgeeZqn4 zFxVIklH-hQ`#heXd#m=4l~D44JDpM`32ai4_#-3-E4W7qAyx8Dnu6ygw_d$1s_IFo zlcgs-D30D2Rq5pKv&bEN<>Dk#&~Bh#(sz4aS}u6ty!M>>c>PHgo5o(7M0hss^q)1e zAaIoIaR4|F{y)#*_z!tDrJnBj0WNU`1TG&7lw+QMO*QBCFo$226Zu8rIhe)`w_xi! ziQ-q%I{cBI|fta%gDcsr)JZ?eIkcbKm8*&$|5|! z$*me}1fU)Zm^o%$2EEe@4p%bSx$qWTi1u_@rXl}LUO+i* zHkdNho5{u6JZX8zx%=rK%xTuya-dIUmYE@@tD0tZ{h3Ui^)W0XN4a?dQ=DZoQ&dOKBl6k450gs= zFe&qE0g6?=jkI*3$9>JNo+I@V=QiOfSrVjrNb8UOucNY_oXVkGR7&?3nPjS?XdJ8^ ztTU;DQKb9=R}Ek&Qqf-=Jff?S?j8*4R2J9flH9dBdbcb-EKH8 ze{MM0KP*3~lFL@qIJMtTlu1)_VAvL)b)WmBM8u1k!zuif!G(pDH zSHut%JtMFNb@lwxkRtz}8t(1%kcW391@D`(>iFtEl}#QLPw7~S+F#&1($uCKMxdhr`*A)o%W4J`8|!aTcY-WIrMIWxc4L(4_3fP$1O+3~ zoU0w*5xdVbPCdWs_GEv&{lkKkHaWyn9Iy?6meOY)i}{lCe@ioS7FQT7sLQiS4Xd>g zvaK^uS6j-tae0SU?peI5wjT=@dQ|00M7k5j=SM5D4^v(yO|KK9_CYtx^8nc0rC{EJ zoPGWA^jWo~-kHmW5O(0Xt0)my(hAyw^!wuYPv`AyioUHGmufULwPe`d1tA7>z4QF{ z!t}enAUW8XlhvDrH@#<3!m1=OY!B%;!o~9e96s1oR7X<;0R)x*we20ibpeZmL?I_E*Hp=u90a zCvkpJ4P?U!#HQY^k3V?|G$M|cFx~qQ?MVD2st@I*+2(U_VyL%L-d3Mv{y8?kgFeU0 zBLMFe-#h(J6-YBJ&f@plM%&1Nq|blc47pQV?;pu2IP065j%o62weHhGlo za6V4rrV9qG6mZ4U@IpE-W?-nl+U4;?eNA|I3*Vg6m1|z9hn!r3lMc2Y=ziWcW$Rtt zVlmLbTE-Zh?LZ&c1^07*fIdmg6=41n$~#lO?Mb9Xe<;Dq!~3~qb!laNjnQ?2M@oEI z3kF)mePF<$-{!YD%OeFdv~eD$pNR~*IL)T)ksL1Z&)jFP=g(x*4=c+Mm-IQoo0Vl; z`pvtEjRsFRijtw+#}x_+RZl?Z(=i=KIDg++nb>W7N&wh1nntX?tslxuzdB$upKS*b zUKpc5T^(9#Z`JuSshyz9pU!Sjm-Vt%P`)+>cFnbMQ7_x zMD^yl+VTy1s~q!tZOLY;w|yTY9(;E=Sr480az~liLngO0UOn~eDFQ4yZ~}7qy^n%R za#|E4h8$S8#u;kWZw^(R%$ZHt)Z4T7qP~jO){MR@HA3TGVE?jJQ`)qwzNQ-_D~FmzS}gp+0#@tf(3X|9OK1C}pbJ#Ov8&Tm1WQ|G#rj#F%OIQ=VSe ztBYNGHwH@(AHxY>ONpB`sppZ#L$c@cuQuHq>ge+p#pHp07`Q^D4-Sux0JDg?;>9wp z#tX9PsLzEq%n3Ye@YUjruqXZSW2YFAF;kRc>L~1k)>0S zdhG?=5$EP(kBeRWdq$5O2UIdmk3rw%Yz4iCCNzJgVAu?WF`=VN2Yrbj6O#qj*poDM;ru7)%H4I=9%0>wr8c&vKK)T);X{7kfN=r zJnGE0!ND#B5rS%r z_B{RAv7nMYb(VypoEIm}yNJxF0uCWtezGj9_OC!?Fi#S=WZ+V>7OZsFx88(A1~lLe zVhmzR8coB(>uiypxsH%@NX|UK0(y5(ZlO+^iBv~*P3@Zke?_!kS7Yj>{P)y$3NxMqS92Mn`+6%eG2uf zD>lp`OHf9A=5hq>&YQO!+mSi11T?p;I*MEltSmez-oyvF;erShNYDJ!PBG%fp4-f* z(ujzHoA%#Ej&5&}bbsa1Z@`3>>s#rgd|{mvY*s6Y4UBrxRg(&1rJ;SXg$rXWY98gh z`;FM42~A}-_qIZkSO{deH{n^V)$)ESh58GRK^H^w1~!~N)4Vl~Z`rKWAKn9d@%dmL z2X5HBeGe7_xjyth_zl-0nMEzbo|}&J_YtCbB*n~yxNoq*B@EBmbt3Pih)3ud_aY(Da&=}UFF;dMCZ9mkhEuaj-B`d@w7hN`N9CF7m zsj;%|8vW*A;(9p#JW1chWIdaY=i`%%b~l;9!X`ebYt7KH|JE$S5zb1<{!fR(;PKLVndwD@zF`Mel|{aS*RE0Pz=L7Ho5^vs4fxrE^DbN zyfhhMKCes?&QiX%-%o*shMiMU>WFBnSMDQRbJVwhZR^ERf3#xmZ_V+E?wC}dlmZuf z4AAV6_DPVi&iBm;6?S&xr_q{Kom(c$4qxaSS8a1-YXjkok&*Gt=MRZU#Wo789Qol( zm$u^vdBU}>^9vghS!~aKE+FmlRx;DGvQ8hk@b&MQ7``^UZbbK#a)2Z3jl@z@IjCTC zcsWC}w8Lw|T(Pg430pN*C3hq_m{cDFyVP~*7~m)j;h*__PEB&4+ptib6R+m(FbSaqh{m1>Q-M?I|k1ET!P<0B_2y4 z+OEpJ+#J8*rhR&U6|PCwoaO-qvYcKgak7an$;3yEZbk74Eyo!2Mvqda-Zk7{+(5 zGCj9}1GLBfnk}b+b%QYSrKa2_;*j11Vum)^vrj>B@;J+)3pjqaqh658xg>kx!r97a z=G*y){s@Dd^Ub&AnflRI+_cB^FICP1_;5t}tuUI=qwmVjtoD8S?#zH}j6ewsuqdCg z{NL*6wP)@_Zpot=8zC%e`+0`Y*_fG9{})$&ik^V?OPjwpbK7NKhZif~FNmbfb(uA* zWZ#f%PvAal6CUb!p)9Otg0*?i^dGqK6WM1f-qu@tg*kTTGSXw~TF$z8kI%%(m*BbTT-V>Vd`}bp6bu5^8obL;S zAD^f;fz9BHEG3REUTV#Sk)7i-==V|A-qE84>5T4F@jB9{l3edm-p#een{1#kVXy8L z`3LYZPr~PnQ-6rn-G>oDsP5Q^*bMT9y=XQ)FMe!OUruvg>{0IeLJT>%HP^rTA`)|E zemP<>F;+V{X0t4};lR^>4yI83yo2Ny&Oj7d5s$}F%1NQlG`TNn(!5uq_Qa5TM1{Ln zYF61k9>bBq2`$bFYkt08{TM;9svEc18a1(Ubn|i4zoytO(wf*k6Z0jIh7KLGOy&(1 z=F_MhZs5~?TUC_W6|fdn?wz|u!_yd!o3ufbtBI0#LhesgKJFHT{mPDOtdZDPh?&ZT z`w@%&!M3rTH1?{V3N=c^@OB7EYhiA{kUypML9G7B*X{VDcJnep0?D$BP*NWL!XEv9 z1pE+FuFEVmMrbIUu#!x{mTqi}e|RcCZ(Uoa$TO@u7}ISP&qY6FfB2*q)b-vspW*1{ zH=L)l=3k2f3qL`9Mt>U#$t_L23h8F{H-H+bb)9=rpxUDkrhEq(RM+(=#7XmX{j2-HeKa;OdBXL zrFHAlnj%cfRS;*pIeWQb@ACdJ+NYRxdQ&$JXucLVyOq*dUm)3M zBlYETa_EOTce|IO9>`JNe876j|7$Ql9O!4WJ|(fF1|*afC*{a- z*C=2)B`mu3@jj4oZ`4Nho->8Q?_)iAVr0pAPZ;_CiaT{iavfJ99r>mg<`;i_X`_8% zIl9yrQSP3-eYu36tx3Gxg$_CAmY=B|9{f7u_CgP%SCjOd(Chr$uUJ?DAas6gu0jW- z(n%;AJibMl{Ms>m=H5}0(l>B*d*R@g6PiaM0l^P#6{NOB<0y$92G|EnS4qQr7oO z=37vOs^8~4^MC1D5WMGC8@UGA4m%}c1zn8gp{YXp_3u|zvd5=Nm5z%2EvQ9G0QQDQ zpTSaP}$^&{#_ndh8w^0BVEm0PURn^u?17^2dxT;(WfNj!*Dgo4Jo&qjVFQ#b<9!0 zXPX`7n+U;r(9J4m&n1&0SuSgtN&Qtln{j{*rO0SRB45n-RPs<=3y( zRLjtX#`3oM81qYyB{g~Qf-EXBrD_h9S;Y?@P;Y=htRjP%qJ$bq{CeXqpl^I}w}vyB z__Gcq(~;04WxUMhK4;6M4lOP}rfJ#{p6JIV>&7ONVCCl*_D67+VsW1}`)u}k{;DTI zL1CSCjF?v?-ZfM?$-Ue!F^AbC4(oJ}#Y=T=aDALJ=0GHSL9%TdY+xu~bmZ0uey-6Y zu+BDc{?YkT!wOVM8yCU1!%tYbW4LgB<;PakFQ8QbhOFX+a7L*dqD#_2$n{({C%d~6 z(n#v+Hd_F8BQVQ*$WnjW;fykJ?za6DE{b4^n#7T6zhW zqvHM^W`Li0^3U?-0`1Vs-G%jR-=d3CJ6mD@Dz`2I^GNazhwDEK8!F}Mc4z&FgVsLz z=Oc7D12OahetsM%1qEpaHNwB{28*?6Z|`$275YBb(iZBsz={`-;p1-jC4XvIBh@0H zX`qnfda%w+B$Di zqakzDwZY71I?!^6xIf0LRe)Yx%cpY;4kC|EXHZJI>Ez+9~x)YsIQb9LS z_u|XgayfXj&cR-Q#sri@fK%-6$rTyLlq;+K_Jhq?G^<_XT+3EaXCily&0%I}VL2O> zSNuQ{=m;*6UaLXDRT8_O-cMvHQ|=m*mu5hwz?m_IZ(ZkIc8&KX#`f5ubCa#1X1X~{ z@-7zl5sSI9EZ-)Q_U!}md3WqB&lET+n=<1x~ma$p{j)OMl(>2=t5%4ab_riYI+F}$@Ae%~z>4EJmY*fwTfuu7f0lR@DC%sVZj}EqOt&+<9eN2| zQSY{aPu3+Iclxw>gum(LZE)w;j$u~+o9Dn-#brRUx>+=Ap*t#^d#Vzmjc(r*g^#BwlF3f4}a75$8lEz?zW~4h)g|?mPWr9dw1X!;lQ~HM3@5@TO z?Pj-93G9d=bAdZ-F%&{+7E8jpx?MvK=yxQ2xs>4_RBdPygb0!!II&=1pKu-OFtpG2 zIMcDj@4B%F$i-GVt^Xi*7R&c#6-9G}D&k2SiHSS;fwi>_Z_Mk}Yzi8xE-ENiAw%{S zv&YkGg@Ew>qV>4bU!Gsn9W_&xMmI#~?ypqb)QHMe?O)ES!~3zg*=RNSTaG6_EA#px zPOwx7ICmyl_{a{10ryz{`kMiu&-3TM6#kq4=mDV(Fy$yk4ArvG5t4H->~n9{1v5%l s)xy|eW)a|j{}S}S5%|AHV4lIUH#SIW`BSzQm@R;TuJNU^3l0zd52*i7!~g&Q literal 16633 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 0 { - mainRouter.Use(RegistryDomainRedirect(cfg.Server.RegistryDomains, cfg.Server.BaseURL)) - slog.Info("Registry domain redirect enabled", + mainRouter.Use(DomainRoutingMiddleware(cfg.Server.RegistryDomains, cfg.Server.BaseURL)) + slog.Info("Domain routing middleware enabled", "registry_domains", cfg.Server.RegistryDomains, "ui_base_url", cfg.Server.BaseURL) } @@ -580,15 +582,29 @@ func (s *AppViewServer) createTokenIssuer() (*token.Issuer, error) { ) } -// RegistryDomainRedirect redirects all non-registry requests from registry -// domains to the UI domain. Only /v2 and /v2/* pass through for Docker clients. -// Uses 307 (Temporary Redirect) to preserve POST method/body. -func RegistryDomainRedirect(registryDomains []string, uiBaseURL string) func(http.Handler) http.Handler { - domains := make(map[string]bool, len(registryDomains)) +// DomainRoutingMiddleware enforces three-tier domain routing: +// +// 1. UI domain (BaseURL hostname): serves web UI, auth, and static assets. +// Blocks /v2/* with an OCI UNSUPPORTED error — registry API lives on +// the dedicated registry domain(s). +// 2. Registry domains: allows /v2/* for Docker clients. Redirects everything +// else to the UI domain with 307 Temporary Redirect. +// 3. Unknown domains (CDN origins, IPs, etc.): redirects all requests to the +// UI domain with 307, except /health for load balancer probes. +func DomainRoutingMiddleware(registryDomains []string, uiBaseURL string) func(http.Handler) http.Handler { + regDomains := make(map[string]bool, len(registryDomains)) for _, d := range registryDomains { - domains[d] = true + regDomains[d] = true } + // Extract UI hostname from BaseURL (e.g., "https://seamark.dev" -> "seamark.dev") + var uiHost string + if parsed, err := url.Parse(uiBaseURL); err == nil { + uiHost = parsed.Hostname() + } + + primaryReg := primaryRegistryDomain(registryDomains) + return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { host := r.Host @@ -596,19 +612,38 @@ func RegistryDomainRedirect(registryDomains []string, uiBaseURL string) func(htt host = host[:idx] } - if domains[host] { - path := r.URL.Path - if path == "/v2" || path == "/v2/" || strings.HasPrefix(path, "/v2/") { + path := r.URL.Path + isV2 := path == "/v2" || path == "/v2/" || strings.HasPrefix(path, "/v2/") + + switch { + case host == uiHost: + // UI domain: block /v2/*, serve everything else + if isV2 { + if err := errcode.ServeJSON(w, errcode.ErrorCodeUnsupported.WithMessage( + fmt.Sprintf("registry API is not available on this domain, use %s", primaryReg), + )); err != nil { + slog.Error("failed to write OCI error response", "error", err) + } + return + } + next.ServeHTTP(w, r) + + case regDomains[host]: + // Registry domain: allow /v2/*, redirect everything else + if isV2 { next.ServeHTTP(w, r) return } + http.Redirect(w, r, uiBaseURL+r.URL.RequestURI(), http.StatusTemporaryRedirect) - target := uiBaseURL + r.URL.RequestURI() - http.Redirect(w, r, target, http.StatusTemporaryRedirect) - return + default: + // Unknown domain: allow /health, redirect everything else + if path == "/health" { + next.ServeHTTP(w, r) + return + } + http.Redirect(w, r, uiBaseURL+r.URL.RequestURI(), http.StatusTemporaryRedirect) } - - next.ServeHTTP(w, r) }) } }