From 542b5d194d44563c1cf04a34cb1526c84c348b2c Mon Sep 17 00:00:00 2001 From: hikaneko Date: Fri, 11 Oct 2024 11:30:22 +0900 Subject: [PATCH 1/6] New example of IP blocking New example of IP blocking --- .../examples/traffic-filtering/README.md | 3 +- .../block-based-on-ip/README.md | 28 ++++++++++++++++++ .../block-based-on-ip/bundle.json | 4 +++ .../block-based-on-ip/ipList.js | 4 +++ .../block-based-on-ip/main.js | 14 +++++++++ .../block-based-on-ip/propertyvariable.png | Bin 0 -> 16985 bytes .../block-based-on-ip/setvariable.png | Bin 0 -> 20153 bytes 7 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/README.md create mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/bundle.json create mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/ipList.js create mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/main.js create mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png create mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/setvariable.png diff --git a/edgecompute/examples/traffic-filtering/README.md b/edgecompute/examples/traffic-filtering/README.md index 0f55b6f..21c29c4 100644 --- a/edgecompute/examples/traffic-filtering/README.md +++ b/edgecompute/examples/traffic-filtering/README.md @@ -5,8 +5,9 @@ The examples in this section describe how to use EdgeWorkers to control traffic * **/conference-details**: This code implements an API call to validate a conference code * **/trace-headers**: Demonstrates how EdgeWorkers can be used to inspect forward request headers during the lifetime of a request * **/traffic-allow-list**: Implements an allow list depending on the geographic locale of the end user. +* **/block-based-on-ip**: Implements a block list depending on ip addresses. ## Related Resources - [EdgeWorkers CLI](https://developer.akamai.com/cli/packages/edgeworkers.html) - [EdgeWorkers documentation](https://techdocs.akamai.com/edgeworkers/docs) -- [EdgeKV documentation](https://techdocs.akamai.com/edgekv/docs) +- [EdgeKV documentation](https://techdocs.akamai.com/edgekv/docs) \ No newline at end of file diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md b/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md new file mode 100644 index 0000000..7a6fb87 --- /dev/null +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md @@ -0,0 +1,28 @@ +# block-based-on-ip + +*Keyword(s):* constructed-response, edge logic, blocklist, allow list
+*[Since](https://techdocs.akamai.com/edgeworkers/docs/about-the-javascript-api):* 1.0 + +This example implements a block list depending on ip addresses. If a user's IP address is on the list, a 403 deny will occur. + +## Usage Examples +```` +// Incoming Request +GET / HTTP/1.1 +Host: www.example.com +(User's IP in a list) + +// Response to Browser +HTTP/1.1 403 Forbidden +{} +```` +## Property Variable +To enable EdgeWorker to get a user's IP address, the Set Variable behavior must be configured in Property Manager. +![Property Variable](propertyvariable.png) +![Set Variable](setvariable.png) + +## Similar Uses +Allowlist or blocklist capabilities can be setup based on other end user request context information such as connecting IP, Geo, Device Characteristics, Accept-Language, User-Agent, etc. + +## Resources +See the repo [README](https://github.com/akamai/edgeworkers-examples#Resources) for additional guidance. \ No newline at end of file diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/bundle.json b/edgecompute/examples/traffic-filtering/block-based-on-ip/bundle.json new file mode 100644 index 0000000..9cf624d --- /dev/null +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/bundle.json @@ -0,0 +1,4 @@ +{ + "edgeworker-version": "0.1", + "description" : "Deny based on ip list" +} \ No newline at end of file diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/ipList.js b/edgecompute/examples/traffic-filtering/block-based-on-ip/ipList.js new file mode 100644 index 0000000..47c1d5c --- /dev/null +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/ipList.js @@ -0,0 +1,4 @@ +export const blockedIPs = [ + '1.2.3.4', + '5.6.7.8' +]; \ No newline at end of file diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js b/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js new file mode 100644 index 0000000..4054037 --- /dev/null +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js @@ -0,0 +1,14 @@ +import { blockedIPs } from './ipList.js'; + +export async function onClientRequest(request) { + const clientIP = request.getVariable('PMUSER_IP'); + + if (blockedIPs.includes(clientIP)) { + request.respondWith( + 403, + { 'Content-Type': ['application/json;charset=utf-8'] }, + '{}', + 'Denied Response' + ); + } +} \ No newline at end of file diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png b/edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png new file mode 100644 index 0000000000000000000000000000000000000000..e4038349d27aaa37fd46756bc1e66dfaa211eca7 GIT binary patch literal 16985 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 i5f5YR&4^*I6*_?vZ@{TVz# zI;lvDL6i;>Z-alVO*LiB6civBz-t5u7)U}0*!xYuuMi~BpVv~5bP&-0ybq2OVhI8B zdmBaYeE%Z@e((4B_Zcb^>R}6Lp-kw9*AVCTo6dF!k$@*edl@Y!2nb~C`(H?i52^SN z5Ku^#s+!K43eWhA?QB>KP3(+JS=?>x@ArZbaOVRrZA_gF$=z+NZJqes1u6g8f)BjD zf18z({GUyntpq7G6`qre+c}z&bF;9quu%#jk&}}PIGUL8sYpou-W~iWNNM5hY|qEa z>gMLg;`W5a&e5EeotKxFm5qaygM%4t!R+K=>ul)GZ0khz??E1pBVp=f>}YB4Y-wjp zet%p;BRdyoK}yQ|6aD%5x1G+GW`ECQ>-77wzy-42f5OVn!p8dF?Plt3`G48%{*!-q z`{%m;J)OY)!T3~6o$Rb#?pvj1Yw0Y+A@I*R{`a^4Hd5gJSbWbd-A%1EB`j@BZJofb zLOf5{1X%yuPyX9Iwf^qO!O8QVd;Z5KzxNbiz3;96=)He$%|Gvgdn1G-!20Jt3n5LL z8u>s#h(O3nh^o3n?xn%LRF|FWeq=2vi9yt5TY;>jvD-a4p{uiNtNR%j_OqVXK#j7p zL@`(SXJlN&&!IZucc31n__^^el*P{O;94?V z0;kIniyZRd;s2h(et%uo+}zyD%S+8^vd~=UEd*lh!vmigQts)eG(xmU7#Y9ck8zmQ zLK438xSBC#v8R7GjTK?SG?-*g5~(73I5;F$s1T%hm2FOcQjCwewg2B^$h2ZWg`krT z6LuG;s53eLJ*6Kz78~aevq5!LM)UUNMJP9`C2|=clm0z>zMhSwc1+LcqxyXODmJbN#Ea_qz7yT<5Xy zAjOCF`THUwRKRw@S;8JvnGfwRG~5UeJ}amTfJd8eetrBs zil{PzNvn#F*OXpIsL`u+e*tysP2Z9DxLD)YXrFx1?KAPCN{8PEXETJFwtXCwz;S%Q<@2VRC1f6s{TXkOVfXy^MKJpCH^fn>>c*hXlcirbv_p5%HTnIzdb z8Bs3IC(y1o23fyax4^byn=)k~3%bcC*bZd~3p=idIzeu7T8?dru2oHK4x~I)(=FoPenWtwVmZKA2=&g(yl6O*x4zoI$!WVX-=9t?Epb4SlXE ztHWh@C^Sf$I}6swX_aoewKAMpI0e#}R4}RKLD;0lS>Y2Vx_c5!Wb&hX6a5-${>Sx ztLc?mmPDA3-LH^zxI{^vI&0nAmW>>_L}K<=*`sBZo9-S>-WP>0FC0INDk#MjVm=H- zzc4Hj6;z_x>TvEOsVszTIze{KW_~=q91&GGV?-?3V!AD{^|^#b1#9QePFJ<6j_o3v zMN6{`UgLJg)X(Gb6K}bUL;|v+&@gT~L@b%o*hrq*&aX~Ps=-?<)t zXBG@VM)bMtIq)skYSP9%zV3=B(WxU5^47c@O67%);jpBSa3)}3VM%0AE7tm4TMBV0 z`!Fjq=TK%^a9=0C(Ibyk6@D%wV`TY#{bUH4;}t?I11dL`^>fQB@3TlkA=OD-NJ>pU zRQB}|7zFjsh|i<3kipe>HSec;8`Fe+SJuPgU0q$*x?|*Rtv(O+z|S(i=#K2e^u74m z)z>HInJ(zXVw0o%#r?>|w}jtwUFH~XAn0zq;02pp5(9mQs)DRAigIA2?wvn$f{&rJ zrgByI=%>6!j!5p`Q}sOzqy_zYtWO&$OVc}UZ-#hMDB=a8^gssBPAN$J1aSa(fQaOl$mV6 zX+2)9*W~H2+U*~OJZp7Pd8gax%=;oYl3AyQL8o+Av?YKsiB&poXt8OkOrKS^k+aY{ z>gKUhx&Sw~Y^h!o9v+^VmDSb7@g|l26MI-B9%BlZtJ=Mg>zjim-&hLqOX1lYtq z9`e^*-GKo=p=-(G3fW5ItLPf5$#%pjgj4QU>lp`2Ej?5ci$TYaq@wU47m}!?&mxmK zkcP(cl$4PwB4wyyk2i%iAy{cuI5HOt^Dmz^C&YpXHs@EYafWHU#{w>e@R+Xa+VIfl!l<^G11 zGrfcraW4HIxa1FnnsOD=qKol;kZ^jJO1z%-lp*In$s1}7-5gAb2%KN|?8aaH17c&m z%vYGFCx%3$K`wDnm#;_a7rRAe{PUb^dIF`Kg3-j}_GT32FU*l=S>C=UM zo9$QHv-ofpQ$3uXn7g*G31u8YcdUxx4LC(>%vM`s(<)NK`F+u)s*_sk_f6(D_DmOO z_;~oCo=dd$p!<|)rqVn^NpA5!L8TvcaRQh?4}^!(3{F##l~VJgl{Ov zS$}r>Rr;MSG5s30U2Wu}c*y5^H$jJMo?S}G@a1$K*;Q$C=&52YXxczRfvHlx#L*Jl zrpDwa{A~pukCl?F$GW5PgVxF99Hbi+(;2#E8B?F%z#{Wy2)+LPHNHn~8&397kj5}E zwBSR#uVKn_!#3n2UtC1h;S{!aa`N6I5vI^`XU}zn`17dEmMedf2+PdG z;xipYSvmc=(T{WH%Hsqvqgvr;$|T1yLXHtb`7!4NnMgjz!tnMQ)*VM@DV8?CwqtGj zXzh@`9`(mli^bqSLk9e^CM8&_ZSdsfyTRnB^{a;sg#5KTpn z`_y|KAr%5-ZB`@uap&!~IWtw}PV_INF4BXV_YFE$pm`$j7{k3lh_@Fx9ZdU7G+B0c zzS8l1z?X6DbUL{?J(SmB)uhto>)GziCxV#@arpd>03RPZhCLN+>yiE>W}-!euqJMs zxh+rFf!r;M-(WAE#_t%3@(7NKj}vo#x@LQ3S0^_^PHluX73O4k6n1WhRAl~Arcm(e=OqpAWt;O*!__+adUYq4gYVH_9+_YW zO+-9NKVNte+8H+Dx_2w0h^Bb`6MDjmyezm1%{~irO9215|K4m}Pu|*Ona;tcTlwCB z&2l6*?P?w4%WN3{P;D2#G}y0Xy=-ta6enWP*3nssMs~z-#LlB+6H7JTn<#pBxK=0H z+BzNUK6Z*k`PS_L#6c=RotqK)WYI%%r3AtEf8u$@(3y-N(yWl|D2@qLU7GdE=J`gT zPyp?9oo*2Fuw9Fz5FSnnad6`IDHfAtPWzoFl{&Ddx|W$#*P{$ScpMHL%r>UnF#U$A zV1-|QAU71tZZ;8!j3E;W4i3tFmaKwX7O6aILCZ-!KDap8>aO*x>-Z7Kd0i}g+scIR zsX6lr=Te^9Iec9j%lUzuus2NeyZgr|{a9BCDIri$#xD2!mh8(2$fH^DIp9ony?;XY z=N=l|sOC;~x`_mmH7d}5PjES%yKE7Td~A@7MIn3o)X0FomxrH!ZZ5=bOGB@s!hqp2 z;IiV*GhJk+sl245grqu6F_eh4G$0_r>yQTVes5hm+(EDxp<`x6|?s7H#u9NzCA&2TZLQ?}7iIk1S*f6o?Hf$N+(KKRN# z5YAqS{JcslhxRNxrBdS|wu(T}h(ffi(ziQEnKwMYZVvQnyc)jyLF_z*ywpddVoSM% zSHqc7`1<;lM{4Or7Ys2*W+B#EOoA${ovulzd{z!u^;DMdw$hH(!S z3@Bwf(ICB-#I2-XvQ7L4_=m(|lY&aH?dD-5#{OHySUeWl&c#Je`yIRP^G75M-9n^; zIuFg?^AF4UjVdtW@%=%6GOhTC&l?HWitV5M-7_;0BIp08ZZe&pbZf2rEpB8)7(t0u zqPa!=rzV3mrWV;Yi>zvA|9cgF>Y%OK6~nUsTepng=m5TXkTK=oJxf4atBpR! z|E;tl<3JbEm3@gR> z5+qkpxt*MxpY6^4I#{xT+xlrGH7fovS}9>Da`(YbOES#%g!b83U2l?Lb8A?}KT`>0^0A*@|g=HnW^r zoOEEGh-*FVPfT|rX`+ZGOLgTF(p&6D#+(K( zU91kbxXkza60PJC=8Pnql6oSEc`L7W=jvSdE>n4(LeEvv&|+<~-hs{)$xoK{dQ`e#qv&-(;bGkGscaMuk)!i0 z?%HzC1YiT{XyPJp3u>*k0KOovoh;KwR{}Vq>-};?W#uSw#^F%9ppII$upVx)_qdue z!KWqL(dmJKl9kP&47Y*wOS4J{=v8!CP6X5fYb;L&ZDngb-X1DVbH z-j8(Uj34+qYo4`iD5b;DuYuaxec3PLysfXe65$L~jCIxvNxV*GUi|!OaktVZZ}vQA zs!S)yx>bIsw@@@lmiJO2=@sK$K3q&RwlkGEc1z8lUH97k1Kz+Q8(k5OPluqBW!9DZ zG}7J}c6V6&oUd>=@86t_8;#t34U zw=dI3yQ_;!Vmh7t)83veN#vq4J~-xlOep8|o;DX|*n;I+PgI;*HoLvS-O2W7 z%}vwm{-l8o0yPj(?d@gM>SaD6;r2mCtNJ&-*{1y$2>4rIEx)nkgd~(d{lL{B`E|O& z*x^xaNC>?1+-g@uoO}n8Wgs*c_3hTkCktA&Le;*>)YR0&db=edXX;Yzn&z}$s=)+C zfL7d`Vo>|JIg~eUlSMh`#qzTHWGpY{r+xmRxlG1N=hyhkqxd{1Vv>%QVgH;JbTXlK zzi>&KV$Yhwo*3zJL{^&*oIDF7bxKMm=j|wqTS*k+e31;R!<0{ck*64C&*{19Pz;%6Kb$E_#BD8Ni}*+=Bp42z zR3MZJlLrThh@hE--_?5Y%S?YiqwTyewi)J`m4V2a^-TF43NPn`+#WFrz^E}(-9n1(Pi`3`YAZf&I z_!@-#NFMzGe6o>3vEOMFAAL!YjDpcFw3(}wPhx88E8vl%Z$6nU(RsRSZ3PG>Fi`?| z#)2f31UhHx9oEX#(7e8vZ!6F}NpDiOZ1yR(gCu0wUzcIN%ke!1h51O5w-G*W= z!Ww~r08F}o$6F3lxtlBnUTxhY9=`Ch*}^0_2Yl?$TUgXGet6{~1UNW>&E+Bm)@-iU z*TK-K{#|fFYVGKsKwl-FccH|QAnq6)WESF8TaIhLsOfkhpof(pcKT;#W)>IqZ~@Ve z6xtwI*r^^^md8l?R;CI;Oo1E0g-$4$QLw^Ngp~oF>T`E~R&n*AZr%110h1T)bb7^_ zAd;vm{z(nRn3>KIT;sdFoe0aHZC}tRaaM>r)&GmQzbpFn;Cy=>eBtv4ftyJHgd9l| zUncf|W(@X0l>VQM{@?9_XYRpZYFypkcwzfMqNP1lE97rsR;4%=Roa)Dyxf4;V>MN3 z+8g^3K)Nt&+UTICzW)Wfjx40{y8*%>nN?p19v*%ILhrwTRW+04wT=+26C@d=3 zGJt7GNT03-!06Y`1mlcxp=v>;*-f`7pKmq0`TiFe#MQgS+P#?l(7pJ7t4@(|1W;hD zz}1Xr%fB_(@u z@|k4M_v$Lve{#5gFPJ7TjxVn-oKm=LGUqPO_K=|)>HvnIfXR6q=*oy2UzH$rd(6-Lz#=z6o1^X!Eqyy767hF88yk% ze6D92ktor_79(F8Qgk{HI(%M=fXw9ka?LvV_g%?S@d87;>(2%bB9wD&iBrTv&QW}Z@kg#7mGD3E9>;I3VwP1GziY1qG&5TvRtRFqsi4JxVf$;tK$)kk#Sza@{A>hhx$7#`WB?p*HCH%?zb zw2skAKir-9T&H!c9!kJ(+ur|fNA9#;L?GDcDg@?PO4PaKo?|w z^!70T??L`Qer_=CFL-7Kx$g19!2}K=u)rAL1AHr1A{r2~+7*=XK#7Esfc*Mu5TKL* zWaQjRa>Z1h@{gqCRpi;%H#hJo_pv1dRkM9aIT1 zq=Jp0TJgQTpp}>?H|$u}&_igQwhzG;Y!5CDY;stWLcvc{1S9k6Y!AP%GN~NE%hxME zUr3kAU_d;krtTaV7?_%x z`ucUdH;yV)tIl>|zQKvhi+$K>rM(Lp{`zq3fb4evbZ1hl(fQ&6`H?sJd77YCtx8U~ zyOXcpBS~7-9lm$7fe(zD&A} zY;<%MzxEeGlb`xhEMMErtiF95p`)X<7TB{)(IJ<})L`%HIk9|kcnJW2fBd80BupnMB()jk7uUU6 zT*Js27?EN>A(Qx>D7|KHL}3YhM*}*nR}kSlU;=<1mL37*{Bj6kM^I|&v=q&(f33Km z#d8E!kknOi8XD!_v4l}7ljxFf!V?uD^iU0dIHZ~iaweZt8o{YOjyMvz_~?B6eZby! zx*YQC^v9GTItd?+>qwTQVMjo7qstE(9dS&S;%`~1dYUA`*t#7~*XIt?u{7mzo+vT5 zKXYDRow)}}VC#Y^l7vuk8XvbCQ7wd}TuY%-`fTx|@n-ITHX1P}j4*~;*5%vB{o2*m zFY5FH0^o0g@(Qg`E%-r=wGl;m0nFngRtAC+9PFd$OlKs{jkJWg?7_D;BkOTV=hQNq3TfC~R%5aaf~4(VYJB z5P!d6`CW=p!iB+2bT!$kGZB-2N5La%PN#)?I=p2t|Khr{$GXOX$H zGYS$Co(D$)ADt=_Xm|m?u|3-w;t!d5hE*;HPx0Yao+rz8;pR-VGfc9pc=~x0R1jjchP) z!Kip$_Uj9vPdKoo20m~(gxtn+e|Tf7^TnOL&;U}EfXTXInwC53qZNT)Ac1wh$jrT@ zXIj8^xPiHa^%5i}HQX?lMUZ!qTc-WNn@7SaPi;g*!g1)~P#tocbC~iR{(C$y@R>z=jqiQ_Tbm>S%r_)~RE8`-}$bcK^nuHqe8|Etw$`hBa(V*lWHH6S%Zcmd+1Cz_;#gU;Gy1jxPqL5e2ZCV0}F z@0hf(;LfU7SU7xnkRXU6vH=L_bd!>JA8UnAi)9I7Ss*qN`X&V-*DGo$`yN-$d3LPS zCcmE@U^4_$KObn;&>Ih#h10DOX!#BcGFdL`g)x0bz8s2=AN~DfI+Zjvr<0$UKee77 zZ_x+A(^D~(Q;TUZ>*n>9cieSAwRWA4@#!lyY-*XzoodgTS1H_fZNa?7?s^T5xT{1} zRgM#{s#66#9O<}=lY)Z;1K?@#NAr~4f%=Rof`N!$Cl@6=iB+Ef3#$>7OBOwVTcLxt z_&v8;l_*+aUocNsSfP@2b;(iIo_)d(!75j$!)D8Z!huk9HgdrB>RoP2e^MMJ<|2AV zAs&qE_1#`mROT@c2-34v=1NQwMnnWSMA5n2HnTYLQ9P)Ar^6CqSYI7P;%jW?@Qg*) z+F6@Vf}=BY%2!a{U>TtyC*b3E5>u0}!lM!fLav=KDhju)O5pQ`PfEQSaLm+`dx~axay%FLh$$y>@X3fUeeRo?2C7cDzWF_Qtoo)3_u|S0v zq&2U1zxFSX@lN+ApmWNWzU(i4dXyw5pFsD0pY&E`mASaM`Q}Bor^{4cn-V+<@tdq~ z$xrTXuk1vAacGEJ>I z^e#j46hlD2L-6}ZwlJl+_}ke;9*n4ID6bo+V5HRKXr~@{^c@qTB)B8&9Ite`E9Xa! z{VPZdPi zyfUD0{S#kk!T#va5caL8kfjuqgB}Z9fBAEL$@M3F#GiYQ{utsk$WB6pH{a86QUP{- zNjj9lduVsboFqvFJ`_VC=8&=F2Qn<47IRK9OHY=74!I&*FQp~94c<(%iLN2tuY;m+ zpGhh+>4LA-Xwa;s;bD(hOJBJre9)=Fd={U!(88zm#EFFAQn3P*icGFM7ps5j$y{krPo8{_qbt(d|+GZ6mh93Q< zgMe-$2wIu@)SQ_8PXoGuxby!^H$`k<0(3^f?d5%QS+lD+4QMs@i=T%X(1sY00Oki z4MYL0>Ej#&Vyfq_?RU&pNh6=6>GuGtcuOri+N7f)4rhOLmS#C-esVDNR6O{kkzs%C z;Ir4SboNiuT~StB8F$7#x3Yy1qD`o2K@MKX&>4ZHAcFX?kvE zn{XX~Jz(AQy}P{u009`4*nF7m2`ImP3g?K$^*P`aq%)PP!S zXL*@C+;+a+($qBZvHW+SVR&DkD|dH@uu6vGsC#BJ6UBh?HZ6^$P)8@^PF(R)GJ8vP z8q^T=UcdAJpaZoWtpI}0)tL<_g}OeaU(Hl)vMpCzj)fjkVHwxTzKUnIQg?=QSe$4I zDY2>4B7L%)!D+d({UmR5@aS1QO;kF!)<3#ol5Fd6OCwYK;E?AJP%nYrlbyK&vGB9o zLFq|nbX3bY0F;b?652Z%FYtqc{fSOEP1Z!WC*wlMsyDy>^{r@h{wq{6_CnDcPaxxT zWY8IkrBKU~W2&+@lG-hPnfR=92k<+~OE#rWk+PG$r}iW59-!Wo@Ugf)5A%;99Z2VT zp@AIB0}YRgiiqfc1}Y3kfUX41y+q8uN||(lO5tRG;UKn!RY2(KtVH*-koh2S7H47r zbYVm(i09lkJ0>ejjV>uJsXVc@MBKJ-LOWfyM-z!>svavOaRPm(F+0VA7*)vU1m6hr z=!w}g`E-HgNkvKNE1UvnC&zx)4BRE@XJEiJ7^%zs;2=x6x;7i`sR5ywM*| zF8T%tBE-bI@aTk^U)(D;?sQ(3c$NT|yOKdiC5=Y(#Ox)Iw{|9qwk_i&@29juGMKxO zZi^{gR+AttvNwZrL7HcnRlnIHkxH&*6c6>4X95WrD+mpgIqiF@?2J`k8V|RU($d3&4)mgId6kbZl>I1m!#?B1$pr2u2iz@C5_I`}OOJ_Z#28 z!ztG|Zpck*;#kesvsZdrz!YSH((#izaB2WW4mQX?viESMV+03B3V4({+S@?^tPBK6 zz!8v>`j$i!a>+Rdwh6qxROP{B10x2w<2ffXMFWr@v9yu}0eBqML_gpiuy3}#p9kjV6Q>NVCebZ&d8Qy=RZL zLI}QFZVQNY14TO!V!FDch;(YLw|931Y-X$X=IWG^IbhjuE>BbV-AeQF%=cz%fI|^Q ztXTEUHWT_gq&XViy zyvxsZSyRbrpksyX0z9N2gtXzdccPvIysb8^trQr7GB4KA>+O*62?0VO3uF%nm z53z;iw8EH{Q=XPpsJ@b+x-=F+k&oB>%%oBu8#+E)5Hr*a;`w_2yGQJ_N@=4@x&Aq^ zT_BQnz|{keFbgRm-zC-Vj%<6ZN6CRpy$RJi$?%^!vItXe@aoHP1Qk?0TQk6`RBCYk zY|dNHL#vv+ei_{n{M2*Y!tkJzWMBc=14QHQHYnxwm6Z{oL`=&>t^lm-p3hFr8%v$S zJa@3?$O@!53ZsxCCZ>Ym7JI_}tOjiq7egW|OB&D0i`k z&EgjVxLJ)!uFmc^-!D&z2sw*m404!vxGh(|?_4tOo&gqRws-?H=G3Ht^E38bS1O0; z+pF#bc4)X0CkJ{|r6VKBp;SSQW^Z28ZBgI5N>klf21c!{&Xa9Yw+e#(5oMTXshl~g z1z13t4mcV4v?wMf4ydeR%HmzI7!sTllXt&tG5tOz=O>VJ(>e+nS+ak1N8h+z@t(zevfb!gQojW96zsO^uYFyLg>q>H>#6`( z982MuIREak<>le>VNP(*^(>1D^W@**rCUvvNy{}B5Go7y?V^qE5Ow9rVg#qICNa;& z&UMHYTGR zUjo_dPq7k`=6ZzPd3Sy!tR+=)^g)pc5`Ak4y`dYBh zjpBaDx!wFznr(rE81L{OkDA45)!Q$t*3g9dff>FM4HNU7kwOQKR$V#6w`DX}0r_zV z3~962TaY@5!&>!RtkpXlY4Of8S7MXIp_I6TzL8m5BVz-bh*C$Z8;gkuXOyF9|Mi*9 z4=U-Hk0d!Iukgs){dxvjf@*4TQ5xb&2<34LEuMhCm+M+j{>|t^a$dZk1U{I-%F=vxx#-r(trsrsgNPN|M>%`zq6SK1jyiP9KKE zl*lXuzEJ)$$G^#<{Kx}yH@*WAt~z)O<#cD_$6OujWc%*ko-z{d zn<(4frj=CxVG|>rCJUHR)C*pd1J9E!e>SEru|wd|kZ{F(4GkR|MQ6hUP42Cj(S{lI zSpJ=%mFoV>hQkYVZ*t>1AAOT5`$&kQq{>px%-0#hUNodfT;U)$8a++ST~9n3718H` zf#7v-Js{`MInS1fCZ0KZQSyQDr}?>aYA8-6bOWW^FP5>~0hGx&%1iAE1~e71Xc1mx zmm0MnO9u;|SqViivAwoChpv7dY~TkT?anx9h0CbX3w6VBHQ3!jCJL*>oWB$KWxJ33 zh#8aC;JL;GJt;-u%OW*g49CquwF0Ayo8~1xHMoc|xVRl%T;k0uy{Em_1FT>2-(1N2 zGwNiQms*&Zk8h$bN*rz>-r-ZAQHt1!3L6gKTuqc~B66vJl0sDuA5wAN#c$3E*-%a8 z9rmVAFxo@x&-^i2A`XXEvcg8sjiqqoDH>R!-y#HXx8|>TK#~HE?r4hlO&5XM3}GM@ zP9l)k1tcTzy5iJ!m)?4?65yGxEzH%qb1CaucEs~3>_9@p8>gW)+FYNrQx+?Kf{Uk7 zD9|ceEK_5kqNQd);x#qJy|u&I{Y=L0=)BPAV&9utq4P;LK95DO^4pkG?gZ-!0l$an z3gX<(XG{!?a@W1aS{t9a3S(MFe+~|-Nv3nOnU5VIKPF13(%4?9mesoMdG3w@D!Xiy z)#m&W)64lLFIM+*{gMH@5-??Gg#y{#d+iBo4Vpb;$fL)&9j|JIBG_7>SG>p)HGWJo zJ5;M*gz+7@{?tuqYqU;nZKX#lzK$k2rZrMcLnGscF&_NI<-n-j>MG*5H&s{1fX~><{IR;kx>bj-`=VKDG+olkM`&QL1F*AEXX>rY_%r63>&7~-QV zWn%obHQ%bk8c1b^1z~?e^*Un;Dk;HuCHZL65>@HXm9dRB+^aW11}_a6X#| zwisre?TlElv&yjzz}_TEXhbE=M^cMKLQ>2w6ktCM4f;A$)pW>m9)u*PQ;iPm$81~J zygbg@Wo;AR&)}~0@~3hPBtqPTjRi9&ll5ifVM6v#hJU5-K=@A+$0?NwHAcgWpWT)! zeB03p=va5PuSBVmg?%Y**)w+;J$|lt1f!{Ya@rJou2nO+HmvMI$$gwFhsB21=AzpE z*9~qkIZ%CvVtwvu2%Xxi_WrEj`=;`dx`Gad5sBeuoIJ?4MUJ#SCo_2f=D?vMajdby=ZZx{&c4laZ0wR%SlZ5K| ztgyMrZsL749{C5T9A_}4|->I;aUn|JUT zf7TYtw1y%cJ~AZu-`bYe3XEsB7n@{qbq50H`v1{Hb*QIyi}PSHic}Bm3*$7(=m+K; z9I_c3hzRf5fO1Q<;`@i$k!jUL3=9km{ixhX@B>F{x*l-kxL~nU!Moe@qcxyU163j$9KL1b0M1x_e85PCke2`^Luto(>o@A|~h9^&82?0&WkptX@Z@GT1{Byn(G%R}j~ z+Su4oown!Kfa+*?`1yeLa~GftgM3j{i4X^NSM~JCimEU?G=d;_VkY2zxU58s^7&r| zi;V(wI1Q(k8NaH&{t^-{gT&b>s3ExkHvybbQngv^ooi%D0GMG?(JNCI>wW!Q1J}B@Zbzy?wY9Ykvm|qvBB7uJT8J+V z8@fk=t_P(>Fbct&FA3ARXP`_1c;B$V`TTIDw@$REEub8z;I5aRHZzqQH&?%mP7wUc z88yqvQ~Q2_s~-FsPYdYolR3M4r=Ln`QI-}NSq6}%-L{4yZ?cdCfHLdn&u!S@XA#f| z6v`9ec^o-d=?GcrJXfC0QzDb$3>8yt3rYfGDWVOSRIy~a0u9CIfP$z~^D4;aqudGs zkG%m{d0}XfA8X6z{(F}A`G6sDc~O26g54VThDV>3j-r<-lp&v8=4mh2u228l$H?oL zSa#2?4jBcVHjvWl#ZJN?8W}q?dL$fuwUy& zt&W_;NCGRY08B;<3h4!-6RcYAiXkJ@#*XPl07Yl|MX+PgEw;kZ11IVUXwz-~j;v{N z2$BF7DT@9~>+6icJmB-mG!KJtq(yx}g+s`In-?Ejz zKn*K`f<+SfwxT>0g#L_5Cz!_z~R#iQL zc^o|;R&98k>P|8Pg<^v0ARW_w0UQm${bCAX^E>oj;~q5XZ{&~;?GOa~Fw4#6L!@+U#RjhX z^8_V^SA^74fX&HVFGu4y`-YE`qm@iPN==Tk`hFO3^^Z6`J6RiDS287W)M`g zV&#T4KS(m5M>C0_7o^Hq86v952;xxC!Y9(yzH1BCuUQSl&mOZU#Q7=D83YY~z7&em z(V$G%0Q|a{rh#GjOjAa(kLbmVLy&OkuJHw;xh$gP5>}(7$bXVwl`AXdt7%F6yV9n$ z9Z}@9Au2pkF>FY|i#((NwuSUL)EXCgiEBC$7(ZyQnBE#yM* zSBJn?MReYO7r+*`p}c5rwqMS(f;k}hj}g+iq!c4#=8oGOt||Y>H^Kdg>2Ql9O^_Y` zuz+>zUZ4}S*TnIH0scICNwwWm!i)6so$!F7LQi16jT&^M6?&dG>RovDFGvQdE! z|0oURoFIB6aj$v*O_|vDX}CSU=i^^Jgb?T<@+l6@tPg445AnYAS^2s){3mOI)8(Y( z4Dc-dbMpJ!+8PLwckA&kHR@dNL5TB>FL!16Jzkz;`EP>e`2!95W zS&?c1)E$U3jjns)#3@lx1HkPpE-nt(8r?ia5(!{E!;h=8Tf*D3o2i6V+~PI4lJEvj zB?)PJN=G1yfF%SLd0>6OBbJvU_T#0%(|vp3%eW6Xqe4<*EDpzY3*g-%Y~Wg`wyf&q zA?0(P9<$mHj!M~?u$!*6`3y2gnD%sPoxuv_)GMwP{R*QAbUCF$son<*>^}yqiVohL zCg21oHKGGO43+~tDiL95J3Kv=JVWk}c&;Jnd1CMC3YNfM0-PftD5>{9Pfi3FMl| zVlBX$T90JGrc#~*Zno>JhWPp+mzNvBf`iJRZj z@`|JN;85^S&cDXbRGD$wO`7zL6Y#t4i?v3)W7R0pcKY$XBn-QI<7B0gsF2i)D=nbFCs}ij$#e`gilw7-|MUab% zHOdqXmZ@Z(WzXN%d7I90mpE?rC9>M3hvPC33!X6((GvYh_qq4-?DQrJKrr~LK!%9( z!8QgnkXN1i1U3A4Cj4$YY%a6kcqW%_ z?Ze@~qIDWVrmbCXP`_880O3twrCK4KxO)zuULjN^48;!uHHr&x=b}DnZxuTaA3~Oy z2ze>NmjI6zsJAvCJ%IY-7a-^>+)!D6Y;K0|tG?UminDL86Igzh#6=I5#{1JtJc{2QSLJ5$`rG+gYHtKQPk)>6Mp=NtA0uYH4ZUK71cYYamD!$*m?U$Rr@x^ukwA@}FE2Z-K z8G%WQe~qE`+#16K2poIB3oB&D*z$|Q3YCBZ<_!w}Vr`s?rHKrmOJCOTv9TR`;oLnWQ5vOIxv8g(33kCsp@vflqvBV2 z7$SryI(=__7p5M=`QZ-TOLOxO(T~3P+-PeBLRcdNSajI(dUT3%Sracxq!>x6Xu+g~ zB;cZ@GNiS4EAkU-1+|YcU5=#3#twIeVN;Zu$w+7V3(tYNjh*^E`|o^iV13V}Tp(Py z0TKB{7s5n@MK`x?w6v^9Q4$v9ba~mR%^}sJ$7lKUM9QW7T7ZNUs?NN9q^da#^1m1n{QVXROeDF2$sqS) zlQ}-wn_Axbli5+IT8mQ*Q}HDqkc9}8ln9vK2sHlU534Bv#OMI`nV>sN`41$aHh=*D zAkqMf2j&j~!D5R9FyVg=_8WiwpM7@t0@3^OgdUKq4!%41)4UI`>|UM}f&zuUDEof> z2QDkA?Ob%c{y+CmW|%p z&0K%m)hXoP0gv9R806PMLdx=9j*0Vct6J+3LQPUMnQ@VG@8Ag(VshHbmICj;*G*PZ LQKD4L;LZO6qmrrd literal 0 HcmV?d00001 From 7c47f9f2548005deb490c090863d53a61be8f4c1 Mon Sep 17 00:00:00 2001 From: hikaneko Date: Wed, 16 Oct 2024 08:08:38 +0900 Subject: [PATCH 2/6] Update main.js --- .../examples/traffic-filtering/block-based-on-ip/main.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js b/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js index 4054037..2673e76 100644 --- a/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js @@ -1,9 +1,7 @@ import { blockedIPs } from './ipList.js'; export async function onClientRequest(request) { - const clientIP = request.getVariable('PMUSER_IP'); - - if (blockedIPs.includes(clientIP)) { + if (blockedIPs.includes(request.clientIp)) { request.respondWith( 403, { 'Content-Type': ['application/json;charset=utf-8'] }, @@ -11,4 +9,4 @@ export async function onClientRequest(request) { 'Denied Response' ); } -} \ No newline at end of file +} From b78d687175af4ae44494fe088bc8b2f5b5d3c5fc Mon Sep 17 00:00:00 2001 From: hikaneko Date: Wed, 16 Oct 2024 08:10:10 +0900 Subject: [PATCH 3/6] Update README.md --- .../examples/traffic-filtering/block-based-on-ip/README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md b/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md index 7a6fb87..2dd2e1e 100644 --- a/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/README.md @@ -16,13 +16,8 @@ Host: www.example.com HTTP/1.1 403 Forbidden {} ```` -## Property Variable -To enable EdgeWorker to get a user's IP address, the Set Variable behavior must be configured in Property Manager. -![Property Variable](propertyvariable.png) -![Set Variable](setvariable.png) - ## Similar Uses Allowlist or blocklist capabilities can be setup based on other end user request context information such as connecting IP, Geo, Device Characteristics, Accept-Language, User-Agent, etc. ## Resources -See the repo [README](https://github.com/akamai/edgeworkers-examples#Resources) for additional guidance. \ No newline at end of file +See the repo [README](https://github.com/akamai/edgeworkers-examples#Resources) for additional guidance. From 591f9bd5d8e4b6144a550982ce75d886ca4fd973 Mon Sep 17 00:00:00 2001 From: hikaneko Date: Wed, 16 Oct 2024 08:10:53 +0900 Subject: [PATCH 4/6] Delete edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png --- .../block-based-on-ip/propertyvariable.png | Bin 16985 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png b/edgecompute/examples/traffic-filtering/block-based-on-ip/propertyvariable.png deleted file mode 100644 index e4038349d27aaa37fd46756bc1e66dfaa211eca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16985 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 i Date: Wed, 16 Oct 2024 08:11:09 +0900 Subject: [PATCH 5/6] Delete edgecompute/examples/traffic-filtering/block-based-on-ip/setvariable.png --- .../block-based-on-ip/setvariable.png | Bin 20153 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 edgecompute/examples/traffic-filtering/block-based-on-ip/setvariable.png diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/setvariable.png b/edgecompute/examples/traffic-filtering/block-based-on-ip/setvariable.png deleted file mode 100644 index 94df6fa45f8ec6f875b86b750df36c5fd69363f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20153 zcmeHvg5f5YR&4^*I6*_?vZ@{TVz# zI;lvDL6i;>Z-alVO*LiB6civBz-t5u7)U}0*!xYuuMi~BpVv~5bP&-0ybq2OVhI8B zdmBaYeE%Z@e((4B_Zcb^>R}6Lp-kw9*AVCTo6dF!k$@*edl@Y!2nb~C`(H?i52^SN z5Ku^#s+!K43eWhA?QB>KP3(+JS=?>x@ArZbaOVRrZA_gF$=z+NZJqes1u6g8f)BjD zf18z({GUyntpq7G6`qre+c}z&bF;9quu%#jk&}}PIGUL8sYpou-W~iWNNM5hY|qEa z>gMLg;`W5a&e5EeotKxFm5qaygM%4t!R+K=>ul)GZ0khz??E1pBVp=f>}YB4Y-wjp zet%p;BRdyoK}yQ|6aD%5x1G+GW`ECQ>-77wzy-42f5OVn!p8dF?Plt3`G48%{*!-q z`{%m;J)OY)!T3~6o$Rb#?pvj1Yw0Y+A@I*R{`a^4Hd5gJSbWbd-A%1EB`j@BZJofb zLOf5{1X%yuPyX9Iwf^qO!O8QVd;Z5KzxNbiz3;96=)He$%|Gvgdn1G-!20Jt3n5LL z8u>s#h(O3nh^o3n?xn%LRF|FWeq=2vi9yt5TY;>jvD-a4p{uiNtNR%j_OqVXK#j7p zL@`(SXJlN&&!IZucc31n__^^el*P{O;94?V z0;kIniyZRd;s2h(et%uo+}zyD%S+8^vd~=UEd*lh!vmigQts)eG(xmU7#Y9ck8zmQ zLK438xSBC#v8R7GjTK?SG?-*g5~(73I5;F$s1T%hm2FOcQjCwewg2B^$h2ZWg`krT z6LuG;s53eLJ*6Kz78~aevq5!LM)UUNMJP9`C2|=clm0z>zMhSwc1+LcqxyXODmJbN#Ea_qz7yT<5Xy zAjOCF`THUwRKRw@S;8JvnGfwRG~5UeJ}amTfJd8eetrBs zil{PzNvn#F*OXpIsL`u+e*tysP2Z9DxLD)YXrFx1?KAPCN{8PEXETJFwtXCwz;S%Q<@2VRC1f6s{TXkOVfXy^MKJpCH^fn>>c*hXlcirbv_p5%HTnIzdb z8Bs3IC(y1o23fyax4^byn=)k~3%bcC*bZd~3p=idIzeu7T8?dru2oHK4x~I)(=FoPenWtwVmZKA2=&g(yl6O*x4zoI$!WVX-=9t?Epb4SlXE ztHWh@C^Sf$I}6swX_aoewKAMpI0e#}R4}RKLD;0lS>Y2Vx_c5!Wb&hX6a5-${>Sx ztLc?mmPDA3-LH^zxI{^vI&0nAmW>>_L}K<=*`sBZo9-S>-WP>0FC0INDk#MjVm=H- zzc4Hj6;z_x>TvEOsVszTIze{KW_~=q91&GGV?-?3V!AD{^|^#b1#9QePFJ<6j_o3v zMN6{`UgLJg)X(Gb6K}bUL;|v+&@gT~L@b%o*hrq*&aX~Ps=-?<)t zXBG@VM)bMtIq)skYSP9%zV3=B(WxU5^47c@O67%);jpBSa3)}3VM%0AE7tm4TMBV0 z`!Fjq=TK%^a9=0C(Ibyk6@D%wV`TY#{bUH4;}t?I11dL`^>fQB@3TlkA=OD-NJ>pU zRQB}|7zFjsh|i<3kipe>HSec;8`Fe+SJuPgU0q$*x?|*Rtv(O+z|S(i=#K2e^u74m z)z>HInJ(zXVw0o%#r?>|w}jtwUFH~XAn0zq;02pp5(9mQs)DRAigIA2?wvn$f{&rJ zrgByI=%>6!j!5p`Q}sOzqy_zYtWO&$OVc}UZ-#hMDB=a8^gssBPAN$J1aSa(fQaOl$mV6 zX+2)9*W~H2+U*~OJZp7Pd8gax%=;oYl3AyQL8o+Av?YKsiB&poXt8OkOrKS^k+aY{ z>gKUhx&Sw~Y^h!o9v+^VmDSb7@g|l26MI-B9%BlZtJ=Mg>zjim-&hLqOX1lYtq z9`e^*-GKo=p=-(G3fW5ItLPf5$#%pjgj4QU>lp`2Ej?5ci$TYaq@wU47m}!?&mxmK zkcP(cl$4PwB4wyyk2i%iAy{cuI5HOt^Dmz^C&YpXHs@EYafWHU#{w>e@R+Xa+VIfl!l<^G11 zGrfcraW4HIxa1FnnsOD=qKol;kZ^jJO1z%-lp*In$s1}7-5gAb2%KN|?8aaH17c&m z%vYGFCx%3$K`wDnm#;_a7rRAe{PUb^dIF`Kg3-j}_GT32FU*l=S>C=UM zo9$QHv-ofpQ$3uXn7g*G31u8YcdUxx4LC(>%vM`s(<)NK`F+u)s*_sk_f6(D_DmOO z_;~oCo=dd$p!<|)rqVn^NpA5!L8TvcaRQh?4}^!(3{F##l~VJgl{Ov zS$}r>Rr;MSG5s30U2Wu}c*y5^H$jJMo?S}G@a1$K*;Q$C=&52YXxczRfvHlx#L*Jl zrpDwa{A~pukCl?F$GW5PgVxF99Hbi+(;2#E8B?F%z#{Wy2)+LPHNHn~8&397kj5}E zwBSR#uVKn_!#3n2UtC1h;S{!aa`N6I5vI^`XU}zn`17dEmMedf2+PdG z;xipYSvmc=(T{WH%Hsqvqgvr;$|T1yLXHtb`7!4NnMgjz!tnMQ)*VM@DV8?CwqtGj zXzh@`9`(mli^bqSLk9e^CM8&_ZSdsfyTRnB^{a;sg#5KTpn z`_y|KAr%5-ZB`@uap&!~IWtw}PV_INF4BXV_YFE$pm`$j7{k3lh_@Fx9ZdU7G+B0c zzS8l1z?X6DbUL{?J(SmB)uhto>)GziCxV#@arpd>03RPZhCLN+>yiE>W}-!euqJMs zxh+rFf!r;M-(WAE#_t%3@(7NKj}vo#x@LQ3S0^_^PHluX73O4k6n1WhRAl~Arcm(e=OqpAWt;O*!__+adUYq4gYVH_9+_YW zO+-9NKVNte+8H+Dx_2w0h^Bb`6MDjmyezm1%{~irO9215|K4m}Pu|*Ona;tcTlwCB z&2l6*?P?w4%WN3{P;D2#G}y0Xy=-ta6enWP*3nssMs~z-#LlB+6H7JTn<#pBxK=0H z+BzNUK6Z*k`PS_L#6c=RotqK)WYI%%r3AtEf8u$@(3y-N(yWl|D2@qLU7GdE=J`gT zPyp?9oo*2Fuw9Fz5FSnnad6`IDHfAtPWzoFl{&Ddx|W$#*P{$ScpMHL%r>UnF#U$A zV1-|QAU71tZZ;8!j3E;W4i3tFmaKwX7O6aILCZ-!KDap8>aO*x>-Z7Kd0i}g+scIR zsX6lr=Te^9Iec9j%lUzuus2NeyZgr|{a9BCDIri$#xD2!mh8(2$fH^DIp9ony?;XY z=N=l|sOC;~x`_mmH7d}5PjES%yKE7Td~A@7MIn3o)X0FomxrH!ZZ5=bOGB@s!hqp2 z;IiV*GhJk+sl245grqu6F_eh4G$0_r>yQTVes5hm+(EDxp<`x6|?s7H#u9NzCA&2TZLQ?}7iIk1S*f6o?Hf$N+(KKRN# z5YAqS{JcslhxRNxrBdS|wu(T}h(ffi(ziQEnKwMYZVvQnyc)jyLF_z*ywpddVoSM% zSHqc7`1<;lM{4Or7Ys2*W+B#EOoA${ovulzd{z!u^;DMdw$hH(!S z3@Bwf(ICB-#I2-XvQ7L4_=m(|lY&aH?dD-5#{OHySUeWl&c#Je`yIRP^G75M-9n^; zIuFg?^AF4UjVdtW@%=%6GOhTC&l?HWitV5M-7_;0BIp08ZZe&pbZf2rEpB8)7(t0u zqPa!=rzV3mrWV;Yi>zvA|9cgF>Y%OK6~nUsTepng=m5TXkTK=oJxf4atBpR! z|E;tl<3JbEm3@gR> z5+qkpxt*MxpY6^4I#{xT+xlrGH7fovS}9>Da`(YbOES#%g!b83U2l?Lb8A?}KT`>0^0A*@|g=HnW^r zoOEEGh-*FVPfT|rX`+ZGOLgTF(p&6D#+(K( zU91kbxXkza60PJC=8Pnql6oSEc`L7W=jvSdE>n4(LeEvv&|+<~-hs{)$xoK{dQ`e#qv&-(;bGkGscaMuk)!i0 z?%HzC1YiT{XyPJp3u>*k0KOovoh;KwR{}Vq>-};?W#uSw#^F%9ppII$upVx)_qdue z!KWqL(dmJKl9kP&47Y*wOS4J{=v8!CP6X5fYb;L&ZDngb-X1DVbH z-j8(Uj34+qYo4`iD5b;DuYuaxec3PLysfXe65$L~jCIxvNxV*GUi|!OaktVZZ}vQA zs!S)yx>bIsw@@@lmiJO2=@sK$K3q&RwlkGEc1z8lUH97k1Kz+Q8(k5OPluqBW!9DZ zG}7J}c6V6&oUd>=@86t_8;#t34U zw=dI3yQ_;!Vmh7t)83veN#vq4J~-xlOep8|o;DX|*n;I+PgI;*HoLvS-O2W7 z%}vwm{-l8o0yPj(?d@gM>SaD6;r2mCtNJ&-*{1y$2>4rIEx)nkgd~(d{lL{B`E|O& z*x^xaNC>?1+-g@uoO}n8Wgs*c_3hTkCktA&Le;*>)YR0&db=edXX;Yzn&z}$s=)+C zfL7d`Vo>|JIg~eUlSMh`#qzTHWGpY{r+xmRxlG1N=hyhkqxd{1Vv>%QVgH;JbTXlK zzi>&KV$Yhwo*3zJL{^&*oIDF7bxKMm=j|wqTS*k+e31;R!<0{ck*64C&*{19Pz;%6Kb$E_#BD8Ni}*+=Bp42z zR3MZJlLrThh@hE--_?5Y%S?YiqwTyewi)J`m4V2a^-TF43NPn`+#WFrz^E}(-9n1(Pi`3`YAZf&I z_!@-#NFMzGe6o>3vEOMFAAL!YjDpcFw3(}wPhx88E8vl%Z$6nU(RsRSZ3PG>Fi`?| z#)2f31UhHx9oEX#(7e8vZ!6F}NpDiOZ1yR(gCu0wUzcIN%ke!1h51O5w-G*W= z!Ww~r08F}o$6F3lxtlBnUTxhY9=`Ch*}^0_2Yl?$TUgXGet6{~1UNW>&E+Bm)@-iU z*TK-K{#|fFYVGKsKwl-FccH|QAnq6)WESF8TaIhLsOfkhpof(pcKT;#W)>IqZ~@Ve z6xtwI*r^^^md8l?R;CI;Oo1E0g-$4$QLw^Ngp~oF>T`E~R&n*AZr%110h1T)bb7^_ zAd;vm{z(nRn3>KIT;sdFoe0aHZC}tRaaM>r)&GmQzbpFn;Cy=>eBtv4ftyJHgd9l| zUncf|W(@X0l>VQM{@?9_XYRpZYFypkcwzfMqNP1lE97rsR;4%=Roa)Dyxf4;V>MN3 z+8g^3K)Nt&+UTICzW)Wfjx40{y8*%>nN?p19v*%ILhrwTRW+04wT=+26C@d=3 zGJt7GNT03-!06Y`1mlcxp=v>;*-f`7pKmq0`TiFe#MQgS+P#?l(7pJ7t4@(|1W;hD zz}1Xr%fB_(@u z@|k4M_v$Lve{#5gFPJ7TjxVn-oKm=LGUqPO_K=|)>HvnIfXR6q=*oy2UzH$rd(6-Lz#=z6o1^X!Eqyy767hF88yk% ze6D92ktor_79(F8Qgk{HI(%M=fXw9ka?LvV_g%?S@d87;>(2%bB9wD&iBrTv&QW}Z@kg#7mGD3E9>;I3VwP1GziY1qG&5TvRtRFqsi4JxVf$;tK$)kk#Sza@{A>hhx$7#`WB?p*HCH%?zb zw2skAKir-9T&H!c9!kJ(+ur|fNA9#;L?GDcDg@?PO4PaKo?|w z^!70T??L`Qer_=CFL-7Kx$g19!2}K=u)rAL1AHr1A{r2~+7*=XK#7Esfc*Mu5TKL* zWaQjRa>Z1h@{gqCRpi;%H#hJo_pv1dRkM9aIT1 zq=Jp0TJgQTpp}>?H|$u}&_igQwhzG;Y!5CDY;stWLcvc{1S9k6Y!AP%GN~NE%hxME zUr3kAU_d;krtTaV7?_%x z`ucUdH;yV)tIl>|zQKvhi+$K>rM(Lp{`zq3fb4evbZ1hl(fQ&6`H?sJd77YCtx8U~ zyOXcpBS~7-9lm$7fe(zD&A} zY;<%MzxEeGlb`xhEMMErtiF95p`)X<7TB{)(IJ<})L`%HIk9|kcnJW2fBd80BupnMB()jk7uUU6 zT*Js27?EN>A(Qx>D7|KHL}3YhM*}*nR}kSlU;=<1mL37*{Bj6kM^I|&v=q&(f33Km z#d8E!kknOi8XD!_v4l}7ljxFf!V?uD^iU0dIHZ~iaweZt8o{YOjyMvz_~?B6eZby! zx*YQC^v9GTItd?+>qwTQVMjo7qstE(9dS&S;%`~1dYUA`*t#7~*XIt?u{7mzo+vT5 zKXYDRow)}}VC#Y^l7vuk8XvbCQ7wd}TuY%-`fTx|@n-ITHX1P}j4*~;*5%vB{o2*m zFY5FH0^o0g@(Qg`E%-r=wGl;m0nFngRtAC+9PFd$OlKs{jkJWg?7_D;BkOTV=hQNq3TfC~R%5aaf~4(VYJB z5P!d6`CW=p!iB+2bT!$kGZB-2N5La%PN#)?I=p2t|Khr{$GXOX$H zGYS$Co(D$)ADt=_Xm|m?u|3-w;t!d5hE*;HPx0Yao+rz8;pR-VGfc9pc=~x0R1jjchP) z!Kip$_Uj9vPdKoo20m~(gxtn+e|Tf7^TnOL&;U}EfXTXInwC53qZNT)Ac1wh$jrT@ zXIj8^xPiHa^%5i}HQX?lMUZ!qTc-WNn@7SaPi;g*!g1)~P#tocbC~iR{(C$y@R>z=jqiQ_Tbm>S%r_)~RE8`-}$bcK^nuHqe8|Etw$`hBa(V*lWHH6S%Zcmd+1Cz_;#gU;Gy1jxPqL5e2ZCV0}F z@0hf(;LfU7SU7xnkRXU6vH=L_bd!>JA8UnAi)9I7Ss*qN`X&V-*DGo$`yN-$d3LPS zCcmE@U^4_$KObn;&>Ih#h10DOX!#BcGFdL`g)x0bz8s2=AN~DfI+Zjvr<0$UKee77 zZ_x+A(^D~(Q;TUZ>*n>9cieSAwRWA4@#!lyY-*XzoodgTS1H_fZNa?7?s^T5xT{1} zRgM#{s#66#9O<}=lY)Z;1K?@#NAr~4f%=Rof`N!$Cl@6=iB+Ef3#$>7OBOwVTcLxt z_&v8;l_*+aUocNsSfP@2b;(iIo_)d(!75j$!)D8Z!huk9HgdrB>RoP2e^MMJ<|2AV zAs&qE_1#`mROT@c2-34v=1NQwMnnWSMA5n2HnTYLQ9P)Ar^6CqSYI7P;%jW?@Qg*) z+F6@Vf}=BY%2!a{U>TtyC*b3E5>u0}!lM!fLav=KDhju)O5pQ`PfEQSaLm+`dx~axay%FLh$$y>@X3fUeeRo?2C7cDzWF_Qtoo)3_u|S0v zq&2U1zxFSX@lN+ApmWNWzU(i4dXyw5pFsD0pY&E`mASaM`Q}Bor^{4cn-V+<@tdq~ z$xrTXuk1vAacGEJ>I z^e#j46hlD2L-6}ZwlJl+_}ke;9*n4ID6bo+V5HRKXr~@{^c@qTB)B8&9Ite`E9Xa! z{VPZdPi zyfUD0{S#kk!T#va5caL8kfjuqgB}Z9fBAEL$@M3F#GiYQ{utsk$WB6pH{a86QUP{- zNjj9lduVsboFqvFJ`_VC=8&=F2Qn<47IRK9OHY=74!I&*FQp~94c<(%iLN2tuY;m+ zpGhh+>4LA-Xwa;s;bD(hOJBJre9)=Fd={U!(88zm#EFFAQn3P*icGFM7ps5j$y{krPo8{_qbt(d|+GZ6mh93Q< zgMe-$2wIu@)SQ_8PXoGuxby!^H$`k<0(3^f?d5%QS+lD+4QMs@i=T%X(1sY00Oki z4MYL0>Ej#&Vyfq_?RU&pNh6=6>GuGtcuOri+N7f)4rhOLmS#C-esVDNR6O{kkzs%C z;Ir4SboNiuT~StB8F$7#x3Yy1qD`o2K@MKX&>4ZHAcFX?kvE zn{XX~Jz(AQy}P{u009`4*nF7m2`ImP3g?K$^*P`aq%)PP!S zXL*@C+;+a+($qBZvHW+SVR&DkD|dH@uu6vGsC#BJ6UBh?HZ6^$P)8@^PF(R)GJ8vP z8q^T=UcdAJpaZoWtpI}0)tL<_g}OeaU(Hl)vMpCzj)fjkVHwxTzKUnIQg?=QSe$4I zDY2>4B7L%)!D+d({UmR5@aS1QO;kF!)<3#ol5Fd6OCwYK;E?AJP%nYrlbyK&vGB9o zLFq|nbX3bY0F;b?652Z%FYtqc{fSOEP1Z!WC*wlMsyDy>^{r@h{wq{6_CnDcPaxxT zWY8IkrBKU~W2&+@lG-hPnfR=92k<+~OE#rWk+PG$r}iW59-!Wo@Ugf)5A%;99Z2VT zp@AIB0}YRgiiqfc1}Y3kfUX41y+q8uN||(lO5tRG;UKn!RY2(KtVH*-koh2S7H47r zbYVm(i09lkJ0>ejjV>uJsXVc@MBKJ-LOWfyM-z!>svavOaRPm(F+0VA7*)vU1m6hr z=!w}g`E-HgNkvKNE1UvnC&zx)4BRE@XJEiJ7^%zs;2=x6x;7i`sR5ywM*| zF8T%tBE-bI@aTk^U)(D;?sQ(3c$NT|yOKdiC5=Y(#Ox)Iw{|9qwk_i&@29juGMKxO zZi^{gR+AttvNwZrL7HcnRlnIHkxH&*6c6>4X95WrD+mpgIqiF@?2J`k8V|RU($d3&4)mgId6kbZl>I1m!#?B1$pr2u2iz@C5_I`}OOJ_Z#28 z!ztG|Zpck*;#kesvsZdrz!YSH((#izaB2WW4mQX?viESMV+03B3V4({+S@?^tPBK6 zz!8v>`j$i!a>+Rdwh6qxROP{B10x2w<2ffXMFWr@v9yu}0eBqML_gpiuy3}#p9kjV6Q>NVCebZ&d8Qy=RZL zLI}QFZVQNY14TO!V!FDch;(YLw|931Y-X$X=IWG^IbhjuE>BbV-AeQF%=cz%fI|^Q ztXTEUHWT_gq&XViy zyvxsZSyRbrpksyX0z9N2gtXzdccPvIysb8^trQr7GB4KA>+O*62?0VO3uF%nm z53z;iw8EH{Q=XPpsJ@b+x-=F+k&oB>%%oBu8#+E)5Hr*a;`w_2yGQJ_N@=4@x&Aq^ zT_BQnz|{keFbgRm-zC-Vj%<6ZN6CRpy$RJi$?%^!vItXe@aoHP1Qk?0TQk6`RBCYk zY|dNHL#vv+ei_{n{M2*Y!tkJzWMBc=14QHQHYnxwm6Z{oL`=&>t^lm-p3hFr8%v$S zJa@3?$O@!53ZsxCCZ>Ym7JI_}tOjiq7egW|OB&D0i`k z&EgjVxLJ)!uFmc^-!D&z2sw*m404!vxGh(|?_4tOo&gqRws-?H=G3Ht^E38bS1O0; z+pF#bc4)X0CkJ{|r6VKBp;SSQW^Z28ZBgI5N>klf21c!{&Xa9Yw+e#(5oMTXshl~g z1z13t4mcV4v?wMf4ydeR%HmzI7!sTllXt&tG5tOz=O>VJ(>e+nS+ak1N8h+z@t(zevfb!gQojW96zsO^uYFyLg>q>H>#6`( z982MuIREak<>le>VNP(*^(>1D^W@**rCUvvNy{}B5Go7y?V^qE5Ow9rVg#qICNa;& z&UMHYTGR zUjo_dPq7k`=6ZzPd3Sy!tR+=)^g)pc5`Ak4y`dYBh zjpBaDx!wFznr(rE81L{OkDA45)!Q$t*3g9dff>FM4HNU7kwOQKR$V#6w`DX}0r_zV z3~962TaY@5!&>!RtkpXlY4Of8S7MXIp_I6TzL8m5BVz-bh*C$Z8;gkuXOyF9|Mi*9 z4=U-Hk0d!Iukgs){dxvjf@*4TQ5xb&2<34LEuMhCm+M+j{>|t^a$dZk1U{I-%F=vxx#-r(trsrsgNPN|M>%`zq6SK1jyiP9KKE zl*lXuzEJ)$$G^#<{Kx}yH@*WAt~z)O<#cD_$6OujWc%*ko-z{d zn<(4frj=CxVG|>rCJUHR)C*pd1J9E!e>SEru|wd|kZ{F(4GkR|MQ6hUP42Cj(S{lI zSpJ=%mFoV>hQkYVZ*t>1AAOT5`$&kQq{>px%-0#hUNodfT;U)$8a++ST~9n3718H` zf#7v-Js{`MInS1fCZ0KZQSyQDr}?>aYA8-6bOWW^FP5>~0hGx&%1iAE1~e71Xc1mx zmm0MnO9u;|SqViivAwoChpv7dY~TkT?anx9h0CbX3w6VBHQ3!jCJL*>oWB$KWxJ33 zh#8aC;JL;GJt;-u%OW*g49CquwF0Ayo8~1xHMoc|xVRl%T;k0uy{Em_1FT>2-(1N2 zGwNiQms*&Zk8h$bN*rz>-r-ZAQHt1!3L6gKTuqc~B66vJl0sDuA5wAN#c$3E*-%a8 z9rmVAFxo@x&-^i2A`XXEvcg8sjiqqoDH>R!-y#HXx8|>TK#~HE?r4hlO&5XM3}GM@ zP9l)k1tcTzy5iJ!m)?4?65yGxEzH%qb1CaucEs~3>_9@p8>gW)+FYNrQx+?Kf{Uk7 zD9|ceEK_5kqNQd);x#qJy|u&I{Y=L0=)BPAV&9utq4P;LK95DO^4pkG?gZ-!0l$an z3gX<(XG{!?a@W1aS{t9a3S(MFe+~|-Nv3nOnU5VIKPF13(%4?9mesoMdG3w@D!Xiy z)#m&W)64lLFIM+*{gMH@5-??Gg#y{#d+iBo4Vpb;$fL)&9j|JIBG_7>SG>p)HGWJo zJ5;M*gz+7@{?tuqYqU;nZKX#lzK$k2rZrMcLnGscF&_NI<-n-j>MG*5H&s{1fX~><{IR;kx>bj-`=VKDG+olkM`&QL1F*AEXX>rY_%r63>&7~-QV zWn%obHQ%bk8c1b^1z~?e^*Un;Dk;HuCHZL65>@HXm9dRB+^aW11}_a6X#| zwisre?TlElv&yjzz}_TEXhbE=M^cMKLQ>2w6ktCM4f;A$)pW>m9)u*PQ;iPm$81~J zygbg@Wo;AR&)}~0@~3hPBtqPTjRi9&ll5ifVM6v#hJU5-K=@A+$0?NwHAcgWpWT)! zeB03p=va5PuSBVmg?%Y**)w+;J$|lt1f!{Ya@rJou2nO+HmvMI$$gwFhsB21=AzpE z*9~qkIZ%CvVtwvu2%Xxi_WrEj`=;`dx`Gad5sBeuoIJ?4MUJ#SCo_2f=D?vMajdby=ZZx{&c4laZ0wR%SlZ5K| ztgyMrZsL749{C5T9A_}4|->I;aUn|JUT zf7TYtw1y%cJ~AZu-`bYe3XEsB7n@{qbq50H`v1{Hb*QIyi}PSHic}Bm3*$7(=m+K; z9I_c3hzRf5fO1Q<;`@i$k!jUL3=9km{ixhX@B>F{x*l-kxL~nU!Moe@qcxyU163j$9KL1b0M1x_e85PCke2`^Luto(>o@A|~h9^&82?0&WkptX@Z@GT1{Byn(G%R}j~ z+Su4oown!Kfa+*?`1yeLa~GftgM3j{i4X^NSM~JCimEU?G=d;_VkY2zxU58s^7&r| zi;V(wI1Q(k8NaH&{t^-{gT&b>s3ExkHvybbQngv^ooi%D0GMG?(JNCI>wW!Q1J}B@Zbzy?wY9Ykvm|qvBB7uJT8J+V z8@fk=t_P(>Fbct&FA3ARXP`_1c;B$V`TTIDw@$REEub8z;I5aRHZzqQH&?%mP7wUc z88yqvQ~Q2_s~-FsPYdYolR3M4r=Ln`QI-}NSq6}%-L{4yZ?cdCfHLdn&u!S@XA#f| z6v`9ec^o-d=?GcrJXfC0QzDb$3>8yt3rYfGDWVOSRIy~a0u9CIfP$z~^D4;aqudGs zkG%m{d0}XfA8X6z{(F}A`G6sDc~O26g54VThDV>3j-r<-lp&v8=4mh2u228l$H?oL zSa#2?4jBcVHjvWl#ZJN?8W}q?dL$fuwUy& zt&W_;NCGRY08B;<3h4!-6RcYAiXkJ@#*XPl07Yl|MX+PgEw;kZ11IVUXwz-~j;v{N z2$BF7DT@9~>+6icJmB-mG!KJtq(yx}g+s`In-?Ejz zKn*K`f<+SfwxT>0g#L_5Cz!_z~R#iQL zc^o|;R&98k>P|8Pg<^v0ARW_w0UQm${bCAX^E>oj;~q5XZ{&~;?GOa~Fw4#6L!@+U#RjhX z^8_V^SA^74fX&HVFGu4y`-YE`qm@iPN==Tk`hFO3^^Z6`J6RiDS287W)M`g zV&#T4KS(m5M>C0_7o^Hq86v952;xxC!Y9(yzH1BCuUQSl&mOZU#Q7=D83YY~z7&em z(V$G%0Q|a{rh#GjOjAa(kLbmVLy&OkuJHw;xh$gP5>}(7$bXVwl`AXdt7%F6yV9n$ z9Z}@9Au2pkF>FY|i#((NwuSUL)EXCgiEBC$7(ZyQnBE#yM* zSBJn?MReYO7r+*`p}c5rwqMS(f;k}hj}g+iq!c4#=8oGOt||Y>H^Kdg>2Ql9O^_Y` zuz+>zUZ4}S*TnIH0scICNwwWm!i)6so$!F7LQi16jT&^M6?&dG>RovDFGvQdE! z|0oURoFIB6aj$v*O_|vDX}CSU=i^^Jgb?T<@+l6@tPg445AnYAS^2s){3mOI)8(Y( z4Dc-dbMpJ!+8PLwckA&kHR@dNL5TB>FL!16Jzkz;`EP>e`2!95W zS&?c1)E$U3jjns)#3@lx1HkPpE-nt(8r?ia5(!{E!;h=8Tf*D3o2i6V+~PI4lJEvj zB?)PJN=G1yfF%SLd0>6OBbJvU_T#0%(|vp3%eW6Xqe4<*EDpzY3*g-%Y~Wg`wyf&q zA?0(P9<$mHj!M~?u$!*6`3y2gnD%sPoxuv_)GMwP{R*QAbUCF$son<*>^}yqiVohL zCg21oHKGGO43+~tDiL95J3Kv=JVWk}c&;Jnd1CMC3YNfM0-PftD5>{9Pfi3FMl| zVlBX$T90JGrc#~*Zno>JhWPp+mzNvBf`iJRZj z@`|JN;85^S&cDXbRGD$wO`7zL6Y#t4i?v3)W7R0pcKY$XBn-QI<7B0gsF2i)D=nbFCs}ij$#e`gilw7-|MUab% zHOdqXmZ@Z(WzXN%d7I90mpE?rC9>M3hvPC33!X6((GvYh_qq4-?DQrJKrr~LK!%9( z!8QgnkXN1i1U3A4Cj4$YY%a6kcqW%_ z?Ze@~qIDWVrmbCXP`_880O3twrCK4KxO)zuULjN^48;!uHHr&x=b}DnZxuTaA3~Oy z2ze>NmjI6zsJAvCJ%IY-7a-^>+)!D6Y;K0|tG?UminDL86Igzh#6=I5#{1JtJc{2QSLJ5$`rG+gYHtKQPk)>6Mp=NtA0uYH4ZUK71cYYamD!$*m?U$Rr@x^ukwA@}FE2Z-K z8G%WQe~qE`+#16K2poIB3oB&D*z$|Q3YCBZ<_!w}Vr`s?rHKrmOJCOTv9TR`;oLnWQ5vOIxv8g(33kCsp@vflqvBV2 z7$SryI(=__7p5M=`QZ-TOLOxO(T~3P+-PeBLRcdNSajI(dUT3%Sracxq!>x6Xu+g~ zB;cZ@GNiS4EAkU-1+|YcU5=#3#twIeVN;Zu$w+7V3(tYNjh*^E`|o^iV13V}Tp(Py z0TKB{7s5n@MK`x?w6v^9Q4$v9ba~mR%^}sJ$7lKUM9QW7T7ZNUs?NN9q^da#^1m1n{QVXROeDF2$sqS) zlQ}-wn_Axbli5+IT8mQ*Q}HDqkc9}8ln9vK2sHlU534Bv#OMI`nV>sN`41$aHh=*D zAkqMf2j&j~!D5R9FyVg=_8WiwpM7@t0@3^OgdUKq4!%41)4UI`>|UM}f&zuUDEof> z2QDkA?Ob%c{y+CmW|%p z&0K%m)hXoP0gv9R806PMLdx=9j*0Vct6J+3LQPUMnQ@VG@8Ag(VshHbmICj;*G*PZ LQKD4L;LZO6qmrrd From ace7f153a9a54dc720983c18e6924e254065e6f6 Mon Sep 17 00:00:00 2001 From: hikaneko Date: Wed, 16 Oct 2024 22:03:01 +0900 Subject: [PATCH 6/6] Update main.js --- .../examples/traffic-filtering/block-based-on-ip/main.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js b/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js index 2673e76..2d5cd53 100644 --- a/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js +++ b/edgecompute/examples/traffic-filtering/block-based-on-ip/main.js @@ -1,3 +1,8 @@ +/* +(c) Copyright 2024 Akamai Technologies, Inc. Licensed under Apache 2 license. +Purpose: Block by IP address +*/ + import { blockedIPs } from './ipList.js'; export async function onClientRequest(request) {