Changeset 3771550
- Timestamp:
- 10/28/2026 08:21:49 PM (4 days ago)
- Location:
- waf-manager-for-cloudflare
- Files:
-
- 533 added
- 15 edited
-
tags/1.0.26 (added)
-
tags/1.0.26/README.md (added)
-
tags/1.0.26/assets (added)
-
tags/1.0.26/assets/css (added)
-
tags/1.0.26/assets/css/about.css (added)
-
tags/1.0.26/assets/css/admin.css (added)
-
tags/1.0.26/assets/css/layout.css (added)
-
tags/1.0.26/assets/css/mobile.css (added)
-
tags/1.0.26/assets/css/settings.css (added)
-
tags/1.0.26/assets/flags (added)
-
tags/1.0.26/assets/flags/ad.png (added)
-
tags/1.0.26/assets/flags/ae.png (added)
-
tags/1.0.26/assets/flags/af.png (added)
-
tags/1.0.26/assets/flags/ag.png (added)
-
tags/1.0.26/assets/flags/ai.png (added)
-
tags/1.0.26/assets/flags/al.png (added)
-
tags/1.0.26/assets/flags/am.png (added)
-
tags/1.0.26/assets/flags/ao.png (added)
-
tags/1.0.26/assets/flags/aq.png (added)
-
tags/1.0.26/assets/flags/ar.png (added)
-
tags/1.0.26/assets/flags/as.png (added)
-
tags/1.0.26/assets/flags/at.png (added)
-
tags/1.0.26/assets/flags/au.png (added)
-
tags/1.0.26/assets/flags/aw.png (added)
-
tags/1.0.26/assets/flags/ax.png (added)
-
tags/1.0.26/assets/flags/az.png (added)
-
tags/1.0.26/assets/flags/ba.png (added)
-
tags/1.0.26/assets/flags/bb.png (added)
-
tags/1.0.26/assets/flags/bd.png (added)
-
tags/1.0.26/assets/flags/be.png (added)
-
tags/1.0.26/assets/flags/bf.png (added)
-
tags/1.0.26/assets/flags/bg.png (added)
-
tags/1.0.26/assets/flags/bh.png (added)
-
tags/1.0.26/assets/flags/bi.png (added)
-
tags/1.0.26/assets/flags/bj.png (added)
-
tags/1.0.26/assets/flags/bl.png (added)
-
tags/1.0.26/assets/flags/bm.png (added)
-
tags/1.0.26/assets/flags/bn.png (added)
-
tags/1.0.26/assets/flags/bo.png (added)
-
tags/1.0.26/assets/flags/bq.png (added)
-
tags/1.0.26/assets/flags/br.png (added)
-
tags/1.0.26/assets/flags/bs.png (added)
-
tags/1.0.26/assets/flags/bt.png (added)
-
tags/1.0.26/assets/flags/bv.png (added)
-
tags/1.0.26/assets/flags/bw.png (added)
-
tags/1.0.26/assets/flags/by.png (added)
-
tags/1.0.26/assets/flags/bz.png (added)
-
tags/1.0.26/assets/flags/ca.png (added)
-
tags/1.0.26/assets/flags/cc.png (added)
-
tags/1.0.26/assets/flags/cd.png (added)
-
tags/1.0.26/assets/flags/cf.png (added)
-
tags/1.0.26/assets/flags/cg.png (added)
-
tags/1.0.26/assets/flags/ch.png (added)
-
tags/1.0.26/assets/flags/ci.png (added)
-
tags/1.0.26/assets/flags/ck.png (added)
-
tags/1.0.26/assets/flags/cl.png (added)
-
tags/1.0.26/assets/flags/cm.png (added)
-
tags/1.0.26/assets/flags/cn.png (added)
-
tags/1.0.26/assets/flags/co.png (added)
-
tags/1.0.26/assets/flags/cr.png (added)
-
tags/1.0.26/assets/flags/cu.png (added)
-
tags/1.0.26/assets/flags/cv.png (added)
-
tags/1.0.26/assets/flags/cw.png (added)
-
tags/1.0.26/assets/flags/cx.png (added)
-
tags/1.0.26/assets/flags/cy.png (added)
-
tags/1.0.26/assets/flags/cz.png (added)
-
tags/1.0.26/assets/flags/de.png (added)
-
tags/1.0.26/assets/flags/dj.png (added)
-
tags/1.0.26/assets/flags/dk.png (added)
-
tags/1.0.26/assets/flags/dm.png (added)
-
tags/1.0.26/assets/flags/do.png (added)
-
tags/1.0.26/assets/flags/dz.png (added)
-
tags/1.0.26/assets/flags/ec.png (added)
-
tags/1.0.26/assets/flags/ee.png (added)
-
tags/1.0.26/assets/flags/eg.png (added)
-
tags/1.0.26/assets/flags/eh.png (added)
-
tags/1.0.26/assets/flags/er.png (added)
-
tags/1.0.26/assets/flags/es.png (added)
-
tags/1.0.26/assets/flags/et.png (added)
-
tags/1.0.26/assets/flags/eu.png (added)
-
tags/1.0.26/assets/flags/fi.png (added)
-
tags/1.0.26/assets/flags/fj.png (added)
-
tags/1.0.26/assets/flags/fk.png (added)
-
tags/1.0.26/assets/flags/fm.png (added)
-
tags/1.0.26/assets/flags/fo.png (added)
-
tags/1.0.26/assets/flags/fr.png (added)
-
tags/1.0.26/assets/flags/ga.png (added)
-
tags/1.0.26/assets/flags/gb.png (added)
-
tags/1.0.26/assets/flags/gd.png (added)
-
tags/1.0.26/assets/flags/ge.png (added)
-
tags/1.0.26/assets/flags/gf.png (added)
-
tags/1.0.26/assets/flags/gg.png (added)
-
tags/1.0.26/assets/flags/gh.png (added)
-
tags/1.0.26/assets/flags/gi.png (added)
-
tags/1.0.26/assets/flags/gl.png (added)
-
tags/1.0.26/assets/flags/gm.png (added)
-
tags/1.0.26/assets/flags/gn.png (added)
-
tags/1.0.26/assets/flags/gp.png (added)
-
tags/1.0.26/assets/flags/gq.png (added)
-
tags/1.0.26/assets/flags/gr.png (added)
-
tags/1.0.26/assets/flags/gs.png (added)
-
tags/1.0.26/assets/flags/gt.png (added)
-
tags/1.0.26/assets/flags/gu.png (added)
-
tags/1.0.26/assets/flags/gw.png (added)
-
tags/1.0.26/assets/flags/gy.png (added)
-
tags/1.0.26/assets/flags/hk.png (added)
-
tags/1.0.26/assets/flags/hm.png (added)
-
tags/1.0.26/assets/flags/hn.png (added)
-
tags/1.0.26/assets/flags/hr.png (added)
-
tags/1.0.26/assets/flags/ht.png (added)
-
tags/1.0.26/assets/flags/hu.png (added)
-
tags/1.0.26/assets/flags/id.png (added)
-
tags/1.0.26/assets/flags/ie.png (added)
-
tags/1.0.26/assets/flags/il.png (added)
-
tags/1.0.26/assets/flags/im.png (added)
-
tags/1.0.26/assets/flags/in.png (added)
-
tags/1.0.26/assets/flags/io.png (added)
-
tags/1.0.26/assets/flags/iq.png (added)
-
tags/1.0.26/assets/flags/ir.png (added)
-
tags/1.0.26/assets/flags/is.png (added)
-
tags/1.0.26/assets/flags/it.png (added)
-
tags/1.0.26/assets/flags/je.png (added)
-
tags/1.0.26/assets/flags/jm.png (added)
-
tags/1.0.26/assets/flags/jo.png (added)
-
tags/1.0.26/assets/flags/jp.png (added)
-
tags/1.0.26/assets/flags/ke.png (added)
-
tags/1.0.26/assets/flags/kg.png (added)
-
tags/1.0.26/assets/flags/kh.png (added)
-
tags/1.0.26/assets/flags/ki.png (added)
-
tags/1.0.26/assets/flags/km.png (added)
-
tags/1.0.26/assets/flags/kn.png (added)
-
tags/1.0.26/assets/flags/kp.png (added)
-
tags/1.0.26/assets/flags/kr.png (added)
-
tags/1.0.26/assets/flags/kw.png (added)
-
tags/1.0.26/assets/flags/ky.png (added)
-
tags/1.0.26/assets/flags/kz.png (added)
-
tags/1.0.26/assets/flags/la.png (added)
-
tags/1.0.26/assets/flags/lb.png (added)
-
tags/1.0.26/assets/flags/lc.png (added)
-
tags/1.0.26/assets/flags/li.png (added)
-
tags/1.0.26/assets/flags/lk.png (added)
-
tags/1.0.26/assets/flags/lr.png (added)
-
tags/1.0.26/assets/flags/ls.png (added)
-
tags/1.0.26/assets/flags/lt.png (added)
-
tags/1.0.26/assets/flags/lu.png (added)
-
tags/1.0.26/assets/flags/lv.png (added)
-
tags/1.0.26/assets/flags/ly.png (added)
-
tags/1.0.26/assets/flags/ma.png (added)
-
tags/1.0.26/assets/flags/mc.png (added)
-
tags/1.0.26/assets/flags/md.png (added)
-
tags/1.0.26/assets/flags/me.png (added)
-
tags/1.0.26/assets/flags/mf.png (added)
-
tags/1.0.26/assets/flags/mg.png (added)
-
tags/1.0.26/assets/flags/mh.png (added)
-
tags/1.0.26/assets/flags/mk.png (added)
-
tags/1.0.26/assets/flags/ml.png (added)
-
tags/1.0.26/assets/flags/mm.png (added)
-
tags/1.0.26/assets/flags/mn.png (added)
-
tags/1.0.26/assets/flags/mo.png (added)
-
tags/1.0.26/assets/flags/mp.png (added)
-
tags/1.0.26/assets/flags/mq.png (added)
-
tags/1.0.26/assets/flags/mr.png (added)
-
tags/1.0.26/assets/flags/ms.png (added)
-
tags/1.0.26/assets/flags/mt.png (added)
-
tags/1.0.26/assets/flags/mu.png (added)
-
tags/1.0.26/assets/flags/mv.png (added)
-
tags/1.0.26/assets/flags/mw.png (added)
-
tags/1.0.26/assets/flags/mx.png (added)
-
tags/1.0.26/assets/flags/my.png (added)
-
tags/1.0.26/assets/flags/mz.png (added)
-
tags/1.0.26/assets/flags/na.png (added)
-
tags/1.0.26/assets/flags/nc.png (added)
-
tags/1.0.26/assets/flags/ne.png (added)
-
tags/1.0.26/assets/flags/nf.png (added)
-
tags/1.0.26/assets/flags/ng.png (added)
-
tags/1.0.26/assets/flags/ni.png (added)
-
tags/1.0.26/assets/flags/nl.png (added)
-
tags/1.0.26/assets/flags/no.png (added)
-
tags/1.0.26/assets/flags/np.png (added)
-
tags/1.0.26/assets/flags/nr.png (added)
-
tags/1.0.26/assets/flags/nu.png (added)
-
tags/1.0.26/assets/flags/nz.png (added)
-
tags/1.0.26/assets/flags/om.png (added)
-
tags/1.0.26/assets/flags/pa.png (added)
-
tags/1.0.26/assets/flags/pe.png (added)
-
tags/1.0.26/assets/flags/pf.png (added)
-
tags/1.0.26/assets/flags/pg.png (added)
-
tags/1.0.26/assets/flags/ph.png (added)
-
tags/1.0.26/assets/flags/pk.png (added)
-
tags/1.0.26/assets/flags/pl.png (added)
-
tags/1.0.26/assets/flags/pm.png (added)
-
tags/1.0.26/assets/flags/pn.png (added)
-
tags/1.0.26/assets/flags/pr.png (added)
-
tags/1.0.26/assets/flags/ps.png (added)
-
tags/1.0.26/assets/flags/pt.png (added)
-
tags/1.0.26/assets/flags/pw.png (added)
-
tags/1.0.26/assets/flags/py.png (added)
-
tags/1.0.26/assets/flags/qa.png (added)
-
tags/1.0.26/assets/flags/re.png (added)
-
tags/1.0.26/assets/flags/ro.png (added)
-
tags/1.0.26/assets/flags/rs.png (added)
-
tags/1.0.26/assets/flags/ru.png (added)
-
tags/1.0.26/assets/flags/rw.png (added)
-
tags/1.0.26/assets/flags/sa.png (added)
-
tags/1.0.26/assets/flags/sb.png (added)
-
tags/1.0.26/assets/flags/sc.png (added)
-
tags/1.0.26/assets/flags/sd.png (added)
-
tags/1.0.26/assets/flags/se.png (added)
-
tags/1.0.26/assets/flags/sg.png (added)
-
tags/1.0.26/assets/flags/sh.png (added)
-
tags/1.0.26/assets/flags/si.png (added)
-
tags/1.0.26/assets/flags/sj.png (added)
-
tags/1.0.26/assets/flags/sk.png (added)
-
tags/1.0.26/assets/flags/sl.png (added)
-
tags/1.0.26/assets/flags/sm.png (added)
-
tags/1.0.26/assets/flags/sn.png (added)
-
tags/1.0.26/assets/flags/so.png (added)
-
tags/1.0.26/assets/flags/sr.png (added)
-
tags/1.0.26/assets/flags/ss.png (added)
-
tags/1.0.26/assets/flags/st.png (added)
-
tags/1.0.26/assets/flags/sv.png (added)
-
tags/1.0.26/assets/flags/sx.png (added)
-
tags/1.0.26/assets/flags/sy.png (added)
-
tags/1.0.26/assets/flags/sz.png (added)
-
tags/1.0.26/assets/flags/tc.png (added)
-
tags/1.0.26/assets/flags/td.png (added)
-
tags/1.0.26/assets/flags/tf.png (added)
-
tags/1.0.26/assets/flags/tg.png (added)
-
tags/1.0.26/assets/flags/th.png (added)
-
tags/1.0.26/assets/flags/tj.png (added)
-
tags/1.0.26/assets/flags/tk.png (added)
-
tags/1.0.26/assets/flags/tl.png (added)
-
tags/1.0.26/assets/flags/tm.png (added)
-
tags/1.0.26/assets/flags/tn.png (added)
-
tags/1.0.26/assets/flags/to.png (added)
-
tags/1.0.26/assets/flags/tr.png (added)
-
tags/1.0.26/assets/flags/tt.png (added)
-
tags/1.0.26/assets/flags/tv.png (added)
-
tags/1.0.26/assets/flags/tw.png (added)
-
tags/1.0.26/assets/flags/tz.png (added)
-
tags/1.0.26/assets/flags/ua.png (added)
-
tags/1.0.26/assets/flags/ug.png (added)
-
tags/1.0.26/assets/flags/um.png (added)
-
tags/1.0.26/assets/flags/us.png (added)
-
tags/1.0.26/assets/flags/uy.png (added)
-
tags/1.0.26/assets/flags/uz.png (added)
-
tags/1.0.26/assets/flags/va.png (added)
-
tags/1.0.26/assets/flags/vc.png (added)
-
tags/1.0.26/assets/flags/ve.png (added)
-
tags/1.0.26/assets/flags/vg.png (added)
-
tags/1.0.26/assets/flags/vi.png (added)
-
tags/1.0.26/assets/flags/vn.png (added)
-
tags/1.0.26/assets/flags/vu.png (added)
-
tags/1.0.26/assets/flags/wf.png (added)
-
tags/1.0.26/assets/flags/ws.png (added)
-
tags/1.0.26/assets/flags/ye.png (added)
-
tags/1.0.26/assets/flags/yt.png (added)
-
tags/1.0.26/assets/flags/za.png (added)
-
tags/1.0.26/assets/flags/zm.png (added)
-
tags/1.0.26/assets/flags/zw.png (added)
-
tags/1.0.26/assets/js (added)
-
tags/1.0.26/assets/js/admin.js (added)
-
tags/1.0.26/assets/js/settings.js (added)
-
tags/1.0.26/assets/js/touch.js (added)
-
tags/1.0.26/includes (added)
-
tags/1.0.26/includes/class-access.php (added)
-
tags/1.0.26/includes/class-accounts.php (added)
-
tags/1.0.26/includes/class-admin.php (added)
-
tags/1.0.26/includes/class-ajax.php (added)
-
tags/1.0.26/includes/class-cloudflare-api.php (added)
-
tags/1.0.26/includes/class-icons.php (added)
-
tags/1.0.26/includes/class-rule-builder.php (added)
-
tags/1.0.26/includes/class-service-ips.php (added)
-
tags/1.0.26/includes/class-settings.php (added)
-
tags/1.0.26/includes/views (added)
-
tags/1.0.26/includes/views/page-about.php (added)
-
tags/1.0.26/includes/views/page-main.php (added)
-
tags/1.0.26/includes/views/page-settings.php (added)
-
tags/1.0.26/readme.txt (added)
-
tags/1.0.26/uninstall.php (added)
-
tags/1.0.26/waf-manager-for-cloudflare.php (added)
-
trunk/README.md (modified) (2 diffs)
-
trunk/assets/css/about.css (modified) (2 diffs)
-
trunk/assets/css/admin.css (modified) (3 diffs)
-
trunk/assets/css/layout.css (modified) (1 diff)
-
trunk/assets/css/settings.css (modified) (2 diffs)
-
trunk/assets/flags (added)
-
trunk/assets/flags/ad.png (added)
-
trunk/assets/flags/ae.png (added)
-
trunk/assets/flags/af.png (added)
-
trunk/assets/flags/ag.png (added)
-
trunk/assets/flags/ai.png (added)
-
trunk/assets/flags/al.png (added)
-
trunk/assets/flags/am.png (added)
-
trunk/assets/flags/ao.png (added)
-
trunk/assets/flags/aq.png (added)
-
trunk/assets/flags/ar.png (added)
-
trunk/assets/flags/as.png (added)
-
trunk/assets/flags/at.png (added)
-
trunk/assets/flags/au.png (added)
-
trunk/assets/flags/aw.png (added)
-
trunk/assets/flags/ax.png (added)
-
trunk/assets/flags/az.png (added)
-
trunk/assets/flags/ba.png (added)
-
trunk/assets/flags/bb.png (added)
-
trunk/assets/flags/bd.png (added)
-
trunk/assets/flags/be.png (added)
-
trunk/assets/flags/bf.png (added)
-
trunk/assets/flags/bg.png (added)
-
trunk/assets/flags/bh.png (added)
-
trunk/assets/flags/bi.png (added)
-
trunk/assets/flags/bj.png (added)
-
trunk/assets/flags/bl.png (added)
-
trunk/assets/flags/bm.png (added)
-
trunk/assets/flags/bn.png (added)
-
trunk/assets/flags/bo.png (added)
-
trunk/assets/flags/bq.png (added)
-
trunk/assets/flags/br.png (added)
-
trunk/assets/flags/bs.png (added)
-
trunk/assets/flags/bt.png (added)
-
trunk/assets/flags/bv.png (added)
-
trunk/assets/flags/bw.png (added)
-
trunk/assets/flags/by.png (added)
-
trunk/assets/flags/bz.png (added)
-
trunk/assets/flags/ca.png (added)
-
trunk/assets/flags/cc.png (added)
-
trunk/assets/flags/cd.png (added)
-
trunk/assets/flags/cf.png (added)
-
trunk/assets/flags/cg.png (added)
-
trunk/assets/flags/ch.png (added)
-
trunk/assets/flags/ci.png (added)
-
trunk/assets/flags/ck.png (added)
-
trunk/assets/flags/cl.png (added)
-
trunk/assets/flags/cm.png (added)
-
trunk/assets/flags/cn.png (added)
-
trunk/assets/flags/co.png (added)
-
trunk/assets/flags/cr.png (added)
-
trunk/assets/flags/cu.png (added)
-
trunk/assets/flags/cv.png (added)
-
trunk/assets/flags/cw.png (added)
-
trunk/assets/flags/cx.png (added)
-
trunk/assets/flags/cy.png (added)
-
trunk/assets/flags/cz.png (added)
-
trunk/assets/flags/de.png (added)
-
trunk/assets/flags/dj.png (added)
-
trunk/assets/flags/dk.png (added)
-
trunk/assets/flags/dm.png (added)
-
trunk/assets/flags/do.png (added)
-
trunk/assets/flags/dz.png (added)
-
trunk/assets/flags/ec.png (added)
-
trunk/assets/flags/ee.png (added)
-
trunk/assets/flags/eg.png (added)
-
trunk/assets/flags/eh.png (added)
-
trunk/assets/flags/er.png (added)
-
trunk/assets/flags/es.png (added)
-
trunk/assets/flags/et.png (added)
-
trunk/assets/flags/eu.png (added)
-
trunk/assets/flags/fi.png (added)
-
trunk/assets/flags/fj.png (added)
-
trunk/assets/flags/fk.png (added)
-
trunk/assets/flags/fm.png (added)
-
trunk/assets/flags/fo.png (added)
-
trunk/assets/flags/fr.png (added)
-
trunk/assets/flags/ga.png (added)
-
trunk/assets/flags/gb.png (added)
-
trunk/assets/flags/gd.png (added)
-
trunk/assets/flags/ge.png (added)
-
trunk/assets/flags/gf.png (added)
-
trunk/assets/flags/gg.png (added)
-
trunk/assets/flags/gh.png (added)
-
trunk/assets/flags/gi.png (added)
-
trunk/assets/flags/gl.png (added)
-
trunk/assets/flags/gm.png (added)
-
trunk/assets/flags/gn.png (added)
-
trunk/assets/flags/gp.png (added)
-
trunk/assets/flags/gq.png (added)
-
trunk/assets/flags/gr.png (added)
-
trunk/assets/flags/gs.png (added)
-
trunk/assets/flags/gt.png (added)
-
trunk/assets/flags/gu.png (added)
-
trunk/assets/flags/gw.png (added)
-
trunk/assets/flags/gy.png (added)
-
trunk/assets/flags/hk.png (added)
-
trunk/assets/flags/hm.png (added)
-
trunk/assets/flags/hn.png (added)
-
trunk/assets/flags/hr.png (added)
-
trunk/assets/flags/ht.png (added)
-
trunk/assets/flags/hu.png (added)
-
trunk/assets/flags/id.png (added)
-
trunk/assets/flags/ie.png (added)
-
trunk/assets/flags/il.png (added)
-
trunk/assets/flags/im.png (added)
-
trunk/assets/flags/in.png (added)
-
trunk/assets/flags/io.png (added)
-
trunk/assets/flags/iq.png (added)
-
trunk/assets/flags/ir.png (added)
-
trunk/assets/flags/is.png (added)
-
trunk/assets/flags/it.png (added)
-
trunk/assets/flags/je.png (added)
-
trunk/assets/flags/jm.png (added)
-
trunk/assets/flags/jo.png (added)
-
trunk/assets/flags/jp.png (added)
-
trunk/assets/flags/ke.png (added)
-
trunk/assets/flags/kg.png (added)
-
trunk/assets/flags/kh.png (added)
-
trunk/assets/flags/ki.png (added)
-
trunk/assets/flags/km.png (added)
-
trunk/assets/flags/kn.png (added)
-
trunk/assets/flags/kp.png (added)
-
trunk/assets/flags/kr.png (added)
-
trunk/assets/flags/kw.png (added)
-
trunk/assets/flags/ky.png (added)
-
trunk/assets/flags/kz.png (added)
-
trunk/assets/flags/la.png (added)
-
trunk/assets/flags/lb.png (added)
-
trunk/assets/flags/lc.png (added)
-
trunk/assets/flags/li.png (added)
-
trunk/assets/flags/lk.png (added)
-
trunk/assets/flags/lr.png (added)
-
trunk/assets/flags/ls.png (added)
-
trunk/assets/flags/lt.png (added)
-
trunk/assets/flags/lu.png (added)
-
trunk/assets/flags/lv.png (added)
-
trunk/assets/flags/ly.png (added)
-
trunk/assets/flags/ma.png (added)
-
trunk/assets/flags/mc.png (added)
-
trunk/assets/flags/md.png (added)
-
trunk/assets/flags/me.png (added)
-
trunk/assets/flags/mf.png (added)
-
trunk/assets/flags/mg.png (added)
-
trunk/assets/flags/mh.png (added)
-
trunk/assets/flags/mk.png (added)
-
trunk/assets/flags/ml.png (added)
-
trunk/assets/flags/mm.png (added)
-
trunk/assets/flags/mn.png (added)
-
trunk/assets/flags/mo.png (added)
-
trunk/assets/flags/mp.png (added)
-
trunk/assets/flags/mq.png (added)
-
trunk/assets/flags/mr.png (added)
-
trunk/assets/flags/ms.png (added)
-
trunk/assets/flags/mt.png (added)
-
trunk/assets/flags/mu.png (added)
-
trunk/assets/flags/mv.png (added)
-
trunk/assets/flags/mw.png (added)
-
trunk/assets/flags/mx.png (added)
-
trunk/assets/flags/my.png (added)
-
trunk/assets/flags/mz.png (added)
-
trunk/assets/flags/na.png (added)
-
trunk/assets/flags/nc.png (added)
-
trunk/assets/flags/ne.png (added)
-
trunk/assets/flags/nf.png (added)
-
trunk/assets/flags/ng.png (added)
-
trunk/assets/flags/ni.png (added)
-
trunk/assets/flags/nl.png (added)
-
trunk/assets/flags/no.png (added)
-
trunk/assets/flags/np.png (added)
-
trunk/assets/flags/nr.png (added)
-
trunk/assets/flags/nu.png (added)
-
trunk/assets/flags/nz.png (added)
-
trunk/assets/flags/om.png (added)
-
trunk/assets/flags/pa.png (added)
-
trunk/assets/flags/pe.png (added)
-
trunk/assets/flags/pf.png (added)
-
trunk/assets/flags/pg.png (added)
-
trunk/assets/flags/ph.png (added)
-
trunk/assets/flags/pk.png (added)
-
trunk/assets/flags/pl.png (added)
-
trunk/assets/flags/pm.png (added)
-
trunk/assets/flags/pn.png (added)
-
trunk/assets/flags/pr.png (added)
-
trunk/assets/flags/ps.png (added)
-
trunk/assets/flags/pt.png (added)
-
trunk/assets/flags/pw.png (added)
-
trunk/assets/flags/py.png (added)
-
trunk/assets/flags/qa.png (added)
-
trunk/assets/flags/re.png (added)
-
trunk/assets/flags/ro.png (added)
-
trunk/assets/flags/rs.png (added)
-
trunk/assets/flags/ru.png (added)
-
trunk/assets/flags/rw.png (added)
-
trunk/assets/flags/sa.png (added)
-
trunk/assets/flags/sb.png (added)
-
trunk/assets/flags/sc.png (added)
-
trunk/assets/flags/sd.png (added)
-
trunk/assets/flags/se.png (added)
-
trunk/assets/flags/sg.png (added)
-
trunk/assets/flags/sh.png (added)
-
trunk/assets/flags/si.png (added)
-
trunk/assets/flags/sj.png (added)
-
trunk/assets/flags/sk.png (added)
-
trunk/assets/flags/sl.png (added)
-
trunk/assets/flags/sm.png (added)
-
trunk/assets/flags/sn.png (added)
-
trunk/assets/flags/so.png (added)
-
trunk/assets/flags/sr.png (added)
-
trunk/assets/flags/ss.png (added)
-
trunk/assets/flags/st.png (added)
-
trunk/assets/flags/sv.png (added)
-
trunk/assets/flags/sx.png (added)
-
trunk/assets/flags/sy.png (added)
-
trunk/assets/flags/sz.png (added)
-
trunk/assets/flags/tc.png (added)
-
trunk/assets/flags/td.png (added)
-
trunk/assets/flags/tf.png (added)
-
trunk/assets/flags/tg.png (added)
-
trunk/assets/flags/th.png (added)
-
trunk/assets/flags/tj.png (added)
-
trunk/assets/flags/tk.png (added)
-
trunk/assets/flags/tl.png (added)
-
trunk/assets/flags/tm.png (added)
-
trunk/assets/flags/tn.png (added)
-
trunk/assets/flags/to.png (added)
-
trunk/assets/flags/tr.png (added)
-
trunk/assets/flags/tt.png (added)
-
trunk/assets/flags/tv.png (added)
-
trunk/assets/flags/tw.png (added)
-
trunk/assets/flags/tz.png (added)
-
trunk/assets/flags/ua.png (added)
-
trunk/assets/flags/ug.png (added)
-
trunk/assets/flags/um.png (added)
-
trunk/assets/flags/us.png (added)
-
trunk/assets/flags/uy.png (added)
-
trunk/assets/flags/uz.png (added)
-
trunk/assets/flags/va.png (added)
-
trunk/assets/flags/vc.png (added)
-
trunk/assets/flags/ve.png (added)
-
trunk/assets/flags/vg.png (added)
-
trunk/assets/flags/vi.png (added)
-
trunk/assets/flags/vn.png (added)
-
trunk/assets/flags/vu.png (added)
-
trunk/assets/flags/wf.png (added)
-
trunk/assets/flags/ws.png (added)
-
trunk/assets/flags/ye.png (added)
-
trunk/assets/flags/yt.png (added)
-
trunk/assets/flags/za.png (added)
-
trunk/assets/flags/zm.png (added)
-
trunk/assets/flags/zw.png (added)
-
trunk/assets/js/admin.js (modified) (18 diffs)
-
trunk/assets/js/settings.js (modified) (3 diffs)
-
trunk/includes/class-admin.php (modified) (2 diffs)
-
trunk/includes/class-icons.php (added)
-
trunk/includes/class-rule-builder.php (modified) (13 diffs)
-
trunk/includes/class-service-ips.php (modified) (3 diffs)
-
trunk/includes/views/page-about.php (modified) (6 diffs)
-
trunk/includes/views/page-main.php (modified) (22 diffs)
-
trunk/includes/views/page-settings.php (modified) (4 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/waf-manager-for-cloudflare.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
waf-manager-for-cloudflare/trunk/README.md
r3760078 r3771550 1 1 # WAF Manager for Cloudflare 2 2 3 > Deploy five battle-tested Cloudflare WAF rules to any zone in one click — directlyfrom WordPress. No Cloudflare dashboard or expression language required.3 > Deploy five battle-tested Cloudflare WAF rules to any zone in one click, right from WordPress. No Cloudflare dashboard or expression language required. 4 4 5 5 ## What it does … … 9 9 ### WAF Rules Builder 10 10 11 Deploy five pre-configured, battle-tested security rules to any Cloudflare zone in one click, based on the open-source [wafrules.com](https://wafrules.com) ruleset :11 Deploy five pre-configured, battle-tested security rules to any Cloudflare zone in one click, based on the open-source [wafrules.com](https://wafrules.com) ruleset (last updated October 24, 2026): 12 12 13 - **Allow Good Bots** — verified bots (Googlebot, Bingbot, uptime monitors, payment processors) plus custom IP / user-agentallowlists14 - **Block Aggressive Crawlers ** — SEO scrapers, exploit scanners (SQLMap, Nikto, Masscan, Nmap),and sensitive WordPress paths15 - **Block Web Hosts & TOR** — cloud hosting ASNs (DigitalOcean, Vultr, Hetzner, OVH, Contabo, …) and TOR exit nodes16 - **Challenge Large Cloud Providers** — managed challenge for AWS EC2, Google Cloud, Azure17 - **Challenge VPN & wp-login** —managed challenge for major VPN providers plus the WordPress login page13 - **Allow Good Bots**: every Cloudflare verified bot or the categories you pick, services matched by their published IP lists (ManageWP, WP Umbrella, ShortPixel, Patchstack and more), Let's Encrypt, your server IPs, plus custom IP, user agent and expression allowlists 14 - **Block Aggressive Crawlers & WordPress Paths**: aggressive crawlers, exploit scanners (SQLMap, Nikto, Masscan, Nmap), curl scripts (with hostname exceptions) and sensitive WordPress paths 15 - **Block or Challenge Web Hosts / TOR & Exploit URIs**: cloud hosting ASNs (DigitalOcean, Vultr, Hetzner, OVH, Contabo and more), three attack hosting networks, TOR exit nodes and six groups of exploit URIs 16 - **Challenge Large Providers / Country**: managed challenge for AWS, Google Cloud and Azure, and optionally visitors from outside the countries you pick 17 - **Challenge VPN Connections & wp-login**: managed challenge for major VPN providers plus the WordPress login page 18 18 19 19 Each rule is fully customizable with checkboxes. Additional features: 20 20 21 - Live Cloudflare expression preview as you toggle options 22 - Custom Allow Expressions —add your own Cloudflare rules language expressions to Rule 1 to always skip the WAF23 - Deploy to any single Cloudflare zone, or select multiple zones at once 21 - Live Cloudflare expression preview as you toggle options, with a 4,096-character length check 22 - Custom Allow Expressions: add your own Cloudflare rules language expressions to Rule 1 to always skip the WAF 23 - Deploy to any single Cloudflare zone, or select multiple zones at once. Your other custom rules on the zone are kept 24 24 - Automatic Cloudflare Free plan compatibility (restricted phases are stripped and retried) 25 25 26 26 ### Settings 27 27 28 - Access control —minimum role picker29 - User access allowlist —restrict the plugin to specific administrators28 - Access control: minimum role picker 29 - User access allowlist: restrict the plugin to specific administrators 30 30 - Keep-data-on-uninstall toggle 31 31 - Test Connection -
waf-manager-for-cloudflare/trunk/assets/css/about.css
r3620800 r3771550 2 2 .wpwaf-about-hero{background:#111111;border-radius:12px;padding:36px 40px;margin-bottom:28px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;} 3 3 .wpwaf-about-hero-left{display:flex;align-items:center;gap:18px;} 4 .wpwaf-about-hero-icon{ font-size:48px;width:48px;height:48px;color:#FF6A00;flex-shrink:0;}4 .wpwaf-about-hero-icon{width:48px;height:48px;color:#FF6A00;flex-shrink:0;display:inline-flex;} 5 5 .wpwaf-about-hero-title{margin:0;font-size:26px;font-weight:800;color:#fff;line-height:1.2;} 6 6 .wpwaf-about-hero-sub{margin:4px 0 0;font-size:13px;color:#9ca3af;} … … 41 41 .wpwaf-about-features{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:20px;} 42 42 .wpwaf-about-feature{background:#fff;border:1px solid #e2e6ea;border-radius:8px;padding:16px 18px;} 43 .wpwaf-about-feature-icon{font-size:22px;margin-bottom:8px;display:block;} 43 .wpwaf-about-feature-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9px;background:#fff4ec;color:#FF6A00;margin-bottom:10px;} 44 .wpwaf-about-card h2 .wmfc-about-svg{color:#FF6A00;flex-shrink:0;} 45 .wpwaf-about-btn .wmfc-about-svg{width:16px;height:16px;flex-shrink:0;fill:none !important;color:inherit !important;} 46 .wpwaf-about-yes{color:#059669;display:inline-flex;vertical-align:middle;} 47 .wpwaf-about-no{color:#c3c2b7;} 44 48 .wpwaf-about-feature-title{font-size:13px;font-weight:700;color:#1a1a2e;margin:0 0 4px;} 45 49 .wpwaf-about-feature-desc{font-size:12px;color:#6b7280;margin:0;line-height:1.6;} -
waf-manager-for-cloudflare/trunk/assets/css/admin.css
r3762681 r3771550 306 306 .cfwaf-cpicker-list li:hover { background: #f5f5f5; } 307 307 .cfwaf-cpicker-list li.selected { background: #fff4ee; color: #111111; font-weight: 600; } 308 .cfwaf-cpicker-list li.selected::before { content: ' ✓'; color: #FF6A00; font-weight: 800; margin-right: 8px; flex-shrink: 0; }308 .cfwaf-cpicker-list li.selected::before { content: ''; width: 14px; height: 14px; background: #FF6A00; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat; margin-right: 8px; flex-shrink: 0; } 309 309 .cfwaf-cpicker-list li:not(.selected)::before { content: ''; width: 13px; margin-right: 8px; display: inline-block; flex-shrink: 0; } 310 310 .cfwaf-cpicker-list li span { font-size: 10px; font-weight: 700; color: #6b7280; background: #f0f2f5; padding: 1px 5px; border-radius: 3px; flex-shrink: 0; } … … 408 408 .cfwaf-check-label > span { display: block; min-width: 0; } 409 409 .cfwaf-check-strong { align-items: flex-start; padding: 8px 6px; } 410 .cfwaf-check-strong input[type="checkbox"], .cfwaf-service-row input[type="checkbox"] , .cfwaf-service-sub input[type="checkbox"]{ margin-top: 2px !important; }410 .cfwaf-check-strong input[type="checkbox"], .cfwaf-service-row input[type="checkbox"] { margin-top: 2px !important; } 411 411 .cfwaf-check-desc { display: block; font-size: 12px; color: #6b7280; line-height: 1.45; margin-top: 2px; font-weight: normal; } 412 412 .cfwaf-check-meta { display: block; font-size: 11px; color: #9ca3af; margin-top: 2px; } 413 413 .cfwaf-service-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 2px 16px; } 414 414 .cfwaf-service-row { align-items: flex-start; } 415 .cfwaf-service-sub { align-items: flex-start; margin-left: 28px; }416 .cfwaf-service-sub input[type="checkbox"]:disabled + span { opacity: .5; }417 415 .cfwaf-cat-card.is-disabled { opacity: .5; cursor: default; } 418 416 .cfwaf-cat-card.is-disabled input[type="checkbox"] { cursor: default; } … … 436 434 } 437 435 .cfwaf-notice-info { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e3a8a; } 436 437 /* Country picker: the card's gap already spaces the flag. */ 438 body.wmfc-admin .cfwaf-zone-item .wmfc-flag { margin-right: 0; } 439 /* Quick Pick region maps: the region in orange on a transparent background; white on the orange hover/active state. */ 440 .cfwaf-region-btn { display: inline-flex; align-items: center; gap: 6px; } 441 .cfwaf-region-btn .wmfc-rg { flex-shrink: 0; display: block; } 442 .cfwaf-region-btn:hover .wmfc-rg-area, 443 .cfwaf-region-btn.active .wmfc-rg-area { fill: #fff; } 444 /* Rule 2: hostnames where curl is not blocked. */ 445 .cfwaf-curl-hosts { margin: 8px 0 0 28px; max-width: 520px; } 446 .cfwaf-curl-hosts .cfwaf-field-label { display: block; font-size: 12px; font-weight: 600; color: #1a1a2e; margin-bottom: 4px; } 447 .cfwaf-curl-hosts.is-disabled { opacity: .5; } -
waf-manager-for-cloudflare/trunk/assets/css/layout.css
r3760078 r3771550 67 67 } 68 68 } 69 70 /* ── Country flags (assets/flags, shown at 20 x 15) ───────────────────────── */ 71 body.wmfc-admin .wmfc-flag { 72 display: inline-block; 73 flex: 0 0 auto; 74 width: 20px; 75 height: 15px; 76 margin-right: 6px; 77 vertical-align: -2px; 78 border-radius: 2px; 79 object-fit: cover; 80 box-shadow: 0 0 0 1px rgba(15, 23, 42, .12); 81 } 82 body.wmfc-admin .wmfc-flag--none { 83 box-shadow: none; 84 } 85 86 /* ── Search fields: magnifier icon (SVG) instead of an emoji in the placeholder ── */ 87 body.wmfc-admin .cfwaf-search-input, 88 body.wmfc-admin .cfwaf-zones-search { 89 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E"); 90 background-repeat: no-repeat; 91 background-position: 10px 50%; 92 background-size: 15px 15px; 93 padding-left: 32px; 94 } 95 96 /* ── Inline SVG icons (replace emoji) ──────────────────────────────────────── */ 97 body.wmfc-admin .wmfc-ic { 98 display: inline-block; 99 flex-shrink: 0; 100 vertical-align: -0.125em; 101 } -
waf-manager-for-cloudflare/trunk/assets/css/settings.css
r3620800 r3771550 10 10 .wpwaf-st-section-header{padding:14px 20px;border-bottom:1px solid var(--st-border);display:flex;align-items:center;gap:10px;} 11 11 .wpwaf-st-section-header h2{margin:0;font-size:14px;font-weight:700;color:var(--st-dark);} 12 .wpwaf-st-section-icon{font-size:18px;line-height:1; }12 .wpwaf-st-section-icon{font-size:18px;line-height:1;display:inline-flex;color:#FF6A00;} 13 13 .wpwaf-st-section-body{padding:0;} 14 14 .wpwaf-st-row{display:grid;grid-template-columns:240px 1fr;align-items:start;gap:16px;padding:16px 20px;border-bottom:1px solid #f1f3f5;} … … 56 56 .wpwaf-st-role-option:has(input:checked){border-color:var(--st-orange);background:#fff8f5;} 57 57 .wpwaf-st-role-option input{margin-top:3px;accent-color:var(--st-orange);flex-shrink:0;width:16px;height:16px;} 58 .wpwaf-st-role-icon{font-size:18px;line-height:1;flex-shrink:0;margin-top:1px; }58 .wpwaf-st-role-icon{font-size:18px;line-height:1;flex-shrink:0;margin-top:1px;display:inline-flex;color:#6b7280;} 59 59 .wpwaf-st-role-info{display:flex;flex-direction:column;gap:2px;} 60 60 .wpwaf-st-role-info strong{font-size:13px;color:var(--st-dark);} -
waf-manager-for-cloudflare/trunk/assets/js/admin.js
r3762681 r3771550 65 65 66 66 // ── Toast ────────────────────────────────────────────────────────────────── 67 function toast(msg, type ) {67 function toast(msg, type, icon) { 68 68 const el = document.createElement('div'); 69 69 el.className = 'cfwaf-toast cfwaf-toast-' + (type === 'error' ? 'error' : 'success'); 70 el. textContent = msg;70 el.innerHTML = window.wmfcToastBody ? window.wmfcToastBody(msg, type !== 'error', icon) : escHtml(msg); 71 71 document.body.appendChild(el); 72 72 setTimeout(function () { … … 91 91 const uas = uaTA.value.split('\n').map(function(s){ return s.trim(); }).filter(function(s){ return s !== ''; }); 92 92 setVal(settings, 'rule1.allow_user_agents', uas); 93 } 94 95 const curlTA = document.getElementById('cfwaf-curl-hosts'); 96 if (curlTA) { 97 const hosts = curlTA.value.split(/[\s,]+/).map(function(s){ return s.trim(); }).filter(function(s){ return s !== ''; }); 98 setVal(settings, 'rule2.curl_host_exceptions', hosts); 93 99 } 94 100 … … 130 136 uaTA2.value = savedUAs.join('\n'); 131 137 updateUACount(); 138 } 139 140 const curlTA2 = document.getElementById('cfwaf-curl-hosts'); 141 if (curlTA2) { 142 const savedHosts = getVal(settings, 'rule2.curl_host_exceptions') || []; 143 curlTA2.value = Array.isArray(savedHosts) ? savedHosts.join('\n') : ''; 132 144 } 133 145 … … 153 165 updateRule1State(); 154 166 updateHostState(); 167 updateCurlState(); 155 168 } 156 169 … … 187 200 const state = row.querySelector('.cfwaf-covered-state'); 188 201 row.classList.toggle('is-covered', on); 189 if (state) state.textContent = on ? '\u2713 Covered' : 'Not covered'; 190 }); 191 const wpu = qs('#cfwaf-wpu-monitors'); 192 if (wpu) wpu.disabled = !getVal(settings, 'rule1.allow_wpumbrella'); 202 if (state) state.innerHTML = on ? window.wmfcIconText('check', 'Covered') : 'Not covered'; 203 }); 193 204 } 194 205 … … 199 210 const grid = qs('#cfwaf-host-grid'); 200 211 if (grid) grid.classList.toggle('is-disabled', !on); 212 } 213 214 // Rule 2: the curl hostname exceptions only count while curl blocking is on. 215 function updateCurlState() { 216 const on = Boolean(getVal(settings, 'rule2.block_curl')); 217 const ta = qs('#cfwaf-curl-hosts'); 218 if (ta) ta.disabled = !on; 219 const box = qs('.cfwaf-curl-hosts'); 220 if (box) box.classList.toggle('is-disabled', !on); 201 221 } 202 222 … … 252 272 if (key.indexOf('rule1.') === 0) updateRule1State(); 253 273 if (key === 'rule3.block_hosts') updateHostState(); 274 if (key === 'rule2.block_curl') updateCurlState(); 254 275 if (key === 'rule2.block_wpcron') { 255 276 const warn = qs('#cfwaf-wpcron-warning'); … … 308 329 loadZones(); 309 330 } else { 310 toast( '\u2717 ' +((res.data && res.data.message) || 'Token invalid'), 'error');331 toast(((res.data && res.data.message) || 'Token invalid'), 'error'); 311 332 const badge = qs('#cfwaf-token-status'); 312 333 if (badge) { badge.textContent = 'Error'; badge.classList.remove('connected'); } … … 345 366 loadZones(); 346 367 } else { 347 toast( '\u2717 ' +((res.data && res.data.message) || 'Credentials invalid'), 'error');368 toast(((res.data && res.data.message) || 'Credentials invalid'), 'error'); 348 369 } 349 370 }); … … 353 374 const badge = qs('#cfwaf-token-status'); 354 375 if (badge) { badge.textContent = 'Connected'; badge.classList.add('connected'); } 355 toast( '\u2713 ' +msg);376 toast(msg); 356 377 } 357 378 … … 413 434 loadingEl.innerHTML = 414 435 '<div class="cfwaf-zone-load-error">' + 415 '<strong> \u2717Could not load zones.</strong><br>' +436 '<strong>' + window.wmfcIcon('x') + ' Could not load zones.</strong><br>' + 416 437 ( isAuthError 417 438 ? 'Cloudflare rejected your credentials (<code>' + msg + '</code>). Your API token or API key & email appear to be invalid or expired. Check the <strong>Accounts</strong> section at the top of this page and re-enter your credentials.' … … 511 532 if (!res.success) { 512 533 const msg = (res.data && res.data.message) ? res.data.message : 'Deploy failed.'; 513 resultsEl.innerHTML = '<div class="cfwaf-result-item fail"> \u2717 ' + escHtml(msg) + '</div>';514 toast( '\u2717 ' +msg, 'error');534 resultsEl.innerHTML = '<div class="cfwaf-result-item fail">' + window.wmfcIconText('x', msg) + '</div>'; 535 toast(msg, 'error'); 515 536 return; 516 537 } … … 522 543 const name = escHtml(zone ? zone.name : zid); 523 544 const cls = r.success ? 'ok' : 'fail'; 524 const icon = r.success ? '\u2713' : '\u2717';545 const icon = window.wmfcIcon(r.success ? 'check' : 'x'); 525 546 const detail = escHtml(r.message || (r.success ? 'Rules deployed successfully' : 'Unknown error')); 526 547 html += '<div class="cfwaf-result-item ' + cls + '">' + icon + ' <strong>' + name + '</strong>: ' + detail + '</div>'; … … 530 551 const rc = (res.data && res.data.rule_count) || 0; 531 552 const fc = (res.data && res.data.fail_count) || 0; 532 if (sc > 0) toast(' \u2713Deployed ' + rc + ' rules to ' + sc + ' zone(s)!');533 if (fc > 0) toast( '\u2717 ' +fc + ' zone(s) failed. See the results below.', 'error');553 if (sc > 0) toast('Deployed ' + rc + ' rules to ' + sc + ' zone(s)!'); 554 if (fc > 0) toast(fc + ' zone(s) failed. See the results below.', 'error'); 534 555 }); 535 556 }); … … 546 567 btn.disabled = false; 547 568 btn.innerHTML = '<span class="dashicons dashicons-saved"></span> Save Settings'; 548 res.success ? toast(' \u2713 Settings saved!') : toast('\u2717Save failed', 'error');569 res.success ? toast('Settings saved!') : toast('Save failed', 'error'); 549 570 }); 550 571 }); … … 698 719 activeId = res.data.active_id; 699 720 renderAccountsList(); 700 toast(' \u2713Account removed');721 toast('Account removed'); 701 722 if (!accounts.length) { 702 723 const badge = qs('#cfwaf-token-status'); … … 980 1001 a.remove(); 981 1002 URL.revokeObjectURL(url); 982 toast(' \u2713Settings exported');1003 toast('Settings exported'); 983 1004 }); 984 1005 … … 993 1014 input.value = ''; 994 1015 if (!res.success) { 995 toast(' \u2717Import failed: ' + ((res.data && res.data.message) || 'unknown error'), 'error');1016 toast('Import failed: ' + ((res.data && res.data.message) || 'unknown error'), 'error'); 996 1017 return; 997 1018 } 998 1019 settings = res.data.settings; 999 1020 syncToUI(); 1000 toast( '\u2713 ' +res.data.message);1021 toast(res.data.message); 1001 1022 }); 1002 1023 }; 1003 reader.onerror = function () { input.value = ''; toast(' \u2717Could not read that file.', 'error'); };1024 reader.onerror = function () { input.value = ''; toast('Could not read that file.', 'error'); }; 1004 1025 reader.readAsText(file); 1005 1026 }); -
waf-manager-for-cloudflare/trunk/assets/js/settings.js
r3760078 r3771550 46 46 if (r.success) { 47 47 res.style.color = '#059669'; 48 res.textContent = '✓ Connected: ' + r.data.account + ' · ' + r.data.zone_count + ' zone' + (r.data.zone_count !== 1 ? 's' : '');48 wmfcSetText(res, 'check', 'Connected: ' + r.data.account + ' · ' + r.data.zone_count + ' zone' + (r.data.zone_count !== 1 ? 's' : '')); 49 49 } else { 50 50 res.style.color = '#dc2626'; 51 res.textContent = '✗ ' + (r.data?.message || 'Connection failed');51 wmfcSetText(res, 'x', (r.data?.message || 'Connection failed')); 52 52 } 53 53 }); … … 64 64 btn.disabled = false; btn.textContent = 'Save Access Settings'; 65 65 if (res.success){ 66 msg.textContent = '✓ Access settings saved'; msg.className = 'wpwaf-st-save-msg ok';66 wmfcSetText(msg, 'check', 'Access settings saved'); msg.className = 'wpwaf-st-save-msg ok'; 67 67 } else { 68 msg.textContent = '✗ ' + (res.data?.message || 'Save failed'); msg.className = 'wpwaf-st-save-msg err';68 wmfcSetText(msg, 'x', (res.data?.message || 'Save failed')); msg.className = 'wpwaf-st-save-msg err'; 69 69 } 70 70 }); … … 90 90 btn.textContent = 'Save Settings'; 91 91 if (res.success){ 92 msg.textContent = '✓ Settings saved';92 wmfcSetText(msg, 'check', 'Settings saved'); 93 93 msg.className = 'wpwaf-st-save-msg ok'; 94 94 // Reload after short delay so admin bar / menu changes take effect 95 95 setTimeout(() => window.location.reload(), 800); 96 96 } else { 97 msg.textContent = '✗ ' + (res.data?.message || 'Save failed');97 wmfcSetText(msg, 'x', (res.data?.message || 'Save failed')); 98 98 msg.className = 'wpwaf-st-save-msg err'; 99 99 } -
waf-manager-for-cloudflare/trunk/includes/class-admin.php
r3762681 r3771550 172 172 'before' 173 173 ); 174 // Icon helpers (SVG icons instead of emoji). 175 wp_add_inline_script( 'wmfc-admin', WMFC_Icons::script(), 'before' ); 174 176 } 175 177 … … 200 202 'before' 201 203 ); 204 wp_add_inline_script( 'wmfc-settings', WMFC_Icons::script(), 'before' ); 202 205 } 203 206 -
waf-manager-for-cloudflare/trunk/includes/class-rule-builder.php
r3762681 r3771550 7 7 * Builds the five Cloudflare WAF rule expressions. 8 8 * 9 * Matches the wafrules.com ruleset of October 2 1, 2026 (WMFC_Service_IPs::RULES_DATE).9 * Matches the wafrules.com ruleset of October 24, 2026 (WMFC_Service_IPs::RULES_DATE). 10 10 * Plugin extras on top of that ruleset: custom user agents and custom 11 11 * expressions in Rule 1, the optional wp-cron.php block in Rule 2, and a … … 67 67 68 68 private const LETS_ENCRYPT = '(starts_with(http.request.uri.path, "/.well-known/acme-challenge/"))'; 69 private const WPU_MONITORS = '(ip.src.asnum eq 14061 and http.user_agent contains "WPUmbrella+" and http.request.method in {"GET" "HEAD"} and not http.request.uri.path contains "." and http.request.uri.query eq "")';70 69 private const FLYINGPRESS = '(http.user_agent contains "FlyingPress (+https://flyingpress.com)" and http.request.method eq "GET")'; 71 70 private const APPLE_PREVIEW = '(http.user_agent contains "facebookexternalhit" and http.request.method eq "GET")'; … … 131 130 'allow_managewp' => false, 132 131 'allow_wpumbrella' => false, 133 'allow_wpumbrella_do_monitors' => true,134 132 'allow_gosweetspot' => false, 135 133 // Narrow expression matches. … … 160 158 'block_nmap' => true, 161 159 'block_xmlrpc' => true, 162 'block_wpconfig' => false,160 'block_wpconfig' => true, 163 161 // wp-json is needed by the block editor, WooCommerce and mobile apps. 164 162 'block_wpjson' => false, 165 'block_wpinstall' => false,163 'block_wpinstall' => true, 166 164 'block_wlwmanifest' => true, 167 165 'block_readme' => true, 168 166 'block_license' => true, 169 167 'block_sensitive_paths' => true, 168 // curl user agents, except on the hostnames listed (for API and webhook hosts). 169 'block_curl' => true, 170 'curl_host_exceptions' => [], 170 171 // Plugin extra, off by default: breaks sites whose server cron calls wp-cron.php over HTTP. 171 172 'block_wpcron' => false, … … 188 189 'block_hostroyale' => true, 189 190 'block_cloudvider' => true, 191 // Attack hosting networks: stay in the rule even when the host list is off. 192 'block_techoff' => true, 193 'block_bucklog' => true, 194 'block_tcdatacenter' => true, 190 195 'block_tor' => true, 191 196 'action' => 'block', … … 268 273 $s['rule1'] = $r1; 269 274 } 275 // October 24, 2026: the interim WP Umbrella DigitalOcean clause was removed. 276 if ( isset( $s['rule1'] ) && is_array( $s['rule1'] ) ) unset( $s['rule1']['allow_wpumbrella_do_monitors'] ); 270 277 271 278 $r2 = isset( $s['rule2'] ) && is_array( $s['rule2'] ) ? $s['rule2'] : null; … … 314 321 315 322 /** 316 * True when settings still use the shape from before the October 2026 ruleset. 323 * True when settings are older than the current ruleset: the shape from 324 * before October 2026, or saved before the October 24, 2026 options (curl 325 * blocking and the attack hosting networks, which start on, as on wafrules.com). 317 326 */ 318 327 public static function needs_migration( array $s ): bool { 319 if ( isset( $s['rule1'] ) && is_array( $s['rule1'] ) && ! array_key_exists( 'include_client_bot', $s['rule1'] ) ) return true; 320 if ( isset( $s['rule2'] ) && is_array( $s['rule2'] ) && ( array_key_exists( 'block_sqli_sleep', $s['rule2'] ) || array_key_exists( 'block_path_traversal', $s['rule2'] ) ) ) return true; 328 if ( isset( $s['rule1'] ) && is_array( $s['rule1'] ) && ( ! array_key_exists( 'include_client_bot', $s['rule1'] ) || array_key_exists( 'allow_wpumbrella_do_monitors', $s['rule1'] ) ) ) return true; 329 if ( isset( $s['rule2'] ) && is_array( $s['rule2'] ) && ( array_key_exists( 'block_sqli_sleep', $s['rule2'] ) || array_key_exists( 'block_path_traversal', $s['rule2'] ) || ! array_key_exists( 'block_curl', $s['rule2'] ) ) ) return true; 330 if ( isset( $s['rule3'] ) && is_array( $s['rule3'] ) && ! array_key_exists( 'block_techoff', $s['rule3'] ) ) return true; 321 331 return false; 322 332 } … … 364 374 ) ); 365 375 376 $out['rule2']['curl_host_exceptions'] = self::normalize_hostnames( $out['rule2']['curl_host_exceptions'] ); 377 366 378 $out['rule3']['action'] = $out['rule3']['action'] === 'managed_challenge' ? 'managed_challenge' : 'block'; 367 379 … … 459 471 460 472 if ( ! empty( $s['allow_letsencrypt'] ) ) $parts[] = self::LETS_ENCRYPT; 461 if ( ! empty( $s['allow_wpumbrella'] ) && ! empty( $s['allow_wpumbrella_do_monitors'] ) ) $parts[] = self::WPU_MONITORS;462 473 if ( ! empty( $s['allow_flyingpress'] ) ) $parts[] = self::FLYINGPRESS; 463 474 if ( ! empty( $s['allow_apple_messages'] ) ) $parts[] = self::APPLE_PREVIEW; … … 516 527 foreach ( [ '/.env', '/.git', 'composer.json', 'composer.lock', 'debug.log', 'phpunit', 'server-status' ] as $t ) $p[] = self::lc( $path, $t ); 517 528 } 529 if ( ! empty( $s['block_curl'] ) ) { 530 $curl = 'lower(http.user_agent) contains "curl/"'; 531 $hosts = self::normalize_hostnames( (array) ( $s['curl_host_exceptions'] ?? [] ) ); 532 $p[] = $hosts 533 ? '(' . $curl . ' and not http.host in {' . implode( ' ', array_map( static fn( $h ) => '"' . $h . '"', $hosts ) ) . '})' 534 : '(' . $curl . ')'; 535 } 518 536 if ( ! empty( $s['block_wpcron'] ) ) $p[] = self::lc( $path, 'wp-cron.php' ); 519 537 … … 522 540 523 541 private static function build_rule3_expr( array $s ): string { 524 $p = []; 542 $p = []; 543 $asns = []; 525 544 526 545 if ( ! empty( $s['block_hosts'] ) ) { … … 541 560 'block_cloudvider' => [ 62240 ], 542 561 ]; 543 $asns = [];544 562 foreach ( $asn_map as $key => $nums ) { 545 563 if ( ! empty( $s[ $key ] ) ) $asns = array_merge( $asns, $nums ); 546 564 } 547 if ( $asns ) { 548 $p[] = '(ip.src.asnum in {' . implode( ' ', $asns ) . '} and not cf.client.bot and not http.request.uri.path contains "acme-challenge")'; 549 } 565 } 566 // Attack hosting networks apply even when the main host list is off. 567 foreach ( [ 'block_techoff' => 48090, 'block_bucklog' => 211590, 'block_tcdatacenter' => 218785 ] as $key => $num ) { 568 if ( ! empty( $s[ $key ] ) ) $asns[] = $num; 569 } 570 $asns = array_values( array_unique( $asns ) ); 571 if ( $asns ) { 572 $p[] = '(ip.src.asnum in {' . implode( ' ', $asns ) . '} and not cf.client.bot and not http.request.uri.path contains "acme-challenge")'; 550 573 } 551 574 if ( ! empty( $s['block_tor'] ) ) $p[] = '(ip.src.country in {"T1"})'; … … 637 660 * @return array{accepted: string[], invalid: string[]} 638 661 */ 662 /** 663 * Hostnames for the curl exceptions, as wafrules.com reads them: split on 664 * spaces, commas and new lines, lower-cased, trailing dots removed, IP 665 * addresses and anything with a port or invalid label dropped, no repeats. 666 * 667 * @param string[] $list Lines or tokens as entered. 668 * @return string[] 669 */ 670 public static function normalize_hostnames( array $list ): array { 671 $out = []; 672 foreach ( $list as $item ) { 673 foreach ( preg_split( '/[\s,]+/', (string) $item ) ?: [] as $h ) { 674 $h = rtrim( strtolower( trim( $h ) ), '.' ); 675 if ( $h === '' || in_array( $h, $out, true ) ) continue; 676 if ( strlen( $h ) > 253 || str_contains( $h, ':' ) || preg_match( '/^(?:\d{1,3}\.){3}\d{1,3}$/', $h ) ) continue; 677 if ( ! preg_match( '/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/', $h ) ) continue; 678 $out[] = $h; 679 } 680 } 681 return $out; 682 } 683 639 684 public static function normalize_ips( array $list ): array { 640 685 $seen = []; -
waf-manager-for-cloudflare/trunk/includes/class-service-ips.php
r3762681 r3771550 7 7 * Published IP lists for services allowed by Rule 1 (Allow Good Bots). 8 8 * 9 * Source: the wafrules.com ruleset of October 2 1, 2026. Each list comes from the9 * Source: the wafrules.com ruleset of October 24, 2026. Each list comes from the 10 10 * service's own published page (see 'sources'). Services Cloudflare already 11 11 * verifies as bots are covered by cf.client.bot; their lists are optional. … … 13 13 final class WMFC_Service_IPs { 14 14 15 public const RULES_DATE = '2026-10-2 1';15 public const RULES_DATE = '2026-10-24'; 16 16 17 17 /** @return array<int,array<string,mixed>> */ … … 160 160 'settings' => [ 'allow_wpumbrella' ], 161 161 'verified_bot' => false, 162 'updated' => '2026-10-2 1',163 'sources' => [ 'https://wp-umbrella.com/ips-v4/', 'https://wp-umbrella.com/ips-v6/', 'https://wp-umbrella.com/ips-monitoring/', 'https://wp-umbrella.com/ips-broken-link-checker/', 'https://wp-umbrella.com/ips-lighthouse/' ],164 'notes' => 'Management v4/v6, monitoring, broken-link checker, and Lighthouse. 2001:BC8:2B7F:801::292/64 is normalized to 2001:bc8:2b7f:801::/64. Listed in Cloudflare Radar, but real traffic does not verify. Unlisted DigitalOcean uptime monitors stay on the interim AS14061 clause and are not added here.',162 'updated' => '2026-10-23', 163 'sources' => [ 'https://wp-umbrella.com/ips-v4/', 'https://wp-umbrella.com/ips-v6/', 'https://wp-umbrella.com/ips-monitoring/', 'https://wp-umbrella.com/ips-broken-link-checker/', 'https://wp-umbrella.com/ips-lighthouse/', 'https://wp-umbrella.com/communication-with-our-service/' ], 164 'notes' => 'Management v4/v6, uptime monitoring, broken-link checker and Lighthouse IPs from WP Umbrella\'s published lists. 2001:BC8:2B7F:801::292/64 is normalized to 2001:bc8:2b7f:801::/64. Listed in Cloudflare Radar, but real traffic does not verify. WP Umbrella corrected its monitoring list on 2026-10-23.', 165 165 'ips' => [ 166 '15.235.231.33', '51.159. 196.255', '51.159.202.198', '51.178.24.243',167 ' 62.4.26.31', '64.23.156.169', '128.199.86.31', '128.199.121.7',168 '1 34.199.170.244', '142.93.161.1', '142.93.205.116', '143.244.149.185',169 '15 7.245.77.230', '159.223.167.118', '161.35.231.200', '165.227.83.88',170 '16 5.227.147.208', '167.99.218.133', '167.99.218.170', '188.166.163.58',171 ' 188.166.165.9', '206.189.101.66', '209.38.89.16', '212.83.142.5',172 '2 12.83.175.107', '212.129.45.77', '2001:bc8:2b7f:801::/64', '2001:41d0:306:1702::/64',166 '15.235.231.33', '51.159.202.198', '62.4.26.31', '104.248.132.78', 167 '128.199.86.31', '128.199.121.7', '134.199.170.244', '142.93.205.116', 168 '143.198.153.189', '143.244.149.185', '157.245.77.230', '159.65.120.212', 169 '159.223.167.118', '165.227.83.88', '165.232.128.149', '167.99.218.133', 170 '167.99.218.170', '188.166.163.58', '188.166.165.9', '206.189.101.66', 171 '209.38.89.16', '212.83.142.5', '212.83.175.107', '212.129.45.77', 172 '2001:bc8:2b7f:801::/64', '2001:41d0:306:1702::/64', 173 173 ], 174 174 ], -
waf-manager-for-cloudflare/trunk/includes/views/page-about.php
r3762681 r3771550 6 6 <div class="wpwaf-about-hero"> 7 7 <div class="wpwaf-about-hero-left"> 8 <span class=" dashicons dashicons-shield wpwaf-about-hero-icon"></span>8 <span class="wpwaf-about-hero-icon"><?php echo WMFC_Icons::about( 'shield', 48 ); ?></span> 9 9 <div> 10 10 <h1 class="wpwaf-about-hero-title"> … … 12 12 <span class="wpwaf-about-badge">v<?php echo esc_html( WMFC_VERSION ); ?></span> 13 13 </h1> 14 <p class="wpwaf-about-hero-sub">Visual Cloudflare WAF rule builder — directly fromyour WordPress admin</p>14 <p class="wpwaf-about-hero-sub">Visual Cloudflare WAF rule builder, right in your WordPress admin</p> 15 15 </div> 16 16 </div> 17 17 <div class="wpwaf-about-cta"> 18 18 <a href="https://www.wpwafmanager.com" target="_blank" rel="noopener" class="wpwaf-about-btn wpwaf-about-btn-primary"> 19 🌐wpwafmanager.com19 <?php echo WMFC_Icons::about( 'globe', 16 ); ?> wpwafmanager.com 20 20 </a> 21 21 <a href="https://github.com/jaimealnassim/wpwafmanager" target="_blank" rel="noopener" class="wpwaf-about-btn wpwaf-about-btn-secondary"> … … 29 29 <div class="wpwaf-about-features"> 30 30 <div class="wpwaf-about-feature"> 31 <span class="wpwaf-about-feature-icon"> 🛡</span>31 <span class="wpwaf-about-feature-icon"><?php echo WMFC_Icons::about( 'shield' ); ?></span> 32 32 <div class="wpwaf-about-feature-title">WAF Rules Builder</div> 33 33 <div class="wpwaf-about-feature-desc">Deploy 5 battle-tested security rules to any Cloudflare zone in one click. No expression language required.</div> … … 39 39 40 40 <div class="wpwaf-about-card"> 41 <h2> 🆓Free & Open Source</h2>41 <h2><?php echo WMFC_Icons::about( 'unlock', 18 ); ?> Free & Open Source</h2> 42 42 <p>WAF Manager for Cloudflare is <strong>free and open-source</strong>, licensed under GPL-2.0. The WAF Rules Builder you see here is available at no cost, forever.</p> 43 <p>Deploy five battle-tested Cloudflare WAF rules to any zone in one click — no Cloudflare dashboard or expression language required.</p>43 <p>Deploy five battle-tested Cloudflare WAF rules to any zone in one click. No Cloudflare dashboard or expression language required.</p> 44 44 </div> 45 45 46 46 <div class="wpwaf-about-card" style="border-color:#fcd9c0;background:#fffaf7;"> 47 <h2> ⚡Get the full WP WAF Manager</h2>47 <h2><?php echo WMFC_Icons::about( 'star', 18 ); ?> Get the full WP WAF Manager</h2> 48 48 <p>The full <strong>WP WAF Manager</strong> adds a complete Cloudflare toolkit on top of the WAF Rules Builder: DNS manager, zone analytics, zone controls & cache purge, bot control, SSL monitoring, alerts & health checks, Turnstile widget management, Page Rules migration, IP access rules, security events, email routing, white-label client reports, and multi-account support.</p> 49 49 <p>Get it <strong>free on GitHub</strong>, or at <a href="https://www.wpwafmanager.com" target="_blank" rel="noopener" style="color:#FF6A00;font-weight:600;">wpwafmanager.com</a> for <strong>automatic updates</strong> and <strong>priority support</strong>.</p> … … 94 94 <tr> 95 95 <td><?php echo esc_html( $label ); ?></td> 96 <td><?php echo $free ? ' ✅' : '—'; ?></td>97 <td class="col-pro"><?php echo $pro ? ' ✅' : '—'; ?></td>96 <td><?php echo $free ? '<span class="wpwaf-about-yes" role="img" aria-label="Included">' . WMFC_Icons::about( 'check', 18 ) . '</span>' : '<span class="wpwaf-about-no" aria-label="Not included">-</span>'; ?></td> 97 <td class="col-pro"><?php echo $pro ? '<span class="wpwaf-about-yes" role="img" aria-label="Included">' . WMFC_Icons::about( 'check', 18 ) . '</span>' : '<span class="wpwaf-about-no" aria-label="Not included">-</span>'; ?></td> 98 98 </tr> 99 99 <?php endforeach; ?> … … 104 104 <!-- Credits --> 105 105 <div class="wpwaf-about-card"> 106 <h2> 📋Credits & Resources</h2>106 <h2><?php echo WMFC_Icons::about( 'list', 18 ); ?> Credits & Resources</h2> 107 107 <ul> 108 108 <li>WAF rules based on the five-rule pattern by <a href="https://webagencyhero.com" target="_blank" rel="noopener">Troy Glancy (WebAgencyHero)</a>, refined by <a href="https://wafrules.com" target="_blank" rel="noopener">Michael Bourne (URSA6) at wafrules.com</a></li> 109 <li>Plugin by <a href="https://www.wpwafmanager.com" target="_blank" rel="noopener">WP WAF Manager</a> —built by <a href="https://nahnuplugins.com" target="_blank" rel="noopener">Nahnu Plugins</a></li>109 <li>Plugin by <a href="https://www.wpwafmanager.com" target="_blank" rel="noopener">WP WAF Manager</a>, built by <a href="https://nahnuplugins.com" target="_blank" rel="noopener">Nahnu Plugins</a></li> 110 110 <li><a href="https://github.com/jaimealnassim/wpwafmanager" target="_blank" rel="noopener">View source on GitHub</a></li> 111 111 <li><a href="https://developers.cloudflare.com/waf/" target="_blank" rel="noopener">Cloudflare WAF Documentation</a></li> -
waf-manager-for-cloudflare/trunk/includes/views/page-main.php
r3762681 r3771550 13 13 </a> 14 14 <div class="cfwaf-header-meta"> 15 <div class="cfwaf-header-meta-updated">Rules last updated: October 21, 2026, from <a href="https://wafrules.com" target="_blank" rel="noopener">wafrules.com</a></div>15 <div class="cfwaf-header-meta-updated">Rules last updated: <?php echo esc_html( gmdate( 'F j, Y', (int) strtotime( WMFC_Service_IPs::RULES_DATE . ' 00:00:00 UTC' ) ) ); ?>, from <a href="https://wafrules.com" target="_blank" rel="noopener">wafrules.com</a></div> 16 16 <a href="https://github.com/jaimealnassim/wpwafmanager" target="_blank" rel="noopener" class="cfwaf-header-github" title="View on GitHub" style="justify-content:flex-end;"> 17 17 <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> … … 156 156 <div class="cfwaf-step-content"> 157 157 <h3>Connect & Configure</h3> 158 <p>Enter your Cloudflare API credentials above and click <strong>Verify & Save</strong>. Then customize the five WAF rules below to match your site’s needs. Every checkbox option is saved to your WordPress database —your configuration persists between sessions. You can return any time and your settings will be exactly as you left them.</p>158 <p>Enter your Cloudflare API credentials above and click <strong>Verify & Save</strong>. Then customize the five WAF rules below to match your site’s needs. Every checkbox option is saved to your WordPress database, so your configuration persists between sessions. You can return any time and your settings will be exactly as you left them.</p> 159 159 </div> 160 160 </div> … … 164 164 <div class="cfwaf-step-content"> 165 165 <h3>Deploy to Your Sites</h3> 166 <p>Once configured, scroll to the bottom and click <strong>Deploy Rules to Your Sites</strong>. All your Cloudflare zones will load automatically. Pick one site, a handful, or all of them at once —then click <strong>Deploy</strong>. The plugin pushes all five rules directly to Cloudflare via API in the correct order. No copy-pasting expressions into the Cloudflare dashboard required.</p>166 <p>Once configured, scroll to the bottom and click <strong>Deploy Rules to Your Sites</strong>. All your Cloudflare zones will load automatically. Pick one site, a handful, or all of them at once, then click <strong>Deploy</strong>. The plugin pushes all five rules directly to Cloudflare via API in the correct order. No copy-pasting expressions into the Cloudflare dashboard required.</p> 167 167 <p class="cfwaf-hint"><strong>Why order matters:</strong> Rule 1 (Allow Good Bots) must be first because it uses the Skip action to whitelist legitimate bots before any blocking rules run. Block rules come before Challenge rules because a blocked request stops evaluation immediately, so no further rules are checked.</p> 168 168 </div> … … 173 173 <div class="cfwaf-step-content"> 174 174 <h3>Monitor & Adjust</h3> 175 <p>After deploying, monitor your Cloudflare Security Events log at <strong>Security → Analytics → Events</strong>. Watch closely for false positives —legitimate traffic being blocked or challenged. If a service you need is being blocked, enable it in Rule 1 and redeploy. These rules work well for most sites with default settings, but every site is different. Use the <strong>Zone Rules</strong> tab below to inspect what’s live on any zone at any time.</p>175 <p>After deploying, monitor your Cloudflare Security Events log at <strong>Security → Analytics → Events</strong>. Watch closely for false positives: legitimate traffic being blocked or challenged. If a service you need is being blocked, enable it in Rule 1 and redeploy. These rules work well for most sites with default settings, but every site is different. Use the <strong>Zone Rules</strong> tab below to inspect what’s live on any zone at any time.</p> 176 176 </div> 177 177 </div> … … 196 196 if ( is_array( $moved_agents ) && $moved_agents ) : ?> 197 197 <div class="cfwaf-notice cfwaf-notice-info cfwaf-rules-moved" id="cfwaf-rules-moved"> 198 <p><strong>WAF rules updated to the October 2 1, 2026 ruleset.</strong> Rule 1 no longer allows services by user agent, because a user agent is easy to fake. Services Cloudflare verifies are covered by “Allow every Cloudflare verified bot”, and services with a published IP list now have their own switch.</p>198 <p><strong>WAF rules updated to the October 2026 ruleset.</strong> Rule 1 no longer allows services by user agent, because a user agent is easy to fake. Services Cloudflare verifies are covered by “Allow every Cloudflare verified bot”, and services with a published IP list now have their own switch.</p> 199 199 <p>So nothing stops working, these user agents were moved to <strong>Custom User Agents to Allow</strong> in your saved settings: <?php echo implode( ', ', array_map( static fn( $ua ) => '<code>' . esc_html( (string) $ua ) . '</code>', $moved_agents ) ); ?>. Remove any you don’t need, and add those services’ server IPs under <strong>Your server IPs</strong> instead where you can. Deploy again to apply the new rules.</p> 200 200 <button type="button" class="cfwaf-btn cfwaf-btn-sm" id="cfwaf-rules-moved-dismiss">Got it</button> … … 292 292 'allow_shortpixel' => [ 'ShortPixel', '', 'Adds the published IPv4 list. ShortPixel runs on Hetzner, which Rule 3 blocks.' ], 293 293 'allow_patchstack' => [ 'Patchstack', '', 'Adds Patchstack\'s published IPs. Patchstack says the list may change without notice.' ], 294 'allow_wpumbrella' => [ 'WP Umbrella', '', 'Adds the published management, monitoring, broken-link and Lighthouse IPs. WP Umbrella traffic does not verify as a Cloudflare bot.' ],294 'allow_wpumbrella' => [ 'WP Umbrella', '', 'Adds WP Umbrella\'s published management, uptime monitoring, broken-link checker and Lighthouse IPs (IP only, no user agent match). WP Umbrella traffic does not verify as a Cloudflare bot.' ], 295 295 'allow_gosweetspot' => [ 'GoSweetSpot', '', 'Adds the integration-service IPs used for webhooks and order fetches.' ], 296 296 ]; … … 306 306 </span> 307 307 </label> 308 <?php if ( $key === 'allow_wpumbrella' ) : ?>309 <label class="cfwaf-check-label cfwaf-service-sub">310 <input type="checkbox" data-setting="rule1.allow_wpumbrella_do_monitors" id="cfwaf-wpu-monitors">311 <span>Include unlisted DigitalOcean monitors (interim)<span class="cfwaf-check-desc">Requests from DigitalOcean (AS14061) with user agent WPUmbrella+, GET or HEAD, no dot in the path and no query string.</span></span>312 </label>313 <?php endif; ?>314 308 <?php endforeach; ?> 315 309 </div> … … 354 348 <div id="cfwaf-expressions-list" class="cfwaf-expr-list"></div> 355 349 <button type="button" id="cfwaf-expr-add" class="cfwaf-btn cfwaf-btn-sm" style="margin-top:6px;">+ Add Expression</button> 356 <p class="cfwaf-warn-text" style="margin-top:8px;"> ⚠Expressions must be valid <a href="https://developers.cloudflare.com/ruleset-engine/rules-language/" target="_blank" rel="noopener">Cloudflare rules language</a> syntax. An invalid expression makes the deploy fail for that zone.</p>350 <p class="cfwaf-warn-text" style="margin-top:8px;"><?php echo WMFC_Icons::svg( 'alert' ); ?> Expressions must be valid <a href="https://developers.cloudflare.com/ruleset-engine/rules-language/" target="_blank" rel="noopener">Cloudflare rules language</a> syntax. An invalid expression makes the deploy fail for that zone.</p> 357 351 </div> 358 352 … … 409 403 </div> 410 404 <p class="cfwaf-hint" style="margin-top:6px">The generic patterns never match Cloudflare verified bots.</p> 405 <label class="cfwaf-check-label cfwaf-check-strong" style="margin-top:10px"> 406 <input type="checkbox" data-setting="rule2.block_curl" id="cfwaf-block-curl"> 407 <span><strong>Block curl user agents</strong> 408 <span class="cfwaf-check-desc">Turn this off for app or API hosts (Workers, Vercel, webhook endpoints) where people or scripts legitimately call you with curl. Allow server-side monitors in Rule 1 instead.</span> 409 </span> 410 </label> 411 <div class="cfwaf-curl-hosts"> 412 <label for="cfwaf-curl-hosts" class="cfwaf-field-label">Except these hostnames</label> 413 <textarea id="cfwaf-curl-hosts" class="cfwaf-ip-textarea" rows="2" placeholder="api.example.com hooks.example.com" spellcheck="false" autocomplete="off"></textarea> 414 <p class="cfwaf-hint cfwaf-hint-muted">One hostname per line. curl requests to these hostnames are not blocked. IP addresses and ports are ignored.</p> 415 </div> 411 416 </div> 412 417 … … 485 490 486 491 <div class="cfwaf-section"> 492 <h4>Attack Hosting Networks</h4> 493 <p class="cfwaf-hint">These stay in the rule even when <strong>Block Web Host ASNs</strong> is off. Untick any network you need to allow.</p> 494 <div class="cfwaf-service-list"> 495 <label class="cfwaf-check-label cfwaf-service-row"> 496 <input type="checkbox" data-setting="rule3.block_techoff"> 497 <span><strong>AS48090 TECHOFF SRV / DMZHOST</strong><span class="cfwaf-check-desc">Exploit spray and credential probing.</span></span> 498 </label> 499 <label class="cfwaf-check-label cfwaf-service-row"> 500 <input type="checkbox" data-setting="rule3.block_bucklog"> 501 <span><strong>AS211590 Bucklog / FBW Networks</strong><span class="cfwaf-check-desc">Secrets scanning from this network.</span></span> 502 </label> 503 <label class="cfwaf-check-label cfwaf-service-row"> 504 <input type="checkbox" data-setting="rule3.block_tcdatacenter"> 505 <span><strong>AS218785 TC Datacenter</strong><span class="cfwaf-check-desc">WordPress exploit traffic from this network.</span></span> 506 </label> 507 </div> 508 </div> 509 510 <div class="cfwaf-section"> 487 511 <div class="cfwaf-checkbox-grid"> 488 512 <label class="cfwaf-check-label"><input type="checkbox" data-setting="rule3.block_tor"> Block TOR Exit Nodes</label> … … 571 595 <input type="checkbox" id="cfwaf-country-select-all"> <strong>Select All</strong> 572 596 </label> 573 <button type="button" class="cfwaf-btn cfwaf-btn-ghost-dark" id="cfwaf-country-clear-all" style="padding:6px 14px;font-size:12px;"> ✕Clear All</button>574 <input type="search" id="cfwaf-country-search" class="cfwaf-input cfwaf-search-input" placeholder=" 🔍Search countries…" style="max-width:220px;">597 <button type="button" class="cfwaf-btn cfwaf-btn-ghost-dark" id="cfwaf-country-clear-all" style="padding:6px 14px;font-size:12px;"><?php echo WMFC_Icons::svg( 'x' ); ?> Clear All</button> 598 <input type="search" id="cfwaf-country-search" class="cfwaf-input cfwaf-search-input" placeholder="Search countries…" style="max-width:220px;"> 575 599 <span style="margin-left:auto;font-size:12px;font-weight:600;color:#6b7280;" id="cfwaf-country-count">0 selected</span> 576 600 </div> … … 578 602 <div class="cfwaf-country-regions"> 579 603 <span class="cfwaf-country-regions-label">Quick Pick:</span> 580 <button type="button" class="cfwaf-region-btn" data-region="north-america">🌎 North America</button> 581 <button type="button" class="cfwaf-region-btn" data-region="europe">🌍 Europe</button> 582 <button type="button" class="cfwaf-region-btn" data-region="asia">🌏 Asia</button> 583 <button type="button" class="cfwaf-region-btn" data-region="oceania">🌌 Oceania</button> 584 <button type="button" class="cfwaf-region-btn" data-region="latin-america">🌎 Latin America</button> 585 <button type="button" class="cfwaf-region-btn" data-region="mena">MENA</button> 586 <button type="button" class="cfwaf-region-btn" data-region="gcc">GCC</button> 587 <button type="button" class="cfwaf-region-btn" data-region="africa">🌍 Africa</button> 588 </div> 589 604 <button type="button" class="cfwaf-region-btn" data-region="north-america"><?php echo WMFC_Icons::region( 'north-america' ); ?> North America</button> 605 <button type="button" class="cfwaf-region-btn" data-region="europe"><?php echo WMFC_Icons::region( 'europe' ); ?> Europe</button> 606 <button type="button" class="cfwaf-region-btn" data-region="asia"><?php echo WMFC_Icons::region( 'asia' ); ?> Asia</button> 607 <button type="button" class="cfwaf-region-btn" data-region="oceania"><?php echo WMFC_Icons::region( 'oceania' ); ?> Oceania</button> 608 <button type="button" class="cfwaf-region-btn" data-region="latin-america"><?php echo WMFC_Icons::region( 'latin-america' ); ?> Latin America</button> 609 <button type="button" class="cfwaf-region-btn" data-region="mena"><?php echo WMFC_Icons::region( 'mena' ); ?> MENA</button> 610 <button type="button" class="cfwaf-region-btn" data-region="gcc"><?php echo WMFC_Icons::region( 'gcc' ); ?> GCC</button> 611 <button type="button" class="cfwaf-region-btn" data-region="africa"><?php echo WMFC_Icons::region( 'africa' ); ?> Africa</button> 612 </div> 613 614 <?php $wmfc_flag_url = WMFC_URL . 'assets/flags/'; ?> 590 615 <div class="cfwaf-zones-grid" id="cfwaf-country-grid" style="max-height:420px;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));margin-top:12px;"> 591 <div class="cfwaf-zone-item" data-cc="AF"><input type="checkbox" class="cfwaf-country-check" value="AF">< div><div class="cfwaf-zone-name">Afghanistan</div><div class="cfwaf-zone-plan">AF</div></div></div>592 <div class="cfwaf-zone-item" data-cc="AL"><input type="checkbox" class="cfwaf-country-check" value="AL">< div><div class="cfwaf-zone-name">Albania</div><div class="cfwaf-zone-plan">AL</div></div></div>593 <div class="cfwaf-zone-item" data-cc="DZ"><input type="checkbox" class="cfwaf-country-check" value="DZ">< div><div class="cfwaf-zone-name">Algeria</div><div class="cfwaf-zone-plan">DZ</div></div></div>594 <div class="cfwaf-zone-item" data-cc="AD"><input type="checkbox" class="cfwaf-country-check" value="AD">< div><div class="cfwaf-zone-name">Andorra</div><div class="cfwaf-zone-plan">AD</div></div></div>595 <div class="cfwaf-zone-item" data-cc="AO"><input type="checkbox" class="cfwaf-country-check" value="AO">< div><div class="cfwaf-zone-name">Angola</div><div class="cfwaf-zone-plan">AO</div></div></div>596 <div class="cfwaf-zone-item" data-cc="AG"><input type="checkbox" class="cfwaf-country-check" value="AG">< div><div class="cfwaf-zone-name">Antigua & Barbuda</div><div class="cfwaf-zone-plan">AG</div></div></div>597 <div class="cfwaf-zone-item" data-cc="AR"><input type="checkbox" class="cfwaf-country-check" value="AR">< div><div class="cfwaf-zone-name">Argentina</div><div class="cfwaf-zone-plan">AR</div></div></div>598 <div class="cfwaf-zone-item" data-cc="AM"><input type="checkbox" class="cfwaf-country-check" value="AM">< div><div class="cfwaf-zone-name">Armenia</div><div class="cfwaf-zone-plan">AM</div></div></div>599 <div class="cfwaf-zone-item" data-cc="AU"><input type="checkbox" class="cfwaf-country-check" value="AU">< div><div class="cfwaf-zone-name">Australia</div><div class="cfwaf-zone-plan">AU</div></div></div>600 <div class="cfwaf-zone-item" data-cc="AT"><input type="checkbox" class="cfwaf-country-check" value="AT">< div><div class="cfwaf-zone-name">Austria</div><div class="cfwaf-zone-plan">AT</div></div></div>601 <div class="cfwaf-zone-item" data-cc="AZ"><input type="checkbox" class="cfwaf-country-check" value="AZ">< div><div class="cfwaf-zone-name">Azerbaijan</div><div class="cfwaf-zone-plan">AZ</div></div></div>602 <div class="cfwaf-zone-item" data-cc="BS"><input type="checkbox" class="cfwaf-country-check" value="BS">< div><div class="cfwaf-zone-name">Bahamas</div><div class="cfwaf-zone-plan">BS</div></div></div>603 <div class="cfwaf-zone-item" data-cc="BH"><input type="checkbox" class="cfwaf-country-check" value="BH">< div><div class="cfwaf-zone-name">Bahrain</div><div class="cfwaf-zone-plan">BH</div></div></div>604 <div class="cfwaf-zone-item" data-cc="BD"><input type="checkbox" class="cfwaf-country-check" value="BD">< div><div class="cfwaf-zone-name">Bangladesh</div><div class="cfwaf-zone-plan">BD</div></div></div>605 <div class="cfwaf-zone-item" data-cc="BB"><input type="checkbox" class="cfwaf-country-check" value="BB">< div><div class="cfwaf-zone-name">Barbados</div><div class="cfwaf-zone-plan">BB</div></div></div>606 <div class="cfwaf-zone-item" data-cc="BY"><input type="checkbox" class="cfwaf-country-check" value="BY">< div><div class="cfwaf-zone-name">Belarus</div><div class="cfwaf-zone-plan">BY</div></div></div>607 <div class="cfwaf-zone-item" data-cc="BE"><input type="checkbox" class="cfwaf-country-check" value="BE">< div><div class="cfwaf-zone-name">Belgium</div><div class="cfwaf-zone-plan">BE</div></div></div>608 <div class="cfwaf-zone-item" data-cc="BZ"><input type="checkbox" class="cfwaf-country-check" value="BZ">< div><div class="cfwaf-zone-name">Belize</div><div class="cfwaf-zone-plan">BZ</div></div></div>609 <div class="cfwaf-zone-item" data-cc="BJ"><input type="checkbox" class="cfwaf-country-check" value="BJ">< div><div class="cfwaf-zone-name">Benin</div><div class="cfwaf-zone-plan">BJ</div></div></div>610 <div class="cfwaf-zone-item" data-cc="BT"><input type="checkbox" class="cfwaf-country-check" value="BT">< div><div class="cfwaf-zone-name">Bhutan</div><div class="cfwaf-zone-plan">BT</div></div></div>611 <div class="cfwaf-zone-item" data-cc="BO"><input type="checkbox" class="cfwaf-country-check" value="BO">< div><div class="cfwaf-zone-name">Bolivia</div><div class="cfwaf-zone-plan">BO</div></div></div>612 <div class="cfwaf-zone-item" data-cc="BA"><input type="checkbox" class="cfwaf-country-check" value="BA">< div><div class="cfwaf-zone-name">Bosnia & Herzegovina</div><div class="cfwaf-zone-plan">BA</div></div></div>613 <div class="cfwaf-zone-item" data-cc="BW"><input type="checkbox" class="cfwaf-country-check" value="BW">< div><div class="cfwaf-zone-name">Botswana</div><div class="cfwaf-zone-plan">BW</div></div></div>614 <div class="cfwaf-zone-item" data-cc="BR"><input type="checkbox" class="cfwaf-country-check" value="BR">< div><div class="cfwaf-zone-name">Brazil</div><div class="cfwaf-zone-plan">BR</div></div></div>615 <div class="cfwaf-zone-item" data-cc="BN"><input type="checkbox" class="cfwaf-country-check" value="BN">< div><div class="cfwaf-zone-name">Brunei</div><div class="cfwaf-zone-plan">BN</div></div></div>616 <div class="cfwaf-zone-item" data-cc="BG"><input type="checkbox" class="cfwaf-country-check" value="BG">< div><div class="cfwaf-zone-name">Bulgaria</div><div class="cfwaf-zone-plan">BG</div></div></div>617 <div class="cfwaf-zone-item" data-cc="BF"><input type="checkbox" class="cfwaf-country-check" value="BF">< div><div class="cfwaf-zone-name">Burkina Faso</div><div class="cfwaf-zone-plan">BF</div></div></div>618 <div class="cfwaf-zone-item" data-cc="BI"><input type="checkbox" class="cfwaf-country-check" value="BI">< div><div class="cfwaf-zone-name">Burundi</div><div class="cfwaf-zone-plan">BI</div></div></div>619 <div class="cfwaf-zone-item" data-cc="CV"><input type="checkbox" class="cfwaf-country-check" value="CV">< div><div class="cfwaf-zone-name">Cabo Verde</div><div class="cfwaf-zone-plan">CV</div></div></div>620 <div class="cfwaf-zone-item" data-cc="KH"><input type="checkbox" class="cfwaf-country-check" value="KH">< div><div class="cfwaf-zone-name">Cambodia</div><div class="cfwaf-zone-plan">KH</div></div></div>621 <div class="cfwaf-zone-item" data-cc="CM"><input type="checkbox" class="cfwaf-country-check" value="CM">< div><div class="cfwaf-zone-name">Cameroon</div><div class="cfwaf-zone-plan">CM</div></div></div>622 <div class="cfwaf-zone-item" data-cc="CA"><input type="checkbox" class="cfwaf-country-check" value="CA">< div><div class="cfwaf-zone-name">Canada</div><div class="cfwaf-zone-plan">CA</div></div></div>623 <div class="cfwaf-zone-item" data-cc="CF"><input type="checkbox" class="cfwaf-country-check" value="CF">< div><div class="cfwaf-zone-name">Central African Rep.</div><div class="cfwaf-zone-plan">CF</div></div></div>624 <div class="cfwaf-zone-item" data-cc="TD"><input type="checkbox" class="cfwaf-country-check" value="TD">< div><div class="cfwaf-zone-name">Chad</div><div class="cfwaf-zone-plan">TD</div></div></div>625 <div class="cfwaf-zone-item" data-cc="CL"><input type="checkbox" class="cfwaf-country-check" value="CL">< div><div class="cfwaf-zone-name">Chile</div><div class="cfwaf-zone-plan">CL</div></div></div>626 <div class="cfwaf-zone-item" data-cc="CN"><input type="checkbox" class="cfwaf-country-check" value="CN">< div><div class="cfwaf-zone-name">China</div><div class="cfwaf-zone-plan">CN</div></div></div>627 <div class="cfwaf-zone-item" data-cc="CO"><input type="checkbox" class="cfwaf-country-check" value="CO">< div><div class="cfwaf-zone-name">Colombia</div><div class="cfwaf-zone-plan">CO</div></div></div>628 <div class="cfwaf-zone-item" data-cc="KM"><input type="checkbox" class="cfwaf-country-check" value="KM">< div><div class="cfwaf-zone-name">Comoros</div><div class="cfwaf-zone-plan">KM</div></div></div>629 <div class="cfwaf-zone-item" data-cc="CG"><input type="checkbox" class="cfwaf-country-check" value="CG">< div><div class="cfwaf-zone-name">Congo</div><div class="cfwaf-zone-plan">CG</div></div></div>630 <div class="cfwaf-zone-item" data-cc="CR"><input type="checkbox" class="cfwaf-country-check" value="CR">< div><div class="cfwaf-zone-name">Costa Rica</div><div class="cfwaf-zone-plan">CR</div></div></div>631 <div class="cfwaf-zone-item" data-cc="HR"><input type="checkbox" class="cfwaf-country-check" value="HR">< div><div class="cfwaf-zone-name">Croatia</div><div class="cfwaf-zone-plan">HR</div></div></div>632 <div class="cfwaf-zone-item" data-cc="CU"><input type="checkbox" class="cfwaf-country-check" value="CU">< div><div class="cfwaf-zone-name">Cuba</div><div class="cfwaf-zone-plan">CU</div></div></div>633 <div class="cfwaf-zone-item" data-cc="CY"><input type="checkbox" class="cfwaf-country-check" value="CY">< div><div class="cfwaf-zone-name">Cyprus</div><div class="cfwaf-zone-plan">CY</div></div></div>634 <div class="cfwaf-zone-item" data-cc="CZ"><input type="checkbox" class="cfwaf-country-check" value="CZ">< div><div class="cfwaf-zone-name">Czech Republic</div><div class="cfwaf-zone-plan">CZ</div></div></div>635 <div class="cfwaf-zone-item" data-cc="DK"><input type="checkbox" class="cfwaf-country-check" value="DK">< div><div class="cfwaf-zone-name">Denmark</div><div class="cfwaf-zone-plan">DK</div></div></div>636 <div class="cfwaf-zone-item" data-cc="DJ"><input type="checkbox" class="cfwaf-country-check" value="DJ">< div><div class="cfwaf-zone-name">Djibouti</div><div class="cfwaf-zone-plan">DJ</div></div></div>637 <div class="cfwaf-zone-item" data-cc="DM"><input type="checkbox" class="cfwaf-country-check" value="DM">< div><div class="cfwaf-zone-name">Dominica</div><div class="cfwaf-zone-plan">DM</div></div></div>638 <div class="cfwaf-zone-item" data-cc="DO"><input type="checkbox" class="cfwaf-country-check" value="DO">< div><div class="cfwaf-zone-name">Dominican Republic</div><div class="cfwaf-zone-plan">DO</div></div></div>639 <div class="cfwaf-zone-item" data-cc="EC"><input type="checkbox" class="cfwaf-country-check" value="EC">< div><div class="cfwaf-zone-name">Ecuador</div><div class="cfwaf-zone-plan">EC</div></div></div>640 <div class="cfwaf-zone-item" data-cc="EG"><input type="checkbox" class="cfwaf-country-check" value="EG">< div><div class="cfwaf-zone-name">Egypt</div><div class="cfwaf-zone-plan">EG</div></div></div>641 <div class="cfwaf-zone-item" data-cc="SV"><input type="checkbox" class="cfwaf-country-check" value="SV">< div><div class="cfwaf-zone-name">El Salvador</div><div class="cfwaf-zone-plan">SV</div></div></div>642 <div class="cfwaf-zone-item" data-cc="GQ"><input type="checkbox" class="cfwaf-country-check" value="GQ">< div><div class="cfwaf-zone-name">Equatorial Guinea</div><div class="cfwaf-zone-plan">GQ</div></div></div>643 <div class="cfwaf-zone-item" data-cc="ER"><input type="checkbox" class="cfwaf-country-check" value="ER">< div><div class="cfwaf-zone-name">Eritrea</div><div class="cfwaf-zone-plan">ER</div></div></div>644 <div class="cfwaf-zone-item" data-cc="EE"><input type="checkbox" class="cfwaf-country-check" value="EE">< div><div class="cfwaf-zone-name">Estonia</div><div class="cfwaf-zone-plan">EE</div></div></div>645 <div class="cfwaf-zone-item" data-cc="SZ"><input type="checkbox" class="cfwaf-country-check" value="SZ">< div><div class="cfwaf-zone-name">Eswatini</div><div class="cfwaf-zone-plan">SZ</div></div></div>646 <div class="cfwaf-zone-item" data-cc="ET"><input type="checkbox" class="cfwaf-country-check" value="ET">< div><div class="cfwaf-zone-name">Ethiopia</div><div class="cfwaf-zone-plan">ET</div></div></div>647 <div class="cfwaf-zone-item" data-cc="FJ"><input type="checkbox" class="cfwaf-country-check" value="FJ">< div><div class="cfwaf-zone-name">Fiji</div><div class="cfwaf-zone-plan">FJ</div></div></div>648 <div class="cfwaf-zone-item" data-cc="FI"><input type="checkbox" class="cfwaf-country-check" value="FI">< div><div class="cfwaf-zone-name">Finland</div><div class="cfwaf-zone-plan">FI</div></div></div>649 <div class="cfwaf-zone-item" data-cc="FR"><input type="checkbox" class="cfwaf-country-check" value="FR">< div><div class="cfwaf-zone-name">France</div><div class="cfwaf-zone-plan">FR</div></div></div>650 <div class="cfwaf-zone-item" data-cc="GA"><input type="checkbox" class="cfwaf-country-check" value="GA">< div><div class="cfwaf-zone-name">Gabon</div><div class="cfwaf-zone-plan">GA</div></div></div>651 <div class="cfwaf-zone-item" data-cc="GM"><input type="checkbox" class="cfwaf-country-check" value="GM">< div><div class="cfwaf-zone-name">Gambia</div><div class="cfwaf-zone-plan">GM</div></div></div>652 <div class="cfwaf-zone-item" data-cc="GE"><input type="checkbox" class="cfwaf-country-check" value="GE">< div><div class="cfwaf-zone-name">Georgia</div><div class="cfwaf-zone-plan">GE</div></div></div>653 <div class="cfwaf-zone-item" data-cc="DE"><input type="checkbox" class="cfwaf-country-check" value="DE">< div><div class="cfwaf-zone-name">Germany</div><div class="cfwaf-zone-plan">DE</div></div></div>654 <div class="cfwaf-zone-item" data-cc="GH"><input type="checkbox" class="cfwaf-country-check" value="GH">< div><div class="cfwaf-zone-name">Ghana</div><div class="cfwaf-zone-plan">GH</div></div></div>655 <div class="cfwaf-zone-item" data-cc="GR"><input type="checkbox" class="cfwaf-country-check" value="GR">< div><div class="cfwaf-zone-name">Greece</div><div class="cfwaf-zone-plan">GR</div></div></div>656 <div class="cfwaf-zone-item" data-cc="GD"><input type="checkbox" class="cfwaf-country-check" value="GD">< div><div class="cfwaf-zone-name">Grenada</div><div class="cfwaf-zone-plan">GD</div></div></div>657 <div class="cfwaf-zone-item" data-cc="GT"><input type="checkbox" class="cfwaf-country-check" value="GT">< div><div class="cfwaf-zone-name">Guatemala</div><div class="cfwaf-zone-plan">GT</div></div></div>658 <div class="cfwaf-zone-item" data-cc="GN"><input type="checkbox" class="cfwaf-country-check" value="GN">< div><div class="cfwaf-zone-name">Guinea</div><div class="cfwaf-zone-plan">GN</div></div></div>659 <div class="cfwaf-zone-item" data-cc="GW"><input type="checkbox" class="cfwaf-country-check" value="GW">< div><div class="cfwaf-zone-name">Guinea-Bissau</div><div class="cfwaf-zone-plan">GW</div></div></div>660 <div class="cfwaf-zone-item" data-cc="GY"><input type="checkbox" class="cfwaf-country-check" value="GY">< div><div class="cfwaf-zone-name">Guyana</div><div class="cfwaf-zone-plan">GY</div></div></div>661 <div class="cfwaf-zone-item" data-cc="HT"><input type="checkbox" class="cfwaf-country-check" value="HT">< div><div class="cfwaf-zone-name">Haiti</div><div class="cfwaf-zone-plan">HT</div></div></div>662 <div class="cfwaf-zone-item" data-cc="HN"><input type="checkbox" class="cfwaf-country-check" value="HN">< div><div class="cfwaf-zone-name">Honduras</div><div class="cfwaf-zone-plan">HN</div></div></div>663 <div class="cfwaf-zone-item" data-cc="HK"><input type="checkbox" class="cfwaf-country-check" value="HK">< div><div class="cfwaf-zone-name">Hong Kong</div><div class="cfwaf-zone-plan">HK</div></div></div>664 <div class="cfwaf-zone-item" data-cc="HU"><input type="checkbox" class="cfwaf-country-check" value="HU">< div><div class="cfwaf-zone-name">Hungary</div><div class="cfwaf-zone-plan">HU</div></div></div>665 <div class="cfwaf-zone-item" data-cc="IS"><input type="checkbox" class="cfwaf-country-check" value="IS">< div><div class="cfwaf-zone-name">Iceland</div><div class="cfwaf-zone-plan">IS</div></div></div>666 <div class="cfwaf-zone-item" data-cc="IN"><input type="checkbox" class="cfwaf-country-check" value="IN">< div><div class="cfwaf-zone-name">India</div><div class="cfwaf-zone-plan">IN</div></div></div>667 <div class="cfwaf-zone-item" data-cc="ID"><input type="checkbox" class="cfwaf-country-check" value="ID">< div><div class="cfwaf-zone-name">Indonesia</div><div class="cfwaf-zone-plan">ID</div></div></div>668 <div class="cfwaf-zone-item" data-cc="IR"><input type="checkbox" class="cfwaf-country-check" value="IR">< div><div class="cfwaf-zone-name">Iran</div><div class="cfwaf-zone-plan">IR</div></div></div>669 <div class="cfwaf-zone-item" data-cc="IQ"><input type="checkbox" class="cfwaf-country-check" value="IQ">< div><div class="cfwaf-zone-name">Iraq</div><div class="cfwaf-zone-plan">IQ</div></div></div>670 <div class="cfwaf-zone-item" data-cc="IE"><input type="checkbox" class="cfwaf-country-check" value="IE">< div><div class="cfwaf-zone-name">Ireland</div><div class="cfwaf-zone-plan">IE</div></div></div>671 <div class="cfwaf-zone-item" data-cc="IL"><input type="checkbox" class="cfwaf-country-check" value="IL">< div><div class="cfwaf-zone-name">Israel</div><div class="cfwaf-zone-plan">IL</div></div></div>672 <div class="cfwaf-zone-item" data-cc="IT"><input type="checkbox" class="cfwaf-country-check" value="IT">< div><div class="cfwaf-zone-name">Italy</div><div class="cfwaf-zone-plan">IT</div></div></div>673 <div class="cfwaf-zone-item" data-cc="JM"><input type="checkbox" class="cfwaf-country-check" value="JM">< div><div class="cfwaf-zone-name">Jamaica</div><div class="cfwaf-zone-plan">JM</div></div></div>674 <div class="cfwaf-zone-item" data-cc="JP"><input type="checkbox" class="cfwaf-country-check" value="JP">< div><div class="cfwaf-zone-name">Japan</div><div class="cfwaf-zone-plan">JP</div></div></div>675 <div class="cfwaf-zone-item" data-cc="JO"><input type="checkbox" class="cfwaf-country-check" value="JO">< div><div class="cfwaf-zone-name">Jordan</div><div class="cfwaf-zone-plan">JO</div></div></div>676 <div class="cfwaf-zone-item" data-cc="KZ"><input type="checkbox" class="cfwaf-country-check" value="KZ">< div><div class="cfwaf-zone-name">Kazakhstan</div><div class="cfwaf-zone-plan">KZ</div></div></div>677 <div class="cfwaf-zone-item" data-cc="KE"><input type="checkbox" class="cfwaf-country-check" value="KE">< div><div class="cfwaf-zone-name">Kenya</div><div class="cfwaf-zone-plan">KE</div></div></div>678 <div class="cfwaf-zone-item" data-cc="KI"><input type="checkbox" class="cfwaf-country-check" value="KI">< div><div class="cfwaf-zone-name">Kiribati</div><div class="cfwaf-zone-plan">KI</div></div></div>679 <div class="cfwaf-zone-item" data-cc="KW"><input type="checkbox" class="cfwaf-country-check" value="KW">< div><div class="cfwaf-zone-name">Kuwait</div><div class="cfwaf-zone-plan">KW</div></div></div>680 <div class="cfwaf-zone-item" data-cc="KG"><input type="checkbox" class="cfwaf-country-check" value="KG">< div><div class="cfwaf-zone-name">Kyrgyzstan</div><div class="cfwaf-zone-plan">KG</div></div></div>681 <div class="cfwaf-zone-item" data-cc="LA"><input type="checkbox" class="cfwaf-country-check" value="LA">< div><div class="cfwaf-zone-name">Laos</div><div class="cfwaf-zone-plan">LA</div></div></div>682 <div class="cfwaf-zone-item" data-cc="LV"><input type="checkbox" class="cfwaf-country-check" value="LV">< div><div class="cfwaf-zone-name">Latvia</div><div class="cfwaf-zone-plan">LV</div></div></div>683 <div class="cfwaf-zone-item" data-cc="LB"><input type="checkbox" class="cfwaf-country-check" value="LB">< div><div class="cfwaf-zone-name">Lebanon</div><div class="cfwaf-zone-plan">LB</div></div></div>684 <div class="cfwaf-zone-item" data-cc="LS"><input type="checkbox" class="cfwaf-country-check" value="LS">< div><div class="cfwaf-zone-name">Lesotho</div><div class="cfwaf-zone-plan">LS</div></div></div>685 <div class="cfwaf-zone-item" data-cc="LR"><input type="checkbox" class="cfwaf-country-check" value="LR">< div><div class="cfwaf-zone-name">Liberia</div><div class="cfwaf-zone-plan">LR</div></div></div>686 <div class="cfwaf-zone-item" data-cc="LY"><input type="checkbox" class="cfwaf-country-check" value="LY">< div><div class="cfwaf-zone-name">Libya</div><div class="cfwaf-zone-plan">LY</div></div></div>687 <div class="cfwaf-zone-item" data-cc="LI"><input type="checkbox" class="cfwaf-country-check" value="LI">< div><div class="cfwaf-zone-name">Liechtenstein</div><div class="cfwaf-zone-plan">LI</div></div></div>688 <div class="cfwaf-zone-item" data-cc="LT"><input type="checkbox" class="cfwaf-country-check" value="LT">< div><div class="cfwaf-zone-name">Lithuania</div><div class="cfwaf-zone-plan">LT</div></div></div>689 <div class="cfwaf-zone-item" data-cc="LU"><input type="checkbox" class="cfwaf-country-check" value="LU">< div><div class="cfwaf-zone-name">Luxembourg</div><div class="cfwaf-zone-plan">LU</div></div></div>690 <div class="cfwaf-zone-item" data-cc="MG"><input type="checkbox" class="cfwaf-country-check" value="MG">< div><div class="cfwaf-zone-name">Madagascar</div><div class="cfwaf-zone-plan">MG</div></div></div>691 <div class="cfwaf-zone-item" data-cc="MW"><input type="checkbox" class="cfwaf-country-check" value="MW">< div><div class="cfwaf-zone-name">Malawi</div><div class="cfwaf-zone-plan">MW</div></div></div>692 <div class="cfwaf-zone-item" data-cc="MY"><input type="checkbox" class="cfwaf-country-check" value="MY">< div><div class="cfwaf-zone-name">Malaysia</div><div class="cfwaf-zone-plan">MY</div></div></div>693 <div class="cfwaf-zone-item" data-cc="MV"><input type="checkbox" class="cfwaf-country-check" value="MV">< div><div class="cfwaf-zone-name">Maldives</div><div class="cfwaf-zone-plan">MV</div></div></div>694 <div class="cfwaf-zone-item" data-cc="ML"><input type="checkbox" class="cfwaf-country-check" value="ML">< div><div class="cfwaf-zone-name">Mali</div><div class="cfwaf-zone-plan">ML</div></div></div>695 <div class="cfwaf-zone-item" data-cc="MT"><input type="checkbox" class="cfwaf-country-check" value="MT">< div><div class="cfwaf-zone-name">Malta</div><div class="cfwaf-zone-plan">MT</div></div></div>696 <div class="cfwaf-zone-item" data-cc="MH"><input type="checkbox" class="cfwaf-country-check" value="MH">< div><div class="cfwaf-zone-name">Marshall Islands</div><div class="cfwaf-zone-plan">MH</div></div></div>697 <div class="cfwaf-zone-item" data-cc="MR"><input type="checkbox" class="cfwaf-country-check" value="MR">< div><div class="cfwaf-zone-name">Mauritania</div><div class="cfwaf-zone-plan">MR</div></div></div>698 <div class="cfwaf-zone-item" data-cc="MU"><input type="checkbox" class="cfwaf-country-check" value="MU">< div><div class="cfwaf-zone-name">Mauritius</div><div class="cfwaf-zone-plan">MU</div></div></div>699 <div class="cfwaf-zone-item" data-cc="MX"><input type="checkbox" class="cfwaf-country-check" value="MX">< div><div class="cfwaf-zone-name">Mexico</div><div class="cfwaf-zone-plan">MX</div></div></div>700 <div class="cfwaf-zone-item" data-cc="FM"><input type="checkbox" class="cfwaf-country-check" value="FM">< div><div class="cfwaf-zone-name">Micronesia</div><div class="cfwaf-zone-plan">FM</div></div></div>701 <div class="cfwaf-zone-item" data-cc="MD"><input type="checkbox" class="cfwaf-country-check" value="MD">< div><div class="cfwaf-zone-name">Moldova</div><div class="cfwaf-zone-plan">MD</div></div></div>702 <div class="cfwaf-zone-item" data-cc="MC"><input type="checkbox" class="cfwaf-country-check" value="MC">< div><div class="cfwaf-zone-name">Monaco</div><div class="cfwaf-zone-plan">MC</div></div></div>703 <div class="cfwaf-zone-item" data-cc="MN"><input type="checkbox" class="cfwaf-country-check" value="MN">< div><div class="cfwaf-zone-name">Mongolia</div><div class="cfwaf-zone-plan">MN</div></div></div>704 <div class="cfwaf-zone-item" data-cc="ME"><input type="checkbox" class="cfwaf-country-check" value="ME">< div><div class="cfwaf-zone-name">Montenegro</div><div class="cfwaf-zone-plan">ME</div></div></div>705 <div class="cfwaf-zone-item" data-cc="MA"><input type="checkbox" class="cfwaf-country-check" value="MA">< div><div class="cfwaf-zone-name">Morocco</div><div class="cfwaf-zone-plan">MA</div></div></div>706 <div class="cfwaf-zone-item" data-cc="MZ"><input type="checkbox" class="cfwaf-country-check" value="MZ">< div><div class="cfwaf-zone-name">Mozambique</div><div class="cfwaf-zone-plan">MZ</div></div></div>707 <div class="cfwaf-zone-item" data-cc="MM"><input type="checkbox" class="cfwaf-country-check" value="MM">< div><div class="cfwaf-zone-name">Myanmar</div><div class="cfwaf-zone-plan">MM</div></div></div>708 <div class="cfwaf-zone-item" data-cc="NA"><input type="checkbox" class="cfwaf-country-check" value="NA">< div><div class="cfwaf-zone-name">Namibia</div><div class="cfwaf-zone-plan">NA</div></div></div>709 <div class="cfwaf-zone-item" data-cc="NR"><input type="checkbox" class="cfwaf-country-check" value="NR">< div><div class="cfwaf-zone-name">Nauru</div><div class="cfwaf-zone-plan">NR</div></div></div>710 <div class="cfwaf-zone-item" data-cc="NP"><input type="checkbox" class="cfwaf-country-check" value="NP">< div><div class="cfwaf-zone-name">Nepal</div><div class="cfwaf-zone-plan">NP</div></div></div>711 <div class="cfwaf-zone-item" data-cc="NL"><input type="checkbox" class="cfwaf-country-check" value="NL">< div><div class="cfwaf-zone-name">Netherlands</div><div class="cfwaf-zone-plan">NL</div></div></div>712 <div class="cfwaf-zone-item" data-cc="NZ"><input type="checkbox" class="cfwaf-country-check" value="NZ">< div><div class="cfwaf-zone-name">New Zealand</div><div class="cfwaf-zone-plan">NZ</div></div></div>713 <div class="cfwaf-zone-item" data-cc="NI"><input type="checkbox" class="cfwaf-country-check" value="NI">< div><div class="cfwaf-zone-name">Nicaragua</div><div class="cfwaf-zone-plan">NI</div></div></div>714 <div class="cfwaf-zone-item" data-cc="NE"><input type="checkbox" class="cfwaf-country-check" value="NE">< div><div class="cfwaf-zone-name">Niger</div><div class="cfwaf-zone-plan">NE</div></div></div>715 <div class="cfwaf-zone-item" data-cc="NG"><input type="checkbox" class="cfwaf-country-check" value="NG">< div><div class="cfwaf-zone-name">Nigeria</div><div class="cfwaf-zone-plan">NG</div></div></div>716 <div class="cfwaf-zone-item" data-cc="KP"><input type="checkbox" class="cfwaf-country-check" value="KP">< div><div class="cfwaf-zone-name">North Korea</div><div class="cfwaf-zone-plan">KP</div></div></div>717 <div class="cfwaf-zone-item" data-cc="MK"><input type="checkbox" class="cfwaf-country-check" value="MK">< div><div class="cfwaf-zone-name">North Macedonia</div><div class="cfwaf-zone-plan">MK</div></div></div>718 <div class="cfwaf-zone-item" data-cc="NO"><input type="checkbox" class="cfwaf-country-check" value="NO">< div><div class="cfwaf-zone-name">Norway</div><div class="cfwaf-zone-plan">NO</div></div></div>719 <div class="cfwaf-zone-item" data-cc="OM"><input type="checkbox" class="cfwaf-country-check" value="OM">< div><div class="cfwaf-zone-name">Oman</div><div class="cfwaf-zone-plan">OM</div></div></div>720 <div class="cfwaf-zone-item" data-cc="PK"><input type="checkbox" class="cfwaf-country-check" value="PK">< div><div class="cfwaf-zone-name">Pakistan</div><div class="cfwaf-zone-plan">PK</div></div></div>721 <div class="cfwaf-zone-item" data-cc="PW"><input type="checkbox" class="cfwaf-country-check" value="PW">< div><div class="cfwaf-zone-name">Palau</div><div class="cfwaf-zone-plan">PW</div></div></div>722 <div class="cfwaf-zone-item" data-cc="PS"><input type="checkbox" class="cfwaf-country-check" value="PS">< div><div class="cfwaf-zone-name">Palestine</div><div class="cfwaf-zone-plan">PS</div></div></div>723 <div class="cfwaf-zone-item" data-cc="PA"><input type="checkbox" class="cfwaf-country-check" value="PA">< div><div class="cfwaf-zone-name">Panama</div><div class="cfwaf-zone-plan">PA</div></div></div>724 <div class="cfwaf-zone-item" data-cc="PG"><input type="checkbox" class="cfwaf-country-check" value="PG">< div><div class="cfwaf-zone-name">Papua New Guinea</div><div class="cfwaf-zone-plan">PG</div></div></div>725 <div class="cfwaf-zone-item" data-cc="PY"><input type="checkbox" class="cfwaf-country-check" value="PY">< div><div class="cfwaf-zone-name">Paraguay</div><div class="cfwaf-zone-plan">PY</div></div></div>726 <div class="cfwaf-zone-item" data-cc="PE"><input type="checkbox" class="cfwaf-country-check" value="PE">< div><div class="cfwaf-zone-name">Peru</div><div class="cfwaf-zone-plan">PE</div></div></div>727 <div class="cfwaf-zone-item" data-cc="PH"><input type="checkbox" class="cfwaf-country-check" value="PH">< div><div class="cfwaf-zone-name">Philippines</div><div class="cfwaf-zone-plan">PH</div></div></div>728 <div class="cfwaf-zone-item" data-cc="PL"><input type="checkbox" class="cfwaf-country-check" value="PL">< div><div class="cfwaf-zone-name">Poland</div><div class="cfwaf-zone-plan">PL</div></div></div>729 <div class="cfwaf-zone-item" data-cc="PT"><input type="checkbox" class="cfwaf-country-check" value="PT">< div><div class="cfwaf-zone-name">Portugal</div><div class="cfwaf-zone-plan">PT</div></div></div>730 <div class="cfwaf-zone-item" data-cc="QA"><input type="checkbox" class="cfwaf-country-check" value="QA">< div><div class="cfwaf-zone-name">Qatar</div><div class="cfwaf-zone-plan">QA</div></div></div>731 <div class="cfwaf-zone-item" data-cc="RO"><input type="checkbox" class="cfwaf-country-check" value="RO">< div><div class="cfwaf-zone-name">Romania</div><div class="cfwaf-zone-plan">RO</div></div></div>732 <div class="cfwaf-zone-item" data-cc="RU"><input type="checkbox" class="cfwaf-country-check" value="RU">< div><div class="cfwaf-zone-name">Russia</div><div class="cfwaf-zone-plan">RU</div></div></div>733 <div class="cfwaf-zone-item" data-cc="RW"><input type="checkbox" class="cfwaf-country-check" value="RW">< div><div class="cfwaf-zone-name">Rwanda</div><div class="cfwaf-zone-plan">RW</div></div></div>734 <div class="cfwaf-zone-item" data-cc="KN"><input type="checkbox" class="cfwaf-country-check" value="KN">< div><div class="cfwaf-zone-name">Saint Kitts & Nevis</div><div class="cfwaf-zone-plan">KN</div></div></div>735 <div class="cfwaf-zone-item" data-cc="LC"><input type="checkbox" class="cfwaf-country-check" value="LC">< div><div class="cfwaf-zone-name">Saint Lucia</div><div class="cfwaf-zone-plan">LC</div></div></div>736 <div class="cfwaf-zone-item" data-cc="VC"><input type="checkbox" class="cfwaf-country-check" value="VC">< div><div class="cfwaf-zone-name">Saint Vincent</div><div class="cfwaf-zone-plan">VC</div></div></div>737 <div class="cfwaf-zone-item" data-cc="WS"><input type="checkbox" class="cfwaf-country-check" value="WS">< div><div class="cfwaf-zone-name">Samoa</div><div class="cfwaf-zone-plan">WS</div></div></div>738 <div class="cfwaf-zone-item" data-cc="SM"><input type="checkbox" class="cfwaf-country-check" value="SM">< div><div class="cfwaf-zone-name">San Marino</div><div class="cfwaf-zone-plan">SM</div></div></div>739 <div class="cfwaf-zone-item" data-cc="ST"><input type="checkbox" class="cfwaf-country-check" value="ST">< div><div class="cfwaf-zone-name">Sao Tome & Principe</div><div class="cfwaf-zone-plan">ST</div></div></div>740 <div class="cfwaf-zone-item" data-cc="SA"><input type="checkbox" class="cfwaf-country-check" value="SA">< div><div class="cfwaf-zone-name">Saudi Arabia</div><div class="cfwaf-zone-plan">SA</div></div></div>741 <div class="cfwaf-zone-item" data-cc="SN"><input type="checkbox" class="cfwaf-country-check" value="SN">< div><div class="cfwaf-zone-name">Senegal</div><div class="cfwaf-zone-plan">SN</div></div></div>742 <div class="cfwaf-zone-item" data-cc="RS"><input type="checkbox" class="cfwaf-country-check" value="RS">< div><div class="cfwaf-zone-name">Serbia</div><div class="cfwaf-zone-plan">RS</div></div></div>743 <div class="cfwaf-zone-item" data-cc="SC"><input type="checkbox" class="cfwaf-country-check" value="SC">< div><div class="cfwaf-zone-name">Seychelles</div><div class="cfwaf-zone-plan">SC</div></div></div>744 <div class="cfwaf-zone-item" data-cc="SL"><input type="checkbox" class="cfwaf-country-check" value="SL">< div><div class="cfwaf-zone-name">Sierra Leone</div><div class="cfwaf-zone-plan">SL</div></div></div>745 <div class="cfwaf-zone-item" data-cc="SG"><input type="checkbox" class="cfwaf-country-check" value="SG">< div><div class="cfwaf-zone-name">Singapore</div><div class="cfwaf-zone-plan">SG</div></div></div>746 <div class="cfwaf-zone-item" data-cc="SK"><input type="checkbox" class="cfwaf-country-check" value="SK">< div><div class="cfwaf-zone-name">Slovakia</div><div class="cfwaf-zone-plan">SK</div></div></div>747 <div class="cfwaf-zone-item" data-cc="SI"><input type="checkbox" class="cfwaf-country-check" value="SI">< div><div class="cfwaf-zone-name">Slovenia</div><div class="cfwaf-zone-plan">SI</div></div></div>748 <div class="cfwaf-zone-item" data-cc="SB"><input type="checkbox" class="cfwaf-country-check" value="SB">< div><div class="cfwaf-zone-name">Solomon Islands</div><div class="cfwaf-zone-plan">SB</div></div></div>749 <div class="cfwaf-zone-item" data-cc="SO"><input type="checkbox" class="cfwaf-country-check" value="SO">< div><div class="cfwaf-zone-name">Somalia</div><div class="cfwaf-zone-plan">SO</div></div></div>750 <div class="cfwaf-zone-item" data-cc="ZA"><input type="checkbox" class="cfwaf-country-check" value="ZA">< div><div class="cfwaf-zone-name">South Africa</div><div class="cfwaf-zone-plan">ZA</div></div></div>751 <div class="cfwaf-zone-item" data-cc="KR"><input type="checkbox" class="cfwaf-country-check" value="KR">< div><div class="cfwaf-zone-name">South Korea</div><div class="cfwaf-zone-plan">KR</div></div></div>752 <div class="cfwaf-zone-item" data-cc="SS"><input type="checkbox" class="cfwaf-country-check" value="SS">< div><div class="cfwaf-zone-name">South Sudan</div><div class="cfwaf-zone-plan">SS</div></div></div>753 <div class="cfwaf-zone-item" data-cc="ES"><input type="checkbox" class="cfwaf-country-check" value="ES">< div><div class="cfwaf-zone-name">Spain</div><div class="cfwaf-zone-plan">ES</div></div></div>754 <div class="cfwaf-zone-item" data-cc="LK"><input type="checkbox" class="cfwaf-country-check" value="LK">< div><div class="cfwaf-zone-name">Sri Lanka</div><div class="cfwaf-zone-plan">LK</div></div></div>755 <div class="cfwaf-zone-item" data-cc="SD"><input type="checkbox" class="cfwaf-country-check" value="SD">< div><div class="cfwaf-zone-name">Sudan</div><div class="cfwaf-zone-plan">SD</div></div></div>756 <div class="cfwaf-zone-item" data-cc="SR"><input type="checkbox" class="cfwaf-country-check" value="SR">< div><div class="cfwaf-zone-name">Suriname</div><div class="cfwaf-zone-plan">SR</div></div></div>757 <div class="cfwaf-zone-item" data-cc="SE"><input type="checkbox" class="cfwaf-country-check" value="SE">< div><div class="cfwaf-zone-name">Sweden</div><div class="cfwaf-zone-plan">SE</div></div></div>758 <div class="cfwaf-zone-item" data-cc="CH"><input type="checkbox" class="cfwaf-country-check" value="CH">< div><div class="cfwaf-zone-name">Switzerland</div><div class="cfwaf-zone-plan">CH</div></div></div>759 <div class="cfwaf-zone-item" data-cc="SY"><input type="checkbox" class="cfwaf-country-check" value="SY">< div><div class="cfwaf-zone-name">Syria</div><div class="cfwaf-zone-plan">SY</div></div></div>760 <div class="cfwaf-zone-item" data-cc="TW"><input type="checkbox" class="cfwaf-country-check" value="TW">< div><div class="cfwaf-zone-name">Taiwan</div><div class="cfwaf-zone-plan">TW</div></div></div>761 <div class="cfwaf-zone-item" data-cc="TJ"><input type="checkbox" class="cfwaf-country-check" value="TJ">< div><div class="cfwaf-zone-name">Tajikistan</div><div class="cfwaf-zone-plan">TJ</div></div></div>762 <div class="cfwaf-zone-item" data-cc="TZ"><input type="checkbox" class="cfwaf-country-check" value="TZ">< div><div class="cfwaf-zone-name">Tanzania</div><div class="cfwaf-zone-plan">TZ</div></div></div>763 <div class="cfwaf-zone-item" data-cc="TH"><input type="checkbox" class="cfwaf-country-check" value="TH">< div><div class="cfwaf-zone-name">Thailand</div><div class="cfwaf-zone-plan">TH</div></div></div>764 <div class="cfwaf-zone-item" data-cc="TL"><input type="checkbox" class="cfwaf-country-check" value="TL">< div><div class="cfwaf-zone-name">Timor-Leste</div><div class="cfwaf-zone-plan">TL</div></div></div>765 <div class="cfwaf-zone-item" data-cc="TG"><input type="checkbox" class="cfwaf-country-check" value="TG">< div><div class="cfwaf-zone-name">Togo</div><div class="cfwaf-zone-plan">TG</div></div></div>766 <div class="cfwaf-zone-item" data-cc="TO"><input type="checkbox" class="cfwaf-country-check" value="TO">< div><div class="cfwaf-zone-name">Tonga</div><div class="cfwaf-zone-plan">TO</div></div></div>767 <div class="cfwaf-zone-item" data-cc="TT"><input type="checkbox" class="cfwaf-country-check" value="TT">< div><div class="cfwaf-zone-name">Trinidad & Tobago</div><div class="cfwaf-zone-plan">TT</div></div></div>768 <div class="cfwaf-zone-item" data-cc="TN"><input type="checkbox" class="cfwaf-country-check" value="TN">< div><div class="cfwaf-zone-name">Tunisia</div><div class="cfwaf-zone-plan">TN</div></div></div>769 <div class="cfwaf-zone-item" data-cc="TR"><input type="checkbox" class="cfwaf-country-check" value="TR">< div><div class="cfwaf-zone-name">Turkey</div><div class="cfwaf-zone-plan">TR</div></div></div>770 <div class="cfwaf-zone-item" data-cc="TM"><input type="checkbox" class="cfwaf-country-check" value="TM">< div><div class="cfwaf-zone-name">Turkmenistan</div><div class="cfwaf-zone-plan">TM</div></div></div>771 <div class="cfwaf-zone-item" data-cc="TV"><input type="checkbox" class="cfwaf-country-check" value="TV">< div><div class="cfwaf-zone-name">Tuvalu</div><div class="cfwaf-zone-plan">TV</div></div></div>772 <div class="cfwaf-zone-item" data-cc="UG"><input type="checkbox" class="cfwaf-country-check" value="UG">< div><div class="cfwaf-zone-name">Uganda</div><div class="cfwaf-zone-plan">UG</div></div></div>773 <div class="cfwaf-zone-item" data-cc="UA"><input type="checkbox" class="cfwaf-country-check" value="UA">< div><div class="cfwaf-zone-name">Ukraine</div><div class="cfwaf-zone-plan">UA</div></div></div>774 <div class="cfwaf-zone-item" data-cc="AE"><input type="checkbox" class="cfwaf-country-check" value="AE">< div><div class="cfwaf-zone-name">United Arab Emirates</div><div class="cfwaf-zone-plan">AE</div></div></div>775 <div class="cfwaf-zone-item" data-cc="GB"><input type="checkbox" class="cfwaf-country-check" value="GB">< div><div class="cfwaf-zone-name">United Kingdom</div><div class="cfwaf-zone-plan">GB</div></div></div>776 <div class="cfwaf-zone-item" data-cc="US"><input type="checkbox" class="cfwaf-country-check" value="US">< div><div class="cfwaf-zone-name">United States</div><div class="cfwaf-zone-plan">US</div></div></div>777 <div class="cfwaf-zone-item" data-cc="UY"><input type="checkbox" class="cfwaf-country-check" value="UY">< div><div class="cfwaf-zone-name">Uruguay</div><div class="cfwaf-zone-plan">UY</div></div></div>778 <div class="cfwaf-zone-item" data-cc="UZ"><input type="checkbox" class="cfwaf-country-check" value="UZ">< div><div class="cfwaf-zone-name">Uzbekistan</div><div class="cfwaf-zone-plan">UZ</div></div></div>779 <div class="cfwaf-zone-item" data-cc="VU"><input type="checkbox" class="cfwaf-country-check" value="VU">< div><div class="cfwaf-zone-name">Vanuatu</div><div class="cfwaf-zone-plan">VU</div></div></div>780 <div class="cfwaf-zone-item" data-cc="VE"><input type="checkbox" class="cfwaf-country-check" value="VE">< div><div class="cfwaf-zone-name">Venezuela</div><div class="cfwaf-zone-plan">VE</div></div></div>781 <div class="cfwaf-zone-item" data-cc="VN"><input type="checkbox" class="cfwaf-country-check" value="VN">< div><div class="cfwaf-zone-name">Vietnam</div><div class="cfwaf-zone-plan">VN</div></div></div>782 <div class="cfwaf-zone-item" data-cc="YE"><input type="checkbox" class="cfwaf-country-check" value="YE">< div><div class="cfwaf-zone-name">Yemen</div><div class="cfwaf-zone-plan">YE</div></div></div>783 <div class="cfwaf-zone-item" data-cc="ZM"><input type="checkbox" class="cfwaf-country-check" value="ZM">< div><div class="cfwaf-zone-name">Zambia</div><div class="cfwaf-zone-plan">ZM</div></div></div>784 <div class="cfwaf-zone-item" data-cc="ZW"><input type="checkbox" class="cfwaf-country-check" value="ZW">< div><div class="cfwaf-zone-name">Zimbabwe</div><div class="cfwaf-zone-plan">ZW</div></div></div>616 <div class="cfwaf-zone-item" data-cc="AF"><input type="checkbox" class="cfwaf-country-check" value="AF"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'af.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Afghanistan</div><div class="cfwaf-zone-plan">AF</div></div></div> 617 <div class="cfwaf-zone-item" data-cc="AL"><input type="checkbox" class="cfwaf-country-check" value="AL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'al.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Albania</div><div class="cfwaf-zone-plan">AL</div></div></div> 618 <div class="cfwaf-zone-item" data-cc="DZ"><input type="checkbox" class="cfwaf-country-check" value="DZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'dz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Algeria</div><div class="cfwaf-zone-plan">DZ</div></div></div> 619 <div class="cfwaf-zone-item" data-cc="AD"><input type="checkbox" class="cfwaf-country-check" value="AD"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ad.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Andorra</div><div class="cfwaf-zone-plan">AD</div></div></div> 620 <div class="cfwaf-zone-item" data-cc="AO"><input type="checkbox" class="cfwaf-country-check" value="AO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ao.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Angola</div><div class="cfwaf-zone-plan">AO</div></div></div> 621 <div class="cfwaf-zone-item" data-cc="AG"><input type="checkbox" class="cfwaf-country-check" value="AG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ag.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Antigua & Barbuda</div><div class="cfwaf-zone-plan">AG</div></div></div> 622 <div class="cfwaf-zone-item" data-cc="AR"><input type="checkbox" class="cfwaf-country-check" value="AR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ar.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Argentina</div><div class="cfwaf-zone-plan">AR</div></div></div> 623 <div class="cfwaf-zone-item" data-cc="AM"><input type="checkbox" class="cfwaf-country-check" value="AM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'am.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Armenia</div><div class="cfwaf-zone-plan">AM</div></div></div> 624 <div class="cfwaf-zone-item" data-cc="AU"><input type="checkbox" class="cfwaf-country-check" value="AU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'au.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Australia</div><div class="cfwaf-zone-plan">AU</div></div></div> 625 <div class="cfwaf-zone-item" data-cc="AT"><input type="checkbox" class="cfwaf-country-check" value="AT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'at.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Austria</div><div class="cfwaf-zone-plan">AT</div></div></div> 626 <div class="cfwaf-zone-item" data-cc="AZ"><input type="checkbox" class="cfwaf-country-check" value="AZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'az.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Azerbaijan</div><div class="cfwaf-zone-plan">AZ</div></div></div> 627 <div class="cfwaf-zone-item" data-cc="BS"><input type="checkbox" class="cfwaf-country-check" value="BS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bs.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bahamas</div><div class="cfwaf-zone-plan">BS</div></div></div> 628 <div class="cfwaf-zone-item" data-cc="BH"><input type="checkbox" class="cfwaf-country-check" value="BH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bh.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bahrain</div><div class="cfwaf-zone-plan">BH</div></div></div> 629 <div class="cfwaf-zone-item" data-cc="BD"><input type="checkbox" class="cfwaf-country-check" value="BD"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bd.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bangladesh</div><div class="cfwaf-zone-plan">BD</div></div></div> 630 <div class="cfwaf-zone-item" data-cc="BB"><input type="checkbox" class="cfwaf-country-check" value="BB"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bb.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Barbados</div><div class="cfwaf-zone-plan">BB</div></div></div> 631 <div class="cfwaf-zone-item" data-cc="BY"><input type="checkbox" class="cfwaf-country-check" value="BY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'by.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Belarus</div><div class="cfwaf-zone-plan">BY</div></div></div> 632 <div class="cfwaf-zone-item" data-cc="BE"><input type="checkbox" class="cfwaf-country-check" value="BE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'be.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Belgium</div><div class="cfwaf-zone-plan">BE</div></div></div> 633 <div class="cfwaf-zone-item" data-cc="BZ"><input type="checkbox" class="cfwaf-country-check" value="BZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Belize</div><div class="cfwaf-zone-plan">BZ</div></div></div> 634 <div class="cfwaf-zone-item" data-cc="BJ"><input type="checkbox" class="cfwaf-country-check" value="BJ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bj.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Benin</div><div class="cfwaf-zone-plan">BJ</div></div></div> 635 <div class="cfwaf-zone-item" data-cc="BT"><input type="checkbox" class="cfwaf-country-check" value="BT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bt.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bhutan</div><div class="cfwaf-zone-plan">BT</div></div></div> 636 <div class="cfwaf-zone-item" data-cc="BO"><input type="checkbox" class="cfwaf-country-check" value="BO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bo.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bolivia</div><div class="cfwaf-zone-plan">BO</div></div></div> 637 <div class="cfwaf-zone-item" data-cc="BA"><input type="checkbox" class="cfwaf-country-check" value="BA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ba.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bosnia & Herzegovina</div><div class="cfwaf-zone-plan">BA</div></div></div> 638 <div class="cfwaf-zone-item" data-cc="BW"><input type="checkbox" class="cfwaf-country-check" value="BW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Botswana</div><div class="cfwaf-zone-plan">BW</div></div></div> 639 <div class="cfwaf-zone-item" data-cc="BR"><input type="checkbox" class="cfwaf-country-check" value="BR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'br.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Brazil</div><div class="cfwaf-zone-plan">BR</div></div></div> 640 <div class="cfwaf-zone-item" data-cc="BN"><input type="checkbox" class="cfwaf-country-check" value="BN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Brunei</div><div class="cfwaf-zone-plan">BN</div></div></div> 641 <div class="cfwaf-zone-item" data-cc="BG"><input type="checkbox" class="cfwaf-country-check" value="BG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Bulgaria</div><div class="cfwaf-zone-plan">BG</div></div></div> 642 <div class="cfwaf-zone-item" data-cc="BF"><input type="checkbox" class="cfwaf-country-check" value="BF"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bf.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Burkina Faso</div><div class="cfwaf-zone-plan">BF</div></div></div> 643 <div class="cfwaf-zone-item" data-cc="BI"><input type="checkbox" class="cfwaf-country-check" value="BI"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'bi.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Burundi</div><div class="cfwaf-zone-plan">BI</div></div></div> 644 <div class="cfwaf-zone-item" data-cc="CV"><input type="checkbox" class="cfwaf-country-check" value="CV"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cv.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Cabo Verde</div><div class="cfwaf-zone-plan">CV</div></div></div> 645 <div class="cfwaf-zone-item" data-cc="KH"><input type="checkbox" class="cfwaf-country-check" value="KH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kh.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Cambodia</div><div class="cfwaf-zone-plan">KH</div></div></div> 646 <div class="cfwaf-zone-item" data-cc="CM"><input type="checkbox" class="cfwaf-country-check" value="CM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Cameroon</div><div class="cfwaf-zone-plan">CM</div></div></div> 647 <div class="cfwaf-zone-item" data-cc="CA"><input type="checkbox" class="cfwaf-country-check" value="CA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ca.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Canada</div><div class="cfwaf-zone-plan">CA</div></div></div> 648 <div class="cfwaf-zone-item" data-cc="CF"><input type="checkbox" class="cfwaf-country-check" value="CF"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cf.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Central African Rep.</div><div class="cfwaf-zone-plan">CF</div></div></div> 649 <div class="cfwaf-zone-item" data-cc="TD"><input type="checkbox" class="cfwaf-country-check" value="TD"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'td.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Chad</div><div class="cfwaf-zone-plan">TD</div></div></div> 650 <div class="cfwaf-zone-item" data-cc="CL"><input type="checkbox" class="cfwaf-country-check" value="CL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cl.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Chile</div><div class="cfwaf-zone-plan">CL</div></div></div> 651 <div class="cfwaf-zone-item" data-cc="CN"><input type="checkbox" class="cfwaf-country-check" value="CN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">China</div><div class="cfwaf-zone-plan">CN</div></div></div> 652 <div class="cfwaf-zone-item" data-cc="CO"><input type="checkbox" class="cfwaf-country-check" value="CO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'co.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Colombia</div><div class="cfwaf-zone-plan">CO</div></div></div> 653 <div class="cfwaf-zone-item" data-cc="KM"><input type="checkbox" class="cfwaf-country-check" value="KM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'km.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Comoros</div><div class="cfwaf-zone-plan">KM</div></div></div> 654 <div class="cfwaf-zone-item" data-cc="CG"><input type="checkbox" class="cfwaf-country-check" value="CG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Congo</div><div class="cfwaf-zone-plan">CG</div></div></div> 655 <div class="cfwaf-zone-item" data-cc="CR"><input type="checkbox" class="cfwaf-country-check" value="CR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Costa Rica</div><div class="cfwaf-zone-plan">CR</div></div></div> 656 <div class="cfwaf-zone-item" data-cc="HR"><input type="checkbox" class="cfwaf-country-check" value="HR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'hr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Croatia</div><div class="cfwaf-zone-plan">HR</div></div></div> 657 <div class="cfwaf-zone-item" data-cc="CU"><input type="checkbox" class="cfwaf-country-check" value="CU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cu.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Cuba</div><div class="cfwaf-zone-plan">CU</div></div></div> 658 <div class="cfwaf-zone-item" data-cc="CY"><input type="checkbox" class="cfwaf-country-check" value="CY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cy.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Cyprus</div><div class="cfwaf-zone-plan">CY</div></div></div> 659 <div class="cfwaf-zone-item" data-cc="CZ"><input type="checkbox" class="cfwaf-country-check" value="CZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'cz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Czech Republic</div><div class="cfwaf-zone-plan">CZ</div></div></div> 660 <div class="cfwaf-zone-item" data-cc="DK"><input type="checkbox" class="cfwaf-country-check" value="DK"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'dk.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Denmark</div><div class="cfwaf-zone-plan">DK</div></div></div> 661 <div class="cfwaf-zone-item" data-cc="DJ"><input type="checkbox" class="cfwaf-country-check" value="DJ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'dj.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Djibouti</div><div class="cfwaf-zone-plan">DJ</div></div></div> 662 <div class="cfwaf-zone-item" data-cc="DM"><input type="checkbox" class="cfwaf-country-check" value="DM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'dm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Dominica</div><div class="cfwaf-zone-plan">DM</div></div></div> 663 <div class="cfwaf-zone-item" data-cc="DO"><input type="checkbox" class="cfwaf-country-check" value="DO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'do.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Dominican Republic</div><div class="cfwaf-zone-plan">DO</div></div></div> 664 <div class="cfwaf-zone-item" data-cc="EC"><input type="checkbox" class="cfwaf-country-check" value="EC"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ec.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Ecuador</div><div class="cfwaf-zone-plan">EC</div></div></div> 665 <div class="cfwaf-zone-item" data-cc="EG"><input type="checkbox" class="cfwaf-country-check" value="EG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'eg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Egypt</div><div class="cfwaf-zone-plan">EG</div></div></div> 666 <div class="cfwaf-zone-item" data-cc="SV"><input type="checkbox" class="cfwaf-country-check" value="SV"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sv.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">El Salvador</div><div class="cfwaf-zone-plan">SV</div></div></div> 667 <div class="cfwaf-zone-item" data-cc="GQ"><input type="checkbox" class="cfwaf-country-check" value="GQ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gq.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Equatorial Guinea</div><div class="cfwaf-zone-plan">GQ</div></div></div> 668 <div class="cfwaf-zone-item" data-cc="ER"><input type="checkbox" class="cfwaf-country-check" value="ER"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'er.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Eritrea</div><div class="cfwaf-zone-plan">ER</div></div></div> 669 <div class="cfwaf-zone-item" data-cc="EE"><input type="checkbox" class="cfwaf-country-check" value="EE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ee.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Estonia</div><div class="cfwaf-zone-plan">EE</div></div></div> 670 <div class="cfwaf-zone-item" data-cc="SZ"><input type="checkbox" class="cfwaf-country-check" value="SZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Eswatini</div><div class="cfwaf-zone-plan">SZ</div></div></div> 671 <div class="cfwaf-zone-item" data-cc="ET"><input type="checkbox" class="cfwaf-country-check" value="ET"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'et.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Ethiopia</div><div class="cfwaf-zone-plan">ET</div></div></div> 672 <div class="cfwaf-zone-item" data-cc="FJ"><input type="checkbox" class="cfwaf-country-check" value="FJ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'fj.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Fiji</div><div class="cfwaf-zone-plan">FJ</div></div></div> 673 <div class="cfwaf-zone-item" data-cc="FI"><input type="checkbox" class="cfwaf-country-check" value="FI"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'fi.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Finland</div><div class="cfwaf-zone-plan">FI</div></div></div> 674 <div class="cfwaf-zone-item" data-cc="FR"><input type="checkbox" class="cfwaf-country-check" value="FR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'fr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">France</div><div class="cfwaf-zone-plan">FR</div></div></div> 675 <div class="cfwaf-zone-item" data-cc="GA"><input type="checkbox" class="cfwaf-country-check" value="GA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ga.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Gabon</div><div class="cfwaf-zone-plan">GA</div></div></div> 676 <div class="cfwaf-zone-item" data-cc="GM"><input type="checkbox" class="cfwaf-country-check" value="GM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Gambia</div><div class="cfwaf-zone-plan">GM</div></div></div> 677 <div class="cfwaf-zone-item" data-cc="GE"><input type="checkbox" class="cfwaf-country-check" value="GE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ge.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Georgia</div><div class="cfwaf-zone-plan">GE</div></div></div> 678 <div class="cfwaf-zone-item" data-cc="DE"><input type="checkbox" class="cfwaf-country-check" value="DE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'de.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Germany</div><div class="cfwaf-zone-plan">DE</div></div></div> 679 <div class="cfwaf-zone-item" data-cc="GH"><input type="checkbox" class="cfwaf-country-check" value="GH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gh.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Ghana</div><div class="cfwaf-zone-plan">GH</div></div></div> 680 <div class="cfwaf-zone-item" data-cc="GR"><input type="checkbox" class="cfwaf-country-check" value="GR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Greece</div><div class="cfwaf-zone-plan">GR</div></div></div> 681 <div class="cfwaf-zone-item" data-cc="GD"><input type="checkbox" class="cfwaf-country-check" value="GD"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gd.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Grenada</div><div class="cfwaf-zone-plan">GD</div></div></div> 682 <div class="cfwaf-zone-item" data-cc="GT"><input type="checkbox" class="cfwaf-country-check" value="GT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gt.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Guatemala</div><div class="cfwaf-zone-plan">GT</div></div></div> 683 <div class="cfwaf-zone-item" data-cc="GN"><input type="checkbox" class="cfwaf-country-check" value="GN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Guinea</div><div class="cfwaf-zone-plan">GN</div></div></div> 684 <div class="cfwaf-zone-item" data-cc="GW"><input type="checkbox" class="cfwaf-country-check" value="GW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Guinea-Bissau</div><div class="cfwaf-zone-plan">GW</div></div></div> 685 <div class="cfwaf-zone-item" data-cc="GY"><input type="checkbox" class="cfwaf-country-check" value="GY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gy.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Guyana</div><div class="cfwaf-zone-plan">GY</div></div></div> 686 <div class="cfwaf-zone-item" data-cc="HT"><input type="checkbox" class="cfwaf-country-check" value="HT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ht.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Haiti</div><div class="cfwaf-zone-plan">HT</div></div></div> 687 <div class="cfwaf-zone-item" data-cc="HN"><input type="checkbox" class="cfwaf-country-check" value="HN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'hn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Honduras</div><div class="cfwaf-zone-plan">HN</div></div></div> 688 <div class="cfwaf-zone-item" data-cc="HK"><input type="checkbox" class="cfwaf-country-check" value="HK"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'hk.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Hong Kong</div><div class="cfwaf-zone-plan">HK</div></div></div> 689 <div class="cfwaf-zone-item" data-cc="HU"><input type="checkbox" class="cfwaf-country-check" value="HU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'hu.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Hungary</div><div class="cfwaf-zone-plan">HU</div></div></div> 690 <div class="cfwaf-zone-item" data-cc="IS"><input type="checkbox" class="cfwaf-country-check" value="IS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'is.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Iceland</div><div class="cfwaf-zone-plan">IS</div></div></div> 691 <div class="cfwaf-zone-item" data-cc="IN"><input type="checkbox" class="cfwaf-country-check" value="IN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'in.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">India</div><div class="cfwaf-zone-plan">IN</div></div></div> 692 <div class="cfwaf-zone-item" data-cc="ID"><input type="checkbox" class="cfwaf-country-check" value="ID"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'id.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Indonesia</div><div class="cfwaf-zone-plan">ID</div></div></div> 693 <div class="cfwaf-zone-item" data-cc="IR"><input type="checkbox" class="cfwaf-country-check" value="IR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ir.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Iran</div><div class="cfwaf-zone-plan">IR</div></div></div> 694 <div class="cfwaf-zone-item" data-cc="IQ"><input type="checkbox" class="cfwaf-country-check" value="IQ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'iq.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Iraq</div><div class="cfwaf-zone-plan">IQ</div></div></div> 695 <div class="cfwaf-zone-item" data-cc="IE"><input type="checkbox" class="cfwaf-country-check" value="IE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ie.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Ireland</div><div class="cfwaf-zone-plan">IE</div></div></div> 696 <div class="cfwaf-zone-item" data-cc="IL"><input type="checkbox" class="cfwaf-country-check" value="IL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'il.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Israel</div><div class="cfwaf-zone-plan">IL</div></div></div> 697 <div class="cfwaf-zone-item" data-cc="IT"><input type="checkbox" class="cfwaf-country-check" value="IT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'it.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Italy</div><div class="cfwaf-zone-plan">IT</div></div></div> 698 <div class="cfwaf-zone-item" data-cc="JM"><input type="checkbox" class="cfwaf-country-check" value="JM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'jm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Jamaica</div><div class="cfwaf-zone-plan">JM</div></div></div> 699 <div class="cfwaf-zone-item" data-cc="JP"><input type="checkbox" class="cfwaf-country-check" value="JP"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'jp.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Japan</div><div class="cfwaf-zone-plan">JP</div></div></div> 700 <div class="cfwaf-zone-item" data-cc="JO"><input type="checkbox" class="cfwaf-country-check" value="JO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'jo.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Jordan</div><div class="cfwaf-zone-plan">JO</div></div></div> 701 <div class="cfwaf-zone-item" data-cc="KZ"><input type="checkbox" class="cfwaf-country-check" value="KZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Kazakhstan</div><div class="cfwaf-zone-plan">KZ</div></div></div> 702 <div class="cfwaf-zone-item" data-cc="KE"><input type="checkbox" class="cfwaf-country-check" value="KE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ke.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Kenya</div><div class="cfwaf-zone-plan">KE</div></div></div> 703 <div class="cfwaf-zone-item" data-cc="KI"><input type="checkbox" class="cfwaf-country-check" value="KI"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ki.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Kiribati</div><div class="cfwaf-zone-plan">KI</div></div></div> 704 <div class="cfwaf-zone-item" data-cc="KW"><input type="checkbox" class="cfwaf-country-check" value="KW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Kuwait</div><div class="cfwaf-zone-plan">KW</div></div></div> 705 <div class="cfwaf-zone-item" data-cc="KG"><input type="checkbox" class="cfwaf-country-check" value="KG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Kyrgyzstan</div><div class="cfwaf-zone-plan">KG</div></div></div> 706 <div class="cfwaf-zone-item" data-cc="LA"><input type="checkbox" class="cfwaf-country-check" value="LA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'la.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Laos</div><div class="cfwaf-zone-plan">LA</div></div></div> 707 <div class="cfwaf-zone-item" data-cc="LV"><input type="checkbox" class="cfwaf-country-check" value="LV"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lv.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Latvia</div><div class="cfwaf-zone-plan">LV</div></div></div> 708 <div class="cfwaf-zone-item" data-cc="LB"><input type="checkbox" class="cfwaf-country-check" value="LB"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lb.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Lebanon</div><div class="cfwaf-zone-plan">LB</div></div></div> 709 <div class="cfwaf-zone-item" data-cc="LS"><input type="checkbox" class="cfwaf-country-check" value="LS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ls.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Lesotho</div><div class="cfwaf-zone-plan">LS</div></div></div> 710 <div class="cfwaf-zone-item" data-cc="LR"><input type="checkbox" class="cfwaf-country-check" value="LR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Liberia</div><div class="cfwaf-zone-plan">LR</div></div></div> 711 <div class="cfwaf-zone-item" data-cc="LY"><input type="checkbox" class="cfwaf-country-check" value="LY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ly.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Libya</div><div class="cfwaf-zone-plan">LY</div></div></div> 712 <div class="cfwaf-zone-item" data-cc="LI"><input type="checkbox" class="cfwaf-country-check" value="LI"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'li.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Liechtenstein</div><div class="cfwaf-zone-plan">LI</div></div></div> 713 <div class="cfwaf-zone-item" data-cc="LT"><input type="checkbox" class="cfwaf-country-check" value="LT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lt.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Lithuania</div><div class="cfwaf-zone-plan">LT</div></div></div> 714 <div class="cfwaf-zone-item" data-cc="LU"><input type="checkbox" class="cfwaf-country-check" value="LU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lu.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Luxembourg</div><div class="cfwaf-zone-plan">LU</div></div></div> 715 <div class="cfwaf-zone-item" data-cc="MG"><input type="checkbox" class="cfwaf-country-check" value="MG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Madagascar</div><div class="cfwaf-zone-plan">MG</div></div></div> 716 <div class="cfwaf-zone-item" data-cc="MW"><input type="checkbox" class="cfwaf-country-check" value="MW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Malawi</div><div class="cfwaf-zone-plan">MW</div></div></div> 717 <div class="cfwaf-zone-item" data-cc="MY"><input type="checkbox" class="cfwaf-country-check" value="MY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'my.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Malaysia</div><div class="cfwaf-zone-plan">MY</div></div></div> 718 <div class="cfwaf-zone-item" data-cc="MV"><input type="checkbox" class="cfwaf-country-check" value="MV"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mv.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Maldives</div><div class="cfwaf-zone-plan">MV</div></div></div> 719 <div class="cfwaf-zone-item" data-cc="ML"><input type="checkbox" class="cfwaf-country-check" value="ML"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ml.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Mali</div><div class="cfwaf-zone-plan">ML</div></div></div> 720 <div class="cfwaf-zone-item" data-cc="MT"><input type="checkbox" class="cfwaf-country-check" value="MT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mt.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Malta</div><div class="cfwaf-zone-plan">MT</div></div></div> 721 <div class="cfwaf-zone-item" data-cc="MH"><input type="checkbox" class="cfwaf-country-check" value="MH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mh.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Marshall Islands</div><div class="cfwaf-zone-plan">MH</div></div></div> 722 <div class="cfwaf-zone-item" data-cc="MR"><input type="checkbox" class="cfwaf-country-check" value="MR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Mauritania</div><div class="cfwaf-zone-plan">MR</div></div></div> 723 <div class="cfwaf-zone-item" data-cc="MU"><input type="checkbox" class="cfwaf-country-check" value="MU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mu.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Mauritius</div><div class="cfwaf-zone-plan">MU</div></div></div> 724 <div class="cfwaf-zone-item" data-cc="MX"><input type="checkbox" class="cfwaf-country-check" value="MX"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mx.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Mexico</div><div class="cfwaf-zone-plan">MX</div></div></div> 725 <div class="cfwaf-zone-item" data-cc="FM"><input type="checkbox" class="cfwaf-country-check" value="FM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'fm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Micronesia</div><div class="cfwaf-zone-plan">FM</div></div></div> 726 <div class="cfwaf-zone-item" data-cc="MD"><input type="checkbox" class="cfwaf-country-check" value="MD"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'md.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Moldova</div><div class="cfwaf-zone-plan">MD</div></div></div> 727 <div class="cfwaf-zone-item" data-cc="MC"><input type="checkbox" class="cfwaf-country-check" value="MC"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mc.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Monaco</div><div class="cfwaf-zone-plan">MC</div></div></div> 728 <div class="cfwaf-zone-item" data-cc="MN"><input type="checkbox" class="cfwaf-country-check" value="MN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Mongolia</div><div class="cfwaf-zone-plan">MN</div></div></div> 729 <div class="cfwaf-zone-item" data-cc="ME"><input type="checkbox" class="cfwaf-country-check" value="ME"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'me.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Montenegro</div><div class="cfwaf-zone-plan">ME</div></div></div> 730 <div class="cfwaf-zone-item" data-cc="MA"><input type="checkbox" class="cfwaf-country-check" value="MA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ma.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Morocco</div><div class="cfwaf-zone-plan">MA</div></div></div> 731 <div class="cfwaf-zone-item" data-cc="MZ"><input type="checkbox" class="cfwaf-country-check" value="MZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Mozambique</div><div class="cfwaf-zone-plan">MZ</div></div></div> 732 <div class="cfwaf-zone-item" data-cc="MM"><input type="checkbox" class="cfwaf-country-check" value="MM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Myanmar</div><div class="cfwaf-zone-plan">MM</div></div></div> 733 <div class="cfwaf-zone-item" data-cc="NA"><input type="checkbox" class="cfwaf-country-check" value="NA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'na.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Namibia</div><div class="cfwaf-zone-plan">NA</div></div></div> 734 <div class="cfwaf-zone-item" data-cc="NR"><input type="checkbox" class="cfwaf-country-check" value="NR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'nr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Nauru</div><div class="cfwaf-zone-plan">NR</div></div></div> 735 <div class="cfwaf-zone-item" data-cc="NP"><input type="checkbox" class="cfwaf-country-check" value="NP"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'np.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Nepal</div><div class="cfwaf-zone-plan">NP</div></div></div> 736 <div class="cfwaf-zone-item" data-cc="NL"><input type="checkbox" class="cfwaf-country-check" value="NL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'nl.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Netherlands</div><div class="cfwaf-zone-plan">NL</div></div></div> 737 <div class="cfwaf-zone-item" data-cc="NZ"><input type="checkbox" class="cfwaf-country-check" value="NZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'nz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">New Zealand</div><div class="cfwaf-zone-plan">NZ</div></div></div> 738 <div class="cfwaf-zone-item" data-cc="NI"><input type="checkbox" class="cfwaf-country-check" value="NI"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ni.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Nicaragua</div><div class="cfwaf-zone-plan">NI</div></div></div> 739 <div class="cfwaf-zone-item" data-cc="NE"><input type="checkbox" class="cfwaf-country-check" value="NE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ne.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Niger</div><div class="cfwaf-zone-plan">NE</div></div></div> 740 <div class="cfwaf-zone-item" data-cc="NG"><input type="checkbox" class="cfwaf-country-check" value="NG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ng.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Nigeria</div><div class="cfwaf-zone-plan">NG</div></div></div> 741 <div class="cfwaf-zone-item" data-cc="KP"><input type="checkbox" class="cfwaf-country-check" value="KP"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kp.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">North Korea</div><div class="cfwaf-zone-plan">KP</div></div></div> 742 <div class="cfwaf-zone-item" data-cc="MK"><input type="checkbox" class="cfwaf-country-check" value="MK"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'mk.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">North Macedonia</div><div class="cfwaf-zone-plan">MK</div></div></div> 743 <div class="cfwaf-zone-item" data-cc="NO"><input type="checkbox" class="cfwaf-country-check" value="NO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'no.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Norway</div><div class="cfwaf-zone-plan">NO</div></div></div> 744 <div class="cfwaf-zone-item" data-cc="OM"><input type="checkbox" class="cfwaf-country-check" value="OM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'om.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Oman</div><div class="cfwaf-zone-plan">OM</div></div></div> 745 <div class="cfwaf-zone-item" data-cc="PK"><input type="checkbox" class="cfwaf-country-check" value="PK"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pk.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Pakistan</div><div class="cfwaf-zone-plan">PK</div></div></div> 746 <div class="cfwaf-zone-item" data-cc="PW"><input type="checkbox" class="cfwaf-country-check" value="PW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Palau</div><div class="cfwaf-zone-plan">PW</div></div></div> 747 <div class="cfwaf-zone-item" data-cc="PS"><input type="checkbox" class="cfwaf-country-check" value="PS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ps.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Palestine</div><div class="cfwaf-zone-plan">PS</div></div></div> 748 <div class="cfwaf-zone-item" data-cc="PA"><input type="checkbox" class="cfwaf-country-check" value="PA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pa.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Panama</div><div class="cfwaf-zone-plan">PA</div></div></div> 749 <div class="cfwaf-zone-item" data-cc="PG"><input type="checkbox" class="cfwaf-country-check" value="PG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Papua New Guinea</div><div class="cfwaf-zone-plan">PG</div></div></div> 750 <div class="cfwaf-zone-item" data-cc="PY"><input type="checkbox" class="cfwaf-country-check" value="PY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'py.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Paraguay</div><div class="cfwaf-zone-plan">PY</div></div></div> 751 <div class="cfwaf-zone-item" data-cc="PE"><input type="checkbox" class="cfwaf-country-check" value="PE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pe.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Peru</div><div class="cfwaf-zone-plan">PE</div></div></div> 752 <div class="cfwaf-zone-item" data-cc="PH"><input type="checkbox" class="cfwaf-country-check" value="PH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ph.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Philippines</div><div class="cfwaf-zone-plan">PH</div></div></div> 753 <div class="cfwaf-zone-item" data-cc="PL"><input type="checkbox" class="cfwaf-country-check" value="PL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pl.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Poland</div><div class="cfwaf-zone-plan">PL</div></div></div> 754 <div class="cfwaf-zone-item" data-cc="PT"><input type="checkbox" class="cfwaf-country-check" value="PT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'pt.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Portugal</div><div class="cfwaf-zone-plan">PT</div></div></div> 755 <div class="cfwaf-zone-item" data-cc="QA"><input type="checkbox" class="cfwaf-country-check" value="QA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'qa.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Qatar</div><div class="cfwaf-zone-plan">QA</div></div></div> 756 <div class="cfwaf-zone-item" data-cc="RO"><input type="checkbox" class="cfwaf-country-check" value="RO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ro.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Romania</div><div class="cfwaf-zone-plan">RO</div></div></div> 757 <div class="cfwaf-zone-item" data-cc="RU"><input type="checkbox" class="cfwaf-country-check" value="RU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ru.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Russia</div><div class="cfwaf-zone-plan">RU</div></div></div> 758 <div class="cfwaf-zone-item" data-cc="RW"><input type="checkbox" class="cfwaf-country-check" value="RW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'rw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Rwanda</div><div class="cfwaf-zone-plan">RW</div></div></div> 759 <div class="cfwaf-zone-item" data-cc="KN"><input type="checkbox" class="cfwaf-country-check" value="KN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Saint Kitts & Nevis</div><div class="cfwaf-zone-plan">KN</div></div></div> 760 <div class="cfwaf-zone-item" data-cc="LC"><input type="checkbox" class="cfwaf-country-check" value="LC"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lc.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Saint Lucia</div><div class="cfwaf-zone-plan">LC</div></div></div> 761 <div class="cfwaf-zone-item" data-cc="VC"><input type="checkbox" class="cfwaf-country-check" value="VC"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'vc.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Saint Vincent</div><div class="cfwaf-zone-plan">VC</div></div></div> 762 <div class="cfwaf-zone-item" data-cc="WS"><input type="checkbox" class="cfwaf-country-check" value="WS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ws.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Samoa</div><div class="cfwaf-zone-plan">WS</div></div></div> 763 <div class="cfwaf-zone-item" data-cc="SM"><input type="checkbox" class="cfwaf-country-check" value="SM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">San Marino</div><div class="cfwaf-zone-plan">SM</div></div></div> 764 <div class="cfwaf-zone-item" data-cc="ST"><input type="checkbox" class="cfwaf-country-check" value="ST"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'st.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Sao Tome & Principe</div><div class="cfwaf-zone-plan">ST</div></div></div> 765 <div class="cfwaf-zone-item" data-cc="SA"><input type="checkbox" class="cfwaf-country-check" value="SA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sa.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Saudi Arabia</div><div class="cfwaf-zone-plan">SA</div></div></div> 766 <div class="cfwaf-zone-item" data-cc="SN"><input type="checkbox" class="cfwaf-country-check" value="SN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Senegal</div><div class="cfwaf-zone-plan">SN</div></div></div> 767 <div class="cfwaf-zone-item" data-cc="RS"><input type="checkbox" class="cfwaf-country-check" value="RS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'rs.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Serbia</div><div class="cfwaf-zone-plan">RS</div></div></div> 768 <div class="cfwaf-zone-item" data-cc="SC"><input type="checkbox" class="cfwaf-country-check" value="SC"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sc.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Seychelles</div><div class="cfwaf-zone-plan">SC</div></div></div> 769 <div class="cfwaf-zone-item" data-cc="SL"><input type="checkbox" class="cfwaf-country-check" value="SL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sl.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Sierra Leone</div><div class="cfwaf-zone-plan">SL</div></div></div> 770 <div class="cfwaf-zone-item" data-cc="SG"><input type="checkbox" class="cfwaf-country-check" value="SG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Singapore</div><div class="cfwaf-zone-plan">SG</div></div></div> 771 <div class="cfwaf-zone-item" data-cc="SK"><input type="checkbox" class="cfwaf-country-check" value="SK"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sk.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Slovakia</div><div class="cfwaf-zone-plan">SK</div></div></div> 772 <div class="cfwaf-zone-item" data-cc="SI"><input type="checkbox" class="cfwaf-country-check" value="SI"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'si.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Slovenia</div><div class="cfwaf-zone-plan">SI</div></div></div> 773 <div class="cfwaf-zone-item" data-cc="SB"><input type="checkbox" class="cfwaf-country-check" value="SB"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sb.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Solomon Islands</div><div class="cfwaf-zone-plan">SB</div></div></div> 774 <div class="cfwaf-zone-item" data-cc="SO"><input type="checkbox" class="cfwaf-country-check" value="SO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'so.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Somalia</div><div class="cfwaf-zone-plan">SO</div></div></div> 775 <div class="cfwaf-zone-item" data-cc="ZA"><input type="checkbox" class="cfwaf-country-check" value="ZA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'za.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">South Africa</div><div class="cfwaf-zone-plan">ZA</div></div></div> 776 <div class="cfwaf-zone-item" data-cc="KR"><input type="checkbox" class="cfwaf-country-check" value="KR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'kr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">South Korea</div><div class="cfwaf-zone-plan">KR</div></div></div> 777 <div class="cfwaf-zone-item" data-cc="SS"><input type="checkbox" class="cfwaf-country-check" value="SS"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ss.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">South Sudan</div><div class="cfwaf-zone-plan">SS</div></div></div> 778 <div class="cfwaf-zone-item" data-cc="ES"><input type="checkbox" class="cfwaf-country-check" value="ES"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'es.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Spain</div><div class="cfwaf-zone-plan">ES</div></div></div> 779 <div class="cfwaf-zone-item" data-cc="LK"><input type="checkbox" class="cfwaf-country-check" value="LK"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'lk.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Sri Lanka</div><div class="cfwaf-zone-plan">LK</div></div></div> 780 <div class="cfwaf-zone-item" data-cc="SD"><input type="checkbox" class="cfwaf-country-check" value="SD"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sd.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Sudan</div><div class="cfwaf-zone-plan">SD</div></div></div> 781 <div class="cfwaf-zone-item" data-cc="SR"><input type="checkbox" class="cfwaf-country-check" value="SR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Suriname</div><div class="cfwaf-zone-plan">SR</div></div></div> 782 <div class="cfwaf-zone-item" data-cc="SE"><input type="checkbox" class="cfwaf-country-check" value="SE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'se.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Sweden</div><div class="cfwaf-zone-plan">SE</div></div></div> 783 <div class="cfwaf-zone-item" data-cc="CH"><input type="checkbox" class="cfwaf-country-check" value="CH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ch.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Switzerland</div><div class="cfwaf-zone-plan">CH</div></div></div> 784 <div class="cfwaf-zone-item" data-cc="SY"><input type="checkbox" class="cfwaf-country-check" value="SY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'sy.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Syria</div><div class="cfwaf-zone-plan">SY</div></div></div> 785 <div class="cfwaf-zone-item" data-cc="TW"><input type="checkbox" class="cfwaf-country-check" value="TW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Taiwan</div><div class="cfwaf-zone-plan">TW</div></div></div> 786 <div class="cfwaf-zone-item" data-cc="TJ"><input type="checkbox" class="cfwaf-country-check" value="TJ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tj.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Tajikistan</div><div class="cfwaf-zone-plan">TJ</div></div></div> 787 <div class="cfwaf-zone-item" data-cc="TZ"><input type="checkbox" class="cfwaf-country-check" value="TZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Tanzania</div><div class="cfwaf-zone-plan">TZ</div></div></div> 788 <div class="cfwaf-zone-item" data-cc="TH"><input type="checkbox" class="cfwaf-country-check" value="TH"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'th.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Thailand</div><div class="cfwaf-zone-plan">TH</div></div></div> 789 <div class="cfwaf-zone-item" data-cc="TL"><input type="checkbox" class="cfwaf-country-check" value="TL"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tl.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Timor-Leste</div><div class="cfwaf-zone-plan">TL</div></div></div> 790 <div class="cfwaf-zone-item" data-cc="TG"><input type="checkbox" class="cfwaf-country-check" value="TG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tg.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Togo</div><div class="cfwaf-zone-plan">TG</div></div></div> 791 <div class="cfwaf-zone-item" data-cc="TO"><input type="checkbox" class="cfwaf-country-check" value="TO"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'to.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Tonga</div><div class="cfwaf-zone-plan">TO</div></div></div> 792 <div class="cfwaf-zone-item" data-cc="TT"><input type="checkbox" class="cfwaf-country-check" value="TT"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tt.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Trinidad & Tobago</div><div class="cfwaf-zone-plan">TT</div></div></div> 793 <div class="cfwaf-zone-item" data-cc="TN"><input type="checkbox" class="cfwaf-country-check" value="TN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Tunisia</div><div class="cfwaf-zone-plan">TN</div></div></div> 794 <div class="cfwaf-zone-item" data-cc="TR"><input type="checkbox" class="cfwaf-country-check" value="TR"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tr.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Turkey</div><div class="cfwaf-zone-plan">TR</div></div></div> 795 <div class="cfwaf-zone-item" data-cc="TM"><input type="checkbox" class="cfwaf-country-check" value="TM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Turkmenistan</div><div class="cfwaf-zone-plan">TM</div></div></div> 796 <div class="cfwaf-zone-item" data-cc="TV"><input type="checkbox" class="cfwaf-country-check" value="TV"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'tv.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Tuvalu</div><div class="cfwaf-zone-plan">TV</div></div></div> 797 <div class="cfwaf-zone-item" data-cc="UG"><input type="checkbox" class="cfwaf-country-check" value="UG"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ug.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Uganda</div><div class="cfwaf-zone-plan">UG</div></div></div> 798 <div class="cfwaf-zone-item" data-cc="UA"><input type="checkbox" class="cfwaf-country-check" value="UA"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ua.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Ukraine</div><div class="cfwaf-zone-plan">UA</div></div></div> 799 <div class="cfwaf-zone-item" data-cc="AE"><input type="checkbox" class="cfwaf-country-check" value="AE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ae.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">United Arab Emirates</div><div class="cfwaf-zone-plan">AE</div></div></div> 800 <div class="cfwaf-zone-item" data-cc="GB"><input type="checkbox" class="cfwaf-country-check" value="GB"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'gb.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">United Kingdom</div><div class="cfwaf-zone-plan">GB</div></div></div> 801 <div class="cfwaf-zone-item" data-cc="US"><input type="checkbox" class="cfwaf-country-check" value="US"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'us.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">United States</div><div class="cfwaf-zone-plan">US</div></div></div> 802 <div class="cfwaf-zone-item" data-cc="UY"><input type="checkbox" class="cfwaf-country-check" value="UY"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'uy.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Uruguay</div><div class="cfwaf-zone-plan">UY</div></div></div> 803 <div class="cfwaf-zone-item" data-cc="UZ"><input type="checkbox" class="cfwaf-country-check" value="UZ"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'uz.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Uzbekistan</div><div class="cfwaf-zone-plan">UZ</div></div></div> 804 <div class="cfwaf-zone-item" data-cc="VU"><input type="checkbox" class="cfwaf-country-check" value="VU"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'vu.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Vanuatu</div><div class="cfwaf-zone-plan">VU</div></div></div> 805 <div class="cfwaf-zone-item" data-cc="VE"><input type="checkbox" class="cfwaf-country-check" value="VE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 've.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Venezuela</div><div class="cfwaf-zone-plan">VE</div></div></div> 806 <div class="cfwaf-zone-item" data-cc="VN"><input type="checkbox" class="cfwaf-country-check" value="VN"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'vn.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Vietnam</div><div class="cfwaf-zone-plan">VN</div></div></div> 807 <div class="cfwaf-zone-item" data-cc="YE"><input type="checkbox" class="cfwaf-country-check" value="YE"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'ye.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Yemen</div><div class="cfwaf-zone-plan">YE</div></div></div> 808 <div class="cfwaf-zone-item" data-cc="ZM"><input type="checkbox" class="cfwaf-country-check" value="ZM"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'zm.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Zambia</div><div class="cfwaf-zone-plan">ZM</div></div></div> 809 <div class="cfwaf-zone-item" data-cc="ZW"><input type="checkbox" class="cfwaf-country-check" value="ZW"><img class="wmfc-flag" src="<?php echo esc_url( $wmfc_flag_url . 'zw.png' ); ?>" width="20" height="15" alt="" loading="lazy" decoding="async"><div><div class="cfwaf-zone-name">Zimbabwe</div><div class="cfwaf-zone-plan">ZW</div></div></div> 785 810 <div id="cfwaf-country-empty" style="display:none;grid-column:1/-1;text-align:center;padding:24px;color:#6b7280;font-size:13px;">No countries match your search.</div> 786 811 </div> … … 809 834 <label class="cfwaf-check-label cfwaf-select-all-label"> 810 835 <input type="checkbox" data-setting="rule5.challenge_all_vpn" id="cfwaf-vpn-all"> 811 <strong>Challenge All VPN Connections</strong> — Applymanaged challenge to all known VPN providers below836 <strong>Challenge All VPN Connections</strong>: apply a managed challenge to all known VPN providers below 812 837 </label> 813 838 <div class="cfwaf-checkbox-grid" style="margin-top:10px"> … … 861 886 <div class="cfwaf-deploy-panel-header"> 862 887 <h3><span class="dashicons dashicons-upload"></span> Select Sites to Deploy To</h3> 863 <button class="cfwaf-btn cfwaf-btn-ghost-dark" id="cfwaf-deploy-close"> ✕Cancel</button>888 <button class="cfwaf-btn cfwaf-btn-ghost-dark" id="cfwaf-deploy-close"><?php echo WMFC_Icons::svg( 'x' ); ?> Cancel</button> 864 889 </div> 865 890 … … 873 898 <input type="checkbox" id="cfwaf-select-all-zones"> <strong>Select All Zones</strong> 874 899 </label> 875 <input type="search" id="cfwaf-zone-search" class="cfwaf-input cfwaf-search-input" placeholder=" 🔍Filter zones…">900 <input type="search" id="cfwaf-zone-search" class="cfwaf-input cfwaf-search-input" placeholder="Filter zones…"> 876 901 </div> 877 902 <div class="cfwaf-zones-grid" id="cfwaf-zones-grid"></div> … … 886 911 <div id="cfwaf-deploy-results"></div> 887 912 <div class="cfwaf-deploy-footer"> 888 <p class="cfwaf-deploy-save-reminder"> ⚠The deploy uses the settings on this screen, saved or not.</p>913 <p class="cfwaf-deploy-save-reminder"><?php echo WMFC_Icons::svg( 'alert' ); ?> The deploy uses the settings on this screen, saved or not.</p> 889 914 <button class="cfwaf-btn cfwaf-btn-deploy cfwaf-btn-large" id="cfwaf-confirm-deploy" disabled> 890 915 <span class="dashicons dashicons-upload"></span> Deploy to Selected Zones … … 970 995 <li>Reduces server load from aggressive crawlers that don’t respect crawl limits</li> 971 996 <li>Prevents bandwidth consumption from unauthorized SEO tools</li> 972 <li>Blocks common penetration testing tools (Nikto, SQLMap, Masscan, Nmap) </li>997 <li>Blocks common penetration testing tools (Nikto, SQLMap, Masscan, Nmap) and curl scripts</li> 973 998 <li>Protects sensitive WordPress paths (xmlrpc, wp-config, wp-json, install.php)</li> 974 999 <li>Hides WordPress version info by blocking readme.html and license.txt</li> … … 983 1008 <li>If you use the WordPress REST API (wp-json), don’t enable that path protection</li> 984 1009 <li>Some WordPress plugins or mobile apps may require XML-RPC access</li> 985 <li>Monitor your Event logs after implementing — some legitimate bots may be caught</li> 1010 <li>If the site is an API or webhook host that people call with curl, list those hostnames under “Except these hostnames” or turn off curl blocking</li> 1011 <li>Monitor your Event logs after implementing, as some legitimate bots may be caught</li> 986 1012 </ul> 987 1013 … … 1014 1040 <ul> 1015 1041 <li>Blocks or challenges automated attacks from web hosting providers where malicious scripts often run</li> 1042 <li>Always blocks three hosting networks known for WordPress exploit and secrets-scanning traffic, even when the main host list is off</li> 1016 1043 <li>Prevents TOR-based attacks while optionally allowing legitimate TOR users</li> 1017 1044 <li>Blocks path traversal, SQL injection, legacy CGI paths, other CMSs’ login probes and XSS patterns site-wide</li> … … 1061 1088 <li>Can limit spam and bot registrations from contact forms</li> 1062 1089 <li>Adds geographic protection if your site only serves specific countries</li> 1063 <li>Uses Managed Challenge —legitimate visitors pass through transparently</li>1090 <li>Uses Managed Challenge, so legitimate visitors pass through transparently</li> 1064 1091 </ul> 1065 1092 </div> … … 1109 1136 <h4><span class="dashicons dashicons-warning"></span> Important Considerations</h4> 1110 1137 <ul> 1111 <li>Legitimate visitors may use VPNs —monitor the Challenge Solve Rate (low CSR = good)</li>1138 <li>Legitimate visitors may use VPNs, so monitor the Challenge Solve Rate (low CSR = good)</li> 1112 1139 <li>For higher security, consider using a Cloudflare Configuration Rule to set “I’m Under Attack” mode on wp-login.php</li> 1113 1140 <li>For the highest security, use Cloudflare Access to protect wp-login.php and wp-admin instead</li> … … 1174 1201 <h4>Credits</h4> 1175 1202 <ul> 1176 <li><a href="https://webagencyhero.com/" target="_blank"><strong>WebAgencyHero</strong></a> —Troy Glancy, for creating the original “5 Cloudflare WAF rules” that formed the foundation of this tool.</li>1177 <li><strong>URSA6</strong> —Michael Bourne, for building <a href="https://wafrules.com" target="_blank">wafrules.com</a> and making broad changes and security adjustments to the rules.</li>1178 <li><a href="https://www.nahnuplugins.com" target="_blank"><strong>Nahnu Plugins</strong></a> — Plugin development, UI enhancements, country picker, and one-click API deployment.</li>1203 <li><a href="https://webagencyhero.com/" target="_blank"><strong>WebAgencyHero</strong></a>: Troy Glancy, for creating the original “5 Cloudflare WAF rules” that formed the foundation of this tool.</li> 1204 <li><strong>URSA6</strong>: Michael Bourne, for building <a href="https://wafrules.com" target="_blank">wafrules.com</a> and making broad changes and security adjustments to the rules.</li> 1205 <li><a href="https://www.nahnuplugins.com" target="_blank"><strong>Nahnu Plugins</strong></a>: plugin development, UI enhancements, country picker, and one-click API deployment.</li> 1179 1206 </ul> 1180 1207 </div> 1181 1208 <div class="cfwaf-credits-disclaimer"> 1182 1209 <strong>Trademark Notice:</strong> Cloudflare is a registered trademark of Cloudflare, Inc. This plugin is not affiliated with, endorsed by, or sponsored by Cloudflare, Inc. in any way.<br><br> 1183 <strong>Disclaimer:</strong> This plugin is provided “as is” without warranty of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement. The creators and contributors are not responsible for any damage, data loss, security incidents, or other issues arising from the installation, configuration, or use of this plugin or the WAF rules it deploys. WAF rules interact directly with your live Cloudflare configuration — always test thoroughly in a staging environment before applying to production. Monitor your Cloudflare Security Events log closely after deployment and watch for false positives. By using this plugin you accept full responsibility for your Cloudflare WAF configuration.1210 <strong>Disclaimer:</strong> This plugin is provided “as is” without warranty of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement. The creators and contributors are not responsible for any damage, data loss, security incidents, or other issues arising from the installation, configuration, or use of this plugin or the WAF rules it deploys. WAF rules interact directly with your live Cloudflare configuration. Always test thoroughly in a staging environment before applying to production. Monitor your Cloudflare Security Events log closely after deployment and watch for false positives. By using this plugin you accept full responsibility for your Cloudflare WAF configuration. 1184 1211 </div> 1185 1212 </div> -
waf-manager-for-cloudflare/trunk/includes/views/page-settings.php
r3760078 r3771550 13 13 <div class="wpwaf-st-section"> 14 14 <div class="wpwaf-st-section-header"> 15 <span class="wpwaf-st-section-icon"> 🔒</span>15 <span class="wpwaf-st-section-icon"><?php echo WMFC_Icons::svg( 'lock' ); ?></span> 16 16 <h2>Access Control</h2> 17 17 </div> … … 21 21 $current_role = $s['minimum_role'] ?? 'administrator'; 22 22 $roles = [ 23 'administrator' => [ 'label' => 'Administrator', 'desc' => 'Full site admin access', 'icon' => ' 🛡', 'warn' => false ],24 'editor' => [ 'label' => 'Editor', 'desc' => 'Can manage all posts and pages', 'icon' => ' ✏️', 'warn' => true ],25 'author' => [ 'label' => 'Author', 'desc' => 'Can publish their own posts', 'icon' => ' 📝', 'warn' => true ],26 'contributor' => [ 'label' => 'Contributor', 'desc' => 'Can write but not publish', 'icon' => ' 👤', 'warn' => true ],27 'subscriber' => [ 'label' => 'Subscriber', 'desc' => 'Registered users only', 'icon' => ' 👁', 'warn' => true ],23 'administrator' => [ 'label' => 'Administrator', 'desc' => 'Full site admin access', 'icon' => 'shield', 'warn' => false ], 24 'editor' => [ 'label' => 'Editor', 'desc' => 'Can manage all posts and pages', 'icon' => 'pencil', 'warn' => true ], 25 'author' => [ 'label' => 'Author', 'desc' => 'Can publish their own posts', 'icon' => 'file-text', 'warn' => true ], 26 'contributor' => [ 'label' => 'Contributor', 'desc' => 'Can write but not publish', 'icon' => 'user', 'warn' => true ], 27 'subscriber' => [ 'label' => 'Subscriber', 'desc' => 'Registered users only', 'icon' => 'eye', 'warn' => true ], 28 28 ]; 29 29 ?> … … 40 40 id="st-role-<?php echo esc_attr( $role_key ); ?>" 41 41 <?php checked( $current_role, $role_key ); ?>> 42 <span class="wpwaf-st-role-icon"><?php echo esc_html( $role['icon'] ); ?></span>42 <span class="wpwaf-st-role-icon"><?php echo WMFC_Icons::svg( $role['icon'] ); ?></span> 43 43 <span class="wpwaf-st-role-info"> 44 44 <strong><?php echo esc_html( $role['label'] ); ?></strong> 45 45 <span><?php echo esc_html( $role['desc'] ); ?></span> 46 46 <?php if ( $role['warn'] ) : ?> 47 <span class="wpwaf-st-role-warn"> ⚠Not recommended for security plugins</span>47 <span class="wpwaf-st-role-warn"><?php echo WMFC_Icons::svg( 'alert' ); ?> Not recommended for security plugins</span> 48 48 <?php endif; ?> 49 49 </span> … … 95 95 <div class="wpwaf-st-section"> 96 96 <div class="wpwaf-st-section-header"> 97 <span class="wpwaf-st-section-icon"> 👥</span>97 <span class="wpwaf-st-section-icon"><?php echo WMFC_Icons::svg( 'users' ); ?></span> 98 98 <h2>User Access</h2> 99 99 </div> -
waf-manager-for-cloudflare/trunk/readme.txt
r3762681 r3771550 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.0 7 Stable tag: 1.0.2 57 Stable tag: 1.0.26 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 21 21 = The five rules = 22 22 23 Based on the open-source [wafrules.com](https://wafrules.com) ruleset, updated to the October 2 1, 2026 release:23 Based on the open-source [wafrules.com](https://wafrules.com) ruleset, updated to the October 24, 2026 release: 24 24 25 25 1. **Allow Good Bots** (Skip). Allows every Cloudflare verified bot, or only the categories you pick, plus services matched by the IP lists they publish (ManageWP, WP Umbrella, ShortPixel, Patchstack and more), Let's Encrypt, your own server IPs, an IP allowlist, custom user agents and custom Cloudflare expressions. It runs first so nothing below blocks legitimate traffic, while Cloudflare's managed rules still protect it. 26 2. **Block Aggressive Crawlers & WordPress Paths** (Block). Blocks aggressive crawlers and exploit scanners (SQLMap, Nikto, Masscan, Nmap), generic bot patterns, and sensitive WordPress paths (xmlrpc.php, wp-config, install.php, readme.html, license.txt) in any letter case.27 3. **Block or Challenge Web Hosts / TOR & Exploit URIs**. Blocks or challenges traffic from hosting and VPS networks (DigitalOcean, Linode, Vultr, Hetzner, OVH, Contabo and more) and TOR exit nodes, and blocks six groups of exploit URIs: time-delay and UNION SQL injection, file inclusion, legacy exploits, other CMS probes and XSS.26 2. **Block Aggressive Crawlers & WordPress Paths** (Block). Blocks aggressive crawlers and exploit scanners (SQLMap, Nikto, Masscan, Nmap), generic bot patterns, curl scripts (with an exception list for your API and webhook hostnames), and sensitive WordPress paths (xmlrpc.php, wp-config, install.php, readme.html, license.txt) in any letter case. 27 3. **Block or Challenge Web Hosts / TOR & Exploit URIs**. Blocks or challenges traffic from hosting and VPS networks (DigitalOcean, Linode, Vultr, Hetzner, OVH, Contabo and more), three networks known for WordPress attack traffic and TOR exit nodes, and blocks six groups of exploit URIs: time-delay and UNION SQL injection, file inclusion, legacy exploits, other CMS probes and XSS. 28 28 4. **Challenge Large Providers / Country** (Managed Challenge). Challenges traffic from AWS, Google Cloud and Azure, and optionally visitors from outside the countries you select. 29 29 5. **Challenge VPN Connections & wp-login** (Managed Challenge). Challenges known VPN providers and protects the WordPress login page. … … 140 140 141 141 == Changelog == 142 143 = 1.0.26 = 144 * Changed: every emoji on the WAF Rules, Settings and About screens is now an SVG icon that follows the text color, so the screens look the same on Windows, Mac and every browser instead of showing letters or empty boxes. 145 * Added: every country in the Rule 4 country picker shows its flag. Flags are images bundled with the plugin. 146 * Added: each Quick Pick button in the Rule 4 country picker (North America, Europe, Asia, Oceania, Latin America, MENA, GCC and Africa) shows a small map of its region. MENA and GCC had no icon before. 147 * Changed: removed the em dashes from on-screen text, such as the Challenge All VPN Connections option. 148 * Changed: the WAF rules follow the October 24, 2026 wafrules.com release. Saved settings are updated automatically; deploy again to apply the new rules. 149 * Added: Rule 2 blocks curl user agents, with an "Except these hostnames" list for API and webhook hosts. Turn it off on app or API sites that people call with curl. 150 * Added: Rule 3 always blocks three hosting networks known for WordPress exploit and secrets-scanning traffic (AS48090 TECHOFF SRV / DMZHOST, AS211590 Bucklog / FBW Networks, AS218785 TC Datacenter), even when Block Web Host ASNs is off. Each one can be unticked. 151 * Changed: WP Umbrella is allowed by its latest published IP lists, and the interim option for unlisted DigitalOcean monitors is removed. 152 * Changed: blocking wp-config.php and install.php is now on by default for new setups. 142 153 143 154 = 1.0.25 = … … 184 195 == Upgrade Notice == 185 196 197 = 1.0.26 = 198 WAF rules updated to the October 24, 2026 wafrules.com release: curl blocking in Rule 2, three attack hosting networks in Rule 3 and the latest WP Umbrella IPs. Your settings are updated automatically; deploy again to apply them. Also adds SVG icons, country flags and region maps. 199 186 200 = 1.0.25 = 187 201 Updates the five WAF rules to the October 2026 wafrules.com release. Your settings are converted automatically. Deploy again to apply the new rules; your other custom Cloudflare rules are now kept. -
waf-manager-for-cloudflare/trunk/waf-manager-for-cloudflare.php
r3762681 r3771550 3 3 * Plugin Name: WAF Manager for Cloudflare 4 4 * Plugin URI: https://wpwafmanager.com 5 * Description: Visual Cloudflare WAF rule builder. Deploy five battle-tested security rules to any Cloudflare zone in one click — no API docs or expression language required.6 * Version: 1.0.2 55 * Description: Visual Cloudflare WAF rule builder. Deploy five battle-tested security rules to any Cloudflare zone in one click. No API docs or expression language required. 6 * Version: 1.0.26 7 7 * Requires at least: 6.0 8 8 * Tested up to: 7.1 … … 55 55 unset( $wmfc_standdown, $wmfc_p ); 56 56 57 define( 'WMFC_VERSION', '1.0.2 5' );57 define( 'WMFC_VERSION', '1.0.26' ); 58 58 define( 'WMFC_DIR', plugin_dir_path( __FILE__ ) ); 59 59 define( 'WMFC_URL', plugin_dir_url( __FILE__ ) ); … … 67 67 'class-rule-builder.php' => 'WMFC_Rule_Builder', 68 68 'class-access.php' => 'WMFC_Access', 69 'class-icons.php' => 'WMFC_Icons', 69 70 'class-admin.php' => 'WMFC_Admin', 70 71 'class-ajax.php' => 'WMFC_Ajax',
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)