PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`local ngx_ssl = require('ngx.ssl') local ssl_utils = require("webshield.sslutils") local function get_address() local addr, atype, err = ngx_ssl.raw_server_addr() if not addr then ngx.log(ngx.ERR, "Unable to fetch raw server addr: ", err) return end local byte = string.byte if atype == "inet" then -- IPv4 local ip = string.format( "%d.%d.%d.%d", byte(addr, 1), byte(addr, 2), byte(addr, 3), byte(addr, 4)) return ip elseif atype == "inet6" then -- IPv6 local ip = string.format( "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", byte(addr, 1), byte(addr, 2), byte(addr, 3), byte(addr, 4), byte(addr, 5), byte(addr, 6), byte(addr, 7), byte(addr, 8), byte(addr, 9), byte(addr, 10), byte(addr, 11), byte(addr, 12), byte(addr, 13), byte(addr, 14), byte(addr, 15), byte(addr, 16)) return ip else -- unix socket unsupported ngx.log(ngx.WARN, "IP addresses only supported") end end local function set_cert() local addr = get_address() if not addr then return end local name = ngx_ssl.server_name() local ssl = ssl_utils.get_cert_by_host(name, addr) if not ssl then return end ngx_ssl.clear_certs() ngx_ssl.set_cert(ssl.crt) ngx_ssl.set_priv_key(ssl.key) end set_cert()