Version Description
- New: A new antispam and bot detection engine that protects comment and user registration forms from bot attacks. After several attempts bot IP will be locked out.
- New: You can tell Cerber either to mark detected spam comments as spam or deny them completely.
- New: Cerber can automatically move spam comments older than the specified amount of days to trash.
- New: Added the cerber_404_template filter for specifying an alternative to the default 404 page not found template.
- New: Added code to avoid possible conflict between Custom login URL and REST API.
- New: Italian translation has been added, thanks to Francesco Venuti.
- Bug fixed: WordPress database error: Table '...cerber_lab_net' doesn't exist.
Download this release
Release Info
Developer | Gioni |
Plugin | Cerber Security & Antispam |
Version | 5.0 |
Comparing to | |
See all releases |
Version 5.0
- assets/admin.css +707 -0
- assets/admin.js +63 -0
- assets/ajax-loader-ip.gif +0 -0
- assets/bgwidget.png +0 -0
- assets/flags/ad.gif +0 -0
- assets/flags/ae.gif +0 -0
- assets/flags/af.gif +0 -0
- assets/flags/ag.gif +0 -0
- assets/flags/ai.gif +0 -0
- assets/flags/al.gif +0 -0
- assets/flags/am.gif +0 -0
- assets/flags/an.gif +0 -0
- assets/flags/ao.gif +0 -0
- assets/flags/ar.gif +0 -0
- assets/flags/as.gif +0 -0
- assets/flags/at.gif +0 -0
- assets/flags/au.gif +0 -0
- assets/flags/aw.gif +0 -0
- assets/flags/ax.gif +0 -0
- assets/flags/az.gif +0 -0
- assets/flags/ba.gif +0 -0
- assets/flags/bb.gif +0 -0
- assets/flags/bd.gif +0 -0
- assets/flags/be.gif +0 -0
- assets/flags/bf.gif +0 -0
- assets/flags/bg.gif +0 -0
- assets/flags/bh.gif +0 -0
- assets/flags/bi.gif +0 -0
- assets/flags/bj.gif +0 -0
- assets/flags/bm.gif +0 -0
- assets/flags/bn.gif +0 -0
- assets/flags/bo.gif +0 -0
- assets/flags/br.gif +0 -0
- assets/flags/bs.gif +0 -0
- assets/flags/bt.gif +0 -0
- assets/flags/bv.gif +0 -0
- assets/flags/bw.gif +0 -0
- assets/flags/by.gif +0 -0
- assets/flags/bz.gif +0 -0
- assets/flags/ca.gif +0 -0
- assets/flags/cc.gif +0 -0
- assets/flags/cd.gif +0 -0
- assets/flags/cf.gif +0 -0
- assets/flags/cg.gif +0 -0
- assets/flags/ch.gif +0 -0
- assets/flags/ci.gif +0 -0
- assets/flags/ck.gif +0 -0
- assets/flags/cl.gif +0 -0
- assets/flags/cm.gif +0 -0
- assets/flags/cn.gif +0 -0
- assets/flags/co.gif +0 -0
- assets/flags/cr.gif +0 -0
- assets/flags/cs.gif +0 -0
- assets/flags/cu.gif +0 -0
- assets/flags/cv.gif +0 -0
- assets/flags/cx.gif +0 -0
- assets/flags/cy.gif +0 -0
- assets/flags/cz.gif +0 -0
- assets/flags/de.gif +0 -0
- assets/flags/dj.gif +0 -0
- assets/flags/dk.gif +0 -0
- assets/flags/dm.gif +0 -0
- assets/flags/do.gif +0 -0
- assets/flags/dz.gif +0 -0
- assets/flags/ec.gif +0 -0
- assets/flags/ee.gif +0 -0
- assets/flags/eg.gif +0 -0
- assets/flags/eh.gif +0 -0
- assets/flags/er.gif +0 -0
- assets/flags/es.gif +0 -0
- assets/flags/et.gif +0 -0
- assets/flags/eu.gif +0 -0
- assets/flags/fi.gif +0 -0
- assets/flags/fj.gif +0 -0
- assets/flags/fk.gif +0 -0
- assets/flags/fm.gif +0 -0
- assets/flags/fo.gif +0 -0
- assets/flags/fr.gif +0 -0
- assets/flags/ga.gif +0 -0
- assets/flags/gb.gif +0 -0
- assets/flags/gd.gif +0 -0
- assets/flags/ge.gif +0 -0
- assets/flags/gf.gif +0 -0
- assets/flags/gh.gif +0 -0
- assets/flags/gi.gif +0 -0
- assets/flags/gl.gif +0 -0
- assets/flags/gm.gif +0 -0
- assets/flags/gn.gif +0 -0
- assets/flags/gp.gif +0 -0
- assets/flags/gq.gif +0 -0
- assets/flags/gr.gif +0 -0
- assets/flags/gs.gif +0 -0
- assets/flags/gt.gif +0 -0
- assets/flags/gu.gif +0 -0
- assets/flags/gw.gif +0 -0
- assets/flags/gy.gif +0 -0
- assets/flags/hk.gif +0 -0
- assets/flags/hm.gif +0 -0
- assets/flags/hn.gif +0 -0
- assets/flags/hr.gif +0 -0
- assets/flags/ht.gif +0 -0
- assets/flags/hu.gif +0 -0
- assets/flags/id.gif +0 -0
- assets/flags/ie.gif +0 -0
- assets/flags/il.gif +0 -0
- assets/flags/in.gif +0 -0
- assets/flags/io.gif +0 -0
- assets/flags/iq.gif +0 -0
- assets/flags/ir.gif +0 -0
- assets/flags/is.gif +0 -0
- assets/flags/it.gif +0 -0
- assets/flags/jm.gif +0 -0
- assets/flags/jo.gif +0 -0
- assets/flags/jp.gif +0 -0
- assets/flags/ke.gif +0 -0
- assets/flags/kg.gif +0 -0
- assets/flags/kh.gif +0 -0
- assets/flags/ki.gif +0 -0
- assets/flags/km.gif +0 -0
- assets/flags/kn.gif +0 -0
- assets/flags/kp.gif +0 -0
- assets/flags/kr.gif +0 -0
- assets/flags/kw.gif +0 -0
- assets/flags/ky.gif +0 -0
- assets/flags/kz.gif +0 -0
- assets/flags/la.gif +0 -0
- assets/flags/lb.gif +0 -0
- assets/flags/lc.gif +0 -0
- assets/flags/li.gif +0 -0
- assets/flags/lk.gif +0 -0
- assets/flags/lr.gif +0 -0
- assets/flags/ls.gif +0 -0
- assets/flags/lt.gif +0 -0
- assets/flags/lu.gif +0 -0
- assets/flags/lv.gif +0 -0
- assets/flags/ly.gif +0 -0
- assets/flags/ma.gif +0 -0
- assets/flags/mc.gif +0 -0
- assets/flags/md.gif +0 -0
- assets/flags/me.gif +0 -0
- assets/flags/mg.gif +0 -0
- assets/flags/mh.gif +0 -0
- assets/flags/mk.gif +0 -0
- assets/flags/ml.gif +0 -0
- assets/flags/mm.gif +0 -0
- assets/flags/mn.gif +0 -0
- assets/flags/mo.gif +0 -0
- assets/flags/mp.gif +0 -0
- assets/flags/mq.gif +0 -0
- assets/flags/mr.gif +0 -0
- assets/flags/ms.gif +0 -0
- assets/flags/mt.gif +0 -0
- assets/flags/mu.gif +0 -0
- assets/flags/mv.gif +0 -0
- assets/flags/mw.gif +0 -0
- assets/flags/mx.gif +0 -0
- assets/flags/my.gif +0 -0
- assets/flags/mz.gif +0 -0
- assets/flags/na.gif +0 -0
- assets/flags/nc.gif +0 -0
- assets/flags/ne.gif +0 -0
- assets/flags/nf.gif +0 -0
- assets/flags/ng.gif +0 -0
- assets/flags/ni.gif +0 -0
- assets/flags/nl.gif +0 -0
- assets/flags/no.gif +0 -0
- assets/flags/np.gif +0 -0
- assets/flags/nr.gif +0 -0
- assets/flags/nu.gif +0 -0
- assets/flags/nz.gif +0 -0
- assets/flags/om.gif +0 -0
- assets/flags/pa.gif +0 -0
- assets/flags/pe.gif +0 -0
- assets/flags/pf.gif +0 -0
- assets/flags/pg.gif +0 -0
- assets/flags/ph.gif +0 -0
- assets/flags/pk.gif +0 -0
- assets/flags/pl.gif +0 -0
- assets/flags/pm.gif +0 -0
- assets/flags/pn.gif +0 -0
- assets/flags/pr.gif +0 -0
- assets/flags/ps.gif +0 -0
- assets/flags/pt.gif +0 -0
- assets/flags/pw.gif +0 -0
- assets/flags/py.gif +0 -0
- assets/flags/qa.gif +0 -0
- assets/flags/re.gif +0 -0
- assets/flags/ro.gif +0 -0
- assets/flags/rs.gif +0 -0
- assets/flags/ru.gif +0 -0
- assets/flags/rw.gif +0 -0
- assets/flags/sa.gif +0 -0
- assets/flags/sb.gif +0 -0
- assets/flags/sc.gif +0 -0
- assets/flags/sd.gif +0 -0
- assets/flags/se.gif +0 -0
- assets/flags/sg.gif +0 -0
- assets/flags/sh.gif +0 -0
- assets/flags/si.gif +0 -0
- assets/flags/sj.gif +0 -0
- assets/flags/sk.gif +0 -0
- assets/flags/sl.gif +0 -0
- assets/flags/sm.gif +0 -0
- assets/flags/sn.gif +0 -0
- assets/flags/so.gif +0 -0
- assets/flags/sr.gif +0 -0
- assets/flags/st.gif +0 -0
- assets/flags/sv.gif +0 -0
- assets/flags/sy.gif +0 -0
- assets/flags/sz.gif +0 -0
- assets/flags/tc.gif +0 -0
- assets/flags/td.gif +0 -0
- assets/flags/tf.gif +0 -0
- assets/flags/tg.gif +0 -0
- assets/flags/th.gif +0 -0
- assets/flags/tj.gif +0 -0
- assets/flags/tk.gif +0 -0
- assets/flags/tl.gif +0 -0
- assets/flags/tm.gif +0 -0
- assets/flags/tn.gif +0 -0
- assets/flags/to.gif +0 -0
- assets/flags/tr.gif +0 -0
- assets/flags/tt.gif +0 -0
- assets/flags/tv.gif +0 -0
- assets/flags/tw.gif +0 -0
- assets/flags/tz.gif +0 -0
- assets/flags/ua.gif +0 -0
- assets/flags/ug.gif +0 -0
- assets/flags/um.gif +0 -0
- assets/flags/us.gif +0 -0
- assets/flags/uy.gif +0 -0
- assets/flags/uz.gif +0 -0
- assets/flags/va.gif +0 -0
- assets/flags/vc.gif +0 -0
- assets/flags/ve.gif +0 -0
- assets/flags/vg.gif +0 -0
- assets/flags/vi.gif +0 -0
- assets/flags/vn.gif +0 -0
- assets/flags/vu.gif +0 -0
- assets/flags/wf.gif +0 -0
- assets/flags/ws.gif +0 -0
- assets/flags/ye.gif +0 -0
- assets/flags/yt.gif +0 -0
- assets/flags/za.gif +0 -0
- assets/flags/zm.gif +0 -0
- assets/flags/zw.gif +0 -0
- assets/fonts/cerber.eot +0 -0
- assets/fonts/cerber.ttf +0 -0
- assets/fonts/cerber.woff +0 -0
- assets/goo-translate.png +0 -0
- assets/icon-128x128.png +0 -0
- assets/icon-256x256.png +0 -0
- assets/inspector.png +0 -0
- cerber-lab.php +617 -0
- cerber-news.php +108 -0
- cerber-tools.php +276 -0
- common.php +532 -0
- dashboard.php +1678 -0
- index.php +2 -0
- jetflow.php +126 -0
- languages/wp-cerber-cs_CZ.mo +0 -0
- languages/wp-cerber-cs_CZ.po +1204 -0
- languages/wp-cerber-de_DE.mo +0 -0
- languages/wp-cerber-de_DE.po +1273 -0
- languages/wp-cerber-es_ES.mo +0 -0
- languages/wp-cerber-es_ES.po +1212 -0
- languages/wp-cerber-fr_FR.mo +0 -0
- languages/wp-cerber-fr_FR.po +1130 -0
- languages/wp-cerber-it_IT.mo +0 -0
- languages/wp-cerber-it_IT.po +1231 -0
- languages/wp-cerber-nb_NO.mo +0 -0
- languages/wp-cerber-nb_NO.po +1128 -0
- languages/wp-cerber-nl_NL.mo +0 -0
- languages/wp-cerber-nl_NL.po +1038 -0
- languages/wp-cerber-pl_PL.mo +0 -0
- languages/wp-cerber-pl_PL.po +1176 -0
- languages/wp-cerber-pt_BR.mo +0 -0
- languages/wp-cerber-pt_BR.po +1183 -0
- languages/wp-cerber-ru_RU.mo +0 -0
- languages/wp-cerber-ru_RU.po +1127 -0
- languages/wp-cerber-uk.mo +0 -0
- languages/wp-cerber-uk.po +1216 -0
- languages/wp-cerber.pot +1286 -0
- readme.txt +447 -0
- ripe.php +168 -0
- settings.php +766 -0
- whois.php +465 -0
- wp-cerber.php +3295 -0
assets/admin.css
ADDED
@@ -0,0 +1,707 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Common */
|
2 |
+
.crb-main {
|
3 |
+
width: auto;
|
4 |
+
overflow: hidden;
|
5 |
+
padding-top: 1em;
|
6 |
+
}
|
7 |
+
|
8 |
+
.crb-main h2, .crb-main h3, .crb-main p{
|
9 |
+
margin-top: 0.5em;
|
10 |
+
}
|
11 |
+
|
12 |
+
.cerber-margin {
|
13 |
+
margin-left: 10px;
|
14 |
+
}
|
15 |
+
|
16 |
+
.cupage {
|
17 |
+
padding: 10pt;
|
18 |
+
font-weight: bold;
|
19 |
+
}
|
20 |
+
|
21 |
+
.form-table {
|
22 |
+
margin-bottom: 30px;
|
23 |
+
}
|
24 |
+
|
25 |
+
/* Dashboard */
|
26 |
+
|
27 |
+
#crb-kpi {
|
28 |
+
width: 100%;
|
29 |
+
background-color: #fff;
|
30 |
+
color: #111;
|
31 |
+
border-collapse: collapse;
|
32 |
+
border: 6px solid #e9e9e9;
|
33 |
+
}
|
34 |
+
#crb-kpi td{
|
35 |
+
padding: 26px 10px 26px 5px;
|
36 |
+
}
|
37 |
+
#crb-kpi td:nth-child(odd) {
|
38 |
+
text-align: right;
|
39 |
+
font-size: 200%;
|
40 |
+
color: #555;
|
41 |
+
font-weight: bold;
|
42 |
+
min-width: 5%;
|
43 |
+
/*border-left: #555 solid 3px;*/
|
44 |
+
border-left-width: 3px;
|
45 |
+
padding-left: 1em;
|
46 |
+
}
|
47 |
+
#crb-kpi td:nth-child(even) {
|
48 |
+
font-size: 110%;
|
49 |
+
/*width: 20%;*/
|
50 |
+
}
|
51 |
+
#crb-kpi td p {
|
52 |
+
font-size: 70%;
|
53 |
+
color: #555;
|
54 |
+
}
|
55 |
+
/*
|
56 |
+
#crb-kpi td:after {
|
57 |
+
font-family: "dashicons";
|
58 |
+
content: "\f487";
|
59 |
+
position: absolute;
|
60 |
+
font-size: 50px;
|
61 |
+
color: red;
|
62 |
+
opacity: 0.5;
|
63 |
+
top: 130px;
|
64 |
+
left: 10%;
|
65 |
+
z-index: 0;
|
66 |
+
}
|
67 |
+
*/
|
68 |
+
|
69 |
+
/* Aside bar */
|
70 |
+
|
71 |
+
#crb-aside {
|
72 |
+
float: right;
|
73 |
+
width: 290px;
|
74 |
+
margin: 1em 0;
|
75 |
+
}
|
76 |
+
|
77 |
+
@media (max-width: 1000px) {
|
78 |
+
#crb-aside {
|
79 |
+
display: none;
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
#crb-aside .crb-box {
|
84 |
+
background-color: #fff;
|
85 |
+
border: 1px solid #E5E5E5;
|
86 |
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
|
87 |
+
padding: 0 1em 2em 1em;
|
88 |
+
margin-bottom: 1em;
|
89 |
+
}
|
90 |
+
.crb-box-inner {
|
91 |
+
position: relative;
|
92 |
+
z-index: 2;
|
93 |
+
}
|
94 |
+
|
95 |
+
#crb-subscribe {
|
96 |
+
position: relative;
|
97 |
+
}
|
98 |
+
#crb-subscribe:after {
|
99 |
+
font-family: "dashicons";
|
100 |
+
content: "\f507";
|
101 |
+
position: absolute;
|
102 |
+
font-size: 150px;
|
103 |
+
color: lightblue;
|
104 |
+
opacity: 0.5;
|
105 |
+
top: 55%;
|
106 |
+
left: 22%;
|
107 |
+
z-index: 1;
|
108 |
+
}
|
109 |
+
#crb-jetflow {
|
110 |
+
position: relative;
|
111 |
+
}
|
112 |
+
#crb-jetflow:after {
|
113 |
+
font-family: "dashicons";
|
114 |
+
content: "\f311";
|
115 |
+
position: absolute;
|
116 |
+
font-size: 150px;
|
117 |
+
color: darkred;
|
118 |
+
opacity: 0.2;
|
119 |
+
top: 55%;
|
120 |
+
left: 22%;
|
121 |
+
z-index: 1;
|
122 |
+
}
|
123 |
+
#crb-blog {
|
124 |
+
position: relative;
|
125 |
+
}
|
126 |
+
#crb-blog:after {
|
127 |
+
font-family: "dashicons";
|
128 |
+
content: "\f331";
|
129 |
+
position: absolute;
|
130 |
+
font-size: 150px;
|
131 |
+
color: grey;
|
132 |
+
opacity: 0.2;
|
133 |
+
top: 55%;
|
134 |
+
left: 22%;
|
135 |
+
z-index: 1;
|
136 |
+
}
|
137 |
+
#crb-donate {
|
138 |
+
position: relative;
|
139 |
+
}
|
140 |
+
#crb-donate:after {
|
141 |
+
font-family: "dashicons";
|
142 |
+
content: "\f487";
|
143 |
+
position: absolute;
|
144 |
+
font-size: 150px;
|
145 |
+
color: red;
|
146 |
+
opacity: 0.25;
|
147 |
+
top: 35%;
|
148 |
+
left: 22%;
|
149 |
+
z-index: 1;
|
150 |
+
}
|
151 |
+
|
152 |
+
|
153 |
+
/* Messages */
|
154 |
+
.crb-alarm {
|
155 |
+
display: block;
|
156 |
+
border-left: 6px solid #ff0000;
|
157 |
+
/*
|
158 |
+
background-color:#FF5E3C;
|
159 |
+
color:#fff;*/
|
160 |
+
}
|
161 |
+
|
162 |
+
.crb-alarm a {
|
163 |
+
font-weight: bold;
|
164 |
+
}
|
165 |
+
|
166 |
+
.crb-note > p::before { /* content: "\e62e"; content: "\f339"; */
|
167 |
+
}
|
168 |
+
|
169 |
+
.cerber-msg td {
|
170 |
+
vertical-align: top;
|
171 |
+
}
|
172 |
+
|
173 |
+
.cerber-msg td:nth-child(2) {
|
174 |
+
padding-top: 6px;
|
175 |
+
}
|
176 |
+
|
177 |
+
.cerber-msg ul {
|
178 |
+
margin-left: 1.3em;
|
179 |
+
}
|
180 |
+
|
181 |
+
.cerber-msg li {
|
182 |
+
list-style-type: square;
|
183 |
+
}
|
184 |
+
|
185 |
+
.cerber-msg h3 {
|
186 |
+
margin-top: 0;
|
187 |
+
}
|
188 |
+
|
189 |
+
.cerber-msg {
|
190 |
+
font-size: 110%;
|
191 |
+
}
|
192 |
+
|
193 |
+
/* Tables */
|
194 |
+
|
195 |
+
.crb-table {
|
196 |
+
/*margin-top: 1em;*/
|
197 |
+
}
|
198 |
+
|
199 |
+
.crb-table tr:nth-child(even) {
|
200 |
+
background: #f9f9f9
|
201 |
+
}
|
202 |
+
|
203 |
+
.crb-table tr:nth-child(odd) {
|
204 |
+
background: #FFF
|
205 |
+
}
|
206 |
+
|
207 |
+
.crb-table td {
|
208 |
+
vertical-align: middle;
|
209 |
+
color: #222;
|
210 |
+
}
|
211 |
+
|
212 |
+
/* IP info like WHOIS details */
|
213 |
+
|
214 |
+
.ip-info-label {
|
215 |
+
padding: 1px 6px 1px 6px;
|
216 |
+
margin-left: 4px;
|
217 |
+
}
|
218 |
+
|
219 |
+
/* Activity */
|
220 |
+
|
221 |
+
#activity-filter {
|
222 |
+
margin-top: 0.5em;
|
223 |
+
/*vertical-align: top;*/
|
224 |
+
}
|
225 |
+
#activity-filter div{
|
226 |
+
margin-bottom: 1em;
|
227 |
+
}
|
228 |
+
#activity-filter select{
|
229 |
+
max-width: 250px;
|
230 |
+
margin-top: -4px;
|
231 |
+
}
|
232 |
+
#activity-filter input[type="submit"]{
|
233 |
+
margin-right: 3em;
|
234 |
+
}
|
235 |
+
#activity-filter input[type="text"]{
|
236 |
+
min-width: 250px;
|
237 |
+
}
|
238 |
+
#activity-filter input,
|
239 |
+
#activity-filter select{
|
240 |
+
margin-right: 0.2em;
|
241 |
+
}
|
242 |
+
#activity-filter a{
|
243 |
+
text-decoration: none;
|
244 |
+
}
|
245 |
+
|
246 |
+
.act-details{
|
247 |
+
background-color: #999;
|
248 |
+
color: #ffffff;
|
249 |
+
display: inline-block;
|
250 |
+
padding: 0 5px 0 5px;
|
251 |
+
margin-left: 0.7em;
|
252 |
+
}
|
253 |
+
p.act-url, .act-role{
|
254 |
+
color: #777;
|
255 |
+
}
|
256 |
+
p.act-url{
|
257 |
+
margin: 0.3em 0 !important;
|
258 |
+
}
|
259 |
+
.act-icon {
|
260 |
+
display: inline-block;
|
261 |
+
vertical-align: middle;
|
262 |
+
width: 1em;
|
263 |
+
height: 1em;
|
264 |
+
margin-right: 1em;
|
265 |
+
background-color: inherit;
|
266 |
+
}
|
267 |
+
|
268 |
+
.ip-aclB,.color-black {
|
269 |
+
background-color: #000;
|
270 |
+
color: #ffffff;
|
271 |
+
}
|
272 |
+
|
273 |
+
.ip-aclW,.color-green {
|
274 |
+
background-color: #83CE77;
|
275 |
+
color: #ffffff;
|
276 |
+
}
|
277 |
+
|
278 |
+
.color-blocked {
|
279 |
+
background-color: #FF5733;
|
280 |
+
color: #ffffff;
|
281 |
+
}
|
282 |
+
|
283 |
+
.green_label, .actv5 {
|
284 |
+
display: inline-block;
|
285 |
+
padding: 3px 5px 3px 5px;
|
286 |
+
margin: 1px;
|
287 |
+
background-color: #83CE77;
|
288 |
+
color: #000;
|
289 |
+
/*border-radius: 5px;*/
|
290 |
+
border-left: 4px solid rgba(0, 0, 0, 0);
|
291 |
+
border-right: 4px solid rgba(0, 0, 0, 0);
|
292 |
+
}
|
293 |
+
|
294 |
+
.red_label, .actv10, .actv11, .actv12, .actv16, .actv41, .actv42 {
|
295 |
+
display: inline-block;
|
296 |
+
padding: 3px 5px 3px 5px;
|
297 |
+
margin: 1px;
|
298 |
+
background-color: #FF5733;
|
299 |
+
color: #000;
|
300 |
+
/*border-radius: 5px;*/
|
301 |
+
border-left: 4px solid rgba(0, 0, 0, 0);
|
302 |
+
border-right: 4px solid rgba(0, 0, 0, 0);
|
303 |
+
}
|
304 |
+
|
305 |
+
.yellow_label, .actv13, .actv14 {
|
306 |
+
display: inline-block;
|
307 |
+
padding: 3px 5px 3px 5px;
|
308 |
+
margin: 1px;
|
309 |
+
background-color: #FFFF80;
|
310 |
+
color: #000;
|
311 |
+
/*border-radius: 5px;*/
|
312 |
+
border-left: 4px solid rgba(0, 0, 0, 0);
|
313 |
+
border-right: 4px solid rgba(0, 0, 0, 0);
|
314 |
+
}
|
315 |
+
|
316 |
+
.actv10, .actv11, .actv12 {
|
317 |
+
border-left: 4px solid rgba(0, 0, 0, .25);
|
318 |
+
}
|
319 |
+
|
320 |
+
/* Pagination links */
|
321 |
+
|
322 |
+
.pagination {
|
323 |
+
display: inline-block;
|
324 |
+
}
|
325 |
+
|
326 |
+
.pagination a {
|
327 |
+
color: black;
|
328 |
+
background-color: #fff;
|
329 |
+
float: left;
|
330 |
+
padding: 8px 16px;
|
331 |
+
text-decoration: none;
|
332 |
+
border: 1px solid #ddd;
|
333 |
+
}
|
334 |
+
|
335 |
+
.pagination a.active {
|
336 |
+
background-color: #0085ba;
|
337 |
+
color: white;
|
338 |
+
border: 1px solid #0085ba;
|
339 |
+
}
|
340 |
+
|
341 |
+
.pagination a:hover:not(.active) {background-color: #ddd;}
|
342 |
+
|
343 |
+
.pagination a:first-child {
|
344 |
+
border-top-left-radius: 5px;
|
345 |
+
border-bottom-left-radius: 5px;
|
346 |
+
}
|
347 |
+
|
348 |
+
.pagination a:last-child {
|
349 |
+
border-top-right-radius: 5px;
|
350 |
+
border-bottom-right-radius: 5px;
|
351 |
+
}
|
352 |
+
.pagination a.arrows {
|
353 |
+
font-size: 140%;
|
354 |
+
font-weight: 600;
|
355 |
+
}
|
356 |
+
|
357 |
+
/* Access Lists */
|
358 |
+
.acl-wrapper {
|
359 |
+
margin-bottom: 30px;
|
360 |
+
width: 100%;
|
361 |
+
max-width: 700px;
|
362 |
+
}
|
363 |
+
|
364 |
+
.acl-wrapper table td:first-child {
|
365 |
+
width: 60%;
|
366 |
+
}
|
367 |
+
|
368 |
+
.acl-wrapper form table {
|
369 |
+
margin-top: 1em;
|
370 |
+
width: 100%;
|
371 |
+
border-collapse: collapse;
|
372 |
+
}
|
373 |
+
.acl-wrapper form table td {
|
374 |
+
padding: 0;
|
375 |
+
}
|
376 |
+
.acl-wrapper form input[type="text"]{
|
377 |
+
width:100%;
|
378 |
+
}
|
379 |
+
|
380 |
+
.acl-items {
|
381 |
+
border: 1px solid #aaa;
|
382 |
+
background-color: #fff;
|
383 |
+
|
384 |
+
max-height:400px;
|
385 |
+
overflow: auto;
|
386 |
+
}
|
387 |
+
|
388 |
+
.acl-table {
|
389 |
+
/*border: 1px solid #aaa;
|
390 |
+
background-color: #fff;*/
|
391 |
+
width: 100%;
|
392 |
+
}
|
393 |
+
.acl-table td:first-child {
|
394 |
+
white-space: pre;
|
395 |
+
font-family: Consolas, Monaco, monospace;
|
396 |
+
font-size: 110%;
|
397 |
+
}
|
398 |
+
.acl-table td {
|
399 |
+
padding: 6px;
|
400 |
+
background-color: #f5f5f5;
|
401 |
+
}
|
402 |
+
.acl-table tr td:not(:first-child) {
|
403 |
+
/*.acl-table tr td:nth-child(2) {*/
|
404 |
+
/*width: 20%;*/
|
405 |
+
text-align: center;
|
406 |
+
}
|
407 |
+
|
408 |
+
|
409 |
+
/* Tabs */
|
410 |
+
.cerber-tabs span.dashicons {
|
411 |
+
display: inline-block;
|
412 |
+
vertical-align: middle;
|
413 |
+
line-height: 18px;
|
414 |
+
}
|
415 |
+
|
416 |
+
.cerber-tabs .nav-tab-active {
|
417 |
+
color: #804040;
|
418 |
+
color: rgb(0, 103, 153);
|
419 |
+
}
|
420 |
+
|
421 |
+
/* Preserve line-height for tabs */
|
422 |
+
|
423 |
+
.cerber-tabs sup,
|
424 |
+
.cerber-tabs sub {
|
425 |
+
height: 0;
|
426 |
+
line-height: 1;
|
427 |
+
vertical-align: baseline;
|
428 |
+
_vertical-align: bottom;
|
429 |
+
position: relative;
|
430 |
+
}
|
431 |
+
|
432 |
+
.cerber-tabs sup {
|
433 |
+
bottom: 1ex;
|
434 |
+
}
|
435 |
+
|
436 |
+
.cerber-tabs sub {
|
437 |
+
top: .5ex;
|
438 |
+
}
|
439 |
+
|
440 |
+
/* Users admin page */
|
441 |
+
|
442 |
+
#cbcc, .cbcc, #cbfl, .cbfl {
|
443 |
+
text-align: center;
|
444 |
+
}
|
445 |
+
|
446 |
+
/* Widgets */
|
447 |
+
|
448 |
+
#cerber_quick .inside {
|
449 |
+
padding: 0;
|
450 |
+
background-image: url("bgwidget.png");
|
451 |
+
background-repeat: no-repeat;
|
452 |
+
background-position: right top;
|
453 |
+
}
|
454 |
+
|
455 |
+
.cerber-widget {
|
456 |
+
border-bottom-width: 1px;
|
457 |
+
border-bottom-style: solid;
|
458 |
+
border-bottom-color: #eeeeee;
|
459 |
+
padding: 4px 12px 12px;
|
460 |
+
|
461 |
+
}
|
462 |
+
|
463 |
+
.cerber-widget .bigdig {
|
464 |
+
font-size: 250%;
|
465 |
+
}
|
466 |
+
|
467 |
+
#quick-info td {
|
468 |
+
padding: 0 8px 6px 0;
|
469 |
+
font-size: 110%;
|
470 |
+
}
|
471 |
+
|
472 |
+
.cerber-widget td.per {
|
473 |
+
vertical-align: middle;
|
474 |
+
padding-left: 5px;
|
475 |
+
}
|
476 |
+
|
477 |
+
.wilinks, .up-cerber {
|
478 |
+
padding: 12px;
|
479 |
+
text-align: center;
|
480 |
+
}
|
481 |
+
|
482 |
+
.wilinks a {
|
483 |
+
white-space: nowrap;
|
484 |
+
}
|
485 |
+
|
486 |
+
.up-cerber {
|
487 |
+
background-color: #804040;
|
488 |
+
font-size: 110%;
|
489 |
+
color: #fff;
|
490 |
+
}
|
491 |
+
|
492 |
+
.up-cerber a {
|
493 |
+
color: #fff;
|
494 |
+
display: block;
|
495 |
+
}
|
496 |
+
|
497 |
+
/* Ip extra, whois */
|
498 |
+
div#ip-extra {
|
499 |
+
overflow: auto;
|
500 |
+
padding: 10px 25px;
|
501 |
+
background-color: #f8f8f8;
|
502 |
+
border: solid 1px #ddd;
|
503 |
+
border-bottom: none;
|
504 |
+
vertical-align: middle;
|
505 |
+
}
|
506 |
+
div#ip-extra table{
|
507 |
+
border-collapse: collapse;
|
508 |
+
width: 100%;
|
509 |
+
}
|
510 |
+
div#ip-extra table td:nth-child(2){
|
511 |
+
text-align: right;
|
512 |
+
}
|
513 |
+
div#ip-extra p{
|
514 |
+
line-height: 0.7em !important;
|
515 |
+
}
|
516 |
+
/*div#ip-extra p:first-child {*/
|
517 |
+
div#ip-extra span#ip-address,
|
518 |
+
div#ip-extra span#ip-country{
|
519 |
+
font-size: 115%;
|
520 |
+
font-weight: bold;
|
521 |
+
}
|
522 |
+
div#ip-extra span#ip-address{
|
523 |
+
margin-right: 1em;
|
524 |
+
}
|
525 |
+
div#ip-extra #ip-details {
|
526 |
+
float: left;
|
527 |
+
max-width: 30%;
|
528 |
+
}
|
529 |
+
div#ip-extra #acl-buttons{
|
530 |
+
float:right;
|
531 |
+
max-width: 30%;
|
532 |
+
}
|
533 |
+
/*
|
534 |
+
#acl-buttons form{
|
535 |
+
position: absolute;
|
536 |
+
top: 50%;
|
537 |
+
transform: translateY(-50%);
|
538 |
+
}*/
|
539 |
+
|
540 |
+
div#whois {
|
541 |
+
border: solid 1px #ddd;
|
542 |
+
background-color: #fff;
|
543 |
+
margin-bottom: 50px;
|
544 |
+
padding: 15px 25px;
|
545 |
+
overflow: auto;
|
546 |
+
max-height: 200px;
|
547 |
+
transition: max-height 0.2s ease-in;
|
548 |
+
}
|
549 |
+
div#whois:hover {
|
550 |
+
max-height: 500px;
|
551 |
+
transition: max-height 0.2s ease-out;
|
552 |
+
}
|
553 |
+
|
554 |
+
.whois-object {
|
555 |
+
min-width: 20%;
|
556 |
+
max-width: 50%;
|
557 |
+
float: left;
|
558 |
+
margin-right: 20px;
|
559 |
+
background-color: #fff;
|
560 |
+
border-left: #ddd solid 2px;
|
561 |
+
}
|
562 |
+
|
563 |
+
.whois-object tr td:first-of-type {
|
564 |
+
padding-left: 10px;
|
565 |
+
}
|
566 |
+
|
567 |
+
.whois-object tr td:last-child {
|
568 |
+
padding-right: 10px;
|
569 |
+
}
|
570 |
+
|
571 |
+
.raw pre {
|
572 |
+
line-height: initial;
|
573 |
+
white-space: pre-wrap; /* css-3 */
|
574 |
+
}
|
575 |
+
|
576 |
+
/* Diagnostic */
|
577 |
+
|
578 |
+
#diagnostic h3 {
|
579 |
+
margin-top: 0;
|
580 |
+
}
|
581 |
+
#diagnostic .diag-section {
|
582 |
+
background-color: #f7f7f7;
|
583 |
+
border: 2px solid #ccc;
|
584 |
+
width: 100%;
|
585 |
+
max-width:1000px;
|
586 |
+
margin-top: 1em;
|
587 |
+
padding: 1em;
|
588 |
+
}
|
589 |
+
#diagnostic table {
|
590 |
+
background-color: #fff;
|
591 |
+
width:100%;
|
592 |
+
border: 2px solid #eee;
|
593 |
+
}
|
594 |
+
#diagnostic table th {
|
595 |
+
padding: 2px 8px 2px 8px;
|
596 |
+
text-align: left;
|
597 |
+
}
|
598 |
+
#diagnostic table td {
|
599 |
+
padding: 2px 8px 2px 8px;
|
600 |
+
vertical-align: top;
|
601 |
+
}
|
602 |
+
#diagnostic textarea {
|
603 |
+
width: 100%;
|
604 |
+
height: 400px;
|
605 |
+
margin-bottom: 1em;
|
606 |
+
padding: 4px;
|
607 |
+
}
|
608 |
+
|
609 |
+
#diagnostic .diag-table{
|
610 |
+
width:100%;
|
611 |
+
border: none;
|
612 |
+
}
|
613 |
+
#diagnostic .diag-td {
|
614 |
+
padding: 10px;
|
615 |
+
width:50%;
|
616 |
+
}
|
617 |
+
|
618 |
+
|
619 |
+
.cerber-button span.dashicons-before {
|
620 |
+
display: inline-block;
|
621 |
+
line-height: 18px;
|
622 |
+
margin-left: 0.5em;
|
623 |
+
margin-right: 0.5em;
|
624 |
+
}
|
625 |
+
|
626 |
+
@font-face {
|
627 |
+
font-family: "cerber-icon";
|
628 |
+
src: url('fonts/cerber.eot');
|
629 |
+
src: url('fonts/cerber.eot#iefix') format('embedded-opentype'),
|
630 |
+
url('fonts/cerber.ttf') format('truetype'),
|
631 |
+
url('fonts/cerber.woff') format('woff');
|
632 |
+
font-weight: normal;
|
633 |
+
font-style: normal;
|
634 |
+
}
|
635 |
+
|
636 |
+
#adminmenu .toplevel_page_cerber-security div.wp-menu-image::before {
|
637 |
+
font-family: "cerber-icon" !important;
|
638 |
+
content: '\10ffff';
|
639 |
+
-webkit-font-smoothing: antialiased;
|
640 |
+
-moz-osx-font-smoothing: grayscale;
|
641 |
+
/* padding: 4px 0 !important;
|
642 |
+
margin-left: -0.6em !important;
|
643 |
+
font-size: 23px !important;
|
644 |
+
*/
|
645 |
+
padding: 2px 0 !important;
|
646 |
+
margin-left: -0.6em !important;
|
647 |
+
font-size: 28px !important;
|
648 |
+
}
|
649 |
+
|
650 |
+
/* Avatars */
|
651 |
+
table.crb-avatar{
|
652 |
+
margin: 0.2em 0 0.2em 0;
|
653 |
+
border-collapse: collapse;
|
654 |
+
}
|
655 |
+
table.crb-avatar tr {
|
656 |
+
background: transparent !important;
|
657 |
+
}
|
658 |
+
table.crb-avatar td {
|
659 |
+
padding: 0;
|
660 |
+
vertical-align:top;
|
661 |
+
}
|
662 |
+
table.crb-avatar img{
|
663 |
+
margin-right: 10px;
|
664 |
+
}
|
665 |
+
table.crb-avatar p{
|
666 |
+
margin-bottom: 0;
|
667 |
+
}
|
668 |
+
table.crb-avatar a{
|
669 |
+
display:block;
|
670 |
+
margin-top:0;
|
671 |
+
line-height:100%;
|
672 |
+
}
|
673 |
+
|
674 |
+
/* Doesn't work */
|
675 |
+
.crb-table .avatar{
|
676 |
+
float: left;
|
677 |
+
margin-right: 10px;
|
678 |
+
}
|
679 |
+
|
680 |
+
/* Help tab */
|
681 |
+
#crb-help {
|
682 |
+
padding: 0 10px;
|
683 |
+
}
|
684 |
+
#crb-help h3{
|
685 |
+
margin-top: 2em;
|
686 |
+
margin-bottom: 0.4em;
|
687 |
+
}
|
688 |
+
#crb-help h3:first-child{
|
689 |
+
margin-top: 1em;
|
690 |
+
}
|
691 |
+
|
692 |
+
/* Help sign */
|
693 |
+
|
694 |
+
.help-sign {
|
695 |
+
margin-left: 6px;
|
696 |
+
padding: 2px 6px;
|
697 |
+
position: relative;
|
698 |
+
top: -1px;
|
699 |
+
text-decoration: none;
|
700 |
+
border: 1px solid #ccc;
|
701 |
+
border-radius: 2px;
|
702 |
+
background: #f7f7f7;
|
703 |
+
font-weight: 600;
|
704 |
+
font-size: 80%;
|
705 |
+
line-height: normal;
|
706 |
+
color: #0073aa;
|
707 |
+
}
|
assets/admin.js
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
|
3 |
+
$(".delete_entry").click(function () {
|
4 |
+
/* if (!confirm('<?php _e('Are you sure?','wp-cerber') ?>')) return; */
|
5 |
+
$.post(ajaxurl, {
|
6 |
+
action: 'cerber_ajax',
|
7 |
+
acl_delete: $(this).data('ip'),
|
8 |
+
ajax_nonce: crb_ajax_nonce
|
9 |
+
},
|
10 |
+
onDeleteSuccess
|
11 |
+
);
|
12 |
+
/*$(this).parent().parent().fadeOut(500);*/
|
13 |
+
/* $(this).closest("tr").FadeOut(500); */
|
14 |
+
});
|
15 |
+
function onDeleteSuccess(server_data) {
|
16 |
+
var cerber_response = $.parseJSON(server_data);
|
17 |
+
$('.delete_entry[data-ip="' + cerber_response['deleted_ip'] + '"]').parent().parent().fadeOut(300);
|
18 |
+
}
|
19 |
+
|
20 |
+
|
21 |
+
if ($(".crb-table").length) {
|
22 |
+
function setHostNames(server_data) {
|
23 |
+
var hostnames = $.parseJSON(server_data);
|
24 |
+
$(".crb-table .crb-no-hn").each(function (index) {
|
25 |
+
$(this).replaceWith(hostnames[$(this).data('ip-id')]);
|
26 |
+
});
|
27 |
+
}
|
28 |
+
|
29 |
+
var ip_list = $(".crb-table .crb-no-hn").map(
|
30 |
+
function () {
|
31 |
+
return $(this).data('ip-id');
|
32 |
+
}
|
33 |
+
);
|
34 |
+
if (ip_list.length != 0) {
|
35 |
+
$.post(ajaxurl, {
|
36 |
+
action: 'cerber_ajax',
|
37 |
+
get_hostnames: ip_list.toArray()
|
38 |
+
}, setHostNames);
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
/*
|
43 |
+
$('#add-acl-black').submit(function( event ) {
|
44 |
+
$(this).find('[name="add_acl_B"]').val($(this).find("button:focus").val());
|
45 |
+
});
|
46 |
+
*/
|
47 |
+
|
48 |
+
$(".cerber-dismiss").click(function () {
|
49 |
+
$(this).closest('.cerber-msg').fadeOut(500);
|
50 |
+
|
51 |
+
$.get(ajaxurl, {
|
52 |
+
action: 'cerber_ajax',
|
53 |
+
dismiss_info: 1,
|
54 |
+
button_id: $(this).attr('id'),
|
55 |
+
}
|
56 |
+
);
|
57 |
+
});
|
58 |
+
|
59 |
+
$(".diag-text").on("keypress", function(e) {
|
60 |
+
e.preventDefault();
|
61 |
+
});
|
62 |
+
|
63 |
+
});
|
assets/ajax-loader-ip.gif
ADDED
Binary file
|
assets/bgwidget.png
ADDED
Binary file
|
assets/flags/ad.gif
ADDED
Binary file
|
assets/flags/ae.gif
ADDED
Binary file
|
assets/flags/af.gif
ADDED
Binary file
|
assets/flags/ag.gif
ADDED
Binary file
|
assets/flags/ai.gif
ADDED
Binary file
|
assets/flags/al.gif
ADDED
Binary file
|
assets/flags/am.gif
ADDED
Binary file
|
assets/flags/an.gif
ADDED
Binary file
|
assets/flags/ao.gif
ADDED
Binary file
|
assets/flags/ar.gif
ADDED
Binary file
|
assets/flags/as.gif
ADDED
Binary file
|
assets/flags/at.gif
ADDED
Binary file
|
assets/flags/au.gif
ADDED
Binary file
|
assets/flags/aw.gif
ADDED
Binary file
|
assets/flags/ax.gif
ADDED
Binary file
|
assets/flags/az.gif
ADDED
Binary file
|
assets/flags/ba.gif
ADDED
Binary file
|
assets/flags/bb.gif
ADDED
Binary file
|
assets/flags/bd.gif
ADDED
Binary file
|
assets/flags/be.gif
ADDED
Binary file
|
assets/flags/bf.gif
ADDED
Binary file
|
assets/flags/bg.gif
ADDED
Binary file
|
assets/flags/bh.gif
ADDED
Binary file
|
assets/flags/bi.gif
ADDED
Binary file
|
assets/flags/bj.gif
ADDED
Binary file
|
assets/flags/bm.gif
ADDED
Binary file
|
assets/flags/bn.gif
ADDED
Binary file
|
assets/flags/bo.gif
ADDED
Binary file
|
assets/flags/br.gif
ADDED
Binary file
|
assets/flags/bs.gif
ADDED
Binary file
|
assets/flags/bt.gif
ADDED
Binary file
|
assets/flags/bv.gif
ADDED
Binary file
|
assets/flags/bw.gif
ADDED
Binary file
|
assets/flags/by.gif
ADDED
Binary file
|
assets/flags/bz.gif
ADDED
Binary file
|
assets/flags/ca.gif
ADDED
Binary file
|
assets/flags/cc.gif
ADDED
Binary file
|
assets/flags/cd.gif
ADDED
Binary file
|
assets/flags/cf.gif
ADDED
Binary file
|
assets/flags/cg.gif
ADDED
Binary file
|
assets/flags/ch.gif
ADDED
Binary file
|
assets/flags/ci.gif
ADDED
Binary file
|
assets/flags/ck.gif
ADDED
Binary file
|
assets/flags/cl.gif
ADDED
Binary file
|
assets/flags/cm.gif
ADDED
Binary file
|
assets/flags/cn.gif
ADDED
Binary file
|
assets/flags/co.gif
ADDED
Binary file
|
assets/flags/cr.gif
ADDED
Binary file
|
assets/flags/cs.gif
ADDED
Binary file
|
assets/flags/cu.gif
ADDED
Binary file
|
assets/flags/cv.gif
ADDED
Binary file
|
assets/flags/cx.gif
ADDED
Binary file
|
assets/flags/cy.gif
ADDED
Binary file
|
assets/flags/cz.gif
ADDED
Binary file
|
assets/flags/de.gif
ADDED
Binary file
|
assets/flags/dj.gif
ADDED
Binary file
|
assets/flags/dk.gif
ADDED
Binary file
|
assets/flags/dm.gif
ADDED
Binary file
|
assets/flags/do.gif
ADDED
Binary file
|
assets/flags/dz.gif
ADDED
Binary file
|
assets/flags/ec.gif
ADDED
Binary file
|
assets/flags/ee.gif
ADDED
Binary file
|
assets/flags/eg.gif
ADDED
Binary file
|
assets/flags/eh.gif
ADDED
Binary file
|
assets/flags/er.gif
ADDED
Binary file
|
assets/flags/es.gif
ADDED
Binary file
|
assets/flags/et.gif
ADDED
Binary file
|
assets/flags/eu.gif
ADDED
Binary file
|
assets/flags/fi.gif
ADDED
Binary file
|
assets/flags/fj.gif
ADDED
Binary file
|
assets/flags/fk.gif
ADDED
Binary file
|
assets/flags/fm.gif
ADDED
Binary file
|
assets/flags/fo.gif
ADDED
Binary file
|
assets/flags/fr.gif
ADDED
Binary file
|
assets/flags/ga.gif
ADDED
Binary file
|
assets/flags/gb.gif
ADDED
Binary file
|
assets/flags/gd.gif
ADDED
Binary file
|
assets/flags/ge.gif
ADDED
Binary file
|
assets/flags/gf.gif
ADDED
Binary file
|
assets/flags/gh.gif
ADDED
Binary file
|
assets/flags/gi.gif
ADDED
Binary file
|
assets/flags/gl.gif
ADDED
Binary file
|
assets/flags/gm.gif
ADDED
Binary file
|
assets/flags/gn.gif
ADDED
Binary file
|
assets/flags/gp.gif
ADDED
Binary file
|
assets/flags/gq.gif
ADDED
Binary file
|
assets/flags/gr.gif
ADDED
Binary file
|
assets/flags/gs.gif
ADDED
Binary file
|
assets/flags/gt.gif
ADDED
Binary file
|
assets/flags/gu.gif
ADDED
Binary file
|
assets/flags/gw.gif
ADDED
Binary file
|
assets/flags/gy.gif
ADDED
Binary file
|
assets/flags/hk.gif
ADDED
Binary file
|
assets/flags/hm.gif
ADDED
Binary file
|
assets/flags/hn.gif
ADDED
Binary file
|
assets/flags/hr.gif
ADDED
Binary file
|
assets/flags/ht.gif
ADDED
Binary file
|
assets/flags/hu.gif
ADDED
Binary file
|
assets/flags/id.gif
ADDED
Binary file
|
assets/flags/ie.gif
ADDED
Binary file
|
assets/flags/il.gif
ADDED
Binary file
|
assets/flags/in.gif
ADDED
Binary file
|
assets/flags/io.gif
ADDED
Binary file
|
assets/flags/iq.gif
ADDED
Binary file
|
assets/flags/ir.gif
ADDED
Binary file
|
assets/flags/is.gif
ADDED
Binary file
|
assets/flags/it.gif
ADDED
Binary file
|
assets/flags/jm.gif
ADDED
Binary file
|
assets/flags/jo.gif
ADDED
Binary file
|
assets/flags/jp.gif
ADDED
Binary file
|
assets/flags/ke.gif
ADDED
Binary file
|
assets/flags/kg.gif
ADDED
Binary file
|
assets/flags/kh.gif
ADDED
Binary file
|
assets/flags/ki.gif
ADDED
Binary file
|
assets/flags/km.gif
ADDED
Binary file
|
assets/flags/kn.gif
ADDED
Binary file
|
assets/flags/kp.gif
ADDED
Binary file
|
assets/flags/kr.gif
ADDED
Binary file
|
assets/flags/kw.gif
ADDED
Binary file
|
assets/flags/ky.gif
ADDED
Binary file
|
assets/flags/kz.gif
ADDED
Binary file
|
assets/flags/la.gif
ADDED
Binary file
|
assets/flags/lb.gif
ADDED
Binary file
|
assets/flags/lc.gif
ADDED
Binary file
|
assets/flags/li.gif
ADDED
Binary file
|
assets/flags/lk.gif
ADDED
Binary file
|
assets/flags/lr.gif
ADDED
Binary file
|
assets/flags/ls.gif
ADDED
Binary file
|
assets/flags/lt.gif
ADDED
Binary file
|
assets/flags/lu.gif
ADDED
Binary file
|
assets/flags/lv.gif
ADDED
Binary file
|
assets/flags/ly.gif
ADDED
Binary file
|
assets/flags/ma.gif
ADDED
Binary file
|
assets/flags/mc.gif
ADDED
Binary file
|
assets/flags/md.gif
ADDED
Binary file
|
assets/flags/me.gif
ADDED
Binary file
|
assets/flags/mg.gif
ADDED
Binary file
|
assets/flags/mh.gif
ADDED
Binary file
|
assets/flags/mk.gif
ADDED
Binary file
|
assets/flags/ml.gif
ADDED
Binary file
|
assets/flags/mm.gif
ADDED
Binary file
|
assets/flags/mn.gif
ADDED
Binary file
|
assets/flags/mo.gif
ADDED
Binary file
|
assets/flags/mp.gif
ADDED
Binary file
|
assets/flags/mq.gif
ADDED
Binary file
|
assets/flags/mr.gif
ADDED
Binary file
|
assets/flags/ms.gif
ADDED
Binary file
|
assets/flags/mt.gif
ADDED
Binary file
|
assets/flags/mu.gif
ADDED
Binary file
|
assets/flags/mv.gif
ADDED
Binary file
|
assets/flags/mw.gif
ADDED
Binary file
|
assets/flags/mx.gif
ADDED
Binary file
|
assets/flags/my.gif
ADDED
Binary file
|
assets/flags/mz.gif
ADDED
Binary file
|
assets/flags/na.gif
ADDED
Binary file
|
assets/flags/nc.gif
ADDED
Binary file
|
assets/flags/ne.gif
ADDED
Binary file
|
assets/flags/nf.gif
ADDED
Binary file
|
assets/flags/ng.gif
ADDED
Binary file
|
assets/flags/ni.gif
ADDED
Binary file
|
assets/flags/nl.gif
ADDED
Binary file
|
assets/flags/no.gif
ADDED
Binary file
|
assets/flags/np.gif
ADDED
Binary file
|
assets/flags/nr.gif
ADDED
Binary file
|
assets/flags/nu.gif
ADDED
Binary file
|
assets/flags/nz.gif
ADDED
Binary file
|
assets/flags/om.gif
ADDED
Binary file
|
assets/flags/pa.gif
ADDED
Binary file
|
assets/flags/pe.gif
ADDED
Binary file
|
assets/flags/pf.gif
ADDED
Binary file
|
assets/flags/pg.gif
ADDED
Binary file
|
assets/flags/ph.gif
ADDED
Binary file
|
assets/flags/pk.gif
ADDED
Binary file
|
assets/flags/pl.gif
ADDED
Binary file
|
assets/flags/pm.gif
ADDED
Binary file
|
assets/flags/pn.gif
ADDED
Binary file
|
assets/flags/pr.gif
ADDED
Binary file
|
assets/flags/ps.gif
ADDED
Binary file
|
assets/flags/pt.gif
ADDED
Binary file
|
assets/flags/pw.gif
ADDED
Binary file
|
assets/flags/py.gif
ADDED
Binary file
|
assets/flags/qa.gif
ADDED
Binary file
|
assets/flags/re.gif
ADDED
Binary file
|
assets/flags/ro.gif
ADDED
Binary file
|
assets/flags/rs.gif
ADDED
Binary file
|
assets/flags/ru.gif
ADDED
Binary file
|
assets/flags/rw.gif
ADDED
Binary file
|
assets/flags/sa.gif
ADDED
Binary file
|
assets/flags/sb.gif
ADDED
Binary file
|
assets/flags/sc.gif
ADDED
Binary file
|
assets/flags/sd.gif
ADDED
Binary file
|
assets/flags/se.gif
ADDED
Binary file
|
assets/flags/sg.gif
ADDED
Binary file
|
assets/flags/sh.gif
ADDED
Binary file
|
assets/flags/si.gif
ADDED
Binary file
|
assets/flags/sj.gif
ADDED
Binary file
|
assets/flags/sk.gif
ADDED
Binary file
|
assets/flags/sl.gif
ADDED
Binary file
|
assets/flags/sm.gif
ADDED
Binary file
|
assets/flags/sn.gif
ADDED
Binary file
|
assets/flags/so.gif
ADDED
Binary file
|
assets/flags/sr.gif
ADDED
Binary file
|
assets/flags/st.gif
ADDED
Binary file
|
assets/flags/sv.gif
ADDED
Binary file
|
assets/flags/sy.gif
ADDED
Binary file
|
assets/flags/sz.gif
ADDED
Binary file
|
assets/flags/tc.gif
ADDED
Binary file
|
assets/flags/td.gif
ADDED
Binary file
|
assets/flags/tf.gif
ADDED
Binary file
|
assets/flags/tg.gif
ADDED
Binary file
|
assets/flags/th.gif
ADDED
Binary file
|
assets/flags/tj.gif
ADDED
Binary file
|
assets/flags/tk.gif
ADDED
Binary file
|
assets/flags/tl.gif
ADDED
Binary file
|
assets/flags/tm.gif
ADDED
Binary file
|
assets/flags/tn.gif
ADDED
Binary file
|
assets/flags/to.gif
ADDED
Binary file
|
assets/flags/tr.gif
ADDED
Binary file
|
assets/flags/tt.gif
ADDED
Binary file
|
assets/flags/tv.gif
ADDED
Binary file
|
assets/flags/tw.gif
ADDED
Binary file
|
assets/flags/tz.gif
ADDED
Binary file
|
assets/flags/ua.gif
ADDED
Binary file
|
assets/flags/ug.gif
ADDED
Binary file
|
assets/flags/um.gif
ADDED
Binary file
|
assets/flags/us.gif
ADDED
Binary file
|
assets/flags/uy.gif
ADDED
Binary file
|
assets/flags/uz.gif
ADDED
Binary file
|
assets/flags/va.gif
ADDED
Binary file
|
assets/flags/vc.gif
ADDED
Binary file
|
assets/flags/ve.gif
ADDED
Binary file
|
assets/flags/vg.gif
ADDED
Binary file
|
assets/flags/vi.gif
ADDED
Binary file
|
assets/flags/vn.gif
ADDED
Binary file
|
assets/flags/vu.gif
ADDED
Binary file
|
assets/flags/wf.gif
ADDED
Binary file
|
assets/flags/ws.gif
ADDED
Binary file
|
assets/flags/ye.gif
ADDED
Binary file
|
assets/flags/yt.gif
ADDED
Binary file
|
assets/flags/za.gif
ADDED
Binary file
|
assets/flags/zm.gif
ADDED
Binary file
|
assets/flags/zw.gif
ADDED
Binary file
|
assets/fonts/cerber.eot
ADDED
Binary file
|
assets/fonts/cerber.ttf
ADDED
Binary file
|
assets/fonts/cerber.woff
ADDED
Binary file
|
assets/goo-translate.png
ADDED
Binary file
|
assets/icon-128x128.png
ADDED
Binary file
|
assets/icon-256x256.png
ADDED
Binary file
|
assets/inspector.png
ADDED
Binary file
|
cerber-lab.php
ADDED
@@ -0,0 +1,617 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Cerber Laboratory (cerberlab.net) specific routines.
|
4 |
+
|
5 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
6 |
+
|
7 |
+
Licenced under the GNU GPL.
|
8 |
+
|
9 |
+
This program is free software; you can redistribute it and/or modify
|
10 |
+
it under the terms of the GNU General Public License as published by
|
11 |
+
the Free Software Foundation; either version 3 of the License, or
|
12 |
+
(at your option) any later version.
|
13 |
+
|
14 |
+
This program is distributed in the hope that it will be useful,
|
15 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
+
GNU General Public License for more details.
|
18 |
+
|
19 |
+
You should have received a copy of the GNU General Public License
|
20 |
+
along with this program; if not, write to the Free Software
|
21 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
22 |
+
*/
|
23 |
+
|
24 |
+
/*
|
25 |
+
|
26 |
+
*========================================================================*
|
27 |
+
| |
|
28 |
+
| ATTENTION! Do not change or edit this file! |
|
29 |
+
| |
|
30 |
+
*========================================================================*
|
31 |
+
|
32 |
+
*/
|
33 |
+
|
34 |
+
// If this file is called directly, abort executing.
|
35 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
36 |
+
|
37 |
+
define( 'LAB_NODE_MAX', 7 ); // Maximum node ID
|
38 |
+
define( 'LAB_DELAY_MAX', 1500 ); // milliseconds, reasonable maximum of processing time while connecting to a node
|
39 |
+
define( 'LAB_RECHECK', 15 * 60 ); // seconds, allowed interval for rechecking nodes
|
40 |
+
define( 'LAB_INTERVAL', 180 ); // seconds, push interval
|
41 |
+
define( 'LAB_DNS_TTL', 3 * 24 * 3600 ); // seconds, interval of updating DNS cache for nodes IPs
|
42 |
+
define( 'LAB_IP_OK', 100 ); // an ideal, the best possible reputation
|
43 |
+
define( 'LAB_KEY_LENGTH', 32 );
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Is IP blocked globally in Cerber Lab?
|
47 |
+
*
|
48 |
+
* @param string $ip IP address to check against global black list
|
49 |
+
* @param bool $ask If true, send request to Cerber Lab if no IP in the local cache found
|
50 |
+
*
|
51 |
+
* @return bool true if IP is blocked
|
52 |
+
*/
|
53 |
+
function lab_is_blocked( $ip, $ask = true ) {
|
54 |
+
|
55 |
+
if ( is_ip_private( $ip ) ) {
|
56 |
+
return false;
|
57 |
+
}
|
58 |
+
|
59 |
+
$tag = cerber_acl_check( $ip );
|
60 |
+
if ( $tag == 'W' ) {
|
61 |
+
return false;
|
62 |
+
}
|
63 |
+
if ( $tag == 'B' ) {
|
64 |
+
return true;
|
65 |
+
}
|
66 |
+
|
67 |
+
$rep = lab_get_reputation( $ip, $ask );
|
68 |
+
|
69 |
+
if ( is_numeric( $rep ) && $rep < LAB_IP_OK ) {
|
70 |
+
return true;
|
71 |
+
}
|
72 |
+
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Return reputation for a given IP
|
78 |
+
*
|
79 |
+
* @param string $ip
|
80 |
+
* @param bool $ask If true, send request to Cerber Lab (if no IP in the local cache found)
|
81 |
+
*
|
82 |
+
* @return int Reputation for a given IP
|
83 |
+
*/
|
84 |
+
function lab_get_reputation( $ip, $ask = true ) {
|
85 |
+
global $wpdb;
|
86 |
+
|
87 |
+
if ( ! $ip = filter_var( $ip, FILTER_VALIDATE_IP ) ) {
|
88 |
+
return LAB_IP_OK;
|
89 |
+
}
|
90 |
+
if ( is_ip_private( $ip ) ) {
|
91 |
+
return LAB_IP_OK;
|
92 |
+
}
|
93 |
+
|
94 |
+
$reputation = $wpdb->get_var( 'SELECT reputation FROM ' . CERBER_LAB_IP_TABLE . ' WHERE ip = "' . $ip . '"' );
|
95 |
+
if ( is_numeric( $reputation ) ) {
|
96 |
+
return $reputation;
|
97 |
+
}
|
98 |
+
elseif (!$ask){
|
99 |
+
return LAB_IP_OK;
|
100 |
+
}
|
101 |
+
|
102 |
+
$ip_id = cerber_get_id_ip( $ip );
|
103 |
+
$lab_data = lab_api_send_request( array( 'ask_cerberlab' => array( $ip_id => $ip ) ) );
|
104 |
+
|
105 |
+
if ( ! $lab_data || empty( $lab_data['response'][ $ip_id ]['reputation'] ) ) {
|
106 |
+
$reputation = LAB_IP_OK;
|
107 |
+
$expires = time() + 3600;
|
108 |
+
}
|
109 |
+
else {
|
110 |
+
$rep = $lab_data['response'][ $ip_id ]['reputation'];
|
111 |
+
$reputation = absint( $rep['value'] );
|
112 |
+
$expires = time() + absint( $rep['ttl'] );
|
113 |
+
}
|
114 |
+
|
115 |
+
$wpdb->query( 'INSERT INTO ' . CERBER_LAB_IP_TABLE . ' (ip, reputation, expires) VALUES ("' . $ip . '",' . $reputation . ',' . $expires . ')' );
|
116 |
+
|
117 |
+
return $reputation;
|
118 |
+
}
|
119 |
+
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Send request to a Cerber Lab node.
|
123 |
+
*
|
124 |
+
* @param array $workload Workload
|
125 |
+
*
|
126 |
+
* @return array|bool
|
127 |
+
*/
|
128 |
+
function lab_api_send_request($workload = array()) {
|
129 |
+
global $node_delay;
|
130 |
+
|
131 |
+
$push = lab_get_push();
|
132 |
+
|
133 |
+
if (!$workload && !$push) return false;
|
134 |
+
|
135 |
+
$key = lab_get_key();
|
136 |
+
|
137 |
+
if ($workload && empty($key[2]) && !$push) {
|
138 |
+
return false;
|
139 |
+
}
|
140 |
+
|
141 |
+
$request = array(
|
142 |
+
'key' => $key,
|
143 |
+
'workload' => $workload,
|
144 |
+
'push' => $push,
|
145 |
+
'lang' => get_bloginfo( 'language' ),
|
146 |
+
'version' => CERBER_VER,
|
147 |
+
);
|
148 |
+
|
149 |
+
$ret = lab_send_request($request);
|
150 |
+
|
151 |
+
// If something goes wrong, take the next closest node
|
152 |
+
if (!$ret){
|
153 |
+
$ret = lab_send_request($request);
|
154 |
+
}
|
155 |
+
elseif (($node_delay * 1000) > LAB_DELAY_MAX){
|
156 |
+
lab_check_nodes(); // Recheck nodes for further requests
|
157 |
+
}
|
158 |
+
|
159 |
+
if ( $ret ) {
|
160 |
+
lab_trunc_push();
|
161 |
+
/*
|
162 |
+
if ( ! empty( $ret['response']['expires_gmt'] ) ) {
|
163 |
+
if ( $key[3] != $ret['response']['expires_gmt'] ) {
|
164 |
+
$key[3] = $ret['response']['expires_gmt'];
|
165 |
+
update_site_option( '_cerberkey_', $key );
|
166 |
+
}
|
167 |
+
}
|
168 |
+
*/
|
169 |
+
}
|
170 |
+
|
171 |
+
return $ret;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Send an HTTP request to a node.
|
176 |
+
* If the previous attempt was failed and $node_id is not set, use next closest node.
|
177 |
+
*
|
178 |
+
* @param $request array
|
179 |
+
* @param null $node_id Node ID if not set, will use the last closest and active node
|
180 |
+
* @param string $scheme http|https
|
181 |
+
*
|
182 |
+
* @return array|bool
|
183 |
+
*/
|
184 |
+
function lab_send_request($request, $node_id = null, $scheme = null) {
|
185 |
+
global $node_delay, $wp_cerber;
|
186 |
+
|
187 |
+
$node = lab_get_node($node_id);
|
188 |
+
if (!$scheme) {
|
189 |
+
if ($wp_cerber->getSettings('cerberproto')) $scheme = 'https';
|
190 |
+
else $scheme = 'http';
|
191 |
+
}
|
192 |
+
elseif ($scheme != 'http' || $scheme != 'https') $scheme = 'https';
|
193 |
+
|
194 |
+
$body = array();
|
195 |
+
$body['container'] = $request;
|
196 |
+
$body['nodes'] = lab_get_nodes();
|
197 |
+
|
198 |
+
$request_body = json_encode($body);
|
199 |
+
if (JSON_ERROR_NONE != json_last_error()) {
|
200 |
+
//'Unable to encode request: '.json_last_error_msg(), array(__FUNCTION__,__LINE__));
|
201 |
+
return false;
|
202 |
+
}
|
203 |
+
|
204 |
+
$headers = array(
|
205 |
+
'Host:'.$node[2],
|
206 |
+
'Content-Type: application/json',
|
207 |
+
'Accept: application/json',
|
208 |
+
'Cerber: '.CERBER_VER,
|
209 |
+
/* 'Authorization: Bearer ' . $fields['key']*/
|
210 |
+
);
|
211 |
+
|
212 |
+
$curl = @curl_init(); // @since 4.32
|
213 |
+
if (!$curl) return false;
|
214 |
+
|
215 |
+
curl_setopt_array($curl, array(
|
216 |
+
CURLOPT_URL => $scheme . '://' . $node[2] . '/engine/v1/',
|
217 |
+
CURLOPT_POST => true,
|
218 |
+
CURLOPT_HTTPHEADER => $headers,
|
219 |
+
CURLOPT_POSTFIELDS => $request_body,
|
220 |
+
CURLOPT_RETURNTRANSFER => true,
|
221 |
+
CURLOPT_USERAGENT => 'Cerber Security Plugin ' . CERBER_VER,
|
222 |
+
CURLOPT_CONNECTTIMEOUT => 2,
|
223 |
+
CURLOPT_TIMEOUT => 4, // including CURLOPT_CONNECTTIMEOUT
|
224 |
+
CURLOPT_DNS_CACHE_TIMEOUT => 4 * 3600,
|
225 |
+
CURLOPT_SSL_VERIFYHOST => 2,
|
226 |
+
CURLOPT_SSL_VERIFYPEER => true,
|
227 |
+
));
|
228 |
+
|
229 |
+
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
|
230 |
+
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
|
231 |
+
|
232 |
+
$start = microtime( true );
|
233 |
+
$data = curl_exec($curl);
|
234 |
+
$stop = microtime( true );
|
235 |
+
|
236 |
+
//if (!$data) // curl_error($curl) . curl_errno($curl) );
|
237 |
+
|
238 |
+
curl_close($curl);
|
239 |
+
|
240 |
+
$node_delay = $stop - $start;
|
241 |
+
|
242 |
+
$response = lab_parse_response( $data );
|
243 |
+
|
244 |
+
lab_update_node_last($node[0], array( $node_delay, $response['status'], $response['error'], time(), $scheme, $node[1] ));
|
245 |
+
|
246 |
+
if ($response['error']) return false;
|
247 |
+
return $response;
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Parse node response and detect possible errors
|
252 |
+
*
|
253 |
+
* @param $response
|
254 |
+
*
|
255 |
+
* @return array|mixed|object
|
256 |
+
*/
|
257 |
+
function lab_parse_response($response){
|
258 |
+
$ret = array( 'status' => 1, 'error' => false );
|
259 |
+
|
260 |
+
if (!empty($response)) {
|
261 |
+
$ret = json_decode( $response, true );
|
262 |
+
if ( JSON_ERROR_NONE != json_last_error() ) {
|
263 |
+
$ret['status'] = 0;
|
264 |
+
$ret['error'] = 'JSON ERROR: '.json_last_error_msg();
|
265 |
+
}
|
266 |
+
// Is everything is OK?
|
267 |
+
if (empty($ret['key']) || !empty($ret['error'])){
|
268 |
+
$ret['status'] = 0; // Not OK
|
269 |
+
}
|
270 |
+
}
|
271 |
+
else {
|
272 |
+
$ret['status'] = 0;
|
273 |
+
$ret['error'] = 'No node answer';
|
274 |
+
}
|
275 |
+
|
276 |
+
if (!isset($ret['error'])) $ret['error'] = false;
|
277 |
+
|
278 |
+
return $ret;
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Return "the best" (closest) node if $node_id is not specified
|
283 |
+
*
|
284 |
+
* @param $node_id integer node ID
|
285 |
+
* @return array first element is ID of closest node, second is an IP address
|
286 |
+
*/
|
287 |
+
function lab_get_node($node_id = null){
|
288 |
+
|
289 |
+
$node_id = absint($node_id);
|
290 |
+
if ($node_id) $best_id = $node_id;
|
291 |
+
else $best_id = null;
|
292 |
+
|
293 |
+
$nodes = lab_get_nodes();
|
294 |
+
|
295 |
+
if (!$best_id) {
|
296 |
+
if ( $nodes && ! empty( $nodes['best'] ) ) {
|
297 |
+
$best_id = $nodes['best'];
|
298 |
+
if ( ! $nodes['nodes'][ $best_id ]['last'][1] ) { // this node was not active at the last request
|
299 |
+
unset( $nodes['nodes'][ $best_id ] );
|
300 |
+
$best_id = lab_best_node( $nodes['nodes'] );
|
301 |
+
}
|
302 |
+
}
|
303 |
+
}
|
304 |
+
|
305 |
+
if (!$best_id || $best_id > LAB_NODE_MAX) $best_id = rand(1, LAB_NODE_MAX);
|
306 |
+
|
307 |
+
$name = 'node' . $best_id . '.cerberlab.net';
|
308 |
+
|
309 |
+
$host = null;
|
310 |
+
if ( ! empty( $nodes['nodes'][ $best_id ]['last'] ) ) {
|
311 |
+
$node = $nodes['nodes'][ $best_id ]['last'];
|
312 |
+
if ( $node[5] && ( time() - $node[3] ) < LAB_DNS_TTL ) {
|
313 |
+
$host = $node[5];
|
314 |
+
}
|
315 |
+
}
|
316 |
+
if ( ! $host ) {
|
317 |
+
$host = @gethostbyname( $name );
|
318 |
+
}
|
319 |
+
|
320 |
+
return array($best_id, $host, $name);
|
321 |
+
}
|
322 |
+
|
323 |
+
/**
|
324 |
+
* Check all nodes and find the closest and active one.
|
325 |
+
*
|
326 |
+
* @param bool $force if true perform check without checking allowed interval LAB_RECHECK
|
327 |
+
*
|
328 |
+
* @return bool|int
|
329 |
+
*/
|
330 |
+
function lab_check_nodes($force = false) {
|
331 |
+
|
332 |
+
$nodes = lab_get_nodes();
|
333 |
+
if (!$force && isset($nodes['last_check']) && (time() - $nodes['last_check']) < LAB_RECHECK ) return false;
|
334 |
+
|
335 |
+
$nodes['nodes'] = array(); // clean up before testing
|
336 |
+
update_site_option( '_cerberlab_', $nodes );
|
337 |
+
|
338 |
+
for ( $i = 1; $i <= LAB_NODE_MAX; $i ++ ) {
|
339 |
+
lab_send_request( array( 'test' => 'test', 'key' => 1 ), $i );
|
340 |
+
}
|
341 |
+
|
342 |
+
$nodes = lab_get_nodes();
|
343 |
+
$nodes['best'] = lab_best_node($nodes['nodes']);
|
344 |
+
$nodes['last_check'] = time();
|
345 |
+
|
346 |
+
update_site_option( '_cerberlab_', $nodes );
|
347 |
+
|
348 |
+
return $nodes['best'];
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Find the best (closest) and active node in the list of nodes
|
353 |
+
*
|
354 |
+
* @param array $nodes
|
355 |
+
*
|
356 |
+
* @return int
|
357 |
+
*/
|
358 |
+
function lab_best_node($nodes = array()){
|
359 |
+
$active_nodes = array();
|
360 |
+
foreach ( $nodes as $id => $data ) {
|
361 |
+
if ($data['last']['1']) $active_nodes[ $id ] = $data['last']['0']; // only active nodes must be in the list
|
362 |
+
}
|
363 |
+
if ($active_nodes){
|
364 |
+
asort( $active_nodes );
|
365 |
+
reset( $active_nodes );
|
366 |
+
$best_id = key( $active_nodes );
|
367 |
+
}
|
368 |
+
else $best_id = 0; // no active nodes found :-(
|
369 |
+
return $best_id;
|
370 |
+
}
|
371 |
+
/**
|
372 |
+
* Update node status
|
373 |
+
*
|
374 |
+
* @param $node_id
|
375 |
+
* @param array $last
|
376 |
+
*
|
377 |
+
* @return bool
|
378 |
+
*/
|
379 |
+
function lab_update_node_last($node_id, $last = array()) {
|
380 |
+
$nodes = lab_get_nodes();
|
381 |
+
if ( ! $nodes ) {
|
382 |
+
$nodes = array();
|
383 |
+
}
|
384 |
+
$nodes['nodes'][$node_id]['last'] = $last;
|
385 |
+
return update_site_option('_cerberlab_', $nodes);
|
386 |
+
}
|
387 |
+
|
388 |
+
function lab_get_nodes() {
|
389 |
+
return get_site_option( '_cerberlab_' );
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Small diagnostic report about nodes for admin
|
394 |
+
*
|
395 |
+
* @return string Report to show in Dashboard
|
396 |
+
*/
|
397 |
+
function lab_status(){
|
398 |
+
global $wp_cerber;
|
399 |
+
|
400 |
+
$ret = '';
|
401 |
+
|
402 |
+
if (!$wp_cerber->getSettings('cerberlab')) $ret .= '<p><b>Cerber Lab connection is disabled</b></p>';
|
403 |
+
|
404 |
+
$nodes = lab_get_nodes();
|
405 |
+
if (empty($nodes['nodes'])) return $ret . '<p>No information. No request has been made yet.</p>';
|
406 |
+
|
407 |
+
$ret .= '<table><tr><th>Node</th><th>Processing time</th><th>Operational status</th><th>Info</th><th>IP address</th><th>Last request</th><th>Protocol used</th></tr>';
|
408 |
+
foreach ( $nodes['nodes'] as $id => $node ) {
|
409 |
+
$delay = round(1000 * $node['last'][0]) . ' ms';
|
410 |
+
$ago = cerber_ago_time($node['last'][3]);
|
411 |
+
$status = $node['last'][1];
|
412 |
+
if ($status) {
|
413 |
+
$class = 'node-ok';
|
414 |
+
$status = '<span style = "color:green;">'.$status.'</span>';
|
415 |
+
}
|
416 |
+
else {
|
417 |
+
$class ='node-error';
|
418 |
+
$status = 'Down';
|
419 |
+
$delay = 'Unknown';
|
420 |
+
}
|
421 |
+
$ret .= '<tr class="'.$class.'"><td>'.$id.'</td><td>'.$delay.'</td><td>'.$status.'</td><td>'.$node['last'][2].'</td><td>'.$node['last'][5].'</td><td>'.$ago.'</td><td>'.$node['last'][4].'</td><td>';
|
422 |
+
}
|
423 |
+
$ret .= '</table>';
|
424 |
+
|
425 |
+
if (!empty($nodes['best'])) $ret .= '<p>Closest (fastest) node: '.$nodes['best'].'</p>';
|
426 |
+
if (!empty($nodes['last_check'])) $ret .= '<p>Last check for all nodes: '.cerber_ago_time($nodes['last_check']).'</p>';
|
427 |
+
$key = lab_get_key();
|
428 |
+
$ret .= '<p>Site ID: '.$key[0].'</p>';
|
429 |
+
|
430 |
+
return $ret;
|
431 |
+
}
|
432 |
+
/**
|
433 |
+
* Save data for lab
|
434 |
+
*
|
435 |
+
* @param $ip string IP address
|
436 |
+
* @param $reason_id integer Why IP is malicious
|
437 |
+
* @param $details
|
438 |
+
*/
|
439 |
+
function lab_save_push( $ip, $reason_id, $details ) {
|
440 |
+
global $wpdb, $wp_cerber;
|
441 |
+
if ( is_ip_private( $ip ) ) {
|
442 |
+
return;
|
443 |
+
}
|
444 |
+
if ( $wp_cerber->getSettings( 'cerberlab' ) ) {
|
445 |
+
$wpdb->insert( CERBER_LAB_TABLE, array(
|
446 |
+
'ip' => $ip,
|
447 |
+
'reason_id' => $reason_id,
|
448 |
+
'details' => $details,
|
449 |
+
'stamp' => time(),
|
450 |
+
), array( '%s', '%d', '%s', '%d' ) );
|
451 |
+
}
|
452 |
+
}
|
453 |
+
/**
|
454 |
+
* Get data for lab
|
455 |
+
*
|
456 |
+
* @return array|bool
|
457 |
+
*/
|
458 |
+
function lab_get_push() {
|
459 |
+
global $wpdb;
|
460 |
+
|
461 |
+
$result = $wpdb->get_results( 'SELECT * FROM ' . CERBER_LAB_TABLE, ARRAY_A );
|
462 |
+
if ( $result ) {
|
463 |
+
return array( 'type_1' => $result );
|
464 |
+
}
|
465 |
+
|
466 |
+
return false;
|
467 |
+
}
|
468 |
+
function lab_trunc_push(){
|
469 |
+
global $wpdb;
|
470 |
+
$wpdb->query( 'TRUNCATE TABLE ' . CERBER_LAB_TABLE );
|
471 |
+
}
|
472 |
+
|
473 |
+
add_action('shutdown','cerber_push_lab');
|
474 |
+
function cerber_push_lab() {
|
475 |
+
global $wp_cerber;
|
476 |
+
|
477 |
+
if (!$wp_cerber->getSettings('cerberlab')) return;
|
478 |
+
if ( get_transient( '_cerberpush_' ) ) {
|
479 |
+
return;
|
480 |
+
}
|
481 |
+
lab_api_send_request();
|
482 |
+
set_transient( '_cerberpush_', 1, LAB_INTERVAL );
|
483 |
+
}
|
484 |
+
|
485 |
+
function lab_get_key($regenerate = false){
|
486 |
+
$key = get_site_option( '_cerberkey_' );
|
487 |
+
if ($regenerate || !$key || !is_array($key)){
|
488 |
+
if (is_multisite()){
|
489 |
+
$home = network_home_url();
|
490 |
+
}
|
491 |
+
else {
|
492 |
+
$home = home_url();
|
493 |
+
}
|
494 |
+
if ( $host = parse_url( $home, PHP_URL_HOST ) ) {
|
495 |
+
$site_id = md5( $host );
|
496 |
+
}
|
497 |
+
else {
|
498 |
+
$site_id = md5( $home );
|
499 |
+
}
|
500 |
+
$new = array( $site_id, time() );
|
501 |
+
if (isset($key[2])) $new[2] = $key[2];
|
502 |
+
update_site_option( '_cerberkey_', $new );
|
503 |
+
}
|
504 |
+
return $key;
|
505 |
+
}
|
506 |
+
|
507 |
+
function lab_update_key( $lic, $expires = 0 ) {
|
508 |
+
$key = lab_get_key();
|
509 |
+
$key[2] = strtoupper($lic);
|
510 |
+
$key[3] = absint($expires);
|
511 |
+
update_site_option( '_cerberkey_', $key );
|
512 |
+
}
|
513 |
+
|
514 |
+
function lab_validate_key( $lic = '' ) {
|
515 |
+
$key = lab_get_key();
|
516 |
+
if (!$lic){
|
517 |
+
if (empty($key[2])) return false;
|
518 |
+
$lic = $key[2];
|
519 |
+
}
|
520 |
+
$request = array( 'key' => $key, 'validate' => $lic );
|
521 |
+
$i = LAB_NODE_MAX;
|
522 |
+
while ( !( $ret = lab_send_request( $request ) ) && $i > 0 ) {
|
523 |
+
$i--;
|
524 |
+
}
|
525 |
+
|
526 |
+
if (!$ret) return false;
|
527 |
+
|
528 |
+
$expires = 0;
|
529 |
+
if ( ! empty( $ret['response']['expires_gmt'] ) ) {
|
530 |
+
$expires = absint($ret['response']['expires_gmt']);
|
531 |
+
}
|
532 |
+
|
533 |
+
lab_update_key($lic, $expires);
|
534 |
+
|
535 |
+
if ( !$expires ) {
|
536 |
+
return false;
|
537 |
+
}
|
538 |
+
|
539 |
+
$df = get_option( 'date_format' );
|
540 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
541 |
+
|
542 |
+
return date_i18n( $df, $gmt_offset + $expires );
|
543 |
+
}
|
544 |
+
|
545 |
+
/**
|
546 |
+
* Opt in for the connection to Cerber Lab
|
547 |
+
*
|
548 |
+
*
|
549 |
+
*/
|
550 |
+
add_action( 'admin_notices', 'lab_opt_in');
|
551 |
+
add_action( 'network_admin_notices', 'lab_opt_in' );
|
552 |
+
function lab_opt_in(){
|
553 |
+
global $wp_cerber, $cerber_shown;
|
554 |
+
|
555 |
+
if ($cerber_shown || $wp_cerber->getSettings('cerberlab')) return;
|
556 |
+
if (!cerber_is_admin_page(false)) return;
|
557 |
+
|
558 |
+
// Avoid more than one message on the screen
|
559 |
+
// TODO: to many checks!
|
560 |
+
if (get_site_option('cerber_admin_notice', null)) return;
|
561 |
+
if (get_site_option('cerber_admin_message', null)) return;
|
562 |
+
if (get_site_option('cerber_admin_info', null)) return;
|
563 |
+
if ( $o = get_site_option( '_lab_o' . 'pt_in_' ) ) {
|
564 |
+
//if ( $o[0] == 'NO' && ( $o[1] + 3600 * 24 * 30 ) > time() ) {
|
565 |
+
if ( ($o[1] + 3600 * 24 * 30 ) > time() ) {
|
566 |
+
return;
|
567 |
+
}
|
568 |
+
}
|
569 |
+
if ($c = get_site_option('_cerber_activated')){
|
570 |
+
$c = maybe_unserialize($c);
|
571 |
+
if (!empty($c['time']) && ($c['time'] + 3600 * 24 * 7) > time()){
|
572 |
+
return;
|
573 |
+
}
|
574 |
+
}
|
575 |
+
|
576 |
+
$h = __('Want to make WP Cerber even more powerful?','wp-cerber');
|
577 |
+
$text = __('Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time.','wp-cerber');
|
578 |
+
$ok = __('OK, nail them all','wp-cerber');
|
579 |
+
$no = __('NO, maybe later','wp-cerber');
|
580 |
+
$more = '<a href="http://wpcerber.com/cerber-laboratory/" target="_blank">' . __( 'Know more', 'wp-cerber' ) . '</a>';
|
581 |
+
|
582 |
+
$msg = '<h3>' . $h . '</h3><p>' . $text . '</p>';
|
583 |
+
|
584 |
+
$assets_url = plugin_dir_url( CERBER_FILE ) . 'assets';
|
585 |
+
$notice =
|
586 |
+
'<table><tr><td><img style="width:100px; float:left; margin-left:-10px;" src="' . $assets_url . '/icon-128x128.png"></td>' .
|
587 |
+
'<td style ="max-width: 850px;">' . $msg .
|
588 |
+
'<p style="float:left;">' . $more . '</p>
|
589 |
+
<p style="text-align:right;">
|
590 |
+
<input type="button" id = "lab_ok" class="button button-primary cerber-dismiss" value=" ' . $ok . ' "/>
|
591 |
+
<input type="button" id = "lab_no" class="button button-primary cerber-dismiss" value=" ' . $no . ' "/>
|
592 |
+
</p></td></tr></table>';
|
593 |
+
|
594 |
+
echo '<div class="updated cerber-msg" style="overflow: auto;"><p>' . $notice . '</p></div>';
|
595 |
+
|
596 |
+
}
|
597 |
+
|
598 |
+
/**
|
599 |
+
* Save a user choice
|
600 |
+
*
|
601 |
+
* @param string $button
|
602 |
+
*/
|
603 |
+
function lab_user_opt_in( $button = '' ) {
|
604 |
+
$a = null;
|
605 |
+
if ( $button == 'lab_ok' ) {
|
606 |
+
$a = array( 'YES', time() );
|
607 |
+
$o = get_site_option( CERBER_OPT );
|
608 |
+
$o['cerberlab'] = 1;
|
609 |
+
update_site_option( CERBER_OPT, $o );
|
610 |
+
}
|
611 |
+
if ( $button == 'lab_no' ) {
|
612 |
+
$a = array( 'NO', time() );
|
613 |
+
}
|
614 |
+
if ( $a ) {
|
615 |
+
update_site_option( '_lab_o' . 'pt_in_', $a );
|
616 |
+
}
|
617 |
+
}
|
cerber-news.php
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL.
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
/*
|
23 |
+
|
24 |
+
*========================================================================*
|
25 |
+
| |
|
26 |
+
| ATTENTION! Do not change or edit this file! |
|
27 |
+
| |
|
28 |
+
*========================================================================*
|
29 |
+
|
30 |
+
*/
|
31 |
+
|
32 |
+
// If this file is called directly, abort executing.
|
33 |
+
if ( ! defined( 'WPINC' ) ) {
|
34 |
+
exit;
|
35 |
+
}
|
36 |
+
|
37 |
+
|
38 |
+
function cerber_push_the_news( $version ) {
|
39 |
+
|
40 |
+
$news['3.0'] =
|
41 |
+
'<h3>Welcome a new version with reCAPTCHA and WordPress filters</h3>
|
42 |
+
<ul>
|
43 |
+
<li>Now you can use Google reCAPTCHA to protect WordPress registration form from spam registrations. Also reCAPTCHA available for lost password and login forms. <a href="http://wpcerber.com/how-to-setup-recaptcha/">How to setup reCAPTCHA</a>.</li>
|
44 |
+
<li>The registration process, WordPress registration form, XML-RPC, WP REST API are controlled by <a href="http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">IP Access Lists</a>.</li>
|
45 |
+
<li>Registration is impossible if a particular IP address is locked out.</li>
|
46 |
+
<li>Registration with a prohibited username is impossible.</li>
|
47 |
+
<li><a href="http://wpcerber.com/wp-cerber-hooks/">A set of filters and actions</a>. They are useful if you want to customize some aspects of the plugin as you want.</li>
|
48 |
+
<li>A new action <strong>Get WHOIS info</strong> that obtains detailed WHOIS information about given IP address. You can use it in vary <a href="http://jetflow.io">jetFlow.io automation scenarios</a>. For instance, you can monitor countries from what your users are logged in on the website or you <a href="http://wpcerber.com/notifications-on-wordpress-user-logs-in/">monitor user logins with notifications</a>.</li>
|
49 |
+
<li>A new trigger <strong>IP locked out</strong> that starts automation scenario after a suspicious IP address has been locked out by the WP Cerber plugin.</li>
|
50 |
+
</ul>
|
51 |
+
|
52 |
+
';
|
53 |
+
|
54 |
+
$news['4.0'] =
|
55 |
+
'<h3>Welcome a new version with extended Access Lists and reCAPTCHA for WooCommerce</h3>
|
56 |
+
<ul>
|
57 |
+
<li>reCAPTCHA for WooCommerce forms. <a href="http://wpcerber.com/how-to-setup-recaptcha/">How to set up reCAPTCHA</a>.</li>
|
58 |
+
<li>IP Access Lists has got support for IP networks in three forms: ability to restrict access with IPv4 ranges, IPv4 CIDR notation and IPv4 subnets: A,B,C has been added. Read more: <a href="http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Access Lists for WordPress</a>.</li>
|
59 |
+
<li>Cerber can automatically detect an IP network of an intruder and suggest you to block the entire network right from the Activity screen.</li>
|
60 |
+
<!-- <li>reCAPTCHA will not be shown and processed for IP addresses from the White IP Access List.</li> -->
|
61 |
+
</ul>
|
62 |
+
|
63 |
+
<p><a href="http://wpcerber.com/wp-cerber-security-4-0/" target="_blank">Read a full list of changes and improvements</a></p>
|
64 |
+
';
|
65 |
+
|
66 |
+
$news['4.3'] =
|
67 |
+
'<h3>What\'s new in version 4.3</h3>
|
68 |
+
<ul>
|
69 |
+
<li>Do you want to keep eye on specific activity on your website? I have good news for you! Track them like a PRO. Use powerful subscriptions to get email notifications according to filters for events you have set. Filter out activities that you are interested to monitor and then click Subscribe. <a href="http://wpcerber.com/wordpress-notifications-made-easy/">Read more</a></li>
|
70 |
+
<li>Search and/or filter activity by IP address, username (login), specific event and a user. You can use any combination of them. </li>
|
71 |
+
<li>Now you can export activity from your WordPress website to a CSV file. You can export all activities or a set of filtered activities only as it described above. When you will import the CSV file in your spreadsheet editor, don\'t forget to select UTF-8 charset.</li>
|
72 |
+
<li>You can use multiple email addresses for notifications (Main Settings -> Notifications -> Email Address). Use a comma to specify several addresses.</li>
|
73 |
+
</ul>
|
74 |
+
';
|
75 |
+
|
76 |
+
$news['4.5'][] = 'Instant mobile and browser notifications with Pushbullet. Get notified instantly via push notifications when an important event happens on your WordPress.';
|
77 |
+
$news['4.5'][] = 'Ability to choose a 404 page template. The plugin will try to use the 404 template from the active theme, and this is a default behavior or a generate simple 404 page like Apache web server does.';
|
78 |
+
$news['4.5'][] = 'Events on the Activity tab are displaying with user roles and avatars.';
|
79 |
+
|
80 |
+
$news['4.7.7'][] = 'Welcome invisible reCAPTCHA. You can choose what type you want to use: classic visible or new invisible reCAPTCHA. <a target="_blank" href="http://wpcerber.com/how-to-setup-recaptcha/">How to setup</a>.';
|
81 |
+
$news['4.7.7'][] = 'reCAPTCHA for comment forms is available now. Stop spam comments – use reCAPTCHA as an anti-spam tool for WordPress comment forms.';
|
82 |
+
$news['4.7.7'][] = 'Dates on the plugin dashboard now are displayed according to the Site Language.';
|
83 |
+
$news['4.7.7'][] = '<a target="_blank" href="https://www.facebook.com/pg/wpcerber/reviews/">You can leave a review on Facebook now.</a>';
|
84 |
+
|
85 |
+
$news['5.0'][] = 'Cerber has got a new antispam and bot detection engine that protects comment and user registration forms from bot attacks. No reCAPTCHA is needed anymore! After several attempts bot IP will be locked out.';
|
86 |
+
$news['5.0'][] = 'Now you can tell Cerber either to mark detected spam comments as spam or deny them completely.';
|
87 |
+
$news['5.0'][] = 'Optionally Cerber can automatically move spam comments older than the specified amount of days to trash.';
|
88 |
+
$news['5.0'][] = 'Added code to avoid possible conflict between Custom login URL and REST API.';
|
89 |
+
$news['5.0'][] = 'Added the <i>cerber_404_template</i> filter for specifying an alternative to the default 404 page not found template.';
|
90 |
+
|
91 |
+
|
92 |
+
if ( ! empty( $news[ $version ] ) ) {
|
93 |
+
//$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
|
94 |
+
|
95 |
+
$text = '<h3>Highlights from WP Cerber '.$version.'</h3>';
|
96 |
+
|
97 |
+
$text .= '<ul><li>'.implode('</li><li>', $news[ $version ]).'</li></ul>';
|
98 |
+
|
99 |
+
$text .= ' <p style="margin-top: 18px;"><a href="http://wpcerber.com/security/releases/" target="_blank">Change log</a></p>';
|
100 |
+
|
101 |
+
$text .= ' <p style="margin-top: 24px;"><span class="dashicons-before dashicons-email-alt"></span> <a href="http://wpcerber.com/subscribe-newsletter/">Subscribe to Cerber\'s newsletter</a></p>
|
102 |
+
<p><span class="dashicons-before dashicons-twitter"></span> <a href="https://twitter.com/wpcerber">Follow Cerber on Twitter</a></p>
|
103 |
+
<p><span class="dashicons-before dashicons-facebook"></span> <a href="https://www.facebook.com/wpcerber/">Follow Cerber on Facebook</a></p>
|
104 |
+
';
|
105 |
+
cerber_admin_info( $text );
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
cerber-tools.php
ADDED
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
/*
|
23 |
+
|
24 |
+
*========================================================================*
|
25 |
+
| |
|
26 |
+
| ATTENTION! Do not change or edit this file! |
|
27 |
+
| |
|
28 |
+
*========================================================================*
|
29 |
+
|
30 |
+
*/
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Display Tools admin page
|
34 |
+
*
|
35 |
+
*/
|
36 |
+
function cerber_tools_page() {
|
37 |
+
|
38 |
+
$tab = cerber_get_tab( 'imex', array( 'imex', 'diagnostic', 'license' ) );
|
39 |
+
|
40 |
+
?>
|
41 |
+
<div class="wrap">
|
42 |
+
|
43 |
+
<h2><?php _e( 'Tools', 'wp-cerber' ) ?></h2>
|
44 |
+
|
45 |
+
<h2 class="nav-tab-wrapper cerber-tabs">
|
46 |
+
<?php
|
47 |
+
|
48 |
+
echo '<a href="' . cerber_admin_link('imex') . '" class="nav-tab ' . ( $tab == 'imex' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-admin-generic"></span> ' . __('Export & Import') . '</a>';
|
49 |
+
echo '<a href="' . cerber_admin_link('diagnostic') . '" class="nav-tab ' . ( $tab == 'diagnostic' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-admin-tools"></span> ' . __('Diagnostic') . '</a>';
|
50 |
+
//echo '<a href="' . cerber_admin_link('license') . '" class="nav-tab ' . ( $tab == 'license' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-id-alt"></span> ' . __('License') . '</a>';
|
51 |
+
|
52 |
+
?>
|
53 |
+
</h2>
|
54 |
+
|
55 |
+
<?php
|
56 |
+
|
57 |
+
cerber_show_aside( 'tools' );
|
58 |
+
|
59 |
+
echo '<div class="crb-main">';
|
60 |
+
|
61 |
+
switch ($tab){
|
62 |
+
case 'diagnostic':
|
63 |
+
cerber_show_diag();
|
64 |
+
break;
|
65 |
+
case 'license':
|
66 |
+
cerber_show_lic();
|
67 |
+
break;
|
68 |
+
default: cerber_show_imex();
|
69 |
+
}
|
70 |
+
|
71 |
+
echo '</div>';
|
72 |
+
|
73 |
+
?>
|
74 |
+
</div>
|
75 |
+
<?php
|
76 |
+
}
|
77 |
+
|
78 |
+
/*
|
79 |
+
Show Tools screen
|
80 |
+
*/
|
81 |
+
function cerber_show_imex(){
|
82 |
+
global $wpdb;
|
83 |
+
$form = '<h3>'.__('Export settings to the file','wp-cerber').'</h3>';
|
84 |
+
$form .= '<p>'.__('When you click the button below you will get a configuration file, which you can upload on another site.','wp-cerber').'</p>';
|
85 |
+
$form .= '<p>'.__('What do you want to export?','wp-cerber').'</p><form action="" method="get">';
|
86 |
+
$form .= '<input id="exportset" name="exportset" value="1" type="checkbox" checked> <label for="exportset">'.__('Settings','wp-cerber').'</label>';
|
87 |
+
$form .= '<p><input id="exportacl" name="exportacl" value="1" type="checkbox" checked> <label for="exportacl">'.__('Access Lists','wp-cerber').'</label>';
|
88 |
+
$form .= '<p><input type="submit" name="cerber_export" id="submit" class="button button-primary" value="'.__('Download file','wp-cerber').'"></form>';
|
89 |
+
|
90 |
+
$form .= '<h3 style="margin-top:2em;">'.__('Import settings from the file','wp-cerber').'</h3>';
|
91 |
+
$form .= '<p>'.__('When you click the button below, file will be uploaded and all existing settings will be overridden.','wp-cerber').'</p>';
|
92 |
+
$form .= '<p>'.__('Select file to import.','wp-cerber').' '. sprintf( __( 'Maximum upload file size: %s.'), esc_html(size_format(wp_max_upload_size())));
|
93 |
+
$form .= '<form action="" method="post" enctype="multipart/form-data">'.wp_nonce_field( 'crb_import', 'crb_field');
|
94 |
+
$form .= '<p><input type="file" name="ifile" id="ifile" required="required">';
|
95 |
+
$form .= '<p>'.__('What do you want to import?','wp-cerber').'</p><p><input id="importset" name="importset" value="1" type="checkbox" checked> <label for="importset">'.__('Settings','wp-cerber').'</label>';
|
96 |
+
$form .= '<p><input id="importacl" name="importacl" value="1" type="checkbox" checked> <label for="importacl">'.__('Access Lists','wp-cerber').'</label>';
|
97 |
+
$form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="'.__('Upload file','wp-cerber').'"></p></form>';
|
98 |
+
echo $form;
|
99 |
+
}
|
100 |
+
/*
|
101 |
+
Create export file
|
102 |
+
*/
|
103 |
+
add_action('admin_init','cerber_export');
|
104 |
+
function cerber_export(){
|
105 |
+
global $wpdb;
|
106 |
+
if ($_SERVER['REQUEST_METHOD']!='GET' || !isset($_GET['cerber_export'])) return;
|
107 |
+
if (!current_user_can('manage_options')) wp_die('Error!');
|
108 |
+
$p = cerber_plugin_data();
|
109 |
+
$data = array('cerber_version' => $p['Version'],'home'=> get_home_url(),'date'=>date('d M Y H:i:s'));
|
110 |
+
if (!empty($_GET['exportset'])) $data ['options'] = cerber_get_options(); // @since 2.0
|
111 |
+
if (!empty($_GET['exportacl'])) $data ['acl'] = cerber_acl_all('ip,tag,comments');
|
112 |
+
$file = json_encode($data);
|
113 |
+
$file .= '==/'.strlen($file).'/'.crc32($file).'/EOF';
|
114 |
+
header($_SERVER["SERVER_PROTOCOL"].' 200 OK');
|
115 |
+
header("Content-type: application/force-download");
|
116 |
+
header("Content-Type: application/octet-stream");
|
117 |
+
header("Content-Disposition: attachment; filename=wpcerber.config");
|
118 |
+
echo $file;
|
119 |
+
exit;
|
120 |
+
}
|
121 |
+
/*
|
122 |
+
Load and Parse file and import settings
|
123 |
+
*/
|
124 |
+
add_action('admin_init','cerber_import');
|
125 |
+
function cerber_import(){
|
126 |
+
global $wpdb, $wp_cerber;
|
127 |
+
if (!isset($_POST['cerber_import']) || $_SERVER['REQUEST_METHOD']!='POST') return;
|
128 |
+
check_admin_referer('crb_import','crb_field');
|
129 |
+
if (!current_user_can('manage_options')) wp_die('Upload failed.');
|
130 |
+
$ok = true;
|
131 |
+
if (!is_uploaded_file($_FILES['ifile']['tmp_name'])) {
|
132 |
+
cerber_admin_notice( __('No file was uploaded or file is corrupted','wp-cerber'));
|
133 |
+
return;
|
134 |
+
}
|
135 |
+
elseif ($file = file_get_contents($_FILES['ifile']['tmp_name'])) {
|
136 |
+
$p = strrpos($file,'==/');
|
137 |
+
$data = substr($file,0,$p);
|
138 |
+
$sys = explode('/',substr($file,$p));
|
139 |
+
if ($sys[3] == 'EOF' && crc32($data) == $sys[2] && ($data = json_decode($data, true))) {
|
140 |
+
|
141 |
+
if ($_POST['importset'] && $data['options'] && !empty($data['options']) && is_array($data['options'])) {
|
142 |
+
$data['options']['loginpath'] = urldecode($data['options']['loginpath']); // needed to work filter cerber_sanitize_options()
|
143 |
+
if ($data['home'] != get_home_url()) {
|
144 |
+
$data['options']['sitekey'] = $wp_cerber->getSettings('sitekey');
|
145 |
+
$data['options']['secretkey'] = $wp_cerber->getSettings('secretkey');
|
146 |
+
}
|
147 |
+
cerber_save_options($data['options']); // @since 2.0
|
148 |
+
}
|
149 |
+
|
150 |
+
if ($_POST['importacl'] && $data['acl'] && is_array($data['acl']) && !empty($data['acl'])) {
|
151 |
+
$acl_ok = true;
|
152 |
+
if (false === $wpdb->query("DELETE FROM ".CERBER_ACL_TABLE)) $acl_ok = false;
|
153 |
+
foreach($data['acl'] as $row) {
|
154 |
+
// if (!$wpdb->query($wpdb->prepare('INSERT INTO '.CERBER_ACL_TABLE.' (ip,tag,comments) VALUES (%s,%s,%s)',$row[0],$row[1],$row[2]))) $acl_ok = false;
|
155 |
+
// @since 3.1 if (!$wpdb->insert(CERBER_ACL_TABLE,array('ip'=>$row[0],'tag'=>$row[1],'comments'=>$row[2]),array('%s','%s','%s'))) $acl_ok = false;
|
156 |
+
$ip = cerber_parse_ip($row[0]);
|
157 |
+
if (!cerber_acl_add($ip,$row[1])){
|
158 |
+
$acl_ok = false;
|
159 |
+
break;
|
160 |
+
}
|
161 |
+
}
|
162 |
+
if (!$acl_ok) cerber_admin_notice(__('Error while updating','wp-cerber').' '.__('Access Lists','wp-cerber'));
|
163 |
+
}
|
164 |
+
|
165 |
+
cerber_admin_message( __('Settings has imported successfully from','wp-cerber').' '.$_FILES['ifile']['name']);
|
166 |
+
}
|
167 |
+
else $ok = false;
|
168 |
+
}
|
169 |
+
if (!$ok) cerber_admin_notice(__('Error while parsing file','wp-cerber'));
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Displays admin diagnostic page
|
174 |
+
*/
|
175 |
+
function cerber_show_diag(){
|
176 |
+
?>
|
177 |
+
<!-- <h3 style="margin-top: 3em;">Diagnostic and maintenance</h3>
|
178 |
+
<a href="#" onclick="toggle_visibility('diagnostic'); return false;">Show diagnostic information</a>
|
179 |
+
-->
|
180 |
+
<form id="diagnostic" style="margin-top: 2em;">
|
181 |
+
<div class="diag-section">
|
182 |
+
<h3>WordPress info</h3>
|
183 |
+
<div class="diag-text"><?php echo cerber_wp_diag(); ?></div>
|
184 |
+
</div>
|
185 |
+
<div class="diag-section">
|
186 |
+
<h3>Database info</h3>
|
187 |
+
<?php echo cerber_db_diag(); ?>
|
188 |
+
<?php echo '<p style="text-align: right;"><a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'force_repair_db' => 1 ) ), 'control', 'cerber_nonce' ) . '"><span class="dashicons dashicons-admin-tools" style="vertical-align: middle;"></span> Repair tables</a></p>'; ?>
|
189 |
+
</div>
|
190 |
+
<div class="diag-section">
|
191 |
+
<h3>Server info</h3>
|
192 |
+
<textarea name="dia"><?php
|
193 |
+
echo 'PHP version: ' . phpversion() . "\n";
|
194 |
+
$server = $_SERVER;
|
195 |
+
unset($server['HTTP_COOKIE']);
|
196 |
+
foreach ( $server as $key => $value ) {
|
197 |
+
echo '[' . $key . '] => ' . @strip_tags( $value ) . "\n";
|
198 |
+
}
|
199 |
+
?>
|
200 |
+
</textarea>
|
201 |
+
</div>
|
202 |
+
<div class="diag-section">
|
203 |
+
<h3>Cerber Lab status</h3>
|
204 |
+
<?php
|
205 |
+
echo lab_status();
|
206 |
+
echo '<p style="text-align: right;"><a class="button button-secondary" href="'.wp_nonce_url(add_query_arg(array('force_check_nodes'=>1)),'control','cerber_nonce').'">Force recheck nodes</a></p>';
|
207 |
+
?>
|
208 |
+
</div>
|
209 |
+
</form>
|
210 |
+
<script type="text/javascript">
|
211 |
+
function toggle_visibility(id) {
|
212 |
+
var e = document.getElementById(id);
|
213 |
+
if(e.style.display === 'block')
|
214 |
+
e.style.display = 'none';
|
215 |
+
else
|
216 |
+
e.style.display = 'block';
|
217 |
+
}
|
218 |
+
</script>
|
219 |
+
<?php
|
220 |
+
}
|
221 |
+
|
222 |
+
function cerber_show_lic() {
|
223 |
+
$key = lab_get_key();
|
224 |
+
$valid = '';
|
225 |
+
if ( ! empty( $key[2] ) ) {
|
226 |
+
$lic = $key[2];
|
227 |
+
if ( $expires = lab_validate_key( $lic ) ) {
|
228 |
+
$valid = '<span style="color: green;">This key is valid until '.$expires.'</span>';
|
229 |
+
}
|
230 |
+
else {
|
231 |
+
$valid = '<span style="color: red;">This key is invalid</span>';
|
232 |
+
}
|
233 |
+
}
|
234 |
+
else {
|
235 |
+
$lic = '';
|
236 |
+
}
|
237 |
+
?>
|
238 |
+
<form method="post">
|
239 |
+
<table class="form-table">
|
240 |
+
<tbody>
|
241 |
+
<tr>
|
242 |
+
<th scope="row">License key for PRO version</th>
|
243 |
+
<td>
|
244 |
+
<input name="cerber_license" value="<?php echo $lic; ?>" size="<?php echo LAB_KEY_LENGTH; ?>" maxlength="<?php echo LAB_KEY_LENGTH; ?>" type="text">
|
245 |
+
<?php echo '<p>'.$valid.'</p>'; ?>
|
246 |
+
</td>
|
247 |
+
</tr>
|
248 |
+
<tbody>
|
249 |
+
</table>
|
250 |
+
<div style="padding-left: 220px">
|
251 |
+
<?php
|
252 |
+
wp_nonce_field('control','cerber_nonce');
|
253 |
+
submit_button();
|
254 |
+
?>
|
255 |
+
</div>
|
256 |
+
</form>
|
257 |
+
<?php
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* Display reCAPTCHA admin page
|
262 |
+
*
|
263 |
+
*/
|
264 |
+
function cerber_recaptcha_page() {
|
265 |
+
?>
|
266 |
+
<div class="wrap">
|
267 |
+
<h2><?php _e( 'Antispam and bot detection settings', 'wp-cerber' ) ?></h2>
|
268 |
+
<?php
|
269 |
+
cerber_show_aside( 'recaptcha' );
|
270 |
+
echo '<div class="crb-main">';
|
271 |
+
cerber_show_settings( 'recaptcha' );
|
272 |
+
echo '</div';
|
273 |
+
?>
|
274 |
+
</div>
|
275 |
+
<?php
|
276 |
+
}
|
common.php
ADDED
@@ -0,0 +1,532 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL.
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
|
21 |
+
*/
|
22 |
+
|
23 |
+
/*
|
24 |
+
|
25 |
+
*========================================================================*
|
26 |
+
| |
|
27 |
+
| ATTENTION! Do not change or edit this file! |
|
28 |
+
| |
|
29 |
+
*========================================================================*
|
30 |
+
|
31 |
+
*/
|
32 |
+
|
33 |
+
// If this file is called directly, abort executing.
|
34 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Return a link (full URL) to a Cerber admin settings page.
|
38 |
+
* Add a particular tab and GET parameters if they are specified
|
39 |
+
*
|
40 |
+
* @param string $tab Tab on the page
|
41 |
+
* @param array $args GET arguments to add to the URL
|
42 |
+
*
|
43 |
+
* @return string Full URL
|
44 |
+
*/
|
45 |
+
function cerber_admin_link($tab = '', $args = array()){
|
46 |
+
//return add_query_arg(array('record_id'=>$record_id,'mode'=>'view_record'),admin_url('admin.php?page=storage'));
|
47 |
+
|
48 |
+
if ( in_array( $tab, array( 'recaptcha' ) ) ) {
|
49 |
+
$page = 'cerber-'.$tab;
|
50 |
+
$tab = null;
|
51 |
+
}
|
52 |
+
if ( in_array( $tab, array( 'imex', 'diagnostic', 'license' ) ) ) {
|
53 |
+
$page = 'cerber-tools';
|
54 |
+
}
|
55 |
+
else $page = 'cerber-security';
|
56 |
+
|
57 |
+
if (!is_multisite()) {
|
58 |
+
$link = admin_url('admin.php?page='.$page);
|
59 |
+
}
|
60 |
+
else {
|
61 |
+
$link = network_admin_url('admin.php?page='.$page);
|
62 |
+
}
|
63 |
+
|
64 |
+
if ( $tab ) {
|
65 |
+
$link .= '&tab=' . $tab;
|
66 |
+
}
|
67 |
+
|
68 |
+
if ( $args ) {
|
69 |
+
foreach ( $args as $arg => $value ) {
|
70 |
+
$link .= '&' . $arg . '=' . urlencode( $value );
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
return $link;
|
75 |
+
}
|
76 |
+
function cerber_activity_link($set = array()){
|
77 |
+
$filter = '';
|
78 |
+
foreach ( $set as $item ) {
|
79 |
+
$filter .= '&filter_activity[]=' . $item;
|
80 |
+
}
|
81 |
+
return cerber_admin_link( 'activity' ) . $filter;
|
82 |
+
}
|
83 |
+
|
84 |
+
function cerber_pb_get_devices($token = ''){
|
85 |
+
global $wp_cerber;
|
86 |
+
$ret = array();
|
87 |
+
|
88 |
+
if (!$token){
|
89 |
+
if (!$token = $wp_cerber->getSettings('pbtoken')) return false;
|
90 |
+
}
|
91 |
+
|
92 |
+
$curl = @curl_init();
|
93 |
+
if (!$curl) return false;
|
94 |
+
|
95 |
+
$headers = array(
|
96 |
+
'Authorization: Bearer ' . $token
|
97 |
+
);
|
98 |
+
|
99 |
+
curl_setopt_array($curl, array(
|
100 |
+
CURLOPT_URL => 'https://api.pushbullet.com/v2/devices',
|
101 |
+
CURLOPT_HTTPHEADER => $headers,
|
102 |
+
CURLOPT_RETURNTRANSFER => true,
|
103 |
+
CURLOPT_CONNECTTIMEOUT => 2,
|
104 |
+
CURLOPT_TIMEOUT => 4, // including CURLOPT_CONNECTTIMEOUT
|
105 |
+
CURLOPT_DNS_CACHE_TIMEOUT => 4 * 3600,
|
106 |
+
));
|
107 |
+
|
108 |
+
$result = curl_exec($curl);
|
109 |
+
$curl_error = curl_error($curl);
|
110 |
+
curl_close($curl);
|
111 |
+
|
112 |
+
$response = json_decode( $result, true );
|
113 |
+
|
114 |
+
if ( JSON_ERROR_NONE == json_last_error() && isset( $response['devices'] ) ) {
|
115 |
+
foreach ( $response['devices'] as $device ) {
|
116 |
+
$ret[ $device['iden'] ] = $device['nickname'];
|
117 |
+
}
|
118 |
+
}
|
119 |
+
else {
|
120 |
+
if ($response['error']){
|
121 |
+
$e = 'Pushbullet ' . $response['error']['message'];
|
122 |
+
}
|
123 |
+
elseif ($curl_error){
|
124 |
+
$e = $curl_error;
|
125 |
+
}
|
126 |
+
else $e = 'Unknown cURL error';
|
127 |
+
|
128 |
+
cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) .' '. $e);
|
129 |
+
}
|
130 |
+
|
131 |
+
return $ret;
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Send push message via Pushbullet
|
136 |
+
*
|
137 |
+
* @param $title
|
138 |
+
* @param $body
|
139 |
+
*
|
140 |
+
* @return bool
|
141 |
+
*/
|
142 |
+
function cerber_pb_send($title, $body){
|
143 |
+
global $wp_cerber;
|
144 |
+
|
145 |
+
if (!$body) return false;
|
146 |
+
if (!$token = $wp_cerber->getSettings('pbtoken')) return false;
|
147 |
+
|
148 |
+
$params = array('type' => 'note', 'title' => $title, 'body' => $body, 'sender_name' => 'WP Cerber');
|
149 |
+
|
150 |
+
if ($device = $wp_cerber->getSettings('pbdevice')) {
|
151 |
+
if ($device && $device != 'all' && $device != 'N') $params['device_iden'] = $device;
|
152 |
+
}
|
153 |
+
|
154 |
+
$headers = array('Access-Token: '.$token,'Content-Type: application/json');
|
155 |
+
|
156 |
+
$curl = @curl_init();
|
157 |
+
if (!$curl) return false;
|
158 |
+
|
159 |
+
curl_setopt_array($curl, array(
|
160 |
+
CURLOPT_URL => 'https://api.pushbullet.com/v2/pushes',
|
161 |
+
CURLOPT_POST => true,
|
162 |
+
CURLOPT_HTTPHEADER => $headers,
|
163 |
+
CURLOPT_POSTFIELDS => json_encode($params),
|
164 |
+
CURLOPT_RETURNTRANSFER => true,
|
165 |
+
CURLOPT_CONNECTTIMEOUT => 2,
|
166 |
+
CURLOPT_TIMEOUT => 4, // including CURLOPT_CONNECTTIMEOUT
|
167 |
+
CURLOPT_DNS_CACHE_TIMEOUT => 4 * 3600,
|
168 |
+
));
|
169 |
+
|
170 |
+
$result = curl_exec($curl);
|
171 |
+
$curl_error = curl_error($curl);
|
172 |
+
curl_close($curl);
|
173 |
+
|
174 |
+
return $curl_error;
|
175 |
+
}
|
176 |
+
/**
|
177 |
+
* Just test is cURL available
|
178 |
+
*/
|
179 |
+
function cerber_check_environment(){
|
180 |
+
if (!in_array('curl', get_loaded_extensions())) {
|
181 |
+
cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' cURL PHP library is not enabled on your website.');
|
182 |
+
}
|
183 |
+
else {
|
184 |
+
$curl = @curl_init();
|
185 |
+
if (!$curl && ($err_msg = curl_error($curl))) cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) .' '. $err_msg);
|
186 |
+
curl_close($curl);
|
187 |
+
}
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Health check up and self-repairing vital parts
|
192 |
+
*
|
193 |
+
*/
|
194 |
+
function cerber_watchdog() {
|
195 |
+
if ( ! cerber_is_table( CERBER_LOG_TABLE )
|
196 |
+
|| ! cerber_is_table( CERBER_BLOCKS_TABLE )
|
197 |
+
|| ! cerber_is_table( CERBER_LAB_IP_TABLE )) {
|
198 |
+
cerber_create_db(false);
|
199 |
+
cerber_upgrade_db();
|
200 |
+
}
|
201 |
+
}
|
202 |
+
/**
|
203 |
+
* Get ip_id for IP.
|
204 |
+
* The ip_id can be safely used for array indexes and in any HTML code
|
205 |
+
* @since 2.2
|
206 |
+
*
|
207 |
+
* @param $ip string IP address
|
208 |
+
* @return string ID for given IP
|
209 |
+
*/
|
210 |
+
function cerber_get_id_ip( $ip ) {
|
211 |
+
$ip_id = str_replace( '.', '-', $ip, $count );
|
212 |
+
if ( ! $count ) { // IPv6
|
213 |
+
$ip_id = str_replace( ':', '_', $ip_id );
|
214 |
+
}
|
215 |
+
return $ip_id;
|
216 |
+
}
|
217 |
+
/**
|
218 |
+
* Get IP from ip_id
|
219 |
+
* @since 2.2
|
220 |
+
*
|
221 |
+
* @param $ip_id string ID for an IP
|
222 |
+
*
|
223 |
+
* @return string IP address for given ID
|
224 |
+
*/
|
225 |
+
function cerber_get_ip_id( $ip_id ) {
|
226 |
+
$ip = str_replace( '-', '.', $ip_id, $count );
|
227 |
+
if ( ! $count ) { // IPv6
|
228 |
+
$ip = str_replace( '_', ':', $ip );
|
229 |
+
}
|
230 |
+
return $ip;
|
231 |
+
}
|
232 |
+
/**
|
233 |
+
* Check if given IP address is an valid single IP v4 address
|
234 |
+
*
|
235 |
+
* @param $ip
|
236 |
+
*
|
237 |
+
* @return bool
|
238 |
+
*/
|
239 |
+
function cerber_is_ipv4($ip){
|
240 |
+
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) return true;
|
241 |
+
return false;
|
242 |
+
}
|
243 |
+
/**
|
244 |
+
* Check if a given IP address belongs to a private network (private IP).
|
245 |
+
* Universal: support IPv6 and IPv4.
|
246 |
+
*
|
247 |
+
* @param $ip string An IP address to check
|
248 |
+
*
|
249 |
+
* @return bool True if IP is in the private range, false otherwise
|
250 |
+
*/
|
251 |
+
function is_ip_private($ip) {
|
252 |
+
|
253 |
+
if ( ! filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE ) ) {
|
254 |
+
return true;
|
255 |
+
}
|
256 |
+
elseif ( ! filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE ) ) {
|
257 |
+
return true;
|
258 |
+
}
|
259 |
+
|
260 |
+
return false;
|
261 |
+
}
|
262 |
+
|
263 |
+
|
264 |
+
/**
|
265 |
+
* Convert multilevel object or array of objects to associative array recursively
|
266 |
+
*
|
267 |
+
* @param $var object|array
|
268 |
+
*
|
269 |
+
* @return array result of conversion
|
270 |
+
* @since 3.0
|
271 |
+
*/
|
272 |
+
function obj_to_arr_deep($var) {
|
273 |
+
if (is_object($var)) {
|
274 |
+
$var = get_object_vars($var);
|
275 |
+
}
|
276 |
+
if (is_array($var)) {
|
277 |
+
return array_map(__FUNCTION__, $var);
|
278 |
+
}
|
279 |
+
else {
|
280 |
+
return $var;
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Search for a key in the given multidimensional array
|
286 |
+
*
|
287 |
+
* @param $array
|
288 |
+
* @param $needle
|
289 |
+
*
|
290 |
+
* @return bool
|
291 |
+
*/
|
292 |
+
function recursive_search_key($array, $needle){
|
293 |
+
foreach($array as $key => $value){
|
294 |
+
if ((string)$key == (string)$needle){
|
295 |
+
return true;
|
296 |
+
}
|
297 |
+
if(is_array($value)){
|
298 |
+
$ret = recursive_search_key($value, $needle);
|
299 |
+
if ($ret == true) return true;
|
300 |
+
}
|
301 |
+
}
|
302 |
+
return false;
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Return true if a REST API URL has been requested
|
307 |
+
*
|
308 |
+
* @return bool
|
309 |
+
* @since 3.0
|
310 |
+
*/
|
311 |
+
function cerber_is_rest_url(){
|
312 |
+
if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
|
313 |
+
return true;
|
314 |
+
}
|
315 |
+
if (false !== strpos($_SERVER['REQUEST_URI'], rest_get_url_prefix()) || false !== strpos($_SERVER['REQUEST_URI'], '?rest_route=')){
|
316 |
+
if (0 === strpos(get_home_url().urldecode($_SERVER['REQUEST_URI']),get_rest_url())) {
|
317 |
+
return true;
|
318 |
+
}
|
319 |
+
}
|
320 |
+
return false;
|
321 |
+
}
|
322 |
+
|
323 |
+
/*
|
324 |
+
* Sets of human readable labels for vary activity/logs events
|
325 |
+
* @since 1.0
|
326 |
+
*
|
327 |
+
*/
|
328 |
+
function cerber_get_labels($type = 'activity'){
|
329 |
+
$labels = array();
|
330 |
+
if ($type == 'activity') {
|
331 |
+
|
332 |
+
// User actions
|
333 |
+
$labels[1]=__('User created','wp-cerber');
|
334 |
+
$labels[2]=__('User registered','wp-cerber');
|
335 |
+
$labels[5]=__('Logged in','wp-cerber');
|
336 |
+
$labels[6]=__('Logged out','wp-cerber');
|
337 |
+
$labels[7]=__('Login failed','wp-cerber');
|
338 |
+
|
339 |
+
// Cerber actions - IP specific - lockouts
|
340 |
+
$labels[10]=__('IP blocked','wp-cerber');
|
341 |
+
$labels[11]=__('Subnet blocked','wp-cerber');
|
342 |
+
// Cerber actions - common
|
343 |
+
$labels[12]=__('Citadel activated!','wp-cerber');
|
344 |
+
$labels[16]=__('Spam comment denied','wp-cerber');
|
345 |
+
|
346 |
+
// Cerber status // TODO: should be separated as another list ---------
|
347 |
+
$labels[13]=__('Locked out','wp-cerber');
|
348 |
+
$labels[14]=__('IP blacklisted','wp-cerber');
|
349 |
+
// @since 4.9
|
350 |
+
$labels[15]=__('by Cerber Lab','wp-cerber');
|
351 |
+
// --------------------------------------------------------------
|
352 |
+
|
353 |
+
// Other actions
|
354 |
+
$labels[20]=__('Password changed','wp-cerber');
|
355 |
+
$labels[21]=__('Password reset requested','wp-cerber');
|
356 |
+
|
357 |
+
$labels[40]=__('reCAPTCHA verification failed','wp-cerber');
|
358 |
+
$labels[41]=__('reCAPTCHA settings are incorrect','wp-cerber');
|
359 |
+
$labels[42]=__('Request to the Google reCAPTCHA service failed','wp-cerber');
|
360 |
+
|
361 |
+
$labels[50]=__('Attempt to access prohibited URL','wp-cerber');
|
362 |
+
$labels[51]=__('Attempt to log in with non-existent username','wp-cerber');
|
363 |
+
$labels[52]=__('Attempt to log in with prohibited username','wp-cerber');
|
364 |
+
// @since 4.9 // TODO should be a cerber action?
|
365 |
+
$labels[53]=__('Attempt to log in denied','wp-cerber');
|
366 |
+
$labels[54]=__('Attempt to register denied','wp-cerber');
|
367 |
+
|
368 |
+
}
|
369 |
+
return $labels;
|
370 |
+
}
|
371 |
+
|
372 |
+
function cerber_get_reason($id){
|
373 |
+
$labels = array();
|
374 |
+
$ret = __('Unknown','wp-cerber');
|
375 |
+
$labels[1]= __('Limit on login attempts is reached','wp-cerber');
|
376 |
+
$labels[2]= __('Attempt to access', 'wp-cerber' );
|
377 |
+
$labels[3]= __('Attempt to log in with non-existent username','wp-cerber');
|
378 |
+
$labels[4]= __('Attempt to log in with prohibited username','wp-cerber');
|
379 |
+
$labels[5]= __('Limit on failed reCAPTCHA verifications is reached','wp-cerber');
|
380 |
+
$labels[6]= __('Bot activity is detected','wp-cerber');
|
381 |
+
|
382 |
+
if (isset($labels[$id])) $ret = $labels[$id];
|
383 |
+
return $ret;
|
384 |
+
}
|
385 |
+
|
386 |
+
function cerber_admin_info($msg, $type = 'normal'){
|
387 |
+
$assets_url = plugin_dir_url(CERBER_FILE).'assets';
|
388 |
+
update_site_option('cerber_admin_info',
|
389 |
+
'<table><tr><td><img style="float:left; margin-left:-10px;" src="'.$assets_url.'/icon-128x128.png"></td>'.
|
390 |
+
'<td>'.$msg.
|
391 |
+
'<p style="text-align:right;">
|
392 |
+
<input type="button" class="button button-primary cerber-dismiss" value=" OK "/></p></td></tr></table>');
|
393 |
+
}
|
394 |
+
|
395 |
+
function cerber_db_error_log($msg = null){
|
396 |
+
global $wpdb;
|
397 |
+
if (!$msg) $msg = array($wpdb->last_error, $wpdb->last_query, date('Y-m-d H:i:s'));
|
398 |
+
$old = get_site_option( '_cerber_db_errors');
|
399 |
+
if (!$old) $old = array();
|
400 |
+
update_site_option( '_cerber_db_errors', array_merge($old,$msg));
|
401 |
+
}
|
402 |
+
|
403 |
+
|
404 |
+
/**
|
405 |
+
* Save admin error message for further displaying
|
406 |
+
*
|
407 |
+
* @param string $msg
|
408 |
+
*/
|
409 |
+
function cerber_admin_notice($msg){
|
410 |
+
if (!$msg) return;
|
411 |
+
update_site_option('cerber_admin_notice', $msg);
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Save admin info message for further displaying
|
416 |
+
*
|
417 |
+
* @param string $msg
|
418 |
+
*/
|
419 |
+
function cerber_admin_message($msg){
|
420 |
+
if (!$msg) return;
|
421 |
+
update_site_option('cerber_admin_message', $msg);
|
422 |
+
}
|
423 |
+
/**
|
424 |
+
* Return human readable "ago" time
|
425 |
+
*
|
426 |
+
* @param $time integer Unix timestamp - time of an event
|
427 |
+
*
|
428 |
+
* @return string
|
429 |
+
*/
|
430 |
+
function cerber_ago_time($time){
|
431 |
+
|
432 |
+
return sprintf( __( '%s ago' ), human_time_diff( $time ) );
|
433 |
+
}
|
434 |
+
|
435 |
+
function cerber_percent($one,$two){
|
436 |
+
if ($one == 0) {
|
437 |
+
if ($two > 0) $ret = '100';
|
438 |
+
else $ret = '0';
|
439 |
+
}
|
440 |
+
else {
|
441 |
+
$ret = round (((($two - $one)/$one)) * 100);
|
442 |
+
}
|
443 |
+
$style='';
|
444 |
+
if ($ret < 0) $style='color:#008000';
|
445 |
+
elseif ($ret > 0) $style='color:#FF0000';
|
446 |
+
if ($ret > 0) $ret = '+'.$ret;
|
447 |
+
return '<span style="'.$style.'">'.$ret.' %</span>';
|
448 |
+
}
|
449 |
+
|
450 |
+
/**
|
451 |
+
* Return a user by login or email with automatic detection
|
452 |
+
*
|
453 |
+
* @param $login_email string login or email
|
454 |
+
*
|
455 |
+
* @return false|WP_User
|
456 |
+
*/
|
457 |
+
function cerber_get_user( $login_email ) {
|
458 |
+
if ( is_email( $login_email ) ) {
|
459 |
+
return get_user_by( 'email', $login_email );
|
460 |
+
}
|
461 |
+
|
462 |
+
return get_user_by( 'login', $login_email );
|
463 |
+
}
|
464 |
+
|
465 |
+
/**
|
466 |
+
* Check if a DB table exists
|
467 |
+
*
|
468 |
+
* @param $table
|
469 |
+
*
|
470 |
+
* @return bool true if table exists in the DB
|
471 |
+
*/
|
472 |
+
function cerber_is_table( $table ) {
|
473 |
+
global $wpdb;
|
474 |
+
if ( ! $wpdb->get_row( "SHOW TABLES LIKE '" . $table . "'" ) ) {
|
475 |
+
return false;
|
476 |
+
}
|
477 |
+
|
478 |
+
return true;
|
479 |
+
}
|
480 |
+
|
481 |
+
/**
|
482 |
+
* Check if a column is defined in a table
|
483 |
+
*
|
484 |
+
* @param $table string DB table name
|
485 |
+
* @param $column string Field name
|
486 |
+
*
|
487 |
+
* @return bool true if field exists in a table
|
488 |
+
*/
|
489 |
+
function cerber_is_column( $table, $column ) {
|
490 |
+
global $wpdb;
|
491 |
+
$result = $wpdb->get_row( 'SHOW FIELDS FROM ' . $table . " WHERE FIELD = '" . $column . "'" );
|
492 |
+
if ( ! $result ) {
|
493 |
+
return false;
|
494 |
+
}
|
495 |
+
|
496 |
+
return true;
|
497 |
+
}
|
498 |
+
|
499 |
+
/**
|
500 |
+
* Check if a table has an index
|
501 |
+
*
|
502 |
+
* @param $table string DB table name
|
503 |
+
* @param $key string Index name
|
504 |
+
*
|
505 |
+
* @return bool true if an index defined for a table
|
506 |
+
*/
|
507 |
+
function cerber_is_index( $table, $key ) {
|
508 |
+
global $wpdb;
|
509 |
+
$result = $wpdb->get_results( 'SHOW INDEX FROM ' . $table . " WHERE KEY_NAME = '" . $key . "'" );
|
510 |
+
if ( ! $result ) {
|
511 |
+
return false;
|
512 |
+
}
|
513 |
+
|
514 |
+
return true;
|
515 |
+
}
|
516 |
+
|
517 |
+
/**
|
518 |
+
* Return reCAPTCHA language code for reCAPTCHA widget
|
519 |
+
*
|
520 |
+
* @return string
|
521 |
+
*/
|
522 |
+
function cerber_recaptcha_lang() {
|
523 |
+
static $lang = '';
|
524 |
+
if (!$lang) {
|
525 |
+
$lang = get_bloginfo( 'language' );
|
526 |
+
//$trans = array('en-US' => 'en', 'de-DE' => 'de');
|
527 |
+
//if (isset($trans[$lang])) $lang = $trans[$lang];
|
528 |
+
$lang = substr( $lang, 0, 2 );
|
529 |
+
}
|
530 |
+
|
531 |
+
return $lang;
|
532 |
+
}
|
dashboard.php
ADDED
@@ -0,0 +1,1678 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL.
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
/*
|
23 |
+
|
24 |
+
*========================================================================*
|
25 |
+
| |
|
26 |
+
| ATTENTION! Do not change or edit this file! |
|
27 |
+
| |
|
28 |
+
*========================================================================*
|
29 |
+
|
30 |
+
*/
|
31 |
+
|
32 |
+
|
33 |
+
|
34 |
+
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
|
39 |
+
|
40 |
+
|
41 |
+
|
42 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
43 |
+
|
44 |
+
require_once( dirname( __FILE__ ) . '/cerber-tools.php' );
|
45 |
+
|
46 |
+
/*
|
47 |
+
Display lockouts in dashboard for admins
|
48 |
+
*/
|
49 |
+
function cerber_show_lockouts($args = array(), $echo = true){
|
50 |
+
global $wpdb, $wp_cerber;
|
51 |
+
|
52 |
+
//$wp_cerber->deleteGarbage();
|
53 |
+
|
54 |
+
if (!empty($args['per_page'])) $per_page = $args['per_page'];
|
55 |
+
else $per_page = cerber_get_per_page();
|
56 |
+
|
57 |
+
$limit = (cerber_get_pn() - 1) * $per_page.','.$per_page;
|
58 |
+
|
59 |
+
if ($rows = $wpdb->get_results('SELECT * FROM '. CERBER_BLOCKS_TABLE . ' ORDER BY block_until DESC LIMIT '.$limit)) {
|
60 |
+
//$total=$wpdb->get_var('SELECT count(ip) FROM '. CERBER_BLOCKS_TABLE);
|
61 |
+
$total= cerber_blocked_num();
|
62 |
+
$list=array();
|
63 |
+
$base_url = cerber_admin_link('activity');
|
64 |
+
$assets_url = plugin_dir_url(CERBER_FILE).'assets/';
|
65 |
+
foreach ($rows as $row) {
|
66 |
+
$ip = '<a href="'.$base_url.'&filter_ip='.$row->ip.'">'.$row->ip.'</a>';
|
67 |
+
$ip_info = cerber_get_ip_info($row->ip,true);
|
68 |
+
if (isset($ip_info['hostname'])) $hostname = $ip_info['hostname'];
|
69 |
+
else {
|
70 |
+
$ip_id = cerber_get_id_ip($row->ip);
|
71 |
+
$hostname = '<img data-ip-id="'.$ip_id .'" class="crb-no-hn" src="'.$assets_url.'ajax-loader-ip.gif" />'."\n";
|
72 |
+
}
|
73 |
+
|
74 |
+
$list[]='<td>'.$ip.'</td><td>'.$hostname.'</td><td>'.cerber_date($row->block_until).'</td><td>'.$row->reason.'</td><td><a href="'.wp_nonce_url(add_query_arg(array('lockdelete'=>$row->ip)),'control','cerber_nonce').'">'.__('Remove','wp-cerber').'</a></td>';
|
75 |
+
|
76 |
+
}
|
77 |
+
$titles = '<tr><th>'.__('IP','wp-cerber').'</th><th>'.__('Hostname','wp-cerber').'</th><th>'.__('Expires','wp-cerber').'</th><th>'.__('Reason','wp-cerber').'</th><th>'.__('Action','wp-cerber').'</th></tr>';
|
78 |
+
$table = '<table class="widefat crb-table cerber-margin"><thead>'.$titles.'</thead><tfoot>'.$titles.'</tfoot>'.implode('</tr><tr>',$list).'</tr></table>';
|
79 |
+
|
80 |
+
if (empty($args['no_navi'])) $table .= cerber_page_navi($total,$per_page);
|
81 |
+
|
82 |
+
//echo '<h3>'.sprintf(__('Showing last %d records from %d','wp-cerber'),count($rows),$total).'</h3>';
|
83 |
+
$showing = '<h3>'.sprintf(__('Showing last %d records from %d','wp-cerber'),count($rows),$total).'</h3>';
|
84 |
+
|
85 |
+
$view = '<p><b>'.__('Hint','wp-cerber').':</b> ' . __('To view activity, click on the IP','wp-cerber').'</p>';
|
86 |
+
}
|
87 |
+
else {
|
88 |
+
$table = '';
|
89 |
+
$view = '<p>'.sprintf(__('No lockouts at the moment. The sky is clear.','wp-cerber')).'</p>';
|
90 |
+
}
|
91 |
+
$ret = $table.'<div class="cerber-margin">'.$view.'</div>';
|
92 |
+
|
93 |
+
if ($echo) echo $ret;
|
94 |
+
else return $ret;
|
95 |
+
}
|
96 |
+
|
97 |
+
/*
|
98 |
+
ACL management form in dashboard
|
99 |
+
*/
|
100 |
+
function cerber_acl_form(){
|
101 |
+
global $wp_cerber;
|
102 |
+
echo '<h2>'.__('White IP Access List','wp-cerber').'</h2><p><span style="color:green;" class="dashicons-before dashicons-thumbs-up"></span> '.__('These IPs will never be locked out','wp-cerber').' - <a target="_blank" href="http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Know more</a></p>'.
|
103 |
+
cerber_acl_get_table('W');
|
104 |
+
echo '<h2>'.__('Black IP Access List','wp-cerber').'</h2><p><span style="color:red;" class="dashicons-before dashicons-thumbs-down"></span> '.__('Nobody can log in or register from these IPs','wp-cerber').' - <a target="_blank" href="http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Know more</a></p>'.
|
105 |
+
cerber_acl_get_table('B');
|
106 |
+
echo '<p><b><span class="dashicons-before dashicons-star-filled"></span> '.__('Your IP','wp-cerber').': '.$wp_cerber->getRemoteIp().'</b></p>';
|
107 |
+
echo '<h4 style="margin-top: 2em;"><span class="dashicons-before dashicons-info"></span> Possible values for entries in the access lists with examples</h4>
|
108 |
+
<p>Single IPv6 address: <b>2001:0db8:85a3:0000:0000:8a2e:0370:7334</b>
|
109 |
+
<p>Single IPv4 address: <b>192.168.5.22</b>
|
110 |
+
<p>IPv4 addresses range with dash: <b>192.168.1.45 - 192.168.22.165</b>
|
111 |
+
<p>IPv4 CIDR: <b>192.168.128.0/24</b>
|
112 |
+
<p>IPv4 subnet Class A: <b>192.*.*.*</b>
|
113 |
+
<p>IPv4 subnet Class B: <b>192.168.*.*</b>
|
114 |
+
<p>IPv4 subnet Class C: <b>192.168.77.*</b>';
|
115 |
+
}
|
116 |
+
/*
|
117 |
+
Create HTML to display ACL area: table + form
|
118 |
+
*/
|
119 |
+
function cerber_acl_get_table($tag){
|
120 |
+
global $wpdb;
|
121 |
+
$activity_url = cerber_admin_link('activity');
|
122 |
+
if ($rows = $wpdb->get_results('SELECT * FROM '. CERBER_ACL_TABLE . " WHERE tag = '".$tag."' ORDER BY ip_long_begin, ip")) {
|
123 |
+
foreach ($rows as $row) $list[]='<td>'.$row->ip.'</td><td><a class="delete_entry" href="javascript:void(0)" data-ip="'.$row->ip.'">'.__('Remove','wp-cerber').'</a></td><td><a href="'.$activity_url.'&filter_ip='.urlencode($row->ip).'">'.__('Check for activity','wp-cerber').'</a></td>';
|
124 |
+
$ret = '<table id="acl_'.$tag.'" class="acl-table"><tr>'.implode('</tr><tr>',$list).'</tr></table>';
|
125 |
+
}
|
126 |
+
else $ret='<p style="text-align: center;">- <i>'.__('List is empty','wp-cerber').'</i> -</p>';
|
127 |
+
$ret = '<div class="acl-wrapper"><div class="acl-items">'
|
128 |
+
.$ret.'</div><form action="" method="post">
|
129 |
+
<table><tr><td><input type="text" name="add_acl_'.$tag.'" required placeholder="Enter IP address, IPv4 addresses range or subnet">
|
130 |
+
</td><td><input type="submit" class="button button-primary" value="'.__('Add IP to the list','wp-cerber').'" ></td></tr></table>'
|
131 |
+
.wp_nonce_field('cerber_dashboard','cerber_nonce')
|
132 |
+
.'</form></div>';
|
133 |
+
return $ret;
|
134 |
+
}
|
135 |
+
/*
|
136 |
+
Handle actions with items in ACLs in the dashboard
|
137 |
+
*/
|
138 |
+
add_action('admin_init','cerber_acl_form_process');
|
139 |
+
function cerber_acl_form_process(){
|
140 |
+
|
141 |
+
if ( $_SERVER['REQUEST_METHOD'] != 'POST' || !isset( $_POST['cerber_nonce'] ) ) return;
|
142 |
+
if ( !current_user_can( 'manage_options' ) || !wp_verify_nonce( $_POST['cerber_nonce'], 'cerber_dashboard' ) ) return;
|
143 |
+
|
144 |
+
//if (!current_user_can('manage_options')) return;
|
145 |
+
//if (!isset($_POST['cerber_nonce']) || !wp_verify_nonce($_POST['cerber_nonce'],'cerber_dashboard')) return;
|
146 |
+
|
147 |
+
if ($_SERVER['REQUEST_METHOD']=='POST') {
|
148 |
+
if (!empty($_POST['add_acl_W'])) {
|
149 |
+
$ip = cerber_parse_ip($_POST['add_acl_W']);
|
150 |
+
if (!$ip) cerber_admin_notice( __('Incorrect IP address or IP range','wp-cerber'));
|
151 |
+
elseif (cerber_add_white($ip)) {
|
152 |
+
if (is_array($ip)) $ip = $ip['range'];
|
153 |
+
cerber_admin_message( sprintf(__('Address %s was added to White IP Access List','wp-cerber'),$ip));
|
154 |
+
}
|
155 |
+
}
|
156 |
+
if (!empty($_POST['add_acl_B'])) {
|
157 |
+
$ip = cerber_parse_ip($_POST['add_acl_B']);
|
158 |
+
if (!$ip) cerber_admin_notice( __('Incorrect IP address or IP range','wp-cerber'));
|
159 |
+
else {
|
160 |
+
if ( cerber_is_myip( $ip ) || cerber_is_ip_in_range( $ip ) ) {
|
161 |
+
if (is_array($ip)) $ip = $ip['range'];
|
162 |
+
cerber_admin_notice( __( "You can't add your IP address", 'wp-cerber' ) . ' ' . $ip );
|
163 |
+
}
|
164 |
+
elseif (cerber_add_black($ip)) {
|
165 |
+
if (is_array($ip)) $ip = $ip['range'];
|
166 |
+
cerber_admin_message(sprintf(__('Address %s was added to Black IP Access List','wp-cerber'),$ip));
|
167 |
+
}
|
168 |
+
}
|
169 |
+
}
|
170 |
+
}
|
171 |
+
}
|
172 |
+
/*
|
173 |
+
Get all entries from access lists
|
174 |
+
*/
|
175 |
+
function cerber_acl_all($fields='*'){
|
176 |
+
global $wpdb;
|
177 |
+
return $wpdb->get_results('SELECT '.$fields.' FROM '. CERBER_ACL_TABLE , ARRAY_N);
|
178 |
+
}
|
179 |
+
|
180 |
+
/*
|
181 |
+
AJAX admin requests is landing here
|
182 |
+
*/
|
183 |
+
add_action('wp_ajax_cerber_ajax', 'cerber_admin_ajax');
|
184 |
+
function cerber_admin_ajax() {
|
185 |
+
global $wpdb;
|
186 |
+
if (!current_user_can('manage_options')) return;
|
187 |
+
$response = array();
|
188 |
+
if (isset($_REQUEST['acl_delete'])){
|
189 |
+
check_ajax_referer('delete-ip','ajax_nonce');
|
190 |
+
$ip = $_REQUEST['acl_delete'];
|
191 |
+
if (!$ip = cerber_parse_ip($ip)) wp_die();
|
192 |
+
if (cerber_acl_remove($ip)) {
|
193 |
+
if (is_string($ip)) $deleted = $ip;
|
194 |
+
else $deleted = $ip['range'];
|
195 |
+
$response['deleted_ip'] = $deleted;
|
196 |
+
}
|
197 |
+
else $response['error'] = 'Unable to delete';
|
198 |
+
}
|
199 |
+
elseif (isset($_REQUEST['get_hostnames'])){
|
200 |
+
$list = array_unique($_REQUEST['get_hostnames']);
|
201 |
+
foreach ($list as $ip_id) {
|
202 |
+
$ip = cerber_get_ip_id($ip_id);
|
203 |
+
$ip_info = cerber_get_ip_info($ip);
|
204 |
+
$response[$ip_id] = $ip_info['hostname'];
|
205 |
+
}
|
206 |
+
}
|
207 |
+
elseif (isset($_REQUEST['dismiss_info'])){
|
208 |
+
if (isset($_REQUEST['button_id']) && ($_REQUEST['button_id'] == 'lab_ok' || $_REQUEST['button_id'] == 'lab_no')){
|
209 |
+
lab_user_opt_in($_REQUEST['button_id']);
|
210 |
+
}
|
211 |
+
else update_site_option('cerber_admin_info','');
|
212 |
+
}
|
213 |
+
echo json_encode($response);
|
214 |
+
wp_die();
|
215 |
+
}
|
216 |
+
/*
|
217 |
+
* Retrieve extended IP information
|
218 |
+
* @since 2.2
|
219 |
+
*
|
220 |
+
*/
|
221 |
+
function cerber_get_ip_info($ip, $cache_only = false){
|
222 |
+
|
223 |
+
//$ip_id = str_replace('.','-',$ip);
|
224 |
+
//$ip_id = str_replace(':','_',$ip_id); // IPv6
|
225 |
+
|
226 |
+
$ip_id = cerber_get_id_ip($ip);
|
227 |
+
|
228 |
+
$ip_info = @unserialize(get_transient($ip_id)); // lazy way
|
229 |
+
if ($cache_only) return $ip_info;
|
230 |
+
|
231 |
+
if (empty($ip_info['hostname'])) {
|
232 |
+
$ip_info = array();
|
233 |
+
$hostname = @gethostbyaddr( $ip );
|
234 |
+
if ( $hostname ) {
|
235 |
+
$ip_info['hostname'] = $hostname;
|
236 |
+
} else {
|
237 |
+
$ip_info['hostname'] = __( 'unknown', 'wp-cerber' );
|
238 |
+
}
|
239 |
+
set_transient( $ip_id, serialize( array( 'hostname' => $hostname ) ), 24 * 3600 );
|
240 |
+
}
|
241 |
+
return $ip_info;
|
242 |
+
}
|
243 |
+
|
244 |
+
|
245 |
+
/*
|
246 |
+
Admin's actions with GET requests are handled here
|
247 |
+
*/
|
248 |
+
add_action('admin_init','cerber_admin_request');
|
249 |
+
function cerber_admin_request(){
|
250 |
+
|
251 |
+
if ( !isset( $_REQUEST['cerber_nonce'] ) ) return;
|
252 |
+
if ( !current_user_can( 'manage_options' ) || !wp_verify_nonce( $_REQUEST['cerber_nonce'], 'control' ) ) return;
|
253 |
+
|
254 |
+
if ( $_SERVER['REQUEST_METHOD'] == 'GET') {
|
255 |
+
if ( isset( $_GET['testnotify'] ) ) {
|
256 |
+
//$to = implode(', ',cerber_get_email());
|
257 |
+
$to = cerber_get_email();
|
258 |
+
if ( cerber_send_notify( $_GET['testnotify'] ) ) {
|
259 |
+
cerber_admin_message( __( 'Message has been sent to ', 'wp-cerber' ) . ' ' . $to );
|
260 |
+
}
|
261 |
+
else {
|
262 |
+
cerber_admin_notice( __( 'Unable to send notification email', 'wp-cerber' ) . ' ' . $to );
|
263 |
+
}
|
264 |
+
wp_safe_redirect( remove_query_arg( 'testnotify' ) ); // mandatory!
|
265 |
+
exit; // mandatory!
|
266 |
+
}
|
267 |
+
elseif ( isset( $_GET['lockdelete'] ) ) {
|
268 |
+
$ip = $_GET['lockdelete'];
|
269 |
+
if ( cerber_block_delete( $ip ) ) {
|
270 |
+
cerber_admin_message( sprintf( __( 'Lockout for %s was removed', 'wp-cerber' ), $ip ) );
|
271 |
+
}
|
272 |
+
}
|
273 |
+
elseif ( isset( $_GET['export_activity'] ) ) {
|
274 |
+
cerber_export_activity();
|
275 |
+
}
|
276 |
+
elseif ( isset( $_GET['subscribe'] ) ) {
|
277 |
+
$mode = ( 'on' == $_GET['subscribe'] ) ? 'on' : 'off';
|
278 |
+
cerber_subscribe( $mode );
|
279 |
+
wp_safe_redirect( remove_query_arg( 'subscribe' ) ); // mandatory!
|
280 |
+
exit; // mandatory!
|
281 |
+
}
|
282 |
+
elseif ( isset( $_GET['citadel'] ) && $_GET['citadel'] == 'deactivate' ) {
|
283 |
+
cerber_disable_citadel();
|
284 |
+
}
|
285 |
+
elseif ( isset( $_GET['load_settings'] ) && $_GET['load_settings'] == 'default' ) {
|
286 |
+
cerber_load_defaults();
|
287 |
+
cerber_admin_message( __( 'Settings saved', 'wp-cerber' ) );
|
288 |
+
wp_safe_redirect( remove_query_arg( array( 'load_settings', 'cerber_nonce' ) ) ); // mandatory!
|
289 |
+
exit; // mandatory!
|
290 |
+
}
|
291 |
+
elseif ( isset( $_GET['force_repair_db'] ) ) {
|
292 |
+
cerber_create_db();
|
293 |
+
cerber_upgrade_db( true );
|
294 |
+
cerber_admin_message( 'Cerber\'s tables has been upgraded' );
|
295 |
+
wp_safe_redirect( remove_query_arg( array( 'force_repair_db', 'cerber_nonce' ) ) ); // mandatory!
|
296 |
+
exit; // mandatory!
|
297 |
+
}
|
298 |
+
elseif ( isset( $_GET['force_check_nodes'] ) ) {
|
299 |
+
$best = lab_check_nodes( true );
|
300 |
+
cerber_admin_message( 'Cerber Lab\'s nodes has been checked. The closest node: ' . $best );
|
301 |
+
wp_safe_redirect( remove_query_arg( array( 'force_check_nodes', 'cerber_nonce' ) ) ); // mandatory!
|
302 |
+
exit; // mandatory!
|
303 |
+
}
|
304 |
+
}
|
305 |
+
|
306 |
+
if ( $_SERVER['REQUEST_METHOD'] == 'POST') {
|
307 |
+
if ( isset( $_POST['cerber_license'] ) ) {
|
308 |
+
$lic = preg_replace( "/[^A-Z0-9]/i", '', $_POST['cerber_license'] );
|
309 |
+
if ( !empty($lic) && strlen( $lic ) != LAB_KEY_LENGTH ) {
|
310 |
+
return;
|
311 |
+
}
|
312 |
+
lab_update_key($lic);
|
313 |
+
}
|
314 |
+
}
|
315 |
+
|
316 |
+
|
317 |
+
}
|
318 |
+
|
319 |
+
/**
|
320 |
+
* Generate export CSV file using $_GET parameters (via cerber_activity_query())
|
321 |
+
*
|
322 |
+
* @since 4.16
|
323 |
+
*
|
324 |
+
*/
|
325 |
+
function cerber_export_activity() {
|
326 |
+
global $wpdb;
|
327 |
+
|
328 |
+
//'per_page' = 0 means retrieve full data set, is used for export
|
329 |
+
list( $query, $per_page, $falist, $ip, $filter_login, $user_id, $search ) = cerber_activity_query( array('per_page' => 0) );
|
330 |
+
|
331 |
+
if ( $rows = $wpdb->get_results( $query ) ) {
|
332 |
+
$total = $wpdb->get_var( "SELECT FOUND_ROWS()" );
|
333 |
+
|
334 |
+
$fname = rawurlencode('wp-cerber-activity'); // encode non-ASCII symbols
|
335 |
+
|
336 |
+
header($_SERVER["SERVER_PROTOCOL"].' 200 OK');
|
337 |
+
header("Content-type: application/force-download");
|
338 |
+
header("Content-Type: application/octet-stream");
|
339 |
+
header("Content-Disposition: attachment; filename*=UTF-8''{$fname}.csv");
|
340 |
+
|
341 |
+
echo '"Generated by:","WP Cerber security plugin"'."\r\n";
|
342 |
+
echo '"Date:","'.cerber_date(time()).'"'."\r\n";
|
343 |
+
echo '"Total rows:","'.$total.'"'."\r\n";
|
344 |
+
echo '"Website:","'.get_option( 'blogname' ).'"'."\r\n";
|
345 |
+
if ($ip) echo '"Filter by IP:","'.$ip.'"'."\r\n";
|
346 |
+
elseif (!empty($_GET['filter_ip'])) echo '"Filter by IP:","'.$_GET['filter_ip'].'"'."\r\n"; // workaround
|
347 |
+
if ($user_id) {
|
348 |
+
$user = get_userdata($user_id);
|
349 |
+
echo '"Filter by user:","'.$user->display_name.'"'."\r\n";
|
350 |
+
}
|
351 |
+
if ($search) echo '"Search results for:","'.$search.'"'."\r\n";
|
352 |
+
|
353 |
+
echo "\r\n";
|
354 |
+
|
355 |
+
$heading = array(__('IP address','wp-cerber'),__('Date','wp-cerber'),__('Event','wp-cerber'),__('Local User','wp-cerber'),__('User login','wp-cerber'),__('User ID','wp-cerber'),__('Username used','wp-cerber'),'Unix timestamp','Session ID');
|
356 |
+
foreach ($heading as &$item) {
|
357 |
+
$item = '"' . str_replace('"', '""', trim($item)) . '"';
|
358 |
+
}
|
359 |
+
echo implode(',', $heading) . "\r\n";
|
360 |
+
|
361 |
+
$labels = cerber_get_labels('activity');
|
362 |
+
|
363 |
+
foreach ($rows as $row) {
|
364 |
+
if (!empty($row->details)) {
|
365 |
+
$details = explode('|',$row->details);
|
366 |
+
}
|
367 |
+
else {
|
368 |
+
$details = array('','','','','');
|
369 |
+
}
|
370 |
+
$values = array();
|
371 |
+
$values[] = $row->ip;
|
372 |
+
$values[] = cerber_date($row->stamp);
|
373 |
+
$values[] = $labels[$row->activity];
|
374 |
+
$values[] = $row->display_name;
|
375 |
+
$values[] = $row->ulogin;
|
376 |
+
$values[] = $row->user_id;
|
377 |
+
$values[] = $row->user_login;
|
378 |
+
$values[] = $row->stamp;
|
379 |
+
$values[] = $row->session_id;
|
380 |
+
$values[] = $details[4];
|
381 |
+
$values[] = $details[0];
|
382 |
+
foreach ($values as &$value) {
|
383 |
+
$value = '"' . str_replace('"', '""', trim($value)) . '"';
|
384 |
+
}
|
385 |
+
$line = implode(',', $values) . "\r\n";
|
386 |
+
echo $line;
|
387 |
+
}
|
388 |
+
exit;
|
389 |
+
}
|
390 |
+
else wp_die('Nothing to export');
|
391 |
+
}
|
392 |
+
/*
|
393 |
+
* Display activities in the WP Dashboard
|
394 |
+
* @since 1.0
|
395 |
+
*
|
396 |
+
*/
|
397 |
+
function cerber_show_activity($args = array(), $echo = true){
|
398 |
+
global $wpdb, $wp_cerber, $wp_roles;
|
399 |
+
|
400 |
+
$labels = cerber_get_labels('activity');
|
401 |
+
$base_url = cerber_admin_link('activity');
|
402 |
+
$right_links = '';
|
403 |
+
$export_link = '';
|
404 |
+
$table = '';
|
405 |
+
$ret = '';
|
406 |
+
|
407 |
+
list( $query, $per_page, $falist, $filter_ip, $filter_login, $user_id, $search ) = cerber_activity_query( $args );
|
408 |
+
|
409 |
+
$ip_text = cerber_ip_extra_view( $filter_ip );
|
410 |
+
$user_cache = array();
|
411 |
+
|
412 |
+
if ( $rows = $wpdb->get_results( $query ) ) {
|
413 |
+
|
414 |
+
$total = $wpdb->get_var( "SELECT FOUND_ROWS()" );
|
415 |
+
$assets_url = plugin_dir_url( CERBER_FILE ) . 'assets/';
|
416 |
+
$list = array();
|
417 |
+
$roles = $wp_roles->roles;
|
418 |
+
|
419 |
+
foreach ($rows as $row) {
|
420 |
+
|
421 |
+
$activity = '<span class="crb-activity actv' . $row->activity . '">'.$labels[ $row->activity ].'</span>';
|
422 |
+
/*
|
423 |
+
if ($row->activity == 50 ) {
|
424 |
+
$activity .= ' <b>'.htmlspecialchars($row->user_login).'</b>';
|
425 |
+
}*/
|
426 |
+
|
427 |
+
if ($row->details) {
|
428 |
+
$details = explode('|',$row->details);
|
429 |
+
if (!empty($details[0])) {
|
430 |
+
$activity .= ' <span class = "act-details">'.$labels[$details[0]].'</span>';
|
431 |
+
}
|
432 |
+
//elseif ($row->activity == 50 && $details[4]) $activity .= ' '.$details[4];
|
433 |
+
|
434 |
+
if (empty($args['no_details'])) {
|
435 |
+
if ( isset( $details[4] ) && ( $row->activity < 10 || $row->activity > 12 ) ) {
|
436 |
+
$activity .= '<p class="act-url">URL: ' . $details[4] . '</p>';
|
437 |
+
}
|
438 |
+
}
|
439 |
+
}
|
440 |
+
|
441 |
+
|
442 |
+
if ( $row->user_id ) {
|
443 |
+
if ( isset( $user_cache[ $row->user_id ] ) ) {
|
444 |
+
$name = $user_cache[ $row->user_id ];
|
445 |
+
} elseif ( $u = get_userdata( $row->user_id ) ) {
|
446 |
+
|
447 |
+
if ( ! is_multisite() && $u->roles ) {
|
448 |
+
$r = array();
|
449 |
+
foreach ( $u->roles as $role ) {
|
450 |
+
$r[] = $roles[ $role ]['name'];
|
451 |
+
}
|
452 |
+
$r = '<span class="act-role">' . implode( ', ', $r ) . '</span>';
|
453 |
+
}
|
454 |
+
|
455 |
+
$name = '<a href="' . $base_url . '&filter_user=' . $row->user_id . '"><b>' . $u->display_name . '</b></a><p>' . $r . '</p>';
|
456 |
+
|
457 |
+
if ( 1 == 1 ) {
|
458 |
+
$avatar = get_avatar( $row->user_id, 32 );
|
459 |
+
$name = '<table class="crb-avatar"><tr><td>' . $avatar . '</td><td>' . $name . '</td></tr></table>';
|
460 |
+
}
|
461 |
+
} else {
|
462 |
+
$name = '';
|
463 |
+
}
|
464 |
+
|
465 |
+
$user_cache[ $row->user_id ] = $name;
|
466 |
+
} else {
|
467 |
+
$name = '';
|
468 |
+
}
|
469 |
+
|
470 |
+
$ip = '<a href="'.$base_url.'&filter_ip='.$row->ip.'">'.$row->ip.'</a>';
|
471 |
+
$username = '<a href="'.$base_url.'&filter_login='.urlencode($row->user_login).'">'.$row->user_login.'</a>';
|
472 |
+
|
473 |
+
$ip_info = cerber_get_ip_info($row->ip,true);
|
474 |
+
if (isset($ip_info['hostname'])) $hostname = $ip_info['hostname'];
|
475 |
+
else {
|
476 |
+
$ip_id = cerber_get_id_ip($row->ip);
|
477 |
+
$hostname = '<img data-ip-id="'.$ip_id .'" class="crb-no-hn" src="'.$assets_url.'ajax-loader-ip.gif" />'."\n";
|
478 |
+
}
|
479 |
+
|
480 |
+
$tip='';
|
481 |
+
|
482 |
+
$acl = cerber_acl_check($row->ip);
|
483 |
+
if ($acl == 'W') $tip = __('White IP Access List','wp-cerber');
|
484 |
+
elseif ($acl == 'B') $tip = __('Black IP Access List','wp-cerber');
|
485 |
+
|
486 |
+
if ( cerber_block_check( $row->ip ) ) {
|
487 |
+
$block = ' color-blocked ';
|
488 |
+
$tip .= ' ' . __( 'Locked out', 'wp-cerber' );
|
489 |
+
}
|
490 |
+
else $block='';
|
491 |
+
|
492 |
+
if ( ! empty( $args['date'] ) && $args['date'] == 'ago' ) {
|
493 |
+
$date = cerber_ago_time( $row->stamp );
|
494 |
+
}
|
495 |
+
else {
|
496 |
+
$date = '<span title="'.$row->stamp.' / '.$row->session_id.' / '.$row->activity .'">'.cerber_date( $row->stamp ).'<span/>';
|
497 |
+
}
|
498 |
+
|
499 |
+
$list[] = '<td><div class="act-icon ip-acl' . $acl . ' ' . $block . '" title="' . $tip . '"></div>' . $ip . '</td><td>' . $hostname . '</td><td>' . $date . '</td><td>' . $activity . '</td><td>' . $name . '</td><td>' . $username . '</td>';
|
500 |
+
}
|
501 |
+
|
502 |
+
$titles = '<tr><th><div class="act-icon"></div>' . __( 'IP', 'wp-cerber' ) . '</th><th>' . __( 'Hostname', 'wp-cerber' ) . '</th><th>' . __( 'Date', 'wp-cerber' ) . '</th><th>' . __( 'Event', 'wp-cerber' ) . '</th><th>' . __( 'Local User', 'wp-cerber' ) . '</th><th>' . __( 'Username used', 'wp-cerber' ) . '</th></tr>';
|
503 |
+
$table = '<table id="crb-activity" class="widefat crb-table cerber-margin"><thead>' . $titles . '</thead><tfoot>' . $titles . '</tfoot><tbody><tr>' . implode( '</tr><tr>', $list ) . '</tr></tbody></table>';
|
504 |
+
|
505 |
+
if (empty($args['no_navi'])) $table .= cerber_page_navi($total, $per_page);
|
506 |
+
|
507 |
+
//$legend = '<p>'.sprintf(__('Showing last %d records from %d','wp-cerber'),count($rows),$total);
|
508 |
+
|
509 |
+
$info = $ip_text;
|
510 |
+
|
511 |
+
if (empty($args['no_export'])) $export_link = '<a class="button button-secondary cerber-button" href="'.wp_nonce_url(add_query_arg('export_activity',1),'control','cerber_nonce').'"><span class="dashicons dashicons-download" style="vertical-align: middle;"></span> '.__('Export','wp-cerber').'</a>';
|
512 |
+
}
|
513 |
+
else {
|
514 |
+
$info = '';
|
515 |
+
$table = '<p class="cerber-margin">'.__('No activity has been logged.','wp-cerber').'</p>';
|
516 |
+
}
|
517 |
+
|
518 |
+
if (empty($args['no_navi'])) {
|
519 |
+
|
520 |
+
unset( $labels[13], $labels[14], $labels[15] );
|
521 |
+
$labels = array( 0 => __( 'All activities', 'wp-cerber' ) ) + $labels;
|
522 |
+
|
523 |
+
if (!empty($_GET['filter_activity']) && !is_array($_GET['filter_activity'])) {
|
524 |
+
$selected = absint($_GET['filter_activity']);
|
525 |
+
}
|
526 |
+
else $selected = 0;
|
527 |
+
|
528 |
+
$filters = '<form style="float: left; width: auto;" action="">'
|
529 |
+
. cerber_select('filter_activity', $labels, $selected)
|
530 |
+
.'<input type="text" value="'.$search.'" name="search_activity" placeholder="'.__('Search for IP or username','wp-cerber').'"><input type="submit" value="'.__('Filter','wp-cerber').'" class="button">'
|
531 |
+
.'
|
532 |
+
<!-- Preserve values -->
|
533 |
+
<input type="hidden" name="filter_ip" value="'.htmlspecialchars($filter_ip).'" >
|
534 |
+
<input type="hidden" name="filter_user" value="'.$user_id.'" >
|
535 |
+
<input type="hidden" name="filter_login" value="'.$filter_login.'" >
|
536 |
+
|
537 |
+
<input type="hidden" name="page" value="cerber-security" >
|
538 |
+
<input type="hidden" name="tab" value="activity">
|
539 |
+
</form>';
|
540 |
+
|
541 |
+
$right_links = '<div style="float: right; width: auto; line-height: 26px;">'.cerber_subscribe_link().$export_link.'</div>';
|
542 |
+
|
543 |
+
$top_bar = '<div id = "activity-filter">'.$filters.$right_links.'</div><br style="clear: both;">';
|
544 |
+
|
545 |
+
$ret = '<div class="cerber-margin">' . $top_bar . $info . '</div>'.$ret;
|
546 |
+
}
|
547 |
+
|
548 |
+
$ret .= $table;
|
549 |
+
|
550 |
+
if ($echo) echo $ret;
|
551 |
+
else return $ret;
|
552 |
+
|
553 |
+
}
|
554 |
+
|
555 |
+
/**
|
556 |
+
* Parse arguments and create SQL query for retrieving rows from activity log
|
557 |
+
*
|
558 |
+
* @param array $args Optional arguments to use them instead of using $_GET
|
559 |
+
*
|
560 |
+
* @return array
|
561 |
+
* @since 4.16
|
562 |
+
*/
|
563 |
+
function cerber_activity_query($args = array()){
|
564 |
+
global $wpdb;
|
565 |
+
|
566 |
+
$ret = array_fill( 0, 7, '' );
|
567 |
+
$where = array();
|
568 |
+
$falist = array();
|
569 |
+
|
570 |
+
$filter = null;
|
571 |
+
if (!empty($args['filter_activity'])) $filter = $args['filter_activity'];
|
572 |
+
elseif (isset($_GET['filter_activity'])) $filter = $_GET['filter_activity'];
|
573 |
+
|
574 |
+
if ($filter) { // Multiple activities can be requested this way: &filter_activity[]=11&filter_activity[]=7
|
575 |
+
if (is_array($filter)) {
|
576 |
+
$falist = array_filter(array_map('absint',$filter));
|
577 |
+
$filter = implode(',',$falist);
|
578 |
+
}
|
579 |
+
else {
|
580 |
+
$filter = absint($filter);
|
581 |
+
$falist = array($filter); // for further using in links
|
582 |
+
}
|
583 |
+
$where[] = 'log.activity IN ('.$filter.')';
|
584 |
+
}
|
585 |
+
$ret[2] = $falist;
|
586 |
+
|
587 |
+
if ( ! empty( $_GET['filter_ip'] ) ) {
|
588 |
+
$filter = trim( $_GET['filter_ip'] );
|
589 |
+
$range = cerber_any2range( $filter );
|
590 |
+
if ( is_array( $range ) ) {
|
591 |
+
$where[] = $wpdb->prepare( '(log.ip_long >= %d AND log.ip_long <= %d)', $range['begin'], $range['end'] );
|
592 |
+
} elseif ( cerber_is_ip_or_net( $filter ) ) {
|
593 |
+
$where[] = $wpdb->prepare( 'log.ip = %s', $filter );
|
594 |
+
//$ip_extra = $filter;
|
595 |
+
} else {
|
596 |
+
$where[] = "ip = 'produce-no-result'";
|
597 |
+
}
|
598 |
+
$ret[3] = $_GET['filter_ip'];
|
599 |
+
}
|
600 |
+
|
601 |
+
if (!empty($_GET['filter_login'])) {
|
602 |
+
$where[] = $wpdb->prepare('log.user_login = %s',$_GET['filter_login']);
|
603 |
+
$ret[4] = htmlspecialchars($_GET['filter_login']);
|
604 |
+
}
|
605 |
+
if (!empty($_GET['filter_user'])) {
|
606 |
+
$user_id = absint($_GET['filter_user']);
|
607 |
+
$ret[5] = $user_id;
|
608 |
+
$where[] = 'log.user_id = '.$user_id;
|
609 |
+
}
|
610 |
+
if (!empty($_GET['search_activity'])) {
|
611 |
+
$search = stripslashes_deep($_GET['search_activity']);
|
612 |
+
$ret[6] = htmlspecialchars($search);
|
613 |
+
$search = '%'.$search.'%';
|
614 |
+
$where[] = $wpdb->prepare('(log.ip LIKE %s OR log.user_login LIKE %s)', $search, $search);
|
615 |
+
}
|
616 |
+
|
617 |
+
if (!empty($where)) $where = 'WHERE '.implode(' AND ',$where);
|
618 |
+
else $where = '';
|
619 |
+
|
620 |
+
// Limits, if specified
|
621 |
+
if (isset($args['per_page'])) $per_page = $args['per_page'];
|
622 |
+
else $per_page = cerber_get_per_page();
|
623 |
+
$per_page = absint($per_page);
|
624 |
+
$ret[1] = $per_page;
|
625 |
+
|
626 |
+
if ( $per_page ) {
|
627 |
+
$limit = ' LIMIT ' . ( cerber_get_pn() - 1 ) * $per_page . ',' . $per_page;
|
628 |
+
$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS * FROM ' . CERBER_LOG_TABLE . " log {$where} ORDER BY stamp DESC {$limit}";
|
629 |
+
}
|
630 |
+
else {
|
631 |
+
$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS log.*,u.display_name,u.user_login ulogin FROM ' . CERBER_LOG_TABLE . ' log LEFT JOIN '.$wpdb->users . " u ON (log.user_id = u.ID) {$where} ORDER BY stamp DESC";
|
632 |
+
}
|
633 |
+
|
634 |
+
//$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS log.*,u.display_name,u.user_login ulogin FROM ' . CERBER_LOG_TABLE . ' log LEFT JOIN ' . $wpdb->users . " u ON (log.user_id = u.ID) {$where} ORDER BY stamp DESC {$limit}";
|
635 |
+
|
636 |
+
return $ret;
|
637 |
+
/*
|
638 |
+
return array(
|
639 |
+
//'SELECT SQL_CALC_FOUND_ROWS * FROM ' . CERBER_LOG_TABLE . " {$where} ORDER BY stamp DESC {$limit}",
|
640 |
+
'SELECT SQL_CALC_FOUND_ROWS log.*,u.display_name,u.user_login ulogin FROM ' . CERBER_LOG_TABLE . ' log LEFT JOIN '.$wpdb->users . " u ON (log.user_id = u.ID) {$where} ORDER BY stamp DESC {$limit}",
|
641 |
+
$per_page,
|
642 |
+
$falist,
|
643 |
+
$ip_extra,
|
644 |
+
$user_id,
|
645 |
+
);
|
646 |
+
*/
|
647 |
+
}
|
648 |
+
/*
|
649 |
+
* Detailed information about IP address
|
650 |
+
* @since 2.7
|
651 |
+
*
|
652 |
+
*/
|
653 |
+
|
654 |
+
function cerber_ip_extra_view($ip){
|
655 |
+
global $wp_cerber;
|
656 |
+
//if (!cerber_is_ip_or_net($ip)) return '';
|
657 |
+
if ( !@inet_pton( $ip ) ) {
|
658 |
+
return '';
|
659 |
+
}
|
660 |
+
$tip = ' ';
|
661 |
+
$acl = cerber_acl_check( $ip );
|
662 |
+
if ( $acl == 'W' ) {
|
663 |
+
$tip .= '<span class="color-green ip-info-label">'.__( 'White IP Access List', 'wp-cerber' ).'</span> ';
|
664 |
+
} elseif ( $acl == 'B' ) {
|
665 |
+
$tip .= '<span class="color-black ip-info-label">'.__( 'Black IP Access List', 'wp-cerber' ).'</span> ';
|
666 |
+
}
|
667 |
+
if ( cerber_block_check( $ip ) ) {
|
668 |
+
$tip .= '<span class="color-blocked ip-info-label">'.__( 'Locked out', 'wp-cerber' ).'</span> ';
|
669 |
+
}
|
670 |
+
|
671 |
+
// Filter activity by ...
|
672 |
+
|
673 |
+
/*$labels = cerber_get_labels('activity');
|
674 |
+
foreach ($labels as $tag => $label) {
|
675 |
+
//if (in_array($tag,$falist)) $links[] = '<b>'.$label.'</b>';
|
676 |
+
$links[] = '<a href="'.$base_url.'&filter_activity='.$tag.'">'.$label.'</a>';
|
677 |
+
}
|
678 |
+
$filters = implode(' | ',$links);*/
|
679 |
+
|
680 |
+
$whois = '';
|
681 |
+
$country = '';
|
682 |
+
$abuse = '';
|
683 |
+
$network = '';
|
684 |
+
$network_info = '';
|
685 |
+
|
686 |
+
if (cerber_get_options('ip_extra')) {
|
687 |
+
$ip_info = cerber_ip_whois_info($ip);
|
688 |
+
if (isset($ip_info['whois'])) $whois = '<div id="whois">' . $ip_info['whois'] . '</div>';
|
689 |
+
if (isset($ip_info['error'])) $whois = '<div id="whois">' . $ip_info['error'] . '</div>';
|
690 |
+
if (isset($ip_info['country'])) $country = $ip_info['country'];
|
691 |
+
if (!empty($ip_info['data']['abuse-mailbox'])) $abuse = '<p>'.__('Abuse email:','wp-cerber').' <a href="mailto:'.$ip_info['data']['abuse-mailbox'].'">'.$ip_info['data']['abuse-mailbox'].'</a></p>';
|
692 |
+
if (!empty($ip_info['data']['network'])) {
|
693 |
+
$network = $ip_info['data']['network'];
|
694 |
+
$range = cerber_any2range($network);
|
695 |
+
$network_info = '<p>'.__('Network:','wp-cerber').' '.$network.' <a href="'.cerber_admin_link('activity',array('filter_ip'=>$range['range'])).'">'.__('Check for activity','wp-cerber').'</a></p>';
|
696 |
+
}
|
697 |
+
}
|
698 |
+
|
699 |
+
$form = '';
|
700 |
+
//if (!cerber_is_myip($ip) && !cerber_acl_check($ip)) $form = '<form action="" method="post"><input type="hidden" name="add_acl_B" value="'.$ip.'"><input type="submit" class="button button-primary cerber-button" value="'.__('Add IP to the Black List','wp-cerber').'" >'.wp_nonce_field('cerber_dashboard','cerber_nonce').'</form>';
|
701 |
+
|
702 |
+
if (!cerber_is_myip($ip) && !cerber_acl_check($ip)) {
|
703 |
+
|
704 |
+
if ( $network ) {
|
705 |
+
$net_button = '<button type="submit" value="' . $network . '" name="add_acl_B" class="button button-primary cerber-button">';
|
706 |
+
} else {
|
707 |
+
$net_button = '<button disabled="disabled" class="button button-secondary cerber-button">';
|
708 |
+
}
|
709 |
+
$net_button .= '<span class="dashicons-before dashicons-networking"></span> ' . __( 'Add network to the Black List', 'wp-cerber' ) . '</button> ';
|
710 |
+
|
711 |
+
$form = '<form id="add-acl-black" action="" method="post">
|
712 |
+
<!-- <input type="hidden" name="add_acl_B" value=""> -->
|
713 |
+
<button type="submit" value="'.$ip.'" name="add_acl_B" class="button button-primary cerber-button"><span class="dashicons-before dashicons-desktop"></span> '.__('Add IP to the Black List','wp-cerber').'</button> '.
|
714 |
+
$net_button.
|
715 |
+
wp_nonce_field('cerber_dashboard','cerber_nonce').
|
716 |
+
'</form>';
|
717 |
+
}
|
718 |
+
|
719 |
+
$ret = '<div id="ip-extra">
|
720 |
+
<table>
|
721 |
+
<tr><td><p><span id = "ip-address">' . $ip . '</span><span id = "ip-country">' . $country .'</span>'. $tip .'</p>' . $network_info . $abuse . '</td><td>' . $form . '</td></tr>
|
722 |
+
</table>
|
723 |
+
</div>';
|
724 |
+
|
725 |
+
return $ret.$whois;
|
726 |
+
}
|
727 |
+
|
728 |
+
/*
|
729 |
+
Add admin menu, init admin stuff
|
730 |
+
*/
|
731 |
+
if ( ! is_multisite() ) {
|
732 |
+
add_action( 'admin_menu', 'cerber_admin_menu' );
|
733 |
+
}
|
734 |
+
else {
|
735 |
+
add_action( 'network_admin_menu', 'cerber_admin_menu' ); // only network wide menu allowed in multisite mode
|
736 |
+
}
|
737 |
+
function cerber_admin_menu() {
|
738 |
+
|
739 |
+
if ( cerber_is_admin_page() ) {
|
740 |
+
cerber_check_environment();
|
741 |
+
cerber_watchdog();
|
742 |
+
}
|
743 |
+
|
744 |
+
$hook = add_menu_page( __( 'WP Cerber Security', 'wp-cerber' ), __( 'WP Cerber', 'wp-cerber' ), 'manage_options', 'cerber-security', 'cerber_settings_page', 'dashicons-shield', '100' );
|
745 |
+
add_action( 'load-' . $hook, "cerber_screen_options" );
|
746 |
+
add_submenu_page( 'cerber-security', __( 'Cerber Dashboard', 'wp-cerber' ), __( 'Dashboard' ), 'manage_options', 'cerber-security', 'cerber_settings_page' );
|
747 |
+
|
748 |
+
add_submenu_page( 'cerber-security', __( 'Cerber antispam settings', 'wp-cerber' ), __( 'Antispam', 'wp-cerber' ), 'manage_options', 'cerber-recaptcha', 'cerber_recaptcha_page' );
|
749 |
+
add_submenu_page( 'cerber-security', __( 'Cerber tools', 'wp-cerber' ), __( 'Tools', 'wp-cerber' ), 'manage_options', 'cerber-tools', 'cerber_tools_page' );
|
750 |
+
|
751 |
+
}
|
752 |
+
|
753 |
+
add_action( 'admin_bar_menu', 'cerber_admin_bar' );
|
754 |
+
function cerber_admin_bar( $wp_admin_bar ) {
|
755 |
+
if (!is_multisite()) return;
|
756 |
+
$args = array(
|
757 |
+
'parent' => 'network-admin',
|
758 |
+
'id' => 'cerber_admin',
|
759 |
+
'title' => __('WP Cerber','wp-cerber'),
|
760 |
+
'href' => cerber_admin_link(),
|
761 |
+
);
|
762 |
+
$wp_admin_bar->add_node( $args );
|
763 |
+
}
|
764 |
+
|
765 |
+
/*
|
766 |
+
Check if currently displayed page is a Cerber admin dashboard page with optional checking a set of GET params
|
767 |
+
*/
|
768 |
+
function cerber_is_admin_page($force = true, $params = array()){
|
769 |
+
|
770 |
+
if (!is_admin()) return false;
|
771 |
+
|
772 |
+
$ret = false;
|
773 |
+
|
774 |
+
if (isset($_GET['page']) && false !== strpos($_GET['page'],'cerber-')) {
|
775 |
+
$ret = true;
|
776 |
+
if ($params) {
|
777 |
+
foreach ( $params as $param => $value) {
|
778 |
+
if (!isset($_GET[$param]) || $_GET[$param] != $value){
|
779 |
+
$ret = false;
|
780 |
+
break;
|
781 |
+
}
|
782 |
+
}
|
783 |
+
}
|
784 |
+
}
|
785 |
+
if (!$force || $ret) return $ret;
|
786 |
+
|
787 |
+
if (!$screen = get_current_screen()) return false;
|
788 |
+
if ($screen->base == 'plugins') return true;
|
789 |
+
/*
|
790 |
+
if ($screen->parent_base == 'options-general') return true;
|
791 |
+
if ($screen->parent_base == 'settings') return true;
|
792 |
+
*/
|
793 |
+
return false;
|
794 |
+
}
|
795 |
+
|
796 |
+
/*
|
797 |
+
Add custom columns to the Users screen
|
798 |
+
*/
|
799 |
+
add_filter('manage_users_columns' , 'cerber_u_columns');
|
800 |
+
function cerber_u_columns($columns) {
|
801 |
+
return array_merge( $columns,
|
802 |
+
array('cbcc' => __('Comments','wp-cerber'),
|
803 |
+
'cbla' => __('Last login','wp-cerber') ,
|
804 |
+
'cbfl' => __('Failed attempts in last 24 hours','wp-cerber'),
|
805 |
+
'cbdr' => __('Date of registration','wp-cerber')) );
|
806 |
+
}
|
807 |
+
add_filter( 'manage_users_sortable_columns','cerber_u_sortable');
|
808 |
+
function cerber_u_sortable($sortable_columns) {
|
809 |
+
$sortable_columns['cbdr']='user_registered';
|
810 |
+
return $sortable_columns;
|
811 |
+
}
|
812 |
+
/*
|
813 |
+
Display custom columns on the Users screen
|
814 |
+
*/
|
815 |
+
add_filter( 'manage_users_custom_column' , 'cerber_show_u_columns', 10, 3 );
|
816 |
+
function cerber_show_u_columns($value, $column, $user_id) {
|
817 |
+
global $wpdb,$current_screen,$user_login;
|
818 |
+
$ret = $value;
|
819 |
+
switch ($column) {
|
820 |
+
case 'cbcc' : // to get this work we need add filter 'preprocess_comment'
|
821 |
+
if ($com = get_comments(array('author__in' => $user_id))) $ret = count($com);
|
822 |
+
else $ret = 0;
|
823 |
+
break;
|
824 |
+
case 'cbla' :
|
825 |
+
$ret = $wpdb->get_var('SELECT MAX(stamp) FROM '.CERBER_LOG_TABLE.' WHERE user_id = '.$user_id);
|
826 |
+
if ($ret) {
|
827 |
+
$act_link = cerber_admin_link('activity');
|
828 |
+
$ret = '<a href="'.$act_link.'&filter_user='.$user_id.'">'.cerber_date($ret).'</a>';
|
829 |
+
}
|
830 |
+
else $ret=__('Never','wp-cerber');
|
831 |
+
break;
|
832 |
+
case 'cbfl' :
|
833 |
+
$act_link = cerber_admin_link('activity');
|
834 |
+
$u=get_userdata($user_id);
|
835 |
+
$failed = $wpdb->get_var('SELECT count(user_id) FROM '.CERBER_LOG_TABLE.' WHERE user_login = \''.$u->user_login.'\' AND activity = 7 AND stamp > ' . (time() - 24 * 3600));
|
836 |
+
$ret = '<a href="'.$act_link.'&filter_login='.$u->user_login.'&filter_activity=7">'.$failed.'</a>';
|
837 |
+
break;
|
838 |
+
case 'cbdr' :
|
839 |
+
$time = strtotime($wpdb->get_var("SELECT user_registered FROM $wpdb->users WHERE id = ".$user_id));
|
840 |
+
$ret = cerber_date($time);
|
841 |
+
break;
|
842 |
+
}
|
843 |
+
return $ret;
|
844 |
+
}
|
845 |
+
|
846 |
+
/*
|
847 |
+
Registering admin widgets
|
848 |
+
*/
|
849 |
+
if (!is_multisite()) add_action( 'wp_dashboard_setup', 'cerber_widgets' );
|
850 |
+
else add_action( 'wp_network_dashboard_setup', 'cerber_widgets' );
|
851 |
+
function cerber_widgets() {
|
852 |
+
if (!current_user_can('manage_options')) return;
|
853 |
+
if (current_user_can( 'manage_options')) {
|
854 |
+
wp_add_dashboard_widget( 'cerber_quick', __('Cerber Quick View','wp-cerber'), 'cerber_quick_w');
|
855 |
+
}
|
856 |
+
}
|
857 |
+
/*
|
858 |
+
Cerber Quick View widget
|
859 |
+
*/
|
860 |
+
function cerber_quick_w(){
|
861 |
+
global $wpdb,$wp_cerber;
|
862 |
+
|
863 |
+
$dash = cerber_admin_link();
|
864 |
+
$act = cerber_admin_link('activity');
|
865 |
+
$acl = cerber_admin_link('acl');
|
866 |
+
$loc = cerber_admin_link('lockouts');
|
867 |
+
|
868 |
+
$failed = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN (7) AND stamp > '.(time() - 24 * 3600));
|
869 |
+
$failed_prev = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN (7) AND stamp > '.(time() - 48 * 3600).' AND stamp < '.(time() - 24 * 3600));
|
870 |
+
|
871 |
+
$failed_ch = cerber_percent($failed_prev,$failed);
|
872 |
+
|
873 |
+
$locked = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN (10,11) AND stamp > '.(time() - 24 * 3600));
|
874 |
+
$locked_prev = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN (10,11) AND stamp > '.(time() - 48 * 3600).' AND stamp < '.(time() - 24 * 3600));
|
875 |
+
|
876 |
+
$locked_ch = cerber_percent($locked_prev,$locked);
|
877 |
+
|
878 |
+
//$lockouts = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_BLOCKS_TABLE);
|
879 |
+
|
880 |
+
$lockouts = cerber_blocked_num();
|
881 |
+
if ($last = $wpdb->get_var('SELECT MAX(stamp) FROM '.CERBER_LOG_TABLE.' WHERE activity IN (10,11)')) {
|
882 |
+
//$last = cerber_date($last);
|
883 |
+
$last = cerber_ago_time( $last );
|
884 |
+
}
|
885 |
+
else $last = __('Never','wp-cerber');
|
886 |
+
$w_count = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_ACL_TABLE .' WHERE tag ="W"' );
|
887 |
+
$b_count = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_ACL_TABLE .' WHERE tag ="B"' );
|
888 |
+
|
889 |
+
if (cerber_is_citadel()) $citadel = '<span style="color:#FF0000;">'.__('active','wp-cerber').'</span> (<a href="'.wp_nonce_url(add_query_arg(array('citadel' => 'deactivate')),'control','cerber_nonce').'">'.__('deactivate','wp-cerber').'</a>)';
|
890 |
+
else {
|
891 |
+
if ($wp_cerber->getSettings('ciperiod')) $citadel = __('not active','wp-cerber');
|
892 |
+
else $citadel = __('disabled','wp-cerber');
|
893 |
+
}
|
894 |
+
|
895 |
+
echo '<div class="cerber-widget">';
|
896 |
+
|
897 |
+
echo '<table style="width:100%;"><tr><td style="width:50%; vertical-align:top;"><table><tr><td class="bigdig">'.$failed.'</td><td class="per">'.$failed_ch.'</td></tr></table><p>'.__('failed attempts','wp-cerber').' '.__('in 24 hours','wp-cerber').'<br/>(<a href="'.$act.'&filter_activity=7">'.__('view all','wp-cerber').'</a>)</p></td>';
|
898 |
+
echo '<td style="width:50%; vertical-align:top;"><table><tr><td class="bigdig">'.$locked.'</td><td class="per">'.$locked_ch.'</td></tr></table><p>'.__('lockouts','wp-cerber').' '.__('in 24 hours','wp-cerber').'<br/>(<a href="'.$act.'&filter_activity[]=10&filter_activity[]=11">'.__('view all','wp-cerber').'</a>)</p></td></tr></table>';
|
899 |
+
|
900 |
+
echo '<table id="quick-info"><tr><td>'.__('Lockouts at the moment','wp-cerber').'</td><td>'.$lockouts.'</td></tr>';
|
901 |
+
echo '<tr><td>'.__('Last lockout','wp-cerber').'</td><td>'.$last.'</td></tr>';
|
902 |
+
echo '<tr><td style="padding-top:15px;">'.__('White IP Access List','wp-cerber').'</td><td style="padding-top:15px;"><b>'.$w_count.' '._n('entry','entries',$w_count,'wp-cerber').'</b></td></tr>';
|
903 |
+
echo '<tr><td>'.__('Black IP Access List','wp-cerber').'</td><td><b>'.$b_count.' '._n('entry','entries',$b_count,'wp-cerber').'</b></td></tr>';
|
904 |
+
echo '<tr><td style="padding-top:15px;">'.__('Citadel mode','wp-cerber').'</td><td style="padding-top:15px;"><b>'.$citadel.'</b></td></tr>';
|
905 |
+
$dev = $wp_cerber->getSettings('pbdevice');
|
906 |
+
if (!$dev || $dev == 'N') echo '<tr><td style="padding-top:15px;">'.__('Push notifications','wp-cerber').'</td><td style="padding-top:15px;"><b>not configured</b></td></tr>';
|
907 |
+
echo '</table></div>';
|
908 |
+
|
909 |
+
echo '<div class="wilinks">
|
910 |
+
<a href="'.$dash.'"><span class="dashicons dashicons-dashboard"></span> ' . __('Dashboard','wp-cerber').'</a> |
|
911 |
+
<a href="'.$act.'"><span class="dashicons dashicons-welcome-view-site"></span> ' . __('Activity','wp-cerber').'</a> |
|
912 |
+
<a href="'.$loc.'"><span class="dashicons dashicons-shield"></span> ' . __('Lockouts','wp-cerber').'</a> |
|
913 |
+
<a href="'.$acl.'"><span class="dashicons dashicons-admin-network"></span> ' . __('Access Lists','wp-cerber').'</a>
|
914 |
+
</div>';
|
915 |
+
if ($msg = cerber_update_check()) echo '<div class="up-cerber">'.$msg.'</div>';
|
916 |
+
}
|
917 |
+
|
918 |
+
/*
|
919 |
+
Show Help tab screen
|
920 |
+
*/
|
921 |
+
function cerber_show_help() {
|
922 |
+
|
923 |
+
$assets_url = plugin_dir_url( CERBER_FILE ) . 'assets';
|
924 |
+
|
925 |
+
?>
|
926 |
+
<div id="crb-help">
|
927 |
+
|
928 |
+
<h3>Do you have a question or need help?</h3>
|
929 |
+
|
930 |
+
<p>Support is provided on the WordPress forums for free, though please note that it is free support hence it is
|
931 |
+
not always possible to answer all questions on a timely manner, although I do try.</p>
|
932 |
+
|
933 |
+
<p><span class="dashicons-before dashicons-controls-play" style="vertical-align: middle;"></span> <a
|
934 |
+
href="http://wordpress.org/support/plugin/wp-cerber">Get answer on the support forum</a>.</p>
|
935 |
+
|
936 |
+
|
937 |
+
<h3>Mobile and browser notifications with Pushbullet</h3>
|
938 |
+
|
939 |
+
<p>
|
940 |
+
WP Cerber allows you to easily enable desktop and mobile notifications and get notifications instantly and for free. In a desktop browser, you will get popup messages even if you logged out of your WordPress.
|
941 |
+
Before you start receiving notifications you need to install a free Pushbullet mobile application on your mobile device or free browser extension available for Chrome, Firefox and Opera.
|
942 |
+
</p>
|
943 |
+
<p><span class="dashicons-before dashicons-controls-play" style="vertical-align: middle;"></span>
|
944 |
+
<a href="http://wpcerber.com/wordpress-mobile-and-browser-notifications-pushbullet/">A three steps instruction how to set up push notifications</a>
|
945 |
+
</p>
|
946 |
+
<p><span class="dashicons-before dashicons-controls-play" style="vertical-align: middle;"></span>
|
947 |
+
<a href="http://wpcerber.com/wordpress-notifications-made-easy/">How to get alerts for specific activity on your website</a>
|
948 |
+
</p>
|
949 |
+
|
950 |
+
<h3>What is Drill down IP?</h3>
|
951 |
+
|
952 |
+
<p>
|
953 |
+
To get extra information like country, company, network info, abuse contact etc. for a specific IP address,
|
954 |
+
the plugin makes requests to a limited set of external WHOIS servers which are maintained by appropriate
|
955 |
+
Registry. All Registry are accredited by ICANN, so there are no reasons for security concerns. Retrieved
|
956 |
+
information isn't storing in the database, but it is caching for 24 hours to avoid excessive requests and
|
957 |
+
get faster response.
|
958 |
+
</p>
|
959 |
+
<p><span class="dashicons-before dashicons-controls-play" style="vertical-align: middle;"></span> <a
|
960 |
+
href="http://wpcerber.com?p=194">Read more in the Security Blog</a></p>
|
961 |
+
|
962 |
+
<h3>What is Cerber Lab?</h3>
|
963 |
+
|
964 |
+
<p>
|
965 |
+
Cerber Laboratory is a forensic team behind the WP Cerber security plugin. The team studies and analyzes
|
966 |
+
patterns of hacker and botnet attacks, malware, vulnerabilities in major plugins and how they are
|
967 |
+
exploitable on WordPress powered websites.
|
968 |
+
</p>
|
969 |
+
<p><span class="dashicons-before dashicons-controls-play" style="vertical-align: middle;"></span>
|
970 |
+
<a href="http://wpcerber.com/cerber-laboratory/">Know more</a>
|
971 |
+
</p>
|
972 |
+
|
973 |
+
<h3>Do you have an idea for a cool new feature that you would love to see in WP Cerber?</h3>
|
974 |
+
|
975 |
+
<p>
|
976 |
+
Feel free to submit your ideas here: <a href="http://wpcerber.com/new-feature-request/">New Feature
|
977 |
+
Request</a>.
|
978 |
+
</p>
|
979 |
+
|
980 |
+
<h3>Are you ready to translate this plugin into your language?</h3>
|
981 |
+
|
982 |
+
<p>I would appreciate that! Please, <a href="http://wpcerber.com/support/">notify me</a></p>
|
983 |
+
|
984 |
+
<h3 style="margin: 40px 0 40px 0;">Check out other plugins from the trusted author</h3>
|
985 |
+
|
986 |
+
<div>
|
987 |
+
|
988 |
+
<a href="https://wordpress.org/plugins/plugin-inspector/">
|
989 |
+
|
990 |
+
<img src="<?php echo $assets_url . '/inspector.png' ?>"
|
991 |
+
style="float: left; width: 128px; margin-right: 20px;"/>
|
992 |
+
</a>
|
993 |
+
<h3>Plugin for inspecting code of plugins on your site: <a
|
994 |
+
href="https://wordpress.org/plugins/plugin-inspector/">Plugin Inspector</a></h3>
|
995 |
+
<p style="font-size: 110%">The Plugin Inspector plugin is an easy way to check plugins installed on your
|
996 |
+
WordPress and make sure
|
997 |
+
that plugins does not use deprecated WordPress functions and some unsafe functions like eval,
|
998 |
+
base64_decode, system, exec etc. Some of those functions may be used to load malicious code (malware)
|
999 |
+
from the external source directly to the site or WordPress database.
|
1000 |
+
</p>
|
1001 |
+
<p style="font-size: 110%">Plugin Inspector allows you to view all the deprecated functions complete with
|
1002 |
+
path, line number,
|
1003 |
+
deprecation function name, and the new recommended function to use. The checks are run through a simple
|
1004 |
+
admin page and all results are displayed at once. This is very handy for plugin developers or anybody
|
1005 |
+
who want to know more about installed plugins.
|
1006 |
+
</p>
|
1007 |
+
</div>
|
1008 |
+
|
1009 |
+
<div style="margin: 40px 0 40px 0;">
|
1010 |
+
<a href="https://wordpress.org/plugins/goo-translate-widget/">
|
1011 |
+
<img src="<?php echo $assets_url . '/goo-translate.png' ?>"
|
1012 |
+
style="float: left; width: 128px; margin-right: 20px;"/>
|
1013 |
+
</a>
|
1014 |
+
|
1015 |
+
<h3>Plugin to quick translate site: <a href="https://wordpress.org/plugins/goo-translate-widget/">Google
|
1016 |
+
Translate Widget</a></h3>
|
1017 |
+
<p style="font-size: 110%">Google Translate Widget expands your global reach quickly and easily. Google Translate is a free
|
1018 |
+
multilingual machine translation service provided by Google to translate websites. And now you can allow
|
1019 |
+
visitors around of the world to get your site in their native language. Just put widget on the sidebar
|
1020 |
+
with one click.</p>
|
1021 |
+
|
1022 |
+
</div>
|
1023 |
+
|
1024 |
+
</div>
|
1025 |
+
<?php
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
/**
|
1029 |
+
*
|
1030 |
+
* Dashboard v.1
|
1031 |
+
*
|
1032 |
+
* @since 4.0
|
1033 |
+
*
|
1034 |
+
*/
|
1035 |
+
function cerber_show_dashboard() {
|
1036 |
+
global $wpdb;
|
1037 |
+
|
1038 |
+
echo '<div style="padding-right: 30px;">';
|
1039 |
+
|
1040 |
+
$period = time() - 24 * 3600;
|
1041 |
+
$unique_ip = $wpdb->get_var('SELECT COUNT(DISTINCT ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN (10, 11, 16, 40, 50, 51, 52, 53, 54) AND stamp > '.$period);
|
1042 |
+
$kpi_locknum = $wpdb->get_var('SELECT COUNT(ip) FROM '. CERBER_BLOCKS_TABLE);
|
1043 |
+
|
1044 |
+
// TODO: Add spam performance as percentage Denied / Allowed comments
|
1045 |
+
|
1046 |
+
$kpi_list = array(
|
1047 |
+
//array( __('Incidents detected','wp-cerber').'</a>', cerber_count_log( array( 16, 40, 50, 51, 52, 53, 54 ) ) ),
|
1048 |
+
array( __('Malicious activities mitigated','wp-cerber').'</a>', cerber_count_log( array( 10, 11, 16, 40, 50, 51, 52, 53, 54 ) ) ),
|
1049 |
+
array( __('Spam comments denied','wp-cerber'), cerber_count_log( array( 16 ) ) ),
|
1050 |
+
array( __('Malicious IP addresses detected','wp-cerber'), $unique_ip ),
|
1051 |
+
array( __('Lockouts occurred','wp-cerber'), cerber_count_log( array( 10, 11 ) ) ),
|
1052 |
+
array( __('Locked out IP now','wp-cerber'), $kpi_locknum ),
|
1053 |
+
);
|
1054 |
+
|
1055 |
+
$kpi_show = '';
|
1056 |
+
foreach ($kpi_list as $kpi){
|
1057 |
+
$kpi_show .= '<td>'.$kpi[1].'</td><td><span style="z-index: 10;">'.$kpi[0].'</span></td>';
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
$kpi_show = '<table id = "crb-kpi" class="cerber-margin"><tr>'.$kpi_show.'</tr></table>';
|
1061 |
+
|
1062 |
+
echo '<div>' . $kpi_show . '<p style="text-align: right; margin: 0;">in the last 24 hours</p></div>';
|
1063 |
+
|
1064 |
+
//$total = $wpdb->get_var( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE );
|
1065 |
+
//if ($total > $num) $l1 = 'Last ' . $num . ' suspect events are displayed';
|
1066 |
+
|
1067 |
+
$links = array();
|
1068 |
+
$links[] = '<a href="' . cerber_admin_link( 'activity' ) . '">' . __( 'View all', 'wp-cerber' ) . '</a>';
|
1069 |
+
|
1070 |
+
$labels = cerber_get_labels();
|
1071 |
+
$set = array( 5 );
|
1072 |
+
foreach ( $set as $item ) {
|
1073 |
+
$links[] = '<a href="' . cerber_admin_link( 'activity' ) . '&filter_activity=' . $item . '">' . $labels[ $item ] . '</a>';
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
$links[] = '<a href="' . cerber_activity_link( array( 2 ) ) . '">' . __( 'User registered', 'wp-cerber' ) . '</a>';
|
1077 |
+
$links[] = '<a href="' . cerber_activity_link( array( 10, 11, 16, 20, 40, 50, 51, 52, 53, 54, 55 ) ) . '">' . __( 'All suspicious activity', 'wp-cerber' ) . '</a>';
|
1078 |
+
|
1079 |
+
|
1080 |
+
$nav_links = '<span style="display: inline-block; margin-left: 1em;">' . implode(' | ',$links) . '</span>';
|
1081 |
+
|
1082 |
+
echo '<table class="cerber-margin"><tr><td><h2 style="margin-bottom:0.5em;">' . __( 'Activity', 'wp-cerber' ) . '</h2></td><td>' . $nav_links . '</td></tr></table>';
|
1083 |
+
|
1084 |
+
cerber_show_activity( array(
|
1085 |
+
'filter_activity' => array( 1, 2, 5, 10, 11, 12, 16, 40, 41, 42, 50, 51, 52, 53, 54 ),
|
1086 |
+
'per_page' => 10,
|
1087 |
+
'no_navi' => true,
|
1088 |
+
'no_export' => true,
|
1089 |
+
'no_details' => true,
|
1090 |
+
'date' => 'ago'
|
1091 |
+
) );
|
1092 |
+
|
1093 |
+
|
1094 |
+
//$total = $wpdb->get_var( 'SELECT count(ip) FROM ' . CERBER_BLOCKS_TABLE );
|
1095 |
+
//if ($total > $num) $l2 = '<p>Last ' . $num . ' lockouts of '.$total.' are displayed</p>';
|
1096 |
+
|
1097 |
+
$view = '<a href="' . cerber_admin_link( 'lockouts' ) . '">' . __( 'View all', 'wp-cerber' ) . '</a>';
|
1098 |
+
echo '<table class="cerber-margin" style="margin-top:2em;"><tr><td><h2 style="margin-bottom:0.5em;">' . __( 'Recently locked out IP addresses', 'wp-cerber' ) . '</h3></td><td> | ' . $view . '</td></tr></table>';
|
1099 |
+
|
1100 |
+
cerber_show_lockouts( array(
|
1101 |
+
'per_page' => 10,
|
1102 |
+
'no_navi' => true
|
1103 |
+
) );
|
1104 |
+
|
1105 |
+
echo '</div>';
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
|
1109 |
+
/*
|
1110 |
+
Admin aside bar
|
1111 |
+
*/
|
1112 |
+
function cerber_show_aside($page){
|
1113 |
+
|
1114 |
+
if (in_array($page,array('activity','lockouts'))) return;
|
1115 |
+
|
1116 |
+
$aside = array();
|
1117 |
+
|
1118 |
+
if (in_array($page,array('main'))) {
|
1119 |
+
$aside[]='<div class="crb-box">
|
1120 |
+
<h3>'.__('Confused about some settings?','wp-cerber').'</h3>'
|
1121 |
+
.__('You can easily load default recommended settings using button below','wp-cerber').'
|
1122 |
+
<p style="text-align:center;">
|
1123 |
+
<input type="button" class="button button-primary" value="'.__('Load default settings','wp-cerber').'" onclick="button_default_settings()" />
|
1124 |
+
<script type="text/javascript">function button_default_settings(){
|
1125 |
+
if (confirm("'.__('Are you sure?','wp-cerber').'")) {
|
1126 |
+
click_url = "'.wp_nonce_url(add_query_arg(array('load_settings'=>'default')),'control','cerber_nonce').'";
|
1127 |
+
window.location = click_url.replace(/&/g,"&");
|
1128 |
+
}
|
1129 |
+
}</script>
|
1130 |
+
</p>
|
1131 |
+
<p><i>* '.__("doesn't affect Custom login URL and Access Lists",'wp-cerber').'</i></p>
|
1132 |
+
</div>';
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
$aside[] = '<div class="crb-box" id = "crb-subscribe">
|
1136 |
+
<div class="crb-box-inner">
|
1137 |
+
<h3>Be in touch with developer</h3>
|
1138 |
+
<p>Receive updates and helpful ideas to protect your website, blog, or business online.</p>
|
1139 |
+
<p>
|
1140 |
+
<span class="dashicons-before dashicons-email-alt"></span> <a href="http://wpcerber.com/subscribe-newsletter/" target="_blank">Subscribe to Cerber\'s newsletter</a></br>
|
1141 |
+
<span class="dashicons-before dashicons-twitter"></span> <a href="https://twitter.com/wpcerber">Follow Cerber on Twitter</a></br>
|
1142 |
+
<span class="dashicons-before dashicons-facebook"></span> <a href="https://www.facebook.com/wpcerber/">Follow Cerber on Facebook</a>
|
1143 |
+
</p>
|
1144 |
+
</div>
|
1145 |
+
</div>
|
1146 |
+
';
|
1147 |
+
|
1148 |
+
$aside[] = '<div class="crb-box" id = "crb-donate">
|
1149 |
+
<div class="crb-box-inner">
|
1150 |
+
<h3>'.__('Donate','wp-cerber').'</h3>
|
1151 |
+
<p>Hi! It\'s Gregory. I am an author of this plugin. Please consider making a donation to support the continued development and free support of this plugin because I spend my free time for that. Any help is greatly appreciated. Thanks!</p>
|
1152 |
+
|
1153 |
+
<div style="text-align:center;">
|
1154 |
+
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
1155 |
+
<input type="hidden" name="cmd" value="_s-xclick">
|
1156 |
+
<input type="hidden" name="hosted_button_id" value="SR8RJXFU35EW8">
|
1157 |
+
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG_global.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
|
1158 |
+
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
|
1159 |
+
</form>
|
1160 |
+
</div>
|
1161 |
+
|
1162 |
+
</div>
|
1163 |
+
</div>';
|
1164 |
+
|
1165 |
+
/*$aside[] = '<div class="crb-box" id = "crb-jetflow">
|
1166 |
+
<div class="crb-box-inner">
|
1167 |
+
<h3>Automate WordPress</h3>
|
1168 |
+
<p>Create automation scenarios without coding knowledge with the jetFlow.io plugin. Customize your WordPress in no time. No programming knowledge needed anymore.</p>
|
1169 |
+
<p><span class="dashicons-before dashicons-layout"></span> <a href="http://jetflow.io/" target="_blank">Download the jetFlow.io plugin</a></p>
|
1170 |
+
</div>
|
1171 |
+
</div>
|
1172 |
+
';*/
|
1173 |
+
|
1174 |
+
$aside[] = '<div class="crb-box" id = "crb-blog">
|
1175 |
+
<div class="crb-box-inner">
|
1176 |
+
<!-- <h3><span class="dashicons-before dashicons-lightbulb"></span> Read Cerber\'s blog</h3> -->
|
1177 |
+
<h3>WordPress security blog</h3>
|
1178 |
+
<p><a href="http://wpcerber.com/wordpress-mobile-and-browser-notifications-pushbullet/" target="_blank">Instant mobile and browser notifications</a>
|
1179 |
+
<p><a href="http://wpcerber.com/wordpress-notifications-made-easy/" target="_blank">WordPress notifications made easy</a>
|
1180 |
+
<p><a href="http://wpcerber.com/why-its-important-to-restrict-access-to-rest-api/" target="_blank">Why it’s important to restrict access to the WP REST API</a>
|
1181 |
+
<p><a href="http://wpcerber.com/why-we-need-to-use-custom-login-url/" target="_blank">Why you need to use Custom login URL</a>
|
1182 |
+
<p><a href="http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/" target="_blank">How IP Access Lists works</a>
|
1183 |
+
<p><a href="http://wpcerber.com/hardening-wordpress-with-wp-cerber/" target="_blank">Hardening WordPress with WP Cerber</a>
|
1184 |
+
<p><a href="http://wpcerber.com/hardening-wordpress-with-wp-cerber-and-nginx/" target="_blank">Hardening WordPress with WP Cerber and NGINX</a>
|
1185 |
+
|
1186 |
+
</div>
|
1187 |
+
</div>';
|
1188 |
+
|
1189 |
+
echo '<div id="crb-aside">'.implode(' ',$aside).'</div>';
|
1190 |
+
}
|
1191 |
+
|
1192 |
+
/*
|
1193 |
+
Displaying notices in the dashboard
|
1194 |
+
*/
|
1195 |
+
add_action( 'admin_notices', 'cerber_show_admin_notice', 999 );
|
1196 |
+
add_action( 'network_admin_notices', 'cerber_show_admin_notice', 999 );
|
1197 |
+
function cerber_show_admin_notice(){
|
1198 |
+
global $cerber_shown;
|
1199 |
+
$cerber_shown = false;
|
1200 |
+
|
1201 |
+
if (cerber_is_citadel() && current_user_can('manage_options')) {
|
1202 |
+
echo '<div class="update-nag crb-alarm"><p>'.
|
1203 |
+
__('Attention! Citadel mode is now active. Nobody is able to log in.','wp-cerber').
|
1204 |
+
' <a href="'.wp_nonce_url(add_query_arg(array('citadel' => 'deactivate')),'control','cerber_nonce').'">'.__('Deactivate','wp-cerber').'</a>'.
|
1205 |
+
' | <a href="' . cerber_admin_link('activity') . '">' . __('View Activity','wp-cerber') . '</a>' .
|
1206 |
+
'</p></div>';
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
if (!cerber_is_admin_page()) return;
|
1210 |
+
|
1211 |
+
cerber_update_check(); // TODO: move to cron
|
1212 |
+
|
1213 |
+
//if ($notices = get_site_option('cerber_admin_notice'))
|
1214 |
+
// echo '<div class="update-nag crb-note"><p>'.$notices.'</p></div>'; // class="updated" - green, class="update-nag" - yellow and above the page title,
|
1215 |
+
//if ($notices = get_site_option('cerber_admin_message'))
|
1216 |
+
// echo '<div class="updated" style="overflow: auto;"><p>'.$notices.'</p></div>'; // class="updated" - green, class="update-nag" - yellow and above the page title,
|
1217 |
+
|
1218 |
+
$all = array();
|
1219 |
+
if ( ! empty( $_GET['settings-updated'] ) ) {
|
1220 |
+
$all[] = array( __( 'Settings saved', 'wp-cerber' ), 'updated' );
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
if ( $notice = get_site_option( 'cerber_admin_notice' ) ) {
|
1224 |
+
$all[] = array( $notice, 'error' ); // red
|
1225 |
+
}
|
1226 |
+
if ( $notice = get_site_option( 'cerber_admin_message' ) ) {
|
1227 |
+
$all[] = array( $notice, 'updated' ); // green
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
|
1231 |
+
// yellow #ffb900;
|
1232 |
+
if ($all) {
|
1233 |
+
$cerber_shown = true;
|
1234 |
+
foreach ( $all as $notice ) {
|
1235 |
+
echo '<div id="setting-error-settings_updated" class="' . $notice[1] . ' settings-error notice is-dismissible">
|
1236 |
+
<p>' . $notice[0] . '</p><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>';
|
1237 |
+
}
|
1238 |
+
}
|
1239 |
+
|
1240 |
+
update_site_option('cerber_admin_notice', null);
|
1241 |
+
update_site_option('cerber_admin_message', null);
|
1242 |
+
|
1243 |
+
if ($notice = get_site_option('cerber_admin_info')) { // need to be dismissed manually
|
1244 |
+
$cerber_shown = true;
|
1245 |
+
echo '<div class="updated cerber-msg" style="overflow: auto;"><p>'.$notice.'</p></div>';
|
1246 |
+
}
|
1247 |
+
}
|
1248 |
+
|
1249 |
+
/**
|
1250 |
+
* Detects currently displaying Tab on admin page
|
1251 |
+
*
|
1252 |
+
* @param string $default
|
1253 |
+
* @param array $available
|
1254 |
+
*
|
1255 |
+
* @return string
|
1256 |
+
*/
|
1257 |
+
function cerber_get_tab( $default = '', $available = array() ) {
|
1258 |
+
|
1259 |
+
$tab = isset( $_GET['tab'] ) ? $_GET['tab'] : $default;
|
1260 |
+
|
1261 |
+
if ( ! in_array( $tab, $available ) ) {
|
1262 |
+
$tab = $default;
|
1263 |
+
}
|
1264 |
+
|
1265 |
+
return $tab;
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
/*
|
1269 |
+
Checks for a new version of WP Cerber and creates messages if needed
|
1270 |
+
*/
|
1271 |
+
function cerber_update_check() {
|
1272 |
+
$ret = false;
|
1273 |
+
if ( $updates = get_site_transient( 'update_plugins' ) ) {
|
1274 |
+
$key = cerber_plug_in();
|
1275 |
+
if ( isset( $updates->checked[ $key ] ) && isset( $updates->response[ $key ] ) ) {
|
1276 |
+
$old = $updates->checked[ $key ];
|
1277 |
+
$new = $updates->response[ $key ]->new_version;
|
1278 |
+
if ( 1 === version_compare( $new, $old ) ) {
|
1279 |
+
// current version is lower than latest
|
1280 |
+
$ret = __( 'New version is available', 'wp-cerber' ) . ' <span class="dashicons dashicons-arrow-right"></span>';
|
1281 |
+
if ( is_multisite() ) {
|
1282 |
+
$href = network_admin_url( 'plugins.php?plugin_status=upgrade' );
|
1283 |
+
} else {
|
1284 |
+
$href = admin_url( 'plugins.php?plugin_status=upgrade' );
|
1285 |
+
}
|
1286 |
+
$msg = '<b>' . $ret . '</b> <a href="' . $href . '">' . sprintf( __( 'Update to version %s of WP Cerber', 'wp-cerber' ), $new ) . '</a>';
|
1287 |
+
cerber_admin_message( $msg );
|
1288 |
+
$ret = '<a href="' . $href . '">' . $ret . '</a>';
|
1289 |
+
|
1290 |
+
// TODO: implement as a cron task, daily
|
1291 |
+
//update_site_option('cerber_new_version',array($new, time()));
|
1292 |
+
//cerber_send_notify('new_version');
|
1293 |
+
}
|
1294 |
+
}
|
1295 |
+
}
|
1296 |
+
return $ret;
|
1297 |
+
}
|
1298 |
+
|
1299 |
+
/**
|
1300 |
+
*
|
1301 |
+
* Generates a link for subscribing on a currently displaying Activity page
|
1302 |
+
*
|
1303 |
+
* @return string Link for using in the Dashboard, HTML
|
1304 |
+
*/
|
1305 |
+
function cerber_subscribe_link() {
|
1306 |
+
$args = array_values(cerber_subscribe_params());
|
1307 |
+
|
1308 |
+
// All activities, without any filter is not allowed
|
1309 |
+
$empty = array_filter($args);
|
1310 |
+
if (empty($empty)) return '';
|
1311 |
+
|
1312 |
+
$subs = get_site_option( '_cerber_subs' );
|
1313 |
+
|
1314 |
+
// Limit on number of subscriptions
|
1315 |
+
if ( count( $subs ) > 50 ) return '';
|
1316 |
+
|
1317 |
+
$mode = 'on';
|
1318 |
+
if ( $subs ) {
|
1319 |
+
$hash = sha1( json_encode( $args ) );
|
1320 |
+
if ( recursive_search_key( $subs, $hash ) ) {
|
1321 |
+
$mode = 'off';
|
1322 |
+
}
|
1323 |
+
}
|
1324 |
+
$link = wp_nonce_url( add_query_arg( 'subscribe', $mode ), 'control', 'cerber_nonce' );
|
1325 |
+
if ($mode == 'on') $text = __('Subscribe','wp-cerber');
|
1326 |
+
else $text = __('Unsubscribe','wp-cerber');
|
1327 |
+
|
1328 |
+
return '<span class="dashicons dashicons-email" style="vertical-align: middle;"></span> <a id="subscribe-me" href="' . $link . '" style="margin-right: 1.5em;">'.$text.'</a>';
|
1329 |
+
}
|
1330 |
+
|
1331 |
+
/**
|
1332 |
+
* Managing the list of subscriptions
|
1333 |
+
*
|
1334 |
+
* @param string $mode Add or delete a subscription
|
1335 |
+
* @param string $hash If specified, subscription with given hash will be removed
|
1336 |
+
*/
|
1337 |
+
function cerber_subscribe( $mode = 'on', $hash = null ) {
|
1338 |
+
if ($hash) {
|
1339 |
+
$mode = 'off';
|
1340 |
+
}
|
1341 |
+
else {
|
1342 |
+
$args = array_values(cerber_subscribe_params());
|
1343 |
+
$hash = sha1( json_encode( $args ) );
|
1344 |
+
}
|
1345 |
+
|
1346 |
+
$subs = get_site_option( '_cerber_subs' );
|
1347 |
+
|
1348 |
+
if ( ! $subs ) {
|
1349 |
+
$subs = array();
|
1350 |
+
}
|
1351 |
+
|
1352 |
+
if ( $mode == 'on' ) {
|
1353 |
+
$subs[ $hash ] = $args;
|
1354 |
+
$msg = __( "You've subscribed", 'wp-cerber' );
|
1355 |
+
} else {
|
1356 |
+
unset( $subs[ $hash ] );
|
1357 |
+
$msg = __( "You've unsubscribed", 'wp-cerber' );
|
1358 |
+
}
|
1359 |
+
|
1360 |
+
if ( update_site_option( '_cerber_subs', $subs ) ) {
|
1361 |
+
cerber_admin_message( $msg );
|
1362 |
+
}
|
1363 |
+
}
|
1364 |
+
|
1365 |
+
// Unsubscribe with hash without nonce
|
1366 |
+
add_action('admin_init',function(){
|
1367 |
+
if (!empty($_GET['unsubscribeme'])){
|
1368 |
+
cerber_subscribe('off',$_GET['unsubscribeme']);
|
1369 |
+
wp_safe_redirect(remove_query_arg('unsubscribeme'));
|
1370 |
+
exit;
|
1371 |
+
}
|
1372 |
+
});
|
1373 |
+
|
1374 |
+
/*
|
1375 |
+
Pagination
|
1376 |
+
*/
|
1377 |
+
function cerber_page_navi($total,$per_page = 20){
|
1378 |
+
$max_links = 10;
|
1379 |
+
$page = cerber_get_pn();
|
1380 |
+
$last_page = ceil($total / $per_page);
|
1381 |
+
$ret = '';
|
1382 |
+
if($last_page > 1){
|
1383 |
+
$start =1 + $max_links * intval(($page-1)/$max_links);
|
1384 |
+
$end = $start + $max_links - 1;
|
1385 |
+
if ($end > $last_page) $end = $last_page;
|
1386 |
+
if ($start > $max_links) $links[]='<a href="'.esc_url(add_query_arg('pagen',$start - 1)).'" class="arrows"><b>«</b></a>';
|
1387 |
+
for ($i=$start; $i <= $end; $i++) {
|
1388 |
+
if($page!=$i) $links[]='<a href="'.esc_url(add_query_arg('pagen',$i)).'" >'.$i.'</a>';
|
1389 |
+
else $links[]='<a class="active" style="font-size: 16px;">'.$i.'</a> ';
|
1390 |
+
}
|
1391 |
+
if($end < $last_page) $links[]='<a href="'.esc_url(add_query_arg('pagen',$i)).'" class="arrows">»</a>'; // ➝
|
1392 |
+
$ret = '<table class="cerber-margin" style="margin-top:1em; border-collapse: collapse;"><tr><td><div class="pagination">'.implode(' ',$links).'</div></td><td><span style="margin-left:2em;"><b>'.$total.' '._n('entry','entries',$total,'wp-cerber').'</b></span></td></tr></table>';
|
1393 |
+
}
|
1394 |
+
return $ret;
|
1395 |
+
}
|
1396 |
+
function cerber_get_pn(){
|
1397 |
+
$page = 1;
|
1398 |
+
if ( isset( $_GET['pagen'] ) ) {
|
1399 |
+
$page = absint( $_GET['pagen'] );
|
1400 |
+
if ( ! $page ) {
|
1401 |
+
$page = 1;
|
1402 |
+
}
|
1403 |
+
}
|
1404 |
+
return $page;
|
1405 |
+
}
|
1406 |
+
/*
|
1407 |
+
Plugins screen links
|
1408 |
+
*/
|
1409 |
+
add_filter('plugin_action_links','cerber_action_links',10,4);
|
1410 |
+
function cerber_action_links($actions, $plugin_file, $plugin_data, $context){
|
1411 |
+
if($plugin_file == cerber_plug_in()){
|
1412 |
+
$link[] = '<a href="' . cerber_admin_link() . '">' . __('Dashboard','wp-cerber') . '</a>';
|
1413 |
+
$link[] = '<a href="' . cerber_admin_link('acl') . '">' . __('Access Lists','wp-cerber') . '</a>';
|
1414 |
+
$actions = array_merge ($link,$actions);
|
1415 |
+
}
|
1416 |
+
return $actions;
|
1417 |
+
}
|
1418 |
+
/*
|
1419 |
+
* Create database diagnostic report
|
1420 |
+
*
|
1421 |
+
*
|
1422 |
+
*/
|
1423 |
+
function cerber_db_diag(){
|
1424 |
+
global $wpdb,$wp_cerber;
|
1425 |
+
$ret = array();
|
1426 |
+
|
1427 |
+
$ret[]= 'Database name: '.DB_NAME;
|
1428 |
+
|
1429 |
+
$pool = $wpdb->get_row('SHOW VARIABLES LIKE "innodb_buffer_pool_size"');
|
1430 |
+
$pool_size = round($pool->Value / 1048576);
|
1431 |
+
$inno = 'InnoDB buffer pool size: <b>'.$pool_size.' MB</b>';
|
1432 |
+
if ($pool_size < 16) $inno .= ' Your pool size is extremely small!';
|
1433 |
+
elseif ($pool_size < 64) $inno .= ' It seems that your pool size is too small.';
|
1434 |
+
$ret[]= $inno;
|
1435 |
+
|
1436 |
+
$ret[]= cerber_table_info(CERBER_LOG_TABLE);
|
1437 |
+
$ret[]= cerber_table_info(CERBER_ACL_TABLE);
|
1438 |
+
$ret[]= cerber_table_info(CERBER_BLOCKS_TABLE);
|
1439 |
+
|
1440 |
+
if ($wp_cerber->getRemoteIp() == '127.0.0.1') $ret[] = '<p style="color: #DF0000;">It seems that we are unable to get IP addresses.</p>';
|
1441 |
+
|
1442 |
+
if ($errors = get_site_option( '_cerber_db_errors')){
|
1443 |
+
$err = '<p style="color: #DF0000;">Some minor DB errors were detected</p><textarea>'.print_r($errors,1).'</textarea>';
|
1444 |
+
update_site_option( '_cerber_db_errors', '');
|
1445 |
+
}
|
1446 |
+
else $err = '';
|
1447 |
+
|
1448 |
+
return $err.implode('<br>',$ret);
|
1449 |
+
}
|
1450 |
+
|
1451 |
+
function cerber_wp_diag(){
|
1452 |
+
global $wp_version, $wpdb;
|
1453 |
+
|
1454 |
+
$ret = array();
|
1455 |
+
|
1456 |
+
$ret[] = 'WordPress version: ' . $wp_version;
|
1457 |
+
$ret[] = 'WordPress options table: '.$wpdb->prefix.'options';
|
1458 |
+
$ret[] = '<br>Active plugins:<br>';
|
1459 |
+
$list = get_option('active_plugins');
|
1460 |
+
foreach($list as $plugin) {
|
1461 |
+
$data = get_plugin_data(WP_PLUGIN_DIR.'/'.$plugin);
|
1462 |
+
$ret[] = '- '.$data['Name'].' v. '.$data['Version'];
|
1463 |
+
}
|
1464 |
+
|
1465 |
+
return implode("<br>",$ret);
|
1466 |
+
}
|
1467 |
+
|
1468 |
+
/**
|
1469 |
+
* Creates mini report about given database table
|
1470 |
+
*
|
1471 |
+
* @param $table
|
1472 |
+
*
|
1473 |
+
* @return string
|
1474 |
+
*/
|
1475 |
+
function cerber_table_info( $table ) {
|
1476 |
+
global $wpdb;
|
1477 |
+
if (!cerber_is_table($table)){
|
1478 |
+
return '<p style="color: #DF0000;">ERROR. Database table ' . $table . ' not found! Click repair button below.</p>';
|
1479 |
+
}
|
1480 |
+
$cols = $wpdb->get_results( "SHOW FULL COLUMNS FROM " . $table );
|
1481 |
+
|
1482 |
+
$columns = '<table><tr><th style="width: 30%">Field</th><th style="width: 30%">Type</th><th style="width: 30%">Collation</th></tr>';
|
1483 |
+
foreach ( $cols as $column ) {
|
1484 |
+
$column = obj_to_arr_deep( $column );
|
1485 |
+
$field = array_shift( $column );
|
1486 |
+
$type = array_shift( $column );
|
1487 |
+
$collation = array_shift( $column );
|
1488 |
+
$columns .= '<tr><td><b>' . $field . '<b></td><td>' . $type . '</td><td>' . $collation . '</td></tr>';
|
1489 |
+
}
|
1490 |
+
$columns .= '</table>';
|
1491 |
+
|
1492 |
+
$rows = absint( $wpdb->get_var( 'SELECT COUNT(*) FROM ' . $table ) );
|
1493 |
+
|
1494 |
+
$sts = $wpdb->get_row( 'SHOW TABLE STATUS WHERE NAME = "' . $table .'"');
|
1495 |
+
$status = '<table>';
|
1496 |
+
foreach ( $sts as $key => $value ) {
|
1497 |
+
$status .= '<tr><td><b>' . $key . '<b></td><td>' . $value . '</td></tr>';
|
1498 |
+
}
|
1499 |
+
$status .= '</table>';
|
1500 |
+
|
1501 |
+
return '<p style="font-size: 110%;">Table: <b>' . $table . '</b>, rows: ' . $rows . '</p><table class="diag-table"><tr><td class="diag-td">' . $columns . '</td><td class="diag-td">'. $status.'</td></tr></table>';
|
1502 |
+
}
|
1503 |
+
|
1504 |
+
|
1505 |
+
/*
|
1506 |
+
function add_some_pointers() {
|
1507 |
+
?>
|
1508 |
+
<script type="text/javascript">
|
1509 |
+
jQuery(document).ready( function($) {
|
1510 |
+
var options = {'content':'<h3>Info</h3><p>Cerber will request WHOIS database for extra information when you click on IP.</p>','position':{'edge':'right','align':'center'}};
|
1511 |
+
if ( ! options ) return;
|
1512 |
+
options = $.extend( options, {
|
1513 |
+
close: function() {
|
1514 |
+
//to do
|
1515 |
+
}
|
1516 |
+
});
|
1517 |
+
|
1518 |
+
//$("#ip_extra").click(function(){
|
1519 |
+
// $(this).pointer( options ).pointer('open');
|
1520 |
+
//});
|
1521 |
+
|
1522 |
+
$('#subscribe-me').pointer( options ).pointer('open');
|
1523 |
+
|
1524 |
+
});
|
1525 |
+
</script>
|
1526 |
+
<?php
|
1527 |
+
}
|
1528 |
+
add_action('admin_enqueue_scripts', 'cerber_admin_enqueue');
|
1529 |
+
function cerber_admin_enqueue($hook) {
|
1530 |
+
wp_enqueue_style( 'wp-pointer' );
|
1531 |
+
wp_enqueue_script( 'wp-pointer' );
|
1532 |
+
}
|
1533 |
+
*/
|
1534 |
+
|
1535 |
+
|
1536 |
+
add_action( 'admin_enqueue_scripts', 'cerber_admin_assets', 9999 );
|
1537 |
+
function cerber_admin_assets() {
|
1538 |
+
/*
|
1539 |
+
if ( ! cerber_is_admin_page() ) {
|
1540 |
+
return;
|
1541 |
+
}*/
|
1542 |
+
|
1543 |
+
$assets_url = plugin_dir_url( __FILE__ ) . 'assets';
|
1544 |
+
|
1545 |
+
if ( ! defined( 'CERBER_BETA' ) ) {
|
1546 |
+
wp_register_style( 'cerber_css', plugin_dir_url( __FILE__ ) . 'assets/admin.css', null, CERBER_VER );
|
1547 |
+
wp_enqueue_style( 'cerber_css' );
|
1548 |
+
|
1549 |
+
wp_enqueue_script( 'cerber_js', $assets_url . '/admin.js', array( 'jquery' ), CERBER_VER, true );
|
1550 |
+
}
|
1551 |
+
|
1552 |
+
// Select2
|
1553 |
+
//wp_register_style( 'select2css', $assets_url . '/select2/dist/css/select2.min.css' );
|
1554 |
+
//wp_enqueue_style( 'select2css' );
|
1555 |
+
//wp_enqueue_script( 'select2js', $assets_url . '/select2/dist/js/select2.min.js', null, null, true );
|
1556 |
+
|
1557 |
+
}
|
1558 |
+
|
1559 |
+
/*
|
1560 |
+
* JS & CSS for admin head
|
1561 |
+
*
|
1562 |
+
*/
|
1563 |
+
add_action('admin_head','cerber_admin_head');
|
1564 |
+
function cerber_admin_head(){
|
1565 |
+
//$assets_url = plugin_dir_url(CERBER_FILE).'assets';
|
1566 |
+
|
1567 |
+
if (defined('CERBER_BETA')) :
|
1568 |
+
?>
|
1569 |
+
<style type="text/css" media="all">
|
1570 |
+
<?php readfile(dirname(__FILE__).'/assets/admin.css'); ?>
|
1571 |
+
</style>
|
1572 |
+
<?php
|
1573 |
+
endif;
|
1574 |
+
|
1575 |
+
if ( ! cerber_is_admin_page() ) {
|
1576 |
+
return;
|
1577 |
+
}
|
1578 |
+
?>
|
1579 |
+
<style type="text/css" media="all">
|
1580 |
+
/* Aliens messages */
|
1581 |
+
.update-nag,
|
1582 |
+
#setting-error-tgmpa {
|
1583 |
+
display: none;
|
1584 |
+
}
|
1585 |
+
|
1586 |
+
/* Cerber's messages */
|
1587 |
+
div.wrap .update-nag,
|
1588 |
+
.crb-alarm {
|
1589 |
+
/*display: initial;*/
|
1590 |
+
display: inline-block;
|
1591 |
+
}
|
1592 |
+
</style>
|
1593 |
+
<?php
|
1594 |
+
}
|
1595 |
+
/*
|
1596 |
+
* JS & CSS for admin footer
|
1597 |
+
*
|
1598 |
+
*/
|
1599 |
+
add_action('admin_footer','cerber_basement');
|
1600 |
+
function cerber_basement(){
|
1601 |
+
//add_some_pointers();
|
1602 |
+
//$assets_url = plugin_dir_url(CERBER_FILE).'assets';
|
1603 |
+
$ajax_nonce = wp_create_nonce('delete-ip');
|
1604 |
+
?>
|
1605 |
+
<script type="text/javascript">
|
1606 |
+
crb_ajax_nonce = '<?php echo $ajax_nonce; ?>';
|
1607 |
+
</script>
|
1608 |
+
<?php
|
1609 |
+
|
1610 |
+
if (defined('CERBER_BETA')) :
|
1611 |
+
?>
|
1612 |
+
<script type="text/javascript">
|
1613 |
+
<?php readfile(dirname(__FILE__).'/assets/admin.js'); ?>
|
1614 |
+
</script>
|
1615 |
+
<?php
|
1616 |
+
endif;
|
1617 |
+
|
1618 |
+
}
|
1619 |
+
|
1620 |
+
add_filter( 'admin_footer_text','cerber_footer_text1');
|
1621 |
+
function cerber_footer_text1($text){
|
1622 |
+
if (!cerber_is_admin_page(false)) return $text;
|
1623 |
+
return 'If you like how <strong>WP Cerber</strong> protects your website, please <a target="_blank" href="https://wordpress.org/support/plugin/wp-cerber/reviews/#new-post">leave it a ★ ★ ★ ★ ★ rating</a>. Thanks in advance!';
|
1624 |
+
}
|
1625 |
+
add_filter( 'update_footer','cerber_footer_text2', 1000);
|
1626 |
+
function cerber_footer_text2($text){
|
1627 |
+
if (!cerber_is_admin_page(false)) return $text;
|
1628 |
+
return '<a target="_blank" href="https://wordpress.org/support/plugin/wp-cerber">Support forum</a>';
|
1629 |
+
}
|
1630 |
+
|
1631 |
+
/*
|
1632 |
+
* Add per admin screen settings
|
1633 |
+
* @since 3.0
|
1634 |
+
*
|
1635 |
+
*/
|
1636 |
+
function cerber_screen_options() {
|
1637 |
+
if (!empty($_GET['tab'])) $tab = $_GET['tab'];
|
1638 |
+
else $tab = '';
|
1639 |
+
if ( !in_array( $tab, array( 'lockouts', 'activity' ) ) ) {
|
1640 |
+
return;
|
1641 |
+
}
|
1642 |
+
$args = array(
|
1643 |
+
//'label' => __( 'Number of items per page:' ),
|
1644 |
+
'default' => 50,
|
1645 |
+
'option' => 'cerber_screen_'.$tab,
|
1646 |
+
);
|
1647 |
+
add_screen_option( 'per_page', $args );
|
1648 |
+
// add_screen_option( 'layout_columns', array('max' => 2, 'default' => 2) );
|
1649 |
+
}
|
1650 |
+
/*
|
1651 |
+
* Allows to save options to the user meta
|
1652 |
+
* @since 3.0
|
1653 |
+
*
|
1654 |
+
*/
|
1655 |
+
add_filter('set-screen-option', 'cerber_save_screen_option', 10, 3);
|
1656 |
+
function cerber_save_screen_option($status, $option, $value) {
|
1657 |
+
if (!empty($_GET['tab'])) $tab = $_GET['tab'];
|
1658 |
+
else $tab = 'activity';
|
1659 |
+
if ( 'cerber_screen_'.$tab == $option ) return $value;
|
1660 |
+
return $status;
|
1661 |
+
}
|
1662 |
+
/*
|
1663 |
+
* Retrieve option for current screen
|
1664 |
+
* @since 3.0
|
1665 |
+
*
|
1666 |
+
*/
|
1667 |
+
function cerber_get_per_page(){
|
1668 |
+
if (is_multisite()) return 50; // temporary workaround
|
1669 |
+
$screen = get_current_screen();
|
1670 |
+
$screen_option = $screen->get_option('per_page', 'option');
|
1671 |
+
if ($screen_option == 'cerber_screen_') $screen_option = 'cerber_screen_activity';
|
1672 |
+
$per_page = get_user_meta(get_current_user_id(), $screen_option, true);
|
1673 |
+
if ( empty ( $per_page) || $per_page < 1 ) {
|
1674 |
+
$per_page = $screen->get_option( 'per_page', 'default' );
|
1675 |
+
}
|
1676 |
+
return $per_page;
|
1677 |
+
}
|
1678 |
+
|
index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
jetflow.php
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
|
4 |
+
Integration with the jetFlow.io automation and customization plugin, http://jetflow.io
|
5 |
+
Actions and triggers definitions.
|
6 |
+
|
7 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
8 |
+
|
9 |
+
Licenced under the GNU GPL.
|
10 |
+
|
11 |
+
*/
|
12 |
+
|
13 |
+
/*
|
14 |
+
|
15 |
+
*========================================================================*
|
16 |
+
| |
|
17 |
+
| ATTENTION! Do not change or edit this file! |
|
18 |
+
| |
|
19 |
+
*========================================================================*
|
20 |
+
|
21 |
+
*/
|
22 |
+
|
23 |
+
|
24 |
+
// If this file is called directly, abort executing.
|
25 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
26 |
+
|
27 |
+
|
28 |
+
add_action('jetflow_register','cerber_jetflow');
|
29 |
+
function cerber_jetflow() {
|
30 |
+
if (!class_exists('WF_Repository')) return;
|
31 |
+
class TR_IP_Locked extends WF_Action {
|
32 |
+
static $trigger = true;
|
33 |
+
static $wp_hook = 'cerber_ip_locked';
|
34 |
+
static $name = 'IP locked out';
|
35 |
+
static $description = 'Start after IP address has been blocked by Cerber';
|
36 |
+
static $form_help = '
|
37 |
+
Start the workflow after an IP address has been locked out by the WP Cerber plugin and conditions match the specified criteria.
|
38 |
+
<p>To get blocked IP address in actions use pattern <code>{TRIGGER[IP]}</code>, for a reason why the IP has been locked out use pattern <code>{TRIGGER[reason]}</code>.
|
39 |
+
';
|
40 |
+
public static $fields = array(
|
41 |
+
'filter' => array(
|
42 |
+
'type' => 'group',
|
43 |
+
'fields' => array(
|
44 |
+
'locks' => array(
|
45 |
+
'type' => 'text',
|
46 |
+
'label' => 'Start if an IP address has been locked out more than times',
|
47 |
+
'default' => '0',
|
48 |
+
'autocomplete' => 0
|
49 |
+
),
|
50 |
+
'period' => array(
|
51 |
+
'type' => 'text',
|
52 |
+
'label' => 'in the last minutes',
|
53 |
+
'default' => '60',
|
54 |
+
'autocomplete' => 0
|
55 |
+
),
|
56 |
+
)),
|
57 |
+
'limit' => array(
|
58 |
+
'type' => 'text',
|
59 |
+
'label' => 'Start if the number of currently locked out IP addresses is greater than',
|
60 |
+
'default' => '0',
|
61 |
+
'required' => 1,
|
62 |
+
'autocomplete' => 0
|
63 |
+
),
|
64 |
+
);
|
65 |
+
function execute($fields) {
|
66 |
+
global $wpdb;
|
67 |
+
list ($fields, $previous, $env, $wp_arguments) = func_get_args();
|
68 |
+
if ( cerber_blocked_num() <= absint($fields['limit'])) return new WF_Stop( __CLASS__ );
|
69 |
+
if (!empty($fields['filter']['locks'])) $locks = absint($fields['filter']['locks']);
|
70 |
+
else $locks = 0;
|
71 |
+
if ($locks > 0) {
|
72 |
+
$ip = $wp_arguments[0]['IP'];
|
73 |
+
$stamp = time() - absint( $fields['filter']['period'] ) * 60;
|
74 |
+
$lockouts = $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = %s AND activity IN (10,11) AND stamp > %d', $ip, $stamp ) );
|
75 |
+
$lockouts = absint($lockouts);
|
76 |
+
if ( !$lockouts || $lockouts <= $locks) {
|
77 |
+
return new WF_Stop( __CLASS__ );
|
78 |
+
}
|
79 |
+
}
|
80 |
+
return $wp_arguments[0];
|
81 |
+
}
|
82 |
+
static function getStarterInfo($config, $context) {
|
83 |
+
return 'After IP address has been locked out by Cerber';
|
84 |
+
}
|
85 |
+
}
|
86 |
+
class WF_WHOIS extends WF_Action {
|
87 |
+
public static $section = 'network';
|
88 |
+
public static $name = 'Get WHOIS info';
|
89 |
+
public static $description = 'Get extended information about IP address';
|
90 |
+
public static $form_help = '
|
91 |
+
Sends request to a WHOIS server and obtains details about given IP address like country, abuse email address, owner of network, etc. The WHOIS information is publicly available and provided for free.
|
92 |
+
There are no reasons for security concerns, because a list of WHOIS servers are maintained by <a target="_blank" href="https://en.wikipedia.org/wiki/ICANN">ICANN</a>.
|
93 |
+
<p>Bear in mind that each WHOIS request takes some time to retrieve data from remote WHOIS server. One request can take up to 300 ms approximately, so workflow will wait that time for a response with each request.
|
94 |
+
<p>A result will be a list. To get a country name in the next action use pattern <code>{PREVIOUS[country-name]}</code>, for two letter country code: <code>{PREVIOUS[country]}</code>, for abuse email address: <code>{PREVIOUS[abuse-mailbox]}</code>, for network as IP range: <code>{PREVIOUS[inetnum]}</code>.
|
95 |
+
The full list of available fields depends on network owner.
|
96 |
+
You can request WHOIS data manually to find out what kind of field are available on this page: <a target="_blank" href="http://wq.apnic.net/apnic-bin/whois.pl">http://wq.apnic.net/apnic-bin/whois.pl</a>.
|
97 |
+
';
|
98 |
+
public static $fields = array(
|
99 |
+
'ip' => array(
|
100 |
+
'type' => 'text',
|
101 |
+
'label' => 'IP address',
|
102 |
+
'default' => '{TRIGGER[IP]}',
|
103 |
+
'required' => 1,
|
104 |
+
),
|
105 |
+
);
|
106 |
+
function execute($fields) {
|
107 |
+
list ($fields, $previous, $env, $wp_arguments) = func_get_args();
|
108 |
+
$ip = filter_var($fields['ip'],FILTER_VALIDATE_IP);
|
109 |
+
if (!$ip) return false;
|
110 |
+
$whois = cerber_ip_whois_info($ip);
|
111 |
+
if (!empty($whois['error'])) return new WF_Error (__CLASS__, 'Unable to obtain IP info');
|
112 |
+
$ret = $whois['data'];
|
113 |
+
|
114 |
+
if (empty($ret['abuse-mailbox']) && !empty($ret['OrgAbuseEmail'])){
|
115 |
+
$ret['abuse-mailbox'] = $ret['OrgAbuseEmail'];
|
116 |
+
}
|
117 |
+
|
118 |
+
if (!is_email($ret['abuse-mailbox'])) $ret['abuse-mailbox'] = '';
|
119 |
+
|
120 |
+
$ret['country-name'] = cerber_country_name($ret['country']);
|
121 |
+
return $ret;
|
122 |
+
}
|
123 |
+
}
|
124 |
+
wof_register(array('TR_IP_Locked','WF_WHOIS'));
|
125 |
+
}
|
126 |
+
|
languages/wp-cerber-cs_CZ.mo
ADDED
Binary file
|
languages/wp-cerber-cs_CZ.po
ADDED
@@ -0,0 +1,1204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: WP Cerber\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
|
6 |
+
"PO-Revision-Date: Wed Apr 12 2017 21:50:50 GMT+0300\n"
|
7 |
+
"Last-Translator: Greg <domain@xterm.ru>\n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"Language: Czech\n"
|
10 |
+
"Plural-Forms: nplurals=3; plural=( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : "
|
11 |
+
"2\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
+
"X-Poedit-Basepath: ../../plugins/wp-cerber\n"
|
17 |
+
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
|
18 |
+
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
|
19 |
+
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
|
20 |
+
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
|
21 |
+
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
|
22 |
+
"X-Generator: Loco - https://localise.biz/\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Loco-Target-Locale: cs_CZ"
|
25 |
+
|
26 |
+
#: ../dashboard.php:77 ../dashboard.php:460 ../wp-cerber.php:2168
|
27 |
+
msgid "IP"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: ../dashboard.php:77 ../wp-cerber.php:1921
|
31 |
+
msgid "Reason"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: ../dashboard.php:77
|
35 |
+
msgid "Action"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: ../dashboard.php:104
|
39 |
+
msgid "Nobody can log in or register from these IPs"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: ../dashboard.php:130
|
43 |
+
msgid "Add IP to the list"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
47 |
+
msgid "Incorrect IP address or IP range"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: ../dashboard.php:260
|
51 |
+
msgid "Unable to send notification email"
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: ../dashboard.php:283 ../dashboard.php:1149
|
55 |
+
msgid "Settings saved"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: ../dashboard.php:337
|
59 |
+
msgid "IP address"
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: ../dashboard.php:337
|
63 |
+
msgid "User login"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: ../dashboard.php:337
|
67 |
+
msgid "User ID"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: ../dashboard.php:469
|
71 |
+
msgid "Export"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: ../dashboard.php:478
|
75 |
+
msgid "All activities"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: ../dashboard.php:485
|
79 |
+
msgid "Search for IP or username"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: ../dashboard.php:485
|
83 |
+
msgid "Filter"
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: ../dashboard.php:653
|
87 |
+
msgid "Abuse email:"
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
+
#: ../dashboard.php:657
|
91 |
+
msgid "Network:"
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
#: ../dashboard.php:671
|
95 |
+
msgid "Add network to the Black List"
|
96 |
+
msgstr ""
|
97 |
+
|
98 |
+
#: ../dashboard.php:675
|
99 |
+
msgid "Add IP to the Black List"
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: ../dashboard.php:703 ../settings.php:212
|
103 |
+
msgid "WP Cerber Security"
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: ../dashboard.php:705
|
107 |
+
msgid "Cerber Dashboard"
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
#: ../dashboard.php:705 ../dashboard.php:876 ../dashboard.php:1320 ../settings.
|
111 |
+
#: php:217
|
112 |
+
msgid "Dashboard"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: ../dashboard.php:707
|
116 |
+
msgid "Cerber reCAPTCHA settings"
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: ../dashboard.php:707
|
120 |
+
msgid "reCAPTCHA"
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: ../dashboard.php:708
|
124 |
+
msgid "Cerber tools"
|
125 |
+
msgstr ""
|
126 |
+
|
127 |
+
#: ../dashboard.php:872 ../settings.php:145
|
128 |
+
msgid "Push notifications"
|
129 |
+
msgstr ""
|
130 |
+
|
131 |
+
#: ../dashboard.php:1011 ../dashboard.php:1026
|
132 |
+
msgid "View all"
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
#: ../dashboard.php:1027
|
136 |
+
msgid "Recently locked out IP addresses"
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: ../dashboard.php:1060
|
140 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#: ../dashboard.php:1132
|
144 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#: ../dashboard.php:1235
|
148 |
+
msgid "Subscribe"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: ../dashboard.php:1236
|
152 |
+
msgid "Unsubscribe"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: ../dashboard.php:1264
|
156 |
+
msgid "You've subscribed"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: ../dashboard.php:1267
|
160 |
+
msgid "You've unsubscribed"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#. URI of the plugin
|
164 |
+
msgid "http://wpcerber.com"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#. Description of the plugin
|
168 |
+
msgid ""
|
169 |
+
"Protects site from brute force attacks, bots and hackers. Antispam "
|
170 |
+
"protection with reCAPTCHA. Comprehensive control of user activity. Restrict "
|
171 |
+
"login by IP access lists. Limit login attempts. Feel free to contact "
|
172 |
+
"developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#. Author of the plugin
|
176 |
+
msgid "Gregory"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: ../wp-cerber.php:496
|
180 |
+
msgid ""
|
181 |
+
"Human verification failed. Please click the square box in the reCAPTCHA "
|
182 |
+
"block below."
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
#: ../wp-cerber.php:602 ../wp-cerber.php:734 ../wp-cerber.php:741 ../wp-cerber.
|
186 |
+
#: php:765 ../common.php:81 ../common.php:134 ../settings.php:479
|
187 |
+
msgid "ERROR:"
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: ../wp-cerber.php:613
|
191 |
+
#, php-format
|
192 |
+
msgid ""
|
193 |
+
"<strong>ERROR</strong>: The password you entered for the username %s is "
|
194 |
+
"incorrect."
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: ../wp-cerber.php:742
|
198 |
+
msgid "Username is not allowed. Please choose another one."
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: ../wp-cerber.php:1914
|
202 |
+
msgid "unspecified"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
#: ../wp-cerber.php:1917
|
206 |
+
msgid "Number of lockouts is increasing"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
+
#: ../wp-cerber.php:1920
|
210 |
+
#, php-format
|
211 |
+
msgid "Last lockout was added: %s for IP %s"
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
+
#: ../wp-cerber.php:1922
|
215 |
+
msgid "View activity for this IP"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#: ../wp-cerber.php:1926 ../wp-cerber.php:1928
|
219 |
+
msgid "A new version of WP Cerber is available to install"
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
#: ../wp-cerber.php:1927
|
223 |
+
msgid "Hi!"
|
224 |
+
msgstr ""
|
225 |
+
|
226 |
+
#: ../wp-cerber.php:1929 ../wp-cerber.php:1940
|
227 |
+
msgid "Website"
|
228 |
+
msgstr ""
|
229 |
+
|
230 |
+
#: ../wp-cerber.php:1932 ../wp-cerber.php:1933
|
231 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
232 |
+
msgstr ""
|
233 |
+
|
234 |
+
#: ../wp-cerber.php:1935
|
235 |
+
msgid "Not logged in"
|
236 |
+
msgstr ""
|
237 |
+
|
238 |
+
#: ../wp-cerber.php:1941
|
239 |
+
msgid "By user"
|
240 |
+
msgstr ""
|
241 |
+
|
242 |
+
#: ../wp-cerber.php:1942
|
243 |
+
msgid "From IP address"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
#: ../wp-cerber.php:1945
|
247 |
+
msgid "From country"
|
248 |
+
msgstr ""
|
249 |
+
|
250 |
+
#: ../wp-cerber.php:1949
|
251 |
+
msgid "The WP Cerber security plugin is now active"
|
252 |
+
msgstr ""
|
253 |
+
|
254 |
+
#: ../wp-cerber.php:1950 ../wp-cerber.php:2271
|
255 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: ../wp-cerber.php:1960 ../wp-cerber.php:1961
|
259 |
+
msgid "A new activity has been recorded"
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
#: ../wp-cerber.php:2172
|
263 |
+
msgid "User"
|
264 |
+
msgstr ""
|
265 |
+
|
266 |
+
#: ../wp-cerber.php:2180
|
267 |
+
msgid "Search string"
|
268 |
+
msgstr ""
|
269 |
+
|
270 |
+
#: ../wp-cerber.php:2193
|
271 |
+
msgid "To unsubscribe click here"
|
272 |
+
msgstr ""
|
273 |
+
|
274 |
+
#: ../wp-cerber.php:2272
|
275 |
+
msgid "Your IP address is added to the"
|
276 |
+
msgstr ""
|
277 |
+
|
278 |
+
#: ../wp-cerber.php:2274
|
279 |
+
msgid "It's important to check security settings."
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: ../wp-cerber.php:2279 ../settings.php:229
|
283 |
+
msgid "Hardening"
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: ../wp-cerber.php:2281
|
287 |
+
msgid "Import settings"
|
288 |
+
msgstr ""
|
289 |
+
|
290 |
+
#: ../whois.php:211
|
291 |
+
msgid "Unknown"
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
#: ../common.php:253
|
295 |
+
msgid "User created"
|
296 |
+
msgstr ""
|
297 |
+
|
298 |
+
#: ../common.php:254
|
299 |
+
msgid "User registered"
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: ../common.php:271
|
303 |
+
msgid "reCAPTCHA verification failed"
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#: ../common.php:272
|
307 |
+
msgid "reCAPTCHA settings are incorrect"
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: ../common.php:273
|
311 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#: ../common.php:275
|
315 |
+
msgid "Attempt to access prohibited URL"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: ../common.php:276 ../common.php:288
|
319 |
+
msgid "Attempt to log in with non-existent username"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
#: ../common.php:277 ../common.php:289
|
323 |
+
msgid "Attempt to log in with prohibited username"
|
324 |
+
msgstr ""
|
325 |
+
|
326 |
+
#: ../common.php:286
|
327 |
+
msgid "Limit on login attempts is reached"
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: ../common.php:287
|
331 |
+
msgid "Attempt to access"
|
332 |
+
msgstr ""
|
333 |
+
|
334 |
+
#: ../common.php:341
|
335 |
+
msgid "year"
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
#: ../common.php:342
|
339 |
+
msgid "month"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: ../common.php:343
|
343 |
+
msgid "day"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
#: ../common.php:344
|
347 |
+
msgid "hour"
|
348 |
+
msgstr ""
|
349 |
+
|
350 |
+
#: ../common.php:345
|
351 |
+
msgid "minute"
|
352 |
+
msgstr ""
|
353 |
+
|
354 |
+
#: ../common.php:346
|
355 |
+
msgid "second"
|
356 |
+
msgstr ""
|
357 |
+
|
358 |
+
#: ../common.php:349
|
359 |
+
msgid "years"
|
360 |
+
msgstr ""
|
361 |
+
|
362 |
+
#: ../common.php:350
|
363 |
+
msgid "months"
|
364 |
+
msgstr ""
|
365 |
+
|
366 |
+
#: ../common.php:352
|
367 |
+
msgid "hours"
|
368 |
+
msgstr ""
|
369 |
+
|
370 |
+
#: ../common.php:354
|
371 |
+
msgid "seconds"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
+
#: ../common.php:360
|
375 |
+
msgid "ago"
|
376 |
+
msgstr ""
|
377 |
+
|
378 |
+
#: ../cerber-lab.php:415
|
379 |
+
msgid "Want to make WP Cerber even more powerful?"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: ../cerber-lab.php:416
|
383 |
+
msgid ""
|
384 |
+
"Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
|
385 |
+
"This helps the plugin team to develop new algorithms for WP Cerber that will "
|
386 |
+
"defend WordPress against new threats and botnets that are appearing "
|
387 |
+
"everyday. You can disable the sending in the plugin settings at any time."
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: ../cerber-lab.php:417
|
391 |
+
msgid "OK, nail them all"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: ../cerber-lab.php:418
|
395 |
+
msgid "NO, maybe later"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: ../cerber-lab.php:419 ../settings.php:190
|
399 |
+
msgid "Know more"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: ../settings.php:71
|
403 |
+
msgid "Display 404 page"
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: ../settings.php:90
|
407 |
+
msgid "Cerber Lab connection"
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: ../settings.php:90
|
411 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
+
#: ../settings.php:91
|
415 |
+
msgid "Cerber Lab protocol"
|
416 |
+
msgstr ""
|
417 |
+
|
418 |
+
#: ../settings.php:94
|
419 |
+
msgid "Preferences"
|
420 |
+
msgstr ""
|
421 |
+
|
422 |
+
#: ../settings.php:95
|
423 |
+
msgid "Drill down IP"
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
#: ../settings.php:95
|
427 |
+
msgid "Retrieve extra WHOIS information for IP"
|
428 |
+
msgstr ""
|
429 |
+
|
430 |
+
#: ../settings.php:96
|
431 |
+
msgid "Date format"
|
432 |
+
msgstr ""
|
433 |
+
|
434 |
+
#: ../settings.php:96
|
435 |
+
#, php-format
|
436 |
+
msgid "if empty, the default format %s will be used"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: ../settings.php:103
|
440 |
+
msgid "Hardening WordPress"
|
441 |
+
msgstr ""
|
442 |
+
|
443 |
+
#: ../settings.php:104
|
444 |
+
msgid "Stop user enumeration"
|
445 |
+
msgstr ""
|
446 |
+
|
447 |
+
#: ../settings.php:104
|
448 |
+
msgid "Block access to the pages like /?author=n"
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: ../settings.php:105
|
452 |
+
msgid "Disable XML-RPC"
|
453 |
+
msgstr ""
|
454 |
+
|
455 |
+
#: ../settings.php:105
|
456 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
#: ../settings.php:106
|
460 |
+
msgid "Disable feeds"
|
461 |
+
msgstr ""
|
462 |
+
|
463 |
+
#: ../settings.php:106
|
464 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: ../settings.php:107
|
468 |
+
msgid "Disable REST API"
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
#: ../settings.php:107
|
472 |
+
msgid "Block access to the WordPress REST API"
|
473 |
+
msgstr ""
|
474 |
+
|
475 |
+
#: ../settings.php:115
|
476 |
+
msgid "User related settings"
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: ../settings.php:116
|
480 |
+
msgid "Prohibited usernames"
|
481 |
+
msgstr ""
|
482 |
+
|
483 |
+
#: ../settings.php:116
|
484 |
+
msgid ""
|
485 |
+
"Usernames from this list are not allowed to log in or register. Any IP "
|
486 |
+
"address, have tried to use any of these usernames, will be immediately "
|
487 |
+
"blocked. Use comma to separate logins."
|
488 |
+
msgstr ""
|
489 |
+
|
490 |
+
#: ../settings.php:117
|
491 |
+
msgid "User session expire"
|
492 |
+
msgstr ""
|
493 |
+
|
494 |
+
#: ../settings.php:117
|
495 |
+
msgid "in minutes (leave empty to use default WP value)"
|
496 |
+
msgstr ""
|
497 |
+
|
498 |
+
#: ../settings.php:124
|
499 |
+
msgid "Site key"
|
500 |
+
msgstr ""
|
501 |
+
|
502 |
+
#: ../settings.php:125
|
503 |
+
msgid "Secret key"
|
504 |
+
msgstr ""
|
505 |
+
|
506 |
+
#: ../settings.php:127
|
507 |
+
msgid "Registration form"
|
508 |
+
msgstr ""
|
509 |
+
|
510 |
+
#: ../settings.php:127
|
511 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
512 |
+
msgstr ""
|
513 |
+
|
514 |
+
#: ../settings.php:128
|
515 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
516 |
+
msgstr ""
|
517 |
+
|
518 |
+
#: ../settings.php:130
|
519 |
+
msgid "Lost password form"
|
520 |
+
msgstr ""
|
521 |
+
|
522 |
+
#: ../settings.php:130
|
523 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
524 |
+
msgstr ""
|
525 |
+
|
526 |
+
#: ../settings.php:131
|
527 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
#: ../settings.php:133
|
531 |
+
msgid "Login form"
|
532 |
+
msgstr ""
|
533 |
+
|
534 |
+
#: ../settings.php:133
|
535 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
536 |
+
msgstr ""
|
537 |
+
|
538 |
+
#: ../settings.php:134
|
539 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
540 |
+
msgstr ""
|
541 |
+
|
542 |
+
#: ../settings.php:140
|
543 |
+
msgid "Email notifications"
|
544 |
+
msgstr ""
|
545 |
+
|
546 |
+
#: ../settings.php:142
|
547 |
+
msgid "Email Address"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: ../settings.php:142
|
551 |
+
msgid "Use comma to specify multiple values"
|
552 |
+
msgstr ""
|
553 |
+
|
554 |
+
#: ../settings.php:142
|
555 |
+
#, php-format
|
556 |
+
msgid "if empty, the admin email %s will be used"
|
557 |
+
msgstr ""
|
558 |
+
|
559 |
+
#: ../settings.php:143
|
560 |
+
msgid "Notification limit"
|
561 |
+
msgstr ""
|
562 |
+
|
563 |
+
#: ../settings.php:143
|
564 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
565 |
+
msgstr ""
|
566 |
+
|
567 |
+
#: ../settings.php:152
|
568 |
+
msgid "All connected devices"
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
#: ../settings.php:153
|
572 |
+
msgid "No devices found"
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: ../settings.php:155
|
576 |
+
msgid "Not available"
|
577 |
+
msgstr ""
|
578 |
+
|
579 |
+
#: ../settings.php:170
|
580 |
+
msgid ""
|
581 |
+
"Please enable Permalinks to use this feature. Set Permalink Settings to "
|
582 |
+
"something other than Default."
|
583 |
+
msgstr ""
|
584 |
+
|
585 |
+
#: ../settings.php:177
|
586 |
+
msgid ""
|
587 |
+
"In Citadel mode nobody is able to login. Active user's sessions will not be "
|
588 |
+
"affected."
|
589 |
+
msgstr ""
|
590 |
+
|
591 |
+
#: ../settings.php:184
|
592 |
+
msgid "These settings do not affect hosts from the "
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
#: ../settings.php:189
|
596 |
+
msgid ""
|
597 |
+
"Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
|
598 |
+
"key on the Google website"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
#: ../settings.php:231
|
602 |
+
msgid "Users"
|
603 |
+
msgstr ""
|
604 |
+
|
605 |
+
#: ../settings.php:501
|
606 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
607 |
+
msgstr ""
|
608 |
+
|
609 |
+
#: ../cerber-tools.php:195
|
610 |
+
msgid "reCAPTCHA settings"
|
611 |
+
msgstr ""
|
612 |
+
|
613 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
614 |
+
msgid "Remove"
|
615 |
+
msgstr "Odstranit"
|
616 |
+
|
617 |
+
#: ../dashboard.php:77 ../dashboard.php:460
|
618 |
+
msgid "Hostname"
|
619 |
+
msgstr "Server (hostname)"
|
620 |
+
|
621 |
+
#: ../dashboard.php:77
|
622 |
+
msgid "Expires"
|
623 |
+
msgstr "Expirace"
|
624 |
+
|
625 |
+
#: ../dashboard.php:83
|
626 |
+
#, php-format
|
627 |
+
msgid "Showing last %d records from %d"
|
628 |
+
msgstr "Zobrazení posledních %d záznamů z %d"
|
629 |
+
|
630 |
+
#: ../dashboard.php:85
|
631 |
+
msgid "Hint"
|
632 |
+
msgstr "Zásah"
|
633 |
+
|
634 |
+
#: ../dashboard.php:85
|
635 |
+
msgid "To view activity, click on the IP"
|
636 |
+
msgstr "Chcete-li zobrazit aktivitu, klikněte na IP adresu"
|
637 |
+
|
638 |
+
#: ../dashboard.php:89
|
639 |
+
msgid "No lockouts at the moment. The sky is clear."
|
640 |
+
msgstr "V tuto chvíli žádné blokování. Obloha je jasná."
|
641 |
+
|
642 |
+
#: ../dashboard.php:102 ../dashboard.php:440 ../dashboard.php:625 ../dashboard.
|
643 |
+
#: php:868 ../wp-cerber.php:2272 ../settings.php:184
|
644 |
+
msgid "White IP Access List"
|
645 |
+
msgstr "Seznam povolených IP adres"
|
646 |
+
|
647 |
+
#: ../dashboard.php:102
|
648 |
+
msgid "These IPs will never be locked out"
|
649 |
+
msgstr "Tyto IP adresy nebudou blokovány"
|
650 |
+
|
651 |
+
#: ../dashboard.php:104 ../dashboard.php:441 ../dashboard.php:627 ../dashboard.
|
652 |
+
#: php:869
|
653 |
+
msgid "Black IP Access List"
|
654 |
+
msgstr "Seznam blokovaných IP adres"
|
655 |
+
|
656 |
+
#: ../dashboard.php:106
|
657 |
+
msgid "Your IP"
|
658 |
+
msgstr "Vaše IP"
|
659 |
+
|
660 |
+
#: ../dashboard.php:123 ../dashboard.php:657
|
661 |
+
msgid "Check for activity"
|
662 |
+
msgstr "Zkontrolovat aktivitu"
|
663 |
+
|
664 |
+
#: ../dashboard.php:126
|
665 |
+
msgid "List is empty"
|
666 |
+
msgstr "Seznam je prázdný"
|
667 |
+
|
668 |
+
#: ../dashboard.php:153
|
669 |
+
#, php-format
|
670 |
+
msgid "Address %s was added to White IP Access List"
|
671 |
+
msgstr "Adresa %s byla přidána do seznamu povolených IP adres"
|
672 |
+
|
673 |
+
#: ../dashboard.php:162
|
674 |
+
msgid "You can't add your IP address"
|
675 |
+
msgstr "Nemůžete přidat vaši IP adresu"
|
676 |
+
|
677 |
+
#: ../dashboard.php:166
|
678 |
+
#, php-format
|
679 |
+
msgid "Address %s was added to Black IP Access List"
|
680 |
+
msgstr "Adresa %s byla přidána do seznamu blokovaných IP adres"
|
681 |
+
|
682 |
+
#: ../dashboard.php:237
|
683 |
+
msgid "unknown"
|
684 |
+
msgstr "neznámé"
|
685 |
+
|
686 |
+
#: ../dashboard.php:257
|
687 |
+
msgid "Message has been sent to "
|
688 |
+
msgstr "Zpráva byla odeslána na "
|
689 |
+
|
690 |
+
#: ../dashboard.php:267
|
691 |
+
#, php-format
|
692 |
+
msgid "Lockout for %s was removed"
|
693 |
+
msgstr "Blokace %s byla odstraněna"
|
694 |
+
|
695 |
+
#: ../dashboard.php:337 ../dashboard.php:460
|
696 |
+
msgid "Date"
|
697 |
+
msgstr "Datum"
|
698 |
+
|
699 |
+
#: ../dashboard.php:337 ../dashboard.php:460 ../dashboard.php:877 ../dashboard.
|
700 |
+
#: php:1012 ../wp-cerber.php:2167 ../settings.php:88 ../settings.php:219
|
701 |
+
msgid "Activity"
|
702 |
+
msgstr "Aktivity"
|
703 |
+
|
704 |
+
#: ../dashboard.php:337 ../dashboard.php:460
|
705 |
+
msgid "Local User"
|
706 |
+
msgstr "Místní uživatel"
|
707 |
+
|
708 |
+
#: ../dashboard.php:337 ../dashboard.php:460 ../wp-cerber.php:2176
|
709 |
+
msgid "Username used"
|
710 |
+
msgstr "Uživatelské jméno je již použito"
|
711 |
+
|
712 |
+
#: ../dashboard.php:445 ../dashboard.php:630 ../common.php:265
|
713 |
+
msgid "Locked out"
|
714 |
+
msgstr "Blokován"
|
715 |
+
|
716 |
+
#: ../dashboard.php:473
|
717 |
+
msgid "No activity has been logged."
|
718 |
+
msgstr "Zatím neproběhla žádná aktivita."
|
719 |
+
|
720 |
+
#: ../dashboard.php:700
|
721 |
+
msgid "WP Cerber Settings"
|
722 |
+
msgstr "Bezpečnost přihlašování"
|
723 |
+
|
724 |
+
#: ../dashboard.php:700 ../dashboard.php:703 ../dashboard.php:732
|
725 |
+
msgid "WP Cerber"
|
726 |
+
msgstr ""
|
727 |
+
|
728 |
+
#: ../dashboard.php:708 ../cerber-tools.php:40
|
729 |
+
msgid "Tools"
|
730 |
+
msgstr "Nástroje"
|
731 |
+
|
732 |
+
#: ../dashboard.php:770
|
733 |
+
msgid "Comments"
|
734 |
+
msgstr "Komentáře"
|
735 |
+
|
736 |
+
#: ../dashboard.php:771
|
737 |
+
msgid "Last login"
|
738 |
+
msgstr "Poslední přihlášení"
|
739 |
+
|
740 |
+
#: ../dashboard.php:772
|
741 |
+
msgid "Failed attempts in last 24 hours"
|
742 |
+
msgstr "Neúspěšné pokusy v posledních 24 hodinách"
|
743 |
+
|
744 |
+
#: ../dashboard.php:773
|
745 |
+
msgid "Date of registration"
|
746 |
+
msgstr "Datum registrace"
|
747 |
+
|
748 |
+
#: ../dashboard.php:798 ../dashboard.php:851
|
749 |
+
msgid "Never"
|
750 |
+
msgstr "Zatím neproběhla"
|
751 |
+
|
752 |
+
#: ../dashboard.php:822
|
753 |
+
msgid "Cerber Quick View"
|
754 |
+
msgstr "Rychlé zobrazení"
|
755 |
+
|
756 |
+
#: ../dashboard.php:855
|
757 |
+
msgid "active"
|
758 |
+
msgstr "aktivní"
|
759 |
+
|
760 |
+
#: ../dashboard.php:855
|
761 |
+
msgid "deactivate"
|
762 |
+
msgstr "deaktivovat"
|
763 |
+
|
764 |
+
#: ../dashboard.php:857
|
765 |
+
msgid "not active"
|
766 |
+
msgstr "není aktivní"
|
767 |
+
|
768 |
+
#: ../dashboard.php:858
|
769 |
+
msgid "disabled"
|
770 |
+
msgstr "vypnuto"
|
771 |
+
|
772 |
+
#: ../dashboard.php:863
|
773 |
+
msgid "failed attempts"
|
774 |
+
msgstr "neúspěšných pokusů"
|
775 |
+
|
776 |
+
#: ../dashboard.php:863 ../dashboard.php:864
|
777 |
+
msgid "in 24 hours"
|
778 |
+
msgstr "ve 24 hodinách"
|
779 |
+
|
780 |
+
#: ../dashboard.php:863 ../dashboard.php:864
|
781 |
+
msgid "view all"
|
782 |
+
msgstr "zobrazit vše"
|
783 |
+
|
784 |
+
#: ../dashboard.php:864
|
785 |
+
msgid "lockouts"
|
786 |
+
msgstr "blokování"
|
787 |
+
|
788 |
+
#: ../dashboard.php:866
|
789 |
+
msgid "Lockouts at the moment"
|
790 |
+
msgstr "Blokováni v tento okamžik"
|
791 |
+
|
792 |
+
#: ../dashboard.php:867
|
793 |
+
msgid "Last lockout"
|
794 |
+
msgstr "Poslední blokování"
|
795 |
+
|
796 |
+
#: ../dashboard.php:868 ../dashboard.php:869 ../dashboard.php:1300
|
797 |
+
msgid "entry"
|
798 |
+
msgid_plural "entries"
|
799 |
+
msgstr[0] "položka"
|
800 |
+
msgstr[1] "položky"
|
801 |
+
msgstr[2] "položek"
|
802 |
+
|
803 |
+
#: ../dashboard.php:870 ../settings.php:77
|
804 |
+
msgid "Citadel mode"
|
805 |
+
msgstr "Režim Citadela"
|
806 |
+
|
807 |
+
#: ../dashboard.php:878 ../settings.php:222
|
808 |
+
msgid "Lockouts"
|
809 |
+
msgstr "Blokování"
|
810 |
+
|
811 |
+
#: ../dashboard.php:879 ../dashboard.php:1321 ../wp-cerber.php:2278 ../settings.
|
812 |
+
#: php:227 ../cerber-tools.php:59 ../cerber-tools.php:68 ../cerber-tools.php:178
|
813 |
+
msgid "Access Lists"
|
814 |
+
msgstr "Seznam přístupů"
|
815 |
+
|
816 |
+
#: ../dashboard.php:1049
|
817 |
+
msgid "Confused about some settings?"
|
818 |
+
msgstr "Jste zmatení ohledně některého nastavení?"
|
819 |
+
|
820 |
+
#: ../dashboard.php:1050
|
821 |
+
msgid "You can easily load default recommended settings using button below"
|
822 |
+
msgstr ""
|
823 |
+
"Můžete snadno načíst výchozí doporučené nastavení pomocí níže uvedeného "
|
824 |
+
"tlačítka"
|
825 |
+
|
826 |
+
#: ../dashboard.php:1052
|
827 |
+
msgid "Load default settings"
|
828 |
+
msgstr "Načíst výchozí nastavení"
|
829 |
+
|
830 |
+
#: ../dashboard.php:1054 ../dashboard.php:1450
|
831 |
+
msgid "Are you sure?"
|
832 |
+
msgstr "Jste tu?"
|
833 |
+
|
834 |
+
#: ../dashboard.php:1079
|
835 |
+
msgid "Donate"
|
836 |
+
msgstr "Darovat"
|
837 |
+
|
838 |
+
#: ../dashboard.php:1133
|
839 |
+
msgid "Deactivate"
|
840 |
+
msgstr "Deaktivovat"
|
841 |
+
|
842 |
+
#: ../dashboard.php:1134
|
843 |
+
msgid "View Activity"
|
844 |
+
msgstr "Zobrazit aktivity"
|
845 |
+
|
846 |
+
#: ../dashboard.php:1190
|
847 |
+
msgid "New version is available"
|
848 |
+
msgstr "Nová verze je k dispozici"
|
849 |
+
|
850 |
+
#: ../dashboard.php:1196
|
851 |
+
#, php-format
|
852 |
+
msgid "Update to version %s of WP Cerber"
|
853 |
+
msgstr "Aktualizovat na nejnovější verzi bezpečného přihlašování %s"
|
854 |
+
|
855 |
+
#: ../wp-cerber.php:190
|
856 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
857 |
+
msgstr "Nejste oprávněni se přihlásit. Požádejte správce o pomoc."
|
858 |
+
|
859 |
+
#: ../wp-cerber.php:196
|
860 |
+
#, php-format
|
861 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
862 |
+
msgstr ""
|
863 |
+
"Dosáhli jste limitu pokusů o přihlášení. Zkuste to prosím znovu za %d "
|
864 |
+
"minut(y)."
|
865 |
+
|
866 |
+
#: ../wp-cerber.php:214
|
867 |
+
#, php-format
|
868 |
+
msgid "You have only one attempt remaining."
|
869 |
+
msgid_plural "You have %d attempts remaining."
|
870 |
+
msgstr[0] "Máte jen jeden zbývající pokus."
|
871 |
+
msgstr[1] "Máte jen %d zbývající pokusy."
|
872 |
+
msgstr[2] "Máte jen %d zbývajících pokusů."
|
873 |
+
|
874 |
+
#: ../wp-cerber.php:1870
|
875 |
+
msgid "WP Cerber notify"
|
876 |
+
msgstr "Notifikace bezpečného přihlašování"
|
877 |
+
|
878 |
+
#: ../wp-cerber.php:1888
|
879 |
+
msgid "Citadel mode is activated"
|
880 |
+
msgstr "Režim Citadela je aktivní"
|
881 |
+
|
882 |
+
#: ../wp-cerber.php:1890
|
883 |
+
#, php-format
|
884 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
885 |
+
msgstr ""
|
886 |
+
"Režim Citadely je aktivován po %d neúspěšných pokusech o přihlášení v %d "
|
887 |
+
"minutách."
|
888 |
+
|
889 |
+
#: ../wp-cerber.php:1891
|
890 |
+
#, php-format
|
891 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
892 |
+
msgstr "Poslední pokus byl zaznamenán v %s z IP adresy %s s přihlašovacím jménem: %s."
|
893 |
+
|
894 |
+
#: ../wp-cerber.php:1892 ../wp-cerber.php:2192
|
895 |
+
msgid "View activity in dashboard"
|
896 |
+
msgstr "Zobrazit aktivitu na nástěnce"
|
897 |
+
|
898 |
+
#: ../wp-cerber.php:1919
|
899 |
+
msgid "Number of active lockouts"
|
900 |
+
msgstr "Počet aktivních blokací"
|
901 |
+
|
902 |
+
#: ../wp-cerber.php:1923
|
903 |
+
msgid "View lockouts in dashboard"
|
904 |
+
msgstr "Zobrazit blokace na nástěnce"
|
905 |
+
|
906 |
+
#: ../wp-cerber.php:1951
|
907 |
+
msgid "Change notification settings"
|
908 |
+
msgstr "Změnit nastavení upozornění"
|
909 |
+
|
910 |
+
#: ../wp-cerber.php:1956
|
911 |
+
msgid "New Custom login URL"
|
912 |
+
msgstr "URL nové adresy pro přihlášení"
|
913 |
+
|
914 |
+
#: ../wp-cerber.php:1976
|
915 |
+
msgid "This message was sent by"
|
916 |
+
msgstr "Tato zpráva byla odeslána pomocí"
|
917 |
+
|
918 |
+
#: ../wp-cerber.php:2246
|
919 |
+
#, php-format
|
920 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
921 |
+
msgstr "Bezpečné přihlašování vyžaduje alespoň PHP %s a vyšší. Vaše PHP je"
|
922 |
+
|
923 |
+
#: ../wp-cerber.php:2250
|
924 |
+
#, php-format
|
925 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
926 |
+
msgstr ""
|
927 |
+
"Bezpečné přihlašování vyžaduje alespoň Wordpress verze %s a vyšší. Váš "
|
928 |
+
"Wordpress je"
|
929 |
+
|
930 |
+
#: ../wp-cerber.php:2255
|
931 |
+
msgid "Can't activate WP Cerber due to a database error."
|
932 |
+
msgstr "Nelze aktivovat bezpečné přihlašování kvůli chybě databáze."
|
933 |
+
|
934 |
+
#: ../wp-cerber.php:2277 ../settings.php:224
|
935 |
+
msgid "Main Settings"
|
936 |
+
msgstr "Hlavní nastavení"
|
937 |
+
|
938 |
+
#: ../wp-cerber.php:2280 ../settings.php:63 ../settings.php:81 ../settings.php:234
|
939 |
+
msgid "Notifications"
|
940 |
+
msgstr "Notifikace"
|
941 |
+
|
942 |
+
#: ../common.php:255
|
943 |
+
msgid "Logged in"
|
944 |
+
msgstr "Přihlášen"
|
945 |
+
|
946 |
+
#: ../common.php:256
|
947 |
+
msgid "Logged out"
|
948 |
+
msgstr "Odhlášen"
|
949 |
+
|
950 |
+
#: ../common.php:257
|
951 |
+
msgid "Login failed"
|
952 |
+
msgstr "Přihlášení selhalo"
|
953 |
+
|
954 |
+
#: ../common.php:260
|
955 |
+
msgid "IP blocked"
|
956 |
+
msgstr "IP blokována"
|
957 |
+
|
958 |
+
#: ../common.php:261
|
959 |
+
msgid "Subnet blocked"
|
960 |
+
msgstr "Podsít zablokována"
|
961 |
+
|
962 |
+
#: ../common.php:263
|
963 |
+
msgid "Citadel activated!"
|
964 |
+
msgstr "Citadela je aktivní!"
|
965 |
+
|
966 |
+
#: ../common.php:266
|
967 |
+
msgid "IP blacklisted"
|
968 |
+
msgstr "IP na černé listině"
|
969 |
+
|
970 |
+
#: ../common.php:269
|
971 |
+
msgid "Password changed"
|
972 |
+
msgstr "Heslo bylo změněno"
|
973 |
+
|
974 |
+
#: ../common.php:351 ../settings.php:89
|
975 |
+
msgid "days"
|
976 |
+
msgstr "dnů"
|
977 |
+
|
978 |
+
#: ../common.php:353 ../settings.php:61 ../settings.php:79
|
979 |
+
msgid "minutes"
|
980 |
+
msgstr "minut(y)"
|
981 |
+
|
982 |
+
#: ../settings.php:59
|
983 |
+
msgid "Limit login attempts"
|
984 |
+
msgstr "Omezit neúspěšné pokusy"
|
985 |
+
|
986 |
+
#: ../settings.php:60
|
987 |
+
msgid "Attempts"
|
988 |
+
msgstr "Pokusy"
|
989 |
+
|
990 |
+
#: ../settings.php:61
|
991 |
+
msgid "Lockout duration"
|
992 |
+
msgstr "Doba blokování"
|
993 |
+
|
994 |
+
#: ../settings.php:62
|
995 |
+
msgid "Aggressive lockout"
|
996 |
+
msgstr "Agresivní zablokování"
|
997 |
+
|
998 |
+
#: ../settings.php:64
|
999 |
+
msgid "Site connection"
|
1000 |
+
msgstr "Připojení webu"
|
1001 |
+
|
1002 |
+
#: ../settings.php:64
|
1003 |
+
msgid "My site is behind a reverse proxy"
|
1004 |
+
msgstr "Web je za reverzní proxy"
|
1005 |
+
|
1006 |
+
#: ../settings.php:66
|
1007 |
+
msgid "Proactive security rules"
|
1008 |
+
msgstr "Proaktivní bezpečnostní pravidla"
|
1009 |
+
|
1010 |
+
#: ../settings.php:67
|
1011 |
+
msgid "Block subnet"
|
1012 |
+
msgstr "Zablokovat podsíť"
|
1013 |
+
|
1014 |
+
#: ../settings.php:67
|
1015 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
1016 |
+
msgstr "Pokaždé blokovat útočníka v celé subsíti třídy C"
|
1017 |
+
|
1018 |
+
#: ../settings.php:68
|
1019 |
+
msgid "Non-existent users"
|
1020 |
+
msgstr "Neexistující uživatelé"
|
1021 |
+
|
1022 |
+
#: ../settings.php:68
|
1023 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
1024 |
+
msgstr ""
|
1025 |
+
"Při pokusu o přihlášení s neexistujícím uživatelským jménem okamžitě "
|
1026 |
+
"zablokovat IP adresu"
|
1027 |
+
|
1028 |
+
#: ../settings.php:69
|
1029 |
+
msgid "Redirect dashboard requests"
|
1030 |
+
msgstr "Přesměrování požadavku nástěnky"
|
1031 |
+
|
1032 |
+
#: ../settings.php:69
|
1033 |
+
msgid ""
|
1034 |
+
"Disable automatic redirecting to the login page when /wp-admin/ is requested "
|
1035 |
+
"by an unauthorized request"
|
1036 |
+
msgstr ""
|
1037 |
+
"Zakázat automatické přesměrování na přihlašovací stránku, pokud je poslán "
|
1038 |
+
"neautorizovaný požadavek na /wp-admin/"
|
1039 |
+
|
1040 |
+
#: ../settings.php:70
|
1041 |
+
msgid "Request wp-login.php"
|
1042 |
+
msgstr "Požadavek wp-login.php"
|
1043 |
+
|
1044 |
+
#: ../settings.php:70
|
1045 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
1046 |
+
msgstr "Ihned blokovat IP adresu po jakékoli žádosti na soubor wp-login.php"
|
1047 |
+
|
1048 |
+
#: ../settings.php:73
|
1049 |
+
msgid "Custom login page"
|
1050 |
+
msgstr "Vlastní přihlašovací stránka"
|
1051 |
+
|
1052 |
+
#: ../settings.php:74
|
1053 |
+
msgid "Custom login URL"
|
1054 |
+
msgstr "Vlastní login URL"
|
1055 |
+
|
1056 |
+
#: ../settings.php:74
|
1057 |
+
msgid "must not overlap with the existing pages or posts slug"
|
1058 |
+
msgstr "url se nesmí překrývat s existujícím obsahem ( stránka, příspěvek, ... )"
|
1059 |
+
|
1060 |
+
#: ../settings.php:75
|
1061 |
+
msgid "Disable wp-login.php"
|
1062 |
+
msgstr "Zakázat wp-login.php"
|
1063 |
+
|
1064 |
+
#: ../settings.php:75
|
1065 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
1066 |
+
msgstr ""
|
1067 |
+
"Blokovat přímý přístup k wp-login.php a odeslat http kód 404 - stránka "
|
1068 |
+
"nebyla nalezena"
|
1069 |
+
|
1070 |
+
#: ../settings.php:78
|
1071 |
+
msgid "Threshold"
|
1072 |
+
msgstr "Práh"
|
1073 |
+
|
1074 |
+
#: ../settings.php:79
|
1075 |
+
msgid "Duration"
|
1076 |
+
msgstr "Trvání"
|
1077 |
+
|
1078 |
+
#: ../settings.php:81
|
1079 |
+
msgid "Send notification to admin email"
|
1080 |
+
msgstr "Odeslat oznámení na email administrátora"
|
1081 |
+
|
1082 |
+
#: ../settings.php:81 ../settings.php:339
|
1083 |
+
msgid "Click to send test"
|
1084 |
+
msgstr "Odeslat test"
|
1085 |
+
|
1086 |
+
#: ../settings.php:89
|
1087 |
+
msgid "Keep records for"
|
1088 |
+
msgstr "Uchovat záznamy po"
|
1089 |
+
|
1090 |
+
#: ../settings.php:92
|
1091 |
+
msgid "Use file"
|
1092 |
+
msgstr "Použít soubor"
|
1093 |
+
|
1094 |
+
#: ../settings.php:92
|
1095 |
+
msgid "Write failed login attempts to the file"
|
1096 |
+
msgstr "Zapsat neúspěšné pokusy do souboru"
|
1097 |
+
|
1098 |
+
#: ../settings.php:166
|
1099 |
+
msgid "Make your protection smarter!"
|
1100 |
+
msgstr "Zapněte inteligentní ochranu webu!"
|
1101 |
+
|
1102 |
+
#: ../settings.php:173
|
1103 |
+
msgid ""
|
1104 |
+
"Be careful when enabling this options. If you forget the custom login URL "
|
1105 |
+
"you will not be able to login."
|
1106 |
+
msgstr ""
|
1107 |
+
"Buďte opatrní s touto volbou. Pokud zapomenete přihlašovací stránku, "
|
1108 |
+
"nebudete se moci přihlásit."
|
1109 |
+
|
1110 |
+
#: ../settings.php:238
|
1111 |
+
msgid "Help"
|
1112 |
+
msgstr "Nápověda"
|
1113 |
+
|
1114 |
+
#: ../settings.php:325
|
1115 |
+
#, php-format
|
1116 |
+
msgid "%s allowed retries in %s minutes"
|
1117 |
+
msgstr "%s povolené pokusy v %s minutách"
|
1118 |
+
|
1119 |
+
#: ../settings.php:330
|
1120 |
+
#, php-format
|
1121 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
1122 |
+
msgstr "Zvýšit dobu trvání blokace na %s hodin(y) po %s blokacích ve %s hodinách"
|
1123 |
+
|
1124 |
+
#: ../settings.php:337
|
1125 |
+
msgid "Notify admin if the number of active lockouts above"
|
1126 |
+
msgstr "Upozornit administrátora, pokud blokace přesáhne počet"
|
1127 |
+
|
1128 |
+
#: ../settings.php:342
|
1129 |
+
#, php-format
|
1130 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
1131 |
+
msgstr "Zapnout po %s. neúspěšném přihlášení v %s minutách."
|
1132 |
+
|
1133 |
+
#: ../settings.php:426
|
1134 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
1135 |
+
msgstr "Pozor! Změnili jste adresu pro přihlašování! Nová adresa je"
|
1136 |
+
|
1137 |
+
#: ../cerber-tools.php:55
|
1138 |
+
msgid "Export settings to the file"
|
1139 |
+
msgstr "Export nastavení do souboru"
|
1140 |
+
|
1141 |
+
#: ../cerber-tools.php:56
|
1142 |
+
msgid ""
|
1143 |
+
"When you click the button below you will get a configuration file, which you "
|
1144 |
+
"can upload on another site."
|
1145 |
+
msgstr ""
|
1146 |
+
"Pokud kliknete na tlačítko níže, obdržíte konfigurační soubor, který můžete "
|
1147 |
+
"nahrát na jiném webu."
|
1148 |
+
|
1149 |
+
#: ../cerber-tools.php:57
|
1150 |
+
msgid "What do you want to export?"
|
1151 |
+
msgstr "Co chcete exportovat?"
|
1152 |
+
|
1153 |
+
#: ../cerber-tools.php:58 ../cerber-tools.php:67
|
1154 |
+
msgid "Settings"
|
1155 |
+
msgstr "Nastavení"
|
1156 |
+
|
1157 |
+
#: ../cerber-tools.php:60
|
1158 |
+
msgid "Download file"
|
1159 |
+
msgstr "Stáhnout soubor"
|
1160 |
+
|
1161 |
+
#: ../cerber-tools.php:62
|
1162 |
+
msgid "Import settings from the file"
|
1163 |
+
msgstr "Importovat nastavení ze souboru"
|
1164 |
+
|
1165 |
+
#: ../cerber-tools.php:63
|
1166 |
+
msgid ""
|
1167 |
+
"When you click the button below, file will be uploaded and all existing "
|
1168 |
+
"settings will be overridden."
|
1169 |
+
msgstr ""
|
1170 |
+
"Pokud kliknete na tlačítko níže, stávající nastavení bude nahrazeno vybraným "
|
1171 |
+
"souborem."
|
1172 |
+
|
1173 |
+
#: ../cerber-tools.php:64
|
1174 |
+
msgid "Select file to import."
|
1175 |
+
msgstr "Vyberte prosím soubor importu."
|
1176 |
+
|
1177 |
+
#: ../cerber-tools.php:64
|
1178 |
+
#, php-format
|
1179 |
+
msgid "Maximum upload file size: %s."
|
1180 |
+
msgstr "Maximální velikost nahrávaného souboru: %s."
|
1181 |
+
|
1182 |
+
#: ../cerber-tools.php:67
|
1183 |
+
msgid "What do you want to import?"
|
1184 |
+
msgstr "Co chcete importovat?"
|
1185 |
+
|
1186 |
+
#: ../cerber-tools.php:69
|
1187 |
+
msgid "Upload file"
|
1188 |
+
msgstr "Nahrát soubor"
|
1189 |
+
|
1190 |
+
#: ../cerber-tools.php:148
|
1191 |
+
msgid "No file was uploaded or file is corrupted"
|
1192 |
+
msgstr "Žádný soubor nebyl nahrán nebo je soubor poškozen"
|
1193 |
+
|
1194 |
+
#: ../cerber-tools.php:178
|
1195 |
+
msgid "Error while updating"
|
1196 |
+
msgstr "Během aktualizace se vyskytla chyba"
|
1197 |
+
|
1198 |
+
#: ../cerber-tools.php:181
|
1199 |
+
msgid "Settings has imported successfully from"
|
1200 |
+
msgstr "Nastavení bylo úspěšně importováno z"
|
1201 |
+
|
1202 |
+
#: ../cerber-tools.php:185
|
1203 |
+
msgid "Error while parsing file"
|
1204 |
+
msgstr "Během ukládání se vyskytla chyba"
|
languages/wp-cerber-de_DE.mo
ADDED
Binary file
|
languages/wp-cerber-de_DE.po
ADDED
@@ -0,0 +1,1273 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: WP Cerber\n"
|
8 |
+
"Language: de\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
+
|
11 |
+
#: ../settings.php:57
|
12 |
+
msgid "Limit login attempts"
|
13 |
+
msgstr "Anmeldeversuche limitieren"
|
14 |
+
|
15 |
+
#: ../settings.php:58
|
16 |
+
msgid "Attempts"
|
17 |
+
msgstr "Versuche"
|
18 |
+
|
19 |
+
#: ../settings.php:59
|
20 |
+
msgid "Lockout duration"
|
21 |
+
msgstr "Sperrdauer"
|
22 |
+
|
23 |
+
#: ../settings.php:59 ../settings.php:78
|
24 |
+
msgid "minutes"
|
25 |
+
msgstr "Minuten"
|
26 |
+
|
27 |
+
#: ../settings.php:60
|
28 |
+
msgid "Aggressive lockout"
|
29 |
+
msgstr "Aggressive Sperre"
|
30 |
+
|
31 |
+
#: ../settings.php:63
|
32 |
+
msgid "Site connection"
|
33 |
+
msgstr "Verbindung zur Website"
|
34 |
+
|
35 |
+
#: ../settings.php:65
|
36 |
+
msgid "Proactive security rules"
|
37 |
+
msgstr "Proaktive Sicherheitsregeln"
|
38 |
+
|
39 |
+
#: ../settings.php:66
|
40 |
+
msgid "Block subnet"
|
41 |
+
msgstr "Sperre Subnetz"
|
42 |
+
|
43 |
+
#: ../settings.php:69
|
44 |
+
msgid "Request wp-login.php"
|
45 |
+
msgstr "Anfrage wp-login.php"
|
46 |
+
|
47 |
+
#: ../settings.php:69
|
48 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
49 |
+
msgstr "IP nach jeder Anfrage auf wp-login.php sofort sperren"
|
50 |
+
|
51 |
+
#: ../settings.php:68
|
52 |
+
msgid "Redirect dashboard requests"
|
53 |
+
msgstr "Dashboard-Anfragen umleiten"
|
54 |
+
|
55 |
+
#: ../settings.php:72
|
56 |
+
msgid "Custom login page"
|
57 |
+
msgstr "Benutzerdefinierte Login-Seite"
|
58 |
+
|
59 |
+
#: ../settings.php:73
|
60 |
+
msgid "Custom login URL"
|
61 |
+
msgstr "Benutzerdefinierte Login-URL"
|
62 |
+
|
63 |
+
#. There is no perfect translation for "slug" with keeping the context. "Permalink" describes the whole URL but is used by WordPress in this place.
|
64 |
+
#: ../settings.php:73
|
65 |
+
#, fuzzy
|
66 |
+
msgid "must not overlap with the existing pages or posts slug"
|
67 |
+
msgstr "darf sich nicht mit Permalinks von vorhandenen Seiten oder Beiträgen überlappen"
|
68 |
+
|
69 |
+
#: ../settings.php:74
|
70 |
+
msgid "Disable wp-login.php"
|
71 |
+
msgstr "Deaktiviere wp-login.php"
|
72 |
+
|
73 |
+
#: ../settings.php:74
|
74 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
75 |
+
msgstr "Blockiere direkten Zugriff zu wp-login.php und gib HTTP 404 Not Found Error zurück"
|
76 |
+
|
77 |
+
#: ../dashboard.php:904 ../settings.php:76
|
78 |
+
msgid "Citadel mode"
|
79 |
+
msgstr "Citadel Modus"
|
80 |
+
|
81 |
+
#: ../settings.php:77
|
82 |
+
msgid "Threshold"
|
83 |
+
msgstr "Schwelle"
|
84 |
+
|
85 |
+
#: ../settings.php:78
|
86 |
+
msgid "Duration"
|
87 |
+
msgstr "Dauer"
|
88 |
+
|
89 |
+
#: ../wp-cerber.php:2830 ../settings.php:62 ../settings.php:80 ../settings.php:238
|
90 |
+
msgid "Notifications"
|
91 |
+
msgstr "Benachrichtigungen"
|
92 |
+
|
93 |
+
#: ../settings.php:80
|
94 |
+
msgid "Send notification to admin email"
|
95 |
+
msgstr "Sende eine Benachrichtigung an die Emailadresse des Admins"
|
96 |
+
|
97 |
+
#: ../dashboard.php:913 ../dashboard.php:1413 ../wp-cerber.php:2828 ../settings.
|
98 |
+
#: php:231 ../cerber-tools.php:87 ../cerber-tools.php:96 ../cerber-tools.php:162
|
99 |
+
msgid "Access Lists"
|
100 |
+
msgstr "Zugriffslisten"
|
101 |
+
|
102 |
+
#: ../dashboard.php:911 ../dashboard.php:1082 ../wp-cerber.php:2695 ../settings.
|
103 |
+
#: php:82 ../settings.php:222
|
104 |
+
msgid "Activity"
|
105 |
+
msgstr "Aktivität"
|
106 |
+
|
107 |
+
#: ../dashboard.php:912 ../settings.php:226
|
108 |
+
msgid "Lockouts"
|
109 |
+
msgstr "Sperren"
|
110 |
+
|
111 |
+
#: ../settings.php:353
|
112 |
+
msgid "%s allowed retries in %s minutes"
|
113 |
+
msgstr "%s erlaubte Wiederholungen in %s Minuten"
|
114 |
+
|
115 |
+
#: ../settings.php:370
|
116 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
117 |
+
msgstr "Aktiviere nach %s fehlgeschlagenen Anmeldeversuchen in den letzten %s Minuten"
|
118 |
+
|
119 |
+
#: ../dashboard.php:77 ../dashboard.php:502 ../wp-cerber.php:2696
|
120 |
+
msgid "IP"
|
121 |
+
msgstr "IP"
|
122 |
+
|
123 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
124 |
+
msgid "Date"
|
125 |
+
msgstr "Datum"
|
126 |
+
|
127 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
128 |
+
msgid "Local User"
|
129 |
+
msgstr "Lokaler Benutzer"
|
130 |
+
|
131 |
+
#: ../dashboard.php:355 ../dashboard.php:502 ../wp-cerber.php:2704
|
132 |
+
msgid "Username used"
|
133 |
+
msgstr "Benutzername wird bereits verwendet"
|
134 |
+
|
135 |
+
#: ../dashboard.php:83
|
136 |
+
msgid "Showing last %d records from %d"
|
137 |
+
msgstr "Zeige die letzten %d Einträge von %d"
|
138 |
+
|
139 |
+
#: ../common.php:335
|
140 |
+
msgid "Logged in"
|
141 |
+
msgstr "Eingeloggt"
|
142 |
+
|
143 |
+
#: ../common.php:336
|
144 |
+
msgid "Logged out"
|
145 |
+
msgstr "Ausgeloggt"
|
146 |
+
|
147 |
+
#: ../common.php:337
|
148 |
+
msgid "Login failed"
|
149 |
+
msgstr "Login fehlgeschlagen"
|
150 |
+
|
151 |
+
#: ../common.php:340
|
152 |
+
msgid "IP blocked"
|
153 |
+
msgstr "IP geblockt"
|
154 |
+
|
155 |
+
#: ../common.php:341
|
156 |
+
msgid "Subnet blocked"
|
157 |
+
msgstr "Subnetz geblockt"
|
158 |
+
|
159 |
+
#: ../common.php:343
|
160 |
+
msgid "Citadel activated!"
|
161 |
+
msgstr "Citadel-Modus aktiviert!"
|
162 |
+
|
163 |
+
#: ../dashboard.php:488 ../dashboard.php:668 ../common.php:347
|
164 |
+
msgid "Locked out"
|
165 |
+
msgstr "Ausgesperrt"
|
166 |
+
|
167 |
+
#. Only correct if "IP blacklisted" is used as indicative. Otherwise it would not translate "IP auf der schwarzen Liste" but "IP auf die schwarze Liste gesetzt" (if it states that the IP was just blacklisted).
|
168 |
+
#: ../common.php:348
|
169 |
+
#, fuzzy
|
170 |
+
msgid "IP blacklisted"
|
171 |
+
msgstr "IP blockiert"
|
172 |
+
|
173 |
+
#: ../common.php:354
|
174 |
+
msgid "Password changed"
|
175 |
+
msgstr "Passwort geändert"
|
176 |
+
|
177 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
178 |
+
msgid "Remove"
|
179 |
+
msgstr "Entfernen"
|
180 |
+
|
181 |
+
#: ../dashboard.php:270
|
182 |
+
msgid "Lockout for %s was removed"
|
183 |
+
msgstr "Die Sperre für %s wurde entfernt"
|
184 |
+
|
185 |
+
#: ../dashboard.php:102 ../dashboard.php:483 ../dashboard.php:663 ../dashboard.
|
186 |
+
#: php:902 ../wp-cerber.php:2822 ../settings.php:61 ../settings.php:192
|
187 |
+
#, fuzzy
|
188 |
+
msgid "White IP Access List"
|
189 |
+
msgstr "Weiße Liste (erlaubten IPs)"
|
190 |
+
|
191 |
+
#: ../dashboard.php:104 ../dashboard.php:484 ../dashboard.php:665 ../dashboard.
|
192 |
+
#: php:903
|
193 |
+
#, fuzzy
|
194 |
+
msgid "Black IP Access List"
|
195 |
+
msgstr "Schwarze Liste (verbotenen IPs)"
|
196 |
+
|
197 |
+
#: ../dashboard.php:126
|
198 |
+
msgid "List is empty"
|
199 |
+
msgstr "Liste ist leer"
|
200 |
+
|
201 |
+
#: ../dashboard.php:153
|
202 |
+
msgid "Address %s was added to White IP Access List"
|
203 |
+
msgstr "Adresse %s wurde zur Liste der erlaubten IPs hinzugefügt"
|
204 |
+
|
205 |
+
#: ../dashboard.php:166
|
206 |
+
msgid "Address %s was added to Black IP Access List"
|
207 |
+
msgstr "Adresse %s wurde zur Liste der verbotenen IPs hinzugefügt"
|
208 |
+
|
209 |
+
#: ../wp-cerber.php:2368
|
210 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
211 |
+
msgstr "Citadel-Modus ist aktiviert nach %d fehlgeschlagenen Logins in %d Minuten."
|
212 |
+
|
213 |
+
#: ../dashboard.php:1205
|
214 |
+
msgid "View Activity"
|
215 |
+
msgstr "Aktivitäten anzeigen"
|
216 |
+
|
217 |
+
#: ../cerber-tools.php:86 ../cerber-tools.php:95
|
218 |
+
msgid "Settings"
|
219 |
+
msgstr "Einstellungen"
|
220 |
+
|
221 |
+
#: ../dashboard.php:803
|
222 |
+
msgid "Last login"
|
223 |
+
msgstr "Letzte Anmeldung"
|
224 |
+
|
225 |
+
#: ../dashboard.php:830 ../dashboard.php:885
|
226 |
+
msgid "Never"
|
227 |
+
msgstr "Niemals"
|
228 |
+
|
229 |
+
#: ../dashboard.php:1125
|
230 |
+
msgid "Are you sure?"
|
231 |
+
msgstr "Sind Sie sicher?"
|
232 |
+
|
233 |
+
#: ../settings.php:63
|
234 |
+
msgid "My site is behind a reverse proxy"
|
235 |
+
msgstr "Meine Website ist hinter einem Reverse-Proxy"
|
236 |
+
|
237 |
+
#: ../settings.php:67
|
238 |
+
msgid "Non-existent users"
|
239 |
+
msgstr "Nicht vorhandene Benutzer"
|
240 |
+
|
241 |
+
#: ../settings.php:67
|
242 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
243 |
+
msgstr "IP sofort sperren, wenn versucht wird, sich mit einem nicht vorhandenen Benutzernamen einzuloggen "
|
244 |
+
|
245 |
+
#: ../settings.php:68
|
246 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
247 |
+
msgstr "Die automatische Umleitung auf die Anmeldeseite deaktivieren, wenn /wp-admin/ von einer nicht autorisierten Anfrage aufgerufen wird"
|
248 |
+
|
249 |
+
#. A fuzzy translation that is mostly used in this context would be "Machen Sie Ihren Schutz intelligenter!"
|
250 |
+
#: ../settings.php:178
|
251 |
+
msgid "Make your protection smarter!"
|
252 |
+
msgstr "Machen Sie Ihren Schutz schlauer!"
|
253 |
+
|
254 |
+
#: ../settings.php:182
|
255 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
256 |
+
msgstr "Bitte aktivieren Sie Permalinks um dieses Merkmal zu verwenden. Setzen Sie die Permalink-Einstellungen auf etwas anderes als Standard."
|
257 |
+
|
258 |
+
#: ../settings.php:185
|
259 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
260 |
+
msgstr "Seien Sie vorsichtig bei der Aktivierung dieser Optionen. Wenn Sie die benutzerdefinierte Login-URL vergessen, können Sie sich nicht mehr anmelden."
|
261 |
+
|
262 |
+
#: ../wp-cerber.php:2827 ../settings.php:228
|
263 |
+
msgid "Main Settings"
|
264 |
+
msgstr "Haupteinstellungen"
|
265 |
+
|
266 |
+
#: ../settings.php:240
|
267 |
+
msgid "Help"
|
268 |
+
msgstr "Hilfe"
|
269 |
+
|
270 |
+
#. "Aussperrungen" is used in plural because there are more likely several lockouts in the last hours. One single lockout would demand the use of the singular "Aussperrung". We could use "Aussperrung(en)" to cover all cases.
|
271 |
+
#: ../settings.php:358
|
272 |
+
#, fuzzy
|
273 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
274 |
+
msgstr "Erhöhe die Sperrdauer um %s Stunden nach %s Aussperrungen in den letzten %s Stunden"
|
275 |
+
|
276 |
+
#: ../wp-cerber.php:215
|
277 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
278 |
+
msgstr "Sie sind nicht berechtigt, sich anzumelden. Fragen Sie Ihren Administrator nach Unterstützung."
|
279 |
+
|
280 |
+
#. One "Minute", two/three/four/... "Minuten".
|
281 |
+
#: ../wp-cerber.php:221
|
282 |
+
#, fuzzy
|
283 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
284 |
+
msgstr "Sie haben die maximale Anzahl an Login-Versuchen erreicht. Bitte versuchen Sie es in %d Minuten noch einmal."
|
285 |
+
|
286 |
+
#: ../wp-cerber.php:240
|
287 |
+
msgid "You have only one attempt remaining."
|
288 |
+
msgid_plural "You have %d attempts remaining."
|
289 |
+
msgstr[0] "Sie haben nur noch einen Versuch."
|
290 |
+
msgstr[1] "Sie haben nur noch %d Versuche."
|
291 |
+
|
292 |
+
#: ../dashboard.php:515
|
293 |
+
msgid "No activity has been logged."
|
294 |
+
msgstr "Keine Aktivität wurde protokolliert."
|
295 |
+
|
296 |
+
#: ../dashboard.php:77
|
297 |
+
msgid "Expires"
|
298 |
+
msgstr "Gültig bis"
|
299 |
+
|
300 |
+
#: ../dashboard.php:89
|
301 |
+
msgid "No lockouts at the moment. The sky is clear."
|
302 |
+
msgstr "Keine Sperrung im Moment. Der Himmel ist klar."
|
303 |
+
|
304 |
+
#: ../dashboard.php:102
|
305 |
+
msgid "These IPs will never be locked out"
|
306 |
+
msgstr "Diese IPs werden nie gesperrt"
|
307 |
+
|
308 |
+
#: ../dashboard.php:106
|
309 |
+
msgid "Your IP"
|
310 |
+
msgstr "Ihre IP"
|
311 |
+
|
312 |
+
#: ../dashboard.php:162
|
313 |
+
msgid "You can't add your IP address"
|
314 |
+
msgstr "Sie können Ihre IP Adresse nicht hinzufügen"
|
315 |
+
|
316 |
+
#: ../wp-cerber.php:2369
|
317 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
318 |
+
msgstr "Der letzte gescheiterte Versuch war um %s von der IP %s mit der Benutzeranmeldung: %s."
|
319 |
+
|
320 |
+
#: ../wp-cerber.php:2432
|
321 |
+
msgid "Change notification settings"
|
322 |
+
msgstr "Benachrichtigungseinstellungen ändern"
|
323 |
+
|
324 |
+
#: ../wp-cerber.php:2805
|
325 |
+
msgid "Can't activate WP Cerber due to a database error."
|
326 |
+
msgstr "Kann WP Cerber aufgrund eines Datenbankfehlers nicht aktivieren."
|
327 |
+
|
328 |
+
#: ../settings.php:365
|
329 |
+
msgid "Notify admin if the number of active lockouts above"
|
330 |
+
msgstr "Benachrichtige den Admin, wenn die Anzahl von aktiven Aussperrungen größer ist als"
|
331 |
+
|
332 |
+
#: ../settings.php:83 ../settings.php:126
|
333 |
+
msgid "days"
|
334 |
+
msgstr "Tage"
|
335 |
+
|
336 |
+
#: ../dashboard.php:854
|
337 |
+
msgid "Cerber Quick View"
|
338 |
+
msgstr "Cerber Schnellansicht"
|
339 |
+
|
340 |
+
#: ../dashboard.php:85
|
341 |
+
msgid "Hint"
|
342 |
+
msgstr "Hinweis"
|
343 |
+
|
344 |
+
#: ../dashboard.php:85
|
345 |
+
msgid "To view activity, click on the IP"
|
346 |
+
msgstr "Um die Aktivität sehen zu können, klicken Sie auf die IP"
|
347 |
+
|
348 |
+
#: ../dashboard.php:123 ../dashboard.php:695
|
349 |
+
msgid "Check for activity"
|
350 |
+
msgstr "Auf Aktivität überprüfen"
|
351 |
+
|
352 |
+
#: ../settings.php:66
|
353 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
354 |
+
msgstr "Immer das gesamte Subnetz Klasse C der IP des Eindringlings blockieren"
|
355 |
+
|
356 |
+
#: ../settings.php:80 ../settings.php:367
|
357 |
+
msgid "Click to send test"
|
358 |
+
msgstr "Klicken für Sendungstest"
|
359 |
+
|
360 |
+
#: ../settings.php:460
|
361 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
362 |
+
msgstr "Achtung! Sie haben die Anmelde-URL geändert! Die neue Login-URL ist"
|
363 |
+
|
364 |
+
#: ../dashboard.php:802
|
365 |
+
msgid "Comments"
|
366 |
+
msgstr "Kommentare"
|
367 |
+
|
368 |
+
#: ../dashboard.php:805
|
369 |
+
msgid "Date of registration"
|
370 |
+
msgstr "Registrierungsdatum"
|
371 |
+
|
372 |
+
#: ../dashboard.php:259
|
373 |
+
msgid "Message has been sent to "
|
374 |
+
msgstr "Die Nachricht wurde gesendet an␣"
|
375 |
+
|
376 |
+
#: ../dashboard.php:1286
|
377 |
+
msgid "Update to version %s of WP Cerber"
|
378 |
+
msgstr "Update auf Version %s von WP Cerber"
|
379 |
+
|
380 |
+
#: ../wp-cerber.php:2370 ../wp-cerber.php:2720
|
381 |
+
msgid "View activity in dashboard"
|
382 |
+
msgstr "Zeige Aktivität im Dashboard"
|
383 |
+
|
384 |
+
#: ../wp-cerber.php:2400
|
385 |
+
msgid "Number of active lockouts"
|
386 |
+
msgstr "Anzahl der aktiven Sperren"
|
387 |
+
|
388 |
+
#: ../wp-cerber.php:2404
|
389 |
+
msgid "View lockouts in dashboard"
|
390 |
+
msgstr "Zeige Sperren im Dashboard"
|
391 |
+
|
392 |
+
#: ../wp-cerber.php:2457
|
393 |
+
msgid "This message was sent by"
|
394 |
+
msgstr "Diese Nachricht wurde gesendet von"
|
395 |
+
|
396 |
+
#. Used to be "Import/Export" but this is a fuzzy translation. Exact translation that WordPress also uses is "Werkzeuge".
|
397 |
+
#: ../dashboard.php:749 ../cerber-tools.php:43
|
398 |
+
msgid "Tools"
|
399 |
+
msgstr "Werkzeuge"
|
400 |
+
|
401 |
+
#: ../cerber-tools.php:83
|
402 |
+
msgid "Export settings to the file"
|
403 |
+
msgstr "Einstellungen in Datei exportieren"
|
404 |
+
|
405 |
+
#. "below" is ignored in the translation.
|
406 |
+
#: ../cerber-tools.php:84
|
407 |
+
#, fuzzy
|
408 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
409 |
+
msgstr "Wenn Sie auf den Button klicken, bekommen Sie eine Konfigurationsdatei, die Sie auf einer anderen Website hochladen können."
|
410 |
+
|
411 |
+
#: ../cerber-tools.php:85
|
412 |
+
msgid "What do you want to export?"
|
413 |
+
msgstr "Was wollen Sie exportieren?"
|
414 |
+
|
415 |
+
#: ../cerber-tools.php:88
|
416 |
+
msgid "Download file"
|
417 |
+
msgstr "Datei herunterladen"
|
418 |
+
|
419 |
+
#: ../cerber-tools.php:90
|
420 |
+
msgid "Import settings from the file"
|
421 |
+
msgstr "Einstellungen aus Datei importieren"
|
422 |
+
|
423 |
+
#. "below" is ignored in the translation.
|
424 |
+
#: ../cerber-tools.php:91
|
425 |
+
#, fuzzy
|
426 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
427 |
+
msgstr "Wenn Sie auf den Button klicken, wird die Datei hochgeladen und alle vorhandenen Einstellungen werden überschrieben."
|
428 |
+
|
429 |
+
#: ../cerber-tools.php:92
|
430 |
+
msgid "Select file to import."
|
431 |
+
msgstr "Datei zum Importieren auswählen."
|
432 |
+
|
433 |
+
#: ../cerber-tools.php:92
|
434 |
+
msgid "Maximum upload file size: %s."
|
435 |
+
msgstr "Maximale Dateigröße für Uploads: %s"
|
436 |
+
|
437 |
+
#: ../cerber-tools.php:95
|
438 |
+
msgid "What do you want to import?"
|
439 |
+
msgstr "Was wollen Sie importieren?"
|
440 |
+
|
441 |
+
#: ../cerber-tools.php:97
|
442 |
+
msgid "Upload file"
|
443 |
+
msgstr "Datei hochladen"
|
444 |
+
|
445 |
+
#: ../cerber-tools.php:132
|
446 |
+
msgid "No file was uploaded or file is corrupted"
|
447 |
+
msgstr "Keine Datei hochgeladen oder Datei ist beschädigt"
|
448 |
+
|
449 |
+
#: ../cerber-tools.php:162
|
450 |
+
msgid "Error while updating"
|
451 |
+
msgstr "Fehler bei der Aktualisierung"
|
452 |
+
|
453 |
+
#: ../cerber-tools.php:165
|
454 |
+
msgid "Settings has imported successfully from"
|
455 |
+
msgstr "Einstellungen erfolgreich importiert von"
|
456 |
+
|
457 |
+
#: ../cerber-tools.php:169
|
458 |
+
msgid "Error while parsing file"
|
459 |
+
msgstr "Fehler beim Parsen der Datei"
|
460 |
+
|
461 |
+
#: ../dashboard.php:77 ../dashboard.php:502
|
462 |
+
msgid "Hostname"
|
463 |
+
msgstr "Hostname"
|
464 |
+
|
465 |
+
#: ../dashboard.php:237
|
466 |
+
#, fuzzy
|
467 |
+
msgid "unknown"
|
468 |
+
msgstr "unbekannt"
|
469 |
+
|
470 |
+
#: ../settings.php:83
|
471 |
+
msgid "Keep records for"
|
472 |
+
msgstr "Behalte Aufzeichnungen für"
|
473 |
+
|
474 |
+
#: ../dashboard.php:889
|
475 |
+
msgid "active"
|
476 |
+
msgstr "aktiv"
|
477 |
+
|
478 |
+
#: ../dashboard.php:889
|
479 |
+
msgid "deactivate"
|
480 |
+
msgstr "deaktiviert"
|
481 |
+
|
482 |
+
#: ../dashboard.php:891
|
483 |
+
msgid "not active"
|
484 |
+
msgstr "nicht aktiv"
|
485 |
+
|
486 |
+
#. "deactive" and "disabled" mean exactly the same in German.
|
487 |
+
#: ../dashboard.php:892
|
488 |
+
msgid "disabled"
|
489 |
+
msgstr "deaktiviert"
|
490 |
+
|
491 |
+
#: ../dashboard.php:897
|
492 |
+
msgid "failed attempts"
|
493 |
+
msgstr "Fehlversuche"
|
494 |
+
|
495 |
+
#: ../dashboard.php:897 ../dashboard.php:898
|
496 |
+
msgid "in 24 hours"
|
497 |
+
msgstr "in 24 Stunden"
|
498 |
+
|
499 |
+
#: ../dashboard.php:897 ../dashboard.php:898
|
500 |
+
msgid "view all"
|
501 |
+
msgstr "Zeige alle"
|
502 |
+
|
503 |
+
#: ../dashboard.php:898
|
504 |
+
msgid "lockouts"
|
505 |
+
msgstr "Sperren"
|
506 |
+
|
507 |
+
#: ../dashboard.php:900
|
508 |
+
msgid "Lockouts at the moment"
|
509 |
+
msgstr "Momentane Sperren"
|
510 |
+
|
511 |
+
#: ../dashboard.php:901
|
512 |
+
msgid "Last lockout"
|
513 |
+
msgstr "Letzte Sperre"
|
514 |
+
|
515 |
+
#: ../dashboard.php:902 ../dashboard.php:903 ../dashboard.php:1392
|
516 |
+
msgid "entry"
|
517 |
+
msgid_plural "entries"
|
518 |
+
msgstr[0] "Eintrag"
|
519 |
+
msgstr[1] "Einträge"
|
520 |
+
|
521 |
+
#: ../dashboard.php:1120
|
522 |
+
#, fuzzy
|
523 |
+
msgid "Confused about some settings?"
|
524 |
+
msgstr "Verwirrende Einstellungen?"
|
525 |
+
|
526 |
+
#: ../dashboard.php:1121
|
527 |
+
msgid "You can easily load default recommended settings using button below"
|
528 |
+
msgstr "Sie können ganz einfach mit dem unteren Button empfohlene Standardeinstellungen laden"
|
529 |
+
|
530 |
+
#: ../dashboard.php:1123
|
531 |
+
msgid "Load default settings"
|
532 |
+
msgstr "Standardeinstellung laden"
|
533 |
+
|
534 |
+
#: ../dashboard.php:1131
|
535 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
536 |
+
msgstr "hat keinen Einfluss auf benutzerdefinierte Login-URL und Zugriffslisten"
|
537 |
+
|
538 |
+
#: ../dashboard.php:1150
|
539 |
+
msgid "Donate"
|
540 |
+
msgstr "Spenden"
|
541 |
+
|
542 |
+
#: ../dashboard.php:1280
|
543 |
+
msgid "New version is available"
|
544 |
+
msgstr "Eine neue Version ist verfügbar"
|
545 |
+
|
546 |
+
#. Name of the plugin
|
547 |
+
#: ../dashboard.php:744 ../dashboard.php:759
|
548 |
+
msgid "WP Cerber"
|
549 |
+
msgstr "WP Cerber"
|
550 |
+
|
551 |
+
#. URI of the plugin
|
552 |
+
#:
|
553 |
+
msgid "http://wpcerber.com"
|
554 |
+
msgstr "http://wpcerber.com"
|
555 |
+
|
556 |
+
#: ../wp-cerber.php:2348
|
557 |
+
msgid "WP Cerber notify"
|
558 |
+
msgstr "WP Cerber benachrichtigen"
|
559 |
+
|
560 |
+
#: ../wp-cerber.php:2366
|
561 |
+
msgid "Citadel mode is activated"
|
562 |
+
msgstr "Citadel-Modus ist aktiviert"
|
563 |
+
|
564 |
+
#: ../wp-cerber.php:2437
|
565 |
+
msgid "New Custom login URL"
|
566 |
+
msgstr "Neue benutzerdefinierte Login-URL"
|
567 |
+
|
568 |
+
#: ../wp-cerber.php:2796
|
569 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
570 |
+
msgstr "WP Cerber benötigt PHP Version %s oder höher. Sie haben"
|
571 |
+
|
572 |
+
#: ../wp-cerber.php:2800
|
573 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
574 |
+
msgstr "WP Cerber benötigt Wordpress Version %s oder höher. Sie haben"
|
575 |
+
|
576 |
+
#. Non-fuzzy translation would be "Verwende Datei" but in this context "Verwende Logdatei" is describing exactly what it does.
|
577 |
+
#: ../settings.php:86
|
578 |
+
#, fuzzy
|
579 |
+
msgid "Use file"
|
580 |
+
msgstr "Verwende Logdatei"
|
581 |
+
|
582 |
+
#: ../settings.php:86
|
583 |
+
msgid "Write failed login attempts to the file"
|
584 |
+
msgstr "Schreibe fehlgeschlagene Anmeldungen in die Datei."
|
585 |
+
|
586 |
+
#: ../dashboard.php:804
|
587 |
+
msgid "Failed attempts in last 24 hours"
|
588 |
+
msgstr "Fehlversuche in den letzten 24 Stunden"
|
589 |
+
|
590 |
+
#: ../dashboard.php:1204
|
591 |
+
msgid "Deactivate"
|
592 |
+
msgstr "Deaktivieren"
|
593 |
+
|
594 |
+
#: ../dashboard.php:77 ../wp-cerber.php:2402
|
595 |
+
msgid "Reason"
|
596 |
+
msgstr "Grund"
|
597 |
+
|
598 |
+
#: ../dashboard.php:130
|
599 |
+
msgid "Add IP to the list"
|
600 |
+
msgstr "Füge IP zur Liste hinzu"
|
601 |
+
|
602 |
+
#: ../dashboard.php:713
|
603 |
+
msgid "Add IP to the Black List"
|
604 |
+
msgstr "Füge IP zur Schwarzen Liste hinzu"
|
605 |
+
|
606 |
+
#: ../common.php:376
|
607 |
+
msgid "Attempt to access"
|
608 |
+
msgstr "Zugriffsversuch"
|
609 |
+
|
610 |
+
#: ../common.php:375
|
611 |
+
msgid "Limit on login attempts is reached"
|
612 |
+
msgstr "Limit für Anmeldeversuche ist erreicht"
|
613 |
+
|
614 |
+
#: ../common.php:362 ../common.php:377
|
615 |
+
msgid "Attempt to log in with non-existent username"
|
616 |
+
msgstr "Anmeldeversuch mit nicht existierendem Nutzernamen"
|
617 |
+
|
618 |
+
#: ../wp-cerber.php:2401
|
619 |
+
msgid "Last lockout was added: %s for IP %s"
|
620 |
+
msgstr "Letzte Sperre wurde hinzugefügt: %s für IP %s"
|
621 |
+
|
622 |
+
#: ../wp-cerber.php:2824
|
623 |
+
msgid "It's important to check security settings."
|
624 |
+
msgstr "Es ist wichtig Sicherheitseinstellungen zu überprüfen."
|
625 |
+
|
626 |
+
#. "Abhärtung" is the medical translation for "hardening" which fits best in this case.
|
627 |
+
#: ../wp-cerber.php:2829 ../settings.php:233
|
628 |
+
msgid "Hardening"
|
629 |
+
msgstr "Abhärtung"
|
630 |
+
|
631 |
+
#: ../dashboard.php:691
|
632 |
+
msgid "Abuse email:"
|
633 |
+
msgstr "Missbrauch Email:"
|
634 |
+
|
635 |
+
#: ../settings.php:154
|
636 |
+
msgid "Email Address"
|
637 |
+
msgstr "E-Mail-Adresse"
|
638 |
+
|
639 |
+
#: ../settings.php:154
|
640 |
+
msgid "if empty, the admin email %s will be used"
|
641 |
+
msgstr "wenn leer, dann wird die E-Mail-Adresse %s des Admins benutzt"
|
642 |
+
|
643 |
+
#. More narrow translation would be "IP aufbrechen" but does not really fit.
|
644 |
+
#: ../settings.php:89
|
645 |
+
#, fuzzy
|
646 |
+
msgid "Drill down IP"
|
647 |
+
msgstr "IP inspizieren"
|
648 |
+
|
649 |
+
#: ../settings.php:89
|
650 |
+
msgid "Retrieve extra WHOIS information for IP"
|
651 |
+
msgstr "Extra WHOIS Informationen für IP abrufen"
|
652 |
+
|
653 |
+
#: ../settings.php:97
|
654 |
+
msgid "Hardening WordPress"
|
655 |
+
msgstr "WordPress abhärten"
|
656 |
+
|
657 |
+
#. "Enumeration" would originally translate to "Aufzählung" but does not quite fit.
|
658 |
+
#: ../settings.php:98
|
659 |
+
#, fuzzy
|
660 |
+
msgid "Stop user enumeration"
|
661 |
+
msgstr "Benutzererfassung stoppen"
|
662 |
+
|
663 |
+
#: ../settings.php:98
|
664 |
+
msgid "Block access to the pages like /?author=n"
|
665 |
+
msgstr "Zugriff auf Seiten wie /?author=n sperren"
|
666 |
+
|
667 |
+
#: ../settings.php:99
|
668 |
+
msgid "Disable XML-RPC"
|
669 |
+
msgstr "Deaktiviere XML-RPC"
|
670 |
+
|
671 |
+
#: ../settings.php:99
|
672 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
673 |
+
msgstr "Zugriff auf den XML-RPC Server sperren (Pingbacks und Trackbacks eingeschlossen)"
|
674 |
+
|
675 |
+
#: ../settings.php:100
|
676 |
+
msgid "Disable feeds"
|
677 |
+
msgstr "Feeds deaktivieren"
|
678 |
+
|
679 |
+
#: ../settings.php:100
|
680 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
681 |
+
msgstr "Zugriff auf den RSS-, den Atom- und den RDF-Feed blockieren"
|
682 |
+
|
683 |
+
#: ../settings.php:101
|
684 |
+
msgid "Disable REST API"
|
685 |
+
msgstr "REST API deaktivieren"
|
686 |
+
|
687 |
+
#: ../settings.php:101
|
688 |
+
msgid "Block access to the WordPress REST API"
|
689 |
+
msgstr "Zugriff auf das WordPress REST API blockieren"
|
690 |
+
|
691 |
+
#: ../settings.php:192
|
692 |
+
#, fuzzy
|
693 |
+
msgid "These settings do not affect hosts from the "
|
694 |
+
msgstr "Diese Einstellungen beeinflussen keine Hosts von"
|
695 |
+
|
696 |
+
#: ../settings.php:540
|
697 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
698 |
+
msgstr "<strong>FEHLER</strong>: Bitte eine gültige E-Mail-Adresse eingeben"
|
699 |
+
|
700 |
+
#: ../wp-cerber.php:2431 ../wp-cerber.php:2821
|
701 |
+
#, fuzzy
|
702 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
703 |
+
msgstr "WP Cerber ist nun aktiv und schützt ihre Website"
|
704 |
+
|
705 |
+
#: ../dashboard.php:77
|
706 |
+
msgid "Action"
|
707 |
+
msgstr "Aktion"
|
708 |
+
|
709 |
+
#: ../dashboard.php:104
|
710 |
+
msgid "Nobody can log in or register from these IPs"
|
711 |
+
msgstr "Niemand kann sich von diesen IPs anmelden oder registrieren"
|
712 |
+
|
713 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
714 |
+
msgid "Incorrect IP address or IP range"
|
715 |
+
msgstr "Falsche IP-Adresse oder falscher IP-Bereich"
|
716 |
+
|
717 |
+
#: ../dashboard.php:262
|
718 |
+
msgid "Unable to send notification email"
|
719 |
+
msgstr "Kann Benachrichtigungsemail nicht senden"
|
720 |
+
|
721 |
+
#: ../dashboard.php:287 ../dashboard.php:1220
|
722 |
+
msgid "Settings saved"
|
723 |
+
msgstr "Einstellungen gespeichert"
|
724 |
+
|
725 |
+
#: ../dashboard.php:695
|
726 |
+
msgid "Network:"
|
727 |
+
msgstr "Netzwerk:"
|
728 |
+
|
729 |
+
#: ../dashboard.php:709
|
730 |
+
msgid "Add network to the Black List"
|
731 |
+
msgstr "Netzwerk zur schwarzen Liste hinzufügen"
|
732 |
+
|
733 |
+
#: ../dashboard.php:1203
|
734 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
735 |
+
msgstr "Achtung! Citadel-Modus ist nun aktiv. Niemand kann sich anmelden."
|
736 |
+
|
737 |
+
#: ../whois.php:210 ../common.php:374
|
738 |
+
msgid "Unknown"
|
739 |
+
msgstr "Unbekannt"
|
740 |
+
|
741 |
+
#. Description of the plugin
|
742 |
+
#:
|
743 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
744 |
+
msgstr "Schützt Seite vor Brute-Force-Attacken, Bots und Hackern. Anti-Spam-Schutz mit reCAPTCHA. Umfassende Kontrolle von Nutzeraktivitäten. Eingeschränkte Anmeldung durch IP-Zugriffs-Listen. Anmeldeversuche limitieren. Gerne können Sie den Entwickler auf <a href=\"http://wpcerber.com\">wpcerber.com</a> kontaktieren."
|
745 |
+
|
746 |
+
#. Author of the plugin
|
747 |
+
#:
|
748 |
+
msgid "Gregory"
|
749 |
+
msgstr "Gregory"
|
750 |
+
|
751 |
+
#: ../wp-cerber.php:560 ../wp-cerber.php:572 ../wp-cerber.php:579 ../wp-cerber.
|
752 |
+
#: php:717 ../wp-cerber.php:922 ../wp-cerber.php:927 ../wp-cerber.php:932 ../wp-
|
753 |
+
#: cerber.php:938 ../wp-cerber.php:968 ../wp-cerber.php:1062 ../common.php:128 ..
|
754 |
+
#: /common.php:181 ../common.php:185 ../settings.php:513
|
755 |
+
msgid "ERROR:"
|
756 |
+
msgstr "FEHLER:"
|
757 |
+
|
758 |
+
#: ../wp-cerber.php:589
|
759 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
760 |
+
msgstr "Menschlichkeitsnachweis gescheitert. Bitte klicken Sie das quadratische Kästchen im reCAPTCHA-Block unten."
|
761 |
+
|
762 |
+
#: ../wp-cerber.php:728
|
763 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
764 |
+
msgstr "<strong>FEHLER</strong>: Das eingegebene Passwort für den Benutzernamen %s ist falsch."
|
765 |
+
|
766 |
+
#: ../wp-cerber.php:933
|
767 |
+
msgid "Username is not allowed. Please choose another one."
|
768 |
+
msgstr "Benutzername ist nicht erlaubt. Bitte einen anderen wählen."
|
769 |
+
|
770 |
+
#: ../wp-cerber.php:2395
|
771 |
+
msgid "unspecified"
|
772 |
+
msgstr "nicht spezifiziert"
|
773 |
+
|
774 |
+
#: ../wp-cerber.php:2398
|
775 |
+
msgid "Number of lockouts is increasing"
|
776 |
+
msgstr "Anzahl an Sperren steigt an"
|
777 |
+
|
778 |
+
#: ../wp-cerber.php:2403
|
779 |
+
msgid "View activity for this IP"
|
780 |
+
msgstr "Zeige Aktivität für diese IP"
|
781 |
+
|
782 |
+
#: ../wp-cerber.php:2407 ../wp-cerber.php:2409
|
783 |
+
msgid "A new version of WP Cerber is available to install"
|
784 |
+
msgstr "Eine neue Version von WP Cerber ist zur Installation verfügbar"
|
785 |
+
|
786 |
+
#: ../wp-cerber.php:2408
|
787 |
+
msgid "Hi!"
|
788 |
+
msgstr "Hallo!"
|
789 |
+
|
790 |
+
#. Original translation is "Internetseite" but this translation is not up to time.
|
791 |
+
#: ../wp-cerber.php:2410 ../wp-cerber.php:2421
|
792 |
+
msgid "Website"
|
793 |
+
msgstr "Website"
|
794 |
+
|
795 |
+
#: ../wp-cerber.php:2413 ../wp-cerber.php:2414
|
796 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
797 |
+
msgstr "Das WP Cerber Sicherheits-Plugin wurde deaktiviert"
|
798 |
+
|
799 |
+
#: ../wp-cerber.php:2416
|
800 |
+
msgid "Not logged in"
|
801 |
+
msgstr "Nicht angemeldet"
|
802 |
+
|
803 |
+
#: ../wp-cerber.php:2422
|
804 |
+
#, fuzzy
|
805 |
+
msgid "By user"
|
806 |
+
msgstr "Von Nutzer"
|
807 |
+
|
808 |
+
#: ../wp-cerber.php:2423
|
809 |
+
#, fuzzy
|
810 |
+
msgid "From IP address"
|
811 |
+
msgstr "Von IP-Adresse"
|
812 |
+
|
813 |
+
#: ../wp-cerber.php:2426
|
814 |
+
#, fuzzy
|
815 |
+
msgid "From country"
|
816 |
+
msgstr "Vom Land"
|
817 |
+
|
818 |
+
#: ../wp-cerber.php:2430
|
819 |
+
msgid "The WP Cerber security plugin is now active"
|
820 |
+
msgstr "Das WP Cerber Sicherheits-Plugin ist nun aktiv"
|
821 |
+
|
822 |
+
#: ../wp-cerber.php:2822
|
823 |
+
#, fuzzy
|
824 |
+
msgid "Your IP address is added to the"
|
825 |
+
msgstr "Ihre IP-Adresse wurde hinzugefügt zu"
|
826 |
+
|
827 |
+
#: ../wp-cerber.php:2831
|
828 |
+
msgid "Import settings"
|
829 |
+
msgstr "Import-Einstellungen"
|
830 |
+
|
831 |
+
#: ../settings.php:155
|
832 |
+
msgid "Notification limit"
|
833 |
+
msgstr "Benachrichtigungslimit"
|
834 |
+
|
835 |
+
#: ../settings.php:155
|
836 |
+
#, fuzzy
|
837 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
838 |
+
msgstr "Zugelassene Benachrichtigungen pro Stunde (0 bedeutet kein Limit)"
|
839 |
+
|
840 |
+
#: ../settings.php:110
|
841 |
+
msgid "User related settings"
|
842 |
+
msgstr "Benutzerbezogene Einstellungen"
|
843 |
+
|
844 |
+
#: ../settings.php:111
|
845 |
+
msgid "Prohibited usernames"
|
846 |
+
msgstr "Verbotene Benutzernamen"
|
847 |
+
|
848 |
+
#: ../settings.php:111
|
849 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
850 |
+
msgstr "Benutzernamen von dieser Liste dürfen sich nicht anmelden oder registrieren. Jede IP-Adresse, die versucht hat einen dieser Nutzernamen zu verwenden, wird sofort blockiert. Mit Komma Namen trennen."
|
851 |
+
|
852 |
+
#: ../settings.php:112
|
853 |
+
msgid "User session expire"
|
854 |
+
msgstr "Benutzer-Sitzung Ablauf"
|
855 |
+
|
856 |
+
#: ../settings.php:112
|
857 |
+
msgid "in minutes (leave empty to use default WP value)"
|
858 |
+
msgstr "in Minuten (leer lassen um WP Standardwert zu verwenden)"
|
859 |
+
|
860 |
+
#: ../settings.php:129
|
861 |
+
msgid "reCAPTCHA settings"
|
862 |
+
msgstr "reCAPTCHA-Einstellungen"
|
863 |
+
|
864 |
+
#. Technical term.
|
865 |
+
#: ../settings.php:130
|
866 |
+
msgid "Site key"
|
867 |
+
msgstr "Site key"
|
868 |
+
|
869 |
+
#. Technical term.
|
870 |
+
#: ../settings.php:131
|
871 |
+
msgid "Secret key"
|
872 |
+
msgstr "Secret key"
|
873 |
+
|
874 |
+
#: ../settings.php:134
|
875 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
876 |
+
msgstr "Aktiviere reCAPTCHA für das WordPress Registrierungsformular"
|
877 |
+
|
878 |
+
#: ../settings.php:137
|
879 |
+
msgid "Lost password form"
|
880 |
+
msgstr "Passwort-Vergessen-Formular"
|
881 |
+
|
882 |
+
#: ../settings.php:140
|
883 |
+
msgid "Login form"
|
884 |
+
msgstr "Anmeldeforumlar"
|
885 |
+
|
886 |
+
#: ../settings.php:140
|
887 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
888 |
+
msgstr "Aktiviere reCAPTCHA für das WordPress Anmeldeformular"
|
889 |
+
|
890 |
+
#: ../settings.php:195
|
891 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
892 |
+
msgstr "Bevor Sie reCAPTCHA nutzen können, müssen Sie einen Site key und einen Secret key von der Google Website beziehen."
|
893 |
+
|
894 |
+
#: ../cerber-lab.php:580 ../settings.php:196
|
895 |
+
msgid "Know more"
|
896 |
+
msgstr "Mehr erfahren"
|
897 |
+
|
898 |
+
#: ../dashboard.php:744 ../settings.php:215
|
899 |
+
msgid "WP Cerber Security"
|
900 |
+
msgstr "WP Cerber Sicherheit"
|
901 |
+
|
902 |
+
#: ../settings.php:235
|
903 |
+
msgid "Users"
|
904 |
+
msgstr "Benutzer"
|
905 |
+
|
906 |
+
#: ../common.php:333
|
907 |
+
msgid "User created"
|
908 |
+
msgstr "Benutzer erstellt"
|
909 |
+
|
910 |
+
#: ../dashboard.php:1076 ../common.php:334
|
911 |
+
msgid "User registered"
|
912 |
+
msgstr "Benutzer registriert"
|
913 |
+
|
914 |
+
#: ../common.php:357
|
915 |
+
msgid "reCAPTCHA verification failed"
|
916 |
+
msgstr "reCAPTCHA-Bestätigung gescheitert"
|
917 |
+
|
918 |
+
#: ../common.php:358
|
919 |
+
msgid "reCAPTCHA settings are incorrect"
|
920 |
+
msgstr "reCAPTCHA-Einstellungen sind falsch"
|
921 |
+
|
922 |
+
#: ../common.php:361
|
923 |
+
msgid "Attempt to access prohibited URL"
|
924 |
+
msgstr "Zugriffsversuch auf verbotene URL"
|
925 |
+
|
926 |
+
#: ../common.php:363 ../common.php:378
|
927 |
+
msgid "Attempt to log in with prohibited username"
|
928 |
+
msgstr "Anmeldeversuch mit verbotenem Benutzernamen"
|
929 |
+
|
930 |
+
#: ../settings.php:84
|
931 |
+
msgid "Cerber Lab connection"
|
932 |
+
msgstr "Cerber Lab Verbindung"
|
933 |
+
|
934 |
+
#: ../settings.php:84
|
935 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
936 |
+
msgstr "Bösartige IP-Adressen an das Cerber Lab senden"
|
937 |
+
|
938 |
+
#: ../settings.php:85
|
939 |
+
msgid "Cerber Lab protocol"
|
940 |
+
msgstr "Cerber Lab Protokoll"
|
941 |
+
|
942 |
+
#: ../settings.php:121 ../settings.php:134
|
943 |
+
msgid "Registration form"
|
944 |
+
msgstr "Registrierungsformular"
|
945 |
+
|
946 |
+
#: ../settings.php:135
|
947 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
948 |
+
msgstr "Aktiviere reCAPTCHA für das WooCommerce Registrierungsformular"
|
949 |
+
|
950 |
+
#: ../settings.php:137
|
951 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
952 |
+
msgstr "Aktiviere reCAPTCHA für das WordPress Passwort-Vergessen-Formular"
|
953 |
+
|
954 |
+
#: ../settings.php:138
|
955 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
956 |
+
msgstr "Aktiviere reCAPTCHA für das WooCommerce Passwort-Vergessen-Formular"
|
957 |
+
|
958 |
+
#: ../settings.php:141
|
959 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
960 |
+
msgstr "Aktiviere reCAPTCHA für das WooCommerce Anmeldeformular"
|
961 |
+
|
962 |
+
#: ../common.php:359
|
963 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
964 |
+
msgstr "Anfrage an den Google reCAPTCHA Dienst gescheitert"
|
965 |
+
|
966 |
+
#: ../dashboard.php:1068 ../dashboard.php:1097
|
967 |
+
msgid "View all"
|
968 |
+
msgstr "Zeige alle"
|
969 |
+
|
970 |
+
#: ../dashboard.php:1098
|
971 |
+
msgid "Recently locked out IP addresses"
|
972 |
+
msgstr "Kürzlich ausgesperrte IP-Adressen"
|
973 |
+
|
974 |
+
#. "OK, vernichte sie alle" is a nicer translation for "OK, kill them all" ... too harsh or does it fit?
|
975 |
+
#: ../cerber-lab.php:578
|
976 |
+
#, fuzzy
|
977 |
+
msgid "OK, nail them all"
|
978 |
+
msgstr "OK, vernichte sie alle"
|
979 |
+
|
980 |
+
#: ../cerber-lab.php:579
|
981 |
+
msgid "NO, maybe later"
|
982 |
+
msgstr "NEIN, vielleicht später"
|
983 |
+
|
984 |
+
#. Dashboard is in German more common in this context as the actual translation "Amaturenbrett" which is only used for non-digital things like in cars!
|
985 |
+
#: ../dashboard.php:746 ../dashboard.php:910 ../dashboard.php:1412 ../settings.
|
986 |
+
#: php:220
|
987 |
+
#, fuzzy
|
988 |
+
msgid "Dashboard"
|
989 |
+
msgstr "Dashboard"
|
990 |
+
|
991 |
+
#: ../cerber-lab.php:576
|
992 |
+
msgid "Want to make WP Cerber even more powerful?"
|
993 |
+
msgstr "Wollen Sie WP Cerber noch stärker machen?"
|
994 |
+
|
995 |
+
#: ../cerber-lab.php:577
|
996 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
997 |
+
msgstr "Erlaube WP Cerber ausgesperrte bösartige IP-Adressen an das Cerber Lab zu senden. Dies hilft dem Plugin-Team neue Algorithmen für WP Cerber zu entwickeln, die WordPress gegen täglich auftretende neue Bedrohungen und Botnets verteidigen. Sie können das Senden jederzeit in den Plugin-Einstellungen deaktivieren."
|
998 |
+
|
999 |
+
#: ../dashboard.php:355
|
1000 |
+
msgid "IP address"
|
1001 |
+
msgstr "IP-Adresse"
|
1002 |
+
|
1003 |
+
#: ../dashboard.php:355
|
1004 |
+
msgid "User login"
|
1005 |
+
msgstr "Benutzer-Anmeldung"
|
1006 |
+
|
1007 |
+
#: ../dashboard.php:355
|
1008 |
+
msgid "User ID"
|
1009 |
+
msgstr "Benutzer-ID"
|
1010 |
+
|
1011 |
+
#: ../dashboard.php:511
|
1012 |
+
msgid "Export"
|
1013 |
+
msgstr "Export"
|
1014 |
+
|
1015 |
+
#: ../dashboard.php:521
|
1016 |
+
msgid "All activities"
|
1017 |
+
msgstr "Alle Aktivitäten"
|
1018 |
+
|
1019 |
+
#: ../dashboard.php:530
|
1020 |
+
msgid "Search for IP or username"
|
1021 |
+
msgstr "Suche nach IP oder Nutzernamen"
|
1022 |
+
|
1023 |
+
#: ../dashboard.php:530
|
1024 |
+
msgid "Filter"
|
1025 |
+
msgstr "Filter"
|
1026 |
+
|
1027 |
+
#: ../dashboard.php:746
|
1028 |
+
msgid "Cerber Dashboard"
|
1029 |
+
msgstr "Cerber Dashboard"
|
1030 |
+
|
1031 |
+
#: ../dashboard.php:749
|
1032 |
+
msgid "Cerber tools"
|
1033 |
+
msgstr "Cerber Werkzeuge"
|
1034 |
+
|
1035 |
+
#: ../dashboard.php:1325
|
1036 |
+
msgid "Subscribe"
|
1037 |
+
msgstr "Abonnieren"
|
1038 |
+
|
1039 |
+
#: ../dashboard.php:1326
|
1040 |
+
msgid "Unsubscribe"
|
1041 |
+
msgstr "Abmelden"
|
1042 |
+
|
1043 |
+
#: ../dashboard.php:1354
|
1044 |
+
#, fuzzy
|
1045 |
+
msgid "You've subscribed"
|
1046 |
+
msgstr "Erfolgreich abonniert"
|
1047 |
+
|
1048 |
+
#: ../dashboard.php:1357
|
1049 |
+
#, fuzzy
|
1050 |
+
msgid "You've unsubscribed"
|
1051 |
+
msgstr "Erfolgreich abgemeldet"
|
1052 |
+
|
1053 |
+
#: ../wp-cerber.php:2441 ../wp-cerber.php:2442
|
1054 |
+
msgid "A new activity has been recorded"
|
1055 |
+
msgstr "Eine neue Aktivität wurde aufgezeichnet"
|
1056 |
+
|
1057 |
+
#: ../wp-cerber.php:2700
|
1058 |
+
msgid "User"
|
1059 |
+
msgstr "Benutzer"
|
1060 |
+
|
1061 |
+
#: ../wp-cerber.php:2708
|
1062 |
+
msgid "Search string"
|
1063 |
+
msgstr "Such-String"
|
1064 |
+
|
1065 |
+
#: ../wp-cerber.php:2721
|
1066 |
+
msgid "To unsubscribe click here"
|
1067 |
+
msgstr "Zum Abmelden hier klicken"
|
1068 |
+
|
1069 |
+
#: ../settings.php:88
|
1070 |
+
msgid "Preferences"
|
1071 |
+
msgstr "Präferenzen"
|
1072 |
+
|
1073 |
+
#: ../settings.php:90
|
1074 |
+
msgid "Date format"
|
1075 |
+
msgstr "Datumsformat"
|
1076 |
+
|
1077 |
+
#: ../settings.php:90
|
1078 |
+
msgid "if empty, the default format %s will be used"
|
1079 |
+
msgstr "wenn leer, dann wird das Standard Format %s verwendet"
|
1080 |
+
|
1081 |
+
#: ../dashboard.php:906 ../settings.php:157
|
1082 |
+
msgid "Push notifications"
|
1083 |
+
msgstr "Push-Benachrichtigungen"
|
1084 |
+
|
1085 |
+
#: ../settings.php:152
|
1086 |
+
msgid "Email notifications"
|
1087 |
+
msgstr "Email-Benachrichtigungen"
|
1088 |
+
|
1089 |
+
#: ../settings.php:154
|
1090 |
+
msgid "Use comma to specify multiple values"
|
1091 |
+
msgstr "Mit Komma mehrere Werte trennen"
|
1092 |
+
|
1093 |
+
#: ../settings.php:164
|
1094 |
+
msgid "All connected devices"
|
1095 |
+
msgstr "Alle verbundenen Geräte"
|
1096 |
+
|
1097 |
+
#: ../settings.php:165
|
1098 |
+
msgid "No devices found"
|
1099 |
+
msgstr "Kein Gerät gefunden"
|
1100 |
+
|
1101 |
+
#: ../settings.php:167
|
1102 |
+
msgid "Not available"
|
1103 |
+
msgstr "Nicht verfügbar"
|
1104 |
+
|
1105 |
+
#: ../common.php:355
|
1106 |
+
msgid "Password reset requested"
|
1107 |
+
msgstr "Passwort Zurücksetzung angefordert"
|
1108 |
+
|
1109 |
+
#: ../common.php:379
|
1110 |
+
msgid "Limit on failed reCAPTCHA verifications is reached"
|
1111 |
+
msgstr "Grenze an fehlgeschlagenen reCAPTCHA ist erreicht"
|
1112 |
+
|
1113 |
+
#: ../common.php:432
|
1114 |
+
msgid "%s ago"
|
1115 |
+
msgstr "vor %s"
|
1116 |
+
|
1117 |
+
#: ../settings.php:61
|
1118 |
+
msgid "Apply limit login rules to IP addresses in the White IP Access List"
|
1119 |
+
msgstr "Eingeschränkte Zugangsregeln für IP Adresse in der White IP Liste anwenden"
|
1120 |
+
|
1121 |
+
#: ../settings.php:70
|
1122 |
+
msgid "Display 404 page"
|
1123 |
+
msgstr "Zeige 404 Seite"
|
1124 |
+
|
1125 |
+
#: ../settings.php:132
|
1126 |
+
msgid "Invisible reCAPTCHA"
|
1127 |
+
msgstr "Unsichtbares reCAPTCHA"
|
1128 |
+
|
1129 |
+
#: ../settings.php:132
|
1130 |
+
msgid "Enable invisible reCAPTCHA"
|
1131 |
+
msgstr "Unsichtbares reCAPTCHA aktivieren"
|
1132 |
+
|
1133 |
+
#: ../settings.php:132
|
1134 |
+
msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
|
1135 |
+
msgstr "(nicht anwenden, sofern nicht Seite betreten wurde und Geheimschlüssel für unsichtbare Version erhalten)"
|
1136 |
+
|
1137 |
+
#: ../settings.php:143
|
1138 |
+
msgid "Enable reCAPTCHA for WordPress comment form"
|
1139 |
+
msgstr "reCAPTCHA für WordPress Kommentarformular aktivieren"
|
1140 |
+
|
1141 |
+
#: ../settings.php:144
|
1142 |
+
msgid "Disable reCAPTCHA for logged in users"
|
1143 |
+
msgstr "reCAPTCHA für angemeldete Benutzer deaktivieren"
|
1144 |
+
|
1145 |
+
#: ../settings.php:146
|
1146 |
+
msgid "Limit attempts"
|
1147 |
+
msgstr "Versuche Einschränken"
|
1148 |
+
|
1149 |
+
#: ../settings.php:146
|
1150 |
+
msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
|
1151 |
+
msgstr "IP Adresse für %s Minuten nach %s fehlgeschlagenen Versuchen innerhalb von %s Minuten sperren"
|
1152 |
+
|
1153 |
+
#: ../settings.php:189
|
1154 |
+
msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
|
1155 |
+
msgstr "Im Citadel Modus kann sich niemand einloggen, außer IPs auf der White IP Zugangsliste. Laufende Sitzungen werden nicht beeinflusst."
|
1156 |
+
|
1157 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
1158 |
+
msgid "Event"
|
1159 |
+
msgstr "Ereignis"
|
1160 |
+
|
1161 |
+
#: ../dashboard.php:1049
|
1162 |
+
msgid "Spam comments denied"
|
1163 |
+
msgstr "Spam Kommentare verweigert"
|
1164 |
+
|
1165 |
+
#: ../dashboard.php:1050
|
1166 |
+
msgid "Malicious IP addresses detected"
|
1167 |
+
msgstr "Schadhafte IP Adresse gefunden"
|
1168 |
+
|
1169 |
+
#: ../dashboard.php:1051
|
1170 |
+
msgid "Lockouts occurred"
|
1171 |
+
msgstr "Sperre aufgetreten"
|
1172 |
+
|
1173 |
+
#: ../dashboard.php:1052
|
1174 |
+
msgid "Locked out IP now"
|
1175 |
+
msgstr "Jetzt gesperrte IP"
|
1176 |
+
|
1177 |
+
#: ../dashboard.php:1077
|
1178 |
+
msgid "All suspicious activity"
|
1179 |
+
msgstr "Alle verdächtigen Aktivitäten"
|
1180 |
+
|
1181 |
+
#: ../wp-cerber.php:923 ../wp-cerber.php:939
|
1182 |
+
msgid "You are not allowed to register."
|
1183 |
+
msgstr "Registrierung nicht erlaubt."
|
1184 |
+
|
1185 |
+
#: ../common.php:344
|
1186 |
+
msgid "Spam comment denied"
|
1187 |
+
msgstr "Spam Kommentar verweigert"
|
1188 |
+
|
1189 |
+
#: ../common.php:350
|
1190 |
+
msgid "by Cerber Lab"
|
1191 |
+
msgstr ""
|
1192 |
+
|
1193 |
+
#: ../common.php:365
|
1194 |
+
msgid "Attempt to log in denied"
|
1195 |
+
msgstr "Loginversuch verweigert"
|
1196 |
+
|
1197 |
+
#: ../common.php:366
|
1198 |
+
msgid "Attempt to register denied"
|
1199 |
+
msgstr "Registrierungsversuch verweigert"
|
1200 |
+
|
1201 |
+
#: ../dashboard.php:1048
|
1202 |
+
msgid "Malicious activities mitigated"
|
1203 |
+
msgstr "Schadhafte Aktivitäten gemildert"
|
1204 |
+
|
1205 |
+
#: ../dashboard.php:748
|
1206 |
+
msgid "Cerber antispam settings"
|
1207 |
+
msgstr ""
|
1208 |
+
|
1209 |
+
#: ../dashboard.php:748 ../settings.php:143
|
1210 |
+
msgid "Antispam"
|
1211 |
+
msgstr ""
|
1212 |
+
|
1213 |
+
#: ../settings.php:119
|
1214 |
+
msgid "Cerber antispam engine"
|
1215 |
+
msgstr ""
|
1216 |
+
|
1217 |
+
#: ../settings.php:120
|
1218 |
+
msgid "Comment form"
|
1219 |
+
msgstr ""
|
1220 |
+
|
1221 |
+
#: ../settings.php:120
|
1222 |
+
msgid "Protect comment form with bot detection engine"
|
1223 |
+
msgstr ""
|
1224 |
+
|
1225 |
+
#: ../settings.php:121
|
1226 |
+
msgid "Protect registration form with bot detection engine"
|
1227 |
+
msgstr ""
|
1228 |
+
|
1229 |
+
#: ../cerber-tools.php:48
|
1230 |
+
msgid "Export & Import"
|
1231 |
+
msgstr ""
|
1232 |
+
|
1233 |
+
#: ../cerber-tools.php:49
|
1234 |
+
msgid "Diagnostic"
|
1235 |
+
msgstr ""
|
1236 |
+
|
1237 |
+
#: ../cerber-tools.php:50
|
1238 |
+
msgid "License"
|
1239 |
+
msgstr ""
|
1240 |
+
|
1241 |
+
#: ../cerber-tools.php:267
|
1242 |
+
msgid "Antispam and bot detection settings"
|
1243 |
+
msgstr ""
|
1244 |
+
|
1245 |
+
#. Description of the plugin
|
1246 |
+
#:
|
1247 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Know more: <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
1248 |
+
msgstr ""
|
1249 |
+
|
1250 |
+
#: ../wp-cerber.php:1062
|
1251 |
+
msgid "Sorry, human verification failed."
|
1252 |
+
msgstr ""
|
1253 |
+
|
1254 |
+
#: ../common.php:380
|
1255 |
+
msgid "Bot activity is detected"
|
1256 |
+
msgstr ""
|
1257 |
+
|
1258 |
+
#: ../settings.php:124
|
1259 |
+
msgid "Comment processing"
|
1260 |
+
msgstr ""
|
1261 |
+
|
1262 |
+
#: ../settings.php:125
|
1263 |
+
msgid "If a spam comment detected"
|
1264 |
+
msgstr ""
|
1265 |
+
|
1266 |
+
#: ../settings.php:126
|
1267 |
+
msgid "Trash spam comments"
|
1268 |
+
msgstr ""
|
1269 |
+
|
1270 |
+
#: ../settings.php:126
|
1271 |
+
msgid "Move spam comments to trash after"
|
1272 |
+
msgstr ""
|
1273 |
+
|
languages/wp-cerber-es_ES.mo
ADDED
Binary file
|
languages/wp-cerber-es_ES.po
ADDED
@@ -0,0 +1,1212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: WP Cerber\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
|
6 |
+
"PO-Revision-Date: 2017-07-17 10:24+0200\n"
|
7 |
+
"Last-Translator: IMurias <imurias@bizkaia.eu>\n"
|
8 |
+
"Language-Team: IMurias <imurias@bizkaia.eu>\n"
|
9 |
+
"Language: es_ES\n"
|
10 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
+
"X-Poedit-Basepath: .\n"
|
16 |
+
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
|
17 |
+
"X-Generator: Poedit 1.8.3\n"
|
18 |
+
"X-Loco-Target-Locale: es_ES\n"
|
19 |
+
"X-Poedit-SearchPath-0: ..\n"
|
20 |
+
|
21 |
+
#: ../settings.php:55
|
22 |
+
msgid "Limit login attempts"
|
23 |
+
msgstr "Límite de intentos de conexión"
|
24 |
+
|
25 |
+
#: ../settings.php:56
|
26 |
+
msgid "Attempts"
|
27 |
+
msgstr "Intentos"
|
28 |
+
|
29 |
+
#: ../settings.php:57
|
30 |
+
msgid "Lockout duration"
|
31 |
+
msgstr "Duración del bloqueo"
|
32 |
+
|
33 |
+
#: ../common.php:253 ../settings.php:57 ../settings.php:74
|
34 |
+
msgid "minutes"
|
35 |
+
msgstr "minutos"
|
36 |
+
|
37 |
+
#: ../settings.php:58
|
38 |
+
msgid "Aggressive lockout"
|
39 |
+
msgstr "Bloqueo agresivo"
|
40 |
+
|
41 |
+
#: ../settings.php:60
|
42 |
+
msgid "Site connection"
|
43 |
+
msgstr "Conexión web"
|
44 |
+
|
45 |
+
#: ../settings.php:62
|
46 |
+
msgid "Proactive security rules"
|
47 |
+
msgstr "Normas de seguridad proactivas"
|
48 |
+
|
49 |
+
#: ../settings.php:63
|
50 |
+
msgid "Block subnet"
|
51 |
+
msgstr "Bloquear subred"
|
52 |
+
|
53 |
+
#: ../settings.php:66
|
54 |
+
msgid "Request wp-login.php"
|
55 |
+
msgstr "Solicitud wp-login.php"
|
56 |
+
|
57 |
+
#: ../settings.php:66
|
58 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
59 |
+
msgstr "Bloquear IP inmediatamente después de cualquier solicitud a wp-login.php"
|
60 |
+
|
61 |
+
#: ../settings.php:65
|
62 |
+
msgid "Redirect dashboard requests"
|
63 |
+
msgstr "Redirigir peticiones al escritorio"
|
64 |
+
|
65 |
+
#: ../settings.php:68
|
66 |
+
msgid "Custom login page"
|
67 |
+
msgstr "Personalizar página de acceso"
|
68 |
+
|
69 |
+
#: ../settings.php:69
|
70 |
+
msgid "Custom login URL"
|
71 |
+
msgstr "Personalizar URL de acceso"
|
72 |
+
|
73 |
+
#: ../settings.php:69
|
74 |
+
msgid "must not overlap with the existing pages or posts slug"
|
75 |
+
msgstr "no debe solaparse con el slug actual de páginas o entradas"
|
76 |
+
|
77 |
+
#: ../settings.php:70
|
78 |
+
msgid "Disable wp-login.php"
|
79 |
+
msgstr "Desactivar wp-login.php"
|
80 |
+
|
81 |
+
#: ../settings.php:70
|
82 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
83 |
+
msgstr "Bloquear el acceso directo a wp-login.php y devolver un error HTTP 404 - No encontrado"
|
84 |
+
|
85 |
+
#: ../dashboard.php:859 ../settings.php:72
|
86 |
+
msgid "Citadel mode"
|
87 |
+
msgstr "Modo Ciudadela"
|
88 |
+
|
89 |
+
#: ../settings.php:73
|
90 |
+
msgid "Threshold"
|
91 |
+
msgstr "Umbral"
|
92 |
+
|
93 |
+
#: ../settings.php:74
|
94 |
+
msgid "Duration"
|
95 |
+
msgstr "Duración"
|
96 |
+
|
97 |
+
#: ../settings.php:59 ../settings.php:76 ../settings.php:78
|
98 |
+
msgid "Notifications"
|
99 |
+
msgstr "Notificaciones"
|
100 |
+
|
101 |
+
#: ../settings.php:76
|
102 |
+
msgid "Send notification to admin email"
|
103 |
+
msgstr "Enviar una notificación al correo del administrador"
|
104 |
+
|
105 |
+
#: ../dashboard.php:865 ../dashboard.php:1279 ../wp-cerber.php:2319
|
106 |
+
#: ../settings. php:200 ../cerber-tools.php:59 ../cerber-tools.php:68
|
107 |
+
#: ../cerber-tools.php:180
|
108 |
+
msgid "Access Lists"
|
109 |
+
msgstr "Listas de acceso"
|
110 |
+
|
111 |
+
#: ../dashboard.php:330 ../dashboard.php:429 ../dashboard.php:863 ../dashboard.
|
112 |
+
#: php:971 ../wp-cerber.php:2208 ../settings.php:83 ../settings.php:192
|
113 |
+
msgid "Activity"
|
114 |
+
msgstr "Actividad"
|
115 |
+
|
116 |
+
#: ../dashboard.php:864 ../settings.php:195
|
117 |
+
msgid "Lockouts"
|
118 |
+
msgstr "Bloqueos"
|
119 |
+
|
120 |
+
#: ../settings.php:281
|
121 |
+
msgid "%s allowed retries in %s minutes"
|
122 |
+
msgstr "%s reintentos admitidos en %s minutos"
|
123 |
+
|
124 |
+
#: ../settings.php:298
|
125 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
126 |
+
msgstr "Habilitar después de %s intentos de acceso fallidos en los últimos %s minutos"
|
127 |
+
|
128 |
+
#: ../dashboard.php:77 ../dashboard.php:429 ../wp-cerber.php:2209
|
129 |
+
msgid "IP"
|
130 |
+
msgstr "IP"
|
131 |
+
|
132 |
+
#: ../dashboard.php:330 ../dashboard.php:429
|
133 |
+
msgid "Date"
|
134 |
+
msgstr "Fecha"
|
135 |
+
|
136 |
+
#: ../dashboard.php:330 ../dashboard.php:429
|
137 |
+
msgid "Local User"
|
138 |
+
msgstr "Usuario local"
|
139 |
+
|
140 |
+
#: ../dashboard.php:330 ../dashboard.php:429 ../wp-cerber.php:2217
|
141 |
+
msgid "Username used"
|
142 |
+
msgstr "Nombre utilizado"
|
143 |
+
|
144 |
+
#: ../dashboard.php:83
|
145 |
+
msgid "Showing last %d records from %d"
|
146 |
+
msgstr "Mostrando los últimos %d registros de %d"
|
147 |
+
|
148 |
+
#: ../common.php:155
|
149 |
+
msgid "Logged in"
|
150 |
+
msgstr "Sesión iniciada"
|
151 |
+
|
152 |
+
#: ../common.php:156
|
153 |
+
msgid "Logged out"
|
154 |
+
msgstr "Desconectado"
|
155 |
+
|
156 |
+
#: ../common.php:157
|
157 |
+
msgid "Login failed"
|
158 |
+
msgstr "Error de inicio de sesión"
|
159 |
+
|
160 |
+
#: ../common.php:160
|
161 |
+
msgid "IP blocked"
|
162 |
+
msgstr "IP bloqueada"
|
163 |
+
|
164 |
+
#: ../common.php:161
|
165 |
+
msgid "Subnet blocked"
|
166 |
+
msgstr "Subred bloqueada"
|
167 |
+
|
168 |
+
#: ../common.php:163
|
169 |
+
msgid "Citadel activated!"
|
170 |
+
msgstr "¡Ciudadela activada!"
|
171 |
+
|
172 |
+
#: ../dashboard.php:414 ../dashboard.php:592 ../common.php:165
|
173 |
+
msgid "Locked out"
|
174 |
+
msgstr "Bloqueado"
|
175 |
+
|
176 |
+
#: ../common.php:166
|
177 |
+
msgid "IP blacklisted"
|
178 |
+
msgstr "IP en la lista negra"
|
179 |
+
|
180 |
+
#: ../common.php:169
|
181 |
+
msgid "Password changed"
|
182 |
+
msgstr "Contraseña cambiada"
|
183 |
+
|
184 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
185 |
+
msgid "Remove"
|
186 |
+
msgstr "Eliminar"
|
187 |
+
|
188 |
+
#: ../dashboard.php:260
|
189 |
+
msgid "Lockout for %s was removed"
|
190 |
+
msgstr "Se ha eliminado el bloqueo de %s"
|
191 |
+
|
192 |
+
#: ../dashboard.php:102 ../dashboard.php:409 ../dashboard.php:587 ../dashboard.
|
193 |
+
#: php:857 ../wp-cerber.php:2313 ../settings.php:157
|
194 |
+
msgid "White IP Access List"
|
195 |
+
msgstr "Lista Blanca de Accesos IP"
|
196 |
+
|
197 |
+
#: ../dashboard.php:104 ../dashboard.php:410 ../dashboard.php:589 ../dashboard.
|
198 |
+
#: php:858
|
199 |
+
msgid "Black IP Access List"
|
200 |
+
msgstr "Lista Negra de Accesos IP"
|
201 |
+
|
202 |
+
#: ../dashboard.php:126
|
203 |
+
msgid "List is empty"
|
204 |
+
msgstr "La lista está vacía"
|
205 |
+
|
206 |
+
#: ../dashboard.php:148
|
207 |
+
msgid "Address %s was added to White IP Access List"
|
208 |
+
msgstr "Dirección %s añadida a la lista blanca de IPs"
|
209 |
+
|
210 |
+
#: ../dashboard.php:161
|
211 |
+
msgid "Address %s was added to Black IP Access List"
|
212 |
+
msgstr "Dirección %s añadida a la lista negra de IPs"
|
213 |
+
|
214 |
+
#: ../wp-cerber.php:1925
|
215 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
216 |
+
msgstr "El Modo Ciudadela se activa después de %d intentos fallidos de inicio de sesión en %d minutos."
|
217 |
+
|
218 |
+
#: ../dashboard.php:1092
|
219 |
+
msgid "View Activity"
|
220 |
+
msgstr "Ver actividad"
|
221 |
+
|
222 |
+
#: ../dashboard.php:866 ../dashboard.php:1278 ../cerber-tools.php:58 ../cerber-
|
223 |
+
#: tools.php:67
|
224 |
+
msgid "Settings"
|
225 |
+
msgstr "Ajustes"
|
226 |
+
|
227 |
+
#: ../dashboard.php:761
|
228 |
+
msgid "Last login"
|
229 |
+
msgstr "Último acceso"
|
230 |
+
|
231 |
+
#: ../dashboard.php:788 ../dashboard.php:840
|
232 |
+
msgid "Never"
|
233 |
+
msgstr "Nunca"
|
234 |
+
|
235 |
+
#: ../dashboard.php:1013 ../dashboard.php:1408
|
236 |
+
msgid "Are you sure?"
|
237 |
+
msgstr "¿Estás seguro?"
|
238 |
+
|
239 |
+
#: ../dashboard.php:662
|
240 |
+
msgid "WP Cerber Settings"
|
241 |
+
msgstr "Ajustes de WP Cerber"
|
242 |
+
|
243 |
+
#: ../settings.php:60
|
244 |
+
msgid "My site is behind a reverse proxy"
|
245 |
+
msgstr "Mi web está detrás de un proxy inverso"
|
246 |
+
|
247 |
+
#: ../settings.php:64
|
248 |
+
msgid "Non-existent users"
|
249 |
+
msgstr "Usuarios inexistentes"
|
250 |
+
|
251 |
+
#: ../settings.php:64
|
252 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
253 |
+
msgstr "Bloquear IP inmediatamente al intentar iniciar sesión con un nombre de usuario inexistente"
|
254 |
+
|
255 |
+
#: ../settings.php:65
|
256 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
257 |
+
msgstr "Desactivar la redirección automática a la página de inicio de sesión cuando /wp-admin/ es solicitado por una petición no autorizada"
|
258 |
+
|
259 |
+
#: ../settings.php:139
|
260 |
+
msgid "Make your protection smarter!"
|
261 |
+
msgstr "¡Haz que tu protección sea más inteligente!"
|
262 |
+
|
263 |
+
#: ../settings.php:143
|
264 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
265 |
+
msgstr "Por favor, activa los enlaces permanentes para utilizar esta función. Establece las opciones de enlaces permanentes a algún valor no predeterminado."
|
266 |
+
|
267 |
+
#: ../settings.php:146
|
268 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
269 |
+
msgstr "Cuidado al habilitar esta opción. Si olvidas la dirección URL de conexión personalizada, no podrás iniciar sesión."
|
270 |
+
|
271 |
+
#: ../wp-cerber.php:2318 ../settings.php:197
|
272 |
+
msgid "Main Settings"
|
273 |
+
msgstr "Ajustes principales"
|
274 |
+
|
275 |
+
#: ../settings.php:211
|
276 |
+
msgid "Help"
|
277 |
+
msgstr "Ayuda"
|
278 |
+
|
279 |
+
#: ../settings.php:286
|
280 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
281 |
+
msgstr "Aumentar la duración del bloqueo en %s horas después de %s bloqueos en las últimas %s horas"
|
282 |
+
|
283 |
+
#: ../wp-cerber.php:189
|
284 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
285 |
+
msgstr "No puedes iniciar sesión. Pregunta al administrador para obtener ayuda."
|
286 |
+
|
287 |
+
#: ../wp-cerber.php:195
|
288 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
289 |
+
msgstr "Se ha alcanzado el límite de intentos de inicio de sesión. Por favor, inténtalo de nuevo dentro de %d minutos."
|
290 |
+
|
291 |
+
#: ../wp-cerber.php:213
|
292 |
+
msgid "You have only one attempt remaining."
|
293 |
+
msgid_plural "You have %d attempts remaining."
|
294 |
+
msgstr[0] "Queda solo un intento restante."
|
295 |
+
msgstr[1] "Quedan %d intentos restantes."
|
296 |
+
|
297 |
+
#: ../dashboard.php:410
|
298 |
+
msgid "Show only"
|
299 |
+
msgstr "Mostrar solo"
|
300 |
+
|
301 |
+
#: ../dashboard.php:442
|
302 |
+
msgid "No activity has been logged."
|
303 |
+
msgstr "No hay actividad registrada."
|
304 |
+
|
305 |
+
#: ../dashboard.php:77
|
306 |
+
msgid "Expires"
|
307 |
+
msgstr "Caduca"
|
308 |
+
|
309 |
+
#: ../dashboard.php:89
|
310 |
+
msgid "No lockouts at the moment. The sky is clear."
|
311 |
+
msgstr "No hay bloqueos en este momento. El cielo esta despejado."
|
312 |
+
|
313 |
+
#: ../dashboard.php:102
|
314 |
+
msgid "These IPs will never be locked out"
|
315 |
+
msgstr "Estas IPs nunca se bloquearán"
|
316 |
+
|
317 |
+
#: ../dashboard.php:106
|
318 |
+
msgid "Your IP"
|
319 |
+
msgstr "Tu IP"
|
320 |
+
|
321 |
+
#: ../dashboard.php:157
|
322 |
+
msgid "You can't add your IP address"
|
323 |
+
msgstr "No puedes añadir tu dirección IP"
|
324 |
+
|
325 |
+
#: ../wp-cerber.php:1926
|
326 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
327 |
+
msgstr "El último intento fallido fue el %s desde la IP %s con el nombre de usuario: %s."
|
328 |
+
|
329 |
+
#: ../wp-cerber.php:1986
|
330 |
+
msgid "Change notification settings"
|
331 |
+
msgstr "Cambiar ajuste de las notificaciones"
|
332 |
+
|
333 |
+
#: ../wp-cerber.php:2296
|
334 |
+
msgid "Can't activate WP Cerber due to a database error."
|
335 |
+
msgstr "No se puede activar WP Cerber debido a un error de base de datos."
|
336 |
+
|
337 |
+
#: ../settings.php:293
|
338 |
+
msgid "Notify admin if the number of active lockouts above"
|
339 |
+
msgstr "Notificar al administrador si el número de bloqueos activos es superior a"
|
340 |
+
|
341 |
+
#: ../common.php:251 ../settings.php:84
|
342 |
+
msgid "days"
|
343 |
+
msgstr "días"
|
344 |
+
|
345 |
+
#: ../dashboard.php:812
|
346 |
+
msgid "Cerber Quick View"
|
347 |
+
msgstr "Vista Rápida del Cerbero"
|
348 |
+
|
349 |
+
#: ../dashboard.php:85
|
350 |
+
msgid "Hint"
|
351 |
+
msgstr "Sugerencia"
|
352 |
+
|
353 |
+
#: ../dashboard.php:85
|
354 |
+
msgid "To view activity, click on the IP"
|
355 |
+
msgstr "Para ver la actividad, haz clic en la IP"
|
356 |
+
|
357 |
+
#: ../dashboard.php:123 ../dashboard.php:619
|
358 |
+
msgid "Check for activity"
|
359 |
+
msgstr "Comprobar actividad"
|
360 |
+
|
361 |
+
#: ../settings.php:63
|
362 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
363 |
+
msgstr "Bloquear siempre todas las subredes de clase C de IPs intrusas"
|
364 |
+
|
365 |
+
#: ../settings.php:76 ../settings.php:295
|
366 |
+
msgid "Click to send test"
|
367 |
+
msgstr "Pulsa para enviar una prueba"
|
368 |
+
|
369 |
+
#: ../settings.php:373
|
370 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
371 |
+
msgstr "¡Atención! ¡Has cambiado la dirección URL de conexión! La nueva URL de acceso es"
|
372 |
+
|
373 |
+
#: ../dashboard.php:760
|
374 |
+
msgid "Comments"
|
375 |
+
msgstr "Comentarios"
|
376 |
+
|
377 |
+
#: ../dashboard.php:763
|
378 |
+
msgid "Date of registration"
|
379 |
+
msgstr "Fecha de registro"
|
380 |
+
|
381 |
+
#: ../dashboard.php:252
|
382 |
+
msgid "Message has been sent to "
|
383 |
+
msgstr "El mensaje se ha enviado a "
|
384 |
+
|
385 |
+
#: ../dashboard.php:1154
|
386 |
+
msgid "Update to version %s of WP Cerber"
|
387 |
+
msgstr "Actualizar a la versión %s de WP Cerber"
|
388 |
+
|
389 |
+
#: ../wp-cerber.php:1927 ../wp-cerber.php:2233
|
390 |
+
msgid "View activity in dashboard"
|
391 |
+
msgstr "Ver actividad en el escritorio"
|
392 |
+
|
393 |
+
#: ../wp-cerber.php:1954
|
394 |
+
msgid "Number of active lockouts"
|
395 |
+
msgstr "Número de bloqueos activos"
|
396 |
+
|
397 |
+
#: ../wp-cerber.php:1958
|
398 |
+
msgid "View lockouts in dashboard"
|
399 |
+
msgstr "Ver los bloqueos en el escritorio"
|
400 |
+
|
401 |
+
#: ../wp-cerber.php:2011
|
402 |
+
msgid "This message was sent by"
|
403 |
+
msgstr "Este mensaje fue enviado por"
|
404 |
+
|
405 |
+
#: ../dashboard.php:670 ../cerber-tools.php:40
|
406 |
+
msgid "Tools"
|
407 |
+
msgstr "Herramientas"
|
408 |
+
|
409 |
+
#: ../cerber-tools.php:55
|
410 |
+
msgid "Export settings to the file"
|
411 |
+
msgstr "Exportar ajustes al archivo"
|
412 |
+
|
413 |
+
#: ../cerber-tools.php:56
|
414 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
415 |
+
msgstr "Al pulsar el botón de abajo obtendrás un archivo de configuración, que luego se puede cargar en otro sitio."
|
416 |
+
|
417 |
+
#: ../cerber-tools.php:57
|
418 |
+
msgid "What do you want to export?"
|
419 |
+
msgstr "¿Qué quieres exportar?"
|
420 |
+
|
421 |
+
#: ../cerber-tools.php:60
|
422 |
+
msgid "Download file"
|
423 |
+
msgstr "Descargar archivo"
|
424 |
+
|
425 |
+
#: ../cerber-tools.php:62
|
426 |
+
msgid "Import settings from the file"
|
427 |
+
msgstr "Importar ajustes desde el archivo"
|
428 |
+
|
429 |
+
#: ../cerber-tools.php:63
|
430 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
431 |
+
msgstr "Al pulsar el botón de abajo se cargará el archivo y se anularán todas las configuraciones existentes."
|
432 |
+
|
433 |
+
#: ../cerber-tools.php:64
|
434 |
+
msgid "Select file to import."
|
435 |
+
msgstr "Seleccionar archivo a importar."
|
436 |
+
|
437 |
+
#: ../cerber-tools.php:64
|
438 |
+
msgid "Maximum upload file size: %s."
|
439 |
+
msgstr "Tamaño máximo permitido: %s."
|
440 |
+
|
441 |
+
#: ../cerber-tools.php:67
|
442 |
+
msgid "What do you want to import?"
|
443 |
+
msgstr "¿Qué quieres importar?"
|
444 |
+
|
445 |
+
#: ../cerber-tools.php:69
|
446 |
+
msgid "Upload file"
|
447 |
+
msgstr "Cargar archivo"
|
448 |
+
|
449 |
+
#: ../cerber-tools.php:150
|
450 |
+
msgid "No file was uploaded or file is corrupted"
|
451 |
+
msgstr "Ningún archivo subido ni archivo dañado"
|
452 |
+
|
453 |
+
#: ../cerber-tools.php:180
|
454 |
+
msgid "Error while updating"
|
455 |
+
msgstr "Ha habido un error al actualizar"
|
456 |
+
|
457 |
+
#: ../cerber-tools.php:183
|
458 |
+
msgid "Settings has imported successfully from"
|
459 |
+
msgstr "La configuración se ha importado con éxito desde"
|
460 |
+
|
461 |
+
#: ../cerber-tools.php:187
|
462 |
+
msgid "Error while parsing file"
|
463 |
+
msgstr "Error al analizar el archivo"
|
464 |
+
|
465 |
+
#: ../dashboard.php:77 ../dashboard.php:429
|
466 |
+
msgid "Hostname"
|
467 |
+
msgstr "Host"
|
468 |
+
|
469 |
+
#: ../dashboard.php:232
|
470 |
+
msgid "unknown"
|
471 |
+
msgstr "desconocido"
|
472 |
+
|
473 |
+
#: ../settings.php:84
|
474 |
+
msgid "Keep records for"
|
475 |
+
msgstr "Mantener un registro de"
|
476 |
+
|
477 |
+
#: ../dashboard.php:844
|
478 |
+
msgid "active"
|
479 |
+
msgstr "activar"
|
480 |
+
|
481 |
+
#: ../dashboard.php:844
|
482 |
+
msgid "deactivate"
|
483 |
+
msgstr "desactivar"
|
484 |
+
|
485 |
+
#: ../dashboard.php:846
|
486 |
+
msgid "not active"
|
487 |
+
msgstr "no activo"
|
488 |
+
|
489 |
+
#: ../dashboard.php:847
|
490 |
+
msgid "disabled"
|
491 |
+
msgstr "desactivado"
|
492 |
+
|
493 |
+
#: ../dashboard.php:852
|
494 |
+
msgid "failed attempts"
|
495 |
+
msgstr "intentos fallidos"
|
496 |
+
|
497 |
+
#: ../dashboard.php:852 ../dashboard.php:853
|
498 |
+
msgid "in 24 hours"
|
499 |
+
msgstr "en 24 horas"
|
500 |
+
|
501 |
+
#: ../dashboard.php:852 ../dashboard.php:853
|
502 |
+
msgid "view all"
|
503 |
+
msgstr "ver todo"
|
504 |
+
|
505 |
+
#: ../dashboard.php:853
|
506 |
+
msgid "lockouts"
|
507 |
+
msgstr "bloqueos"
|
508 |
+
|
509 |
+
#: ../dashboard.php:855
|
510 |
+
msgid "Lockouts at the moment"
|
511 |
+
msgstr "Bloqueos en este momento"
|
512 |
+
|
513 |
+
#: ../dashboard.php:856
|
514 |
+
msgid "Last lockout"
|
515 |
+
msgstr "Último bloqueo"
|
516 |
+
|
517 |
+
#: ../dashboard.php:857 ../dashboard.php:858 ../dashboard.php:1258
|
518 |
+
msgid "entry"
|
519 |
+
msgid_plural "entries"
|
520 |
+
msgstr[0] "entrada"
|
521 |
+
msgstr[1] "entradas"
|
522 |
+
|
523 |
+
#: ../dashboard.php:1008
|
524 |
+
msgid "Confused about some settings?"
|
525 |
+
msgstr "¿Confundido acerca de algunos ajustes?"
|
526 |
+
|
527 |
+
#: ../dashboard.php:1009
|
528 |
+
msgid "You can easily load default recommended settings using button below"
|
529 |
+
msgstr "Se pueden cargar fácilmente los valores recomendados predeterminados usando el botón de abajo"
|
530 |
+
|
531 |
+
#: ../dashboard.php:1011
|
532 |
+
msgid "Load default settings"
|
533 |
+
msgstr "Cargar ajustes predeterminados"
|
534 |
+
|
535 |
+
#: ../dashboard.php:1019
|
536 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
537 |
+
msgstr "no afecta a la URL de acceso personalizada ni a las listas de acceso"
|
538 |
+
|
539 |
+
#: ../dashboard.php:1038
|
540 |
+
msgid "Donate"
|
541 |
+
msgstr "Donar"
|
542 |
+
|
543 |
+
#: ../dashboard.php:1148
|
544 |
+
msgid "New version is available"
|
545 |
+
msgstr "Nueva versión disponible"
|
546 |
+
|
547 |
+
#. Name of the plugin
|
548 |
+
#: ../dashboard.php:662 ../dashboard.php:665 ../dashboard.php:694
|
549 |
+
msgid "WP Cerber"
|
550 |
+
msgstr "WP Cerber"
|
551 |
+
|
552 |
+
#. URI of the plugin
|
553 |
+
msgid "http://wpcerber.com"
|
554 |
+
msgstr ""
|
555 |
+
|
556 |
+
#: ../wp-cerber.php:1904
|
557 |
+
msgid "WP Cerber notify"
|
558 |
+
msgstr "Notificación de WP Cerber"
|
559 |
+
|
560 |
+
#: ../wp-cerber.php:1923
|
561 |
+
msgid "Citadel mode is activated"
|
562 |
+
msgstr "El Modo Ciudadela está activado."
|
563 |
+
|
564 |
+
#: ../wp-cerber.php:1991
|
565 |
+
msgid "New Custom login URL"
|
566 |
+
msgstr "Nueva URL de acceso personalizada"
|
567 |
+
|
568 |
+
#: ../wp-cerber.php:2287
|
569 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
570 |
+
msgstr "WP Cerber requiere PHP %s o superior. Se está ejecutando actualmente"
|
571 |
+
|
572 |
+
#: ../wp-cerber.php:2291
|
573 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
574 |
+
msgstr "WP Cerber requiere WordPress %s o superior. Se está ejecutando actualmente"
|
575 |
+
|
576 |
+
#: ../settings.php:90
|
577 |
+
msgid "Use file"
|
578 |
+
msgstr "Usar archivo"
|
579 |
+
|
580 |
+
#: ../settings.php:90
|
581 |
+
msgid "Write failed login attempts to the file"
|
582 |
+
msgstr "Registrar los intentos de acceso fallidos en el archivo"
|
583 |
+
|
584 |
+
#: ../dashboard.php:762
|
585 |
+
msgid "Failed attempts in last 24 hours"
|
586 |
+
msgstr "Intentos fallidos en las últimas 24 horas"
|
587 |
+
|
588 |
+
#: ../dashboard.php:1091
|
589 |
+
msgid "Deactivate"
|
590 |
+
msgstr "Desactivar"
|
591 |
+
|
592 |
+
#: ../dashboard.php:77 ../wp-cerber.php:1956
|
593 |
+
msgid "Reason"
|
594 |
+
msgstr "Motivo"
|
595 |
+
|
596 |
+
#: ../dashboard.php:130
|
597 |
+
msgid "Add IP to the list"
|
598 |
+
msgstr "Añadir IP a la lista"
|
599 |
+
|
600 |
+
#: ../dashboard.php:637
|
601 |
+
msgid "Add IP to the Black List"
|
602 |
+
msgstr "Añadir IP a la lista negra"
|
603 |
+
|
604 |
+
#: ../common.php:187
|
605 |
+
msgid "Attempt to access"
|
606 |
+
msgstr "Intento de acceso"
|
607 |
+
|
608 |
+
#: ../common.php:186
|
609 |
+
msgid "Limit on login attempts is reached"
|
610 |
+
msgstr "Se han alcanzado todos los intentos de inicio de sesión"
|
611 |
+
|
612 |
+
#: ../common.php:176 ../common.php:188
|
613 |
+
msgid "Attempt to log in with non-existent username"
|
614 |
+
msgstr "Intento de acceso con nombre de usuario inexistente"
|
615 |
+
|
616 |
+
#: ../wp-cerber.php:1955
|
617 |
+
msgid "Last lockout was added: %s for IP %s"
|
618 |
+
msgstr "Último bloqueo añadido: %s para la IP %s"
|
619 |
+
|
620 |
+
#: ../wp-cerber.php:2315
|
621 |
+
msgid "It's important to check security settings."
|
622 |
+
msgstr "Es importante comprobar los ajustes de seguridad."
|
623 |
+
|
624 |
+
#: ../wp-cerber.php:2320 ../settings.php:202
|
625 |
+
msgid "Hardening"
|
626 |
+
msgstr "Endurecimiento"
|
627 |
+
|
628 |
+
#: ../dashboard.php:615
|
629 |
+
msgid "Abuse email:"
|
630 |
+
msgstr "Correo electrónico de abuso:"
|
631 |
+
|
632 |
+
#: ../settings.php:80
|
633 |
+
msgid "Email Address"
|
634 |
+
msgstr "Dirección de correo electrónico"
|
635 |
+
|
636 |
+
#: ../settings.php:80
|
637 |
+
msgid "if empty, the admin email %s will be used"
|
638 |
+
msgstr "Si está vacío, se utilizará el correo de administrador: %s"
|
639 |
+
|
640 |
+
#: ../settings.php:93
|
641 |
+
msgid "Drill down IP"
|
642 |
+
msgstr "Desglosar IP"
|
643 |
+
|
644 |
+
#: ../settings.php:93
|
645 |
+
msgid "Retrieve extra WHOIS information for IP"
|
646 |
+
msgstr "Recuperar información extra de WHOIS para la IP"
|
647 |
+
|
648 |
+
#: ../settings.php:101
|
649 |
+
msgid "Hardening WordPress"
|
650 |
+
msgstr "Protegiendo WordPress"
|
651 |
+
|
652 |
+
#: ../settings.php:102
|
653 |
+
msgid "Stop user enumeration"
|
654 |
+
msgstr "Impedir la enumeración de usuarios"
|
655 |
+
|
656 |
+
#: ../settings.php:102
|
657 |
+
msgid "Block access to the pages like /?author=n"
|
658 |
+
msgstr "Bloquear el acceso a las páginas como /?autor=n"
|
659 |
+
|
660 |
+
#: ../settings.php:103
|
661 |
+
msgid "Disable XML-RPC"
|
662 |
+
msgstr "Desactivar XML-RPC"
|
663 |
+
|
664 |
+
#: ../settings.php:103
|
665 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
666 |
+
msgstr "Bloquear el acceso al servidor XML-RPC (incluyendo pingbacks y trackbacks)"
|
667 |
+
|
668 |
+
#: ../settings.php:104
|
669 |
+
msgid "Disable feeds"
|
670 |
+
msgstr "Desactivar feeds"
|
671 |
+
|
672 |
+
#: ../settings.php:104
|
673 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
674 |
+
msgstr "Bloquear el acceso a los feeds RSS, Atom y RDF"
|
675 |
+
|
676 |
+
#: ../settings.php:105
|
677 |
+
msgid "Disable REST API"
|
678 |
+
msgstr "Desactivar la API REST"
|
679 |
+
|
680 |
+
#: ../settings.php:105
|
681 |
+
msgid "Block access to the WordPress REST API"
|
682 |
+
msgstr "Bloquear el acceso a la API REST de WordPress"
|
683 |
+
|
684 |
+
#: ../settings.php:157
|
685 |
+
msgid "These settings do not affect hosts from the "
|
686 |
+
msgstr "Estos ajustes no afectan a los hosts de "
|
687 |
+
|
688 |
+
#: ../settings.php:409
|
689 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
690 |
+
msgstr "<strong>ERROR</strong>: por favor, introduce una dirección de correo electrónico válida."
|
691 |
+
|
692 |
+
#: ../settings.php:618
|
693 |
+
msgid "Number of items per page:"
|
694 |
+
msgstr "Número de elementos por página:"
|
695 |
+
|
696 |
+
#: ../wp-cerber.php:1985 ../wp-cerber.php:2312
|
697 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
698 |
+
msgstr "WP Cerber está activo actualmente y está protegiendo tu web"
|
699 |
+
|
700 |
+
#: ../dashboard.php:77
|
701 |
+
msgid "Action"
|
702 |
+
msgstr "Acción"
|
703 |
+
|
704 |
+
#: ../dashboard.php:104
|
705 |
+
msgid "Nobody can log in or register from these IPs"
|
706 |
+
msgstr "Nadie puede acceder desde estas direcciones IP"
|
707 |
+
|
708 |
+
#: ../dashboard.php:145 ../dashboard.php:153
|
709 |
+
msgid "Incorrect IP address or IP range"
|
710 |
+
msgstr "Dirección o rango de IP incorrecta"
|
711 |
+
|
712 |
+
#: ../dashboard.php:254
|
713 |
+
msgid "Unable to send notification email"
|
714 |
+
msgstr "No se ha podido enviar el correo de notificación"
|
715 |
+
|
716 |
+
#: ../dashboard.php:276 ../dashboard.php:1107
|
717 |
+
msgid "Settings saved"
|
718 |
+
msgstr "Ajustes guardados."
|
719 |
+
|
720 |
+
#: ../dashboard.php:619
|
721 |
+
msgid "Network:"
|
722 |
+
msgstr "Red:"
|
723 |
+
|
724 |
+
#: ../dashboard.php:633
|
725 |
+
msgid "Add network to the Black List"
|
726 |
+
msgstr "Añadir red a la Lista Negra"
|
727 |
+
|
728 |
+
#: ../dashboard.php:468
|
729 |
+
msgid "Cerber Security"
|
730 |
+
msgstr "Seguridad WP Cerber"
|
731 |
+
|
732 |
+
#: ../dashboard.php:1090
|
733 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
734 |
+
msgstr "¡Atención! El Modo Ciudadela está activo. Nadie puede iniciar sesión."
|
735 |
+
|
736 |
+
#: ../whois.php:211
|
737 |
+
msgid "Unknown"
|
738 |
+
msgstr "Desconocido"
|
739 |
+
|
740 |
+
#. Description of the plugin
|
741 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
742 |
+
msgstr "Proteger de ataques de fuerza bruta. Control integral de la actividad del usuario. Restringir la entrada de las listas de acceso IP. Limitar los intentos de inicio de sesión. No dude en ponerse en contacto a través de desarrollador wpcerber@gmail.com o en el sitio <a href=\\\"http://wpcerber.com\\\">wpcerber.com</a> ."
|
743 |
+
|
744 |
+
#. Author of the plugin
|
745 |
+
msgid "Gregory"
|
746 |
+
msgstr ""
|
747 |
+
|
748 |
+
#: ../wp-cerber.php:595 ../wp-cerber.php:727 ../wp-cerber.php:734 ../wp-cerber.
|
749 |
+
#: php:758 ../settings.php:447
|
750 |
+
msgid "ERROR:"
|
751 |
+
msgstr "ERROR:"
|
752 |
+
|
753 |
+
#: ../wp-cerber.php:489
|
754 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
755 |
+
msgstr "La verificación humana ha fallado. Por favor, pulsa en la casilla cuadrada del siguiente bloque reCAPTCHA."
|
756 |
+
|
757 |
+
#: ../wp-cerber.php:606
|
758 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
759 |
+
msgstr "<strong>ERROR</strong>: La contraseña introducida para el nombre de usuario %s es incorrecta."
|
760 |
+
|
761 |
+
#: ../wp-cerber.php:735
|
762 |
+
msgid "Username is not allowed. Please choose another one."
|
763 |
+
msgstr "Nombre de usuario no permitido. Por favor, elige otro."
|
764 |
+
|
765 |
+
#: ../wp-cerber.php:1949
|
766 |
+
msgid "unspecified"
|
767 |
+
msgstr "no especificado"
|
768 |
+
|
769 |
+
#: ../wp-cerber.php:1952
|
770 |
+
msgid "Number of lockouts is increasing"
|
771 |
+
msgstr "El número de bloqueos está aumentando"
|
772 |
+
|
773 |
+
#: ../wp-cerber.php:1957
|
774 |
+
msgid "View activity for this IP"
|
775 |
+
msgstr "Ver actividad de esta IP"
|
776 |
+
|
777 |
+
#: ../wp-cerber.php:1961 ../wp-cerber.php:1963
|
778 |
+
msgid "A new version of WP Cerber is available to install"
|
779 |
+
msgstr "Una nueva versión de WP Cerber está disponible"
|
780 |
+
|
781 |
+
#: ../wp-cerber.php:1962
|
782 |
+
msgid "Hi!"
|
783 |
+
msgstr "¡Hola!"
|
784 |
+
|
785 |
+
#: ../wp-cerber.php:1964 ../wp-cerber.php:1975
|
786 |
+
msgid "Website"
|
787 |
+
msgstr "Web"
|
788 |
+
|
789 |
+
#: ../wp-cerber.php:1967 ../wp-cerber.php:1968
|
790 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
791 |
+
msgstr "El plugin WP Cerber se ha desactivado"
|
792 |
+
|
793 |
+
#: ../wp-cerber.php:1970
|
794 |
+
msgid "Not logged in"
|
795 |
+
msgstr "No conectado"
|
796 |
+
|
797 |
+
#: ../wp-cerber.php:1976
|
798 |
+
msgid "By user"
|
799 |
+
msgstr "Por usuario"
|
800 |
+
|
801 |
+
#: ../wp-cerber.php:1977
|
802 |
+
msgid "From IP address"
|
803 |
+
msgstr "De la dirección IP"
|
804 |
+
|
805 |
+
#: ../wp-cerber.php:1980
|
806 |
+
msgid "From country"
|
807 |
+
msgstr "Del país"
|
808 |
+
|
809 |
+
#: ../wp-cerber.php:1984
|
810 |
+
msgid "The WP Cerber security plugin is now active"
|
811 |
+
msgstr "El plugin WP Cerber se ha activado"
|
812 |
+
|
813 |
+
#: ../wp-cerber.php:2313
|
814 |
+
msgid "Your IP address is added to the"
|
815 |
+
msgstr "Tu dirección IP se ha añadido a la"
|
816 |
+
|
817 |
+
#: ../dashboard.php:669 ../wp-cerber.php:2321
|
818 |
+
msgid "reCAPTCHA"
|
819 |
+
msgstr "reCAPTCHA"
|
820 |
+
|
821 |
+
#: ../wp-cerber.php:2322
|
822 |
+
msgid "Import settings"
|
823 |
+
msgstr "Importar ajustes"
|
824 |
+
|
825 |
+
#: ../settings.php:81
|
826 |
+
msgid "Notification limit"
|
827 |
+
msgstr "Límite de notificaciones"
|
828 |
+
|
829 |
+
#: ../settings.php:81
|
830 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
831 |
+
msgstr "notificaciones permitidas por hora (0 significa ilimitadas)"
|
832 |
+
|
833 |
+
#: ../settings.php:113
|
834 |
+
msgid "User related settings"
|
835 |
+
msgstr "Ajustes de usuario"
|
836 |
+
|
837 |
+
#: ../settings.php:114
|
838 |
+
msgid "Prohibited usernames"
|
839 |
+
msgstr "Nombres de usuario prohibidos"
|
840 |
+
|
841 |
+
#: ../settings.php:114
|
842 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
843 |
+
msgstr "Los nombres de usuario de esta lista no pueden iniciar una sesión o registrarse. Toda dirección IP que intente usar cualquiera de estos nombres de usuario será bloqueada inmediatamente. Usa comas para separar los nombres de usuario."
|
844 |
+
|
845 |
+
#: ../settings.php:115
|
846 |
+
msgid "User session expire"
|
847 |
+
msgstr "Las sesiones de usuario caducan"
|
848 |
+
|
849 |
+
#: ../settings.php:115
|
850 |
+
msgid "in minutes (leave empty to use default WP value)"
|
851 |
+
msgstr "en minutos (dejar vacío para usar el valor de WP predeterminado)"
|
852 |
+
|
853 |
+
#: ../cerber-tools.php:197
|
854 |
+
msgid "reCAPTCHA settings"
|
855 |
+
msgstr "Ajustes de reCAPTCHA"
|
856 |
+
|
857 |
+
#: ../settings.php:120
|
858 |
+
msgid "Site key"
|
859 |
+
msgstr "Clave del sitio"
|
860 |
+
|
861 |
+
#: ../settings.php:121
|
862 |
+
msgid "Secret key"
|
863 |
+
msgstr "Clave secreta"
|
864 |
+
|
865 |
+
#: ../settings.php:123
|
866 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
867 |
+
msgstr "Habilitar reCAPTCHA para el formulario de registro de WordPress"
|
868 |
+
|
869 |
+
#: ../settings.php:126
|
870 |
+
msgid "Lost password form"
|
871 |
+
msgstr "Formulario de contraseña perdida"
|
872 |
+
|
873 |
+
#: ../settings.php:129
|
874 |
+
msgid "Login form"
|
875 |
+
msgstr "Formulario de inicio de sesión"
|
876 |
+
|
877 |
+
#: ../settings.php:129
|
878 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
879 |
+
msgstr "Habilitar reCAPTCHA para el formulario de acceso WordPress"
|
880 |
+
|
881 |
+
#: ../settings.php:150
|
882 |
+
msgid "In Citadel mode nobody is able to login. Active user's sessions will not be affected."
|
883 |
+
msgstr "En el Modo Ciudadela nadie puede iniciar una sesión. Las sesiones de usuario activas no se verán afectadas."
|
884 |
+
|
885 |
+
#: ../settings.php:162
|
886 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
887 |
+
msgstr "Para poder usar reCAPTCHA, antes tienes que obtener una clave de sitio y una clave secreta en la web de Google"
|
888 |
+
|
889 |
+
#: ../cerber-lab.php:416 ../settings.php:163
|
890 |
+
msgid "Know more"
|
891 |
+
msgstr "Más información"
|
892 |
+
|
893 |
+
#: ../dashboard.php:665 ../settings.php:183
|
894 |
+
msgid "WP Cerber Security"
|
895 |
+
msgstr "Seguridad WP Cerber"
|
896 |
+
|
897 |
+
#: ../settings.php:204
|
898 |
+
msgid "Users"
|
899 |
+
msgstr "Usuarios"
|
900 |
+
|
901 |
+
#: ../common.php:153
|
902 |
+
msgid "User created"
|
903 |
+
msgstr "Usuario creado"
|
904 |
+
|
905 |
+
#: ../common.php:154
|
906 |
+
msgid "User registered"
|
907 |
+
msgstr "Usuario registrado"
|
908 |
+
|
909 |
+
#: ../common.php:171
|
910 |
+
msgid "reCAPTCHA verification failed"
|
911 |
+
msgstr "Fallo de verificación reCAPTCHA"
|
912 |
+
|
913 |
+
#: ../common.php:172
|
914 |
+
msgid "reCAPTCHA settings are incorrect"
|
915 |
+
msgstr "Los ajustes reCAPTCHA son incorrectos"
|
916 |
+
|
917 |
+
#: ../common.php:175
|
918 |
+
msgid "Attempt to access prohibited URL"
|
919 |
+
msgstr "Intento de acceso a URL prohibida"
|
920 |
+
|
921 |
+
#: ../common.php:177 ../common.php:189
|
922 |
+
msgid "Attempt to log in with prohibited username"
|
923 |
+
msgstr "Intento de acceso con nombre de usuario prohibido"
|
924 |
+
|
925 |
+
#: ../common.php:241
|
926 |
+
msgid "year"
|
927 |
+
msgstr "año"
|
928 |
+
|
929 |
+
#: ../common.php:242
|
930 |
+
msgid "month"
|
931 |
+
msgstr "mes"
|
932 |
+
|
933 |
+
#: ../common.php:243
|
934 |
+
msgid "day"
|
935 |
+
msgstr "día"
|
936 |
+
|
937 |
+
#: ../common.php:244
|
938 |
+
msgid "hour"
|
939 |
+
msgstr "hora"
|
940 |
+
|
941 |
+
#: ../common.php:245
|
942 |
+
msgid "minute"
|
943 |
+
msgstr "minuto"
|
944 |
+
|
945 |
+
#: ../common.php:246
|
946 |
+
msgid "second"
|
947 |
+
msgstr "segundo"
|
948 |
+
|
949 |
+
#: ../common.php:249
|
950 |
+
msgid "years"
|
951 |
+
msgstr "años"
|
952 |
+
|
953 |
+
#: ../common.php:250
|
954 |
+
msgid "months"
|
955 |
+
msgstr "meses"
|
956 |
+
|
957 |
+
#: ../common.php:252
|
958 |
+
msgid "hours"
|
959 |
+
msgstr "horas"
|
960 |
+
|
961 |
+
#: ../common.php:254
|
962 |
+
msgid "seconds"
|
963 |
+
msgstr "segundos"
|
964 |
+
|
965 |
+
#: ../common.php:260
|
966 |
+
msgid "ago"
|
967 |
+
msgstr "hace"
|
968 |
+
|
969 |
+
#: ../settings.php:88
|
970 |
+
msgid "Cerber Lab connection"
|
971 |
+
msgstr "Conexión WP Cerber"
|
972 |
+
|
973 |
+
#: ../settings.php:88
|
974 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
975 |
+
msgstr "Enviar direcciones IP maliciosas al Laboratorio de Cerber"
|
976 |
+
|
977 |
+
#: ../settings.php:89
|
978 |
+
msgid "Cerber Lab protocol"
|
979 |
+
msgstr "Protocolo WP Cerber"
|
980 |
+
|
981 |
+
#: ../settings.php:126
|
982 |
+
msgid "Invisible reCAPTCHA"
|
983 |
+
msgstr "ReCAPTCHA invisible"
|
984 |
+
|
985 |
+
#: ../settings.php:126
|
986 |
+
msgid "Enable invisible reCAPTCHA"
|
987 |
+
msgstr "Habilitar reCAPTCHA invisible"
|
988 |
+
|
989 |
+
#: ../settings.php:126
|
990 |
+
msgid "(don't enable it unless you get and enter the Site and Secret keys for the invisible version)"
|
991 |
+
msgstr "(no activarlo a menos que se hayan introducido las claves secretas de Google para la versión invisible)"
|
992 |
+
|
993 |
+
#: ../settings.php:123
|
994 |
+
msgid "Registration form"
|
995 |
+
msgstr "Formulario de registro"
|
996 |
+
|
997 |
+
#: ../settings.php:124
|
998 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
999 |
+
msgstr "Habilitar reCAPTCHA para el formulario de registro WooCommerce"
|
1000 |
+
|
1001 |
+
#: ../settings.php:126
|
1002 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
1003 |
+
msgstr "Habilitar reCAPTCHA para formulario WordPress de contraseña perdida"
|
1004 |
+
|
1005 |
+
#: ../settings.php:127
|
1006 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
1007 |
+
msgstr "Habilitar reCAPTCHA para formulario WooCommerce de contraseña perdida"
|
1008 |
+
|
1009 |
+
#: ../settings.php:130
|
1010 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
1011 |
+
msgstr "Habilitar reCAPTCHA para el formulario de acceso WooCommerce"
|
1012 |
+
|
1013 |
+
#: ../common.php:173
|
1014 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
1015 |
+
msgstr "Error solicitando el servicio reCAPTCHA de Google"
|
1016 |
+
|
1017 |
+
#: ../dashboard.php:970 ../dashboard.php:985
|
1018 |
+
msgid "View all"
|
1019 |
+
msgstr "Ver todo"
|
1020 |
+
|
1021 |
+
#: ../dashboard.php:986
|
1022 |
+
msgid "Recently locked out IP addresses"
|
1023 |
+
msgstr "Direcciones IP recientemente bloqueadas"
|
1024 |
+
|
1025 |
+
#: ../cerber-lab.php:414
|
1026 |
+
msgid "OK, nail them all"
|
1027 |
+
msgstr "OK, clavarlas todas"
|
1028 |
+
|
1029 |
+
#: ../cerber-lab.php:415
|
1030 |
+
msgid "NO, maybe later"
|
1031 |
+
msgstr "NO, tal vez más tarde"
|
1032 |
+
|
1033 |
+
#: ../dashboard.php:667 ../settings.php:190
|
1034 |
+
msgid "Dashboard"
|
1035 |
+
msgstr "Escritorio"
|
1036 |
+
|
1037 |
+
#: ../cerber-lab.php:412
|
1038 |
+
msgid "Want to make WP Cerber even more powerful?"
|
1039 |
+
msgstr "¿Quieres hacer WP Cerber aun más potente?"
|
1040 |
+
|
1041 |
+
#: ../cerber-lab.php:413
|
1042 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
1043 |
+
msgstr "Dejar a WP Cerber enviar direcciones IP maliciosas bloqueadas al laboratorio Cerber. Esto ayuda a que el equipo de plugin para el desarrollo de nuevos algoritmos para WP Cerber y defender a WordPress contra las nuevas amenazas y botnets que están apareciendo todos los días. Puede desactivar el envío de la configuración del plugin en cualquier momento."
|
1044 |
+
|
1045 |
+
#: ../dashboard.php:330
|
1046 |
+
msgid "IP address"
|
1047 |
+
msgstr "Dirección IP"
|
1048 |
+
|
1049 |
+
#: ../dashboard.php:330
|
1050 |
+
msgid "User login"
|
1051 |
+
msgstr "Acceso de Usuario"
|
1052 |
+
|
1053 |
+
#: ../dashboard.php:330
|
1054 |
+
msgid "User ID"
|
1055 |
+
msgstr "ID de usuario"
|
1056 |
+
|
1057 |
+
#: ../dashboard.php:438
|
1058 |
+
msgid "Export"
|
1059 |
+
msgstr "Exportar"
|
1060 |
+
|
1061 |
+
#: ../dashboard.php:447
|
1062 |
+
msgid "All activities"
|
1063 |
+
msgstr "Todas las actividades"
|
1064 |
+
|
1065 |
+
#: ../dashboard.php:454
|
1066 |
+
msgid "Search for IP or username"
|
1067 |
+
msgstr "Búsqueda de IP o nombre de usuario"
|
1068 |
+
|
1069 |
+
#: ../dashboard.php:454
|
1070 |
+
msgid "Filter"
|
1071 |
+
msgstr "Filtrar"
|
1072 |
+
|
1073 |
+
#: ../dashboard.php:667
|
1074 |
+
msgid "Cerber Dashboard"
|
1075 |
+
msgstr "Panel de Control"
|
1076 |
+
|
1077 |
+
#: ../dashboard.php:669
|
1078 |
+
msgid "Cerber reCAPTCHA settings"
|
1079 |
+
msgstr "Ajustes de reCaptcha"
|
1080 |
+
|
1081 |
+
#: ../dashboard.php:670
|
1082 |
+
msgid "Cerber tools"
|
1083 |
+
msgstr "Herramientas Cerber"
|
1084 |
+
|
1085 |
+
#: ../dashboard.php:1193
|
1086 |
+
msgid "Subscribe"
|
1087 |
+
msgstr "Suscribirse"
|
1088 |
+
|
1089 |
+
#: ../dashboard.php:1194
|
1090 |
+
msgid "Unsubscribe"
|
1091 |
+
msgstr "Cancelar Subscripción"
|
1092 |
+
|
1093 |
+
#: ../dashboard.php:1222
|
1094 |
+
msgid "You've subscribed"
|
1095 |
+
msgstr "Te has suscrito"
|
1096 |
+
|
1097 |
+
#: ../dashboard.php:1225
|
1098 |
+
msgid "You've unsubscribed"
|
1099 |
+
msgstr "Has cancelado tu suscripción"
|
1100 |
+
|
1101 |
+
#: ../wp-cerber.php:1995 ../wp-cerber.php:1996
|
1102 |
+
msgid "A new activity has been recorded"
|
1103 |
+
msgstr "Una nueva actividad ha sido registrada"
|
1104 |
+
|
1105 |
+
#: ../wp-cerber.php:2213
|
1106 |
+
msgid "User"
|
1107 |
+
msgstr "Usuario"
|
1108 |
+
|
1109 |
+
#: ../wp-cerber.php:2221
|
1110 |
+
msgid "Search string"
|
1111 |
+
msgstr "Cadena de búsqueda"
|
1112 |
+
|
1113 |
+
#: ../wp-cerber.php:2234
|
1114 |
+
msgid "To unsubscribe click here"
|
1115 |
+
msgstr "Para anular la suscripción, pulsar aquí"
|
1116 |
+
|
1117 |
+
#: ../settings.php:92
|
1118 |
+
msgid "Preferences"
|
1119 |
+
msgstr "Preferencias"
|
1120 |
+
|
1121 |
+
#: ../settings.php:94
|
1122 |
+
msgid "Date format"
|
1123 |
+
msgstr "Formato de fecha"
|
1124 |
+
|
1125 |
+
#: ../settings.php:94
|
1126 |
+
msgid "if empty, the default format %s will be used"
|
1127 |
+
msgstr "Si está vacío, se utilizará el formato por defecto %s"
|
1128 |
+
|
1129 |
+
#: ../dashboard.php:856 ../settings.php:147
|
1130 |
+
msgid "Push notifications"
|
1131 |
+
msgstr "Notificaciones"
|
1132 |
+
|
1133 |
+
#: ../settings.php:71
|
1134 |
+
msgid "Display 404 page"
|
1135 |
+
msgstr "Mostrar página error 404"
|
1136 |
+
|
1137 |
+
#: ../settings.php:138
|
1138 |
+
msgid "Disable reCAPTCHA for logged in users"
|
1139 |
+
msgstr "Desactiva la verificación reCaptcha para usuarios conectados"
|
1140 |
+
|
1141 |
+
#: ../settings.php:137
|
1142 |
+
msgid "Comment form"
|
1143 |
+
msgstr "Formulario de comentarios"
|
1144 |
+
|
1145 |
+
#: ../settings.php:144
|
1146 |
+
msgid "Email notifications"
|
1147 |
+
msgstr "Notificaciones por correo"
|
1148 |
+
|
1149 |
+
#: ../settings.php:178
|
1150 |
+
msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
|
1151 |
+
msgstr "En modo Ciudadela, nadie puede iniciar sesión con excepción de las IPs de la lista de acceso de IPs blancas. Las sesiones de usuario activas no se verán afectadas."
|
1152 |
+
|
1153 |
+
#: ../settings.php:61
|
1154 |
+
msgid "Apply limit login rules to IP addresses in the White IP Access List"
|
1155 |
+
msgstr "Aplicar reglas de inicio de sesión limitadas a las direcciones IPs en la lista de acceso de IPs blancas"
|
1156 |
+
|
1157 |
+
#: ../settings.php:135
|
1158 |
+
#, php-format
|
1159 |
+
msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
|
1160 |
+
msgstr "Bloquear dirección IP durante %s minutos después de %s intentos fallidos dentro de %s minutos"
|
1161 |
+
|
1162 |
+
#: ../settings.php:135
|
1163 |
+
msgid "Limit attempts"
|
1164 |
+
msgstr "Límite de intentos"
|
1165 |
+
|
1166 |
+
#: ../settings.php:132
|
1167 |
+
msgid "Enable reCAPTCHA for WordPress comment form"
|
1168 |
+
msgstr "Habilitar reCAPTCHA para el formulario de comentarios de WordPress"
|
1169 |
+
|
1170 |
+
#: ../dashboard.php:1032
|
1171 |
+
msgid "Malicious activities mitigated"
|
1172 |
+
msgstr "Actividades mitigadas"
|
1173 |
+
|
1174 |
+
#: ../dashboard.php:1034
|
1175 |
+
msgid "Malicious IP addresses detected"
|
1176 |
+
msgstr "Direcciones IP maliciosas detectadas"
|
1177 |
+
|
1178 |
+
#: ../dashboard.php:1035
|
1179 |
+
msgid "Lockouts occurred"
|
1180 |
+
msgstr "Bloqueos realizados"
|
1181 |
+
|
1182 |
+
#: ../dashboard.php:1036
|
1183 |
+
msgid "Locked out IP now"
|
1184 |
+
msgstr "IPs bloqueadas ahora"
|
1185 |
+
|
1186 |
+
#: ../dashboard.php:1060
|
1187 |
+
msgid "All suspicious activity"
|
1188 |
+
msgstr "Todas las actividades sospechosas"
|
1189 |
+
|
1190 |
+
#: ../common.php:304
|
1191 |
+
msgid "Password reset requested"
|
1192 |
+
msgstr "Reajuste de contraseña solicitado"
|
1193 |
+
|
1194 |
+
#: ../dashboard.php:1033
|
1195 |
+
msgid "Spam comments denied"
|
1196 |
+
msgstr "Comentarios spam denegados"
|
1197 |
+
|
1198 |
+
#: ../dashboard.php:1033
|
1199 |
+
msgid "Spam comment denied"
|
1200 |
+
msgstr "Comentario spam denegado"
|
1201 |
+
|
1202 |
+
#: ../common.php:314
|
1203 |
+
msgid "Attempt to log in denied"
|
1204 |
+
msgstr "Intento de iniciar sesión denegado"
|
1205 |
+
|
1206 |
+
#: ../common.php:315
|
1207 |
+
msgid "Attempt to register denied"
|
1208 |
+
msgstr "Intento de registro denegado"
|
1209 |
+
|
1210 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
1211 |
+
msgid "Event"
|
1212 |
+
msgstr "Evento"
|
languages/wp-cerber-fr_FR.mo
ADDED
Binary file
|
languages/wp-cerber-fr_FR.po
ADDED
@@ -0,0 +1,1130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: WP Cerber\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2017-01-19 14:39+0100\n"
|
6 |
+
"PO-Revision-Date: \n"
|
7 |
+
"Last-Translator: \n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"Language: fr\n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Generator: Poedit 1.8.8\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
15 |
+
|
16 |
+
#: ../dashboard.php:72 ../dashboard.php:122
|
17 |
+
msgid "Remove"
|
18 |
+
msgstr "Supprimer"
|
19 |
+
|
20 |
+
#: ../dashboard.php:75 ../dashboard.php:386
|
21 |
+
msgid "IP"
|
22 |
+
msgstr "IP"
|
23 |
+
|
24 |
+
#: ../dashboard.php:75 ../dashboard.php:386
|
25 |
+
msgid "Hostname"
|
26 |
+
msgstr "Hôte"
|
27 |
+
|
28 |
+
#: ../dashboard.php:75
|
29 |
+
msgid "Expires"
|
30 |
+
msgstr "Expire le"
|
31 |
+
|
32 |
+
#: ../dashboard.php:75 ../wp-cerber.php:1927
|
33 |
+
msgid "Reason"
|
34 |
+
msgstr "Raison"
|
35 |
+
|
36 |
+
#: ../dashboard.php:75
|
37 |
+
msgid "Action"
|
38 |
+
msgstr "Action"
|
39 |
+
|
40 |
+
#: ../dashboard.php:81
|
41 |
+
#, php-format
|
42 |
+
msgid "Showing last %d records from %d"
|
43 |
+
msgstr "Affichage de %d derniers enregistrements sur %d"
|
44 |
+
|
45 |
+
#: ../dashboard.php:83
|
46 |
+
msgid "Hint"
|
47 |
+
msgstr "Astuce"
|
48 |
+
|
49 |
+
#: ../dashboard.php:83
|
50 |
+
msgid "To view activity, click on the IP"
|
51 |
+
msgstr "Pour voir l’activité relative à cette IP, cliquez sur l’IP"
|
52 |
+
|
53 |
+
#: ../dashboard.php:87
|
54 |
+
msgid "No lockouts at the moment. The sky is clear."
|
55 |
+
msgstr ""
|
56 |
+
"Pas de blocage pour le moment. Tout va bien dans le meilleur des mondes."
|
57 |
+
|
58 |
+
#: ../dashboard.php:100 ../dashboard.php:370 ../dashboard.php:434 ../dashboard.
|
59 |
+
#: php:838 ../wp-cerber.php:2182 ../settings.php:153
|
60 |
+
msgid "White IP Access List"
|
61 |
+
msgstr "Liste blanche (IP White List)"
|
62 |
+
|
63 |
+
#: ../dashboard.php:100
|
64 |
+
msgid "These IPs will never be locked out"
|
65 |
+
msgstr "Ces adresses IP ne seront jamais bloquées"
|
66 |
+
|
67 |
+
#: ../dashboard.php:102 ../dashboard.php:371 ../dashboard.php:436 ../dashboard.
|
68 |
+
#: php:839
|
69 |
+
msgid "Black IP Access List"
|
70 |
+
msgstr "Liste Noire (IP Black List)"
|
71 |
+
|
72 |
+
#: ../dashboard.php:102
|
73 |
+
msgid "Nobody can log in or register from these IPs"
|
74 |
+
msgstr "Personne ne peut se connecter à partir de ces IPs"
|
75 |
+
|
76 |
+
#: ../dashboard.php:104
|
77 |
+
msgid "Your IP"
|
78 |
+
msgstr "Votre IP"
|
79 |
+
|
80 |
+
#: ../dashboard.php:122 ../dashboard.php:466
|
81 |
+
msgid "Check for activity"
|
82 |
+
msgstr "Voir l’activité"
|
83 |
+
|
84 |
+
#: ../dashboard.php:125
|
85 |
+
msgid "List is empty"
|
86 |
+
msgstr "La liste est vide"
|
87 |
+
|
88 |
+
#: ../dashboard.php:129
|
89 |
+
msgid "Add IP to the list"
|
90 |
+
msgstr "Ajouter l’IP à la liste"
|
91 |
+
|
92 |
+
#: ../dashboard.php:144 ../dashboard.php:152
|
93 |
+
msgid "Incorrect IP address or IP range"
|
94 |
+
msgstr "IP ou plage d’IP incorrecte"
|
95 |
+
|
96 |
+
#: ../dashboard.php:147
|
97 |
+
#, php-format
|
98 |
+
msgid "Address %s was added to White IP Access List"
|
99 |
+
msgstr "L’adresse %s a été ajoutée à la Liste Blanche"
|
100 |
+
|
101 |
+
#: ../dashboard.php:156
|
102 |
+
msgid "You can't add your IP address"
|
103 |
+
msgstr "Vous ne pouvez pas ajouter votre adresse IP"
|
104 |
+
|
105 |
+
#: ../dashboard.php:160
|
106 |
+
#, php-format
|
107 |
+
msgid "Address %s was added to Black IP Access List"
|
108 |
+
msgstr "L’adresse %s a été ajoutée à la Liste Noire"
|
109 |
+
|
110 |
+
#: ../dashboard.php:227
|
111 |
+
msgid "unknown"
|
112 |
+
msgstr "inconnu"
|
113 |
+
|
114 |
+
#: ../dashboard.php:246
|
115 |
+
msgid "Message has been sent to "
|
116 |
+
msgstr "Le message à été envoyé à "
|
117 |
+
|
118 |
+
#: ../dashboard.php:248
|
119 |
+
msgid "Unable to send notification email"
|
120 |
+
msgstr "L’envoi de l’email de notification n’a pas pu être effectué"
|
121 |
+
|
122 |
+
#: ../dashboard.php:254
|
123 |
+
#, php-format
|
124 |
+
msgid "Lockout for %s was removed"
|
125 |
+
msgstr "Le blocage de %s a été levé"
|
126 |
+
|
127 |
+
#: ../dashboard.php:261 ../dashboard.php:1082
|
128 |
+
msgid "Settings saved"
|
129 |
+
msgstr "Paramètres sauvegardés"
|
130 |
+
|
131 |
+
#: ../dashboard.php:375 ../dashboard.php:439 ../common.php:141
|
132 |
+
msgid "Locked out"
|
133 |
+
msgstr "Bloqué"
|
134 |
+
|
135 |
+
#: ../dashboard.php:386
|
136 |
+
msgid "Date"
|
137 |
+
msgstr "Date"
|
138 |
+
|
139 |
+
#: ../dashboard.php:386 ../dashboard.php:844 ../dashboard.php:952
|
140 |
+
#: ../settings.php:85 ../settings.php:188
|
141 |
+
msgid "Activity"
|
142 |
+
msgstr "Activité"
|
143 |
+
|
144 |
+
#: ../dashboard.php:386
|
145 |
+
msgid "Local User"
|
146 |
+
msgstr "Utilisateur local"
|
147 |
+
|
148 |
+
#: ../dashboard.php:386
|
149 |
+
msgid "Username used"
|
150 |
+
msgstr "Identifiant utilisé"
|
151 |
+
|
152 |
+
#: ../dashboard.php:396
|
153 |
+
msgid "No activity has been logged."
|
154 |
+
msgstr "Aucune activité n’a été notée"
|
155 |
+
|
156 |
+
#: ../dashboard.php:410
|
157 |
+
msgid "Show only"
|
158 |
+
msgstr "N’afficher que"
|
159 |
+
|
160 |
+
#: ../dashboard.php:462
|
161 |
+
msgid "Abuse email:"
|
162 |
+
msgstr ""
|
163 |
+
|
164 |
+
#: ../dashboard.php:466
|
165 |
+
msgid "Network:"
|
166 |
+
msgstr "Réseau :"
|
167 |
+
|
168 |
+
#: ../dashboard.php:480
|
169 |
+
msgid "Add network to the Black List"
|
170 |
+
msgstr "Ajouter un réseau à la liste noire"
|
171 |
+
|
172 |
+
#: ../dashboard.php:484
|
173 |
+
msgid "Add IP to the Black List"
|
174 |
+
msgstr "Ajouter l’IP à la liste noire"
|
175 |
+
|
176 |
+
#: ../dashboard.php:509 ../dashboard.php:516
|
177 |
+
msgid "WP Cerber Settings"
|
178 |
+
msgstr "Préférences WP Cerber"
|
179 |
+
|
180 |
+
#. Name of the plugin
|
181 |
+
#: ../dashboard.php:509 ../dashboard.php:511 ../dashboard.php:516 ../dashboard.
|
182 |
+
#: php:540
|
183 |
+
msgid "WP Cerber"
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: ../dashboard.php:511 ../settings.php:179
|
187 |
+
msgid "WP Cerber Security"
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: ../dashboard.php:605
|
191 |
+
msgid "Comments"
|
192 |
+
msgstr "Commentaires"
|
193 |
+
|
194 |
+
#: ../dashboard.php:606
|
195 |
+
msgid "Last login"
|
196 |
+
msgstr "Dernière connexion"
|
197 |
+
|
198 |
+
#: ../dashboard.php:607
|
199 |
+
msgid "Failed attempts in last 24 hours"
|
200 |
+
msgstr "Connexions echouees des dernieres 24h"
|
201 |
+
|
202 |
+
#: ../dashboard.php:608
|
203 |
+
msgid "Date of registration"
|
204 |
+
msgstr "Date d’inscription"
|
205 |
+
|
206 |
+
#: ../dashboard.php:633 ../dashboard.php:821
|
207 |
+
msgid "Never"
|
208 |
+
msgstr "Jamais"
|
209 |
+
|
210 |
+
#: ../dashboard.php:654
|
211 |
+
msgid "Export settings to the file"
|
212 |
+
msgstr "Exporter les préférences"
|
213 |
+
|
214 |
+
#: ../dashboard.php:655
|
215 |
+
msgid ""
|
216 |
+
"When you click the button below you will get a configuration file, which you "
|
217 |
+
"can upload on another site."
|
218 |
+
msgstr ""
|
219 |
+
"Vous obtiendrez un fichier de configuration lorsque vous cliquerez sur le "
|
220 |
+
"bouton ci-dessous. Vous pourrez ensuite utiliser ce fichier de configuration "
|
221 |
+
"sur d’autre site."
|
222 |
+
|
223 |
+
#: ../dashboard.php:656
|
224 |
+
msgid "What do you want to export?"
|
225 |
+
msgstr "Que voulez-vous exporter ?"
|
226 |
+
|
227 |
+
#: ../dashboard.php:657 ../dashboard.php:666 ../dashboard.php:847 ../dashboard.
|
228 |
+
#: php:1173
|
229 |
+
msgid "Settings"
|
230 |
+
msgstr "Réglages"
|
231 |
+
|
232 |
+
#: ../dashboard.php:658 ../dashboard.php:667 ../dashboard.php:775 ../dashboard.
|
233 |
+
#: php:846 ../dashboard.php:1174 ../wp-cerber.php:2188 ../settings.php:196
|
234 |
+
msgid "Access Lists"
|
235 |
+
msgstr "Listes d’accès"
|
236 |
+
|
237 |
+
#: ../dashboard.php:659
|
238 |
+
msgid "Download file"
|
239 |
+
msgstr "Télécharger le fichier"
|
240 |
+
|
241 |
+
#: ../dashboard.php:661
|
242 |
+
msgid "Import settings from the file"
|
243 |
+
msgstr "Importer les préférences"
|
244 |
+
|
245 |
+
#: ../dashboard.php:662
|
246 |
+
msgid ""
|
247 |
+
"When you click the button below, file will be uploaded and all existing "
|
248 |
+
"settings will be overridden."
|
249 |
+
msgstr "Importer des préférences écrasera les réglages précédents."
|
250 |
+
|
251 |
+
#: ../dashboard.php:663
|
252 |
+
msgid "Select file to import."
|
253 |
+
msgstr "Sélectionnez un fichier."
|
254 |
+
|
255 |
+
#: ../dashboard.php:663
|
256 |
+
#, php-format
|
257 |
+
msgid "Maximum upload file size: %s."
|
258 |
+
msgstr "Taille maximum de fichier autorisée : %s"
|
259 |
+
|
260 |
+
#: ../dashboard.php:666
|
261 |
+
msgid "What do you want to import?"
|
262 |
+
msgstr "Que voulez-vous importer ?"
|
263 |
+
|
264 |
+
#: ../dashboard.php:668
|
265 |
+
msgid "Upload file"
|
266 |
+
msgstr "Uploader un fichier"
|
267 |
+
|
268 |
+
#: ../dashboard.php:749
|
269 |
+
msgid "No file was uploaded or file is corrupted"
|
270 |
+
msgstr "Le fichier n’a pas été uploadé ou est corrompu"
|
271 |
+
|
272 |
+
#: ../dashboard.php:775
|
273 |
+
msgid "Error while updating"
|
274 |
+
msgstr "Erreur lors de la mise à jour"
|
275 |
+
|
276 |
+
#: ../dashboard.php:778
|
277 |
+
msgid "Settings has imported successfully from"
|
278 |
+
msgstr "Les préférences ont été importées avec succès depuis"
|
279 |
+
|
280 |
+
#: ../dashboard.php:782
|
281 |
+
msgid "Error while parsing file"
|
282 |
+
msgstr "Error lors de l’analyse du fichier"
|
283 |
+
|
284 |
+
#: ../dashboard.php:793
|
285 |
+
msgid "Cerber Quick View"
|
286 |
+
msgstr "Cerber aperçu"
|
287 |
+
|
288 |
+
#: ../dashboard.php:825
|
289 |
+
msgid "active"
|
290 |
+
msgstr "Active"
|
291 |
+
|
292 |
+
#: ../dashboard.php:825
|
293 |
+
msgid "deactivate"
|
294 |
+
msgstr "Citadelle activée !"
|
295 |
+
|
296 |
+
#: ../dashboard.php:827
|
297 |
+
msgid "not active"
|
298 |
+
msgstr "Inactif"
|
299 |
+
|
300 |
+
#: ../dashboard.php:828
|
301 |
+
msgid "disabled"
|
302 |
+
msgstr "Désactivée"
|
303 |
+
|
304 |
+
#: ../dashboard.php:833
|
305 |
+
msgid "failed attempts"
|
306 |
+
msgstr "Limitation des tentatives de connexion"
|
307 |
+
|
308 |
+
#: ../dashboard.php:833 ../dashboard.php:834
|
309 |
+
msgid "in 24 hours"
|
310 |
+
msgstr "en 24 heures"
|
311 |
+
|
312 |
+
#: ../dashboard.php:833 ../dashboard.php:834
|
313 |
+
msgid "view all"
|
314 |
+
msgstr "Voir tous"
|
315 |
+
|
316 |
+
#: ../dashboard.php:834
|
317 |
+
msgid "lockouts"
|
318 |
+
msgstr "Blocages"
|
319 |
+
|
320 |
+
#: ../dashboard.php:836
|
321 |
+
msgid "Lockouts at the moment"
|
322 |
+
msgstr ""
|
323 |
+
"Pas de blocage pour le moment. Tout va bien dans le meilleur des mondes."
|
324 |
+
|
325 |
+
#: ../dashboard.php:837
|
326 |
+
msgid "Last lockout"
|
327 |
+
msgstr "Le dernier blocage a été ajouté"
|
328 |
+
|
329 |
+
#: ../dashboard.php:838 ../dashboard.php:839 ../dashboard.php:1155
|
330 |
+
msgid "entry"
|
331 |
+
msgid_plural "entries"
|
332 |
+
msgstr[0] "entrée"
|
333 |
+
msgstr[1] "entrées"
|
334 |
+
|
335 |
+
#: ../dashboard.php:840 ../settings.php:74
|
336 |
+
msgid "Citadel mode"
|
337 |
+
msgstr "Mode Citadelle"
|
338 |
+
|
339 |
+
#: ../dashboard.php:845 ../settings.php:191
|
340 |
+
msgid "Lockouts"
|
341 |
+
msgstr "Blocages"
|
342 |
+
|
343 |
+
#: ../dashboard.php:951 ../dashboard.php:963
|
344 |
+
msgid "View all"
|
345 |
+
msgstr "Voir tout"
|
346 |
+
|
347 |
+
#: ../dashboard.php:964
|
348 |
+
msgid "Recently locked out IP addresses"
|
349 |
+
msgstr "IPs récemment bloquées"
|
350 |
+
|
351 |
+
#: ../dashboard.php:986
|
352 |
+
msgid "Confused about some settings?"
|
353 |
+
msgstr "Confus au sujet de certains paramètres ?"
|
354 |
+
|
355 |
+
#: ../dashboard.php:987
|
356 |
+
msgid "You can easily load default recommended settings using button below"
|
357 |
+
msgstr ""
|
358 |
+
"Vous pouvez facilement charger les paramètres recommandés par défaut en "
|
359 |
+
"utilisant bouton ci-dessous"
|
360 |
+
|
361 |
+
#: ../dashboard.php:989
|
362 |
+
msgid "Load default settings"
|
363 |
+
msgstr "Charger les paramètres par défaut"
|
364 |
+
|
365 |
+
#: ../dashboard.php:991 ../dashboard.php:1784
|
366 |
+
msgid "Are you sure?"
|
367 |
+
msgstr "Etes-vous sûr ?"
|
368 |
+
|
369 |
+
#: ../dashboard.php:997
|
370 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
371 |
+
msgstr "n’affecte pas l’URL de connexion personnalisée ni les Listes d’accès"
|
372 |
+
|
373 |
+
#: ../dashboard.php:1016
|
374 |
+
msgid "Donate"
|
375 |
+
msgstr "Faire un don"
|
376 |
+
|
377 |
+
#: ../dashboard.php:1065
|
378 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
379 |
+
msgstr ""
|
380 |
+
"Attention ! Le mode Citadel est maintenant activé. Plus personne ne peut se "
|
381 |
+
"connecter."
|
382 |
+
|
383 |
+
#: ../dashboard.php:1066
|
384 |
+
msgid "Deactivate"
|
385 |
+
msgstr "Désactiver"
|
386 |
+
|
387 |
+
#: ../dashboard.php:1067
|
388 |
+
msgid "View Activity"
|
389 |
+
msgstr "Voir l’activité"
|
390 |
+
|
391 |
+
#: ../dashboard.php:1118
|
392 |
+
msgid "New version is available"
|
393 |
+
msgstr "Nouvelle version disponible"
|
394 |
+
|
395 |
+
#: ../dashboard.php:1124
|
396 |
+
#, php-format
|
397 |
+
msgid "Update to version %s of WP Cerber"
|
398 |
+
msgstr "Mettre à jour WP Cerber à la version %s"
|
399 |
+
|
400 |
+
#: ../whois.php:211
|
401 |
+
msgid "Unknown"
|
402 |
+
msgstr "Inconnu"
|
403 |
+
|
404 |
+
#. URI of the plugin
|
405 |
+
msgid "http://wpcerber.com"
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#. Description of the plugin
|
409 |
+
msgid ""
|
410 |
+
"Protects site from brute force attacks, bots and hackers. Antispam "
|
411 |
+
"protection with reCAPTCHA. Comprehensive control of user activity. Restrict "
|
412 |
+
"login by IP access lists. Limit login attempts. Feel free to contact "
|
413 |
+
"developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
414 |
+
msgstr ""
|
415 |
+
"Protège les site des attaques “brute-force”, des robots et des hackers. "
|
416 |
+
"Protection antispam grâce à reCAPTCHA. Un outil complet de contrôle des "
|
417 |
+
"activités utilisateurs. Restriction des connexions basé sur les adresses IP. "
|
418 |
+
"Limitation des tentatives de connexions. N’hésitez pas à contacter le "
|
419 |
+
"développeur sur le site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
420 |
+
|
421 |
+
#. Author of the plugin
|
422 |
+
msgid "Gregory"
|
423 |
+
msgstr ""
|
424 |
+
|
425 |
+
#: ../wp-cerber.php:184
|
426 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
427 |
+
msgstr ""
|
428 |
+
"Vous n’êtes pas autorisé à vous connecté. Contactez l’administrateur si vous "
|
429 |
+
"avez besoin d’assistance."
|
430 |
+
|
431 |
+
#: ../wp-cerber.php:190
|
432 |
+
#, php-format
|
433 |
+
msgid ""
|
434 |
+
"You have reached the login attempts limit. Please try again in %d minutes."
|
435 |
+
msgstr ""
|
436 |
+
"Vous avez atteint le nombre maximum de tentatives autorisé. Veuillez "
|
437 |
+
"réessayer dans %d minutes."
|
438 |
+
|
439 |
+
#: ../wp-cerber.php:208
|
440 |
+
#, php-format
|
441 |
+
msgid "You have only one attempt remaining."
|
442 |
+
msgid_plural "You have %d attempts remaining."
|
443 |
+
msgstr[0] "Il ne vous reste qu’une seule tentative."
|
444 |
+
msgstr[1] "Il vous reste %d tentatives."
|
445 |
+
|
446 |
+
#: ../wp-cerber.php:481
|
447 |
+
msgid ""
|
448 |
+
"Human verification failed. Please click the square box in the reCAPTCHA "
|
449 |
+
"block below."
|
450 |
+
msgstr ""
|
451 |
+
"Vérification humaine échouée. Veuillez cliquer sur la case à cocher de la "
|
452 |
+
"boite de dialogue reCAPTCHA ci-dessous."
|
453 |
+
|
454 |
+
#: ../wp-cerber.php:579 ../wp-cerber.php:629 ../wp-cerber.php:635 ../wp-cerber.
|
455 |
+
#: php:658 ../settings.php:400
|
456 |
+
msgid "ERROR:"
|
457 |
+
msgstr "ERREUR : "
|
458 |
+
|
459 |
+
#: ../wp-cerber.php:591
|
460 |
+
#, php-format
|
461 |
+
msgid ""
|
462 |
+
"<strong>ERROR</strong>: The password you entered for the username %s is "
|
463 |
+
"incorrect."
|
464 |
+
msgstr ""
|
465 |
+
"<strong>ERREUR</strong>: Le mot de passe que vous avez saisie pour "
|
466 |
+
"l’identifiant %s est incorrect."
|
467 |
+
|
468 |
+
#: ../wp-cerber.php:636
|
469 |
+
msgid "Username is not allowed. Please choose another one."
|
470 |
+
msgstr "Ce nom d’utilisateur n’est pas autorisé. Veuillez en choisir un autre."
|
471 |
+
|
472 |
+
#: ../wp-cerber.php:1873
|
473 |
+
msgid "WP Cerber notify"
|
474 |
+
msgstr "Préférences WP Cerber"
|
475 |
+
|
476 |
+
#: ../wp-cerber.php:1892
|
477 |
+
msgid "Citadel mode is activated"
|
478 |
+
msgstr "Citadelle activée !"
|
479 |
+
|
480 |
+
#: ../wp-cerber.php:1894
|
481 |
+
#, php-format
|
482 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
483 |
+
msgstr ""
|
484 |
+
"Le mode Citadelle est activé après %d tentatives de connexion échouées en %d "
|
485 |
+
"minutes."
|
486 |
+
|
487 |
+
#: ../wp-cerber.php:1895
|
488 |
+
#, php-format
|
489 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
490 |
+
msgstr ""
|
491 |
+
"La dernière tentative échouée date du %s. Elle vient de l’IP %s. Le nom "
|
492 |
+
"d’utilisateur utilisé est : %s."
|
493 |
+
|
494 |
+
#: ../wp-cerber.php:1896
|
495 |
+
msgid "View activity in dashboard"
|
496 |
+
msgstr "Voir l’activité dans le tableau de bord"
|
497 |
+
|
498 |
+
#: ../wp-cerber.php:1918
|
499 |
+
msgid "unspecified"
|
500 |
+
msgstr "non spécifié"
|
501 |
+
|
502 |
+
#: ../wp-cerber.php:1922
|
503 |
+
msgid "Number of lockouts is increasing"
|
504 |
+
msgstr "Le nombre de blocage augmente"
|
505 |
+
|
506 |
+
#: ../wp-cerber.php:1924
|
507 |
+
msgid "Number of active lockouts"
|
508 |
+
msgstr "Nombre de blocages actifs"
|
509 |
+
|
510 |
+
#: ../wp-cerber.php:1926
|
511 |
+
#, php-format
|
512 |
+
msgid "Last lockout was added: %s for IP %s"
|
513 |
+
msgstr "Le dernier blocage a été ajouté le %s pour l’IP %s"
|
514 |
+
|
515 |
+
#: ../wp-cerber.php:1928
|
516 |
+
msgid "View activity for this IP"
|
517 |
+
msgstr "Voir l’activité pour cette IP"
|
518 |
+
|
519 |
+
#: ../wp-cerber.php:1929
|
520 |
+
msgid "View lockouts in dashboard"
|
521 |
+
msgstr "Voir les blocages dans le tableau de bord"
|
522 |
+
|
523 |
+
#: ../wp-cerber.php:1932 ../wp-cerber.php:1934
|
524 |
+
msgid "A new version of WP Cerber is available to install"
|
525 |
+
msgstr "Une nouvelle version de WP Cerber est disponible"
|
526 |
+
|
527 |
+
#: ../wp-cerber.php:1933
|
528 |
+
msgid "Hi!"
|
529 |
+
msgstr "Salut !"
|
530 |
+
|
531 |
+
#: ../wp-cerber.php:1935 ../wp-cerber.php:1946
|
532 |
+
msgid "Website"
|
533 |
+
msgstr "Site web"
|
534 |
+
|
535 |
+
#: ../wp-cerber.php:1938 ../wp-cerber.php:1939
|
536 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
537 |
+
msgstr "Le plugin WP Cerber a été désactivé"
|
538 |
+
|
539 |
+
#: ../wp-cerber.php:1941
|
540 |
+
msgid "Not logged in"
|
541 |
+
msgstr "Non connecté"
|
542 |
+
|
543 |
+
#: ../wp-cerber.php:1947
|
544 |
+
msgid "By user"
|
545 |
+
msgstr "Par utilisateur"
|
546 |
+
|
547 |
+
#: ../wp-cerber.php:1948
|
548 |
+
msgid "From IP address"
|
549 |
+
msgstr "De l’adresse IP"
|
550 |
+
|
551 |
+
#: ../wp-cerber.php:1951
|
552 |
+
msgid "From country"
|
553 |
+
msgstr "Du pays"
|
554 |
+
|
555 |
+
#: ../wp-cerber.php:1955
|
556 |
+
msgid "The WP Cerber security plugin is now active"
|
557 |
+
msgstr "Le plugin WP Cerber est maintenant actif"
|
558 |
+
|
559 |
+
#: ../wp-cerber.php:1956 ../wp-cerber.php:2181
|
560 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
561 |
+
msgstr "WP Cerber est maintenant actif et protège votre site"
|
562 |
+
|
563 |
+
#: ../wp-cerber.php:1957
|
564 |
+
msgid "Change notification settings"
|
565 |
+
msgstr "Changer les préférences de notifications"
|
566 |
+
|
567 |
+
#: ../wp-cerber.php:1962
|
568 |
+
msgid "New Custom login URL"
|
569 |
+
msgstr "URL de connexion personnalisée"
|
570 |
+
|
571 |
+
#: ../wp-cerber.php:1977
|
572 |
+
msgid "This message was sent by"
|
573 |
+
msgstr "Ce message a été envoyé par"
|
574 |
+
|
575 |
+
#: ../wp-cerber.php:2156
|
576 |
+
#, php-format
|
577 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
578 |
+
msgstr "WP Cerber nécessite PHP %s ou supérieur. Vous avez actuellement "
|
579 |
+
|
580 |
+
#: ../wp-cerber.php:2160
|
581 |
+
#, php-format
|
582 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
583 |
+
msgstr "WP Cerber nécessite WordPress %s ou supérieur. Vous avez actuellement"
|
584 |
+
|
585 |
+
#: ../wp-cerber.php:2165
|
586 |
+
msgid "Can't activate WP Cerber due to a database error."
|
587 |
+
msgstr "Impossible d’activer WP Cerber à cause d’une erreur de base de données"
|
588 |
+
|
589 |
+
#: ../wp-cerber.php:2182
|
590 |
+
msgid "Your IP address is added to the"
|
591 |
+
msgstr "Votre adresse IP a été ajouté à"
|
592 |
+
|
593 |
+
#: ../wp-cerber.php:2184
|
594 |
+
msgid "It's important to check security settings."
|
595 |
+
msgstr "Il est important de vérifier les paramètres de sécurité."
|
596 |
+
|
597 |
+
#: ../wp-cerber.php:2187 ../settings.php:193
|
598 |
+
msgid "Main Settings"
|
599 |
+
msgstr "Réglages généraux"
|
600 |
+
|
601 |
+
#: ../wp-cerber.php:2189 ../settings.php:198
|
602 |
+
msgid "Hardening"
|
603 |
+
msgstr "Renforcer"
|
604 |
+
|
605 |
+
#: ../wp-cerber.php:2190 ../settings.php:203
|
606 |
+
msgid "reCAPTCHA"
|
607 |
+
msgstr ""
|
608 |
+
|
609 |
+
#: ../wp-cerber.php:2191
|
610 |
+
msgid "Import settings"
|
611 |
+
msgstr "Importer les paramètres"
|
612 |
+
|
613 |
+
#: ../cerber-news.php:71
|
614 |
+
msgid "Want to make WP Cerber even more powerful?"
|
615 |
+
msgstr "Désireux de rendre WP Cerber encore plus puissant ?"
|
616 |
+
|
617 |
+
#: ../cerber-news.php:72
|
618 |
+
msgid ""
|
619 |
+
"Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
|
620 |
+
"This helps the plugin team to develop new algorithms for WP Cerber that will "
|
621 |
+
"defend WordPress against new threats and botnets that are appearing "
|
622 |
+
"everyday. You can disable the sending in the plugin settings at any time."
|
623 |
+
msgstr ""
|
624 |
+
"Permettre à WP Cerber d’envoyer les adresses IP qui ont été bloqués au "
|
625 |
+
"Cerber Lab. Cela aidera l’équipe à créer de nouveau algorithmes pour que WP "
|
626 |
+
"Cerber puisse défendre WordPress contre les nouvelles attaques et réseaux de "
|
627 |
+
"robots qui apparaissent chaque jour. Vous pouvez désactiver l’envoi des "
|
628 |
+
"données à tout moment dans les réglages du plugin."
|
629 |
+
|
630 |
+
#: ../cerber-news.php:73
|
631 |
+
msgid "OK, nail them all"
|
632 |
+
msgstr "OK, qu’on les chope tous !"
|
633 |
+
|
634 |
+
#: ../cerber-news.php:74
|
635 |
+
msgid "NO, maybe later"
|
636 |
+
msgstr "NON, peut-être plus tard"
|
637 |
+
|
638 |
+
#: ../settings.php:57
|
639 |
+
msgid "Limit login attempts"
|
640 |
+
msgstr "Limitation des tentatives de connexion"
|
641 |
+
|
642 |
+
#: ../settings.php:58
|
643 |
+
msgid "Attempts"
|
644 |
+
msgstr "Tentatives"
|
645 |
+
|
646 |
+
#: ../settings.php:59
|
647 |
+
msgid "Lockout duration"
|
648 |
+
msgstr "Durée du blocage"
|
649 |
+
|
650 |
+
#: ../settings.php:59 ../settings.php:76 ../common.php:229
|
651 |
+
msgid "minutes"
|
652 |
+
msgstr "minutes"
|
653 |
+
|
654 |
+
#: ../settings.php:60
|
655 |
+
msgid "Aggressive lockout"
|
656 |
+
msgstr "Blocage aggressif"
|
657 |
+
|
658 |
+
#: ../settings.php:61 ../settings.php:78 ../settings.php:80
|
659 |
+
msgid "Notifications"
|
660 |
+
msgstr "Notifications"
|
661 |
+
|
662 |
+
#: ../settings.php:62
|
663 |
+
msgid "Site connection"
|
664 |
+
msgstr "Connexion au site"
|
665 |
+
|
666 |
+
#: ../settings.php:62
|
667 |
+
msgid "My site is behind a reverse proxy"
|
668 |
+
msgstr "Mon site se trouve derrière un reverse proxy"
|
669 |
+
|
670 |
+
#: ../settings.php:64
|
671 |
+
msgid "Proactive security rules"
|
672 |
+
msgstr "Règles de sécurité proactives"
|
673 |
+
|
674 |
+
#: ../settings.php:65
|
675 |
+
msgid "Block subnet"
|
676 |
+
msgstr "Bloquer les sous-réseaux"
|
677 |
+
|
678 |
+
#: ../settings.php:65
|
679 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
680 |
+
msgstr "Toujours bloquer le sous-réseau complet de classe C des IP intruses"
|
681 |
+
|
682 |
+
#: ../settings.php:66
|
683 |
+
msgid "Non-existent users"
|
684 |
+
msgstr "Utilisateurs inexistants"
|
685 |
+
|
686 |
+
#: ../settings.php:66
|
687 |
+
msgid ""
|
688 |
+
"Immediately block IP when attempting to login with a non-existent username"
|
689 |
+
msgstr ""
|
690 |
+
"Bloquer immédiatement l’IP si la tentative de connexion est faite avec un "
|
691 |
+
"identifiant utilisateur inexistant"
|
692 |
+
|
693 |
+
#: ../settings.php:67
|
694 |
+
msgid "Redirect dashboard requests"
|
695 |
+
msgstr "Redirection des requêtes du tableau de bord"
|
696 |
+
|
697 |
+
#: ../settings.php:67
|
698 |
+
msgid ""
|
699 |
+
"Disable automatic redirecting to the login page when /wp-admin/ is requested "
|
700 |
+
"by an unauthorized request"
|
701 |
+
msgstr ""
|
702 |
+
"Désactiver la redirection automatique sur la page de login lorsque /wp-"
|
703 |
+
"admin/ est demandé lors d’une requête non-autorisée"
|
704 |
+
|
705 |
+
#: ../settings.php:68
|
706 |
+
msgid "Request wp-login.php"
|
707 |
+
msgstr "Requête sur wp-login.php"
|
708 |
+
|
709 |
+
#: ../settings.php:68
|
710 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
711 |
+
msgstr ""
|
712 |
+
"Bloquer immédiatement l’IP si elle tente d’accéder au fichier wp-login.php"
|
713 |
+
|
714 |
+
#: ../settings.php:70
|
715 |
+
msgid "Custom login page"
|
716 |
+
msgstr "Page de connexion personnalisée"
|
717 |
+
|
718 |
+
#: ../settings.php:71
|
719 |
+
msgid "Custom login URL"
|
720 |
+
msgstr "URL de connexion personnalisée"
|
721 |
+
|
722 |
+
#: ../settings.php:71
|
723 |
+
msgid "must not overlap with the existing pages or posts slug"
|
724 |
+
msgstr "Ne doit pas chevaucher l’URL d’une page ou d’un post existant"
|
725 |
+
|
726 |
+
#: ../settings.php:72
|
727 |
+
msgid "Disable wp-login.php"
|
728 |
+
msgstr "Désactiver wp-login.php"
|
729 |
+
|
730 |
+
#: ../settings.php:72
|
731 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
732 |
+
msgstr ""
|
733 |
+
"Bloquer l’accès direct à wp-login.php et retourner une erreur HTTP 404 Not "
|
734 |
+
"Found"
|
735 |
+
|
736 |
+
#: ../settings.php:75
|
737 |
+
msgid "Threshold"
|
738 |
+
msgstr "Seuil"
|
739 |
+
|
740 |
+
#: ../settings.php:76
|
741 |
+
msgid "Duration"
|
742 |
+
msgstr "Durée"
|
743 |
+
|
744 |
+
#: ../settings.php:78
|
745 |
+
msgid "Send notification to admin email"
|
746 |
+
msgstr "Envoyer des notifications à l’administrateur"
|
747 |
+
|
748 |
+
#: ../settings.php:78 ../settings.php:292
|
749 |
+
msgid "Click to send test"
|
750 |
+
msgstr "Cliquez pour tester"
|
751 |
+
|
752 |
+
#: ../settings.php:82
|
753 |
+
msgid "Email Address"
|
754 |
+
msgstr "Adresse email"
|
755 |
+
|
756 |
+
#: ../settings.php:82
|
757 |
+
#, php-format
|
758 |
+
msgid "if empty, the admin email %s will be used"
|
759 |
+
msgstr "Si vide, l’adresse de l’admin %s sera utilisée"
|
760 |
+
|
761 |
+
#: ../settings.php:83
|
762 |
+
msgid "Notification limit"
|
763 |
+
msgstr "Limite de notification"
|
764 |
+
|
765 |
+
#: ../settings.php:83
|
766 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
767 |
+
msgstr "Nombre limite de mails de notification (0 pour illimité)"
|
768 |
+
|
769 |
+
#: ../settings.php:86
|
770 |
+
msgid "Keep records for"
|
771 |
+
msgstr "Conserver l’historique pendant"
|
772 |
+
|
773 |
+
#: ../settings.php:86 ../common.php:227
|
774 |
+
msgid "days"
|
775 |
+
msgstr "jours"
|
776 |
+
|
777 |
+
#: ../settings.php:89
|
778 |
+
msgid "Drill down IP"
|
779 |
+
msgstr "Examiner les IPs"
|
780 |
+
|
781 |
+
#: ../settings.php:89
|
782 |
+
msgid "Retrieve extra WHOIS information for IP"
|
783 |
+
msgstr "Récupérer les données WHOIS des IPs"
|
784 |
+
|
785 |
+
#: ../settings.php:90
|
786 |
+
msgid "Cerber Lab connection"
|
787 |
+
msgstr "Connexion Cerber Lab"
|
788 |
+
|
789 |
+
#: ../settings.php:90
|
790 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
791 |
+
msgstr "Envoyer les adresses IP bloquées au Cerber Lab"
|
792 |
+
|
793 |
+
#: ../settings.php:91
|
794 |
+
msgid "Cerber Lab protocol"
|
795 |
+
msgstr "Protocole Cerber Lab"
|
796 |
+
|
797 |
+
#: ../settings.php:92
|
798 |
+
msgid "Use file"
|
799 |
+
msgstr "Utiliser un fichier"
|
800 |
+
|
801 |
+
#: ../settings.php:92
|
802 |
+
msgid "Write failed login attempts to the file"
|
803 |
+
msgstr "Inscrire les tentatives de connexion échouées dans un fichier de log"
|
804 |
+
|
805 |
+
#: ../settings.php:99
|
806 |
+
msgid "Hardening WordPress"
|
807 |
+
msgstr "Renforcer WordPress"
|
808 |
+
|
809 |
+
#: ../settings.php:100
|
810 |
+
msgid "Stop user enumeration"
|
811 |
+
msgstr "Empêcher l’énumération des utilisateurs"
|
812 |
+
|
813 |
+
#: ../settings.php:100
|
814 |
+
msgid "Block access to the pages like /?author=n"
|
815 |
+
msgstr "Bloquer l’accès aux pages du type /?auteur=n"
|
816 |
+
|
817 |
+
#: ../settings.php:101
|
818 |
+
msgid "Disable XML-RPC"
|
819 |
+
msgstr "Désactiver XML-RPC"
|
820 |
+
|
821 |
+
#: ../settings.php:101
|
822 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
823 |
+
msgstr ""
|
824 |
+
"Bloquer l’accès au serveur XMlL-RPC (inclut les Pingbacks et Trackbacks)"
|
825 |
+
|
826 |
+
#: ../settings.php:102
|
827 |
+
msgid "Disable feeds"
|
828 |
+
msgstr "Désactiver les flux"
|
829 |
+
|
830 |
+
#: ../settings.php:102
|
831 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
832 |
+
msgstr "Bloquer l’accès aux flux RSS, Atom et RDF"
|
833 |
+
|
834 |
+
#: ../settings.php:103
|
835 |
+
msgid "Disable REST API"
|
836 |
+
msgstr "Désactiver l’API REST"
|
837 |
+
|
838 |
+
#: ../settings.php:103
|
839 |
+
msgid "Block access to the WordPress REST API"
|
840 |
+
msgstr "Bloquer l’accès à l’API REST de WordPress"
|
841 |
+
|
842 |
+
#: ../settings.php:111
|
843 |
+
msgid "User related settings"
|
844 |
+
msgstr "Paramètres relatifs aux utilisateurs"
|
845 |
+
|
846 |
+
#: ../settings.php:112
|
847 |
+
msgid "Prohibited usernames"
|
848 |
+
msgstr "Identifiants interdits"
|
849 |
+
|
850 |
+
#: ../settings.php:112
|
851 |
+
msgid ""
|
852 |
+
"Usernames from this list are not allowed to log in or register. Any IP "
|
853 |
+
"address, have tried to use any of these usernames, will be immediately "
|
854 |
+
"blocked. Use comma to separate logins."
|
855 |
+
msgstr ""
|
856 |
+
"Les identifiants de cette liste ne pourront ni se connecter ni s’inscrire. "
|
857 |
+
"Toute IP qui aurait tenté d’utiliser un de ces identifiants sera "
|
858 |
+
"immédiatement bloquée. Séparez les identifiants par des virgules."
|
859 |
+
|
860 |
+
#: ../settings.php:113
|
861 |
+
msgid "User session expire"
|
862 |
+
msgstr "Session utilisateur expirée"
|
863 |
+
|
864 |
+
#: ../settings.php:113
|
865 |
+
msgid "in minutes (leave empty to use default WP value)"
|
866 |
+
msgstr ""
|
867 |
+
"en minutes (laisser vide pour utiliser la valeur par défaut de WordPress)"
|
868 |
+
|
869 |
+
#: ../settings.php:117
|
870 |
+
msgid "reCAPTCHA settings"
|
871 |
+
msgstr "Paramètres reCAPTCHA"
|
872 |
+
|
873 |
+
#: ../settings.php:118
|
874 |
+
msgid "Site key"
|
875 |
+
msgstr "Clef du site"
|
876 |
+
|
877 |
+
#: ../settings.php:119
|
878 |
+
msgid "Secret key"
|
879 |
+
msgstr "Clef secrète"
|
880 |
+
|
881 |
+
#: ../settings.php:121
|
882 |
+
msgid "Registration form"
|
883 |
+
msgstr "Formulaire d’inscription"
|
884 |
+
|
885 |
+
#: ../settings.php:121
|
886 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
887 |
+
msgstr "Activer reCAPTCHA pour le formulaire d’inscription WordPress"
|
888 |
+
|
889 |
+
#: ../settings.php:122
|
890 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
891 |
+
msgstr "Activer reCAPTCHA pour le formulaire d’inscription WooCommerce"
|
892 |
+
|
893 |
+
#: ../settings.php:124
|
894 |
+
msgid "Lost password form"
|
895 |
+
msgstr "Formulaire de récupération de mot de passe"
|
896 |
+
|
897 |
+
#: ../settings.php:124
|
898 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
899 |
+
msgstr ""
|
900 |
+
"Activer reCAPTCHA pour le formulaire de récupération de mot de passe "
|
901 |
+
"WordPress"
|
902 |
+
|
903 |
+
#: ../settings.php:125
|
904 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
905 |
+
msgstr ""
|
906 |
+
"Activer reCAPTCHA pour le formulaire de récupération de mot de passe "
|
907 |
+
"WooCommerce"
|
908 |
+
|
909 |
+
#: ../settings.php:127
|
910 |
+
msgid "Login form"
|
911 |
+
msgstr "Formulaire de connexion"
|
912 |
+
|
913 |
+
#: ../settings.php:127
|
914 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
915 |
+
msgstr "Activer reCAPTCHA pour le formulaire de connexion WordPress"
|
916 |
+
|
917 |
+
#: ../settings.php:128
|
918 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
919 |
+
msgstr "Activer reCAPTCHA pour le formulaire de connexion WooCommerce"
|
920 |
+
|
921 |
+
#: ../settings.php:137
|
922 |
+
msgid "Make your protection smarter!"
|
923 |
+
msgstr "Rendez votre protection intelligente !"
|
924 |
+
|
925 |
+
#: ../settings.php:141
|
926 |
+
msgid ""
|
927 |
+
"Please enable Permalinks to use this feature. Set Permalink Settings to "
|
928 |
+
"something other than Default."
|
929 |
+
msgstr ""
|
930 |
+
"Veuillez activer les Permaliens pour utiliser cette fonctionnalité. Le "
|
931 |
+
"réglage des permaliens ne doit pas être “par défaut”."
|
932 |
+
|
933 |
+
#: ../settings.php:144
|
934 |
+
msgid ""
|
935 |
+
"Be careful when enabling this options. If you forget the custom login URL "
|
936 |
+
"you will not be able to login."
|
937 |
+
msgstr ""
|
938 |
+
"Soyez prudent si vous activez ces réglages. Si vous oubliez l’URL de "
|
939 |
+
"connexion personnalisée, vous ne pourrez plus vous connecter."
|
940 |
+
|
941 |
+
#: ../settings.php:148
|
942 |
+
msgid ""
|
943 |
+
"In Citadel mode nobody is able to login. Active user's sessions will not be "
|
944 |
+
"affected."
|
945 |
+
msgstr ""
|
946 |
+
"En mode Citadel, personne ne peut se connecter. Les sessions des "
|
947 |
+
"utilisateurs déjà connectés ne seront pas impactées."
|
948 |
+
|
949 |
+
#: ../settings.php:153
|
950 |
+
msgid "These settings do not affect hosts from the "
|
951 |
+
msgstr "Ces paramètres n’affecteront pas les hôtes en provenance de"
|
952 |
+
|
953 |
+
#: ../settings.php:158
|
954 |
+
msgid ""
|
955 |
+
"Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
|
956 |
+
"key on the Google website"
|
957 |
+
msgstr ""
|
958 |
+
"Avant d’utiliser reCAPTCHA, il vous faut obtenir une Clef de Site et une "
|
959 |
+
"Clef Secrète sur le site de Google"
|
960 |
+
|
961 |
+
#: ../settings.php:159
|
962 |
+
msgid "Know more"
|
963 |
+
msgstr "En savoir plus"
|
964 |
+
|
965 |
+
#: ../settings.php:186
|
966 |
+
msgid "Dashboard"
|
967 |
+
msgstr "Tableau de bord"
|
968 |
+
|
969 |
+
#: ../settings.php:200
|
970 |
+
msgid "Users"
|
971 |
+
msgstr "Utilisateurs"
|
972 |
+
|
973 |
+
#: ../settings.php:205
|
974 |
+
msgid "Tools"
|
975 |
+
msgstr "Outils"
|
976 |
+
|
977 |
+
#: ../settings.php:207
|
978 |
+
msgid "Help"
|
979 |
+
msgstr "Aide"
|
980 |
+
|
981 |
+
#: ../settings.php:278
|
982 |
+
#, php-format
|
983 |
+
msgid "%s allowed retries in %s minutes"
|
984 |
+
msgstr "%s tentatives autorisées en %s minutes"
|
985 |
+
|
986 |
+
#: ../settings.php:283
|
987 |
+
#, php-format
|
988 |
+
msgid ""
|
989 |
+
"Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
990 |
+
msgstr ""
|
991 |
+
"Allonger la durée du blocage à %s heures après %s blocages dans les %s "
|
992 |
+
"dernières heures"
|
993 |
+
|
994 |
+
#: ../settings.php:290
|
995 |
+
msgid "Notify admin if the number of active lockouts above"
|
996 |
+
msgstr "Notifier l’administrateur si le nombre de blocages actifs excède "
|
997 |
+
|
998 |
+
#: ../settings.php:295
|
999 |
+
#, php-format
|
1000 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
1001 |
+
msgstr "Activer après %s tentatives échouées dans les %s dernières minutes"
|
1002 |
+
|
1003 |
+
#: ../settings.php:345
|
1004 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
1005 |
+
msgstr ""
|
1006 |
+
"Attention ! Vous avez changer l’URL de connexion ! La nouvelle URL est "
|
1007 |
+
|
1008 |
+
#: ../settings.php:368
|
1009 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
1010 |
+
msgstr "<strong>ERREUR</strong>: veuillez saisir une adresse email valide."
|
1011 |
+
|
1012 |
+
#: ../settings.php:618
|
1013 |
+
msgid "Number of items per page:"
|
1014 |
+
msgstr "Nombre d’éléments par page :"
|
1015 |
+
|
1016 |
+
#: ../common.php:129
|
1017 |
+
msgid "User created"
|
1018 |
+
msgstr "Utilisateur créé"
|
1019 |
+
|
1020 |
+
#: ../common.php:130
|
1021 |
+
msgid "User registered"
|
1022 |
+
msgstr "Inscription utilisateur"
|
1023 |
+
|
1024 |
+
#: ../common.php:131
|
1025 |
+
msgid "Logged in"
|
1026 |
+
msgstr "Connexion réussie"
|
1027 |
+
|
1028 |
+
#: ../common.php:132
|
1029 |
+
msgid "Logged out"
|
1030 |
+
msgstr "Déconnexion"
|
1031 |
+
|
1032 |
+
#: ../common.php:133
|
1033 |
+
msgid "Login failed"
|
1034 |
+
msgstr "Connexion échouée"
|
1035 |
+
|
1036 |
+
#: ../common.php:136
|
1037 |
+
msgid "IP blocked"
|
1038 |
+
msgstr "IP bloquée"
|
1039 |
+
|
1040 |
+
#: ../common.php:137
|
1041 |
+
msgid "Subnet blocked"
|
1042 |
+
msgstr "Sous-réseau bloqué"
|
1043 |
+
|
1044 |
+
#: ../common.php:139
|
1045 |
+
msgid "Citadel activated!"
|
1046 |
+
msgstr "Citadelle activée !"
|
1047 |
+
|
1048 |
+
#: ../common.php:142
|
1049 |
+
msgid "IP blacklisted"
|
1050 |
+
msgstr "IP blacklistées"
|
1051 |
+
|
1052 |
+
#: ../common.php:145
|
1053 |
+
msgid "Password changed"
|
1054 |
+
msgstr "Changement de mot de passe"
|
1055 |
+
|
1056 |
+
#: ../common.php:147
|
1057 |
+
msgid "reCAPTCHA verification failed"
|
1058 |
+
msgstr "Vérification reCAPTCHA échouée"
|
1059 |
+
|
1060 |
+
#: ../common.php:148
|
1061 |
+
msgid "reCAPTCHA settings are incorrect"
|
1062 |
+
msgstr "Les paramètres reCAPTCHA sont incorrects"
|
1063 |
+
|
1064 |
+
#: ../common.php:149
|
1065 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
1066 |
+
msgstr "La requête au service Google reCAPTCHA a échouée"
|
1067 |
+
|
1068 |
+
#: ../common.php:151
|
1069 |
+
msgid "Attempt to access prohibited URL"
|
1070 |
+
msgstr "Tentative d’accès à une URL interdite"
|
1071 |
+
|
1072 |
+
#: ../common.php:152 ../common.php:164
|
1073 |
+
msgid "Attempt to log in with non-existent username"
|
1074 |
+
msgstr "Tentative de connexion avec un identifiant inexistant"
|
1075 |
+
|
1076 |
+
#: ../common.php:153 ../common.php:165
|
1077 |
+
msgid "Attempt to log in with prohibited username"
|
1078 |
+
msgstr "Tentative de connexion avec un identifiant interdit"
|
1079 |
+
|
1080 |
+
#: ../common.php:162
|
1081 |
+
msgid "Limit on login attempts is reached"
|
1082 |
+
msgstr "La limite de tentatives de connexion est atteinte"
|
1083 |
+
|
1084 |
+
#: ../common.php:163
|
1085 |
+
msgid "Attempt to access"
|
1086 |
+
msgstr "Tentative d’accès"
|
1087 |
+
|
1088 |
+
#: ../common.php:217
|
1089 |
+
msgid "year"
|
1090 |
+
msgstr "année"
|
1091 |
+
|
1092 |
+
#: ../common.php:218
|
1093 |
+
msgid "month"
|
1094 |
+
msgstr "mois"
|
1095 |
+
|
1096 |
+
#: ../common.php:219
|
1097 |
+
msgid "day"
|
1098 |
+
msgstr "jour"
|
1099 |
+
|
1100 |
+
#: ../common.php:220
|
1101 |
+
msgid "hour"
|
1102 |
+
msgstr "heure"
|
1103 |
+
|
1104 |
+
#: ../common.php:221
|
1105 |
+
msgid "minute"
|
1106 |
+
msgstr "minute"
|
1107 |
+
|
1108 |
+
#: ../common.php:222
|
1109 |
+
msgid "second"
|
1110 |
+
msgstr "seconde"
|
1111 |
+
|
1112 |
+
#: ../common.php:225
|
1113 |
+
msgid "years"
|
1114 |
+
msgstr "années"
|
1115 |
+
|
1116 |
+
#: ../common.php:226
|
1117 |
+
msgid "months"
|
1118 |
+
msgstr "mois"
|
1119 |
+
|
1120 |
+
#: ../common.php:228
|
1121 |
+
msgid "hours"
|
1122 |
+
msgstr "heures"
|
1123 |
+
|
1124 |
+
#: ../common.php:230
|
1125 |
+
msgid "seconds"
|
1126 |
+
msgstr "secondes"
|
1127 |
+
|
1128 |
+
#: ../common.php:236
|
1129 |
+
msgid "ago"
|
1130 |
+
msgstr "avant"
|
languages/wp-cerber-it_IT.mo
ADDED
Binary file
|
languages/wp-cerber-it_IT.po
ADDED
@@ -0,0 +1,1231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: WP Cerber\n"
|
8 |
+
"Language: it\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
+
|
11 |
+
#: ../settings.php:57
|
12 |
+
msgid "Limit login attempts"
|
13 |
+
msgstr "Limiti i tentativi di accesso"
|
14 |
+
|
15 |
+
#: ../settings.php:58
|
16 |
+
msgid "Attempts"
|
17 |
+
msgstr "Tentativi"
|
18 |
+
|
19 |
+
#: ../settings.php:59
|
20 |
+
msgid "Lockout duration"
|
21 |
+
msgstr "Durata blocco"
|
22 |
+
|
23 |
+
#: ../settings.php:59 ../settings.php:78
|
24 |
+
msgid "minutes"
|
25 |
+
msgstr "Minuti"
|
26 |
+
|
27 |
+
#: ../settings.php:60
|
28 |
+
msgid "Aggressive lockout"
|
29 |
+
msgstr "Blocco aggressivo"
|
30 |
+
|
31 |
+
#: ../settings.php:63
|
32 |
+
msgid "Site connection"
|
33 |
+
msgstr "Collegamenti del sito"
|
34 |
+
|
35 |
+
#: ../settings.php:65
|
36 |
+
msgid "Proactive security rules"
|
37 |
+
msgstr "Regole di sicurezza proattive"
|
38 |
+
|
39 |
+
#: ../settings.php:66
|
40 |
+
msgid "Block subnet"
|
41 |
+
msgstr "Blocca subnet"
|
42 |
+
|
43 |
+
#: ../settings.php:69
|
44 |
+
msgid "Request wp-login.php"
|
45 |
+
msgstr "Richiedi wp-login.php"
|
46 |
+
|
47 |
+
#: ../settings.php:69
|
48 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
49 |
+
msgstr "Blocca Immediatamente l'IP dopo qualsiasi chiamata alla pagina wp-login.php"
|
50 |
+
|
51 |
+
#: ../settings.php:68
|
52 |
+
msgid "Redirect dashboard requests"
|
53 |
+
msgstr "Richiamare il pannello Redirect"
|
54 |
+
|
55 |
+
#: ../settings.php:72
|
56 |
+
msgid "Custom login page"
|
57 |
+
msgstr "Pagina di login personalizzata"
|
58 |
+
|
59 |
+
#: ../settings.php:73
|
60 |
+
msgid "Custom login URL"
|
61 |
+
msgstr "URL di accesso personalizzato"
|
62 |
+
|
63 |
+
#: ../settings.php:73
|
64 |
+
msgid "must not overlap with the existing pages or posts slug"
|
65 |
+
msgstr "Non deve sovrapporsi con pagine esistenti o con post esistenti"
|
66 |
+
|
67 |
+
#: ../settings.php:74
|
68 |
+
msgid "Disable wp-login.php"
|
69 |
+
msgstr "Disattiva wp-login.php"
|
70 |
+
|
71 |
+
#: ../settings.php:74
|
72 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
73 |
+
msgstr "Blocca l'accesso diretto a wp-login.php e restituisce l'errore HTTP 404 non trovato"
|
74 |
+
|
75 |
+
#: ../dashboard.php:904 ../settings.php:76
|
76 |
+
msgid "Citadel mode"
|
77 |
+
msgstr "Modalità Citadel"
|
78 |
+
|
79 |
+
#: ../settings.php:77
|
80 |
+
msgid "Threshold"
|
81 |
+
msgstr "Soglia"
|
82 |
+
|
83 |
+
#: ../settings.php:78
|
84 |
+
msgid "Duration"
|
85 |
+
msgstr "Durata"
|
86 |
+
|
87 |
+
#: ../wp-cerber.php:2830 ../settings.php:62 ../settings.php:80 ../settings.php:238
|
88 |
+
msgid "Notifications"
|
89 |
+
msgstr "Notifiche"
|
90 |
+
|
91 |
+
#: ../settings.php:80
|
92 |
+
msgid "Send notification to admin email"
|
93 |
+
msgstr "Invia notifica all'email dell'amministratore"
|
94 |
+
|
95 |
+
#: ../dashboard.php:913 ../dashboard.php:1413 ../wp-cerber.php:2828 ../settings.
|
96 |
+
#: php:231 ../cerber-tools.php:87 ../cerber-tools.php:96 ../cerber-tools.php:162
|
97 |
+
msgid "Access Lists"
|
98 |
+
msgstr "Lista di accesso"
|
99 |
+
|
100 |
+
#: ../dashboard.php:911 ../dashboard.php:1082 ../wp-cerber.php:2695 ../settings.
|
101 |
+
#: php:82 ../settings.php:222
|
102 |
+
msgid "Activity"
|
103 |
+
msgstr "Attività"
|
104 |
+
|
105 |
+
#: ../dashboard.php:912 ../settings.php:226
|
106 |
+
msgid "Lockouts"
|
107 |
+
msgstr "Bloccati"
|
108 |
+
|
109 |
+
#: ../settings.php:353
|
110 |
+
msgid "%s allowed retries in %s minutes"
|
111 |
+
msgstr "%s tentativi permessi in %s minuti"
|
112 |
+
|
113 |
+
#: ../settings.php:370
|
114 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
115 |
+
msgstr "Abilita dopo %s tentativi di login negli ultimi %s minuti"
|
116 |
+
|
117 |
+
#: ../dashboard.php:77 ../dashboard.php:502 ../wp-cerber.php:2696
|
118 |
+
msgid "IP"
|
119 |
+
msgstr "IP"
|
120 |
+
|
121 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
122 |
+
msgid "Date"
|
123 |
+
msgstr "Data"
|
124 |
+
|
125 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
126 |
+
msgid "Local User"
|
127 |
+
msgstr "Utente locale"
|
128 |
+
|
129 |
+
#: ../dashboard.php:355 ../dashboard.php:502 ../wp-cerber.php:2704
|
130 |
+
msgid "Username used"
|
131 |
+
msgstr "Nome utente utilizzato"
|
132 |
+
|
133 |
+
#: ../dashboard.php:83
|
134 |
+
msgid "Showing last %d records from %d"
|
135 |
+
msgstr "Mostro Ultimi %d records da %d"
|
136 |
+
|
137 |
+
#: ../common.php:335
|
138 |
+
msgid "Logged in"
|
139 |
+
msgstr "Loggato"
|
140 |
+
|
141 |
+
#: ../common.php:336
|
142 |
+
msgid "Logged out"
|
143 |
+
msgstr "Disconnesso"
|
144 |
+
|
145 |
+
#: ../common.php:337
|
146 |
+
msgid "Login failed"
|
147 |
+
msgstr "Accesso fallito"
|
148 |
+
|
149 |
+
#: ../common.php:340
|
150 |
+
msgid "IP blocked"
|
151 |
+
msgstr "IP Bloccato"
|
152 |
+
|
153 |
+
#: ../common.php:341
|
154 |
+
msgid "Subnet blocked"
|
155 |
+
msgstr "Subnet Bloccata"
|
156 |
+
|
157 |
+
#: ../common.php:343
|
158 |
+
msgid "Citadel activated!"
|
159 |
+
msgstr "Citadel attivata!"
|
160 |
+
|
161 |
+
#: ../dashboard.php:488 ../dashboard.php:668 ../common.php:347
|
162 |
+
msgid "Locked out"
|
163 |
+
msgstr "Bloccato"
|
164 |
+
|
165 |
+
#: ../common.php:348
|
166 |
+
msgid "IP blacklisted"
|
167 |
+
msgstr "IP blacklisted"
|
168 |
+
|
169 |
+
#: ../common.php:354
|
170 |
+
msgid "Password changed"
|
171 |
+
msgstr "Password cambiata"
|
172 |
+
|
173 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
174 |
+
msgid "Remove"
|
175 |
+
msgstr "Rimuovi"
|
176 |
+
|
177 |
+
#: ../dashboard.php:270
|
178 |
+
msgid "Lockout for %s was removed"
|
179 |
+
msgstr "Il blocco per %s è stato rimosso"
|
180 |
+
|
181 |
+
#: ../dashboard.php:102 ../dashboard.php:483 ../dashboard.php:663 ../dashboard.
|
182 |
+
#: php:902 ../wp-cerber.php:2822 ../settings.php:61 ../settings.php:192
|
183 |
+
msgid "White IP Access List"
|
184 |
+
msgstr "White List degli indirizzi IP"
|
185 |
+
|
186 |
+
#: ../dashboard.php:104 ../dashboard.php:484 ../dashboard.php:665 ../dashboard.
|
187 |
+
#: php:903
|
188 |
+
msgid "Black IP Access List"
|
189 |
+
msgstr "Black List degli indirizzi IP"
|
190 |
+
|
191 |
+
#: ../dashboard.php:126
|
192 |
+
msgid "List is empty"
|
193 |
+
msgstr "Lista è vuota"
|
194 |
+
|
195 |
+
#: ../dashboard.php:153
|
196 |
+
msgid "Address %s was added to White IP Access List"
|
197 |
+
msgstr "L' indirizzo %s è stato aggiunto agli indirizzi IP della tua White List"
|
198 |
+
|
199 |
+
#: ../dashboard.php:166
|
200 |
+
msgid "Address %s was added to Black IP Access List"
|
201 |
+
msgstr "L'indirizzo %s è stato aggiunto agli indirizzi IP della Black List"
|
202 |
+
|
203 |
+
#: ../wp-cerber.php:2368
|
204 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
205 |
+
msgstr "La modalità Citadel viene attivata dopo %d tentativi di accesso non riusciti in %d minuti."
|
206 |
+
|
207 |
+
#: ../dashboard.php:1205
|
208 |
+
msgid "View Activity"
|
209 |
+
msgstr "Vedi attività"
|
210 |
+
|
211 |
+
#: ../cerber-tools.php:86 ../cerber-tools.php:95
|
212 |
+
msgid "Settings"
|
213 |
+
msgstr "Impostazioni"
|
214 |
+
|
215 |
+
#: ../dashboard.php:803
|
216 |
+
msgid "Last login"
|
217 |
+
msgstr "Ultimo login"
|
218 |
+
|
219 |
+
#: ../dashboard.php:830 ../dashboard.php:885
|
220 |
+
msgid "Never"
|
221 |
+
msgstr "Mai"
|
222 |
+
|
223 |
+
#: ../dashboard.php:1125
|
224 |
+
msgid "Are you sure?"
|
225 |
+
msgstr "Sei sicuro?"
|
226 |
+
|
227 |
+
#: ../settings.php:63
|
228 |
+
msgid "My site is behind a reverse proxy"
|
229 |
+
msgstr "l mio sito è dietro un proxy inverso"
|
230 |
+
|
231 |
+
#: ../settings.php:67
|
232 |
+
msgid "Non-existent users"
|
233 |
+
msgstr "Utenti inesistenti"
|
234 |
+
|
235 |
+
#: ../settings.php:67
|
236 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
237 |
+
msgstr "Blocca Immediatamente l'IP quando si tenta di accedere con un nome utente inesistente"
|
238 |
+
|
239 |
+
#: ../settings.php:68
|
240 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
241 |
+
msgstr "Disabilita il reindirizzamento automatico alla pagina di login quando / wp-admin / viene richiamata da una richiesta non autorizzata"
|
242 |
+
|
243 |
+
#: ../settings.php:178
|
244 |
+
msgid "Make your protection smarter!"
|
245 |
+
msgstr "Fai la tua protezione più intelligente!"
|
246 |
+
|
247 |
+
#: ../settings.php:182
|
248 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
249 |
+
msgstr "Per favore abilita Permalinks per utilizzare questa funzionalità. Configura le Impostazioni del Permalink diversamente dal Predefinito."
|
250 |
+
|
251 |
+
#: ../settings.php:185
|
252 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
253 |
+
msgstr "Fare attenzione quando si abilita queste opzione. Se dimentichi l'URL di login personalizzato, non sarai più in grado di accedere."
|
254 |
+
|
255 |
+
#: ../wp-cerber.php:2827 ../settings.php:228
|
256 |
+
msgid "Main Settings"
|
257 |
+
msgstr "Impostazioni Principali"
|
258 |
+
|
259 |
+
#: ../settings.php:240
|
260 |
+
msgid "Help"
|
261 |
+
msgstr "Aiuto"
|
262 |
+
|
263 |
+
#: ../settings.php:358
|
264 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
265 |
+
msgstr "Aumenta la durata del blocco a %s ore dopo %s blocchi nelle ultime %s ore"
|
266 |
+
|
267 |
+
#: ../wp-cerber.php:215
|
268 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
269 |
+
msgstr "Non è consentito l'accesso. Chiedere assistenza all'amministratore."
|
270 |
+
|
271 |
+
#: ../wp-cerber.php:221
|
272 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
273 |
+
msgstr "Hai raggiunto il limite dei tentativi di accesso. Riprova in %d minuti."
|
274 |
+
|
275 |
+
#: ../wp-cerber.php:240
|
276 |
+
msgid "You have only one attempt remaining."
|
277 |
+
msgid_plural "You have %d attempts remaining."
|
278 |
+
msgstr[0] "Hai un solo tentativo rimanente."
|
279 |
+
msgstr[1] "Hai %d tentativi rimanenti."
|
280 |
+
|
281 |
+
#: ../dashboard.php:515
|
282 |
+
msgid "No activity has been logged."
|
283 |
+
msgstr "Nessuna attività è stata registrata."
|
284 |
+
|
285 |
+
#: ../dashboard.php:77
|
286 |
+
msgid "Expires"
|
287 |
+
msgstr "Scade"
|
288 |
+
|
289 |
+
#: ../dashboard.php:89
|
290 |
+
msgid "No lockouts at the moment. The sky is clear."
|
291 |
+
msgstr "Nessun blocco al momento. Il cielo è limpido."
|
292 |
+
|
293 |
+
#: ../dashboard.php:102
|
294 |
+
msgid "These IPs will never be locked out"
|
295 |
+
msgstr "Questi IP non saranno mai bloccati"
|
296 |
+
|
297 |
+
#: ../dashboard.php:106
|
298 |
+
msgid "Your IP"
|
299 |
+
msgstr "Il tuo IP"
|
300 |
+
|
301 |
+
#: ../dashboard.php:162
|
302 |
+
msgid "You can't add your IP address"
|
303 |
+
msgstr "Non puoi aggiungere il tuo indirizzo IP"
|
304 |
+
|
305 |
+
#: ../wp-cerber.php:2369
|
306 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
307 |
+
msgstr "L'ultimo tentativo non riuscito è stato a %s dall'IP %s con accesso utente: %s."
|
308 |
+
|
309 |
+
#: ../wp-cerber.php:2432
|
310 |
+
msgid "Change notification settings"
|
311 |
+
msgstr "Modificare le impostazioni di notifica"
|
312 |
+
|
313 |
+
#: ../wp-cerber.php:2805
|
314 |
+
msgid "Can't activate WP Cerber due to a database error."
|
315 |
+
msgstr "Non è possibile attivare WP Cerber a causa di un errore nel database."
|
316 |
+
|
317 |
+
#: ../settings.php:365
|
318 |
+
msgid "Notify admin if the number of active lockouts above"
|
319 |
+
msgstr "Notifica all'amministratore se il numero di blocchi attivi supera"
|
320 |
+
|
321 |
+
#: ../settings.php:83 ../settings.php:126
|
322 |
+
msgid "days"
|
323 |
+
msgstr "giorni"
|
324 |
+
|
325 |
+
#: ../dashboard.php:854
|
326 |
+
msgid "Cerber Quick View"
|
327 |
+
msgstr "Cerber Quick View"
|
328 |
+
|
329 |
+
#: ../dashboard.php:85
|
330 |
+
msgid "Hint"
|
331 |
+
msgstr "Aiuto"
|
332 |
+
|
333 |
+
#: ../dashboard.php:85
|
334 |
+
msgid "To view activity, click on the IP"
|
335 |
+
msgstr "Per visualizzare l'attività clicca sull'IP"
|
336 |
+
|
337 |
+
#: ../dashboard.php:123 ../dashboard.php:695
|
338 |
+
msgid "Check for activity"
|
339 |
+
msgstr "Controllo Attività"
|
340 |
+
|
341 |
+
#: ../settings.php:66
|
342 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
343 |
+
msgstr "Blocca sempre l'intera subnet Classe C degli indirizzi IP degli intrusi"
|
344 |
+
|
345 |
+
#: ../settings.php:80 ../settings.php:367
|
346 |
+
msgid "Click to send test"
|
347 |
+
msgstr "Clicca per inviare il test"
|
348 |
+
|
349 |
+
#: ../settings.php:460
|
350 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
351 |
+
msgstr "Attenzione! Hai cambiato l'URL di accesso! Il nuovo URL di accesso è"
|
352 |
+
|
353 |
+
#: ../dashboard.php:802
|
354 |
+
msgid "Comments"
|
355 |
+
msgstr "Commenti"
|
356 |
+
|
357 |
+
#: ../dashboard.php:805
|
358 |
+
msgid "Date of registration"
|
359 |
+
msgstr "Data di registrazione"
|
360 |
+
|
361 |
+
#: ../dashboard.php:259
|
362 |
+
msgid "Message has been sent to "
|
363 |
+
msgstr "Il messaggio è stato spedito a"
|
364 |
+
|
365 |
+
#: ../dashboard.php:1286
|
366 |
+
msgid "Update to version %s of WP Cerber"
|
367 |
+
msgstr "Aggiornamento alla versione %s di WP Cerber"
|
368 |
+
|
369 |
+
#: ../wp-cerber.php:2370 ../wp-cerber.php:2720
|
370 |
+
msgid "View activity in dashboard"
|
371 |
+
msgstr "Vedi attività nel pannello"
|
372 |
+
|
373 |
+
#: ../wp-cerber.php:2400
|
374 |
+
msgid "Number of active lockouts"
|
375 |
+
msgstr "Numero di blocchi attivi"
|
376 |
+
|
377 |
+
#: ../wp-cerber.php:2404
|
378 |
+
msgid "View lockouts in dashboard"
|
379 |
+
msgstr "Vedi blocchi nel pannello"
|
380 |
+
|
381 |
+
#: ../wp-cerber.php:2457
|
382 |
+
msgid "This message was sent by"
|
383 |
+
msgstr "Questo messaggio è stato inviato da"
|
384 |
+
|
385 |
+
#: ../dashboard.php:749 ../cerber-tools.php:43
|
386 |
+
msgid "Tools"
|
387 |
+
msgstr "Strumenti"
|
388 |
+
|
389 |
+
#: ../cerber-tools.php:83
|
390 |
+
msgid "Export settings to the file"
|
391 |
+
msgstr "Esporta le impostazione nel file"
|
392 |
+
|
393 |
+
#: ../cerber-tools.php:84
|
394 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
395 |
+
msgstr "Quando fai clic sul pulsante qui sotto otterrai un file di configurazione che puoi caricare su un altro sito."
|
396 |
+
|
397 |
+
#: ../cerber-tools.php:85
|
398 |
+
msgid "What do you want to export?"
|
399 |
+
msgstr "Cosa vuoi esportare?"
|
400 |
+
|
401 |
+
#: ../cerber-tools.php:88
|
402 |
+
msgid "Download file"
|
403 |
+
msgstr "Scarica file"
|
404 |
+
|
405 |
+
#: ../cerber-tools.php:90
|
406 |
+
msgid "Import settings from the file"
|
407 |
+
msgstr "importa impostazioni dal file"
|
408 |
+
|
409 |
+
#: ../cerber-tools.php:91
|
410 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
411 |
+
msgstr "Quando si fa clic sul pulsante in basso, il file verrà caricato e tutte le impostazioni esistenti saranno sovrascritte."
|
412 |
+
|
413 |
+
#: ../cerber-tools.php:92
|
414 |
+
msgid "Select file to import."
|
415 |
+
msgstr "Seleziona il file da importare."
|
416 |
+
|
417 |
+
#: ../cerber-tools.php:92
|
418 |
+
msgid "Maximum upload file size: %s."
|
419 |
+
msgstr "Massima dimensione del file da caricare: %s."
|
420 |
+
|
421 |
+
#: ../cerber-tools.php:95
|
422 |
+
msgid "What do you want to import?"
|
423 |
+
msgstr "Cosa vuoi importare?"
|
424 |
+
|
425 |
+
#: ../cerber-tools.php:97
|
426 |
+
msgid "Upload file"
|
427 |
+
msgstr "Carica file"
|
428 |
+
|
429 |
+
#: ../cerber-tools.php:132
|
430 |
+
msgid "No file was uploaded or file is corrupted"
|
431 |
+
msgstr "Nessun file è stato caricato o il file è danneggiato"
|
432 |
+
|
433 |
+
#: ../cerber-tools.php:162
|
434 |
+
msgid "Error while updating"
|
435 |
+
msgstr "Errore durante l'aggiornamento"
|
436 |
+
|
437 |
+
#: ../cerber-tools.php:165
|
438 |
+
msgid "Settings has imported successfully from"
|
439 |
+
msgstr "Le impostazioni sono state importate con successo da"
|
440 |
+
|
441 |
+
#: ../cerber-tools.php:169
|
442 |
+
msgid "Error while parsing file"
|
443 |
+
msgstr "Errore nell'interpretazione del file "
|
444 |
+
|
445 |
+
#: ../dashboard.php:77 ../dashboard.php:502
|
446 |
+
msgid "Hostname"
|
447 |
+
msgstr "Nome Host"
|
448 |
+
|
449 |
+
#: ../dashboard.php:237
|
450 |
+
msgid "unknown"
|
451 |
+
msgstr "sconosciuto"
|
452 |
+
|
453 |
+
#: ../settings.php:83
|
454 |
+
msgid "Keep records for"
|
455 |
+
msgstr "Mantenere i record per"
|
456 |
+
|
457 |
+
#: ../dashboard.php:889
|
458 |
+
msgid "active"
|
459 |
+
msgstr "Attiva"
|
460 |
+
|
461 |
+
#: ../dashboard.php:889
|
462 |
+
msgid "deactivate"
|
463 |
+
msgstr "Disattiva"
|
464 |
+
|
465 |
+
#: ../dashboard.php:891
|
466 |
+
msgid "not active"
|
467 |
+
msgstr "Non Attivo"
|
468 |
+
|
469 |
+
#: ../dashboard.php:892
|
470 |
+
msgid "disabled"
|
471 |
+
msgstr "Disabilitato"
|
472 |
+
|
473 |
+
#: ../dashboard.php:897
|
474 |
+
msgid "failed attempts"
|
475 |
+
msgstr "Tentativi falliti"
|
476 |
+
|
477 |
+
#: ../dashboard.php:897 ../dashboard.php:898
|
478 |
+
msgid "in 24 hours"
|
479 |
+
msgstr "in 24 ore"
|
480 |
+
|
481 |
+
#: ../dashboard.php:897 ../dashboard.php:898
|
482 |
+
msgid "view all"
|
483 |
+
msgstr "guarda tutto"
|
484 |
+
|
485 |
+
#: ../dashboard.php:898
|
486 |
+
msgid "lockouts"
|
487 |
+
msgstr "Bloccati"
|
488 |
+
|
489 |
+
#: ../dashboard.php:900
|
490 |
+
msgid "Lockouts at the moment"
|
491 |
+
msgstr "Bloccati al momento"
|
492 |
+
|
493 |
+
#: ../dashboard.php:901
|
494 |
+
msgid "Last lockout"
|
495 |
+
msgstr "Ultimo bloccato"
|
496 |
+
|
497 |
+
#: ../dashboard.php:902 ../dashboard.php:903 ../dashboard.php:1392
|
498 |
+
msgid "entry"
|
499 |
+
msgid_plural "entries"
|
500 |
+
msgstr[0] "accesso"
|
501 |
+
msgstr[1] "accessi"
|
502 |
+
|
503 |
+
#: ../dashboard.php:1120
|
504 |
+
msgid "Confused about some settings?"
|
505 |
+
msgstr "Confuso da alcune impostazioni?"
|
506 |
+
|
507 |
+
#: ../dashboard.php:1121
|
508 |
+
msgid "You can easily load default recommended settings using button below"
|
509 |
+
msgstr "È possibile caricare facilmente le impostazioni predefinite consigliate utilizzando il pulsante sottostante"
|
510 |
+
|
511 |
+
#: ../dashboard.php:1123
|
512 |
+
msgid "Load default settings"
|
513 |
+
msgstr "Caricare le impostazioni di default"
|
514 |
+
|
515 |
+
#: ../dashboard.php:1131
|
516 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
517 |
+
msgstr "Non influenza l'URL di accesso personalizzato e le liste di accesso"
|
518 |
+
|
519 |
+
#: ../dashboard.php:1150
|
520 |
+
msgid "Donate"
|
521 |
+
msgstr "Dona"
|
522 |
+
|
523 |
+
#: ../dashboard.php:1280
|
524 |
+
msgid "New version is available"
|
525 |
+
msgstr "Nuova versione disponibile"
|
526 |
+
|
527 |
+
#. Name of the plugin
|
528 |
+
#: ../dashboard.php:744 ../dashboard.php:759
|
529 |
+
msgid "WP Cerber"
|
530 |
+
msgstr "WP Cerber"
|
531 |
+
|
532 |
+
#. URI of the plugin
|
533 |
+
#:
|
534 |
+
msgid "http://wpcerber.com"
|
535 |
+
msgstr "http://wpcerber.com"
|
536 |
+
|
537 |
+
#: ../wp-cerber.php:2348
|
538 |
+
msgid "WP Cerber notify"
|
539 |
+
msgstr "Notifica di WP Cerber"
|
540 |
+
|
541 |
+
#: ../wp-cerber.php:2366
|
542 |
+
msgid "Citadel mode is activated"
|
543 |
+
msgstr "Citadel mode attivata"
|
544 |
+
|
545 |
+
#: ../wp-cerber.php:2437
|
546 |
+
msgid "New Custom login URL"
|
547 |
+
msgstr "Nuovo URL di accesso personalizzato"
|
548 |
+
|
549 |
+
#: ../wp-cerber.php:2796
|
550 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
551 |
+
msgstr "Il Cerber WP richiede PHP %s o superiore. Stai utilizzando"
|
552 |
+
|
553 |
+
#: ../wp-cerber.php:2800
|
554 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
555 |
+
msgstr "Il Cerber WP richiede WordPress %s o superiore. Stai utilizzando"
|
556 |
+
|
557 |
+
#: ../settings.php:86
|
558 |
+
msgid "Use file"
|
559 |
+
msgstr "Usa file"
|
560 |
+
|
561 |
+
#: ../settings.php:86
|
562 |
+
msgid "Write failed login attempts to the file"
|
563 |
+
msgstr "Scrivi i tentativi di accesso non riusciti nel file"
|
564 |
+
|
565 |
+
#: ../dashboard.php:804
|
566 |
+
msgid "Failed attempts in last 24 hours"
|
567 |
+
msgstr "Tentativi non riusciti nelle ultime 24 ore"
|
568 |
+
|
569 |
+
#: ../dashboard.php:1204
|
570 |
+
msgid "Deactivate"
|
571 |
+
msgstr "Disattivato"
|
572 |
+
|
573 |
+
#: ../dashboard.php:77 ../wp-cerber.php:2402
|
574 |
+
msgid "Reason"
|
575 |
+
msgstr "Ragione"
|
576 |
+
|
577 |
+
#: ../dashboard.php:130
|
578 |
+
msgid "Add IP to the list"
|
579 |
+
msgstr "Aggiungi IP alla lista"
|
580 |
+
|
581 |
+
#: ../dashboard.php:713
|
582 |
+
msgid "Add IP to the Black List"
|
583 |
+
msgstr "Aggiungi IP alla Black List"
|
584 |
+
|
585 |
+
#: ../common.php:376
|
586 |
+
msgid "Attempt to access"
|
587 |
+
msgstr "Tentativi di accesso"
|
588 |
+
|
589 |
+
#: ../common.php:375
|
590 |
+
msgid "Limit on login attempts is reached"
|
591 |
+
msgstr "È stato raggiunto il limite dei tentativi di accesso"
|
592 |
+
|
593 |
+
#: ../common.php:362 ../common.php:377
|
594 |
+
msgid "Attempt to log in with non-existent username"
|
595 |
+
msgstr "Tentativo di accesso con un nome utente inesistente"
|
596 |
+
|
597 |
+
#: ../wp-cerber.php:2401
|
598 |
+
msgid "Last lockout was added: %s for IP %s"
|
599 |
+
msgstr "L'ultimo blocco è stato aggiunto: %s per IP %s"
|
600 |
+
|
601 |
+
#: ../wp-cerber.php:2824
|
602 |
+
msgid "It's important to check security settings."
|
603 |
+
msgstr "È importante controllare le impostazioni di sicurezza."
|
604 |
+
|
605 |
+
#: ../wp-cerber.php:2829 ../settings.php:233
|
606 |
+
msgid "Hardening"
|
607 |
+
msgstr "Rendi sicuro"
|
608 |
+
|
609 |
+
#: ../dashboard.php:691
|
610 |
+
msgid "Abuse email:"
|
611 |
+
msgstr "Email di abuso:"
|
612 |
+
|
613 |
+
#: ../settings.php:154
|
614 |
+
msgid "Email Address"
|
615 |
+
msgstr "Indirizzo email"
|
616 |
+
|
617 |
+
#: ../settings.php:154
|
618 |
+
msgid "if empty, the admin email %s will be used"
|
619 |
+
msgstr "Se vuota, verrà utilizzata l'email amministratore %s"
|
620 |
+
|
621 |
+
#: ../settings.php:89
|
622 |
+
msgid "Drill down IP"
|
623 |
+
msgstr "IP Bucati"
|
624 |
+
|
625 |
+
#: ../settings.php:89
|
626 |
+
msgid "Retrieve extra WHOIS information for IP"
|
627 |
+
msgstr "Recuperare informazioni aggiuntive WHOIS per l'indirizzo IP"
|
628 |
+
|
629 |
+
#: ../settings.php:97
|
630 |
+
msgid "Hardening WordPress"
|
631 |
+
msgstr "Rendi più sicuro WordPress"
|
632 |
+
|
633 |
+
#: ../settings.php:98
|
634 |
+
msgid "Stop user enumeration"
|
635 |
+
msgstr "Ferma l'enumerazione dell'utente"
|
636 |
+
|
637 |
+
#: ../settings.php:98
|
638 |
+
msgid "Block access to the pages like /?author=n"
|
639 |
+
msgstr "Blocca l'accesso alle pagine come /?author=n"
|
640 |
+
|
641 |
+
#: ../settings.php:99
|
642 |
+
msgid "Disable XML-RPC"
|
643 |
+
msgstr "Disabilita XML-RPC"
|
644 |
+
|
645 |
+
#: ../settings.php:99
|
646 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
647 |
+
msgstr "Bloccare l'accesso al server XML-RPC (inclusi Pingback e Trackback)"
|
648 |
+
|
649 |
+
#: ../settings.php:100
|
650 |
+
msgid "Disable feeds"
|
651 |
+
msgstr "Disabilita feeds"
|
652 |
+
|
653 |
+
#: ../settings.php:100
|
654 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
655 |
+
msgstr "Blocca accesso agli RSS, Atom e RDF feeds"
|
656 |
+
|
657 |
+
#: ../settings.php:101
|
658 |
+
msgid "Disable REST API"
|
659 |
+
msgstr "Disabilita REST API"
|
660 |
+
|
661 |
+
#: ../settings.php:101
|
662 |
+
msgid "Block access to the WordPress REST API"
|
663 |
+
msgstr "Blocca accesso alle REST API di WordPress"
|
664 |
+
|
665 |
+
#: ../settings.php:192
|
666 |
+
msgid "These settings do not affect hosts from the "
|
667 |
+
msgstr "Queste impostazioni non influenzano gli host del"
|
668 |
+
|
669 |
+
#: ../settings.php:540
|
670 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
671 |
+
msgstr "<strong>ERRORE</strong>: inserisci un indirizzo email valido."
|
672 |
+
|
673 |
+
#: ../wp-cerber.php:2431 ../wp-cerber.php:2821
|
674 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
675 |
+
msgstr "WP Cerber è attivo e ha iniziato a proteggere il tuo sito"
|
676 |
+
|
677 |
+
#: ../dashboard.php:77
|
678 |
+
msgid "Action"
|
679 |
+
msgstr "Azione"
|
680 |
+
|
681 |
+
#: ../dashboard.php:104
|
682 |
+
msgid "Nobody can log in or register from these IPs"
|
683 |
+
msgstr "Nessuno con questi indirizzi IP potrà accedere o registrarsi"
|
684 |
+
|
685 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
686 |
+
msgid "Incorrect IP address or IP range"
|
687 |
+
msgstr "Indirizzo IP o Range IP non corretto "
|
688 |
+
|
689 |
+
#: ../dashboard.php:262
|
690 |
+
msgid "Unable to send notification email"
|
691 |
+
msgstr "Non è stato possibile inviare l'email di notifica"
|
692 |
+
|
693 |
+
#: ../dashboard.php:287 ../dashboard.php:1220
|
694 |
+
msgid "Settings saved"
|
695 |
+
msgstr "Impostazioni salvate"
|
696 |
+
|
697 |
+
#: ../dashboard.php:695
|
698 |
+
msgid "Network:"
|
699 |
+
msgstr "Rete"
|
700 |
+
|
701 |
+
#: ../dashboard.php:709
|
702 |
+
msgid "Add network to the Black List"
|
703 |
+
msgstr "Aggiungi rete alla Black List"
|
704 |
+
|
705 |
+
#: ../dashboard.php:1203
|
706 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
707 |
+
msgstr "Attenzione! La modalità Citadel è attiva. Nessuno è in grado di effettuare il login."
|
708 |
+
|
709 |
+
#: ../whois.php:210 ../common.php:374
|
710 |
+
msgid "Unknown"
|
711 |
+
msgstr "Sconosciuto"
|
712 |
+
|
713 |
+
#. Description of the plugin
|
714 |
+
#:
|
715 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
716 |
+
msgstr "Protegge il sito da attacchi di forza bruta, bot e hacker. Protezione antispam con reCAPTCHA. Controllo completo delle attività degli utenti. Limita il login attraverso le liste di accesso degli IP. Limita i tentativi di accesso. Sentitevi liberi di contattare lo sviluppatore sul sito <a href=\"http://wpcerber.com\"> wpcerber.com </a>."
|
717 |
+
|
718 |
+
#. Author of the plugin
|
719 |
+
#:
|
720 |
+
msgid "Gregory"
|
721 |
+
msgstr "Gregory"
|
722 |
+
|
723 |
+
#: ../wp-cerber.php:560 ../wp-cerber.php:572 ../wp-cerber.php:579 ../wp-cerber.
|
724 |
+
#: php:717 ../wp-cerber.php:922 ../wp-cerber.php:927 ../wp-cerber.php:932 ../wp-
|
725 |
+
#: cerber.php:938 ../wp-cerber.php:968 ../wp-cerber.php:1062 ../common.php:128 ..
|
726 |
+
#: /common.php:181 ../common.php:185 ../settings.php:513
|
727 |
+
msgid "ERROR:"
|
728 |
+
msgstr "ERRORE:"
|
729 |
+
|
730 |
+
#: ../wp-cerber.php:589
|
731 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
732 |
+
msgstr "Verifica fallita. Fai clic sulla casella quadrata nel blocco reCAPTCHA di seguito."
|
733 |
+
|
734 |
+
#: ../wp-cerber.php:728
|
735 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
736 |
+
msgstr "<strong>ERRORE</strong>: La password inserita per lo username %s non è corretta."
|
737 |
+
|
738 |
+
#: ../wp-cerber.php:933
|
739 |
+
msgid "Username is not allowed. Please choose another one."
|
740 |
+
msgstr "Non è consentito utilizzare questo nome utente. Sceglierne un altro."
|
741 |
+
|
742 |
+
#: ../wp-cerber.php:2395
|
743 |
+
msgid "unspecified"
|
744 |
+
msgstr "non specificato"
|
745 |
+
|
746 |
+
#: ../wp-cerber.php:2398
|
747 |
+
msgid "Number of lockouts is increasing"
|
748 |
+
msgstr "Numero di blocchi in aumento"
|
749 |
+
|
750 |
+
#: ../wp-cerber.php:2403
|
751 |
+
msgid "View activity for this IP"
|
752 |
+
msgstr "Vedi attività per questo IP"
|
753 |
+
|
754 |
+
#: ../wp-cerber.php:2407 ../wp-cerber.php:2409
|
755 |
+
msgid "A new version of WP Cerber is available to install"
|
756 |
+
msgstr "È disponibile una nuova versione di WP Cerber"
|
757 |
+
|
758 |
+
#: ../wp-cerber.php:2408
|
759 |
+
msgid "Hi!"
|
760 |
+
msgstr "Ciao!"
|
761 |
+
|
762 |
+
#: ../wp-cerber.php:2410 ../wp-cerber.php:2421
|
763 |
+
msgid "Website"
|
764 |
+
msgstr "Sito web"
|
765 |
+
|
766 |
+
#: ../wp-cerber.php:2413 ../wp-cerber.php:2414
|
767 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
768 |
+
msgstr "Il plugin di sicurezza WP Cerber è stato disattivato"
|
769 |
+
|
770 |
+
#: ../wp-cerber.php:2416
|
771 |
+
msgid "Not logged in"
|
772 |
+
msgstr "Non loggato"
|
773 |
+
|
774 |
+
#: ../wp-cerber.php:2422
|
775 |
+
msgid "By user"
|
776 |
+
msgstr "Dall'Utente "
|
777 |
+
|
778 |
+
#: ../wp-cerber.php:2423
|
779 |
+
msgid "From IP address"
|
780 |
+
msgstr "Dall'indirizzo IP"
|
781 |
+
|
782 |
+
#: ../wp-cerber.php:2426
|
783 |
+
msgid "From country"
|
784 |
+
msgstr "Dalla Nazione"
|
785 |
+
|
786 |
+
#: ../wp-cerber.php:2430
|
787 |
+
msgid "The WP Cerber security plugin is now active"
|
788 |
+
msgstr "Il plugin di protezione WP Cerber è attivo"
|
789 |
+
|
790 |
+
#: ../wp-cerber.php:2822
|
791 |
+
msgid "Your IP address is added to the"
|
792 |
+
msgstr "Il tuo indirizzo IP è stato aggiunto al"
|
793 |
+
|
794 |
+
#: ../wp-cerber.php:2831
|
795 |
+
msgid "Import settings"
|
796 |
+
msgstr "Importa impostazioni"
|
797 |
+
|
798 |
+
#: ../settings.php:155
|
799 |
+
msgid "Notification limit"
|
800 |
+
msgstr "Limiti di notifica"
|
801 |
+
|
802 |
+
#: ../settings.php:155
|
803 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
804 |
+
msgstr "email di notifiche consentite per ora (0 significa illimitato)"
|
805 |
+
|
806 |
+
#: ../settings.php:110
|
807 |
+
msgid "User related settings"
|
808 |
+
msgstr "Impostazioni correlate agli utenti"
|
809 |
+
|
810 |
+
#: ../settings.php:111
|
811 |
+
msgid "Prohibited usernames"
|
812 |
+
msgstr "Nomi utente proibiti"
|
813 |
+
|
814 |
+
#: ../settings.php:111
|
815 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
816 |
+
msgstr "I nomi utente di questo elenco non possono accedere o registrarsi. Qualsiasi indirizzo IP, che ha cercato di utilizzare uno di questi nomi utente, sarà immediatamente bloccato. Usa la virgola per separare i nominativi."
|
817 |
+
|
818 |
+
#: ../settings.php:112
|
819 |
+
msgid "User session expire"
|
820 |
+
msgstr "Sessione utente scade"
|
821 |
+
|
822 |
+
#: ../settings.php:112
|
823 |
+
msgid "in minutes (leave empty to use default WP value)"
|
824 |
+
msgstr "In minuti (lasciare vuoto per utilizzare il valore predefinito WP)"
|
825 |
+
|
826 |
+
#: ../settings.php:129
|
827 |
+
msgid "reCAPTCHA settings"
|
828 |
+
msgstr "Impostazioni reCAPTCHA"
|
829 |
+
|
830 |
+
#: ../settings.php:130
|
831 |
+
msgid "Site key"
|
832 |
+
msgstr "Chiave del sito"
|
833 |
+
|
834 |
+
#: ../settings.php:131
|
835 |
+
msgid "Secret key"
|
836 |
+
msgstr "Chiave segreta"
|
837 |
+
|
838 |
+
#: ../settings.php:134
|
839 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
840 |
+
msgstr "Abilita reCAPTCHA per il modulo di registrazione di WordPress"
|
841 |
+
|
842 |
+
#: ../settings.php:137
|
843 |
+
msgid "Lost password form"
|
844 |
+
msgstr "Modulo per il recupero della password dimenticata"
|
845 |
+
|
846 |
+
#: ../settings.php:140
|
847 |
+
msgid "Login form"
|
848 |
+
msgstr "Modulo di accesso"
|
849 |
+
|
850 |
+
#: ../settings.php:140
|
851 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
852 |
+
msgstr "Attiva reCAPTCHA per il modulo di accesso di WordPress"
|
853 |
+
|
854 |
+
#: ../settings.php:195
|
855 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
856 |
+
msgstr "Prima di iniziare a utilizzare reCAPTCHA, è necessario ottenere la Chiave Sito e la Chiave Segreta sul sito web di Google"
|
857 |
+
|
858 |
+
#: ../cerber-lab.php:580 ../settings.php:196
|
859 |
+
msgid "Know more"
|
860 |
+
msgstr "Saperne di più"
|
861 |
+
|
862 |
+
#: ../dashboard.php:744 ../settings.php:215
|
863 |
+
msgid "WP Cerber Security"
|
864 |
+
msgstr "WP Cerber Security"
|
865 |
+
|
866 |
+
#: ../settings.php:235
|
867 |
+
msgid "Users"
|
868 |
+
msgstr "Utenti"
|
869 |
+
|
870 |
+
#: ../common.php:333
|
871 |
+
msgid "User created"
|
872 |
+
msgstr "Utente creato"
|
873 |
+
|
874 |
+
#: ../dashboard.php:1076 ../common.php:334
|
875 |
+
msgid "User registered"
|
876 |
+
msgstr "Utente registrato"
|
877 |
+
|
878 |
+
#: ../common.php:357
|
879 |
+
msgid "reCAPTCHA verification failed"
|
880 |
+
msgstr "Verifica reCAPTCHA fallita"
|
881 |
+
|
882 |
+
#: ../common.php:358
|
883 |
+
msgid "reCAPTCHA settings are incorrect"
|
884 |
+
msgstr "le impostazioni reCAPTCHA sono non correte"
|
885 |
+
|
886 |
+
#: ../common.php:361
|
887 |
+
msgid "Attempt to access prohibited URL"
|
888 |
+
msgstr "Tentativo di accesso ad URL proibita"
|
889 |
+
|
890 |
+
#: ../common.php:363 ../common.php:378
|
891 |
+
msgid "Attempt to log in with prohibited username"
|
892 |
+
msgstr "Tentativo di accesso con username proibito"
|
893 |
+
|
894 |
+
#: ../settings.php:84
|
895 |
+
msgid "Cerber Lab connection"
|
896 |
+
msgstr "Connessione al Cerber Lab"
|
897 |
+
|
898 |
+
#: ../settings.php:84
|
899 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
900 |
+
msgstr "Invia indirizzi IP dannosi al Cerberus Lab"
|
901 |
+
|
902 |
+
#: ../settings.php:85
|
903 |
+
msgid "Cerber Lab protocol"
|
904 |
+
msgstr "Protocollo Cerber Lab"
|
905 |
+
|
906 |
+
#: ../settings.php:121 ../settings.php:134
|
907 |
+
msgid "Registration form"
|
908 |
+
msgstr "Form di registrazione"
|
909 |
+
|
910 |
+
#: ../settings.php:135
|
911 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
912 |
+
msgstr "Attiva reCAPTCHA per il modulo di registrazione WooCommerce"
|
913 |
+
|
914 |
+
#: ../settings.php:137
|
915 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
916 |
+
msgstr "Attiva reCAPTCHA per il modulo di recupero della password di WordPress"
|
917 |
+
|
918 |
+
#: ../settings.php:138
|
919 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
920 |
+
msgstr "Abilita reCAPTCHA per il form del recupero della password di WooCommerce"
|
921 |
+
|
922 |
+
#: ../settings.php:141
|
923 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
924 |
+
msgstr "Attiva reCAPTCHA per il modulo di accesso WooCommerce"
|
925 |
+
|
926 |
+
#: ../common.php:359
|
927 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
928 |
+
msgstr "Richiesta al servizio Google reCAPTCHA non riuscita"
|
929 |
+
|
930 |
+
#: ../dashboard.php:1068 ../dashboard.php:1097
|
931 |
+
msgid "View all"
|
932 |
+
msgstr "Vedi tutto"
|
933 |
+
|
934 |
+
#: ../dashboard.php:1098
|
935 |
+
msgid "Recently locked out IP addresses"
|
936 |
+
msgstr "Indirizzi IP bloccati di recente"
|
937 |
+
|
938 |
+
#: ../cerber-lab.php:578
|
939 |
+
msgid "OK, nail them all"
|
940 |
+
msgstr "OK, chiudili tutti"
|
941 |
+
|
942 |
+
#: ../cerber-lab.php:579
|
943 |
+
msgid "NO, maybe later"
|
944 |
+
msgstr "NO, forse più tardi"
|
945 |
+
|
946 |
+
#: ../dashboard.php:746 ../dashboard.php:910 ../dashboard.php:1412 ../settings.
|
947 |
+
#: php:220
|
948 |
+
msgid "Dashboard"
|
949 |
+
msgstr "Bacheca"
|
950 |
+
|
951 |
+
#: ../cerber-lab.php:576
|
952 |
+
msgid "Want to make WP Cerber even more powerful?"
|
953 |
+
msgstr "Vuoi rendere WP Cerber ancora più potente?"
|
954 |
+
|
955 |
+
#: ../cerber-lab.php:577
|
956 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
957 |
+
msgstr "Consenti a WP Cerber di inviare indirizzi IP dannosi al Cerber Lab. Questo aiuta il team a sviluppare nuovi algoritmi per WP Cerber che difenderanno WordPress contro nuove minacce e botnet che nascono ogni giorno. Puoi disattivare l'invio delle impostazioni del plugin in qualsiasi momento."
|
958 |
+
|
959 |
+
#: ../dashboard.php:355
|
960 |
+
msgid "IP address"
|
961 |
+
msgstr "Indirizzo IP"
|
962 |
+
|
963 |
+
#: ../dashboard.php:355
|
964 |
+
msgid "User login"
|
965 |
+
msgstr "Login utente"
|
966 |
+
|
967 |
+
#: ../dashboard.php:355
|
968 |
+
msgid "User ID"
|
969 |
+
msgstr "ID Utente"
|
970 |
+
|
971 |
+
#: ../dashboard.php:511
|
972 |
+
msgid "Export"
|
973 |
+
msgstr "Esporta"
|
974 |
+
|
975 |
+
#: ../dashboard.php:521
|
976 |
+
msgid "All activities"
|
977 |
+
msgstr "Tutte le attività"
|
978 |
+
|
979 |
+
#: ../dashboard.php:530
|
980 |
+
msgid "Search for IP or username"
|
981 |
+
msgstr "Ricerca per IP o Nome Utente"
|
982 |
+
|
983 |
+
#: ../dashboard.php:530
|
984 |
+
msgid "Filter"
|
985 |
+
msgstr "Filtro"
|
986 |
+
|
987 |
+
#: ../dashboard.php:746
|
988 |
+
msgid "Cerber Dashboard"
|
989 |
+
msgstr "Pannello di Cerber"
|
990 |
+
|
991 |
+
#: ../dashboard.php:749
|
992 |
+
msgid "Cerber tools"
|
993 |
+
msgstr "Strumenti di Cerber"
|
994 |
+
|
995 |
+
#: ../dashboard.php:1325
|
996 |
+
msgid "Subscribe"
|
997 |
+
msgstr "Sottoscrizione"
|
998 |
+
|
999 |
+
#: ../dashboard.php:1326
|
1000 |
+
msgid "Unsubscribe"
|
1001 |
+
msgstr "Rimuovi sottoscrizione"
|
1002 |
+
|
1003 |
+
#: ../dashboard.php:1354
|
1004 |
+
msgid "You've subscribed"
|
1005 |
+
msgstr "Hai effettuato la sottoscrizione"
|
1006 |
+
|
1007 |
+
#: ../dashboard.php:1357
|
1008 |
+
msgid "You've unsubscribed"
|
1009 |
+
msgstr "Hai rimosso la sottoscrizione"
|
1010 |
+
|
1011 |
+
#: ../wp-cerber.php:2441 ../wp-cerber.php:2442
|
1012 |
+
msgid "A new activity has been recorded"
|
1013 |
+
msgstr "È stata registrata una nuova attività"
|
1014 |
+
|
1015 |
+
#: ../wp-cerber.php:2700
|
1016 |
+
msgid "User"
|
1017 |
+
msgstr "Utente"
|
1018 |
+
|
1019 |
+
#: ../wp-cerber.php:2708
|
1020 |
+
msgid "Search string"
|
1021 |
+
msgstr "Stringa di ricerca"
|
1022 |
+
|
1023 |
+
#: ../wp-cerber.php:2721
|
1024 |
+
msgid "To unsubscribe click here"
|
1025 |
+
msgstr "Per annullare l'iscrizione clicca qui"
|
1026 |
+
|
1027 |
+
#: ../settings.php:88
|
1028 |
+
msgid "Preferences"
|
1029 |
+
msgstr "Preferenze"
|
1030 |
+
|
1031 |
+
#: ../settings.php:90
|
1032 |
+
msgid "Date format"
|
1033 |
+
msgstr "Formato data"
|
1034 |
+
|
1035 |
+
#: ../settings.php:90
|
1036 |
+
msgid "if empty, the default format %s will be used"
|
1037 |
+
msgstr "Se vuoto, verrà utilizzato il formato predefinito %s"
|
1038 |
+
|
1039 |
+
#: ../dashboard.php:906 ../settings.php:157
|
1040 |
+
msgid "Push notifications"
|
1041 |
+
msgstr "Notifica push"
|
1042 |
+
|
1043 |
+
#: ../settings.php:152
|
1044 |
+
msgid "Email notifications"
|
1045 |
+
msgstr "Email delle notifiche"
|
1046 |
+
|
1047 |
+
#: ../settings.php:154
|
1048 |
+
msgid "Use comma to specify multiple values"
|
1049 |
+
msgstr "Utilizzare la virgola per specificare più valori"
|
1050 |
+
|
1051 |
+
#: ../settings.php:164
|
1052 |
+
msgid "All connected devices"
|
1053 |
+
msgstr "Tutte le periferiche connesse"
|
1054 |
+
|
1055 |
+
#: ../settings.php:165
|
1056 |
+
msgid "No devices found"
|
1057 |
+
msgstr "Nessuna periferica trovata."
|
1058 |
+
|
1059 |
+
#: ../settings.php:167
|
1060 |
+
msgid "Not available"
|
1061 |
+
msgstr "Non disponibile"
|
1062 |
+
|
1063 |
+
#: ../common.php:355
|
1064 |
+
msgid "Password reset requested"
|
1065 |
+
msgstr "Richiesto reset della password"
|
1066 |
+
|
1067 |
+
#: ../common.php:379
|
1068 |
+
msgid "Limit on failed reCAPTCHA verifications is reached"
|
1069 |
+
msgstr "È stato raggiunto il limite delle verifiche reCAPTCHA fallite"
|
1070 |
+
|
1071 |
+
#: ../common.php:432
|
1072 |
+
msgid "%s ago"
|
1073 |
+
msgstr "%s fa"
|
1074 |
+
|
1075 |
+
#: ../settings.php:61
|
1076 |
+
msgid "Apply limit login rules to IP addresses in the White IP Access List"
|
1077 |
+
msgstr "Applicare i limiti delle regole di accesso agli indirizzi IP presenti nella White List"
|
1078 |
+
|
1079 |
+
#: ../settings.php:70
|
1080 |
+
msgid "Display 404 page"
|
1081 |
+
msgstr "Mostra pagina 404"
|
1082 |
+
|
1083 |
+
#: ../settings.php:132
|
1084 |
+
msgid "Invisible reCAPTCHA"
|
1085 |
+
msgstr "ReCAPTCHA invisibile"
|
1086 |
+
|
1087 |
+
#: ../settings.php:132
|
1088 |
+
msgid "Enable invisible reCAPTCHA"
|
1089 |
+
msgstr "Abilita reCAPTCHA invisibile"
|
1090 |
+
|
1091 |
+
#: ../settings.php:132
|
1092 |
+
msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
|
1093 |
+
msgstr "(Non abilitare a meno che non si ottengano e si inseriscano la Chiave del sito e la Chiave Segreta per la versione invisibile)"
|
1094 |
+
|
1095 |
+
#: ../settings.php:143
|
1096 |
+
msgid "Enable reCAPTCHA for WordPress comment form"
|
1097 |
+
msgstr "Attiva reCAPTCHA per il modulo dei commenti di WordPress"
|
1098 |
+
|
1099 |
+
#: ../settings.php:144
|
1100 |
+
msgid "Disable reCAPTCHA for logged in users"
|
1101 |
+
msgstr "Disattiva reCAPTCHA per gli utenti connessi"
|
1102 |
+
|
1103 |
+
#: ../settings.php:146
|
1104 |
+
msgid "Limit attempts"
|
1105 |
+
msgstr "Limiti dei tentativi"
|
1106 |
+
|
1107 |
+
#: ../settings.php:146
|
1108 |
+
msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
|
1109 |
+
msgstr "Blocca l'indirizzo IP per %s minuti dopo %s tentativi non riusciti entro %s minuti "
|
1110 |
+
|
1111 |
+
#: ../settings.php:189
|
1112 |
+
msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
|
1113 |
+
msgstr "Nella modalità Citadel nessuno è in grado di accedere, tranne i gli indirizzi IP presenti nell'elenco della White List. Le sessioni utente attive non saranno interessate."
|
1114 |
+
|
1115 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
1116 |
+
msgid "Event"
|
1117 |
+
msgstr "Evento"
|
1118 |
+
|
1119 |
+
#: ../dashboard.php:1049
|
1120 |
+
msgid "Spam comments denied"
|
1121 |
+
msgstr "Commenti spam negati"
|
1122 |
+
|
1123 |
+
#: ../dashboard.php:1050
|
1124 |
+
msgid "Malicious IP addresses detected"
|
1125 |
+
msgstr "Rilevati indirizzi IP malevoli"
|
1126 |
+
|
1127 |
+
#: ../dashboard.php:1051
|
1128 |
+
msgid "Lockouts occurred"
|
1129 |
+
msgstr "Blocchi avvenuti"
|
1130 |
+
|
1131 |
+
#: ../dashboard.php:1052
|
1132 |
+
msgid "Locked out IP now"
|
1133 |
+
msgstr "Blocco Attuale dell'IP"
|
1134 |
+
|
1135 |
+
#: ../dashboard.php:1077
|
1136 |
+
msgid "All suspicious activity"
|
1137 |
+
msgstr "Tutte le attività sospette"
|
1138 |
+
|
1139 |
+
#: ../wp-cerber.php:923 ../wp-cerber.php:939
|
1140 |
+
msgid "You are not allowed to register."
|
1141 |
+
msgstr "Non è consentito registrarsi."
|
1142 |
+
|
1143 |
+
#: ../common.php:344
|
1144 |
+
msgid "Spam comment denied"
|
1145 |
+
msgstr "Il commento spam è stato negato"
|
1146 |
+
|
1147 |
+
#: ../common.php:350
|
1148 |
+
msgid "by Cerber Lab"
|
1149 |
+
msgstr "da Cerber Lab"
|
1150 |
+
|
1151 |
+
#: ../common.php:365
|
1152 |
+
msgid "Attempt to log in denied"
|
1153 |
+
msgstr "Tentativo di accesso negato"
|
1154 |
+
|
1155 |
+
#: ../common.php:366
|
1156 |
+
msgid "Attempt to register denied"
|
1157 |
+
msgstr "Tentativo di registrazione negato"
|
1158 |
+
|
1159 |
+
#: ../dashboard.php:1048
|
1160 |
+
msgid "Malicious activities mitigated"
|
1161 |
+
msgstr "Attività dannose attenuate"
|
1162 |
+
|
1163 |
+
#: ../dashboard.php:748
|
1164 |
+
msgid "Cerber antispam settings"
|
1165 |
+
msgstr "Impostazioni dell'Antispam di Cerber"
|
1166 |
+
|
1167 |
+
#: ../dashboard.php:748 ../settings.php:143
|
1168 |
+
msgid "Antispam"
|
1169 |
+
msgstr "Antispam"
|
1170 |
+
|
1171 |
+
#: ../settings.php:119
|
1172 |
+
msgid "Cerber antispam engine"
|
1173 |
+
msgstr "Cerber antispam engine"
|
1174 |
+
|
1175 |
+
#: ../settings.php:120
|
1176 |
+
msgid "Comment form"
|
1177 |
+
msgstr "Modulo dei commenti"
|
1178 |
+
|
1179 |
+
#: ../settings.php:120
|
1180 |
+
msgid "Protect comment form with bot detection engine"
|
1181 |
+
msgstr "Proteggi il modulo dei commenti con il motore di rilevazione dei bot"
|
1182 |
+
|
1183 |
+
#: ../settings.php:121
|
1184 |
+
msgid "Protect registration form with bot detection engine"
|
1185 |
+
msgstr "Proteggi il modulo di registrazione con il motore di rilevazione dei bot"
|
1186 |
+
|
1187 |
+
#: ../cerber-tools.php:48
|
1188 |
+
msgid "Export & Import"
|
1189 |
+
msgstr "Esporta & Importa"
|
1190 |
+
|
1191 |
+
#: ../cerber-tools.php:49
|
1192 |
+
msgid "Diagnostic"
|
1193 |
+
msgstr "Diagnostica"
|
1194 |
+
|
1195 |
+
#: ../cerber-tools.php:50
|
1196 |
+
msgid "License"
|
1197 |
+
msgstr "Licenza"
|
1198 |
+
|
1199 |
+
#: ../cerber-tools.php:267
|
1200 |
+
msgid "Antispam and bot detection settings"
|
1201 |
+
msgstr "Impostazioni rilevamento di antispam e bot"
|
1202 |
+
|
1203 |
+
#. Description of the plugin
|
1204 |
+
#:
|
1205 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Know more: <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
1206 |
+
msgstr ""
|
1207 |
+
|
1208 |
+
#: ../wp-cerber.php:1062
|
1209 |
+
msgid "Sorry, human verification failed."
|
1210 |
+
msgstr ""
|
1211 |
+
|
1212 |
+
#: ../common.php:380
|
1213 |
+
msgid "Bot activity is detected"
|
1214 |
+
msgstr ""
|
1215 |
+
|
1216 |
+
#: ../settings.php:124
|
1217 |
+
msgid "Comment processing"
|
1218 |
+
msgstr ""
|
1219 |
+
|
1220 |
+
#: ../settings.php:125
|
1221 |
+
msgid "If a spam comment detected"
|
1222 |
+
msgstr ""
|
1223 |
+
|
1224 |
+
#: ../settings.php:126
|
1225 |
+
msgid "Trash spam comments"
|
1226 |
+
msgstr ""
|
1227 |
+
|
1228 |
+
#: ../settings.php:126
|
1229 |
+
msgid "Move spam comments to trash after"
|
1230 |
+
msgstr ""
|
1231 |
+
|
languages/wp-cerber-nb_NO.mo
ADDED
Binary file
|
languages/wp-cerber-nb_NO.po
ADDED
@@ -0,0 +1,1128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: WP Cerber\n"
|
8 |
+
"Language: nb\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
+
|
11 |
+
#: ../settings.php:59
|
12 |
+
msgid "Limit login attempts"
|
13 |
+
msgstr "Begrens innloggingsforsøk"
|
14 |
+
|
15 |
+
#: ../settings.php:60
|
16 |
+
msgid "Attempts"
|
17 |
+
msgstr "Forsøk"
|
18 |
+
|
19 |
+
#: ../settings.php:61
|
20 |
+
msgid "Lockout duration"
|
21 |
+
msgstr "Varighet for utestengelse"
|
22 |
+
|
23 |
+
#: ../common.php:353 ../settings.php:61 ../settings.php:78
|
24 |
+
msgid "minutes"
|
25 |
+
msgstr "minutter"
|
26 |
+
|
27 |
+
#: ../settings.php:62
|
28 |
+
msgid "Aggressive lockout"
|
29 |
+
msgstr "Aggressiv utestengelse"
|
30 |
+
|
31 |
+
#: ../settings.php:64
|
32 |
+
msgid "Site connection"
|
33 |
+
msgstr "Sidetilkobling"
|
34 |
+
|
35 |
+
#: ../settings.php:66
|
36 |
+
msgid "Proactive security rules"
|
37 |
+
msgstr "Proaktive sikkerhetsregler"
|
38 |
+
|
39 |
+
#: ../settings.php:67
|
40 |
+
msgid "Block subnet"
|
41 |
+
msgstr "Blokkér subnet"
|
42 |
+
|
43 |
+
#: ../settings.php:70
|
44 |
+
msgid "Request wp-login.php"
|
45 |
+
msgstr "Kobling til wp-login.php"
|
46 |
+
|
47 |
+
#: ../settings.php:70
|
48 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
49 |
+
msgstr "Blokkér umiddelbart IP-en etter ethvert forsøk på å koble til wp-login.php"
|
50 |
+
|
51 |
+
#: ../settings.php:69
|
52 |
+
msgid "Redirect dashboard requests"
|
53 |
+
msgstr "Omdiriger kontrollpanel-koblinger"
|
54 |
+
|
55 |
+
#: ../settings.php:72
|
56 |
+
msgid "Custom login page"
|
57 |
+
msgstr "Egendefinert innloggingsside"
|
58 |
+
|
59 |
+
#: ../settings.php:73
|
60 |
+
msgid "Custom login URL"
|
61 |
+
msgstr "Egendefinert URL for innlogging"
|
62 |
+
|
63 |
+
#: ../settings.php:73
|
64 |
+
msgid "must not overlap with the existing pages or posts slug"
|
65 |
+
msgstr "må ikke være lik eksisterende sider eller slug"
|
66 |
+
|
67 |
+
#: ../settings.php:74
|
68 |
+
msgid "Disable wp-login.php"
|
69 |
+
msgstr "Deaktiver wp-login.php"
|
70 |
+
|
71 |
+
#: ../settings.php:74
|
72 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
73 |
+
msgstr "Blokkér direkte tilgang til wp-login.php og returnér HTTP 404 Ikke Funnet-feil."
|
74 |
+
|
75 |
+
#: ../dashboard.php:854 ../settings.php:76
|
76 |
+
msgid "Citadel mode"
|
77 |
+
msgstr "Vakttårnsmodus"
|
78 |
+
|
79 |
+
#: ../settings.php:77
|
80 |
+
msgid "Threshold"
|
81 |
+
msgstr "Terskel"
|
82 |
+
|
83 |
+
#: ../settings.php:78
|
84 |
+
msgid "Duration"
|
85 |
+
msgstr "Varighet"
|
86 |
+
|
87 |
+
#: ../wp-cerber.php:2288 ../settings.php:63 ../settings.php:80 ../settings.php:235
|
88 |
+
msgid "Notifications"
|
89 |
+
msgstr "Varsling"
|
90 |
+
|
91 |
+
#: ../settings.php:80
|
92 |
+
msgid "Send notification to admin email"
|
93 |
+
msgstr "Send varsel til admins e-postadresse"
|
94 |
+
|
95 |
+
#: ../dashboard.php:863 ../dashboard.php:1304 ../wp-cerber.php:2286 ../settings.
|
96 |
+
#: php:228 ../cerber-tools.php:59 ../cerber-tools.php:68 ../cerber-tools.php:178
|
97 |
+
msgid "Access Lists"
|
98 |
+
msgstr "Tilgangsliste"
|
99 |
+
|
100 |
+
#: ../dashboard.php:330 ../dashboard.php:445 ../dashboard.php:861 ../dashboard.
|
101 |
+
#: php:996 ../wp-cerber.php:2175 ../settings.php:87 ../settings.php:220
|
102 |
+
msgid "Activity"
|
103 |
+
msgstr "Aktivitet"
|
104 |
+
|
105 |
+
#: ../dashboard.php:862 ../settings.php:223
|
106 |
+
msgid "Lockouts"
|
107 |
+
msgstr "Utestengelser"
|
108 |
+
|
109 |
+
#: ../settings.php:326
|
110 |
+
msgid "%s allowed retries in %s minutes"
|
111 |
+
msgstr "%s tillatte forsøk på %s minutter"
|
112 |
+
|
113 |
+
#: ../settings.php:343
|
114 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
115 |
+
msgstr "Aktivér etter %s mislykkede innloggingsforsøk på %s minutter"
|
116 |
+
|
117 |
+
#: ../dashboard.php:77 ../dashboard.php:445 ../wp-cerber.php:2176
|
118 |
+
msgid "IP"
|
119 |
+
msgstr "IP-adresse"
|
120 |
+
|
121 |
+
#: ../dashboard.php:330 ../dashboard.php:445
|
122 |
+
msgid "Date"
|
123 |
+
msgstr "Dato"
|
124 |
+
|
125 |
+
#: ../dashboard.php:330 ../dashboard.php:445
|
126 |
+
msgid "Local User"
|
127 |
+
msgstr "Lokal bruker"
|
128 |
+
|
129 |
+
#: ../dashboard.php:330 ../dashboard.php:445 ../wp-cerber.php:2184
|
130 |
+
msgid "Username used"
|
131 |
+
msgstr "Brukernavn brukt"
|
132 |
+
|
133 |
+
#: ../dashboard.php:83
|
134 |
+
msgid "Showing last %d records from %d"
|
135 |
+
msgstr "Viser siste %d oppføringer fra %d"
|
136 |
+
|
137 |
+
#: ../common.php:255
|
138 |
+
msgid "Logged in"
|
139 |
+
msgstr "Logget inn"
|
140 |
+
|
141 |
+
#: ../common.php:256
|
142 |
+
msgid "Logged out"
|
143 |
+
msgstr "Logget ut"
|
144 |
+
|
145 |
+
#: ../common.php:257
|
146 |
+
msgid "Login failed"
|
147 |
+
msgstr "Innlogging feilet"
|
148 |
+
|
149 |
+
#: ../common.php:260
|
150 |
+
msgid "IP blocked"
|
151 |
+
msgstr "IP blokkert"
|
152 |
+
|
153 |
+
#: ../common.php:261
|
154 |
+
msgid "Subnet blocked"
|
155 |
+
msgstr "Subnet blokkert"
|
156 |
+
|
157 |
+
#: ../common.php:263
|
158 |
+
msgid "Citadel activated!"
|
159 |
+
msgstr "Vakttårn aktivert!"
|
160 |
+
|
161 |
+
#: ../dashboard.php:430 ../dashboard.php:615 ../common.php:265
|
162 |
+
msgid "Locked out"
|
163 |
+
msgstr "Utestengt"
|
164 |
+
|
165 |
+
#: ../common.php:266
|
166 |
+
msgid "IP blacklisted"
|
167 |
+
msgstr "IP svartelistet"
|
168 |
+
|
169 |
+
#: ../common.php:269
|
170 |
+
msgid "Password changed"
|
171 |
+
msgstr "Passord endret"
|
172 |
+
|
173 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
174 |
+
msgid "Remove"
|
175 |
+
msgstr "Fjern"
|
176 |
+
|
177 |
+
#: ../dashboard.php:260
|
178 |
+
msgid "Lockout for %s was removed"
|
179 |
+
msgstr "Utestengelse for %s ble fjernet"
|
180 |
+
|
181 |
+
#: ../dashboard.php:102 ../dashboard.php:425 ../dashboard.php:610 ../dashboard.
|
182 |
+
#: php:852 ../wp-cerber.php:2280 ../settings.php:185
|
183 |
+
msgid "White IP Access List"
|
184 |
+
msgstr "Hvit IP-tilgangsliste"
|
185 |
+
|
186 |
+
#: ../dashboard.php:104 ../dashboard.php:426 ../dashboard.php:612 ../dashboard.
|
187 |
+
#: php:853
|
188 |
+
msgid "Black IP Access List"
|
189 |
+
msgstr "Svart IP-tilgangsliste"
|
190 |
+
|
191 |
+
#: ../dashboard.php:126
|
192 |
+
msgid "List is empty"
|
193 |
+
msgstr "Listen er tom"
|
194 |
+
|
195 |
+
#: ../dashboard.php:148
|
196 |
+
msgid "Address %s was added to White IP Access List"
|
197 |
+
msgstr "Adressen %s ble lagt til den hvite IP-tilgangslisten"
|
198 |
+
|
199 |
+
#: ../dashboard.php:161
|
200 |
+
msgid "Address %s was added to Black IP Access List"
|
201 |
+
msgstr "Adressen %s ble lagt til den svarte IP-tilgangslisten"
|
202 |
+
|
203 |
+
#: ../wp-cerber.php:1889
|
204 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
205 |
+
msgstr "Vakttårnsmodus ble aktivert etter %d mislykkede innloggingsforsøk på %d minutter"
|
206 |
+
|
207 |
+
#: ../dashboard.php:1117
|
208 |
+
msgid "View Activity"
|
209 |
+
msgstr "Se aktivitet"
|
210 |
+
|
211 |
+
#: ../cerber-tools.php:58 ../cerber-tools.php:67
|
212 |
+
msgid "Settings"
|
213 |
+
msgstr "Innstillinger"
|
214 |
+
|
215 |
+
#: ../dashboard.php:755
|
216 |
+
msgid "Last login"
|
217 |
+
msgstr "Siste innlogging"
|
218 |
+
|
219 |
+
#: ../dashboard.php:782 ../dashboard.php:835
|
220 |
+
msgid "Never"
|
221 |
+
msgstr "Aldri"
|
222 |
+
|
223 |
+
#: ../dashboard.php:1038 ../dashboard.php:1433
|
224 |
+
msgid "Are you sure?"
|
225 |
+
msgstr "Er du sikker?"
|
226 |
+
|
227 |
+
#: ../dashboard.php:685
|
228 |
+
msgid "WP Cerber Settings"
|
229 |
+
msgstr "WP Cerber-innstillinger"
|
230 |
+
|
231 |
+
#: ../settings.php:64
|
232 |
+
msgid "My site is behind a reverse proxy"
|
233 |
+
msgstr "Min side er bak en reverse proxy"
|
234 |
+
|
235 |
+
#: ../settings.php:68
|
236 |
+
msgid "Non-existent users"
|
237 |
+
msgstr "Ikke-eksisterende brukere"
|
238 |
+
|
239 |
+
#: ../settings.php:68
|
240 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
241 |
+
msgstr "Blokkér umiddelbart IP når noen prøver å logge inn med et ikke-eksisterende brukernavn"
|
242 |
+
|
243 |
+
#: ../settings.php:69
|
244 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
245 |
+
msgstr "Deaktivér automatisk omdirigering til innloggingssiden når /wp-admin/ blir forsøkt tilkoblet fra en uatorisert forespørsel"
|
246 |
+
|
247 |
+
#: ../settings.php:167
|
248 |
+
msgid "Make your protection smarter!"
|
249 |
+
msgstr "Gjør din beskyttelse smartere!"
|
250 |
+
|
251 |
+
#: ../settings.php:171
|
252 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
253 |
+
msgstr "Vennligst "
|
254 |
+
|
255 |
+
#: ../settings.php:174
|
256 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
257 |
+
msgstr "Vær forsiktig når du velger dette alternativet. Glemmer du din nye URL for innlogging, vil du ikke kunne logge deg inn."
|
258 |
+
|
259 |
+
#: ../wp-cerber.php:2285 ../settings.php:225
|
260 |
+
msgid "Main Settings"
|
261 |
+
msgstr "Hovedinnstillinger"
|
262 |
+
|
263 |
+
#: ../settings.php:239
|
264 |
+
msgid "Help"
|
265 |
+
msgstr "Hjelp"
|
266 |
+
|
267 |
+
#: ../settings.php:331
|
268 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
269 |
+
msgstr "Øk varigheten av utestengelser til %s timer etter %s utestengelser i løpet av de siste %s timer"
|
270 |
+
|
271 |
+
#: ../wp-cerber.php:190
|
272 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
273 |
+
msgstr "Du har ikke tillatelse til å logge inn. Spør din administrator om du trenger hjelp."
|
274 |
+
|
275 |
+
#: ../wp-cerber.php:196
|
276 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
277 |
+
msgstr "Du har nådd grensen for antall tillatte innloggingsforsøk. Vennligst prøv igjen om %d minutter."
|
278 |
+
|
279 |
+
#: ../wp-cerber.php:214
|
280 |
+
msgid "You have only one attempt remaining."
|
281 |
+
msgid_plural "You have %d attempts remaining."
|
282 |
+
msgstr[0] "Du har kun ett forsøk igjen."
|
283 |
+
msgstr[1] "Du har %d forsøk igjen."
|
284 |
+
|
285 |
+
#: ../dashboard.php:458
|
286 |
+
msgid "No activity has been logged."
|
287 |
+
msgstr "Ingen aktivitet har blitt registrert."
|
288 |
+
|
289 |
+
#: ../dashboard.php:77
|
290 |
+
msgid "Expires"
|
291 |
+
msgstr "Utgår"
|
292 |
+
|
293 |
+
#: ../dashboard.php:89
|
294 |
+
msgid "No lockouts at the moment. The sky is clear."
|
295 |
+
msgstr "Ingen utestengelser akkurat nå. Kysten er klar."
|
296 |
+
|
297 |
+
#: ../dashboard.php:102
|
298 |
+
msgid "These IPs will never be locked out"
|
299 |
+
msgstr "Disse IP-er vil aldri bli utestengt"
|
300 |
+
|
301 |
+
#: ../dashboard.php:106
|
302 |
+
msgid "Your IP"
|
303 |
+
msgstr "Din IP"
|
304 |
+
|
305 |
+
#: ../dashboard.php:157
|
306 |
+
msgid "You can't add your IP address"
|
307 |
+
msgstr "Du kan ikke legge til din IP-adresse"
|
308 |
+
|
309 |
+
#: ../wp-cerber.php:1890
|
310 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
311 |
+
msgstr "Siste mislykkede forsøk var %s fra IP %s med brukernavn %s."
|
312 |
+
|
313 |
+
#: ../wp-cerber.php:1950
|
314 |
+
msgid "Change notification settings"
|
315 |
+
msgstr "Endre varslingsinnstillinger"
|
316 |
+
|
317 |
+
#: ../wp-cerber.php:2263
|
318 |
+
msgid "Can't activate WP Cerber due to a database error."
|
319 |
+
msgstr "Kunne ikke aktivere WP Cerber på grunn av en databasefeil."
|
320 |
+
|
321 |
+
#: ../settings.php:338
|
322 |
+
msgid "Notify admin if the number of active lockouts above"
|
323 |
+
msgstr "Varsle administratoren om antallet aktive utestengelser overskrider"
|
324 |
+
|
325 |
+
#: ../common.php:351 ../settings.php:88
|
326 |
+
msgid "days"
|
327 |
+
msgstr "dager"
|
328 |
+
|
329 |
+
#: ../dashboard.php:806
|
330 |
+
msgid "Cerber Quick View"
|
331 |
+
msgstr "Cerber hurtigvisning"
|
332 |
+
|
333 |
+
#: ../dashboard.php:85
|
334 |
+
msgid "Hint"
|
335 |
+
msgstr "Hint"
|
336 |
+
|
337 |
+
#: ../dashboard.php:85
|
338 |
+
msgid "To view activity, click on the IP"
|
339 |
+
msgstr "For å se aktivitet klikk på IP-en"
|
340 |
+
|
341 |
+
#: ../dashboard.php:123 ../dashboard.php:642
|
342 |
+
msgid "Check for activity"
|
343 |
+
msgstr "Sjekk etter aktivitet"
|
344 |
+
|
345 |
+
#: ../settings.php:67
|
346 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
347 |
+
msgstr "Alltid blokkér hele subnet Class C av inntrengerens IP"
|
348 |
+
|
349 |
+
#: ../settings.php:80 ../settings.php:340
|
350 |
+
msgid "Click to send test"
|
351 |
+
msgstr "Klikk for å sende test"
|
352 |
+
|
353 |
+
#: ../settings.php:427
|
354 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
355 |
+
msgstr "OBS! Du har endret innloggings-adressen. Din nye URL for innlogging er"
|
356 |
+
|
357 |
+
#: ../dashboard.php:754
|
358 |
+
msgid "Comments"
|
359 |
+
msgstr "Kommentarer"
|
360 |
+
|
361 |
+
#: ../dashboard.php:757
|
362 |
+
msgid "Date of registration"
|
363 |
+
msgstr "Registreringsdato"
|
364 |
+
|
365 |
+
#: ../dashboard.php:252
|
366 |
+
msgid "Message has been sent to "
|
367 |
+
msgstr "Melding har blitt sendt til "
|
368 |
+
|
369 |
+
#: ../dashboard.php:1179
|
370 |
+
msgid "Update to version %s of WP Cerber"
|
371 |
+
msgstr "Oppdatér til versjon %s av WP Cerber"
|
372 |
+
|
373 |
+
#: ../wp-cerber.php:1891 ../wp-cerber.php:2200
|
374 |
+
msgid "View activity in dashboard"
|
375 |
+
msgstr "Se aktivitet i kontrollpanelet"
|
376 |
+
|
377 |
+
#: ../wp-cerber.php:1918
|
378 |
+
msgid "Number of active lockouts"
|
379 |
+
msgstr "Antall aktive utestengelser"
|
380 |
+
|
381 |
+
#: ../wp-cerber.php:1922
|
382 |
+
msgid "View lockouts in dashboard"
|
383 |
+
msgstr "Se utestengelser i kontrollpanelet"
|
384 |
+
|
385 |
+
#: ../wp-cerber.php:1975
|
386 |
+
msgid "This message was sent by"
|
387 |
+
msgstr "Denne meldingen ble sendt av"
|
388 |
+
|
389 |
+
#: ../dashboard.php:693 ../cerber-tools.php:40
|
390 |
+
msgid "Tools"
|
391 |
+
msgstr "Verktøy"
|
392 |
+
|
393 |
+
#: ../cerber-tools.php:55
|
394 |
+
msgid "Export settings to the file"
|
395 |
+
msgstr "Eksportér innstillinger til filen"
|
396 |
+
|
397 |
+
#: ../cerber-tools.php:56
|
398 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
399 |
+
msgstr "Når du klikker knappen under, vil du få en konfigurasjonsfil som du kan laste opp på en annen side."
|
400 |
+
|
401 |
+
#: ../cerber-tools.php:57
|
402 |
+
msgid "What do you want to export?"
|
403 |
+
msgstr "Hva ønsker du å eksportere?"
|
404 |
+
|
405 |
+
#: ../cerber-tools.php:60
|
406 |
+
msgid "Download file"
|
407 |
+
msgstr "Last ned fil"
|
408 |
+
|
409 |
+
#: ../cerber-tools.php:62
|
410 |
+
msgid "Import settings from the file"
|
411 |
+
msgstr "Importér innstillinger fra filen"
|
412 |
+
|
413 |
+
#: ../cerber-tools.php:63
|
414 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
415 |
+
msgstr "Når du klikker på knappen under, vil filen lastes opp og alle eksisterende innstillinger vil bli overskrevet."
|
416 |
+
|
417 |
+
#: ../cerber-tools.php:64
|
418 |
+
msgid "Select file to import."
|
419 |
+
msgstr "Velg fil å importere."
|
420 |
+
|
421 |
+
#: ../cerber-tools.php:64
|
422 |
+
msgid "Maximum upload file size: %s."
|
423 |
+
msgstr "Maksimum tillatte filstørrelse for opplasting: %s."
|
424 |
+
|
425 |
+
#: ../cerber-tools.php:67
|
426 |
+
msgid "What do you want to import?"
|
427 |
+
msgstr "Hva ønsker du å importere?"
|
428 |
+
|
429 |
+
#: ../cerber-tools.php:69
|
430 |
+
msgid "Upload file"
|
431 |
+
msgstr "Last opp fil"
|
432 |
+
|
433 |
+
#: ../cerber-tools.php:148
|
434 |
+
msgid "No file was uploaded or file is corrupted"
|
435 |
+
msgstr "Ingen fil ble lastet opp, eller er filen ødelagt"
|
436 |
+
|
437 |
+
#: ../cerber-tools.php:178
|
438 |
+
msgid "Error while updating"
|
439 |
+
msgstr "Feil under oppdatering"
|
440 |
+
|
441 |
+
#: ../cerber-tools.php:181
|
442 |
+
msgid "Settings has imported successfully from"
|
443 |
+
msgstr "Innstillinger ble importert fra"
|
444 |
+
|
445 |
+
#: ../cerber-tools.php:185
|
446 |
+
msgid "Error while parsing file"
|
447 |
+
msgstr "Feil under parsing av filen"
|
448 |
+
|
449 |
+
#: ../dashboard.php:77 ../dashboard.php:445
|
450 |
+
msgid "Hostname"
|
451 |
+
msgstr "Vertsnavn"
|
452 |
+
|
453 |
+
#: ../dashboard.php:232
|
454 |
+
msgid "unknown"
|
455 |
+
msgstr "ukjent"
|
456 |
+
|
457 |
+
#: ../settings.php:88
|
458 |
+
msgid "Keep records for"
|
459 |
+
msgstr "Behold logger"
|
460 |
+
|
461 |
+
#: ../dashboard.php:839
|
462 |
+
msgid "active"
|
463 |
+
msgstr "aktive"
|
464 |
+
|
465 |
+
#: ../dashboard.php:839
|
466 |
+
msgid "deactivate"
|
467 |
+
msgstr "deaktiver"
|
468 |
+
|
469 |
+
#: ../dashboard.php:841
|
470 |
+
msgid "not active"
|
471 |
+
msgstr "ikke aktive"
|
472 |
+
|
473 |
+
#: ../dashboard.php:842
|
474 |
+
msgid "disabled"
|
475 |
+
msgstr "deaktivert"
|
476 |
+
|
477 |
+
#: ../dashboard.php:847
|
478 |
+
msgid "failed attempts"
|
479 |
+
msgstr "mislykkede forsøk"
|
480 |
+
|
481 |
+
#: ../dashboard.php:847 ../dashboard.php:848
|
482 |
+
msgid "in 24 hours"
|
483 |
+
msgstr "på 24 timer"
|
484 |
+
|
485 |
+
#: ../dashboard.php:847 ../dashboard.php:848
|
486 |
+
msgid "view all"
|
487 |
+
msgstr "se alle"
|
488 |
+
|
489 |
+
#: ../dashboard.php:848
|
490 |
+
msgid "lockouts"
|
491 |
+
msgstr "utestengelser"
|
492 |
+
|
493 |
+
#: ../dashboard.php:850
|
494 |
+
msgid "Lockouts at the moment"
|
495 |
+
msgstr "Utestengelser akkurat nå"
|
496 |
+
|
497 |
+
#: ../dashboard.php:851
|
498 |
+
msgid "Last lockout"
|
499 |
+
msgstr "Siste utestengelse"
|
500 |
+
|
501 |
+
#: ../dashboard.php:852 ../dashboard.php:853 ../dashboard.php:1283
|
502 |
+
msgid "entry"
|
503 |
+
msgid_plural "entries"
|
504 |
+
msgstr[0] "oppføring"
|
505 |
+
msgstr[1] "oppføringer"
|
506 |
+
|
507 |
+
#: ../dashboard.php:1033
|
508 |
+
msgid "Confused about some settings?"
|
509 |
+
msgstr "Usikker på noen innstillinger?"
|
510 |
+
|
511 |
+
#: ../dashboard.php:1034
|
512 |
+
msgid "You can easily load default recommended settings using button below"
|
513 |
+
msgstr "Du kan enkelt laste inn anbefalte standardinnstillinger via knappen under"
|
514 |
+
|
515 |
+
#: ../dashboard.php:1036
|
516 |
+
msgid "Load default settings"
|
517 |
+
msgstr "Last inn standardinnstillinger"
|
518 |
+
|
519 |
+
#: ../dashboard.php:1044
|
520 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
521 |
+
msgstr "påvirker ikke egendefinert innloggings-URL og tilgangslister"
|
522 |
+
|
523 |
+
#: ../dashboard.php:1063
|
524 |
+
msgid "Donate"
|
525 |
+
msgstr "Donér"
|
526 |
+
|
527 |
+
#: ../dashboard.php:1173
|
528 |
+
msgid "New version is available"
|
529 |
+
msgstr "Ny versjon er tilgjengelig"
|
530 |
+
|
531 |
+
#. Name of the plugin
|
532 |
+
#: ../dashboard.php:685 ../dashboard.php:688 ../dashboard.php:717
|
533 |
+
msgid "WP Cerber"
|
534 |
+
msgstr "WP Cerber"
|
535 |
+
|
536 |
+
#. URI of the plugin
|
537 |
+
#:
|
538 |
+
msgid "http://wpcerber.com"
|
539 |
+
msgstr "http://wpcerber.com"
|
540 |
+
|
541 |
+
#: ../wp-cerber.php:1868
|
542 |
+
msgid "WP Cerber notify"
|
543 |
+
msgstr "WP Cerber-varsling"
|
544 |
+
|
545 |
+
#: ../wp-cerber.php:1887
|
546 |
+
msgid "Citadel mode is activated"
|
547 |
+
msgstr "Vakttårns-modus er aktivert"
|
548 |
+
|
549 |
+
#: ../wp-cerber.php:1955
|
550 |
+
msgid "New Custom login URL"
|
551 |
+
msgstr "Ny egendefinert innloggings-URL"
|
552 |
+
|
553 |
+
#: ../wp-cerber.php:2254
|
554 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
555 |
+
msgstr "WP Cerber krever PHP versjon %s eller høyere. Du kjører"
|
556 |
+
|
557 |
+
#: ../wp-cerber.php:2258
|
558 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
559 |
+
msgstr "WP Cerber krever WordPress versjon %s eller høyere. Du kjører"
|
560 |
+
|
561 |
+
#: ../settings.php:94
|
562 |
+
msgid "Use file"
|
563 |
+
msgstr "Bruk fil"
|
564 |
+
|
565 |
+
#: ../settings.php:94
|
566 |
+
msgid "Write failed login attempts to the file"
|
567 |
+
msgstr "Skriv mislykkede innloggingsforsøk til filen"
|
568 |
+
|
569 |
+
#: ../dashboard.php:756
|
570 |
+
msgid "Failed attempts in last 24 hours"
|
571 |
+
msgstr "Mislykkede forsøk de siste 24 timer"
|
572 |
+
|
573 |
+
#: ../dashboard.php:1116
|
574 |
+
msgid "Deactivate"
|
575 |
+
msgstr "Deaktivér"
|
576 |
+
|
577 |
+
#: ../dashboard.php:77 ../wp-cerber.php:1920
|
578 |
+
msgid "Reason"
|
579 |
+
msgstr "Grunn"
|
580 |
+
|
581 |
+
#: ../dashboard.php:130
|
582 |
+
msgid "Add IP to the list"
|
583 |
+
msgstr "Legg IP til listen"
|
584 |
+
|
585 |
+
#: ../dashboard.php:660
|
586 |
+
msgid "Add IP to the Black List"
|
587 |
+
msgstr "Legg IP til svartelisten"
|
588 |
+
|
589 |
+
#: ../common.php:287
|
590 |
+
msgid "Attempt to access"
|
591 |
+
msgstr "Forsøk på å få tilgang til"
|
592 |
+
|
593 |
+
#: ../common.php:286
|
594 |
+
msgid "Limit on login attempts is reached"
|
595 |
+
msgstr "Grensen for innloggingsforsøk er nådd"
|
596 |
+
|
597 |
+
#: ../common.php:276 ../common.php:288
|
598 |
+
msgid "Attempt to log in with non-existent username"
|
599 |
+
msgstr "Forsøk på å logge inn med ikke-eksisterende brukernavn"
|
600 |
+
|
601 |
+
#: ../wp-cerber.php:1919
|
602 |
+
msgid "Last lockout was added: %s for IP %s"
|
603 |
+
msgstr "Siste utestengelse ble lagt til: %s for IP %s"
|
604 |
+
|
605 |
+
#: ../wp-cerber.php:2282
|
606 |
+
msgid "It's important to check security settings."
|
607 |
+
msgstr "Det viktig å sjekke sikkerhetsinnstillingene."
|
608 |
+
|
609 |
+
#: ../wp-cerber.php:2287 ../settings.php:230
|
610 |
+
msgid "Hardening"
|
611 |
+
msgstr "Forsterking"
|
612 |
+
|
613 |
+
#: ../dashboard.php:638
|
614 |
+
msgid "Abuse email:"
|
615 |
+
msgstr "Repportering av misbruk:"
|
616 |
+
|
617 |
+
#: ../settings.php:144
|
618 |
+
msgid "Email Address"
|
619 |
+
msgstr "E-postadresse"
|
620 |
+
|
621 |
+
#: ../settings.php:144
|
622 |
+
msgid "if empty, the admin email %s will be used"
|
623 |
+
msgstr "Hvis tom, vil e-postadressen %s bli brukt"
|
624 |
+
|
625 |
+
#: ../settings.php:97
|
626 |
+
msgid "Drill down IP"
|
627 |
+
msgstr "Inspiser IP"
|
628 |
+
|
629 |
+
#: ../settings.php:97
|
630 |
+
msgid "Retrieve extra WHOIS information for IP"
|
631 |
+
msgstr "Hent ekstra WHOIS-informasjon for IP"
|
632 |
+
|
633 |
+
#: ../settings.php:105
|
634 |
+
msgid "Hardening WordPress"
|
635 |
+
msgstr "Forsterke WordPress"
|
636 |
+
|
637 |
+
#: ../settings.php:106
|
638 |
+
msgid "Stop user enumeration"
|
639 |
+
msgstr "Stopp opplisting av brukere"
|
640 |
+
|
641 |
+
#: ../settings.php:106
|
642 |
+
msgid "Block access to the pages like /?author=n"
|
643 |
+
msgstr "Blokkér tilgang til sider som /?author=n"
|
644 |
+
|
645 |
+
#: ../settings.php:107
|
646 |
+
msgid "Disable XML-RPC"
|
647 |
+
msgstr "Deaktivér XML-RPC"
|
648 |
+
|
649 |
+
#: ../settings.php:107
|
650 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
651 |
+
msgstr "Blokkér tilgang til XML-RPC-serveren (inkluderer Pingbacks og Trackbacks)"
|
652 |
+
|
653 |
+
#: ../settings.php:108
|
654 |
+
msgid "Disable feeds"
|
655 |
+
msgstr "Deaktiver feeds"
|
656 |
+
|
657 |
+
#: ../settings.php:108
|
658 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
659 |
+
msgstr "Blokkér tilgang til RSS- Atom- og RDF-feeds"
|
660 |
+
|
661 |
+
#: ../settings.php:109
|
662 |
+
msgid "Disable REST API"
|
663 |
+
msgstr "Deaktivér REST API"
|
664 |
+
|
665 |
+
#: ../settings.php:109
|
666 |
+
msgid "Block access to the WordPress REST API"
|
667 |
+
msgstr "Blokkér tilgang til WordPress' REST API"
|
668 |
+
|
669 |
+
#: ../settings.php:185
|
670 |
+
msgid "These settings do not affect hosts from the "
|
671 |
+
msgstr "Disse innstillingene påvirker ikke verter fra "
|
672 |
+
|
673 |
+
#: ../settings.php:502
|
674 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
675 |
+
msgstr "<strong>FEIL</strong>: vennligst skriv inn en gyldig e-postadresse"
|
676 |
+
|
677 |
+
#: ../settings.php:618
|
678 |
+
msgid "Number of items per page:"
|
679 |
+
msgstr "Antall innlegg pr. side:"
|
680 |
+
|
681 |
+
#: ../wp-cerber.php:1949 ../wp-cerber.php:2279
|
682 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
683 |
+
msgstr "WP Cerber er nå aktiv og har begynt å beskytte siden din"
|
684 |
+
|
685 |
+
#: ../dashboard.php:77
|
686 |
+
msgid "Action"
|
687 |
+
msgstr "Handling"
|
688 |
+
|
689 |
+
#: ../dashboard.php:104
|
690 |
+
msgid "Nobody can log in or register from these IPs"
|
691 |
+
msgstr "Ingen kan logge inn eller registrere seg fra disse IP-ene"
|
692 |
+
|
693 |
+
#: ../dashboard.php:145 ../dashboard.php:153
|
694 |
+
msgid "Incorrect IP address or IP range"
|
695 |
+
msgstr "Feil IP-adresse eller IP-rekkevidde"
|
696 |
+
|
697 |
+
#: ../dashboard.php:254
|
698 |
+
msgid "Unable to send notification email"
|
699 |
+
msgstr "Kunne ikke sende e-postvarsling"
|
700 |
+
|
701 |
+
#: ../dashboard.php:276 ../dashboard.php:1132
|
702 |
+
msgid "Settings saved"
|
703 |
+
msgstr "Innstillingene er lagret"
|
704 |
+
|
705 |
+
#: ../dashboard.php:642
|
706 |
+
msgid "Network:"
|
707 |
+
msgstr "Nettverk:"
|
708 |
+
|
709 |
+
#: ../dashboard.php:656
|
710 |
+
msgid "Add network to the Black List"
|
711 |
+
msgstr "Legg nettverk til svartelisten"
|
712 |
+
|
713 |
+
#: ../dashboard.php:468
|
714 |
+
msgid "Cerber Security"
|
715 |
+
msgstr "Cerber-sikkerhet"
|
716 |
+
|
717 |
+
#: ../dashboard.php:1115
|
718 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
719 |
+
msgstr "Advarsel! Vakttårns-modus er nå aktiv. Ingen vil kunne logge inn."
|
720 |
+
|
721 |
+
#: ../whois.php:211
|
722 |
+
msgid "Unknown"
|
723 |
+
msgstr "Ukjent"
|
724 |
+
|
725 |
+
#. Description of the plugin
|
726 |
+
#:
|
727 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
728 |
+
msgstr "Beskytter siden mot brute force-angrep, botter og hackere. Antispam-beskyttelse med erCAPTCHA. Grundig kontroll av brukeraktivitet. Begrensning av innlogginger etter IP-tilgangslister. Begrens innloggingsforsøk. Ta gjerne kontakt med utvikleren på <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
729 |
+
|
730 |
+
#. Author of the plugin
|
731 |
+
#:
|
732 |
+
msgid "Gregory"
|
733 |
+
msgstr "Gregory"
|
734 |
+
|
735 |
+
#: ../wp-cerber.php:602 ../wp-cerber.php:734 ../wp-cerber.php:741 ../wp-cerber.
|
736 |
+
#: php:765 ../common.php:81 ../common.php:134 ../settings.php:480
|
737 |
+
msgid "ERROR:"
|
738 |
+
msgstr "FEIL:"
|
739 |
+
|
740 |
+
#: ../wp-cerber.php:496
|
741 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
742 |
+
msgstr "Bekreftelse av menneskelighet feilet. Vennligst klikk den firkantige boksen i reCAPTCHA-blokken under."
|
743 |
+
|
744 |
+
#: ../wp-cerber.php:613
|
745 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
746 |
+
msgstr "<strong>FEIL</strong>: Passordet du skrev inn for brukernavnet %s er ugyldig."
|
747 |
+
|
748 |
+
#: ../wp-cerber.php:742
|
749 |
+
msgid "Username is not allowed. Please choose another one."
|
750 |
+
msgstr "Brukernavnet er ikke tillatt. Vennligst velg et annet brukernavn."
|
751 |
+
|
752 |
+
#: ../wp-cerber.php:1913
|
753 |
+
msgid "unspecified"
|
754 |
+
msgstr "uspesifisert"
|
755 |
+
|
756 |
+
#: ../wp-cerber.php:1916
|
757 |
+
msgid "Number of lockouts is increasing"
|
758 |
+
msgstr "Antallet utestengelser stiger"
|
759 |
+
|
760 |
+
#: ../wp-cerber.php:1921
|
761 |
+
msgid "View activity for this IP"
|
762 |
+
msgstr "Se aktivitet for denne IP"
|
763 |
+
|
764 |
+
#: ../wp-cerber.php:1925 ../wp-cerber.php:1927
|
765 |
+
msgid "A new version of WP Cerber is available to install"
|
766 |
+
msgstr "En ny versjon av WP Cerber er tilgjengelig for installasjon"
|
767 |
+
|
768 |
+
#: ../wp-cerber.php:1926
|
769 |
+
msgid "Hi!"
|
770 |
+
msgstr "Hei!"
|
771 |
+
|
772 |
+
#: ../wp-cerber.php:1928 ../wp-cerber.php:1939
|
773 |
+
msgid "Website"
|
774 |
+
msgstr "Webside"
|
775 |
+
|
776 |
+
#: ../wp-cerber.php:1931 ../wp-cerber.php:1932
|
777 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
778 |
+
msgstr "Sikkerhetstillegget WP Cerber har blitt deaktivert"
|
779 |
+
|
780 |
+
#: ../wp-cerber.php:1934
|
781 |
+
msgid "Not logged in"
|
782 |
+
msgstr "Ikke innlogget"
|
783 |
+
|
784 |
+
#: ../wp-cerber.php:1940
|
785 |
+
msgid "By user"
|
786 |
+
msgstr "Etter brukernavn"
|
787 |
+
|
788 |
+
#: ../wp-cerber.php:1941
|
789 |
+
msgid "From IP address"
|
790 |
+
msgstr "Fra IP-adresse"
|
791 |
+
|
792 |
+
#: ../wp-cerber.php:1944
|
793 |
+
msgid "From country"
|
794 |
+
msgstr "Fra land"
|
795 |
+
|
796 |
+
#: ../wp-cerber.php:1948
|
797 |
+
msgid "The WP Cerber security plugin is now active"
|
798 |
+
msgstr "Sikkerhetstillegget WP Cerber er nå aktivt"
|
799 |
+
|
800 |
+
#: ../wp-cerber.php:2280
|
801 |
+
msgid "Your IP address is added to the"
|
802 |
+
msgstr "Din IP-adresse ble lagt til"
|
803 |
+
|
804 |
+
#: ../dashboard.php:692
|
805 |
+
msgid "reCAPTCHA"
|
806 |
+
msgstr "reCAPTCHA"
|
807 |
+
|
808 |
+
#: ../wp-cerber.php:2289
|
809 |
+
msgid "Import settings"
|
810 |
+
msgstr "Importer innstillinger"
|
811 |
+
|
812 |
+
#: ../settings.php:145
|
813 |
+
msgid "Notification limit"
|
814 |
+
msgstr "Grense for varslinger"
|
815 |
+
|
816 |
+
#: ../settings.php:145
|
817 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
818 |
+
msgstr "varslingsmeldinger tillatt per time (0 betyr ubegrenset)"
|
819 |
+
|
820 |
+
#: ../settings.php:117
|
821 |
+
msgid "User related settings"
|
822 |
+
msgstr "Brukerrelaterte innstillinger"
|
823 |
+
|
824 |
+
#: ../settings.php:118
|
825 |
+
msgid "Prohibited usernames"
|
826 |
+
msgstr "Blokkerte brukernavn"
|
827 |
+
|
828 |
+
#: ../settings.php:118
|
829 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
830 |
+
msgstr "Brukernavn fra denne listen har ikke tilgang til å logge inn eller registrere seg. Enhver IP som forsøker å bruke noen av disse brukernavnene blir blokkert umiddelbart. Bruk komma for å skille brukernavn."
|
831 |
+
|
832 |
+
#: ../settings.php:119
|
833 |
+
msgid "User session expire"
|
834 |
+
msgstr "Brukerøktens varighet"
|
835 |
+
|
836 |
+
#: ../settings.php:119
|
837 |
+
msgid "in minutes (leave empty to use default WP value)"
|
838 |
+
msgstr "i minutter (la stå tom for å bruke WordPress' standardverdi)"
|
839 |
+
|
840 |
+
#: ../cerber-tools.php:195
|
841 |
+
msgid "reCAPTCHA settings"
|
842 |
+
msgstr "reCAPTCHA-innstillinger"
|
843 |
+
|
844 |
+
#: ../settings.php:126
|
845 |
+
msgid "Site key"
|
846 |
+
msgstr "Site key"
|
847 |
+
|
848 |
+
#: ../settings.php:127
|
849 |
+
msgid "Secret key"
|
850 |
+
msgstr "Secret key"
|
851 |
+
|
852 |
+
#: ../settings.php:129
|
853 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
854 |
+
msgstr "Slå på reCAPTCHA for WordPress' registreringsskjema"
|
855 |
+
|
856 |
+
#: ../settings.php:132
|
857 |
+
msgid "Lost password form"
|
858 |
+
msgstr "Skjema for mistet passord"
|
859 |
+
|
860 |
+
#: ../settings.php:135
|
861 |
+
msgid "Login form"
|
862 |
+
msgstr "Innloggingsskjema"
|
863 |
+
|
864 |
+
#: ../settings.php:135
|
865 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
866 |
+
msgstr "Slå på reCAPTCHA for WordPress' innloggingsskjema"
|
867 |
+
|
868 |
+
#: ../settings.php:178
|
869 |
+
msgid "In Citadel mode nobody is able to login. Active user's sessions will not be affected."
|
870 |
+
msgstr "I vakttårns-modus vil ingen kunne logge inn. Aktive brukerinnlogginger vil ikke bli påvirket."
|
871 |
+
|
872 |
+
#: ../settings.php:190
|
873 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
874 |
+
msgstr "Før du kan ta i bruk reCAPTCHA må du skaffe deg en Site key og Secret key på Googles webside"
|
875 |
+
|
876 |
+
#: ../cerber-lab.php:419 ../settings.php:191
|
877 |
+
msgid "Know more"
|
878 |
+
msgstr "Lær mer"
|
879 |
+
|
880 |
+
#: ../dashboard.php:688 ../settings.php:213
|
881 |
+
msgid "WP Cerber Security"
|
882 |
+
msgstr "WP Cerber-sikkerhet"
|
883 |
+
|
884 |
+
#: ../settings.php:232
|
885 |
+
msgid "Users"
|
886 |
+
msgstr "Brukere"
|
887 |
+
|
888 |
+
#: ../common.php:253
|
889 |
+
msgid "User created"
|
890 |
+
msgstr "Bruker opprettet"
|
891 |
+
|
892 |
+
#: ../common.php:254
|
893 |
+
msgid "User registered"
|
894 |
+
msgstr "Bruker registrert"
|
895 |
+
|
896 |
+
#: ../common.php:271
|
897 |
+
msgid "reCAPTCHA verification failed"
|
898 |
+
msgstr "reCAPTCHA-godkjenning mislyktes"
|
899 |
+
|
900 |
+
#: ../common.php:272
|
901 |
+
msgid "reCAPTCHA settings are incorrect"
|
902 |
+
msgstr "reCAPTCHA-innstillingene er feil"
|
903 |
+
|
904 |
+
#: ../common.php:275
|
905 |
+
msgid "Attempt to access prohibited URL"
|
906 |
+
msgstr "Forsøk på å koble til forbudt URL"
|
907 |
+
|
908 |
+
#: ../common.php:277 ../common.php:289
|
909 |
+
msgid "Attempt to log in with prohibited username"
|
910 |
+
msgstr "Forsøk på å logge inn med forbudt brukernavn"
|
911 |
+
|
912 |
+
#: ../common.php:341
|
913 |
+
msgid "year"
|
914 |
+
msgstr "år"
|
915 |
+
|
916 |
+
#: ../common.php:342
|
917 |
+
msgid "month"
|
918 |
+
msgstr "måned"
|
919 |
+
|
920 |
+
#: ../common.php:343
|
921 |
+
msgid "day"
|
922 |
+
msgstr "dag"
|
923 |
+
|
924 |
+
#: ../common.php:344
|
925 |
+
msgid "hour"
|
926 |
+
msgstr "time"
|
927 |
+
|
928 |
+
#: ../common.php:345
|
929 |
+
msgid "minute"
|
930 |
+
msgstr "minutt"
|
931 |
+
|
932 |
+
#: ../common.php:346
|
933 |
+
msgid "second"
|
934 |
+
msgstr "sekund"
|
935 |
+
|
936 |
+
#: ../common.php:349
|
937 |
+
msgid "years"
|
938 |
+
msgstr "år"
|
939 |
+
|
940 |
+
#: ../common.php:350
|
941 |
+
msgid "months"
|
942 |
+
msgstr "måneder"
|
943 |
+
|
944 |
+
#: ../common.php:352
|
945 |
+
msgid "hours"
|
946 |
+
msgstr "timer"
|
947 |
+
|
948 |
+
#: ../common.php:354
|
949 |
+
msgid "seconds"
|
950 |
+
msgstr "sekunder"
|
951 |
+
|
952 |
+
#: ../common.php:360
|
953 |
+
msgid "ago"
|
954 |
+
msgstr "siden"
|
955 |
+
|
956 |
+
#: ../settings.php:92
|
957 |
+
msgid "Cerber Lab connection"
|
958 |
+
msgstr "Tilkobling til Cerber Lab"
|
959 |
+
|
960 |
+
#: ../settings.php:92
|
961 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
962 |
+
msgstr "Send ondsinnede IP-adresser til Cerber Lab"
|
963 |
+
|
964 |
+
#: ../settings.php:93
|
965 |
+
msgid "Cerber Lab protocol"
|
966 |
+
msgstr "Cerber Lab protokoll"
|
967 |
+
|
968 |
+
#: ../settings.php:129
|
969 |
+
msgid "Registration form"
|
970 |
+
msgstr "Registreringsskjema"
|
971 |
+
|
972 |
+
#: ../settings.php:130
|
973 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
974 |
+
msgstr "Slå på reCAPTCHA for WooCommerces registreringsskjema"
|
975 |
+
|
976 |
+
#: ../settings.php:132
|
977 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
978 |
+
msgstr "Slå på reCAPTCHA for WordPress' skjema for mistet passord"
|
979 |
+
|
980 |
+
#: ../settings.php:133
|
981 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
982 |
+
msgstr "Slå på reCAPTCHA for WooCommerce mistet passord-skjema"
|
983 |
+
|
984 |
+
#: ../settings.php:136
|
985 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
986 |
+
msgstr "Slå på reCAPTCHA for WooCommerce innloggings-skjema"
|
987 |
+
|
988 |
+
#: ../common.php:273
|
989 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
990 |
+
msgstr "Forespørsel til Googles reCAPTCHA-tjeneste mislyktes"
|
991 |
+
|
992 |
+
#: ../dashboard.php:995 ../dashboard.php:1010
|
993 |
+
msgid "View all"
|
994 |
+
msgstr "Se alle"
|
995 |
+
|
996 |
+
#: ../dashboard.php:1011
|
997 |
+
msgid "Recently locked out IP addresses"
|
998 |
+
msgstr "Nylig utestengte IP-adresser"
|
999 |
+
|
1000 |
+
#: ../cerber-lab.php:417
|
1001 |
+
msgid "OK, nail them all"
|
1002 |
+
msgstr "OK, ta alle sammen"
|
1003 |
+
|
1004 |
+
#: ../cerber-lab.php:418
|
1005 |
+
msgid "NO, maybe later"
|
1006 |
+
msgstr "NEI, kanskje senere"
|
1007 |
+
|
1008 |
+
#: ../dashboard.php:690 ../dashboard.php:860 ../dashboard.php:1303 ../settings.
|
1009 |
+
#: php:218
|
1010 |
+
msgid "Dashboard"
|
1011 |
+
msgstr "Kontrollpanel"
|
1012 |
+
|
1013 |
+
#: ../cerber-lab.php:415
|
1014 |
+
msgid "Want to make WP Cerber even more powerful?"
|
1015 |
+
msgstr "Vil du gjøre WP Cerber enda sterkere?"
|
1016 |
+
|
1017 |
+
#: ../cerber-lab.php:416
|
1018 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
1019 |
+
msgstr "Tillat at WP Cerber sender utestengde ondsinnede IP-adresser til Cerber Lab. Dette hjelper plugin-teamet å utvikle nye algoritmer som vil beskytte WordPress mot nye trusler og botnett som dukker opp hver dag. Du kan slå av sendingen i plugin-innstillingene når som helst."
|
1020 |
+
|
1021 |
+
#: ../dashboard.php:330
|
1022 |
+
msgid "IP address"
|
1023 |
+
msgstr "IP-adresse"
|
1024 |
+
|
1025 |
+
#: ../dashboard.php:330
|
1026 |
+
msgid "User login"
|
1027 |
+
msgstr "Brukernavn"
|
1028 |
+
|
1029 |
+
#: ../dashboard.php:330
|
1030 |
+
msgid "User ID"
|
1031 |
+
msgstr "Bruker-ID"
|
1032 |
+
|
1033 |
+
#: ../dashboard.php:454
|
1034 |
+
msgid "Export"
|
1035 |
+
msgstr "Eksporter"
|
1036 |
+
|
1037 |
+
#: ../dashboard.php:463
|
1038 |
+
msgid "All activities"
|
1039 |
+
msgstr "Alle aktiviteter"
|
1040 |
+
|
1041 |
+
#: ../dashboard.php:470
|
1042 |
+
msgid "Search for IP or username"
|
1043 |
+
msgstr "Søk etter IP eller brukernavn"
|
1044 |
+
|
1045 |
+
#: ../dashboard.php:470
|
1046 |
+
msgid "Filter"
|
1047 |
+
msgstr "Filter"
|
1048 |
+
|
1049 |
+
#: ../dashboard.php:690
|
1050 |
+
msgid "Cerber Dashboard"
|
1051 |
+
msgstr "Cerber-kontrollpanel"
|
1052 |
+
|
1053 |
+
#: ../dashboard.php:692
|
1054 |
+
msgid "Cerber reCAPTCHA settings"
|
1055 |
+
msgstr "Cerber-innstillinger for reCAPTCHA"
|
1056 |
+
|
1057 |
+
#: ../dashboard.php:693
|
1058 |
+
msgid "Cerber tools"
|
1059 |
+
msgstr "Cerber-verktøy"
|
1060 |
+
|
1061 |
+
#: ../dashboard.php:1218
|
1062 |
+
msgid "Subscribe"
|
1063 |
+
msgstr "Abbonér"
|
1064 |
+
|
1065 |
+
#: ../dashboard.php:1219
|
1066 |
+
msgid "Unsubscribe"
|
1067 |
+
msgstr "Avslutt abonnementet"
|
1068 |
+
|
1069 |
+
#: ../dashboard.php:1247
|
1070 |
+
msgid "You've subscribed"
|
1071 |
+
msgstr "Du abbonerer"
|
1072 |
+
|
1073 |
+
#: ../dashboard.php:1250
|
1074 |
+
msgid "You've unsubscribed"
|
1075 |
+
msgstr "Du har avsluttet abonnementet"
|
1076 |
+
|
1077 |
+
#: ../wp-cerber.php:1959 ../wp-cerber.php:1960
|
1078 |
+
msgid "A new activity has been recorded"
|
1079 |
+
msgstr "En ny aktivitet har blitt registrert"
|
1080 |
+
|
1081 |
+
#: ../wp-cerber.php:2180
|
1082 |
+
msgid "User"
|
1083 |
+
msgstr "Bruker"
|
1084 |
+
|
1085 |
+
#: ../wp-cerber.php:2188
|
1086 |
+
msgid "Search string"
|
1087 |
+
msgstr "Søkeord"
|
1088 |
+
|
1089 |
+
#: ../wp-cerber.php:2201
|
1090 |
+
msgid "To unsubscribe click here"
|
1091 |
+
msgstr "Klikk her for å avslutte abbonementet"
|
1092 |
+
|
1093 |
+
#: ../settings.php:96
|
1094 |
+
msgid "Preferences"
|
1095 |
+
msgstr "Valg"
|
1096 |
+
|
1097 |
+
#: ../settings.php:98
|
1098 |
+
msgid "Date format"
|
1099 |
+
msgstr "Datoformat"
|
1100 |
+
|
1101 |
+
#: ../settings.php:98
|
1102 |
+
msgid "if empty, the default format %s will be used"
|
1103 |
+
msgstr "hvis blank, vil formatet %s bli brukt"
|
1104 |
+
|
1105 |
+
#: ../dashboard.php:856 ../settings.php:147
|
1106 |
+
msgid "Push notifications"
|
1107 |
+
msgstr "Push-varsler"
|
1108 |
+
|
1109 |
+
#: ../settings.php:142
|
1110 |
+
msgid "Email notifications"
|
1111 |
+
msgstr "E-postvarsel"
|
1112 |
+
|
1113 |
+
#: ../settings.php:144
|
1114 |
+
msgid "Use comma to specify multiple values"
|
1115 |
+
msgstr "Bruk komma for å skille mellom flere verdier"
|
1116 |
+
|
1117 |
+
#: ../settings.php:153
|
1118 |
+
msgid "All connected devices"
|
1119 |
+
msgstr "Alle tilkoblede enheter"
|
1120 |
+
|
1121 |
+
#: ../settings.php:154
|
1122 |
+
msgid "No devices found"
|
1123 |
+
msgstr "Ingen enheter funnet"
|
1124 |
+
|
1125 |
+
#: ../settings.php:156
|
1126 |
+
msgid "Not available"
|
1127 |
+
msgstr "Ikke tilgjengelig"
|
1128 |
+
|
languages/wp-cerber-nl_NL.mo
ADDED
Binary file
|
languages/wp-cerber-nl_NL.po
ADDED
@@ -0,0 +1,1038 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: WP Cerber\n"
|
8 |
+
"Language: nl\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
+
|
11 |
+
#: ../settings.php:57
|
12 |
+
msgid "Limit login attempts"
|
13 |
+
msgstr "Inlogpogingen beperken"
|
14 |
+
|
15 |
+
#: ../settings.php:58
|
16 |
+
msgid "Attempts"
|
17 |
+
msgstr "Pogingen"
|
18 |
+
|
19 |
+
#: ../settings.php:59
|
20 |
+
msgid "Lockout duration"
|
21 |
+
msgstr "Lockout duur"
|
22 |
+
|
23 |
+
#: ../settings.php:59 ../settings.php:76 ../common.php:229
|
24 |
+
msgid "minutes"
|
25 |
+
msgstr "minuten"
|
26 |
+
|
27 |
+
#: ../settings.php:60
|
28 |
+
msgid "Aggressive lockout"
|
29 |
+
msgstr "Agressieve lockout"
|
30 |
+
|
31 |
+
#: ../settings.php:62
|
32 |
+
msgid "Site connection"
|
33 |
+
msgstr "Website verbinding"
|
34 |
+
|
35 |
+
#: ../settings.php:64
|
36 |
+
msgid "Proactive security rules"
|
37 |
+
msgstr "Proactieve beveiligingsregels"
|
38 |
+
|
39 |
+
#: ../settings.php:65
|
40 |
+
msgid "Block subnet"
|
41 |
+
msgstr "Subnet blokkeren"
|
42 |
+
|
43 |
+
#: ../settings.php:68
|
44 |
+
msgid "Request wp-login.php"
|
45 |
+
msgstr "Bezoek wp-login.php"
|
46 |
+
|
47 |
+
#: ../settings.php:68
|
48 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
49 |
+
msgstr "IP meteen blokkeren bij bezoeken wp-login.php"
|
50 |
+
|
51 |
+
#: ../settings.php:67
|
52 |
+
msgid "Redirect dashboard requests"
|
53 |
+
msgstr "Dashboard bezoeken redirecten"
|
54 |
+
|
55 |
+
#: ../settings.php:70
|
56 |
+
msgid "Custom login page"
|
57 |
+
msgstr "Aangepaste inlog pagina"
|
58 |
+
|
59 |
+
#: ../settings.php:71
|
60 |
+
msgid "Custom login URL"
|
61 |
+
msgstr "Aangepaste inlog URL"
|
62 |
+
|
63 |
+
#: ../settings.php:71
|
64 |
+
msgid "must not overlap with the existing pages or posts slug"
|
65 |
+
msgstr "mag niet overlappen met bestaande pagina of post slugs"
|
66 |
+
|
67 |
+
#: ../settings.php:72
|
68 |
+
msgid "Disable wp-login.php"
|
69 |
+
msgstr "wp-login.php uitschakelen"
|
70 |
+
|
71 |
+
#: ../settings.php:72
|
72 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
73 |
+
msgstr "Directe toegang tot wp-login.php blokkeren en HTTP 404 Not Found Error teruggeven"
|
74 |
+
|
75 |
+
#: ../dashboard.php:840 ../settings.php:74
|
76 |
+
msgid "Citadel mode"
|
77 |
+
msgstr "Citadel modus"
|
78 |
+
|
79 |
+
#: ../settings.php:75
|
80 |
+
msgid "Threshold"
|
81 |
+
msgstr "Drempelwaarde"
|
82 |
+
|
83 |
+
#: ../settings.php:76
|
84 |
+
msgid "Duration"
|
85 |
+
msgstr "Duur"
|
86 |
+
|
87 |
+
#: ../settings.php:61 ../settings.php:78 ../settings.php:80
|
88 |
+
msgid "Notifications"
|
89 |
+
msgstr "Notificaties"
|
90 |
+
|
91 |
+
#: ../settings.php:78
|
92 |
+
msgid "Send notification to admin email"
|
93 |
+
msgstr "Notificatie verzenden naar admin e-mailadres"
|
94 |
+
|
95 |
+
#: ../dashboard.php:658 ../dashboard.php:667 ../dashboard.php:775 ../dashboard.
|
96 |
+
#: php:846 ../dashboard.php:1174 ../wp-cerber.php:2188 ../settings.php:196
|
97 |
+
msgid "Access Lists"
|
98 |
+
msgstr "Access Lists"
|
99 |
+
|
100 |
+
#: ../dashboard.php:386 ../dashboard.php:844 ../dashboard.php:952 ../settings.php:
|
101 |
+
#: 85 ../settings.php:188
|
102 |
+
msgid "Activity"
|
103 |
+
msgstr "Activiteit"
|
104 |
+
|
105 |
+
#: ../dashboard.php:845 ../settings.php:191
|
106 |
+
msgid "Lockouts"
|
107 |
+
msgstr "Lockouts"
|
108 |
+
|
109 |
+
#: ../settings.php:278
|
110 |
+
msgid "%s allowed retries in %s minutes"
|
111 |
+
msgstr "%s toegestane pogingen in %s minuten"
|
112 |
+
|
113 |
+
#: ../settings.php:295
|
114 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
115 |
+
msgstr "Aanzetten na %s mislukte inlogpogingen binnen %s minuten"
|
116 |
+
|
117 |
+
#: ../dashboard.php:75 ../dashboard.php:386
|
118 |
+
msgid "IP"
|
119 |
+
msgstr "IP"
|
120 |
+
|
121 |
+
#: ../dashboard.php:386
|
122 |
+
msgid "Date"
|
123 |
+
msgstr "Datum"
|
124 |
+
|
125 |
+
#: ../dashboard.php:386
|
126 |
+
msgid "Local User"
|
127 |
+
msgstr "Lokale gebruiker"
|
128 |
+
|
129 |
+
#: ../dashboard.php:386
|
130 |
+
msgid "Username used"
|
131 |
+
msgstr "Gebruikte gebruikersnaam"
|
132 |
+
|
133 |
+
#: ../dashboard.php:81
|
134 |
+
msgid "Showing last %d records from %d"
|
135 |
+
msgstr "Laatste %d records van %d"
|
136 |
+
|
137 |
+
#: ../common.php:131
|
138 |
+
msgid "Logged in"
|
139 |
+
msgstr "Ingelogd"
|
140 |
+
|
141 |
+
#: ../common.php:132
|
142 |
+
msgid "Logged out"
|
143 |
+
msgstr "Uitgelogd"
|
144 |
+
|
145 |
+
#: ../common.php:133
|
146 |
+
msgid "Login failed"
|
147 |
+
msgstr "Inloggen mislukt"
|
148 |
+
|
149 |
+
#: ../common.php:136
|
150 |
+
msgid "IP blocked"
|
151 |
+
msgstr "IP geblokkeerd"
|
152 |
+
|
153 |
+
#: ../common.php:137
|
154 |
+
msgid "Subnet blocked"
|
155 |
+
msgstr "Subet geblokkeerd"
|
156 |
+
|
157 |
+
#: ../common.php:139
|
158 |
+
msgid "Citadel activated!"
|
159 |
+
msgstr "Citadel modus geactiveerd!"
|
160 |
+
|
161 |
+
#: ../dashboard.php:375 ../dashboard.php:439 ../common.php:141
|
162 |
+
#, fuzzy
|
163 |
+
msgid "Locked out"
|
164 |
+
msgstr "Buitengesloten"
|
165 |
+
|
166 |
+
#: ../common.php:142
|
167 |
+
msgid "IP blacklisted"
|
168 |
+
msgstr "IP ge-blacklist"
|
169 |
+
|
170 |
+
#: ../common.php:145
|
171 |
+
msgid "Password changed"
|
172 |
+
msgstr "Wachtwoord veranderd"
|
173 |
+
|
174 |
+
#: ../dashboard.php:72 ../dashboard.php:122
|
175 |
+
msgid "Remove"
|
176 |
+
msgstr "Verwijderen"
|
177 |
+
|
178 |
+
#: ../dashboard.php:254
|
179 |
+
msgid "Lockout for %s was removed"
|
180 |
+
msgstr "Lockout voor %s is verwijderd"
|
181 |
+
|
182 |
+
#: ../dashboard.php:100 ../dashboard.php:370 ../dashboard.php:434 ../dashboard.
|
183 |
+
#: php:838 ../wp-cerber.php:2182 ../settings.php:153
|
184 |
+
#, fuzzy
|
185 |
+
msgid "White IP Access List"
|
186 |
+
msgstr "White IP Access List"
|
187 |
+
|
188 |
+
#: ../dashboard.php:102 ../dashboard.php:371 ../dashboard.php:436 ../dashboard.
|
189 |
+
#: php:839
|
190 |
+
#, fuzzy
|
191 |
+
msgid "Black IP Access List"
|
192 |
+
msgstr "Black IP Access List"
|
193 |
+
|
194 |
+
#: ../dashboard.php:125
|
195 |
+
msgid "List is empty"
|
196 |
+
msgstr "Lijst is leeg"
|
197 |
+
|
198 |
+
#: ../dashboard.php:147
|
199 |
+
#, fuzzy
|
200 |
+
msgid "Address %s was added to White IP Access List"
|
201 |
+
msgstr "Adres %s is toegevoegd aan de White IP Access List"
|
202 |
+
|
203 |
+
#: ../dashboard.php:160
|
204 |
+
#, fuzzy
|
205 |
+
msgid "Address %s was added to Black IP Access List"
|
206 |
+
msgstr "Adres %s is toegevoegd aan de Black IP Access List"
|
207 |
+
|
208 |
+
#: ../wp-cerber.php:1894
|
209 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
210 |
+
msgstr "Citadel modus is geactiveerd na %d mislukte inlogpogingen binnen %d minuten"
|
211 |
+
|
212 |
+
#: ../dashboard.php:1067
|
213 |
+
#, fuzzy
|
214 |
+
msgid "View Activity"
|
215 |
+
msgstr "Activiteit bekijken"
|
216 |
+
|
217 |
+
#: ../dashboard.php:657 ../dashboard.php:666 ../dashboard.php:847 ../dashboard.
|
218 |
+
#: php:1173
|
219 |
+
msgid "Settings"
|
220 |
+
msgstr "Instellingen"
|
221 |
+
|
222 |
+
#: ../dashboard.php:606
|
223 |
+
#, fuzzy
|
224 |
+
msgid "Last login"
|
225 |
+
msgstr "Laatst ingelogd"
|
226 |
+
|
227 |
+
#: ../dashboard.php:633 ../dashboard.php:821
|
228 |
+
msgid "Never"
|
229 |
+
msgstr "Nooit"
|
230 |
+
|
231 |
+
#: ../dashboard.php:991 ../dashboard.php:1784
|
232 |
+
msgid "Are you sure?"
|
233 |
+
msgstr "Weet je het zeker?"
|
234 |
+
|
235 |
+
#: ../dashboard.php:509 ../dashboard.php:516
|
236 |
+
msgid "WP Cerber Settings"
|
237 |
+
msgstr "WP Cerber instellingen"
|
238 |
+
|
239 |
+
#: ../settings.php:62
|
240 |
+
msgid "My site is behind a reverse proxy"
|
241 |
+
msgstr "Mijn website draait achter een reverse proxy"
|
242 |
+
|
243 |
+
#: ../settings.php:66
|
244 |
+
msgid "Non-existent users"
|
245 |
+
msgstr "Niet-bestaande gebruikers"
|
246 |
+
|
247 |
+
#: ../settings.php:66
|
248 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
249 |
+
msgstr "IP meteen blokkeren bij inlogpoging op niet-bestaande gebruiker"
|
250 |
+
|
251 |
+
#: ../settings.php:67
|
252 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
253 |
+
msgstr "Automatisch redirecten, naar de inlogpagina bij een verzoek aan wp-admin door een ongeautoriseerd verzoek, uitschakelen."
|
254 |
+
|
255 |
+
#: ../settings.php:137
|
256 |
+
msgid "Make your protection smarter!"
|
257 |
+
msgstr "Maak bescherming slimmer!"
|
258 |
+
|
259 |
+
#: ../settings.php:141
|
260 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
261 |
+
msgstr "Schakel Permalinks in om deze functionaliteit te gebruiken. Stel de Permalinks instelling in op iets anders dan Standaard."
|
262 |
+
|
263 |
+
#: ../settings.php:144
|
264 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
265 |
+
msgstr "Wees voorzichtig met het inschakelen van deze opties. Als je de aangepast inlog URL vergeet kun je niet meer inloggen."
|
266 |
+
|
267 |
+
#: ../wp-cerber.php:2187 ../settings.php:193
|
268 |
+
msgid "Main Settings"
|
269 |
+
msgstr "Hoofdinstellingen"
|
270 |
+
|
271 |
+
#: ../settings.php:207
|
272 |
+
msgid "Help"
|
273 |
+
msgstr "Hulp"
|
274 |
+
|
275 |
+
#: ../settings.php:283
|
276 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
277 |
+
msgstr "Lockout duur verhogen naar %s uren na %s lockouts in de laatste %s uren"
|
278 |
+
|
279 |
+
#: ../wp-cerber.php:184
|
280 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
281 |
+
msgstr "Je hebt geen toestemming om in te loggen. Neem contact op met de beheerder voor meer informatie."
|
282 |
+
|
283 |
+
#: ../wp-cerber.php:190
|
284 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
285 |
+
msgstr "Je hebt de limiet voor inlogpogingen bereikt. Probeer het nog eens over %d minuten."
|
286 |
+
|
287 |
+
#: ../wp-cerber.php:208
|
288 |
+
msgid "You have only one attempt remaining."
|
289 |
+
msgid_plural "You have %d attempts remaining."
|
290 |
+
msgstr[0] "Slechts één inlogpoging resterend!"
|
291 |
+
msgstr[1] "%s inlogpogingen resterend."
|
292 |
+
|
293 |
+
#: ../dashboard.php:410
|
294 |
+
msgid "Show only"
|
295 |
+
msgstr "Laat alleen zien"
|
296 |
+
|
297 |
+
#: ../dashboard.php:396
|
298 |
+
msgid "No activity has been logged."
|
299 |
+
msgstr "Geen activiteit waargenomen."
|
300 |
+
|
301 |
+
#: ../dashboard.php:75
|
302 |
+
msgid "Expires"
|
303 |
+
msgstr "Verloopt"
|
304 |
+
|
305 |
+
#: ../dashboard.php:87
|
306 |
+
#, fuzzy
|
307 |
+
msgid "No lockouts at the moment. The sky is clear."
|
308 |
+
msgstr "Geen lockouts op dit moment."
|
309 |
+
|
310 |
+
#: ../dashboard.php:100
|
311 |
+
msgid "These IPs will never be locked out"
|
312 |
+
msgstr "Deze IP's worden nooit geblokkeerd."
|
313 |
+
|
314 |
+
#: ../dashboard.php:104
|
315 |
+
msgid "Your IP"
|
316 |
+
msgstr "Jou IP"
|
317 |
+
|
318 |
+
#: ../dashboard.php:156
|
319 |
+
msgid "You can't add your IP address"
|
320 |
+
msgstr "Kan eigen IP niet toevoegen"
|
321 |
+
|
322 |
+
#: ../wp-cerber.php:1895
|
323 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
324 |
+
msgstr "Laatste mislukte inlogpoging was op %s vanaf IP %s op gebruiker %s."
|
325 |
+
|
326 |
+
#: ../wp-cerber.php:1957
|
327 |
+
msgid "Change notification settings"
|
328 |
+
msgstr "Notificatie instellingen wijzigen"
|
329 |
+
|
330 |
+
#: ../wp-cerber.php:2165
|
331 |
+
msgid "Can't activate WP Cerber due to a database error."
|
332 |
+
msgstr "Kan WP Cerber niet activeren vanwege een database error"
|
333 |
+
|
334 |
+
#: ../settings.php:290
|
335 |
+
msgid "Notify admin if the number of active lockouts above"
|
336 |
+
msgstr "Verwittig de beheerder als het aantal actieve lockouts komt boven"
|
337 |
+
|
338 |
+
#: ../settings.php:86 ../common.php:227
|
339 |
+
msgid "days"
|
340 |
+
msgstr "dagen"
|
341 |
+
|
342 |
+
#: ../dashboard.php:793
|
343 |
+
msgid "Cerber Quick View"
|
344 |
+
msgstr "Cerber Quick View"
|
345 |
+
|
346 |
+
#: ../dashboard.php:83
|
347 |
+
msgid "Hint"
|
348 |
+
msgstr "Tip"
|
349 |
+
|
350 |
+
#: ../dashboard.php:83
|
351 |
+
msgid "To view activity, click on the IP"
|
352 |
+
msgstr "Klik op het IP om activiteiten te bekijken"
|
353 |
+
|
354 |
+
#: ../dashboard.php:122 ../dashboard.php:466
|
355 |
+
msgid "Check for activity"
|
356 |
+
msgstr "Check voor activiteit"
|
357 |
+
|
358 |
+
#: ../settings.php:65
|
359 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
360 |
+
msgstr "Altijd gehele IP Class C subnet blokkeren van aanvaller"
|
361 |
+
|
362 |
+
#: ../settings.php:78 ../settings.php:292
|
363 |
+
msgid "Click to send test"
|
364 |
+
msgstr "Klik om test te verzenden"
|
365 |
+
|
366 |
+
#: ../settings.php:345
|
367 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
368 |
+
msgstr "Let op! Je hebt de inlog URL veranderd, de nieuwe login URL is"
|
369 |
+
|
370 |
+
#: ../dashboard.php:605
|
371 |
+
msgid "Comments"
|
372 |
+
msgstr "Reacties"
|
373 |
+
|
374 |
+
#: ../dashboard.php:608
|
375 |
+
msgid "Date of registration"
|
376 |
+
msgstr "Registratiedatum"
|
377 |
+
|
378 |
+
#: ../dashboard.php:246
|
379 |
+
msgid "Message has been sent to "
|
380 |
+
msgstr "Bericht is verzonden naar "
|
381 |
+
|
382 |
+
#: ../dashboard.php:1124
|
383 |
+
msgid "Update to version %s of WP Cerber"
|
384 |
+
msgstr "WP Cerber updaten naar versie %s"
|
385 |
+
|
386 |
+
#: ../wp-cerber.php:1896
|
387 |
+
msgid "View activity in dashboard"
|
388 |
+
msgstr "Activiteiten bekijken in dashboard"
|
389 |
+
|
390 |
+
#: ../wp-cerber.php:1924
|
391 |
+
msgid "Number of active lockouts"
|
392 |
+
msgstr "Aantal actieve lockouts"
|
393 |
+
|
394 |
+
#: ../wp-cerber.php:1929
|
395 |
+
msgid "View lockouts in dashboard"
|
396 |
+
msgstr "Lockouts bekijken in dashboard"
|
397 |
+
|
398 |
+
#: ../wp-cerber.php:1977
|
399 |
+
msgid "This message was sent by"
|
400 |
+
msgstr "Dit bericht is verzonden door"
|
401 |
+
|
402 |
+
#: ../settings.php:205
|
403 |
+
msgid "Tools"
|
404 |
+
msgstr "Gereedschap"
|
405 |
+
|
406 |
+
#: ../dashboard.php:654
|
407 |
+
msgid "Export settings to the file"
|
408 |
+
msgstr "Instellingen exporteren naar bestand"
|
409 |
+
|
410 |
+
#: ../dashboard.php:655
|
411 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
412 |
+
msgstr "Door op onderstaande knop te klikken, word er een configuratie bestand gegenereerd die je kunt uploaden bij een andere website."
|
413 |
+
|
414 |
+
#: ../dashboard.php:656
|
415 |
+
msgid "What do you want to export?"
|
416 |
+
msgstr "Wat wil je exporteren?"
|
417 |
+
|
418 |
+
#: ../dashboard.php:659
|
419 |
+
msgid "Download file"
|
420 |
+
msgstr "Bestand downloaden"
|
421 |
+
|
422 |
+
#: ../dashboard.php:661
|
423 |
+
msgid "Import settings from the file"
|
424 |
+
msgstr "Instellingen importeren van bestand"
|
425 |
+
|
426 |
+
#: ../dashboard.php:662
|
427 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
428 |
+
msgstr "Bij het klikken op de onderstaande knop word het bestand geüpload en worden alle bestaande instellingen overschreven."
|
429 |
+
|
430 |
+
#: ../dashboard.php:663
|
431 |
+
msgid "Select file to import."
|
432 |
+
msgstr "Kies bestand om te importeren"
|
433 |
+
|
434 |
+
#: ../dashboard.php:663
|
435 |
+
msgid "Maximum upload file size: %s."
|
436 |
+
msgstr "Maximum bestandsgrootte: %s"
|
437 |
+
|
438 |
+
#: ../dashboard.php:666
|
439 |
+
msgid "What do you want to import?"
|
440 |
+
msgstr "Wat wil je importeren?"
|
441 |
+
|
442 |
+
#: ../dashboard.php:668
|
443 |
+
msgid "Upload file"
|
444 |
+
msgstr "Bestand uploaden"
|
445 |
+
|
446 |
+
#: ../dashboard.php:749
|
447 |
+
msgid "No file was uploaded or file is corrupted"
|
448 |
+
msgstr "Geen bestand geüpload of bestand is beschadigd."
|
449 |
+
|
450 |
+
#: ../dashboard.php:775
|
451 |
+
msgid "Error while updating"
|
452 |
+
msgstr "Foutmelding tijdens updaten"
|
453 |
+
|
454 |
+
#: ../dashboard.php:778
|
455 |
+
msgid "Settings has imported successfully from"
|
456 |
+
msgstr "Instellingen succesvol geïmporteerd van"
|
457 |
+
|
458 |
+
#: ../dashboard.php:782
|
459 |
+
msgid "Error while parsing file"
|
460 |
+
msgstr "Fout bij verwerken bestand"
|
461 |
+
|
462 |
+
#: ../dashboard.php:75 ../dashboard.php:386
|
463 |
+
msgid "Hostname"
|
464 |
+
msgstr "Hostname"
|
465 |
+
|
466 |
+
#: ../dashboard.php:227
|
467 |
+
msgid "unknown"
|
468 |
+
msgstr "onbekend"
|
469 |
+
|
470 |
+
#: ../settings.php:86
|
471 |
+
#, fuzzy
|
472 |
+
msgid "Keep records for"
|
473 |
+
msgstr "Records behouden tot"
|
474 |
+
|
475 |
+
#: ../dashboard.php:825
|
476 |
+
msgid "active"
|
477 |
+
msgstr "actief"
|
478 |
+
|
479 |
+
#: ../dashboard.php:825
|
480 |
+
msgid "deactivate"
|
481 |
+
msgstr "deactiveren"
|
482 |
+
|
483 |
+
#: ../dashboard.php:827
|
484 |
+
msgid "not active"
|
485 |
+
msgstr "niet actief"
|
486 |
+
|
487 |
+
#: ../dashboard.php:828
|
488 |
+
msgid "disabled"
|
489 |
+
msgstr "gedeactiveerd"
|
490 |
+
|
491 |
+
#: ../dashboard.php:833
|
492 |
+
msgid "failed attempts"
|
493 |
+
msgstr "mislukte pogingen"
|
494 |
+
|
495 |
+
#: ../dashboard.php:833 ../dashboard.php:834
|
496 |
+
msgid "in 24 hours"
|
497 |
+
msgstr "in 24 uur"
|
498 |
+
|
499 |
+
#: ../dashboard.php:833 ../dashboard.php:834
|
500 |
+
msgid "view all"
|
501 |
+
msgstr "bekijk alles"
|
502 |
+
|
503 |
+
#: ../dashboard.php:834
|
504 |
+
msgid "lockouts"
|
505 |
+
msgstr "lockouts"
|
506 |
+
|
507 |
+
#: ../dashboard.php:836
|
508 |
+
msgid "Lockouts at the moment"
|
509 |
+
msgstr "Lockouts op dit moment"
|
510 |
+
|
511 |
+
#: ../dashboard.php:837
|
512 |
+
#, fuzzy
|
513 |
+
msgid "Last lockout"
|
514 |
+
msgstr "Laatste lockout"
|
515 |
+
|
516 |
+
#: ../dashboard.php:838 ../dashboard.php:839 ../dashboard.php:1155
|
517 |
+
msgid "entry"
|
518 |
+
msgid_plural "entries"
|
519 |
+
msgstr[0] "item"
|
520 |
+
msgstr[1] "items"
|
521 |
+
|
522 |
+
#: ../dashboard.php:986
|
523 |
+
#, fuzzy
|
524 |
+
msgid "Confused about some settings?"
|
525 |
+
msgstr "Verward over sommige instellingen?"
|
526 |
+
|
527 |
+
#: ../dashboard.php:987
|
528 |
+
#, fuzzy
|
529 |
+
msgid "You can easily load default recommended settings using button below"
|
530 |
+
msgstr "Je kunt gemakkelijk de standaard aanbevolen instellingen laden met de knop hieronder"
|
531 |
+
|
532 |
+
#: ../dashboard.php:989
|
533 |
+
#, fuzzy
|
534 |
+
msgid "Load default settings"
|
535 |
+
msgstr "Standaard instellingen laden"
|
536 |
+
|
537 |
+
#: ../dashboard.php:997
|
538 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
539 |
+
msgstr "heeft geen effect op Custom inlog URL en Access Lists"
|
540 |
+
|
541 |
+
#: ../dashboard.php:1016
|
542 |
+
msgid "Donate"
|
543 |
+
msgstr "Doneren"
|
544 |
+
|
545 |
+
#: ../dashboard.php:1118
|
546 |
+
msgid "New version is available"
|
547 |
+
msgstr "Nieuwe versie beschikbaar"
|
548 |
+
|
549 |
+
#. Name of the plugin
|
550 |
+
#: ../dashboard.php:509 ../dashboard.php:511 ../dashboard.php:516 ../dashboard.
|
551 |
+
#: php:540
|
552 |
+
msgid "WP Cerber"
|
553 |
+
msgstr "WP Cerber"
|
554 |
+
|
555 |
+
#. URI of the plugin
|
556 |
+
#:
|
557 |
+
msgid "http://wpcerber.com"
|
558 |
+
msgstr "http://wpcerber.com "
|
559 |
+
|
560 |
+
#: ../wp-cerber.php:1873
|
561 |
+
msgid "WP Cerber notify"
|
562 |
+
msgstr "WP Cerber melding"
|
563 |
+
|
564 |
+
#: ../wp-cerber.php:1892
|
565 |
+
msgid "Citadel mode is activated"
|
566 |
+
msgstr "Citadel modus is actief"
|
567 |
+
|
568 |
+
#: ../wp-cerber.php:1962
|
569 |
+
msgid "New Custom login URL"
|
570 |
+
msgstr "Nieuwe aangepaste inlog URL"
|
571 |
+
|
572 |
+
#: ../wp-cerber.php:2156
|
573 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
574 |
+
msgstr "WP Cerber vereist PHP %s of hoger. Je gebruikt nu"
|
575 |
+
|
576 |
+
#: ../wp-cerber.php:2160
|
577 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
578 |
+
msgstr "WP Cerber vereist WordPress %s of hoger. Je gebruikt nu"
|
579 |
+
|
580 |
+
#: ../settings.php:92
|
581 |
+
msgid "Use file"
|
582 |
+
msgstr "Bestand gebruiken"
|
583 |
+
|
584 |
+
#: ../settings.php:92
|
585 |
+
msgid "Write failed login attempts to the file"
|
586 |
+
msgstr "Mislukte pogingen opslaan in bestand"
|
587 |
+
|
588 |
+
#: ../dashboard.php:607
|
589 |
+
msgid "Failed attempts in last 24 hours"
|
590 |
+
msgstr "Mislukte pogingen in de laatste 24 uur"
|
591 |
+
|
592 |
+
#: ../dashboard.php:1066
|
593 |
+
msgid "Deactivate"
|
594 |
+
msgstr "Deactiveren"
|
595 |
+
|
596 |
+
#: ../dashboard.php:75 ../wp-cerber.php:1927
|
597 |
+
msgid "Reason"
|
598 |
+
msgstr "Reden"
|
599 |
+
|
600 |
+
#: ../dashboard.php:129
|
601 |
+
msgid "Add IP to the list"
|
602 |
+
msgstr "IP-adres toevoegen aan lijst"
|
603 |
+
|
604 |
+
#: ../dashboard.php:484
|
605 |
+
msgid "Add IP to the Black List"
|
606 |
+
msgstr "IP-adres toevoegen aan Black List"
|
607 |
+
|
608 |
+
#: ../common.php:163
|
609 |
+
msgid "Attempt to access"
|
610 |
+
msgstr "Poging tot toegang"
|
611 |
+
|
612 |
+
#: ../common.php:162
|
613 |
+
msgid "Limit on login attempts is reached"
|
614 |
+
msgstr "Limiet voor aantal inlogpogingen is bereikt"
|
615 |
+
|
616 |
+
#: ../common.php:152 ../common.php:164
|
617 |
+
msgid "Attempt to log in with non-existent username"
|
618 |
+
msgstr "Poging om in te loggen met niet bestaande gebruikersnaam"
|
619 |
+
|
620 |
+
#: ../wp-cerber.php:1926
|
621 |
+
msgid "Last lockout was added: %s for IP %s"
|
622 |
+
msgstr "Laatste lockout was toegevoed: %s voor IP-adres %s"
|
623 |
+
|
624 |
+
#: ../wp-cerber.php:2184
|
625 |
+
msgid "It's important to check security settings."
|
626 |
+
msgstr "Het is belangrijk om de beveiligingsinstellingen na te kijken."
|
627 |
+
|
628 |
+
#: ../wp-cerber.php:2189 ../settings.php:198
|
629 |
+
msgid "Hardening"
|
630 |
+
msgstr "Hardening"
|
631 |
+
|
632 |
+
#: ../dashboard.php:462
|
633 |
+
msgid "Abuse email:"
|
634 |
+
msgstr ""
|
635 |
+
|
636 |
+
#: ../settings.php:82
|
637 |
+
msgid "Email Address"
|
638 |
+
msgstr "E-mailadres"
|
639 |
+
|
640 |
+
#: ../settings.php:82
|
641 |
+
msgid "if empty, the admin email %s will be used"
|
642 |
+
msgstr ""
|
643 |
+
|
644 |
+
#: ../settings.php:89
|
645 |
+
msgid "Drill down IP"
|
646 |
+
msgstr ""
|
647 |
+
|
648 |
+
#: ../settings.php:89
|
649 |
+
msgid "Retrieve extra WHOIS information for IP"
|
650 |
+
msgstr "Haal extra WHOIS informatie op voor IP-adres"
|
651 |
+
|
652 |
+
#: ../settings.php:99
|
653 |
+
msgid "Hardening WordPress"
|
654 |
+
msgstr "Hardening Wordpress"
|
655 |
+
|
656 |
+
#: ../settings.php:100
|
657 |
+
msgid "Stop user enumeration"
|
658 |
+
msgstr ""
|
659 |
+
|
660 |
+
#: ../settings.php:100
|
661 |
+
msgid "Block access to the pages like /?author=n"
|
662 |
+
msgstr ""
|
663 |
+
|
664 |
+
#: ../settings.php:101
|
665 |
+
msgid "Disable XML-RPC"
|
666 |
+
msgstr "XML-RPC uitschakelen"
|
667 |
+
|
668 |
+
#: ../settings.php:101
|
669 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
670 |
+
msgstr "Toegang tot XML-RPC server uitschakelen (inclusief Pingbacks en Trackbacks)"
|
671 |
+
|
672 |
+
#: ../settings.php:102
|
673 |
+
msgid "Disable feeds"
|
674 |
+
msgstr "Feeds uitschakelen"
|
675 |
+
|
676 |
+
#: ../settings.php:102
|
677 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
678 |
+
msgstr ""
|
679 |
+
|
680 |
+
#: ../settings.php:103
|
681 |
+
msgid "Disable REST API"
|
682 |
+
msgstr "REST API uitschakelen"
|
683 |
+
|
684 |
+
#: ../settings.php:103
|
685 |
+
msgid "Block access to the WordPress REST API"
|
686 |
+
msgstr ""
|
687 |
+
|
688 |
+
#: ../settings.php:153
|
689 |
+
msgid "These settings do not affect hosts from the "
|
690 |
+
msgstr ""
|
691 |
+
|
692 |
+
#: ../settings.php:368
|
693 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
694 |
+
msgstr ""
|
695 |
+
|
696 |
+
#: ../settings.php:618
|
697 |
+
msgid "Number of items per page:"
|
698 |
+
msgstr "Aantal items per pagina:"
|
699 |
+
|
700 |
+
#: ../wp-cerber.php:1956 ../wp-cerber.php:2181
|
701 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
702 |
+
msgstr "WP Cerber is actief en beschermt nu je website"
|
703 |
+
|
704 |
+
#: ../dashboard.php:75
|
705 |
+
msgid "Action"
|
706 |
+
msgstr "Actie"
|
707 |
+
|
708 |
+
#: ../dashboard.php:102
|
709 |
+
msgid "Nobody can log in or register from these IPs"
|
710 |
+
msgstr ""
|
711 |
+
|
712 |
+
#: ../dashboard.php:144 ../dashboard.php:152
|
713 |
+
msgid "Incorrect IP address or IP range"
|
714 |
+
msgstr ""
|
715 |
+
|
716 |
+
#: ../dashboard.php:248
|
717 |
+
msgid "Unable to send notification email"
|
718 |
+
msgstr ""
|
719 |
+
|
720 |
+
#: ../dashboard.php:261 ../dashboard.php:1082
|
721 |
+
msgid "Settings saved"
|
722 |
+
msgstr "Instellingen opgeslagen"
|
723 |
+
|
724 |
+
#: ../dashboard.php:466
|
725 |
+
msgid "Network:"
|
726 |
+
msgstr "Netwerk:"
|
727 |
+
|
728 |
+
#: ../dashboard.php:480
|
729 |
+
msgid "Add network to the Black List"
|
730 |
+
msgstr "Voeg netwerk toe aan Black List"
|
731 |
+
|
732 |
+
#: ../dashboard.php:468
|
733 |
+
msgid "Cerber Security"
|
734 |
+
msgstr "Cerber Security"
|
735 |
+
|
736 |
+
#: ../dashboard.php:1065
|
737 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
738 |
+
msgstr "Let op! Citadel modus is actief; niemand kan inloggen."
|
739 |
+
|
740 |
+
#: ../whois.php:211
|
741 |
+
msgid "Unknown"
|
742 |
+
msgstr "Onbekend"
|
743 |
+
|
744 |
+
#. Description of the plugin
|
745 |
+
#:
|
746 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
747 |
+
msgstr ""
|
748 |
+
|
749 |
+
#. Author of the plugin
|
750 |
+
#:
|
751 |
+
msgid "Gregory"
|
752 |
+
msgstr "Gregory"
|
753 |
+
|
754 |
+
#: ../wp-cerber.php:579 ../wp-cerber.php:629 ../wp-cerber.php:635 ../wp-cerber.
|
755 |
+
#: php:658 ../settings.php:400
|
756 |
+
msgid "ERROR:"
|
757 |
+
msgstr "FOUT:"
|
758 |
+
|
759 |
+
#: ../wp-cerber.php:481
|
760 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
761 |
+
msgstr ""
|
762 |
+
|
763 |
+
#: ../wp-cerber.php:591
|
764 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
765 |
+
msgstr ""
|
766 |
+
|
767 |
+
#: ../wp-cerber.php:636
|
768 |
+
msgid "Username is not allowed. Please choose another one."
|
769 |
+
msgstr "Gebruikersnaam is niet toegestaan, kies alstublieft een andere."
|
770 |
+
|
771 |
+
#: ../wp-cerber.php:1918
|
772 |
+
msgid "unspecified"
|
773 |
+
msgstr ""
|
774 |
+
|
775 |
+
#: ../wp-cerber.php:1922
|
776 |
+
msgid "Number of lockouts is increasing"
|
777 |
+
msgstr ""
|
778 |
+
|
779 |
+
#: ../wp-cerber.php:1928
|
780 |
+
msgid "View activity for this IP"
|
781 |
+
msgstr ""
|
782 |
+
|
783 |
+
#: ../wp-cerber.php:1932 ../wp-cerber.php:1934
|
784 |
+
msgid "A new version of WP Cerber is available to install"
|
785 |
+
msgstr ""
|
786 |
+
|
787 |
+
#: ../wp-cerber.php:1933
|
788 |
+
msgid "Hi!"
|
789 |
+
msgstr ""
|
790 |
+
|
791 |
+
#: ../wp-cerber.php:1935 ../wp-cerber.php:1946
|
792 |
+
msgid "Website"
|
793 |
+
msgstr "Website"
|
794 |
+
|
795 |
+
#: ../wp-cerber.php:1938 ../wp-cerber.php:1939
|
796 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
797 |
+
msgstr ""
|
798 |
+
|
799 |
+
#: ../wp-cerber.php:1941
|
800 |
+
msgid "Not logged in"
|
801 |
+
msgstr "Niet ingelogd"
|
802 |
+
|
803 |
+
#: ../wp-cerber.php:1947
|
804 |
+
msgid "By user"
|
805 |
+
msgstr "Door gebruiker"
|
806 |
+
|
807 |
+
#: ../wp-cerber.php:1948
|
808 |
+
msgid "From IP address"
|
809 |
+
msgstr ""
|
810 |
+
|
811 |
+
#: ../wp-cerber.php:1951
|
812 |
+
msgid "From country"
|
813 |
+
msgstr ""
|
814 |
+
|
815 |
+
#: ../wp-cerber.php:1955
|
816 |
+
msgid "The WP Cerber security plugin is now active"
|
817 |
+
msgstr ""
|
818 |
+
|
819 |
+
#: ../wp-cerber.php:2182
|
820 |
+
msgid "Your IP address is added to the"
|
821 |
+
msgstr ""
|
822 |
+
|
823 |
+
#: ../wp-cerber.php:2190 ../settings.php:203
|
824 |
+
msgid "reCAPTCHA"
|
825 |
+
msgstr "reCAPTCHA"
|
826 |
+
|
827 |
+
#: ../wp-cerber.php:2191
|
828 |
+
msgid "Import settings"
|
829 |
+
msgstr "Instellingen importeren"
|
830 |
+
|
831 |
+
#: ../settings.php:83
|
832 |
+
msgid "Notification limit"
|
833 |
+
msgstr ""
|
834 |
+
|
835 |
+
#: ../settings.php:83
|
836 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
837 |
+
msgstr ""
|
838 |
+
|
839 |
+
#: ../settings.php:111
|
840 |
+
msgid "User related settings"
|
841 |
+
msgstr "Gebruikersinstellingen"
|
842 |
+
|
843 |
+
#: ../settings.php:112
|
844 |
+
msgid "Prohibited usernames"
|
845 |
+
msgstr "Verboden gebruikersnamen"
|
846 |
+
|
847 |
+
#: ../settings.php:112
|
848 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
849 |
+
msgstr ""
|
850 |
+
|
851 |
+
#: ../settings.php:113
|
852 |
+
msgid "User session expire"
|
853 |
+
msgstr ""
|
854 |
+
|
855 |
+
#: ../settings.php:113
|
856 |
+
msgid "in minutes (leave empty to use default WP value)"
|
857 |
+
msgstr "in minuten"
|
858 |
+
|
859 |
+
#: ../settings.php:117
|
860 |
+
msgid "reCAPTCHA settings"
|
861 |
+
msgstr "reCAPTCHA instellingen"
|
862 |
+
|
863 |
+
#: ../settings.php:118
|
864 |
+
msgid "Site key"
|
865 |
+
msgstr ""
|
866 |
+
|
867 |
+
#: ../settings.php:119
|
868 |
+
msgid "Secret key"
|
869 |
+
msgstr ""
|
870 |
+
|
871 |
+
#: ../settings.php:121
|
872 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
873 |
+
msgstr ""
|
874 |
+
|
875 |
+
#: ../settings.php:124
|
876 |
+
msgid "Lost password form"
|
877 |
+
msgstr ""
|
878 |
+
|
879 |
+
#: ../settings.php:127
|
880 |
+
msgid "Login form"
|
881 |
+
msgstr ""
|
882 |
+
|
883 |
+
#: ../settings.php:127
|
884 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
885 |
+
msgstr ""
|
886 |
+
|
887 |
+
#: ../settings.php:148
|
888 |
+
msgid "In Citadel mode nobody is able to login. Active user's sessions will not be affected."
|
889 |
+
msgstr ""
|
890 |
+
|
891 |
+
#: ../settings.php:158
|
892 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
893 |
+
msgstr ""
|
894 |
+
|
895 |
+
#: ../settings.php:159
|
896 |
+
msgid "Know more"
|
897 |
+
msgstr ""
|
898 |
+
|
899 |
+
#: ../dashboard.php:511 ../settings.php:179
|
900 |
+
msgid "WP Cerber Security"
|
901 |
+
msgstr ""
|
902 |
+
|
903 |
+
#: ../settings.php:200
|
904 |
+
msgid "Users"
|
905 |
+
msgstr ""
|
906 |
+
|
907 |
+
#: ../common.php:129
|
908 |
+
msgid "User created"
|
909 |
+
msgstr ""
|
910 |
+
|
911 |
+
#: ../common.php:130
|
912 |
+
msgid "User registered"
|
913 |
+
msgstr ""
|
914 |
+
|
915 |
+
#: ../common.php:147
|
916 |
+
msgid "reCAPTCHA verification failed"
|
917 |
+
msgstr ""
|
918 |
+
|
919 |
+
#: ../common.php:148
|
920 |
+
msgid "reCAPTCHA settings are incorrect"
|
921 |
+
msgstr ""
|
922 |
+
|
923 |
+
#: ../common.php:151
|
924 |
+
msgid "Attempt to access prohibited URL"
|
925 |
+
msgstr ""
|
926 |
+
|
927 |
+
#: ../common.php:153 ../common.php:165
|
928 |
+
msgid "Attempt to log in with prohibited username"
|
929 |
+
msgstr ""
|
930 |
+
|
931 |
+
#: ../common.php:217
|
932 |
+
msgid "year"
|
933 |
+
msgstr "jaar"
|
934 |
+
|
935 |
+
#: ../common.php:218
|
936 |
+
msgid "month"
|
937 |
+
msgstr "maand"
|
938 |
+
|
939 |
+
#: ../common.php:219
|
940 |
+
msgid "day"
|
941 |
+
msgstr "dag"
|
942 |
+
|
943 |
+
#: ../common.php:220
|
944 |
+
msgid "hour"
|
945 |
+
msgstr "uur"
|
946 |
+
|
947 |
+
#: ../common.php:221
|
948 |
+
msgid "minute"
|
949 |
+
msgstr "minuut"
|
950 |
+
|
951 |
+
#: ../common.php:222
|
952 |
+
msgid "second"
|
953 |
+
msgstr "seconde"
|
954 |
+
|
955 |
+
#: ../common.php:225
|
956 |
+
msgid "years"
|
957 |
+
msgstr "jaren"
|
958 |
+
|
959 |
+
#: ../common.php:226
|
960 |
+
msgid "months"
|
961 |
+
msgstr "maanden"
|
962 |
+
|
963 |
+
#: ../common.php:228
|
964 |
+
msgid "hours"
|
965 |
+
msgstr "uren"
|
966 |
+
|
967 |
+
#: ../common.php:230
|
968 |
+
msgid "seconds"
|
969 |
+
msgstr "secondes"
|
970 |
+
|
971 |
+
#: ../common.php:236
|
972 |
+
msgid "ago"
|
973 |
+
msgstr "geleden"
|
974 |
+
|
975 |
+
#: ../settings.php:90
|
976 |
+
msgid "Cerber Lab connection"
|
977 |
+
msgstr ""
|
978 |
+
|
979 |
+
#: ../settings.php:90
|
980 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
981 |
+
msgstr ""
|
982 |
+
|
983 |
+
#: ../settings.php:91
|
984 |
+
msgid "Cerber Lab protocol"
|
985 |
+
msgstr ""
|
986 |
+
|
987 |
+
#: ../settings.php:121
|
988 |
+
msgid "Registration form"
|
989 |
+
msgstr "Registratieformulier"
|
990 |
+
|
991 |
+
#: ../settings.php:122
|
992 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
993 |
+
msgstr ""
|
994 |
+
|
995 |
+
#: ../settings.php:124
|
996 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
997 |
+
msgstr ""
|
998 |
+
|
999 |
+
#: ../settings.php:125
|
1000 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
1001 |
+
msgstr ""
|
1002 |
+
|
1003 |
+
#: ../settings.php:128
|
1004 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
1005 |
+
msgstr ""
|
1006 |
+
|
1007 |
+
#: ../common.php:149
|
1008 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
1009 |
+
msgstr ""
|
1010 |
+
|
1011 |
+
#: ../dashboard.php:951 ../dashboard.php:963
|
1012 |
+
msgid "View all"
|
1013 |
+
msgstr ""
|
1014 |
+
|
1015 |
+
#: ../dashboard.php:964
|
1016 |
+
msgid "Recently locked out IP addresses"
|
1017 |
+
msgstr ""
|
1018 |
+
|
1019 |
+
#: ../cerber-news.php:73
|
1020 |
+
msgid "OK, nail them all"
|
1021 |
+
msgstr ""
|
1022 |
+
|
1023 |
+
#: ../cerber-news.php:74
|
1024 |
+
msgid "NO, maybe later"
|
1025 |
+
msgstr ""
|
1026 |
+
|
1027 |
+
#: ../settings.php:186
|
1028 |
+
msgid "Dashboard"
|
1029 |
+
msgstr ""
|
1030 |
+
|
1031 |
+
#: ../cerber-news.php:71
|
1032 |
+
msgid "Want to make WP Cerber even more powerful?"
|
1033 |
+
msgstr ""
|
1034 |
+
|
1035 |
+
#: ../cerber-news.php:72
|
1036 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
1037 |
+
msgstr ""
|
1038 |
+
|
languages/wp-cerber-pl_PL.mo
ADDED
Binary file
|
languages/wp-cerber-pl_PL.po
ADDED
@@ -0,0 +1,1176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: WP Cerber\n"
|
8 |
+
"Language: pl\n"
|
9 |
+
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
10 |
+
|
11 |
+
#: ../settings.php:57
|
12 |
+
msgid "Limit login attempts"
|
13 |
+
msgstr "Limit prób logowana"
|
14 |
+
|
15 |
+
#: ../settings.php:58
|
16 |
+
msgid "Attempts"
|
17 |
+
msgstr "Próby"
|
18 |
+
|
19 |
+
#: ../settings.php:59
|
20 |
+
msgid "Lockout duration"
|
21 |
+
msgstr "Czas zablokowania"
|
22 |
+
|
23 |
+
#: ../settings.php:59 ../settings.php:78
|
24 |
+
msgid "minutes"
|
25 |
+
msgstr "minuty"
|
26 |
+
|
27 |
+
#: ../settings.php:60
|
28 |
+
msgid "Aggressive lockout"
|
29 |
+
msgstr "Agresywna blokada"
|
30 |
+
|
31 |
+
#: ../settings.php:63
|
32 |
+
msgid "Site connection"
|
33 |
+
msgstr "Połączenie witryny"
|
34 |
+
|
35 |
+
#: ../settings.php:65
|
36 |
+
msgid "Proactive security rules"
|
37 |
+
msgstr "Pro-aktywne zasady bezpieczeństwa"
|
38 |
+
|
39 |
+
#: ../settings.php:66
|
40 |
+
msgid "Block subnet"
|
41 |
+
msgstr "Blokada podsieci"
|
42 |
+
|
43 |
+
#: ../settings.php:69
|
44 |
+
msgid "Request wp-login.php"
|
45 |
+
msgstr "Żądanie wp-login.php"
|
46 |
+
|
47 |
+
#: ../settings.php:69
|
48 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
49 |
+
msgstr "Natychmiast blokuj wszystkie adresy IP, które próbują uzyskać dostęp do wp-login.php"
|
50 |
+
|
51 |
+
#: ../settings.php:68
|
52 |
+
msgid "Redirect dashboard requests"
|
53 |
+
msgstr "Przekieruj żądania do kokpitu"
|
54 |
+
|
55 |
+
#: ../settings.php:72
|
56 |
+
msgid "Custom login page"
|
57 |
+
msgstr "Własna strona logowania"
|
58 |
+
|
59 |
+
#: ../settings.php:73
|
60 |
+
msgid "Custom login URL"
|
61 |
+
msgstr "Własny URL logowania"
|
62 |
+
|
63 |
+
#: ../settings.php:73
|
64 |
+
msgid "must not overlap with the existing pages or posts slug"
|
65 |
+
msgstr "nie może nachodzić z istniejącym stronami lub uproszczonymi adresami wpisów"
|
66 |
+
|
67 |
+
#: ../settings.php:74
|
68 |
+
msgid "Disable wp-login.php"
|
69 |
+
msgstr "Wyłącz wp-login.php"
|
70 |
+
|
71 |
+
#: ../settings.php:74
|
72 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
73 |
+
msgstr "Zablokuj bezpośredni dostęp do wp-login.php i przekieruj na błąd 404"
|
74 |
+
|
75 |
+
#: ../dashboard.php:888 ../settings.php:76
|
76 |
+
msgid "Citadel mode"
|
77 |
+
msgstr "Tryb Twierdzy"
|
78 |
+
|
79 |
+
#: ../settings.php:77
|
80 |
+
msgid "Threshold"
|
81 |
+
msgstr "Pułap"
|
82 |
+
|
83 |
+
#: ../settings.php:78
|
84 |
+
msgid "Duration"
|
85 |
+
msgstr "Czas trwania"
|
86 |
+
|
87 |
+
#: ../wp-cerber.php:2630 ../settings.php:62 ../settings.php:80 ../settings.php:230
|
88 |
+
msgid "Notifications"
|
89 |
+
msgstr "Notyfikacje"
|
90 |
+
|
91 |
+
#: ../settings.php:80
|
92 |
+
msgid "Send notification to admin email"
|
93 |
+
msgstr "Wyślij powiadomienie na adres mailowy administratora"
|
94 |
+
|
95 |
+
#: ../dashboard.php:897 ../dashboard.php:1377 ../wp-cerber.php:2628 ../settings.
|
96 |
+
#: php:223 ../cerber-tools.php:59 ../cerber-tools.php:68 ../cerber-tools.php:178
|
97 |
+
msgid "Access Lists"
|
98 |
+
msgstr "Listy Dostępowe"
|
99 |
+
|
100 |
+
#: ../dashboard.php:895 ../dashboard.php:1065 ../wp-cerber.php:2495 ../settings.
|
101 |
+
#: php:82 ../settings.php:213
|
102 |
+
msgid "Activity"
|
103 |
+
msgstr "Aktywność"
|
104 |
+
|
105 |
+
#: ../dashboard.php:896 ../settings.php:218
|
106 |
+
msgid "Lockouts"
|
107 |
+
msgstr "Blodady"
|
108 |
+
|
109 |
+
#: ../settings.php:348
|
110 |
+
msgid "%s allowed retries in %s minutes"
|
111 |
+
msgstr "%s prób w ciągu %s minut"
|
112 |
+
|
113 |
+
#: ../settings.php:365
|
114 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
115 |
+
msgstr "Włączane po %d nieprawidłowych próbach logowania w ciągu ostatnich %d minut."
|
116 |
+
|
117 |
+
#: ../dashboard.php:77 ../dashboard.php:486 ../wp-cerber.php:2496
|
118 |
+
msgid "IP"
|
119 |
+
msgstr "IP"
|
120 |
+
|
121 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
122 |
+
msgid "Date"
|
123 |
+
msgstr "Data"
|
124 |
+
|
125 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
126 |
+
msgid "Local User"
|
127 |
+
msgstr "Użytkownik lokalny"
|
128 |
+
|
129 |
+
#: ../dashboard.php:339 ../dashboard.php:486 ../wp-cerber.php:2504
|
130 |
+
msgid "Username used"
|
131 |
+
msgstr "Nazwa użytkownika użyta"
|
132 |
+
|
133 |
+
#: ../dashboard.php:83
|
134 |
+
msgid "Showing last %d records from %d"
|
135 |
+
msgstr "Wyświetla ostatnie %d wpisów z %d"
|
136 |
+
|
137 |
+
#: ../common.php:284
|
138 |
+
msgid "Logged in"
|
139 |
+
msgstr "Zalogowano"
|
140 |
+
|
141 |
+
#: ../common.php:285
|
142 |
+
msgid "Logged out"
|
143 |
+
msgstr "Wylogowano"
|
144 |
+
|
145 |
+
#: ../common.php:286
|
146 |
+
msgid "Login failed"
|
147 |
+
msgstr "Nieprawidłowe logowanie"
|
148 |
+
|
149 |
+
#: ../common.php:289
|
150 |
+
msgid "IP blocked"
|
151 |
+
msgstr "Zablokowano IP"
|
152 |
+
|
153 |
+
#: ../common.php:290
|
154 |
+
msgid "Subnet blocked"
|
155 |
+
msgstr "Podsieć zablokowana"
|
156 |
+
|
157 |
+
#: ../common.php:292
|
158 |
+
msgid "Citadel activated!"
|
159 |
+
msgstr "Twierdza aktywowana!"
|
160 |
+
|
161 |
+
#: ../dashboard.php:472 ../dashboard.php:652 ../common.php:296
|
162 |
+
msgid "Locked out"
|
163 |
+
msgstr "Zablokowany"
|
164 |
+
|
165 |
+
#: ../common.php:297
|
166 |
+
msgid "IP blacklisted"
|
167 |
+
msgstr "IP dodany do czarnej listy"
|
168 |
+
|
169 |
+
#: ../common.php:303
|
170 |
+
msgid "Password changed"
|
171 |
+
msgstr "Zmieniono hasło"
|
172 |
+
|
173 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
174 |
+
msgid "Remove"
|
175 |
+
msgstr "Usuń"
|
176 |
+
|
177 |
+
#: ../dashboard.php:268
|
178 |
+
msgid "Lockout for %s was removed"
|
179 |
+
msgstr "Blokada dla %s została usunięta"
|
180 |
+
|
181 |
+
#: ../dashboard.php:102 ../dashboard.php:467 ../dashboard.php:647 ../dashboard.
|
182 |
+
#: php:886 ../wp-cerber.php:2622 ../settings.php:61 ../settings.php:181
|
183 |
+
msgid "White IP Access List"
|
184 |
+
msgstr "Lista dostępu dla białej listy"
|
185 |
+
|
186 |
+
#: ../dashboard.php:104 ../dashboard.php:468 ../dashboard.php:649 ../dashboard.
|
187 |
+
#: php:887
|
188 |
+
msgid "Black IP Access List"
|
189 |
+
msgstr "Lista dostępu dla czarnej listy"
|
190 |
+
|
191 |
+
#: ../dashboard.php:126
|
192 |
+
msgid "List is empty"
|
193 |
+
msgstr "Lista jest pusta"
|
194 |
+
|
195 |
+
#: ../dashboard.php:153
|
196 |
+
msgid "Address %s was added to White IP Access List"
|
197 |
+
msgstr "Adres %s został dodany do Białej listy dostępu"
|
198 |
+
|
199 |
+
#: ../dashboard.php:166
|
200 |
+
msgid "Address %s was added to Black IP Access List"
|
201 |
+
msgstr "Adres %s został dodany do czarnej listy"
|
202 |
+
|
203 |
+
#: ../wp-cerber.php:2181
|
204 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
205 |
+
msgstr "Tryb Twierdzy aktywuje się po %d nieprawidłowych logowania w czasie %d minut."
|
206 |
+
|
207 |
+
#: ../dashboard.php:1188
|
208 |
+
msgid "View Activity"
|
209 |
+
msgstr "Zobacz Aktywność"
|
210 |
+
|
211 |
+
#: ../cerber-tools.php:58 ../cerber-tools.php:67
|
212 |
+
msgid "Settings"
|
213 |
+
msgstr "Ustawienia"
|
214 |
+
|
215 |
+
#: ../dashboard.php:787
|
216 |
+
msgid "Last login"
|
217 |
+
msgstr "Ostatnie logowanie"
|
218 |
+
|
219 |
+
#: ../dashboard.php:814 ../dashboard.php:869
|
220 |
+
msgid "Never"
|
221 |
+
msgstr "Nigdy"
|
222 |
+
|
223 |
+
#: ../dashboard.php:1108
|
224 |
+
msgid "Are you sure?"
|
225 |
+
msgstr "Jesteś pewny/a?"
|
226 |
+
|
227 |
+
#: ../settings.php:63
|
228 |
+
msgid "My site is behind a reverse proxy"
|
229 |
+
msgstr "Moja strona łączy się z odwrotnego proxy"
|
230 |
+
|
231 |
+
#: ../settings.php:67
|
232 |
+
msgid "Non-existent users"
|
233 |
+
msgstr "Nie-istniejący użytkownicy"
|
234 |
+
|
235 |
+
#: ../settings.php:67
|
236 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
237 |
+
msgstr "Natychmiast blokuj IP, które próbują logować się na nieistniejące nazwy użytkownika"
|
238 |
+
|
239 |
+
#: ../settings.php:68
|
240 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
241 |
+
msgstr "Wyłącz automatyczne przekierowanie na stronę logowania, kiedy jest wykonywane nieautoryzowane żądanie."
|
242 |
+
|
243 |
+
#: ../settings.php:167
|
244 |
+
msgid "Make your protection smarter!"
|
245 |
+
msgstr "Zadbaj o to, aby twoja ochrona była mądrzejsza!"
|
246 |
+
|
247 |
+
#: ../settings.php:171
|
248 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
249 |
+
msgstr "Prosimy włączyć włączyć permalinki, aby funkcja była dostępna. Zmień ustawienia permalinków na inne, niż domyślne."
|
250 |
+
|
251 |
+
#: ../settings.php:174
|
252 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
253 |
+
msgstr "Uważaj przy zmianie tej opcji. Jeśli zapomnisz własnego adresu logowania, to możesz nie być w stanie się zalogować."
|
254 |
+
|
255 |
+
#: ../wp-cerber.php:2627 ../settings.php:220
|
256 |
+
msgid "Main Settings"
|
257 |
+
msgstr "Ustawienia Główne"
|
258 |
+
|
259 |
+
#: ../settings.php:234
|
260 |
+
msgid "Help"
|
261 |
+
msgstr "Pomoc"
|
262 |
+
|
263 |
+
#: ../settings.php:353
|
264 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
265 |
+
msgstr "Zwiększ czas blokady do %s godzin po %s blokadach w czasie %s godzin"
|
266 |
+
|
267 |
+
#: ../wp-cerber.php:215
|
268 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
269 |
+
msgstr "Nie masz pozwolenia na zalogowanie. Skontaktuj się z administratorem."
|
270 |
+
|
271 |
+
#: ../wp-cerber.php:221
|
272 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
273 |
+
msgstr "Osiągnięto limit logowań"
|
274 |
+
|
275 |
+
#: ../wp-cerber.php:240
|
276 |
+
msgid "You have only one attempt remaining."
|
277 |
+
msgid_plural "You have %d attempts remaining."
|
278 |
+
msgstr[0] "Pozostała tobie jedna próba."
|
279 |
+
msgstr[1] "Pozostałych prób: %d"
|
280 |
+
msgstr[2] "Pozostałych prób: %d"
|
281 |
+
|
282 |
+
#: ../dashboard.php:499
|
283 |
+
msgid "No activity has been logged."
|
284 |
+
msgstr "Nie zarejestrowano aktywności."
|
285 |
+
|
286 |
+
#: ../dashboard.php:77
|
287 |
+
msgid "Expires"
|
288 |
+
msgstr "Upływa"
|
289 |
+
|
290 |
+
#: ../dashboard.php:89
|
291 |
+
msgid "No lockouts at the moment. The sky is clear."
|
292 |
+
msgstr "Brak blokad na chwilę obecną. Niebo jest czyste."
|
293 |
+
|
294 |
+
#: ../dashboard.php:102
|
295 |
+
msgid "These IPs will never be locked out"
|
296 |
+
msgstr "Te adresy IP nigdy nie będą zablokowane."
|
297 |
+
|
298 |
+
#: ../dashboard.php:106
|
299 |
+
msgid "Your IP"
|
300 |
+
msgstr "Twoje IP"
|
301 |
+
|
302 |
+
#: ../dashboard.php:162
|
303 |
+
msgid "You can't add your IP address"
|
304 |
+
msgstr "Nie możesz dodać swojego adresu IP"
|
305 |
+
|
306 |
+
#: ../wp-cerber.php:2182
|
307 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
308 |
+
msgstr "Ostatnia nieudana próba miała miejsce %s z adresu IP %s oraz nazwie użytkownika: %s"
|
309 |
+
|
310 |
+
#: ../wp-cerber.php:2245
|
311 |
+
msgid "Change notification settings"
|
312 |
+
msgstr "Zmień ustawienia notyfikacji"
|
313 |
+
|
314 |
+
#: ../wp-cerber.php:2605
|
315 |
+
msgid "Can't activate WP Cerber due to a database error."
|
316 |
+
msgstr "Nie można aktywować WP Cerber przez błąd bazy danych."
|
317 |
+
|
318 |
+
#: ../settings.php:360
|
319 |
+
msgid "Notify admin if the number of active lockouts above"
|
320 |
+
msgstr "Powiadom administratora, jeśli liczba aktywnych blokad przekroczy"
|
321 |
+
|
322 |
+
#: ../settings.php:83
|
323 |
+
msgid "days"
|
324 |
+
msgstr "dni"
|
325 |
+
|
326 |
+
#: ../dashboard.php:838
|
327 |
+
msgid "Cerber Quick View"
|
328 |
+
msgstr "Szybki podgląd Cerbera"
|
329 |
+
|
330 |
+
#: ../dashboard.php:85
|
331 |
+
msgid "Hint"
|
332 |
+
msgstr "Podpowiedź"
|
333 |
+
|
334 |
+
#: ../dashboard.php:85
|
335 |
+
msgid "To view activity, click on the IP"
|
336 |
+
msgstr "Aby zobaczyć aktywność, kliknij na IP"
|
337 |
+
|
338 |
+
#: ../dashboard.php:123 ../dashboard.php:679
|
339 |
+
msgid "Check for activity"
|
340 |
+
msgstr "Sprawdź aktywność"
|
341 |
+
|
342 |
+
#: ../settings.php:66
|
343 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
344 |
+
msgstr "Zawsze blokuj całą podsieć Klasy C z adresów IP intruzów"
|
345 |
+
|
346 |
+
#: ../settings.php:80 ../settings.php:362
|
347 |
+
msgid "Click to send test"
|
348 |
+
msgstr "Kliknij, aby wysłać wiadomość testową"
|
349 |
+
|
350 |
+
#: ../settings.php:445
|
351 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
352 |
+
msgstr "Uwaga! Został zmieniony adres URL logowania! Nowy adres to"
|
353 |
+
|
354 |
+
#: ../dashboard.php:786
|
355 |
+
msgid "Comments"
|
356 |
+
msgstr "Komentarze"
|
357 |
+
|
358 |
+
#: ../dashboard.php:789
|
359 |
+
msgid "Date of registration"
|
360 |
+
msgstr "Data rejestracji"
|
361 |
+
|
362 |
+
#: ../dashboard.php:258
|
363 |
+
msgid "Message has been sent to "
|
364 |
+
msgstr "Wiadomość została wysłana do"
|
365 |
+
|
366 |
+
#: ../dashboard.php:1250
|
367 |
+
msgid "Update to version %s of WP Cerber"
|
368 |
+
msgstr "Aktualizuj WP Cerber do wersji %s"
|
369 |
+
|
370 |
+
#: ../wp-cerber.php:2183 ../wp-cerber.php:2520
|
371 |
+
msgid "View activity in dashboard"
|
372 |
+
msgstr "Zobacz aktywność na pulpicie"
|
373 |
+
|
374 |
+
#: ../wp-cerber.php:2213
|
375 |
+
msgid "Number of active lockouts"
|
376 |
+
msgstr "Liczba aktywnych blokad"
|
377 |
+
|
378 |
+
#: ../wp-cerber.php:2217
|
379 |
+
msgid "View lockouts in dashboard"
|
380 |
+
msgstr "Sprawdź blokady w kokpicie"
|
381 |
+
|
382 |
+
#: ../wp-cerber.php:2270
|
383 |
+
msgid "This message was sent by"
|
384 |
+
msgstr "Ta wiadomość została wysłana przez"
|
385 |
+
|
386 |
+
#: ../dashboard.php:733 ../cerber-tools.php:40
|
387 |
+
msgid "Tools"
|
388 |
+
msgstr "Narzędzia"
|
389 |
+
|
390 |
+
#: ../cerber-tools.php:55
|
391 |
+
msgid "Export settings to the file"
|
392 |
+
msgstr "Eksportuj ustawienia do pliku"
|
393 |
+
|
394 |
+
#: ../cerber-tools.php:56
|
395 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
396 |
+
msgstr "Kiedy klikniesz na przycisk poniżej, to otrzymasz plik konfiguracyjny, który możesz importować na innej stronie."
|
397 |
+
|
398 |
+
#: ../cerber-tools.php:57
|
399 |
+
msgid "What do you want to export?"
|
400 |
+
msgstr "Co chcesz eksportować?"
|
401 |
+
|
402 |
+
#: ../cerber-tools.php:60
|
403 |
+
msgid "Download file"
|
404 |
+
msgstr "Pobierz plik"
|
405 |
+
|
406 |
+
#: ../cerber-tools.php:62
|
407 |
+
msgid "Import settings from the file"
|
408 |
+
msgstr "Importuj ustawienia z pliku"
|
409 |
+
|
410 |
+
#: ../cerber-tools.php:63
|
411 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
412 |
+
msgstr "Kiedy klikniesz na przycisk poniżej, to zostanie zaimportowany plik i wszystkie dotychczasowe opcje zostaną nadpisane."
|
413 |
+
|
414 |
+
#: ../cerber-tools.php:64
|
415 |
+
msgid "Select file to import."
|
416 |
+
msgstr "Wybierz plik do importu"
|
417 |
+
|
418 |
+
#: ../cerber-tools.php:64
|
419 |
+
msgid "Maximum upload file size: %s."
|
420 |
+
msgstr "Maksymalna wielkość pliku importu: %s"
|
421 |
+
|
422 |
+
#: ../cerber-tools.php:67
|
423 |
+
msgid "What do you want to import?"
|
424 |
+
msgstr "Co chcesz importować?"
|
425 |
+
|
426 |
+
#: ../cerber-tools.php:69
|
427 |
+
msgid "Upload file"
|
428 |
+
msgstr "Wyślij plik"
|
429 |
+
|
430 |
+
#: ../cerber-tools.php:148
|
431 |
+
msgid "No file was uploaded or file is corrupted"
|
432 |
+
msgstr "Żaden plik nie został zaimportowany lub plik jest uszkodzony"
|
433 |
+
|
434 |
+
#: ../cerber-tools.php:178
|
435 |
+
msgid "Error while updating"
|
436 |
+
msgstr "Błąd podczas aktualizacji"
|
437 |
+
|
438 |
+
#: ../cerber-tools.php:181
|
439 |
+
msgid "Settings has imported successfully from"
|
440 |
+
msgstr "Ustawienia zaimportowano prawidłowo z"
|
441 |
+
|
442 |
+
#: ../cerber-tools.php:185
|
443 |
+
msgid "Error while parsing file"
|
444 |
+
msgstr "Bład parsowania pliku"
|
445 |
+
|
446 |
+
#: ../dashboard.php:77 ../dashboard.php:486
|
447 |
+
msgid "Hostname"
|
448 |
+
msgstr "Nazwa hosta"
|
449 |
+
|
450 |
+
#: ../dashboard.php:237
|
451 |
+
msgid "unknown"
|
452 |
+
msgstr "nieznane"
|
453 |
+
|
454 |
+
#: ../settings.php:83
|
455 |
+
msgid "Keep records for"
|
456 |
+
msgstr "Trzymaj zapisy przez"
|
457 |
+
|
458 |
+
#: ../dashboard.php:873
|
459 |
+
msgid "active"
|
460 |
+
msgstr "aktywne"
|
461 |
+
|
462 |
+
#: ../dashboard.php:873
|
463 |
+
msgid "deactivate"
|
464 |
+
msgstr "deaktywuj"
|
465 |
+
|
466 |
+
#: ../dashboard.php:875
|
467 |
+
msgid "not active"
|
468 |
+
msgstr "nieaktywne"
|
469 |
+
|
470 |
+
#: ../dashboard.php:876
|
471 |
+
msgid "disabled"
|
472 |
+
msgstr "wyłączone"
|
473 |
+
|
474 |
+
#: ../dashboard.php:881
|
475 |
+
msgid "failed attempts"
|
476 |
+
msgstr "nieudane próby"
|
477 |
+
|
478 |
+
#: ../dashboard.php:881 ../dashboard.php:882
|
479 |
+
msgid "in 24 hours"
|
480 |
+
msgstr "przez 24 godziny"
|
481 |
+
|
482 |
+
#: ../dashboard.php:881 ../dashboard.php:882
|
483 |
+
msgid "view all"
|
484 |
+
msgstr "zobacz wszystkie"
|
485 |
+
|
486 |
+
#: ../dashboard.php:882
|
487 |
+
msgid "lockouts"
|
488 |
+
msgstr "blokady"
|
489 |
+
|
490 |
+
#: ../dashboard.php:884
|
491 |
+
msgid "Lockouts at the moment"
|
492 |
+
msgstr "Blokad na chwilę obecną"
|
493 |
+
|
494 |
+
#: ../dashboard.php:885
|
495 |
+
msgid "Last lockout"
|
496 |
+
msgstr "Ostatnia blokada"
|
497 |
+
|
498 |
+
#: ../dashboard.php:886 ../dashboard.php:887 ../dashboard.php:1356
|
499 |
+
msgid "entry"
|
500 |
+
msgid_plural "entries"
|
501 |
+
msgstr[0] "wpis"
|
502 |
+
msgstr[1] "wpisów"
|
503 |
+
msgstr[2] "wpisy"
|
504 |
+
|
505 |
+
#: ../dashboard.php:1103
|
506 |
+
msgid "Confused about some settings?"
|
507 |
+
msgstr "Nie rozumiesz niektórych ustawień?"
|
508 |
+
|
509 |
+
#: ../dashboard.php:1104
|
510 |
+
msgid "You can easily load default recommended settings using button below"
|
511 |
+
msgstr "Możesz bez problemu załadować rekomendowane ustawienia klikając na przycisk poniżej"
|
512 |
+
|
513 |
+
#: ../dashboard.php:1106
|
514 |
+
msgid "Load default settings"
|
515 |
+
msgstr "Załaduj ustawienia domyślne"
|
516 |
+
|
517 |
+
#: ../dashboard.php:1114
|
518 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
519 |
+
msgstr "Nie ma wpływu na własny adres logowania oraz na Listy Dostępu"
|
520 |
+
|
521 |
+
#: ../dashboard.php:1133
|
522 |
+
msgid "Donate"
|
523 |
+
msgstr "Wyślij darowiznę"
|
524 |
+
|
525 |
+
#: ../dashboard.php:1244
|
526 |
+
msgid "New version is available"
|
527 |
+
msgstr "Dostępna jest nowa wersja"
|
528 |
+
|
529 |
+
#. Name of the plugin
|
530 |
+
#: ../dashboard.php:728 ../dashboard.php:743
|
531 |
+
msgid "WP Cerber"
|
532 |
+
msgstr "WP Cerber"
|
533 |
+
|
534 |
+
#. URI of the plugin
|
535 |
+
#:
|
536 |
+
msgid "http://wpcerber.com"
|
537 |
+
msgstr "http://wpcerber.com"
|
538 |
+
|
539 |
+
#: ../wp-cerber.php:2161
|
540 |
+
msgid "WP Cerber notify"
|
541 |
+
msgstr "Powiadomienie WP Cerber"
|
542 |
+
|
543 |
+
#: ../wp-cerber.php:2179
|
544 |
+
msgid "Citadel mode is activated"
|
545 |
+
msgstr "Tryb Twierdzy jest aktywny"
|
546 |
+
|
547 |
+
#: ../wp-cerber.php:2250
|
548 |
+
msgid "New Custom login URL"
|
549 |
+
msgstr "Nowy, własny URL logowania"
|
550 |
+
|
551 |
+
#: ../wp-cerber.php:2596
|
552 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
553 |
+
msgstr "WP Cerber wymaga wersji PHP %s lub wyższej. Twoja wersja to"
|
554 |
+
|
555 |
+
#: ../wp-cerber.php:2600
|
556 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
557 |
+
msgstr "WP Cerber wymaga wersji Wordpress %s lub wyższej. Twoja wersja to"
|
558 |
+
|
559 |
+
#: ../settings.php:86
|
560 |
+
msgid "Use file"
|
561 |
+
msgstr "Użyj pliku"
|
562 |
+
|
563 |
+
#: ../settings.php:86
|
564 |
+
msgid "Write failed login attempts to the file"
|
565 |
+
msgstr "Zapisuj nieprawidłowe próby logowania do pliku"
|
566 |
+
|
567 |
+
#: ../dashboard.php:788
|
568 |
+
msgid "Failed attempts in last 24 hours"
|
569 |
+
msgstr "Nieudane próby w ciągu ostatnich 24 godzin"
|
570 |
+
|
571 |
+
#: ../dashboard.php:1187
|
572 |
+
msgid "Deactivate"
|
573 |
+
msgstr "Wyłącz"
|
574 |
+
|
575 |
+
#: ../dashboard.php:77 ../wp-cerber.php:2215
|
576 |
+
msgid "Reason"
|
577 |
+
msgstr "Powód"
|
578 |
+
|
579 |
+
#: ../dashboard.php:130
|
580 |
+
msgid "Add IP to the list"
|
581 |
+
msgstr "Dodaj IP do listy"
|
582 |
+
|
583 |
+
#: ../dashboard.php:697
|
584 |
+
msgid "Add IP to the Black List"
|
585 |
+
msgstr "Dodaj IP do czarnej listy"
|
586 |
+
|
587 |
+
#: ../common.php:325
|
588 |
+
msgid "Attempt to access"
|
589 |
+
msgstr "Próba dostępu"
|
590 |
+
|
591 |
+
#: ../common.php:324
|
592 |
+
msgid "Limit on login attempts is reached"
|
593 |
+
msgstr "Osiągnięto limit prób logowania"
|
594 |
+
|
595 |
+
#: ../common.php:311 ../common.php:326
|
596 |
+
msgid "Attempt to log in with non-existent username"
|
597 |
+
msgstr "Próba logowania z nieistniejącej nazwy użytkownika"
|
598 |
+
|
599 |
+
#: ../wp-cerber.php:2214
|
600 |
+
msgid "Last lockout was added: %s for IP %s"
|
601 |
+
msgstr "Ostatnią blokadę dodano: %s dla IP %s"
|
602 |
+
|
603 |
+
#: ../wp-cerber.php:2624
|
604 |
+
msgid "It's important to check security settings."
|
605 |
+
msgstr "Ważnym jest, aby sprawdzić ustawienia zabezpieczeń."
|
606 |
+
|
607 |
+
#: ../wp-cerber.php:2629 ../settings.php:225
|
608 |
+
msgid "Hardening"
|
609 |
+
msgstr "Wzmacnianie"
|
610 |
+
|
611 |
+
#: ../dashboard.php:675
|
612 |
+
msgid "Abuse email:"
|
613 |
+
msgstr "Nadużycie adresu email:"
|
614 |
+
|
615 |
+
#: ../settings.php:143
|
616 |
+
msgid "Email Address"
|
617 |
+
msgstr "Adres E-mail"
|
618 |
+
|
619 |
+
#: ../settings.php:143
|
620 |
+
msgid "if empty, the admin email %s will be used"
|
621 |
+
msgstr "jeśli puste, to zostanie użyty adres e-mail administratora: %s"
|
622 |
+
|
623 |
+
#: ../settings.php:89
|
624 |
+
msgid "Drill down IP"
|
625 |
+
msgstr "Przygwóźdź adres IP"
|
626 |
+
|
627 |
+
#: ../settings.php:89
|
628 |
+
msgid "Retrieve extra WHOIS information for IP"
|
629 |
+
msgstr "Sprawdź dodatkowe informacje WHOIS dla adresu IP"
|
630 |
+
|
631 |
+
#: ../settings.php:97
|
632 |
+
msgid "Hardening WordPress"
|
633 |
+
msgstr "Wzmacnianie Wordpressa"
|
634 |
+
|
635 |
+
#: ../settings.php:98
|
636 |
+
msgid "Stop user enumeration"
|
637 |
+
msgstr "Wyłącz numerację użytkowników"
|
638 |
+
|
639 |
+
#: ../settings.php:98
|
640 |
+
msgid "Block access to the pages like /?author=n"
|
641 |
+
msgstr "Wyłącz dostęp do stron typu /?author=n"
|
642 |
+
|
643 |
+
#: ../settings.php:99
|
644 |
+
msgid "Disable XML-RPC"
|
645 |
+
msgstr "Wyłącz XML-RPC"
|
646 |
+
|
647 |
+
#: ../settings.php:99
|
648 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
649 |
+
msgstr "Zablokuj dostęp do serwera XML-RPC (włączając w to Pingbacki i Trackbacki"
|
650 |
+
|
651 |
+
#: ../settings.php:100
|
652 |
+
msgid "Disable feeds"
|
653 |
+
msgstr "Wyłącz kanały RSS"
|
654 |
+
|
655 |
+
#: ../settings.php:100
|
656 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
657 |
+
msgstr "Wyłącz dostęp do RSS"
|
658 |
+
|
659 |
+
#: ../settings.php:101
|
660 |
+
msgid "Disable REST API"
|
661 |
+
msgstr "Wyłącz REST API"
|
662 |
+
|
663 |
+
#: ../settings.php:101
|
664 |
+
msgid "Block access to the WordPress REST API"
|
665 |
+
msgstr "Zablokuj dostęp do REST API Wordpressa"
|
666 |
+
|
667 |
+
#: ../settings.php:181
|
668 |
+
msgid "These settings do not affect hosts from the "
|
669 |
+
msgstr "Te ustawienia nie mają wpływu na hosty od"
|
670 |
+
|
671 |
+
#: ../settings.php:525
|
672 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
673 |
+
msgstr "<strong>BŁĄD</strong>: Proszę podać prawidłowy adres mailowy"
|
674 |
+
|
675 |
+
#: ../wp-cerber.php:2244 ../wp-cerber.php:2621
|
676 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
677 |
+
msgstr "WP Cerber jest teraz aktywny i chroni twoją witrynę"
|
678 |
+
|
679 |
+
#: ../dashboard.php:77
|
680 |
+
msgid "Action"
|
681 |
+
msgstr "Akcja"
|
682 |
+
|
683 |
+
#: ../dashboard.php:104
|
684 |
+
msgid "Nobody can log in or register from these IPs"
|
685 |
+
msgstr "Z tych adresów IP nikt nie może się zalogować ani zarejestrować"
|
686 |
+
|
687 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
688 |
+
msgid "Incorrect IP address or IP range"
|
689 |
+
msgstr "Nieprawidłowy adres IP lub zakres IP"
|
690 |
+
|
691 |
+
#: ../dashboard.php:261
|
692 |
+
msgid "Unable to send notification email"
|
693 |
+
msgstr "Nie udało się wysłać powiadomienia"
|
694 |
+
|
695 |
+
#: ../dashboard.php:284 ../dashboard.php:1203
|
696 |
+
msgid "Settings saved"
|
697 |
+
msgstr "Ustawienia zapisano"
|
698 |
+
|
699 |
+
#: ../dashboard.php:679
|
700 |
+
msgid "Network:"
|
701 |
+
msgstr "Sieć:"
|
702 |
+
|
703 |
+
#: ../dashboard.php:693
|
704 |
+
msgid "Add network to the Black List"
|
705 |
+
msgstr "Dodaj sieć do Czarnej Listy"
|
706 |
+
|
707 |
+
#: ../dashboard.php:1186
|
708 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
709 |
+
msgstr "Uwaga! Tryb Twierdzy jest aktywny. Nikt obecnie nie może się zalogować."
|
710 |
+
|
711 |
+
#: ../whois.php:210 ../common.php:323
|
712 |
+
msgid "Unknown"
|
713 |
+
msgstr "Nieznane"
|
714 |
+
|
715 |
+
#. Description of the plugin
|
716 |
+
#:
|
717 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
718 |
+
msgstr "Broni stronę przed atakami typu brute force, botami, czy hakerami. Zaopatrzona jest również w moduł bezpieczeństwa reCAPTCHA. Umożliwia kompleksowe zarządzanie aktywnością użytkownika. Dodatkowo umożliwia ustawienie limitu logowań. Możesz kontaktować się z autorem poprzez stronę <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
719 |
+
|
720 |
+
#. Author of the plugin
|
721 |
+
#:
|
722 |
+
msgid "Gregory"
|
723 |
+
msgstr "Gregory"
|
724 |
+
|
725 |
+
#: ../wp-cerber.php:302 ../wp-cerber.php:558 ../wp-cerber.php:570 ../wp-cerber.
|
726 |
+
#: php:577 ../wp-cerber.php:715 ../wp-cerber.php:919 ../wp-cerber.php:924 ../wp-
|
727 |
+
#: cerber.php:930 ../wp-cerber.php:960 ../common.php:80 ../common.php:133 ..
|
728 |
+
#: /common.php:137 ../settings.php:498
|
729 |
+
msgid "ERROR:"
|
730 |
+
msgstr "BŁĄD:"
|
731 |
+
|
732 |
+
#: ../wp-cerber.php:587
|
733 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
734 |
+
msgstr "Nieudana weryfikacja. Proszę zaznaczyć kwadrat poniżej w bloku reCAPTCHA"
|
735 |
+
|
736 |
+
#: ../wp-cerber.php:726
|
737 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
738 |
+
msgstr "<strong>BŁĄD</strong>: Hasło dla nazwy użytkownika jest nieprawidłowe"
|
739 |
+
|
740 |
+
#: ../wp-cerber.php:925
|
741 |
+
msgid "Username is not allowed. Please choose another one."
|
742 |
+
msgstr "Nazwa użytkownika niedostępna. Prosimy wybrać inną."
|
743 |
+
|
744 |
+
#: ../wp-cerber.php:2208
|
745 |
+
msgid "unspecified"
|
746 |
+
msgstr "nieokreślone"
|
747 |
+
|
748 |
+
#: ../wp-cerber.php:2211
|
749 |
+
msgid "Number of lockouts is increasing"
|
750 |
+
msgstr "Liczba blokad wzrasta"
|
751 |
+
|
752 |
+
#: ../wp-cerber.php:2216
|
753 |
+
msgid "View activity for this IP"
|
754 |
+
msgstr "Zobacz aktywność tego IP"
|
755 |
+
|
756 |
+
#: ../wp-cerber.php:2220 ../wp-cerber.php:2222
|
757 |
+
msgid "A new version of WP Cerber is available to install"
|
758 |
+
msgstr "Dostępna jest nowa wersja WP Cerber"
|
759 |
+
|
760 |
+
#: ../wp-cerber.php:2221
|
761 |
+
msgid "Hi!"
|
762 |
+
msgstr "Cześć!"
|
763 |
+
|
764 |
+
#: ../wp-cerber.php:2223 ../wp-cerber.php:2234
|
765 |
+
msgid "Website"
|
766 |
+
msgstr "Witryna"
|
767 |
+
|
768 |
+
#: ../wp-cerber.php:2226 ../wp-cerber.php:2227
|
769 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
770 |
+
msgstr "Wtyczka bezpieczeństwa WP Cerber została wyłączona"
|
771 |
+
|
772 |
+
#: ../wp-cerber.php:2229
|
773 |
+
msgid "Not logged in"
|
774 |
+
msgstr "Niezalogowany"
|
775 |
+
|
776 |
+
#: ../wp-cerber.php:2235
|
777 |
+
msgid "By user"
|
778 |
+
msgstr "- użytkownik"
|
779 |
+
|
780 |
+
#: ../wp-cerber.php:2236
|
781 |
+
msgid "From IP address"
|
782 |
+
msgstr "Z adresu IP"
|
783 |
+
|
784 |
+
#: ../wp-cerber.php:2239
|
785 |
+
msgid "From country"
|
786 |
+
msgstr "Z Państwa"
|
787 |
+
|
788 |
+
#: ../wp-cerber.php:2243
|
789 |
+
msgid "The WP Cerber security plugin is now active"
|
790 |
+
msgstr "Wtyczka WP Cerber jest teraz aktywna"
|
791 |
+
|
792 |
+
#: ../wp-cerber.php:2622
|
793 |
+
msgid "Your IP address is added to the"
|
794 |
+
msgstr "Twój adres IP został dodany do"
|
795 |
+
|
796 |
+
#: ../dashboard.php:732
|
797 |
+
msgid "reCAPTCHA"
|
798 |
+
msgstr "reCAPTCHA"
|
799 |
+
|
800 |
+
#: ../wp-cerber.php:2631
|
801 |
+
msgid "Import settings"
|
802 |
+
msgstr "Importuj ustawienia"
|
803 |
+
|
804 |
+
#: ../settings.php:144
|
805 |
+
msgid "Notification limit"
|
806 |
+
msgstr "Limit notyfikacji"
|
807 |
+
|
808 |
+
#: ../settings.php:144
|
809 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
810 |
+
msgstr "limit powiadomień na godzinę (0 oznacza nieograniczone)"
|
811 |
+
|
812 |
+
#: ../settings.php:110
|
813 |
+
msgid "User related settings"
|
814 |
+
msgstr "Ustawienia związane z użytkownikami"
|
815 |
+
|
816 |
+
#: ../settings.php:111
|
817 |
+
msgid "Prohibited usernames"
|
818 |
+
msgstr "Zabronione nazwy użytkownika"
|
819 |
+
|
820 |
+
#: ../settings.php:111
|
821 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
822 |
+
msgstr "Użytkownicy z tej listy nie mogą się logować, ani rejestrować. Każdy adres IP próbujący używać jakiekolwiek nazwy użytkownika z tej listy zostanie zablokowany."
|
823 |
+
|
824 |
+
#: ../settings.php:112
|
825 |
+
msgid "User session expire"
|
826 |
+
msgstr "Sesja użytkownika przedawnia się"
|
827 |
+
|
828 |
+
#: ../settings.php:112
|
829 |
+
msgid "in minutes (leave empty to use default WP value)"
|
830 |
+
msgstr "w minutach (pozostaw puste, aby użyć standardowej wartości WP)"
|
831 |
+
|
832 |
+
#: ../cerber-tools.php:195
|
833 |
+
msgid "reCAPTCHA settings"
|
834 |
+
msgstr "Ustawienia reCAPTCHA"
|
835 |
+
|
836 |
+
#: ../settings.php:119
|
837 |
+
msgid "Site key"
|
838 |
+
msgstr "Klucz strony"
|
839 |
+
|
840 |
+
#: ../settings.php:120
|
841 |
+
msgid "Secret key"
|
842 |
+
msgstr "Sekretny klucz"
|
843 |
+
|
844 |
+
#: ../settings.php:123
|
845 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
846 |
+
msgstr "Włącz reCAPTCHA dla formularza rejestracji Wordpressa"
|
847 |
+
|
848 |
+
#: ../settings.php:126
|
849 |
+
msgid "Lost password form"
|
850 |
+
msgstr "Formularz odzyskiwania hasła"
|
851 |
+
|
852 |
+
#: ../settings.php:129
|
853 |
+
msgid "Login form"
|
854 |
+
msgstr "Formularz logowania"
|
855 |
+
|
856 |
+
#: ../settings.php:129
|
857 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
858 |
+
msgstr "Włącz reCAPTCHę dla formularza logowania Wordpressa"
|
859 |
+
|
860 |
+
#: ../settings.php:184
|
861 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
862 |
+
msgstr "Zanim zaczniesz używać reCAPTCHA musisz zdobyć dwa klucze na specjalnej stronie Google"
|
863 |
+
|
864 |
+
#: ../cerber-lab.php:527 ../settings.php:185
|
865 |
+
msgid "Know more"
|
866 |
+
msgstr "Dowiedz się więcej"
|
867 |
+
|
868 |
+
#: ../dashboard.php:728 ../settings.php:206
|
869 |
+
msgid "WP Cerber Security"
|
870 |
+
msgstr "Zabezpieczenia WP Cerber"
|
871 |
+
|
872 |
+
#: ../settings.php:227
|
873 |
+
msgid "Users"
|
874 |
+
msgstr "Użytkownicy"
|
875 |
+
|
876 |
+
#: ../common.php:282
|
877 |
+
msgid "User created"
|
878 |
+
msgstr "Stworzono użytkownika"
|
879 |
+
|
880 |
+
#: ../common.php:283
|
881 |
+
msgid "User registered"
|
882 |
+
msgstr "Użytkownik zarejestrowany"
|
883 |
+
|
884 |
+
#: ../common.php:306
|
885 |
+
msgid "reCAPTCHA verification failed"
|
886 |
+
msgstr "nieprawidłowa weryfikacja reCATPCHA"
|
887 |
+
|
888 |
+
#: ../common.php:307
|
889 |
+
msgid "reCAPTCHA settings are incorrect"
|
890 |
+
msgstr "ustawienia reCAPTCHA są nieprawidłowe"
|
891 |
+
|
892 |
+
#: ../common.php:310
|
893 |
+
msgid "Attempt to access prohibited URL"
|
894 |
+
msgstr "Próba logowania na zabroniony URL"
|
895 |
+
|
896 |
+
#: ../common.php:312 ../common.php:327
|
897 |
+
msgid "Attempt to log in with prohibited username"
|
898 |
+
msgstr "Próba zalogowania z zabronioną nazwą użytkownika"
|
899 |
+
|
900 |
+
#: ../settings.php:84
|
901 |
+
msgid "Cerber Lab connection"
|
902 |
+
msgstr "Połączenie Cerber Lab"
|
903 |
+
|
904 |
+
#: ../settings.php:84
|
905 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
906 |
+
msgstr "Wyślij szkodliwe adresy IP do Cerber Lab"
|
907 |
+
|
908 |
+
#: ../settings.php:85
|
909 |
+
msgid "Cerber Lab protocol"
|
910 |
+
msgstr "Protokół Cerber Lab"
|
911 |
+
|
912 |
+
#: ../settings.php:123
|
913 |
+
msgid "Registration form"
|
914 |
+
msgstr "Formularz rejestracji"
|
915 |
+
|
916 |
+
#: ../settings.php:124
|
917 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
918 |
+
msgstr "Włącz reCAPTCHA dla formularza rejestracji WooCommerce"
|
919 |
+
|
920 |
+
#: ../settings.php:126
|
921 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
922 |
+
msgstr "Włącz reCAPTCHA dla formularza przypomnienia hasła Wordpressa"
|
923 |
+
|
924 |
+
#: ../settings.php:127
|
925 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
926 |
+
msgstr "Włącz reCAPTCHA dla formularza przypomnienia hasła WooCommerce"
|
927 |
+
|
928 |
+
#: ../settings.php:130
|
929 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
930 |
+
msgstr "Włącz reCAPTCHę dla formularza logowania WooCoomerce"
|
931 |
+
|
932 |
+
#: ../common.php:308
|
933 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
934 |
+
msgstr "Wysyłanie żądania do Google reCAPTCHA nie powiodło się"
|
935 |
+
|
936 |
+
#: ../dashboard.php:1052 ../dashboard.php:1080
|
937 |
+
msgid "View all"
|
938 |
+
msgstr "Zobacz wszystkie"
|
939 |
+
|
940 |
+
#: ../dashboard.php:1081
|
941 |
+
msgid "Recently locked out IP addresses"
|
942 |
+
msgstr "Ostatnio zablokowane adresy IP"
|
943 |
+
|
944 |
+
#: ../cerber-lab.php:525
|
945 |
+
msgid "OK, nail them all"
|
946 |
+
msgstr "OK"
|
947 |
+
|
948 |
+
#: ../cerber-lab.php:526
|
949 |
+
msgid "NO, maybe later"
|
950 |
+
msgstr "NIE"
|
951 |
+
|
952 |
+
#: ../dashboard.php:730 ../dashboard.php:894 ../dashboard.php:1376 ../settings.
|
953 |
+
#: php:211
|
954 |
+
msgid "Dashboard"
|
955 |
+
msgstr "Kokpit"
|
956 |
+
|
957 |
+
#: ../cerber-lab.php:523
|
958 |
+
msgid "Want to make WP Cerber even more powerful?"
|
959 |
+
msgstr "Chcesz uczyć WP Cerber jeszcze bardziej potężnym?"
|
960 |
+
|
961 |
+
#: ../cerber-lab.php:524
|
962 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
963 |
+
msgstr "Pozwól na wysyłanie szkodliwych adresów IP do Cerber Lab. Pomoże to stworzyć nowe algorytmy dla obrony Wordpressa przed zagrożeniami botów pojawiających się na co dzień. Możesz wyłączyć tę opcję w każdej chwili w opcjach wtyczki."
|
964 |
+
|
965 |
+
#: ../dashboard.php:339
|
966 |
+
msgid "IP address"
|
967 |
+
msgstr "Adres IP"
|
968 |
+
|
969 |
+
#: ../dashboard.php:339
|
970 |
+
msgid "User login"
|
971 |
+
msgstr "Login użytkownika"
|
972 |
+
|
973 |
+
#: ../dashboard.php:339
|
974 |
+
msgid "User ID"
|
975 |
+
msgstr "ID użytkownika"
|
976 |
+
|
977 |
+
#: ../dashboard.php:495
|
978 |
+
msgid "Export"
|
979 |
+
msgstr "Eksport"
|
980 |
+
|
981 |
+
#: ../dashboard.php:505
|
982 |
+
msgid "All activities"
|
983 |
+
msgstr "Wszystkie aktywności"
|
984 |
+
|
985 |
+
#: ../dashboard.php:514
|
986 |
+
msgid "Search for IP or username"
|
987 |
+
msgstr "Szukaj IP lub użytkownika"
|
988 |
+
|
989 |
+
#: ../dashboard.php:514
|
990 |
+
msgid "Filter"
|
991 |
+
msgstr "Filtr"
|
992 |
+
|
993 |
+
#: ../dashboard.php:730
|
994 |
+
msgid "Cerber Dashboard"
|
995 |
+
msgstr "Kokpit Cerbera"
|
996 |
+
|
997 |
+
#: ../dashboard.php:732
|
998 |
+
msgid "Cerber reCAPTCHA settings"
|
999 |
+
msgstr "Ustawienia reCAPTCHA Cerbera"
|
1000 |
+
|
1001 |
+
#: ../dashboard.php:733
|
1002 |
+
msgid "Cerber tools"
|
1003 |
+
msgstr "Narzędzia Cerbera"
|
1004 |
+
|
1005 |
+
#: ../dashboard.php:1289
|
1006 |
+
msgid "Subscribe"
|
1007 |
+
msgstr "Subskrybuj"
|
1008 |
+
|
1009 |
+
#: ../dashboard.php:1290
|
1010 |
+
msgid "Unsubscribe"
|
1011 |
+
msgstr "Odsubskrybuj"
|
1012 |
+
|
1013 |
+
#: ../dashboard.php:1318
|
1014 |
+
msgid "You've subscribed"
|
1015 |
+
msgstr "Zasubskrybowałeś/aś"
|
1016 |
+
|
1017 |
+
#: ../dashboard.php:1321
|
1018 |
+
msgid "You've unsubscribed"
|
1019 |
+
msgstr "Odsubskrybowałeś/aś"
|
1020 |
+
|
1021 |
+
#: ../wp-cerber.php:2254 ../wp-cerber.php:2255
|
1022 |
+
msgid "A new activity has been recorded"
|
1023 |
+
msgstr "Zarejestrowano nową aktywność"
|
1024 |
+
|
1025 |
+
#: ../wp-cerber.php:2500
|
1026 |
+
msgid "User"
|
1027 |
+
msgstr "Użytkownik"
|
1028 |
+
|
1029 |
+
#: ../wp-cerber.php:2508
|
1030 |
+
msgid "Search string"
|
1031 |
+
msgstr "Fraza do wyszukania"
|
1032 |
+
|
1033 |
+
#: ../wp-cerber.php:2521
|
1034 |
+
msgid "To unsubscribe click here"
|
1035 |
+
msgstr "Aby wyłączyć subskrypcję, kliknij tutaj"
|
1036 |
+
|
1037 |
+
#: ../settings.php:88
|
1038 |
+
msgid "Preferences"
|
1039 |
+
msgstr "Preferencje"
|
1040 |
+
|
1041 |
+
#: ../settings.php:90
|
1042 |
+
msgid "Date format"
|
1043 |
+
msgstr "Format daty"
|
1044 |
+
|
1045 |
+
#: ../settings.php:90
|
1046 |
+
msgid "if empty, the default format %s will be used"
|
1047 |
+
msgstr "Jeśli puste, do zostanie użyty domyślny format %s"
|
1048 |
+
|
1049 |
+
#: ../dashboard.php:890 ../settings.php:146
|
1050 |
+
msgid "Push notifications"
|
1051 |
+
msgstr "Pchnij notyfikacje"
|
1052 |
+
|
1053 |
+
#: ../settings.php:141
|
1054 |
+
msgid "Email notifications"
|
1055 |
+
msgstr "Notyfikacje E-mail"
|
1056 |
+
|
1057 |
+
#: ../settings.php:143
|
1058 |
+
msgid "Use comma to specify multiple values"
|
1059 |
+
msgstr "Używaj przecinka, aby określić więcej wartości"
|
1060 |
+
|
1061 |
+
#: ../settings.php:153
|
1062 |
+
msgid "All connected devices"
|
1063 |
+
msgstr "Wszystkie połączone urządzenia"
|
1064 |
+
|
1065 |
+
#: ../settings.php:154
|
1066 |
+
msgid "No devices found"
|
1067 |
+
msgstr "Nie znaleziono urządzeń"
|
1068 |
+
|
1069 |
+
#: ../settings.php:156
|
1070 |
+
msgid "Not available"
|
1071 |
+
msgstr "Niedostępne"
|
1072 |
+
|
1073 |
+
#: ../common.php:304
|
1074 |
+
msgid "Password reset requested"
|
1075 |
+
msgstr "Zażądano reset hasła"
|
1076 |
+
|
1077 |
+
#: ../common.php:328
|
1078 |
+
msgid "Limit on failed reCAPTCHA verifications is reached"
|
1079 |
+
msgstr "Osiągnięto limit nieprawidłowych weryfikacji reCAPTCHA"
|
1080 |
+
|
1081 |
+
#: ../common.php:380
|
1082 |
+
msgid "%s ago"
|
1083 |
+
msgstr "%s temu"
|
1084 |
+
|
1085 |
+
#: ../settings.php:61
|
1086 |
+
msgid "Apply limit login rules to IP addresses in the White IP Access List"
|
1087 |
+
msgstr "Załącz zasadę limitu logować do adresów IP na białej liście"
|
1088 |
+
|
1089 |
+
#: ../settings.php:70
|
1090 |
+
msgid "Display 404 page"
|
1091 |
+
msgstr "Wyświetl stronę 404"
|
1092 |
+
|
1093 |
+
#: ../settings.php:121
|
1094 |
+
msgid "Invisible reCAPTCHA"
|
1095 |
+
msgstr "Niewidzialna reCAPTCHA"
|
1096 |
+
|
1097 |
+
#: ../settings.php:121
|
1098 |
+
msgid "Enable invisible reCAPTCHA"
|
1099 |
+
msgstr "Włącz niewidzialną reCAPTCHę"
|
1100 |
+
|
1101 |
+
#: ../settings.php:121
|
1102 |
+
msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
|
1103 |
+
msgstr "(nie włączaj, dopóki nie zaopatrzysz się w odpowiednie klucze dla wersji niewidzialnej reCAPTCHy)"
|
1104 |
+
|
1105 |
+
#: ../settings.php:132
|
1106 |
+
msgid "Anti-Spam"
|
1107 |
+
msgstr "Anty-Spam"
|
1108 |
+
|
1109 |
+
#: ../settings.php:132
|
1110 |
+
msgid "Enable reCAPTCHA for WordPress comment form"
|
1111 |
+
msgstr "Włącz reCAPTCHA dla formularza komentarzy Wordpressa"
|
1112 |
+
|
1113 |
+
#: ../settings.php:133
|
1114 |
+
msgid "Disable reCAPTCHA for logged in users"
|
1115 |
+
msgstr "Wyłącz reCAPTCHę dla zalogowanych użytkowników"
|
1116 |
+
|
1117 |
+
#: ../settings.php:135
|
1118 |
+
msgid "Limit attempts"
|
1119 |
+
msgstr "Limit prób"
|
1120 |
+
|
1121 |
+
#: ../settings.php:135
|
1122 |
+
msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
|
1123 |
+
msgstr "Zablokuj adres IP na %s minut po %s nieprawidłowych próbowach logowania w ciągu %s minut"
|
1124 |
+
|
1125 |
+
#: ../settings.php:178
|
1126 |
+
msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
|
1127 |
+
msgstr "W trybie Twierdzy nie może się zalogować nikt oprócz adresów IP znajdujących się na białej liście. Nie ma to wpływu na aktywne sesje użytkowników."
|
1128 |
+
|
1129 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
1130 |
+
msgid "Event"
|
1131 |
+
msgstr "Zdarzenie"
|
1132 |
+
|
1133 |
+
#: ../dashboard.php:1033
|
1134 |
+
msgid "Spam comments denied"
|
1135 |
+
msgstr "Odrzuconych komentarzy ze spamem"
|
1136 |
+
|
1137 |
+
#: ../dashboard.php:1034
|
1138 |
+
msgid "Malicious IP addresses detected"
|
1139 |
+
msgstr "Wykrytych szkodliwych adresów IP"
|
1140 |
+
|
1141 |
+
#: ../dashboard.php:1035
|
1142 |
+
msgid "Lockouts occurred"
|
1143 |
+
msgstr "Blokad"
|
1144 |
+
|
1145 |
+
#: ../dashboard.php:1036
|
1146 |
+
msgid "Locked out IP now"
|
1147 |
+
msgstr "Obecnie zablokowanych adresów IP"
|
1148 |
+
|
1149 |
+
#: ../dashboard.php:1060
|
1150 |
+
msgid "All suspicious activity"
|
1151 |
+
msgstr "Cała podejrzana aktywność"
|
1152 |
+
|
1153 |
+
#: ../wp-cerber.php:931
|
1154 |
+
msgid "You are not allowed to register."
|
1155 |
+
msgstr "Nie masz zezwolenia na rejestrację."
|
1156 |
+
|
1157 |
+
#: ../common.php:293
|
1158 |
+
msgid "Spam comment denied"
|
1159 |
+
msgstr "Komentarz ze spamem odrzucony"
|
1160 |
+
|
1161 |
+
#: ../common.php:299
|
1162 |
+
msgid "by Cerber Lab"
|
1163 |
+
msgstr "- Cerber Lab"
|
1164 |
+
|
1165 |
+
#: ../common.php:314
|
1166 |
+
msgid "Attempt to log in denied"
|
1167 |
+
msgstr "Odrzucono próbę logowania"
|
1168 |
+
|
1169 |
+
#: ../common.php:315
|
1170 |
+
msgid "Attempt to register denied"
|
1171 |
+
msgstr "Odrzucono próbę rejestracji"
|
1172 |
+
|
1173 |
+
#: ../dashboard.php:1032
|
1174 |
+
msgid "Malicious activities mitigated"
|
1175 |
+
msgstr ""
|
1176 |
+
|
languages/wp-cerber-pt_BR.mo
ADDED
Binary file
|
languages/wp-cerber-pt_BR.po
ADDED
@@ -0,0 +1,1183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: WP Cerber\n"
|
8 |
+
"Language: pt-br\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
+
|
11 |
+
#: ../settings.php:57
|
12 |
+
msgid "Limit login attempts"
|
13 |
+
msgstr "Limitar tentativas de login"
|
14 |
+
|
15 |
+
#: ../settings.php:58
|
16 |
+
msgid "Attempts"
|
17 |
+
msgstr "Tentativas"
|
18 |
+
|
19 |
+
#: ../settings.php:59
|
20 |
+
msgid "Lockout duration"
|
21 |
+
msgstr "Duração do bloqueio"
|
22 |
+
|
23 |
+
#: ../settings.php:59 ../settings.php:78
|
24 |
+
msgid "minutes"
|
25 |
+
msgstr "minutos"
|
26 |
+
|
27 |
+
#: ../settings.php:60
|
28 |
+
msgid "Aggressive lockout"
|
29 |
+
msgstr "Bloqueio agressivo"
|
30 |
+
|
31 |
+
#: ../settings.php:63
|
32 |
+
msgid "Site connection"
|
33 |
+
msgstr "Conexão do site"
|
34 |
+
|
35 |
+
#: ../settings.php:65
|
36 |
+
msgid "Proactive security rules"
|
37 |
+
msgstr "Regras de segurança proativa"
|
38 |
+
|
39 |
+
#: ../settings.php:66
|
40 |
+
msgid "Block subnet"
|
41 |
+
msgstr "Bloquear sub-rede"
|
42 |
+
|
43 |
+
#: ../settings.php:69
|
44 |
+
msgid "Request wp-login.php"
|
45 |
+
msgstr "Requisitar wp-login.php"
|
46 |
+
|
47 |
+
#: ../settings.php:69
|
48 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
49 |
+
msgstr "Bloquer IP imediatamente após qualquer requisição a wp-login.php"
|
50 |
+
|
51 |
+
#: ../settings.php:68
|
52 |
+
msgid "Redirect dashboard requests"
|
53 |
+
msgstr "Redirecionar requisições ao painel"
|
54 |
+
|
55 |
+
#: ../settings.php:72
|
56 |
+
msgid "Custom login page"
|
57 |
+
msgstr "Página alternativa de login"
|
58 |
+
|
59 |
+
#: ../settings.php:73
|
60 |
+
msgid "Custom login URL"
|
61 |
+
msgstr "URL alternativo de login"
|
62 |
+
|
63 |
+
#: ../settings.php:73
|
64 |
+
msgid "must not overlap with the existing pages or posts slug"
|
65 |
+
msgstr "não deve se sobrepor aos links permanentes de páginas e posts"
|
66 |
+
|
67 |
+
#: ../settings.php:74
|
68 |
+
msgid "Disable wp-login.php"
|
69 |
+
msgstr "Desabilitar wp-login.php"
|
70 |
+
|
71 |
+
#: ../settings.php:74
|
72 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
73 |
+
msgstr "Bloquear acesso direto a wp-login.php e retornar o erro HTTP 404"
|
74 |
+
|
75 |
+
#: ../dashboard.php:888 ../settings.php:76
|
76 |
+
msgid "Citadel mode"
|
77 |
+
msgstr "Modo Fortaleza"
|
78 |
+
|
79 |
+
#: ../settings.php:77
|
80 |
+
msgid "Threshold"
|
81 |
+
msgstr "Limite"
|
82 |
+
|
83 |
+
#: ../settings.php:78
|
84 |
+
msgid "Duration"
|
85 |
+
msgstr "Duração"
|
86 |
+
|
87 |
+
#: ../wp-cerber.php:2630 ../settings.php:62 ../settings.php:80 ../settings.php:230
|
88 |
+
msgid "Notifications"
|
89 |
+
msgstr "Notificações"
|
90 |
+
|
91 |
+
#: ../settings.php:80
|
92 |
+
msgid "Send notification to admin email"
|
93 |
+
msgstr "Enviar notificação para o email do administrador"
|
94 |
+
|
95 |
+
#: ../dashboard.php:897 ../dashboard.php:1377 ../wp-cerber.php:2628 ../settings.
|
96 |
+
#: php:223 ../cerber-tools.php:59 ../cerber-tools.php:68 ../cerber-tools.php:178
|
97 |
+
msgid "Access Lists"
|
98 |
+
msgstr "Listas de Acesso"
|
99 |
+
|
100 |
+
#: ../dashboard.php:895 ../dashboard.php:1065 ../wp-cerber.php:2495 ../settings.
|
101 |
+
#: php:82 ../settings.php:213
|
102 |
+
msgid "Activity"
|
103 |
+
msgstr "Atividade"
|
104 |
+
|
105 |
+
#: ../dashboard.php:896 ../settings.php:218
|
106 |
+
msgid "Lockouts"
|
107 |
+
msgstr "Bloqueios"
|
108 |
+
|
109 |
+
#: ../settings.php:348
|
110 |
+
msgid "%s allowed retries in %s minutes"
|
111 |
+
msgstr "%s tentativas restantes em %s minutos"
|
112 |
+
|
113 |
+
#: ../settings.php:365
|
114 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
115 |
+
msgstr "Habilitar após %s tentativas falhas de login nos últimos %s minutos"
|
116 |
+
|
117 |
+
#: ../dashboard.php:77 ../dashboard.php:486 ../wp-cerber.php:2496
|
118 |
+
msgid "IP"
|
119 |
+
msgstr "IP"
|
120 |
+
|
121 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
122 |
+
msgid "Date"
|
123 |
+
msgstr "Data"
|
124 |
+
|
125 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
126 |
+
msgid "Local User"
|
127 |
+
msgstr "Usuário Local"
|
128 |
+
|
129 |
+
#: ../dashboard.php:339 ../dashboard.php:486 ../wp-cerber.php:2504
|
130 |
+
msgid "Username used"
|
131 |
+
msgstr "Nome de usuário usado"
|
132 |
+
|
133 |
+
#: ../dashboard.php:83
|
134 |
+
msgid "Showing last %d records from %d"
|
135 |
+
msgstr "Mostrando últimos %d registros de %d"
|
136 |
+
|
137 |
+
#: ../common.php:284
|
138 |
+
msgid "Logged in"
|
139 |
+
msgstr "Conectado"
|
140 |
+
|
141 |
+
#: ../common.php:285
|
142 |
+
msgid "Logged out"
|
143 |
+
msgstr "Desconectado"
|
144 |
+
|
145 |
+
#: ../common.php:286
|
146 |
+
msgid "Login failed"
|
147 |
+
msgstr "Falha no login"
|
148 |
+
|
149 |
+
#: ../common.php:289
|
150 |
+
msgid "IP blocked"
|
151 |
+
msgstr "IP bloqueado"
|
152 |
+
|
153 |
+
#: ../common.php:290
|
154 |
+
msgid "Subnet blocked"
|
155 |
+
msgstr "Sub-rede bloqueada"
|
156 |
+
|
157 |
+
#: ../common.php:292
|
158 |
+
msgid "Citadel activated!"
|
159 |
+
msgstr "Fortaleza ativada!"
|
160 |
+
|
161 |
+
#: ../dashboard.php:472 ../dashboard.php:652 ../common.php:296
|
162 |
+
#, fuzzy
|
163 |
+
msgid "Locked out"
|
164 |
+
msgstr "Bloqueado"
|
165 |
+
|
166 |
+
#: ../common.php:297
|
167 |
+
msgid "IP blacklisted"
|
168 |
+
msgstr "IP bloqueado"
|
169 |
+
|
170 |
+
#: ../common.php:303
|
171 |
+
msgid "Password changed"
|
172 |
+
msgstr "Senha alterada"
|
173 |
+
|
174 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
175 |
+
msgid "Remove"
|
176 |
+
msgstr "Remover"
|
177 |
+
|
178 |
+
#: ../dashboard.php:268
|
179 |
+
msgid "Lockout for %s was removed"
|
180 |
+
msgstr "Bloqueio de %s foi removido"
|
181 |
+
|
182 |
+
#: ../dashboard.php:102 ../dashboard.php:467 ../dashboard.php:647 ../dashboard.
|
183 |
+
#: php:886 ../wp-cerber.php:2622 ../settings.php:61 ../settings.php:181
|
184 |
+
msgid "White IP Access List"
|
185 |
+
msgstr "Lista Segura de IPs"
|
186 |
+
|
187 |
+
#: ../dashboard.php:104 ../dashboard.php:468 ../dashboard.php:649 ../dashboard.
|
188 |
+
#: php:887
|
189 |
+
#, fuzzy
|
190 |
+
msgid "Black IP Access List"
|
191 |
+
msgstr "Lista Negra de IPs"
|
192 |
+
|
193 |
+
#: ../dashboard.php:126
|
194 |
+
msgid "List is empty"
|
195 |
+
msgstr "A lista está vazia"
|
196 |
+
|
197 |
+
#: ../dashboard.php:153
|
198 |
+
msgid "Address %s was added to White IP Access List"
|
199 |
+
msgstr "Endereço %s adicionado à Lista Segura de IPs"
|
200 |
+
|
201 |
+
#: ../dashboard.php:166
|
202 |
+
#, fuzzy
|
203 |
+
msgid "Address %s was added to Black IP Access List"
|
204 |
+
msgstr "Endereço %s adicionado à Lista Negra de IPs"
|
205 |
+
|
206 |
+
#: ../wp-cerber.php:2181
|
207 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
208 |
+
msgstr "O modo Fortaleza é atividado após %d tentaivas de login falhas em %d minutos."
|
209 |
+
|
210 |
+
#: ../dashboard.php:1188
|
211 |
+
#, fuzzy
|
212 |
+
msgid "View Activity"
|
213 |
+
msgstr "Ver Atividade"
|
214 |
+
|
215 |
+
#: ../cerber-tools.php:58 ../cerber-tools.php:67
|
216 |
+
msgid "Settings"
|
217 |
+
msgstr "Configurações"
|
218 |
+
|
219 |
+
#: ../dashboard.php:787
|
220 |
+
#, fuzzy
|
221 |
+
msgid "Last login"
|
222 |
+
msgstr "Último login"
|
223 |
+
|
224 |
+
#: ../dashboard.php:814 ../dashboard.php:869
|
225 |
+
msgid "Never"
|
226 |
+
msgstr "Nunca"
|
227 |
+
|
228 |
+
#: ../dashboard.php:1108
|
229 |
+
msgid "Are you sure?"
|
230 |
+
msgstr "Tem certeza?"
|
231 |
+
|
232 |
+
#: ../settings.php:63
|
233 |
+
msgid "My site is behind a reverse proxy"
|
234 |
+
msgstr "Meu site está sob um proxy reverso"
|
235 |
+
|
236 |
+
#: ../settings.php:67
|
237 |
+
msgid "Non-existent users"
|
238 |
+
msgstr "Usuários não-existentes"
|
239 |
+
|
240 |
+
#: ../settings.php:67
|
241 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
242 |
+
msgstr "Bloquear IP imediatamente nas tentativas de login com nomes de usuários não existentes"
|
243 |
+
|
244 |
+
#: ../settings.php:68
|
245 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
246 |
+
msgstr "Desabilitar redirecionamento automático para a página de login quando /wp-admin/ é requisitada sem autorização"
|
247 |
+
|
248 |
+
#: ../settings.php:167
|
249 |
+
msgid "Make your protection smarter!"
|
250 |
+
msgstr "Deixe sua proteção mais inteligente!"
|
251 |
+
|
252 |
+
#: ../settings.php:171
|
253 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
254 |
+
msgstr "Favor habilitar os Links Permanentes para utilizar essa funcionalidade. Configure os Link Permanentes para algo além do Padrão."
|
255 |
+
|
256 |
+
#: ../settings.php:174
|
257 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
258 |
+
msgstr "Tenha cuidado ao habilitar essas opções. Caso esqueça o URL de login, você não poderá mais se conectar."
|
259 |
+
|
260 |
+
#: ../wp-cerber.php:2627 ../settings.php:220
|
261 |
+
msgid "Main Settings"
|
262 |
+
msgstr "Configurações Principais"
|
263 |
+
|
264 |
+
#: ../settings.php:234
|
265 |
+
msgid "Help"
|
266 |
+
msgstr "Ajuda"
|
267 |
+
|
268 |
+
#: ../settings.php:353
|
269 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
270 |
+
msgstr "Aumentar a duração do bloqueio para %s horas após %s bloqueios nas últimas %s horas."
|
271 |
+
|
272 |
+
#: ../wp-cerber.php:215
|
273 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
274 |
+
msgstr "Você não tem permissão para entrar. Peça ajuda ao administrador."
|
275 |
+
|
276 |
+
#: ../wp-cerber.php:221
|
277 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
278 |
+
msgstr "Você atingiu o limite de tentativas de login. Por favor, tente novamente em %d minutos."
|
279 |
+
|
280 |
+
#: ../wp-cerber.php:240
|
281 |
+
msgid "You have only one attempt remaining."
|
282 |
+
msgid_plural "You have %d attempts remaining."
|
283 |
+
msgstr[0] "Você tem apenas uma tentativa restante."
|
284 |
+
msgstr[1] "Você tem %d tentativas restantes."
|
285 |
+
|
286 |
+
#: ../dashboard.php:499
|
287 |
+
msgid "No activity has been logged."
|
288 |
+
msgstr "Nenhuma atividade foi registrada."
|
289 |
+
|
290 |
+
#: ../dashboard.php:77
|
291 |
+
msgid "Expires"
|
292 |
+
msgstr "Expira"
|
293 |
+
|
294 |
+
#: ../dashboard.php:89
|
295 |
+
#, fuzzy
|
296 |
+
msgid "No lockouts at the moment. The sky is clear."
|
297 |
+
msgstr "Nenhum bloqueio no momento. O céu está limpo."
|
298 |
+
|
299 |
+
#: ../dashboard.php:102
|
300 |
+
msgid "These IPs will never be locked out"
|
301 |
+
msgstr "Estes IPs nunca serão bloqueados"
|
302 |
+
|
303 |
+
#: ../dashboard.php:106
|
304 |
+
msgid "Your IP"
|
305 |
+
msgstr "Seu IP"
|
306 |
+
|
307 |
+
#: ../dashboard.php:162
|
308 |
+
msgid "You can't add your IP address"
|
309 |
+
msgstr "Você não pode adicionar seu próprio IP"
|
310 |
+
|
311 |
+
#: ../wp-cerber.php:2182
|
312 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
313 |
+
msgstr "Última tentativa de login falha foi às %s do IP %s com o login de usuário: %s."
|
314 |
+
|
315 |
+
#: ../wp-cerber.php:2245
|
316 |
+
msgid "Change notification settings"
|
317 |
+
msgstr "Alterar configurações de notificações"
|
318 |
+
|
319 |
+
#: ../wp-cerber.php:2605
|
320 |
+
msgid "Can't activate WP Cerber due to a database error."
|
321 |
+
msgstr "Não foi possível ativar o WP Cerber devido a um erro na conexão com o banco de dados."
|
322 |
+
|
323 |
+
#: ../settings.php:360
|
324 |
+
msgid "Notify admin if the number of active lockouts above"
|
325 |
+
msgstr "Notificar o administrador caso o número de bloqueios ativos seja acima"
|
326 |
+
|
327 |
+
#: ../settings.php:83
|
328 |
+
msgid "days"
|
329 |
+
msgstr "dias"
|
330 |
+
|
331 |
+
#: ../dashboard.php:838
|
332 |
+
msgid "Cerber Quick View"
|
333 |
+
msgstr "Visualição Rápida do Cerber"
|
334 |
+
|
335 |
+
#: ../dashboard.php:85
|
336 |
+
msgid "Hint"
|
337 |
+
msgstr "Dica"
|
338 |
+
|
339 |
+
#: ../dashboard.php:85
|
340 |
+
msgid "To view activity, click on the IP"
|
341 |
+
msgstr "Para ver a atividade, clique no IP"
|
342 |
+
|
343 |
+
#: ../dashboard.php:123 ../dashboard.php:679
|
344 |
+
msgid "Check for activity"
|
345 |
+
msgstr "Verificar atividade"
|
346 |
+
|
347 |
+
#: ../settings.php:66
|
348 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
349 |
+
msgstr "Sempre bloquear toda a sub-rede classe C de IPs invasores"
|
350 |
+
|
351 |
+
#: ../settings.php:80 ../settings.php:362
|
352 |
+
msgid "Click to send test"
|
353 |
+
msgstr "Clique para enviar teste"
|
354 |
+
|
355 |
+
#: ../settings.php:445
|
356 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
357 |
+
msgstr "Atenção! Você alteraou o URL de login! O novo URL de login é"
|
358 |
+
|
359 |
+
#: ../dashboard.php:786
|
360 |
+
msgid "Comments"
|
361 |
+
msgstr "Comentários"
|
362 |
+
|
363 |
+
#: ../dashboard.php:789
|
364 |
+
msgid "Date of registration"
|
365 |
+
msgstr "Data de registro"
|
366 |
+
|
367 |
+
#: ../dashboard.php:258
|
368 |
+
msgid "Message has been sent to "
|
369 |
+
msgstr "A mensagem foi enviada para "
|
370 |
+
|
371 |
+
#: ../dashboard.php:1250
|
372 |
+
msgid "Update to version %s of WP Cerber"
|
373 |
+
msgstr "Atualizar WP Cerber para a versão %s"
|
374 |
+
|
375 |
+
#: ../wp-cerber.php:2183 ../wp-cerber.php:2520
|
376 |
+
msgid "View activity in dashboard"
|
377 |
+
msgstr "Ver atividade no painel"
|
378 |
+
|
379 |
+
#: ../wp-cerber.php:2213
|
380 |
+
msgid "Number of active lockouts"
|
381 |
+
msgstr "Número de bloqueios ativos"
|
382 |
+
|
383 |
+
#: ../wp-cerber.php:2217
|
384 |
+
msgid "View lockouts in dashboard"
|
385 |
+
msgstr "Ver bloqueios no painel"
|
386 |
+
|
387 |
+
#: ../wp-cerber.php:2270
|
388 |
+
msgid "This message was sent by"
|
389 |
+
msgstr "Esta mensagem foi enviada por"
|
390 |
+
|
391 |
+
#: ../dashboard.php:733 ../cerber-tools.php:40
|
392 |
+
msgid "Tools"
|
393 |
+
msgstr "Ferramentas"
|
394 |
+
|
395 |
+
#: ../cerber-tools.php:55
|
396 |
+
msgid "Export settings to the file"
|
397 |
+
msgstr "Exportar configurações para o arquivo"
|
398 |
+
|
399 |
+
#: ../cerber-tools.php:56
|
400 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
401 |
+
msgstr "Assim que clicar no botão abaixo, você baixará um arquivo de configuração que poderá usar em outros sites."
|
402 |
+
|
403 |
+
#: ../cerber-tools.php:57
|
404 |
+
msgid "What do you want to export?"
|
405 |
+
msgstr "O que gostaria de exportar?"
|
406 |
+
|
407 |
+
#: ../cerber-tools.php:60
|
408 |
+
msgid "Download file"
|
409 |
+
msgstr "Baixar arquivo"
|
410 |
+
|
411 |
+
#: ../cerber-tools.php:62
|
412 |
+
msgid "Import settings from the file"
|
413 |
+
msgstr "Importar configurações de um arquivo"
|
414 |
+
|
415 |
+
#: ../cerber-tools.php:63
|
416 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
417 |
+
msgstr "Assim que clicar no botão abaixo, o arquivo será enviado e todas as configurações existentes serão sobrescritas."
|
418 |
+
|
419 |
+
#: ../cerber-tools.php:64
|
420 |
+
msgid "Select file to import."
|
421 |
+
msgstr "Selecionar arquivo para importação."
|
422 |
+
|
423 |
+
#: ../cerber-tools.php:64
|
424 |
+
msgid "Maximum upload file size: %s."
|
425 |
+
msgstr "Tamanho máximo do arquivo para envio: %s."
|
426 |
+
|
427 |
+
#: ../cerber-tools.php:67
|
428 |
+
msgid "What do you want to import?"
|
429 |
+
msgstr "O que gostaria de importar?"
|
430 |
+
|
431 |
+
#: ../cerber-tools.php:69
|
432 |
+
msgid "Upload file"
|
433 |
+
msgstr "Enviar arquivo"
|
434 |
+
|
435 |
+
#: ../cerber-tools.php:148
|
436 |
+
msgid "No file was uploaded or file is corrupted"
|
437 |
+
msgstr "Nenhum arquivo foi enviado ou o arquivo está corrompido"
|
438 |
+
|
439 |
+
#: ../cerber-tools.php:178
|
440 |
+
msgid "Error while updating"
|
441 |
+
msgstr "Erro ao enviar arquivo"
|
442 |
+
|
443 |
+
#: ../cerber-tools.php:181
|
444 |
+
msgid "Settings has imported successfully from"
|
445 |
+
msgstr "As configurações foram importadas com sucesso de"
|
446 |
+
|
447 |
+
#: ../cerber-tools.php:185
|
448 |
+
msgid "Error while parsing file"
|
449 |
+
msgstr "Erro ao interpretar arquivo"
|
450 |
+
|
451 |
+
#: ../dashboard.php:77 ../dashboard.php:486
|
452 |
+
msgid "Hostname"
|
453 |
+
msgstr "Nome do servidor"
|
454 |
+
|
455 |
+
#: ../dashboard.php:237
|
456 |
+
msgid "unknown"
|
457 |
+
msgstr "desconhecido"
|
458 |
+
|
459 |
+
#: ../settings.php:83
|
460 |
+
msgid "Keep records for"
|
461 |
+
msgstr "Guardar registros por"
|
462 |
+
|
463 |
+
#: ../dashboard.php:873
|
464 |
+
msgid "active"
|
465 |
+
msgstr "ativo"
|
466 |
+
|
467 |
+
#: ../dashboard.php:873
|
468 |
+
msgid "deactivate"
|
469 |
+
msgstr "desativar"
|
470 |
+
|
471 |
+
#: ../dashboard.php:875
|
472 |
+
msgid "not active"
|
473 |
+
msgstr "inativo"
|
474 |
+
|
475 |
+
#: ../dashboard.php:876
|
476 |
+
msgid "disabled"
|
477 |
+
msgstr "desabilitado"
|
478 |
+
|
479 |
+
#: ../dashboard.php:881
|
480 |
+
msgid "failed attempts"
|
481 |
+
msgstr "tentativas falhas"
|
482 |
+
|
483 |
+
#: ../dashboard.php:881 ../dashboard.php:882
|
484 |
+
msgid "in 24 hours"
|
485 |
+
msgstr "em 24 horas"
|
486 |
+
|
487 |
+
#: ../dashboard.php:881 ../dashboard.php:882
|
488 |
+
msgid "view all"
|
489 |
+
msgstr "ver todos"
|
490 |
+
|
491 |
+
#: ../dashboard.php:882
|
492 |
+
msgid "lockouts"
|
493 |
+
msgstr "bloqueios"
|
494 |
+
|
495 |
+
#: ../dashboard.php:884
|
496 |
+
msgid "Lockouts at the moment"
|
497 |
+
msgstr "Bloqueios no momento"
|
498 |
+
|
499 |
+
#: ../dashboard.php:885
|
500 |
+
#, fuzzy
|
501 |
+
msgid "Last lockout"
|
502 |
+
msgstr "Último bloqueio"
|
503 |
+
|
504 |
+
#: ../dashboard.php:886 ../dashboard.php:887 ../dashboard.php:1356
|
505 |
+
msgid "entry"
|
506 |
+
msgid_plural "entries"
|
507 |
+
msgstr[0] "entrada"
|
508 |
+
msgstr[1] "entradas"
|
509 |
+
|
510 |
+
#: ../dashboard.php:1103
|
511 |
+
#, fuzzy
|
512 |
+
msgid "Confused about some settings?"
|
513 |
+
msgstr "Confuso em relação às configurações?"
|
514 |
+
|
515 |
+
#: ../dashboard.php:1104
|
516 |
+
#, fuzzy
|
517 |
+
msgid "You can easily load default recommended settings using button below"
|
518 |
+
msgstr "Você pode carregar as configurações recomendadas clicando no botão abaixo."
|
519 |
+
|
520 |
+
#: ../dashboard.php:1106
|
521 |
+
msgid "Load default settings"
|
522 |
+
msgstr "Carregar configurações padrão"
|
523 |
+
|
524 |
+
#: ../dashboard.php:1114
|
525 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
526 |
+
msgstr "não afeta URL alternativo de login e Listas de Acesso"
|
527 |
+
|
528 |
+
#: ../dashboard.php:1133
|
529 |
+
msgid "Donate"
|
530 |
+
msgstr "Doe"
|
531 |
+
|
532 |
+
#: ../dashboard.php:1244
|
533 |
+
msgid "New version is available"
|
534 |
+
msgstr "Nova versão disponível"
|
535 |
+
|
536 |
+
#. Name of the plugin
|
537 |
+
#: ../dashboard.php:728 ../dashboard.php:743
|
538 |
+
msgid "WP Cerber"
|
539 |
+
msgstr "WP Cerber"
|
540 |
+
|
541 |
+
#. URI of the plugin
|
542 |
+
#:
|
543 |
+
msgid "http://wpcerber.com"
|
544 |
+
msgstr "http://wpcerber.com"
|
545 |
+
|
546 |
+
#: ../wp-cerber.php:2161
|
547 |
+
msgid "WP Cerber notify"
|
548 |
+
msgstr "WP Cerber notifica"
|
549 |
+
|
550 |
+
#: ../wp-cerber.php:2179
|
551 |
+
msgid "Citadel mode is activated"
|
552 |
+
msgstr "Modo Fortaleza está ativado"
|
553 |
+
|
554 |
+
#: ../wp-cerber.php:2250
|
555 |
+
msgid "New Custom login URL"
|
556 |
+
msgstr "Novo URL alternativo de login"
|
557 |
+
|
558 |
+
#: ../wp-cerber.php:2596
|
559 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
560 |
+
msgstr "WP Cerber requer PHP %s ou mais recente. Você está rodando"
|
561 |
+
|
562 |
+
#: ../wp-cerber.php:2600
|
563 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
564 |
+
msgstr "WP Cerber requer Wordpress %s ou mais recente. Você está rodando"
|
565 |
+
|
566 |
+
#: ../settings.php:86
|
567 |
+
msgid "Use file"
|
568 |
+
msgstr "Usar arquivo"
|
569 |
+
|
570 |
+
#: ../settings.php:86
|
571 |
+
msgid "Write failed login attempts to the file"
|
572 |
+
msgstr "Escrever tentativas falhas de login em um arquivo"
|
573 |
+
|
574 |
+
#: ../dashboard.php:788
|
575 |
+
msgid "Failed attempts in last 24 hours"
|
576 |
+
msgstr "Tentativas falhas de login nas últimas 24 horas"
|
577 |
+
|
578 |
+
#: ../dashboard.php:1187
|
579 |
+
msgid "Deactivate"
|
580 |
+
msgstr "Desativar"
|
581 |
+
|
582 |
+
#: ../dashboard.php:77 ../wp-cerber.php:2215
|
583 |
+
msgid "Reason"
|
584 |
+
msgstr "Razão"
|
585 |
+
|
586 |
+
#: ../dashboard.php:130
|
587 |
+
msgid "Add IP to the list"
|
588 |
+
msgstr "Adicionar IP à lista"
|
589 |
+
|
590 |
+
#: ../dashboard.php:697
|
591 |
+
msgid "Add IP to the Black List"
|
592 |
+
msgstr "Adicionar IP à Lista Negra"
|
593 |
+
|
594 |
+
#: ../common.php:325
|
595 |
+
msgid "Attempt to access"
|
596 |
+
msgstr "Tentativa de acesso"
|
597 |
+
|
598 |
+
#: ../common.php:324
|
599 |
+
msgid "Limit on login attempts is reached"
|
600 |
+
msgstr "O limite de tentativas de login foi atingido"
|
601 |
+
|
602 |
+
#: ../common.php:311 ../common.php:326
|
603 |
+
msgid "Attempt to log in with non-existent username"
|
604 |
+
msgstr "Tentativa de login com nome de usuário não existente"
|
605 |
+
|
606 |
+
#: ../wp-cerber.php:2214
|
607 |
+
msgid "Last lockout was added: %s for IP %s"
|
608 |
+
msgstr "Último bloqueio foi adicionado: %s para o IP %s"
|
609 |
+
|
610 |
+
#: ../wp-cerber.php:2624
|
611 |
+
msgid "It's important to check security settings."
|
612 |
+
msgstr "É importante verificar as configurações de segurança."
|
613 |
+
|
614 |
+
#: ../wp-cerber.php:2629 ../settings.php:225
|
615 |
+
msgid "Hardening"
|
616 |
+
msgstr "Fortalecendo"
|
617 |
+
|
618 |
+
#: ../dashboard.php:675
|
619 |
+
msgid "Abuse email:"
|
620 |
+
msgstr "Email para abusos:"
|
621 |
+
|
622 |
+
#: ../settings.php:143
|
623 |
+
msgid "Email Address"
|
624 |
+
msgstr "Endereço de Email"
|
625 |
+
|
626 |
+
#: ../settings.php:143
|
627 |
+
msgid "if empty, the admin email %s will be used"
|
628 |
+
msgstr "se vazio, o email do administrador %s será usado"
|
629 |
+
|
630 |
+
#: ../settings.php:89
|
631 |
+
msgid "Drill down IP"
|
632 |
+
msgstr "Rastrear IP"
|
633 |
+
|
634 |
+
#: ../settings.php:89
|
635 |
+
msgid "Retrieve extra WHOIS information for IP"
|
636 |
+
msgstr "Pegar informação extra de WHOIS para o IP"
|
637 |
+
|
638 |
+
#: ../settings.php:97
|
639 |
+
msgid "Hardening WordPress"
|
640 |
+
msgstr "Fortalecendo o Wordpress"
|
641 |
+
|
642 |
+
#: ../settings.php:98
|
643 |
+
msgid "Stop user enumeration"
|
644 |
+
msgstr "Bloquear enumeração de usuários"
|
645 |
+
|
646 |
+
#: ../settings.php:98
|
647 |
+
msgid "Block access to the pages like /?author=n"
|
648 |
+
msgstr "Bloquear acesso a páginas como /?autor=n"
|
649 |
+
|
650 |
+
#: ../settings.php:99
|
651 |
+
msgid "Disable XML-RPC"
|
652 |
+
msgstr "Desabilitar XML-RPC"
|
653 |
+
|
654 |
+
#: ../settings.php:99
|
655 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
656 |
+
msgstr "Bloquear acesso ao servidor XML-RPC (incluindo Pingbacks e Trackbacks)"
|
657 |
+
|
658 |
+
#: ../settings.php:100
|
659 |
+
msgid "Disable feeds"
|
660 |
+
msgstr "Desabilitar feeds"
|
661 |
+
|
662 |
+
#: ../settings.php:100
|
663 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
664 |
+
msgstr "Bloquear acesso aos feeds RSS, Atom e RDF"
|
665 |
+
|
666 |
+
#: ../settings.php:101
|
667 |
+
msgid "Disable REST API"
|
668 |
+
msgstr "Desabilitar API REST"
|
669 |
+
|
670 |
+
#: ../settings.php:101
|
671 |
+
msgid "Block access to the WordPress REST API"
|
672 |
+
msgstr "Bloquear acesso à API REST do Wordpress"
|
673 |
+
|
674 |
+
#: ../settings.php:181
|
675 |
+
msgid "These settings do not affect hosts from the "
|
676 |
+
msgstr "Estas configurações não afetam servidores do "
|
677 |
+
|
678 |
+
#: ../settings.php:525
|
679 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
680 |
+
msgstr "<strong>ERRO</strong>: favor digitar um endereço de email válido."
|
681 |
+
|
682 |
+
#: ../wp-cerber.php:2244 ../wp-cerber.php:2621
|
683 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
684 |
+
msgstr "WP Cerver está ativo agora e já começou a proteger o seu site"
|
685 |
+
|
686 |
+
#: ../dashboard.php:77
|
687 |
+
msgid "Action"
|
688 |
+
msgstr "Ação"
|
689 |
+
|
690 |
+
#: ../dashboard.php:104
|
691 |
+
msgid "Nobody can log in or register from these IPs"
|
692 |
+
msgstr "Ninguém pode entrar ou se registrar a partir destes IPs"
|
693 |
+
|
694 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
695 |
+
msgid "Incorrect IP address or IP range"
|
696 |
+
msgstr "Endereço ou faixa de IP incorretos"
|
697 |
+
|
698 |
+
#: ../dashboard.php:261
|
699 |
+
msgid "Unable to send notification email"
|
700 |
+
msgstr "Não foi possível enviar o email de notificação"
|
701 |
+
|
702 |
+
#: ../dashboard.php:284 ../dashboard.php:1203
|
703 |
+
msgid "Settings saved"
|
704 |
+
msgstr "Configurações salvas"
|
705 |
+
|
706 |
+
#: ../dashboard.php:679
|
707 |
+
msgid "Network:"
|
708 |
+
msgstr "Rede:"
|
709 |
+
|
710 |
+
#: ../dashboard.php:693
|
711 |
+
msgid "Add network to the Black List"
|
712 |
+
msgstr "Adicionar rede à Lista Negra"
|
713 |
+
|
714 |
+
#: ../dashboard.php:1186
|
715 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
716 |
+
msgstr "Atenção! O modo Fortaleza agora está ativado. Ninguém pode fazer login."
|
717 |
+
|
718 |
+
#: ../whois.php:210 ../common.php:323
|
719 |
+
msgid "Unknown"
|
720 |
+
msgstr "Desconhecido"
|
721 |
+
|
722 |
+
#. Description of the plugin
|
723 |
+
#:
|
724 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
725 |
+
msgstr "Protege sites contra ataques de força bruta, bots e hackers. Proteção anti-spam com reCAPTCHA. Controle abrangente para atividade de usuários. Restrição de login para listas de IPs. Limite de tentativas de login. Sinta-se à vontade para contatar o desenvolvedor no site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
726 |
+
|
727 |
+
#. Author of the plugin
|
728 |
+
#:
|
729 |
+
msgid "Gregory"
|
730 |
+
msgstr "Gregory"
|
731 |
+
|
732 |
+
#: ../wp-cerber.php:302 ../wp-cerber.php:558 ../wp-cerber.php:570 ../wp-cerber.
|
733 |
+
#: php:577 ../wp-cerber.php:715 ../wp-cerber.php:919 ../wp-cerber.php:924 ../wp-
|
734 |
+
#: cerber.php:930 ../wp-cerber.php:960 ../common.php:80 ../common.php:133 ..
|
735 |
+
#: /common.php:137 ../settings.php:498
|
736 |
+
msgid "ERROR:"
|
737 |
+
msgstr "ERRO:"
|
738 |
+
|
739 |
+
#: ../wp-cerber.php:587
|
740 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
741 |
+
msgstr "Verificação de humanidade falhou. Por favor, click no quadrado do bloco reCAPTCHA abaixo."
|
742 |
+
|
743 |
+
#: ../wp-cerber.php:726
|
744 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
745 |
+
msgstr "<strong>ERRO</strong>: A senha que você digitou para o usuário %s está incorreta."
|
746 |
+
|
747 |
+
#: ../wp-cerber.php:925
|
748 |
+
msgid "Username is not allowed. Please choose another one."
|
749 |
+
msgstr "Nome de usuário não permitido. Por favor, escolha outro nome."
|
750 |
+
|
751 |
+
#: ../wp-cerber.php:2208
|
752 |
+
msgid "unspecified"
|
753 |
+
msgstr "não especificado"
|
754 |
+
|
755 |
+
#: ../wp-cerber.php:2211
|
756 |
+
msgid "Number of lockouts is increasing"
|
757 |
+
msgstr "O número de bloqueios está aumentando"
|
758 |
+
|
759 |
+
#: ../wp-cerber.php:2216
|
760 |
+
msgid "View activity for this IP"
|
761 |
+
msgstr "Ver atividade do IP"
|
762 |
+
|
763 |
+
#: ../wp-cerber.php:2220 ../wp-cerber.php:2222
|
764 |
+
msgid "A new version of WP Cerber is available to install"
|
765 |
+
msgstr "Uma nova versão do WP Cerber está disponível para ser instalada"
|
766 |
+
|
767 |
+
#: ../wp-cerber.php:2221
|
768 |
+
msgid "Hi!"
|
769 |
+
msgstr "Olá!"
|
770 |
+
|
771 |
+
#: ../wp-cerber.php:2223 ../wp-cerber.php:2234
|
772 |
+
msgid "Website"
|
773 |
+
msgstr "Website"
|
774 |
+
|
775 |
+
#: ../wp-cerber.php:2226 ../wp-cerber.php:2227
|
776 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
777 |
+
msgstr "O plugin de segurança WP Cerber foi desativado"
|
778 |
+
|
779 |
+
#: ../wp-cerber.php:2229
|
780 |
+
msgid "Not logged in"
|
781 |
+
msgstr "Não conectado"
|
782 |
+
|
783 |
+
#: ../wp-cerber.php:2235
|
784 |
+
msgid "By user"
|
785 |
+
msgstr "Pelo usuário"
|
786 |
+
|
787 |
+
#: ../wp-cerber.php:2236
|
788 |
+
msgid "From IP address"
|
789 |
+
msgstr "Do endereço de IP"
|
790 |
+
|
791 |
+
#: ../wp-cerber.php:2239
|
792 |
+
msgid "From country"
|
793 |
+
msgstr "Do país"
|
794 |
+
|
795 |
+
#: ../wp-cerber.php:2243
|
796 |
+
msgid "The WP Cerber security plugin is now active"
|
797 |
+
msgstr "O plugin de segurança WP Cerber está agora ativado"
|
798 |
+
|
799 |
+
#: ../wp-cerber.php:2622
|
800 |
+
msgid "Your IP address is added to the"
|
801 |
+
msgstr "Seu endereço de IP foi adicionado à"
|
802 |
+
|
803 |
+
#: ../dashboard.php:732
|
804 |
+
msgid "reCAPTCHA"
|
805 |
+
msgstr "reCAPTCHA"
|
806 |
+
|
807 |
+
#: ../wp-cerber.php:2631
|
808 |
+
msgid "Import settings"
|
809 |
+
msgstr "Importar configurações"
|
810 |
+
|
811 |
+
#: ../settings.php:144
|
812 |
+
msgid "Notification limit"
|
813 |
+
msgstr "Limite de notificação"
|
814 |
+
|
815 |
+
#: ../settings.php:144
|
816 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
817 |
+
msgstr "notificações permitidas por hora (0 significa ilimitadas)"
|
818 |
+
|
819 |
+
#: ../settings.php:110
|
820 |
+
msgid "User related settings"
|
821 |
+
msgstr "Configurações de usuário"
|
822 |
+
|
823 |
+
#: ../settings.php:111
|
824 |
+
msgid "Prohibited usernames"
|
825 |
+
msgstr "Nomes de usuários proibidos"
|
826 |
+
|
827 |
+
#: ../settings.php:111
|
828 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
829 |
+
msgstr "Nomes de usuários desta lista não podem fazer login ou serem registrados. Qualquer endereço de IP que tentar utilizar algum destes nomes será imediatamente bloqueado. Utilize vírgulas para separar os logins."
|
830 |
+
|
831 |
+
#: ../settings.php:112
|
832 |
+
msgid "User session expire"
|
833 |
+
msgstr "Sessão de usuário expira"
|
834 |
+
|
835 |
+
#: ../settings.php:112
|
836 |
+
msgid "in minutes (leave empty to use default WP value)"
|
837 |
+
msgstr "em minutos (deixe em branco para usar o valor padrão do Wordpress)"
|
838 |
+
|
839 |
+
#: ../cerber-tools.php:195
|
840 |
+
msgid "reCAPTCHA settings"
|
841 |
+
msgstr "Configurações do reCAPTCHA"
|
842 |
+
|
843 |
+
#: ../settings.php:119
|
844 |
+
msgid "Site key"
|
845 |
+
msgstr "Chave do site"
|
846 |
+
|
847 |
+
#: ../settings.php:120
|
848 |
+
msgid "Secret key"
|
849 |
+
msgstr "Chave secreta"
|
850 |
+
|
851 |
+
#: ../settings.php:123
|
852 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
853 |
+
msgstr "Habilitar reCAPTCHA para o formulário de registro do Wordpress"
|
854 |
+
|
855 |
+
#: ../settings.php:126
|
856 |
+
msgid "Lost password form"
|
857 |
+
msgstr "Formulário de senha perdida"
|
858 |
+
|
859 |
+
#: ../settings.php:129
|
860 |
+
msgid "Login form"
|
861 |
+
msgstr "Formulário de login"
|
862 |
+
|
863 |
+
#: ../settings.php:129
|
864 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
865 |
+
msgstr "Habilitar reCAPTCHA para o formulário de login do Wordpress"
|
866 |
+
|
867 |
+
#: ../settings.php:184
|
868 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
869 |
+
msgstr "Antes de começar a utilizar o reCAPTCHA, você precisa obter uma Chave do Site uma Chave Secreta no website do Google"
|
870 |
+
|
871 |
+
#: ../cerber-lab.php:527 ../settings.php:185
|
872 |
+
msgid "Know more"
|
873 |
+
msgstr "Saiba mais"
|
874 |
+
|
875 |
+
#: ../dashboard.php:728 ../settings.php:206
|
876 |
+
msgid "WP Cerber Security"
|
877 |
+
msgstr "WP Cerber Security"
|
878 |
+
|
879 |
+
#: ../settings.php:227
|
880 |
+
msgid "Users"
|
881 |
+
msgstr "Usuários"
|
882 |
+
|
883 |
+
#: ../common.php:282
|
884 |
+
msgid "User created"
|
885 |
+
msgstr "Usuário criado"
|
886 |
+
|
887 |
+
#: ../common.php:283
|
888 |
+
msgid "User registered"
|
889 |
+
msgstr "Usuário registrado"
|
890 |
+
|
891 |
+
#: ../common.php:306
|
892 |
+
msgid "reCAPTCHA verification failed"
|
893 |
+
msgstr "A verificação do reCAPTCHA falhou"
|
894 |
+
|
895 |
+
#: ../common.php:307
|
896 |
+
msgid "reCAPTCHA settings are incorrect"
|
897 |
+
msgstr "As configurações do reCAPTCHA estão incorretas"
|
898 |
+
|
899 |
+
#: ../common.php:310
|
900 |
+
msgid "Attempt to access prohibited URL"
|
901 |
+
msgstr "Tentativa de acesso a URL proibido"
|
902 |
+
|
903 |
+
#: ../common.php:312 ../common.php:327
|
904 |
+
msgid "Attempt to log in with prohibited username"
|
905 |
+
msgstr "Tentativa de login com nome de usuário proibido."
|
906 |
+
|
907 |
+
#: ../settings.php:84
|
908 |
+
msgid "Cerber Lab connection"
|
909 |
+
msgstr "Conexão Cerber Lab"
|
910 |
+
|
911 |
+
#: ../settings.php:84
|
912 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
913 |
+
msgstr "Enviar endereço de IP malicioso para o Cerber Lab"
|
914 |
+
|
915 |
+
#: ../settings.php:85
|
916 |
+
msgid "Cerber Lab protocol"
|
917 |
+
msgstr "Protocolo Cerber Lab"
|
918 |
+
|
919 |
+
#: ../settings.php:123
|
920 |
+
msgid "Registration form"
|
921 |
+
msgstr "Formulário de restro"
|
922 |
+
|
923 |
+
#: ../settings.php:124
|
924 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
925 |
+
msgstr "Habilitar reCAPTCHA para o formulário de registro do WooCommerce"
|
926 |
+
|
927 |
+
#: ../settings.php:126
|
928 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
929 |
+
msgstr "Habilitar reCAPTCHA para o formulário de senha perdida do Wordpress"
|
930 |
+
|
931 |
+
#: ../settings.php:127
|
932 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
933 |
+
msgstr "Habilitar reCAPTCHA para o formulário de senha perdida do WooCommerce"
|
934 |
+
|
935 |
+
#: ../settings.php:130
|
936 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
937 |
+
msgstr "Habilitar reCAPTCHA para o formulário de login do WooCommerce"
|
938 |
+
|
939 |
+
#: ../common.php:308
|
940 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
941 |
+
msgstr "A requisição para o serviço Google reCAPTCHA falhou"
|
942 |
+
|
943 |
+
#: ../dashboard.php:1052 ../dashboard.php:1080
|
944 |
+
msgid "View all"
|
945 |
+
msgstr "Ver todos"
|
946 |
+
|
947 |
+
#: ../dashboard.php:1081
|
948 |
+
msgid "Recently locked out IP addresses"
|
949 |
+
msgstr "Endereços de IP recentemente bloqueados"
|
950 |
+
|
951 |
+
#: ../cerber-lab.php:525
|
952 |
+
msgid "OK, nail them all"
|
953 |
+
msgstr "OK, acabe com eles"
|
954 |
+
|
955 |
+
#: ../cerber-lab.php:526
|
956 |
+
msgid "NO, maybe later"
|
957 |
+
msgstr "NÃO, talvez mais tarde"
|
958 |
+
|
959 |
+
#: ../dashboard.php:730 ../dashboard.php:894 ../dashboard.php:1376 ../settings.
|
960 |
+
#: php:211
|
961 |
+
msgid "Dashboard"
|
962 |
+
msgstr "Painel de Controle"
|
963 |
+
|
964 |
+
#: ../cerber-lab.php:523
|
965 |
+
msgid "Want to make WP Cerber even more powerful?"
|
966 |
+
msgstr "Gostaria de fazer o WP Cerber ainda mais poderoso?"
|
967 |
+
|
968 |
+
#: ../cerber-lab.php:524
|
969 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
970 |
+
msgstr "Permita que o WP Cerber envie endereços de IP maliciosos para o Cerber Lab. Isso ajuda os desenvolvedores do plugin a criarem algoritmos para defender o WordPress de novas ameaças e botnets que surgem dia-a-dia. Você pode desabilitar este envio a qualquer momento nas configurações do plugin."
|
971 |
+
|
972 |
+
#: ../dashboard.php:339
|
973 |
+
msgid "IP address"
|
974 |
+
msgstr "Endereço de IP"
|
975 |
+
|
976 |
+
#: ../dashboard.php:339
|
977 |
+
msgid "User login"
|
978 |
+
msgstr "Login do usuário"
|
979 |
+
|
980 |
+
#: ../dashboard.php:339
|
981 |
+
msgid "User ID"
|
982 |
+
msgstr "ID do usuário"
|
983 |
+
|
984 |
+
#: ../dashboard.php:495
|
985 |
+
msgid "Export"
|
986 |
+
msgstr "Exportar"
|
987 |
+
|
988 |
+
#: ../dashboard.php:505
|
989 |
+
msgid "All activities"
|
990 |
+
msgstr "Todas as atividades"
|
991 |
+
|
992 |
+
#: ../dashboard.php:514
|
993 |
+
msgid "Search for IP or username"
|
994 |
+
msgstr "Buscar por IP ou usuário"
|
995 |
+
|
996 |
+
#: ../dashboard.php:514
|
997 |
+
msgid "Filter"
|
998 |
+
msgstr "Filtrar"
|
999 |
+
|
1000 |
+
#: ../dashboard.php:730
|
1001 |
+
msgid "Cerber Dashboard"
|
1002 |
+
msgstr "Painel de Controle do Cerber"
|
1003 |
+
|
1004 |
+
#: ../dashboard.php:732
|
1005 |
+
msgid "Cerber reCAPTCHA settings"
|
1006 |
+
msgstr "Configurações do reCAPTCHA do Cerber"
|
1007 |
+
|
1008 |
+
#: ../dashboard.php:733
|
1009 |
+
msgid "Cerber tools"
|
1010 |
+
msgstr "Ferramentas do Cerber"
|
1011 |
+
|
1012 |
+
#: ../dashboard.php:1289
|
1013 |
+
msgid "Subscribe"
|
1014 |
+
msgstr "Inscrever"
|
1015 |
+
|
1016 |
+
#: ../dashboard.php:1290
|
1017 |
+
msgid "Unsubscribe"
|
1018 |
+
msgstr "Cancelar inscrição"
|
1019 |
+
|
1020 |
+
#: ../dashboard.php:1318
|
1021 |
+
msgid "You've subscribed"
|
1022 |
+
msgstr "Você está inscrito"
|
1023 |
+
|
1024 |
+
#: ../dashboard.php:1321
|
1025 |
+
msgid "You've unsubscribed"
|
1026 |
+
msgstr "Você cancelou sua inscrição"
|
1027 |
+
|
1028 |
+
#: ../wp-cerber.php:2254 ../wp-cerber.php:2255
|
1029 |
+
msgid "A new activity has been recorded"
|
1030 |
+
msgstr "Uma nova atividade foi capturada"
|
1031 |
+
|
1032 |
+
#: ../wp-cerber.php:2500
|
1033 |
+
msgid "User"
|
1034 |
+
msgstr "Usuário"
|
1035 |
+
|
1036 |
+
#: ../wp-cerber.php:2508
|
1037 |
+
msgid "Search string"
|
1038 |
+
msgstr "Termo pesquisado"
|
1039 |
+
|
1040 |
+
#: ../wp-cerber.php:2521
|
1041 |
+
msgid "To unsubscribe click here"
|
1042 |
+
msgstr "Para cancelar sua inscrição, clique aqui"
|
1043 |
+
|
1044 |
+
#: ../settings.php:88
|
1045 |
+
msgid "Preferences"
|
1046 |
+
msgstr "Preferências"
|
1047 |
+
|
1048 |
+
#: ../settings.php:90
|
1049 |
+
msgid "Date format"
|
1050 |
+
msgstr "Formato da data"
|
1051 |
+
|
1052 |
+
#: ../settings.php:90
|
1053 |
+
msgid "if empty, the default format %s will be used"
|
1054 |
+
msgstr "se vazio, o formato padrão %s será usado"
|
1055 |
+
|
1056 |
+
#: ../dashboard.php:890 ../settings.php:146
|
1057 |
+
msgid "Push notifications"
|
1058 |
+
msgstr "Notificações push"
|
1059 |
+
|
1060 |
+
#: ../settings.php:141
|
1061 |
+
msgid "Email notifications"
|
1062 |
+
msgstr "Notificações por email"
|
1063 |
+
|
1064 |
+
#: ../settings.php:143
|
1065 |
+
msgid "Use comma to specify multiple values"
|
1066 |
+
msgstr "Use vírgulas para separar múltiplos valores"
|
1067 |
+
|
1068 |
+
#: ../settings.php:153
|
1069 |
+
msgid "All connected devices"
|
1070 |
+
msgstr "Todos os dispositivos conectados"
|
1071 |
+
|
1072 |
+
#: ../settings.php:154
|
1073 |
+
msgid "No devices found"
|
1074 |
+
msgstr "Nenhum dispositivo encontrado"
|
1075 |
+
|
1076 |
+
#: ../settings.php:156
|
1077 |
+
msgid "Not available"
|
1078 |
+
msgstr "Não disponível"
|
1079 |
+
|
1080 |
+
#: ../common.php:304
|
1081 |
+
msgid "Password reset requested"
|
1082 |
+
msgstr "Redefinição de senha solicitada"
|
1083 |
+
|
1084 |
+
#: ../common.php:328
|
1085 |
+
msgid "Limit on failed reCAPTCHA verifications is reached"
|
1086 |
+
msgstr "Foi atingido o limite de verificações falhas do reCAPTCHA"
|
1087 |
+
|
1088 |
+
#: ../common.php:380
|
1089 |
+
msgid "%s ago"
|
1090 |
+
msgstr "%s atrás"
|
1091 |
+
|
1092 |
+
#: ../settings.php:61
|
1093 |
+
msgid "Apply limit login rules to IP addresses in the White IP Access List"
|
1094 |
+
msgstr "Aplicar regras de limite para login aos endereçoes de IP da Lista Segura"
|
1095 |
+
|
1096 |
+
#: ../settings.php:70
|
1097 |
+
msgid "Display 404 page"
|
1098 |
+
msgstr "Exibir página 404"
|
1099 |
+
|
1100 |
+
#: ../settings.php:121
|
1101 |
+
msgid "Invisible reCAPTCHA"
|
1102 |
+
msgstr "reCAPTCHA invisível"
|
1103 |
+
|
1104 |
+
#: ../settings.php:121
|
1105 |
+
msgid "Enable invisible reCAPTCHA"
|
1106 |
+
msgstr "Habilitar reCAPTCHA invisível"
|
1107 |
+
|
1108 |
+
#: ../settings.php:121
|
1109 |
+
msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
|
1110 |
+
msgstr "(não habilite esta opção a menos que tenha as Chaves do Site e Secreta para esta versão invisível)"
|
1111 |
+
|
1112 |
+
#: ../settings.php:132
|
1113 |
+
msgid "Anti-Spam"
|
1114 |
+
msgstr "Anti-Spam"
|
1115 |
+
|
1116 |
+
#: ../settings.php:132
|
1117 |
+
msgid "Enable reCAPTCHA for WordPress comment form"
|
1118 |
+
msgstr "Habilitar reCAPTCHA para o formulário de comentários do Wordpress"
|
1119 |
+
|
1120 |
+
#: ../settings.php:133
|
1121 |
+
msgid "Disable reCAPTCHA for logged in users"
|
1122 |
+
msgstr "Desabilitar reCAPTCHA para usuários conectados"
|
1123 |
+
|
1124 |
+
#: ../settings.php:135
|
1125 |
+
msgid "Limit attempts"
|
1126 |
+
msgstr "Limitar tentativas"
|
1127 |
+
|
1128 |
+
#: ../settings.php:135
|
1129 |
+
msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
|
1130 |
+
msgstr "Bloquear endereço de IP por %s minutos depois de %s tentativas falhas dentro de %s minutos"
|
1131 |
+
|
1132 |
+
#: ../settings.php:178
|
1133 |
+
msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
|
1134 |
+
msgstr "No modo Fortaleza apenas os IPs da Lista Segura podem se conectar. Sessões ativas de usuários não serão afetadas."
|
1135 |
+
|
1136 |
+
#: ../dashboard.php:339 ../dashboard.php:486
|
1137 |
+
msgid "Event"
|
1138 |
+
msgstr ""
|
1139 |
+
|
1140 |
+
#: ../dashboard.php:1033
|
1141 |
+
msgid "Spam comments denied"
|
1142 |
+
msgstr ""
|
1143 |
+
|
1144 |
+
#: ../dashboard.php:1034
|
1145 |
+
msgid "Malicious IP addresses detected"
|
1146 |
+
msgstr ""
|
1147 |
+
|
1148 |
+
#: ../dashboard.php:1035
|
1149 |
+
msgid "Lockouts occurred"
|
1150 |
+
msgstr ""
|
1151 |
+
|
1152 |
+
#: ../dashboard.php:1036
|
1153 |
+
msgid "Locked out IP now"
|
1154 |
+
msgstr ""
|
1155 |
+
|
1156 |
+
#: ../dashboard.php:1060
|
1157 |
+
msgid "All suspicious activity"
|
1158 |
+
msgstr ""
|
1159 |
+
|
1160 |
+
#: ../wp-cerber.php:931
|
1161 |
+
msgid "You are not allowed to register."
|
1162 |
+
msgstr ""
|
1163 |
+
|
1164 |
+
#: ../common.php:293
|
1165 |
+
msgid "Spam comment denied"
|
1166 |
+
msgstr ""
|
1167 |
+
|
1168 |
+
#: ../common.php:299
|
1169 |
+
msgid "by Cerber Lab"
|
1170 |
+
msgstr ""
|
1171 |
+
|
1172 |
+
#: ../common.php:314
|
1173 |
+
msgid "Attempt to log in denied"
|
1174 |
+
msgstr ""
|
1175 |
+
|
1176 |
+
#: ../common.php:315
|
1177 |
+
msgid "Attempt to register denied"
|
1178 |
+
msgstr ""
|
1179 |
+
|
1180 |
+
#: ../dashboard.php:1032
|
1181 |
+
msgid "Malicious activities mitigated"
|
1182 |
+
msgstr ""
|
1183 |
+
|
languages/wp-cerber-ru_RU.mo
ADDED
Binary file
|
languages/wp-cerber-ru_RU.po
ADDED
@@ -0,0 +1,1127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Cerber Security & Limit Login Attempts - Stable (latest release) in Russian
|
2 |
+
# This file is distributed under the same license as the Plugins - Cerber Security & Limit Login Attempts - Stable (latest release) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"PO-Revision-Date: 2017-04-21 04:20:49+0000\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
10 |
+
"X-Generator: GlotPress/2.4.0-alpha\n"
|
11 |
+
"Language: ru\n"
|
12 |
+
"Project-Id-Version: Plugins - Cerber Security & Limit Login Attempts - Stable (latest release)\n"
|
13 |
+
|
14 |
+
#: settings.php:155
|
15 |
+
msgid "Not available"
|
16 |
+
msgstr "Недоступно"
|
17 |
+
|
18 |
+
#: settings.php:153
|
19 |
+
msgid "No devices found"
|
20 |
+
msgstr "Устройства не найдены"
|
21 |
+
|
22 |
+
#: settings.php:152
|
23 |
+
msgid "All connected devices"
|
24 |
+
msgstr "Все подключенные устройства"
|
25 |
+
|
26 |
+
#: settings.php:142
|
27 |
+
msgid "Use comma to specify multiple values"
|
28 |
+
msgstr "Используйте запятую для разделения множественных значений"
|
29 |
+
|
30 |
+
#: settings.php:140
|
31 |
+
msgid "Email notifications"
|
32 |
+
msgstr "Уведомления по эл.почте"
|
33 |
+
|
34 |
+
#: settings.php:71
|
35 |
+
msgid "Display 404 page"
|
36 |
+
msgstr "Показывать страницу 404"
|
37 |
+
|
38 |
+
#: dashboard.php:872 settings.php:145
|
39 |
+
msgid "Push notifications"
|
40 |
+
msgstr "Push уведомления"
|
41 |
+
|
42 |
+
#: dashboard.php:485
|
43 |
+
msgid "Search for IP or username"
|
44 |
+
msgstr "Поиск IP или имени пользователя"
|
45 |
+
|
46 |
+
#: dashboard.php:1236
|
47 |
+
msgid "Unsubscribe"
|
48 |
+
msgstr "Отменить подписку"
|
49 |
+
|
50 |
+
#: dashboard.php:337
|
51 |
+
msgid "User login"
|
52 |
+
msgstr "Имя пользователя"
|
53 |
+
|
54 |
+
#: dashboard.php:337
|
55 |
+
msgid "IP address"
|
56 |
+
msgstr "IP адрес"
|
57 |
+
|
58 |
+
#: dashboard.php:478
|
59 |
+
msgid "All activities"
|
60 |
+
msgstr "Вся активность"
|
61 |
+
|
62 |
+
#: dashboard.php:469
|
63 |
+
msgid "Export"
|
64 |
+
msgstr "Экспорт"
|
65 |
+
|
66 |
+
#: dashboard.php:337
|
67 |
+
msgid "User ID"
|
68 |
+
msgstr "ID пользователя"
|
69 |
+
|
70 |
+
#: dashboard.php:707
|
71 |
+
msgid "Cerber reCAPTCHA settings"
|
72 |
+
msgstr "Настройки Cerber reCAPTCHA"
|
73 |
+
|
74 |
+
#: dashboard.php:705
|
75 |
+
msgid "Cerber Dashboard"
|
76 |
+
msgstr "Консоль Cerber"
|
77 |
+
|
78 |
+
#: dashboard.php:485
|
79 |
+
msgid "Filter"
|
80 |
+
msgstr "Фильтр"
|
81 |
+
|
82 |
+
#: dashboard.php:708
|
83 |
+
msgid "Cerber tools"
|
84 |
+
msgstr "Инструменты Cerber"
|
85 |
+
|
86 |
+
#: dashboard.php:1235
|
87 |
+
msgid "Subscribe"
|
88 |
+
msgstr "Подписаться"
|
89 |
+
|
90 |
+
#: dashboard.php:1264
|
91 |
+
msgid "You've subscribed"
|
92 |
+
msgstr "Вы подписались"
|
93 |
+
|
94 |
+
#: dashboard.php:1267
|
95 |
+
msgid "You've unsubscribed"
|
96 |
+
msgstr "Подписка отменена"
|
97 |
+
|
98 |
+
#: wp-cerber.php:1960 wp-cerber.php:1961
|
99 |
+
msgid "A new activity has been recorded"
|
100 |
+
msgstr "Отмечена новая активность"
|
101 |
+
|
102 |
+
#: settings.php:96
|
103 |
+
msgid "if empty, the default format %s will be used"
|
104 |
+
msgstr "Если пусто, будет использован формат по умолчанию %s"
|
105 |
+
|
106 |
+
#: wp-cerber.php:2172
|
107 |
+
msgid "User"
|
108 |
+
msgstr "Пользователь"
|
109 |
+
|
110 |
+
#: wp-cerber.php:2180
|
111 |
+
msgid "Search string"
|
112 |
+
msgstr "Строка поиска"
|
113 |
+
|
114 |
+
#: wp-cerber.php:2193
|
115 |
+
msgid "To unsubscribe click here"
|
116 |
+
msgstr "Для отмены подписки нажмите здесь"
|
117 |
+
|
118 |
+
#: settings.php:94
|
119 |
+
msgid "Preferences"
|
120 |
+
msgstr "Настройки"
|
121 |
+
|
122 |
+
#: settings.php:96
|
123 |
+
msgid "Date format"
|
124 |
+
msgstr "Формат даты"
|
125 |
+
|
126 |
+
#. Author of the plugin/theme
|
127 |
+
msgid "Gregory"
|
128 |
+
msgstr "Gregory"
|
129 |
+
|
130 |
+
#. Description of the plugin/theme
|
131 |
+
msgid "Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Feel free to contact developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
132 |
+
msgstr "Защищает сайт от атак перебора, ботов, хакеров. Антиспам защита с reCAPTCHA. Всесторонний контроль активности пользователей. Ограничение входа по IP адресам. Ограничение попыток входа. Не стесняйтесь контактировать с разработчиком на сайте <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
133 |
+
|
134 |
+
#: dashboard.php:705 dashboard.php:876 dashboard.php:1320 settings.php:217
|
135 |
+
msgid "Dashboard"
|
136 |
+
msgstr "Консоль"
|
137 |
+
|
138 |
+
#: settings.php:134
|
139 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
140 |
+
msgstr "Включить reCAPTCHA для формы входа WooCommerce"
|
141 |
+
|
142 |
+
#: settings.php:133
|
143 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
144 |
+
msgstr "Включить reCAPTCHA для формы входа WordPress"
|
145 |
+
|
146 |
+
#: settings.php:131
|
147 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
148 |
+
msgstr "Включить reCAPTCHA для формы восстановления пароля WooCommerce"
|
149 |
+
|
150 |
+
#: settings.php:130
|
151 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
152 |
+
msgstr "Включить reCAPTCHA для формы восстановления пароля WordPress"
|
153 |
+
|
154 |
+
#: settings.php:128
|
155 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
156 |
+
msgstr "Включить reCAPTCHA для формы регистрации WooCommerce"
|
157 |
+
|
158 |
+
#: settings.php:127
|
159 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
160 |
+
msgstr "Включить reCAPTCHA для формы регистрации WordPress"
|
161 |
+
|
162 |
+
#: settings.php:127
|
163 |
+
msgid "Registration form"
|
164 |
+
msgstr "Форма регистрации"
|
165 |
+
|
166 |
+
#: settings.php:91
|
167 |
+
msgid "Cerber Lab protocol"
|
168 |
+
msgstr "Cerber Lab protocol"
|
169 |
+
|
170 |
+
#: settings.php:90
|
171 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
172 |
+
msgstr "Посылать вредоносные IP адреса в Cerber Lab"
|
173 |
+
|
174 |
+
#: settings.php:90
|
175 |
+
msgid "Cerber Lab connection"
|
176 |
+
msgstr "Подключение Cerber Lab"
|
177 |
+
|
178 |
+
#: dashboard.php:1027
|
179 |
+
msgid "Recently locked out IP addresses"
|
180 |
+
msgstr "Недавно заблокированые IP адреса"
|
181 |
+
|
182 |
+
#: dashboard.php:1011 dashboard.php:1026
|
183 |
+
msgid "View all"
|
184 |
+
msgstr "Просмотреть все"
|
185 |
+
|
186 |
+
#: dashboard.php:703 settings.php:212
|
187 |
+
msgid "WP Cerber Security"
|
188 |
+
msgstr "WP Cerber Security"
|
189 |
+
|
190 |
+
#: dashboard.php:671
|
191 |
+
msgid "Add network to the Black List"
|
192 |
+
msgstr "Добавить сеть в черный список"
|
193 |
+
|
194 |
+
#: dashboard.php:657
|
195 |
+
msgid "Network:"
|
196 |
+
msgstr "Сеть:"
|
197 |
+
|
198 |
+
#: dashboard.php:150 dashboard.php:158
|
199 |
+
msgid "Incorrect IP address or IP range"
|
200 |
+
msgstr "Неверный IP адрес или диапазон адресов"
|
201 |
+
|
202 |
+
#: common.php:360
|
203 |
+
msgid "ago"
|
204 |
+
msgstr "назад"
|
205 |
+
|
206 |
+
#: common.php:354
|
207 |
+
msgid "seconds"
|
208 |
+
msgstr "секунд"
|
209 |
+
|
210 |
+
#: common.php:352
|
211 |
+
msgid "hours"
|
212 |
+
msgstr "часов"
|
213 |
+
|
214 |
+
#: common.php:350
|
215 |
+
msgid "months"
|
216 |
+
msgstr "месяцев"
|
217 |
+
|
218 |
+
#: common.php:349
|
219 |
+
msgid "years"
|
220 |
+
msgstr "лет"
|
221 |
+
|
222 |
+
#: common.php:346
|
223 |
+
msgid "second"
|
224 |
+
msgstr "секунда"
|
225 |
+
|
226 |
+
#: common.php:345
|
227 |
+
msgid "minute"
|
228 |
+
msgstr "минута"
|
229 |
+
|
230 |
+
#: common.php:344
|
231 |
+
msgid "hour"
|
232 |
+
msgstr "час"
|
233 |
+
|
234 |
+
#: common.php:343
|
235 |
+
msgid "day"
|
236 |
+
msgstr "день"
|
237 |
+
|
238 |
+
#: common.php:342
|
239 |
+
msgid "month"
|
240 |
+
msgstr "месяц"
|
241 |
+
|
242 |
+
#: common.php:341
|
243 |
+
msgid "year"
|
244 |
+
msgstr "год"
|
245 |
+
|
246 |
+
#: common.php:273
|
247 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
248 |
+
msgstr "Запрос к сервису Google reCAPTCHA не удался"
|
249 |
+
|
250 |
+
#: cerber-lab.php:418
|
251 |
+
msgid "NO, maybe later"
|
252 |
+
msgstr "НЕТ, возможно позже"
|
253 |
+
|
254 |
+
#: cerber-lab.php:417
|
255 |
+
msgid "OK, nail them all"
|
256 |
+
msgstr "ОК, прибьем их всех"
|
257 |
+
|
258 |
+
#: cerber-lab.php:416
|
259 |
+
msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
|
260 |
+
msgstr "Разрешить WP Cerber посылать заблокированные IP адреса в Cerber Lab. Это помогает команде плагина разрабатывать новые алгоритмы для WP Cerber, которые будут защищать WordPress против новых угроз и ботнетов появляюшихся каждый день. Вы всегда можете отключить отсылку в настройках плагина, в любой момент."
|
261 |
+
|
262 |
+
#: cerber-lab.php:415
|
263 |
+
msgid "Want to make WP Cerber even more powerful?"
|
264 |
+
msgstr "Хотите сделать WP Cerber еще мощнее ?"
|
265 |
+
|
266 |
+
#. #-#-#-#-# tmp-wp-cerber.pot (WP Cerber 4.5) #-#-#-#-#
|
267 |
+
#. Plugin URI of the plugin/theme
|
268 |
+
#. #-#-#-#-# tmp-wp-cerber.pot (WP Cerber 4.5) #-#-#-#-#
|
269 |
+
#. Author URI of the plugin/theme
|
270 |
+
msgid "http://wpcerber.com"
|
271 |
+
msgstr "http://wpcerber.com"
|
272 |
+
|
273 |
+
#: wp-cerber.php:2281
|
274 |
+
msgid "Import settings"
|
275 |
+
msgstr "Импорт настроек"
|
276 |
+
|
277 |
+
#: wp-cerber.php:2274
|
278 |
+
msgid "It's important to check security settings."
|
279 |
+
msgstr "Важно проверить настройки безопасности."
|
280 |
+
|
281 |
+
#: wp-cerber.php:2272
|
282 |
+
msgid "Your IP address is added to the"
|
283 |
+
msgstr "Ваш IP адрес добавлен к"
|
284 |
+
|
285 |
+
#: wp-cerber.php:2255
|
286 |
+
msgid "Can't activate WP Cerber due to a database error."
|
287 |
+
msgstr "Невозможно активировать плагин WP Cerber из-за ошибки в базе данных."
|
288 |
+
|
289 |
+
#: wp-cerber.php:2250
|
290 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
291 |
+
msgstr "WP Cerber требует WordPress версии %s или выше. У вас версия"
|
292 |
+
|
293 |
+
#: wp-cerber.php:2246
|
294 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
295 |
+
msgstr "WP Cerber требует PHP версии %s или выше. У вас версия"
|
296 |
+
|
297 |
+
#: wp-cerber.php:1976
|
298 |
+
msgid "This message was sent by"
|
299 |
+
msgstr "Это сообщение было отправлено"
|
300 |
+
|
301 |
+
#: wp-cerber.php:1956
|
302 |
+
msgid "New Custom login URL"
|
303 |
+
msgstr "Новый URL для входа на сайт"
|
304 |
+
|
305 |
+
#: wp-cerber.php:1951
|
306 |
+
msgid "Change notification settings"
|
307 |
+
msgstr "Изменить настройки уведомлений"
|
308 |
+
|
309 |
+
#: wp-cerber.php:1950 wp-cerber.php:2271
|
310 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
311 |
+
msgstr "WP Cerber активен и начал защищать ваш сайт"
|
312 |
+
|
313 |
+
#: wp-cerber.php:1949
|
314 |
+
msgid "The WP Cerber security plugin is now active"
|
315 |
+
msgstr "WP Cerber плагин безопасности активен"
|
316 |
+
|
317 |
+
#: wp-cerber.php:1945
|
318 |
+
msgid "From country"
|
319 |
+
msgstr "Из страны"
|
320 |
+
|
321 |
+
#: wp-cerber.php:1942
|
322 |
+
msgid "From IP address"
|
323 |
+
msgstr "С IP адреса"
|
324 |
+
|
325 |
+
#: wp-cerber.php:1941
|
326 |
+
msgid "By user"
|
327 |
+
msgstr "По пользователю"
|
328 |
+
|
329 |
+
#: wp-cerber.php:1935
|
330 |
+
msgid "Not logged in"
|
331 |
+
msgstr "Нет авторизации"
|
332 |
+
|
333 |
+
#: wp-cerber.php:1932 wp-cerber.php:1933
|
334 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
335 |
+
msgstr "WP Cerber плагин деактивирован"
|
336 |
+
|
337 |
+
#: wp-cerber.php:1929 wp-cerber.php:1940
|
338 |
+
msgid "Website"
|
339 |
+
msgstr "Сайт"
|
340 |
+
|
341 |
+
#: wp-cerber.php:1927
|
342 |
+
msgid "Hi!"
|
343 |
+
msgstr "Привет!"
|
344 |
+
|
345 |
+
#: wp-cerber.php:1926 wp-cerber.php:1928
|
346 |
+
msgid "A new version of WP Cerber is available to install"
|
347 |
+
msgstr "Доступна новая версия WP Cerber!"
|
348 |
+
|
349 |
+
#: wp-cerber.php:1923
|
350 |
+
msgid "View lockouts in dashboard"
|
351 |
+
msgstr "Просмотреть список заблокированных IP"
|
352 |
+
|
353 |
+
#: wp-cerber.php:1922
|
354 |
+
msgid "View activity for this IP"
|
355 |
+
msgstr "Посмотреть активность для этого IP"
|
356 |
+
|
357 |
+
#: wp-cerber.php:1920
|
358 |
+
msgid "Last lockout was added: %s for IP %s"
|
359 |
+
msgstr "Последняя блокировка была добавлена %s для IP %s"
|
360 |
+
|
361 |
+
#: wp-cerber.php:1919
|
362 |
+
msgid "Number of active lockouts"
|
363 |
+
msgstr "Число активных блокировок на данный момент"
|
364 |
+
|
365 |
+
#: wp-cerber.php:1917
|
366 |
+
msgid "Number of lockouts is increasing"
|
367 |
+
msgstr "Число блокировок увеличилось"
|
368 |
+
|
369 |
+
#: wp-cerber.php:1914
|
370 |
+
msgid "unspecified"
|
371 |
+
msgstr "неуказано"
|
372 |
+
|
373 |
+
#: wp-cerber.php:1892 wp-cerber.php:2192
|
374 |
+
msgid "View activity in dashboard"
|
375 |
+
msgstr "Просмотреть журнал активности"
|
376 |
+
|
377 |
+
#: wp-cerber.php:1891
|
378 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
379 |
+
msgstr "Последняя неудачная попытка была в %s с IP адреса %s с логином %s."
|
380 |
+
|
381 |
+
#: wp-cerber.php:1890
|
382 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
383 |
+
msgstr "Режим Цитадель активирован после %d неудачных попыток за %d минут."
|
384 |
+
|
385 |
+
#: wp-cerber.php:1888
|
386 |
+
msgid "Citadel mode is activated"
|
387 |
+
msgstr "Активирован режим Цитадель"
|
388 |
+
|
389 |
+
#: wp-cerber.php:1870
|
390 |
+
msgid "WP Cerber notify"
|
391 |
+
msgstr "Уведомление WP Cerber"
|
392 |
+
|
393 |
+
#: common.php:286
|
394 |
+
msgid "Limit on login attempts is reached"
|
395 |
+
msgstr "Количество попыток исчерпано"
|
396 |
+
|
397 |
+
#: common.php:287
|
398 |
+
msgid "Attempt to access"
|
399 |
+
msgstr "Попытка доступа к"
|
400 |
+
|
401 |
+
#: wp-cerber.php:742
|
402 |
+
msgid "Username is not allowed. Please choose another one."
|
403 |
+
msgstr "Имя пользователя недопустимо. Выберите другое."
|
404 |
+
|
405 |
+
#: wp-cerber.php:613
|
406 |
+
msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
|
407 |
+
msgstr "<strong>ОШИБКА</strong>: Пароль введенный для пользователя %s is некорректен."
|
408 |
+
|
409 |
+
#: wp-cerber.php:496
|
410 |
+
msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
|
411 |
+
msgstr "Антибот проверка неудачна. Пожалуйста тыкните в квадратную отметку блока reCAPTCHA ниже"
|
412 |
+
|
413 |
+
#: common.php:81 common.php:134 settings.php:479 wp-cerber.php:602
|
414 |
+
#: wp-cerber.php:734 wp-cerber.php:741 wp-cerber.php:765
|
415 |
+
msgid "ERROR:"
|
416 |
+
msgstr "ОШИБКА:"
|
417 |
+
|
418 |
+
#: wp-cerber.php:214
|
419 |
+
msgid "You have only one attempt remaining."
|
420 |
+
msgid_plural "You have %d attempts remaining."
|
421 |
+
msgstr[0] "У вас есть только одна попытка для входа"
|
422 |
+
msgstr[1] "У вас осталось %d попытки для входа."
|
423 |
+
msgstr[2] "У вас осталось %d попыток для входа."
|
424 |
+
|
425 |
+
#: wp-cerber.php:196
|
426 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
427 |
+
msgstr "Вход невозможен. Слишком много ошибочных попыток. Попробуйте войти через %d минут."
|
428 |
+
|
429 |
+
#: wp-cerber.php:190
|
430 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
431 |
+
msgstr "Вход на сайт невозможен. Обратитесь к администратору сайта."
|
432 |
+
|
433 |
+
#: whois.php:211
|
434 |
+
msgid "Unknown"
|
435 |
+
msgstr "Неизвестен"
|
436 |
+
|
437 |
+
#: settings.php:501
|
438 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
439 |
+
msgstr "<strong>ОШИБКА</strong>: Введите действительный адрес эл.почты."
|
440 |
+
|
441 |
+
#: settings.php:426
|
442 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
443 |
+
msgstr "Внимание! Вы изменили URL страницы авторизации. Новый адрес"
|
444 |
+
|
445 |
+
#: settings.php:342
|
446 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
447 |
+
msgstr "Активировать после %s неудачных авторизаций за последние %s минут"
|
448 |
+
|
449 |
+
#: settings.php:337
|
450 |
+
msgid "Notify admin if the number of active lockouts above"
|
451 |
+
msgstr "Уведомить администратора, если число заблокированных IP более"
|
452 |
+
|
453 |
+
#: settings.php:330
|
454 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
455 |
+
msgstr "Увеличить длительность блокировки до %s часов после %s блокировок в течение последних %s часов"
|
456 |
+
|
457 |
+
#: settings.php:325
|
458 |
+
msgid "%s allowed retries in %s minutes"
|
459 |
+
msgstr "%s попыток разрешено в течении %s минут"
|
460 |
+
|
461 |
+
#: settings.php:238
|
462 |
+
msgid "Help"
|
463 |
+
msgstr "Помощь"
|
464 |
+
|
465 |
+
#: cerber-tools.php:40 dashboard.php:708
|
466 |
+
msgid "Tools"
|
467 |
+
msgstr "Инструменты"
|
468 |
+
|
469 |
+
#: dashboard.php:707
|
470 |
+
msgid "reCAPTCHA"
|
471 |
+
msgstr "reCAPTCHA"
|
472 |
+
|
473 |
+
#: settings.php:231
|
474 |
+
msgid "Users"
|
475 |
+
msgstr "Пользователи"
|
476 |
+
|
477 |
+
#: settings.php:229 wp-cerber.php:2279
|
478 |
+
msgid "Hardening"
|
479 |
+
msgstr "Панцирь"
|
480 |
+
|
481 |
+
#: settings.php:224 wp-cerber.php:2277
|
482 |
+
msgid "Main Settings"
|
483 |
+
msgstr "Главные настройки"
|
484 |
+
|
485 |
+
#: cerber-lab.php:419 settings.php:190
|
486 |
+
msgid "Know more"
|
487 |
+
msgstr "Узнать больше"
|
488 |
+
|
489 |
+
#: settings.php:189
|
490 |
+
msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
|
491 |
+
msgstr "Перед использованием reCAPTCHA вам нужно получить ключ сайта и секретный ключ на сайте Google"
|
492 |
+
|
493 |
+
#: settings.php:184
|
494 |
+
msgid "These settings do not affect hosts from the "
|
495 |
+
msgstr "Эти настройки не применяются к адресам из"
|
496 |
+
|
497 |
+
#: settings.php:177
|
498 |
+
msgid "In Citadel mode nobody is able to login. Active user's sessions will not be affected."
|
499 |
+
msgstr "В режиме Цитадель никто не может войти. Активные сессии пользователей не затрагиваются."
|
500 |
+
|
501 |
+
#: settings.php:173
|
502 |
+
msgid "Be careful when enabling this options. If you forget the custom login URL you will not be able to login."
|
503 |
+
msgstr "Будте внимательны при установке этих параметров. Если вы забудете URL страницы авторизации вы не сможете войти в панель управления."
|
504 |
+
|
505 |
+
#: settings.php:170
|
506 |
+
msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
|
507 |
+
msgstr "Для использования этой настройки необходимо активировать Постоянные ссылки в настройках сайта."
|
508 |
+
|
509 |
+
#: settings.php:166
|
510 |
+
msgid "Make your protection smarter!"
|
511 |
+
msgstr "Сделайте защиту от злоумышленников еще умнее"
|
512 |
+
|
513 |
+
#: settings.php:133
|
514 |
+
msgid "Login form"
|
515 |
+
msgstr "Форма входа"
|
516 |
+
|
517 |
+
#: settings.php:130
|
518 |
+
msgid "Lost password form"
|
519 |
+
msgstr "Форма восстановления пароля"
|
520 |
+
|
521 |
+
#: settings.php:125
|
522 |
+
msgid "Secret key"
|
523 |
+
msgstr "Секретный ключ"
|
524 |
+
|
525 |
+
#: settings.php:124
|
526 |
+
msgid "Site key"
|
527 |
+
msgstr "Ключ сайта"
|
528 |
+
|
529 |
+
#: cerber-tools.php:195
|
530 |
+
msgid "reCAPTCHA settings"
|
531 |
+
msgstr "Настройки reCAPTCHA"
|
532 |
+
|
533 |
+
#: settings.php:117
|
534 |
+
msgid "in minutes (leave empty to use default WP value)"
|
535 |
+
msgstr "В минутах (оставьте пустым для значения WP по умолчанию)"
|
536 |
+
|
537 |
+
#: settings.php:117
|
538 |
+
msgid "User session expire"
|
539 |
+
msgstr "Длительность сессии пользователя"
|
540 |
+
|
541 |
+
#: settings.php:116
|
542 |
+
msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
|
543 |
+
msgstr "Имена пользователей из этого списка не разрешены для входа или регистрации. Любой IP адрес пытающийся использовать эти имена будет автоматически заблокирован. Испольуйте запятую как разделитель."
|
544 |
+
|
545 |
+
#: settings.php:116
|
546 |
+
msgid "Prohibited usernames"
|
547 |
+
msgstr "Запрещеные имена пользователей"
|
548 |
+
|
549 |
+
#: settings.php:115
|
550 |
+
msgid "User related settings"
|
551 |
+
msgstr "Настройки пользователей"
|
552 |
+
|
553 |
+
#: settings.php:107
|
554 |
+
msgid "Block access to the WordPress REST API"
|
555 |
+
msgstr "Закрыть доступ к функциям WordPress REST API"
|
556 |
+
|
557 |
+
#: settings.php:107
|
558 |
+
msgid "Disable REST API"
|
559 |
+
msgstr "Отключить REST API"
|
560 |
+
|
561 |
+
#: settings.php:106
|
562 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
563 |
+
msgstr "Закрыть доступ к RSS, Atom и RDF фидам"
|
564 |
+
|
565 |
+
#: settings.php:106
|
566 |
+
msgid "Disable feeds"
|
567 |
+
msgstr "Отключить фиды"
|
568 |
+
|
569 |
+
#: settings.php:105
|
570 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
571 |
+
msgstr "Закрыть доступ к функциям XML-RPC, включая Pingback и Trackback"
|
572 |
+
|
573 |
+
#: settings.php:105
|
574 |
+
msgid "Disable XML-RPC"
|
575 |
+
msgstr "Отключить XML-RPC"
|
576 |
+
|
577 |
+
#: settings.php:104
|
578 |
+
msgid "Block access to the pages like /?author=n"
|
579 |
+
msgstr "Закрыть доступ к страницам авторов по номеру пользователя /?author=n"
|
580 |
+
|
581 |
+
#: settings.php:104
|
582 |
+
msgid "Stop user enumeration"
|
583 |
+
msgstr "Заблокировать сбор имен"
|
584 |
+
|
585 |
+
#: settings.php:103
|
586 |
+
msgid "Hardening WordPress"
|
587 |
+
msgstr "Усиление WordPress"
|
588 |
+
|
589 |
+
#: settings.php:92
|
590 |
+
msgid "Write failed login attempts to the file"
|
591 |
+
msgstr "Записывать попытки входа в файл"
|
592 |
+
|
593 |
+
#: settings.php:92
|
594 |
+
msgid "Use file"
|
595 |
+
msgstr "Использовать файл"
|
596 |
+
|
597 |
+
#: settings.php:95
|
598 |
+
msgid "Retrieve extra WHOIS information for IP"
|
599 |
+
msgstr "Получить дополнительную информацию об IP используя WHOIS"
|
600 |
+
|
601 |
+
#: settings.php:95
|
602 |
+
msgid "Drill down IP"
|
603 |
+
msgstr "Изучать IP"
|
604 |
+
|
605 |
+
#: common.php:351 settings.php:89
|
606 |
+
msgid "days"
|
607 |
+
msgstr "дней"
|
608 |
+
|
609 |
+
#: settings.php:89
|
610 |
+
msgid "Keep records for"
|
611 |
+
msgstr "Хранить записи не более"
|
612 |
+
|
613 |
+
#: settings.php:143
|
614 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
615 |
+
msgstr "разрешенное число писем с уведомлениями в час (0 - без ограничений)"
|
616 |
+
|
617 |
+
#: settings.php:143
|
618 |
+
msgid "Notification limit"
|
619 |
+
msgstr "Ограничение уведомлений"
|
620 |
+
|
621 |
+
#: settings.php:142
|
622 |
+
msgid "if empty, the admin email %s will be used"
|
623 |
+
msgstr "Если пусто, то будет использован адрес администратора %s"
|
624 |
+
|
625 |
+
#: settings.php:142
|
626 |
+
msgid "Email Address"
|
627 |
+
msgstr "Адрес email"
|
628 |
+
|
629 |
+
#: settings.php:81 settings.php:339
|
630 |
+
msgid "Click to send test"
|
631 |
+
msgstr "Кликните, чтобы протестировать отправку"
|
632 |
+
|
633 |
+
#: settings.php:81
|
634 |
+
msgid "Send notification to admin email"
|
635 |
+
msgstr "Отправить уведомление на адрес email администратора сайта"
|
636 |
+
|
637 |
+
#: settings.php:79
|
638 |
+
msgid "Duration"
|
639 |
+
msgstr "Длительность"
|
640 |
+
|
641 |
+
#: settings.php:78
|
642 |
+
msgid "Threshold"
|
643 |
+
msgstr "Порог"
|
644 |
+
|
645 |
+
#: settings.php:75
|
646 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
647 |
+
msgstr "Заблокировать доступ к wp-login.php и возвращать HTTP 404 Страница не найдена"
|
648 |
+
|
649 |
+
#: settings.php:75
|
650 |
+
msgid "Disable wp-login.php"
|
651 |
+
msgstr "Доступ к wp-login.php"
|
652 |
+
|
653 |
+
#: settings.php:74
|
654 |
+
msgid "must not overlap with the existing pages or posts slug"
|
655 |
+
msgstr "не должно совпадать с URL существующих страниц или постов"
|
656 |
+
|
657 |
+
#: settings.php:74
|
658 |
+
msgid "Custom login URL"
|
659 |
+
msgstr "Адрес страницы авторизации"
|
660 |
+
|
661 |
+
#: settings.php:73
|
662 |
+
msgid "Custom login page"
|
663 |
+
msgstr "Смена URL страницы авторизации"
|
664 |
+
|
665 |
+
#: settings.php:70
|
666 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
667 |
+
msgstr "Блокировать IP при любом запросе wp-login.php"
|
668 |
+
|
669 |
+
#: settings.php:70
|
670 |
+
msgid "Request wp-login.php"
|
671 |
+
msgstr "Запрос wp-login.php"
|
672 |
+
|
673 |
+
#: settings.php:69
|
674 |
+
msgid "Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request"
|
675 |
+
msgstr "Отключить автоматическую переадресацию при запросе /wp-admin/ неавторизованным пользователем"
|
676 |
+
|
677 |
+
#: settings.php:69
|
678 |
+
msgid "Redirect dashboard requests"
|
679 |
+
msgstr "Запросы к панели управления"
|
680 |
+
|
681 |
+
#: settings.php:68
|
682 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
683 |
+
msgstr "Блокировать IP при попытке авторизации с логином несуществующего пользователя"
|
684 |
+
|
685 |
+
#: settings.php:68
|
686 |
+
msgid "Non-existent users"
|
687 |
+
msgstr "Несуществующие пользователи"
|
688 |
+
|
689 |
+
#: settings.php:67
|
690 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
691 |
+
msgstr "Всегда блокировать подсеть класса С вместо IP адреса"
|
692 |
+
|
693 |
+
#: settings.php:67
|
694 |
+
msgid "Block subnet"
|
695 |
+
msgstr "Блокировка подсети"
|
696 |
+
|
697 |
+
#: settings.php:66
|
698 |
+
msgid "Proactive security rules"
|
699 |
+
msgstr "Проактивные правила безопасности"
|
700 |
+
|
701 |
+
#: settings.php:64
|
702 |
+
msgid "My site is behind a reverse proxy"
|
703 |
+
msgstr "Мой сайт подключен к сети через прокси-сервер"
|
704 |
+
|
705 |
+
#: settings.php:64
|
706 |
+
msgid "Site connection"
|
707 |
+
msgstr "Подключение к сети"
|
708 |
+
|
709 |
+
#: settings.php:63 settings.php:81 settings.php:234 wp-cerber.php:2280
|
710 |
+
msgid "Notifications"
|
711 |
+
msgstr "Уведомления"
|
712 |
+
|
713 |
+
#: settings.php:62
|
714 |
+
msgid "Aggressive lockout"
|
715 |
+
msgstr "Ужесточение"
|
716 |
+
|
717 |
+
#: common.php:353 settings.php:61 settings.php:79
|
718 |
+
msgid "minutes"
|
719 |
+
msgstr "минут"
|
720 |
+
|
721 |
+
#: settings.php:61
|
722 |
+
msgid "Lockout duration"
|
723 |
+
msgstr "Длительность блокировки"
|
724 |
+
|
725 |
+
#: settings.php:60
|
726 |
+
msgid "Attempts"
|
727 |
+
msgstr "Попытки"
|
728 |
+
|
729 |
+
#: settings.php:59
|
730 |
+
msgid "Limit login attempts"
|
731 |
+
msgstr "Ограничение числа попыток авторизации"
|
732 |
+
|
733 |
+
#: dashboard.php:653
|
734 |
+
msgid "Abuse email:"
|
735 |
+
msgstr "Адрес email для жалоб:"
|
736 |
+
|
737 |
+
#: dashboard.php:1196
|
738 |
+
msgid "Update to version %s of WP Cerber"
|
739 |
+
msgstr "Обновить WP Cerber до версии %s"
|
740 |
+
|
741 |
+
#: dashboard.php:1190
|
742 |
+
msgid "New version is available"
|
743 |
+
msgstr "Доступна новая версия"
|
744 |
+
|
745 |
+
#: dashboard.php:1134
|
746 |
+
msgid "View Activity"
|
747 |
+
msgstr "Что происходит?"
|
748 |
+
|
749 |
+
#: dashboard.php:1133
|
750 |
+
msgid "Deactivate"
|
751 |
+
msgstr "Деактивировать"
|
752 |
+
|
753 |
+
#: dashboard.php:1132
|
754 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
755 |
+
msgstr "Внимание! Режим Цитадель активен. Авторизация на сайте заблокирована."
|
756 |
+
|
757 |
+
#: dashboard.php:1079
|
758 |
+
msgid "Donate"
|
759 |
+
msgstr "Поддержите разработку"
|
760 |
+
|
761 |
+
#: dashboard.php:1060
|
762 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
763 |
+
msgstr "не затронет настройки URL страницы авторизации и списки доступа"
|
764 |
+
|
765 |
+
#: dashboard.php:1054 dashboard.php:1450
|
766 |
+
msgid "Are you sure?"
|
767 |
+
msgstr "Вы уверены?"
|
768 |
+
|
769 |
+
#: dashboard.php:1052
|
770 |
+
msgid "Load default settings"
|
771 |
+
msgstr "Загрузить настройки"
|
772 |
+
|
773 |
+
#: dashboard.php:1050
|
774 |
+
msgid "You can easily load default recommended settings using button below"
|
775 |
+
msgstr "Вы можете загрузить рекомендованные настройки с помощью всего одной кнопки"
|
776 |
+
|
777 |
+
#: dashboard.php:1049
|
778 |
+
msgid "Confused about some settings?"
|
779 |
+
msgstr "Сомневаетесь какие настройки оптимальны?"
|
780 |
+
|
781 |
+
#: dashboard.php:878 settings.php:222
|
782 |
+
msgid "Lockouts"
|
783 |
+
msgstr "Блокировки"
|
784 |
+
|
785 |
+
#: dashboard.php:870 settings.php:77
|
786 |
+
msgid "Citadel mode"
|
787 |
+
msgstr "Режим Цитадель"
|
788 |
+
|
789 |
+
#: dashboard.php:868 dashboard.php:869 dashboard.php:1300
|
790 |
+
msgid "entry"
|
791 |
+
msgid_plural "entries"
|
792 |
+
msgstr[0] "элемент"
|
793 |
+
msgstr[1] "элемента"
|
794 |
+
msgstr[2] "элементов"
|
795 |
+
|
796 |
+
#: dashboard.php:867
|
797 |
+
msgid "Last lockout"
|
798 |
+
msgstr "Последняя блокировка"
|
799 |
+
|
800 |
+
#: dashboard.php:866
|
801 |
+
msgid "Lockouts at the moment"
|
802 |
+
msgstr "Сейчас заблокировано"
|
803 |
+
|
804 |
+
#: dashboard.php:864
|
805 |
+
msgid "lockouts"
|
806 |
+
msgstr "блокировок"
|
807 |
+
|
808 |
+
#: dashboard.php:863 dashboard.php:864
|
809 |
+
msgid "view all"
|
810 |
+
msgstr "просмотреть все"
|
811 |
+
|
812 |
+
#: dashboard.php:863 dashboard.php:864
|
813 |
+
msgid "in 24 hours"
|
814 |
+
msgstr "за 24 часа"
|
815 |
+
|
816 |
+
#: dashboard.php:863
|
817 |
+
msgid "failed attempts"
|
818 |
+
msgstr "ошибок авторизации"
|
819 |
+
|
820 |
+
#: dashboard.php:858
|
821 |
+
msgid "disabled"
|
822 |
+
msgstr "отключен"
|
823 |
+
|
824 |
+
#: dashboard.php:857
|
825 |
+
msgid "not active"
|
826 |
+
msgstr "неактивен"
|
827 |
+
|
828 |
+
#: dashboard.php:855
|
829 |
+
msgid "deactivate"
|
830 |
+
msgstr "деактивировать"
|
831 |
+
|
832 |
+
#: dashboard.php:855
|
833 |
+
msgid "active"
|
834 |
+
msgstr "активен"
|
835 |
+
|
836 |
+
#: dashboard.php:822
|
837 |
+
msgid "Cerber Quick View"
|
838 |
+
msgstr "Сводка от Cerber"
|
839 |
+
|
840 |
+
#: cerber-tools.php:185
|
841 |
+
msgid "Error while parsing file"
|
842 |
+
msgstr "Возникла ошибка при обработке файла"
|
843 |
+
|
844 |
+
#: cerber-tools.php:181
|
845 |
+
msgid "Settings has imported successfully from"
|
846 |
+
msgstr "Все настройки успешно загружены"
|
847 |
+
|
848 |
+
#: cerber-tools.php:178
|
849 |
+
msgid "Error while updating"
|
850 |
+
msgstr "Возникла ошибка при обновлении"
|
851 |
+
|
852 |
+
#: cerber-tools.php:148
|
853 |
+
msgid "No file was uploaded or file is corrupted"
|
854 |
+
msgstr "Файл не был загружен или имеет неверный формат"
|
855 |
+
|
856 |
+
#: cerber-tools.php:69
|
857 |
+
msgid "Upload file"
|
858 |
+
msgstr "Загрузить файл"
|
859 |
+
|
860 |
+
#: cerber-tools.php:67
|
861 |
+
msgid "What do you want to import?"
|
862 |
+
msgstr "Что вы хотите импортировать?"
|
863 |
+
|
864 |
+
#: cerber-tools.php:64
|
865 |
+
msgid "Maximum upload file size: %s."
|
866 |
+
msgstr "Максимальный размер загружаемого файла: %s."
|
867 |
+
|
868 |
+
#: cerber-tools.php:64
|
869 |
+
msgid "Select file to import."
|
870 |
+
msgstr "Выберите файл для загрузки."
|
871 |
+
|
872 |
+
#: cerber-tools.php:63
|
873 |
+
msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
|
874 |
+
msgstr "Когда вы нажмете на кнопку, все настройки из файла будут загружены на сайт"
|
875 |
+
|
876 |
+
#: cerber-tools.php:62
|
877 |
+
msgid "Import settings from the file"
|
878 |
+
msgstr "Импорт настроек из файла"
|
879 |
+
|
880 |
+
#: cerber-tools.php:60
|
881 |
+
msgid "Download file"
|
882 |
+
msgstr "Скачать файл"
|
883 |
+
|
884 |
+
#: cerber-tools.php:59 cerber-tools.php:68 cerber-tools.php:178
|
885 |
+
#: dashboard.php:879 dashboard.php:1321 settings.php:227 wp-cerber.php:2278
|
886 |
+
msgid "Access Lists"
|
887 |
+
msgstr "Списки доступа"
|
888 |
+
|
889 |
+
#: cerber-tools.php:58 cerber-tools.php:67
|
890 |
+
msgid "Settings"
|
891 |
+
msgstr "Настройки"
|
892 |
+
|
893 |
+
#: cerber-tools.php:57
|
894 |
+
msgid "What do you want to export?"
|
895 |
+
msgstr "Что вы хотите экспортировать"
|
896 |
+
|
897 |
+
#: cerber-tools.php:56
|
898 |
+
msgid "When you click the button below you will get a configuration file, which you can upload on another site."
|
899 |
+
msgstr "Когда вы нажмете на кнопку, то получите файл с настройками, который можно использовать на других сайтах."
|
900 |
+
|
901 |
+
#: cerber-tools.php:55
|
902 |
+
msgid "Export settings to the file"
|
903 |
+
msgstr "Экспорт настроек в файл"
|
904 |
+
|
905 |
+
#: dashboard.php:798 dashboard.php:851
|
906 |
+
msgid "Never"
|
907 |
+
msgstr "Никогда"
|
908 |
+
|
909 |
+
#: common.php:253
|
910 |
+
msgid "User created"
|
911 |
+
msgstr "Пользователь создан"
|
912 |
+
|
913 |
+
#: common.php:254
|
914 |
+
msgid "User registered"
|
915 |
+
msgstr "Пользователь зарегистрирован"
|
916 |
+
|
917 |
+
#: common.php:255
|
918 |
+
msgid "Logged in"
|
919 |
+
msgstr "Вход"
|
920 |
+
|
921 |
+
#: common.php:256
|
922 |
+
msgid "Logged out"
|
923 |
+
msgstr "Выход"
|
924 |
+
|
925 |
+
#: common.php:257
|
926 |
+
msgid "Login failed"
|
927 |
+
msgstr "Ошибка авторизации"
|
928 |
+
|
929 |
+
#: common.php:260
|
930 |
+
msgid "IP blocked"
|
931 |
+
msgstr "IP заблокирован"
|
932 |
+
|
933 |
+
#: common.php:261
|
934 |
+
msgid "Subnet blocked"
|
935 |
+
msgstr "Подсеть заблокирована"
|
936 |
+
|
937 |
+
#: common.php:263
|
938 |
+
msgid "Citadel activated!"
|
939 |
+
msgstr "Режим Цитадель активирован!"
|
940 |
+
|
941 |
+
#: common.php:265 dashboard.php:445 dashboard.php:630
|
942 |
+
msgid "Locked out"
|
943 |
+
msgstr "Заблокировано"
|
944 |
+
|
945 |
+
#: common.php:269
|
946 |
+
msgid "Password changed"
|
947 |
+
msgstr "Пароль изменен"
|
948 |
+
|
949 |
+
#: common.php:266
|
950 |
+
msgid "IP blacklisted"
|
951 |
+
msgstr "IP в черном списке"
|
952 |
+
|
953 |
+
#: common.php:271
|
954 |
+
msgid "reCAPTCHA verification failed"
|
955 |
+
msgstr "проверка reCAPTCHA неудачна"
|
956 |
+
|
957 |
+
#: common.php:272
|
958 |
+
msgid "reCAPTCHA settings are incorrect"
|
959 |
+
msgstr "настройки reCAPTCHA неверны"
|
960 |
+
|
961 |
+
#: common.php:275
|
962 |
+
msgid "Attempt to access prohibited URL"
|
963 |
+
msgstr "Попытка доступа к запрещенному URL"
|
964 |
+
|
965 |
+
#: common.php:276 common.php:288
|
966 |
+
msgid "Attempt to log in with non-existent username"
|
967 |
+
msgstr "Попытка войти с несуществующим именем пользователя"
|
968 |
+
|
969 |
+
#: common.php:277 common.php:289
|
970 |
+
msgid "Attempt to log in with prohibited username"
|
971 |
+
msgstr "Попытка входа с запрещенным именем"
|
972 |
+
|
973 |
+
#: dashboard.php:74 dashboard.php:123
|
974 |
+
msgid "Remove"
|
975 |
+
msgstr "Удалить"
|
976 |
+
|
977 |
+
#: dashboard.php:77 dashboard.php:460 wp-cerber.php:2168
|
978 |
+
msgid "IP"
|
979 |
+
msgstr "IP"
|
980 |
+
|
981 |
+
#: dashboard.php:77 dashboard.php:460
|
982 |
+
msgid "Hostname"
|
983 |
+
msgstr "Имя узла"
|
984 |
+
|
985 |
+
#: dashboard.php:77
|
986 |
+
msgid "Expires"
|
987 |
+
msgstr "Истекает"
|
988 |
+
|
989 |
+
#: dashboard.php:77 wp-cerber.php:1921
|
990 |
+
msgid "Reason"
|
991 |
+
msgstr "Причина"
|
992 |
+
|
993 |
+
#: dashboard.php:77
|
994 |
+
msgid "Action"
|
995 |
+
msgstr "Действие"
|
996 |
+
|
997 |
+
#: dashboard.php:83
|
998 |
+
msgid "Showing last %d records from %d"
|
999 |
+
msgstr "Отображены последние %d строк из %d"
|
1000 |
+
|
1001 |
+
#: dashboard.php:85
|
1002 |
+
msgid "Hint"
|
1003 |
+
msgstr "Подсказка"
|
1004 |
+
|
1005 |
+
#: dashboard.php:85
|
1006 |
+
msgid "To view activity, click on the IP"
|
1007 |
+
msgstr "Чтобы увидеть активность, нажмите на адрес IP"
|
1008 |
+
|
1009 |
+
#: dashboard.php:89
|
1010 |
+
msgid "No lockouts at the moment. The sky is clear."
|
1011 |
+
msgstr "Блокировок нет. Все в порядке."
|
1012 |
+
|
1013 |
+
#: dashboard.php:102 dashboard.php:440 dashboard.php:625 dashboard.php:868
|
1014 |
+
#: settings.php:184 wp-cerber.php:2272
|
1015 |
+
msgid "White IP Access List"
|
1016 |
+
msgstr "Белый список доступа по IP"
|
1017 |
+
|
1018 |
+
#: dashboard.php:102
|
1019 |
+
msgid "These IPs will never be locked out"
|
1020 |
+
msgstr "Эти адреса не будут заблокированы ни при каких условиях"
|
1021 |
+
|
1022 |
+
#: dashboard.php:104 dashboard.php:441 dashboard.php:627 dashboard.php:869
|
1023 |
+
msgid "Black IP Access List"
|
1024 |
+
msgstr "Черный список доступа по IP"
|
1025 |
+
|
1026 |
+
#: dashboard.php:104
|
1027 |
+
msgid "Nobody can log in or register from these IPs"
|
1028 |
+
msgstr "Никто не сможет войти или зарегистрироваться с этих IP"
|
1029 |
+
|
1030 |
+
#: dashboard.php:106
|
1031 |
+
msgid "Your IP"
|
1032 |
+
msgstr "Ваш адрес IP"
|
1033 |
+
|
1034 |
+
#: dashboard.php:123 dashboard.php:657
|
1035 |
+
msgid "Check for activity"
|
1036 |
+
msgstr "Проверить активность"
|
1037 |
+
|
1038 |
+
#: dashboard.php:126
|
1039 |
+
msgid "List is empty"
|
1040 |
+
msgstr "Список пуст"
|
1041 |
+
|
1042 |
+
#: dashboard.php:130
|
1043 |
+
msgid "Add IP to the list"
|
1044 |
+
msgstr "Добавить IP в список"
|
1045 |
+
|
1046 |
+
#: dashboard.php:153
|
1047 |
+
msgid "Address %s was added to White IP Access List"
|
1048 |
+
msgstr "Адрес %s добавлен в белый список доступа"
|
1049 |
+
|
1050 |
+
#: dashboard.php:166
|
1051 |
+
msgid "Address %s was added to Black IP Access List"
|
1052 |
+
msgstr "Адрес %s добавлен в черный список доступа"
|
1053 |
+
|
1054 |
+
#: dashboard.php:237
|
1055 |
+
msgid "unknown"
|
1056 |
+
msgstr "неизвестно"
|
1057 |
+
|
1058 |
+
#: dashboard.php:162
|
1059 |
+
msgid "You can't add your IP address"
|
1060 |
+
msgstr "Вы не можете добавить свой адрес IP"
|
1061 |
+
|
1062 |
+
#: dashboard.php:260
|
1063 |
+
msgid "Unable to send notification email"
|
1064 |
+
msgstr "Невозможно послать письмо с уведомлением"
|
1065 |
+
|
1066 |
+
#: dashboard.php:257
|
1067 |
+
msgid "Message has been sent to "
|
1068 |
+
msgstr "Сообщение было отправлено на"
|
1069 |
+
|
1070 |
+
#: dashboard.php:267
|
1071 |
+
msgid "Lockout for %s was removed"
|
1072 |
+
msgstr "Удалена блокировка для %s"
|
1073 |
+
|
1074 |
+
#: dashboard.php:283 dashboard.php:1149
|
1075 |
+
msgid "Settings saved"
|
1076 |
+
msgstr "Настройки сохранены."
|
1077 |
+
|
1078 |
+
#: dashboard.php:337 dashboard.php:460
|
1079 |
+
msgid "Date"
|
1080 |
+
msgstr "Дата"
|
1081 |
+
|
1082 |
+
#: dashboard.php:337 dashboard.php:460 dashboard.php:877 dashboard.php:1012
|
1083 |
+
#: settings.php:88 settings.php:219 wp-cerber.php:2167
|
1084 |
+
msgid "Activity"
|
1085 |
+
msgstr "Активность"
|
1086 |
+
|
1087 |
+
#: dashboard.php:473
|
1088 |
+
msgid "No activity has been logged."
|
1089 |
+
msgstr "Ни одного события не зафиксировано."
|
1090 |
+
|
1091 |
+
#: dashboard.php:337 dashboard.php:460 wp-cerber.php:2176
|
1092 |
+
msgid "Username used"
|
1093 |
+
msgstr "Использован логин"
|
1094 |
+
|
1095 |
+
#: dashboard.php:337 dashboard.php:460
|
1096 |
+
msgid "Local User"
|
1097 |
+
msgstr "Пользователь"
|
1098 |
+
|
1099 |
+
#: dashboard.php:675
|
1100 |
+
msgid "Add IP to the Black List"
|
1101 |
+
msgstr "Добавить IP в черный список"
|
1102 |
+
|
1103 |
+
#: dashboard.php:700
|
1104 |
+
msgid "WP Cerber Settings"
|
1105 |
+
msgstr "Настройки WP Cerber"
|
1106 |
+
|
1107 |
+
#. #-#-#-#-# tmp-wp-cerber.pot (WP Cerber 4.5) #-#-#-#-#
|
1108 |
+
#. Plugin Name of the plugin/theme
|
1109 |
+
#: dashboard.php:700 dashboard.php:703 dashboard.php:732
|
1110 |
+
msgid "WP Cerber"
|
1111 |
+
msgstr "WP Cerber"
|
1112 |
+
|
1113 |
+
#: dashboard.php:770
|
1114 |
+
msgid "Comments"
|
1115 |
+
msgstr "Комментарии"
|
1116 |
+
|
1117 |
+
#: dashboard.php:771
|
1118 |
+
msgid "Last login"
|
1119 |
+
msgstr "Последний вход"
|
1120 |
+
|
1121 |
+
#: dashboard.php:772
|
1122 |
+
msgid "Failed attempts in last 24 hours"
|
1123 |
+
msgstr "Неудачные попытки входа за последние 24 часа"
|
1124 |
+
|
1125 |
+
#: dashboard.php:773
|
1126 |
+
msgid "Date of registration"
|
1127 |
+
msgstr "Дата регистрации"
|
languages/wp-cerber-uk.mo
ADDED
Binary file
|
languages/wp-cerber-uk.po
ADDED
@@ -0,0 +1,1216 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: WP Cerber\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
|
6 |
+
"PO-Revision-Date: Wed Apr 12 2017 21:49:27 GMT+0300\n"
|
7 |
+
"Last-Translator: Greg <domain@xterm.ru>\n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"Language: Ukrainian\n"
|
10 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
|
11 |
+
"n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
+
"X-Generator: Loco - https://localise.biz/\n"
|
17 |
+
"X-Poedit-Basepath: .\n"
|
18 |
+
"X-Poedit-SearchPath-0: ..\n"
|
19 |
+
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
|
20 |
+
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
|
21 |
+
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
|
22 |
+
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
|
23 |
+
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
|
24 |
+
"X-Loco-Target-Locale: uk_UA"
|
25 |
+
|
26 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
27 |
+
msgid "Incorrect IP address or IP range"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: ../dashboard.php:283 ../dashboard.php:1149
|
31 |
+
msgid "Settings saved"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: ../dashboard.php:337
|
35 |
+
msgid "IP address"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: ../dashboard.php:337
|
39 |
+
msgid "User login"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: ../dashboard.php:337
|
43 |
+
msgid "User ID"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: ../dashboard.php:469
|
47 |
+
msgid "Export"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: ../dashboard.php:478
|
51 |
+
msgid "All activities"
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: ../dashboard.php:485
|
55 |
+
msgid "Search for IP or username"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: ../dashboard.php:485
|
59 |
+
msgid "Filter"
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: ../dashboard.php:657
|
63 |
+
msgid "Network:"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: ../dashboard.php:671
|
67 |
+
msgid "Add network to the Black List"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: ../dashboard.php:703 ../settings.php:212
|
71 |
+
msgid "WP Cerber Security"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: ../dashboard.php:705
|
75 |
+
msgid "Cerber Dashboard"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: ../dashboard.php:705 ../dashboard.php:876 ../dashboard.php:1320 ../settings.
|
79 |
+
#: php:217
|
80 |
+
msgid "Dashboard"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: ../dashboard.php:707
|
84 |
+
msgid "Cerber reCAPTCHA settings"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: ../dashboard.php:708
|
88 |
+
msgid "Cerber tools"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: ../dashboard.php:872 ../settings.php:145
|
92 |
+
msgid "Push notifications"
|
93 |
+
msgstr ""
|
94 |
+
|
95 |
+
#: ../dashboard.php:1011 ../dashboard.php:1026
|
96 |
+
msgid "View all"
|
97 |
+
msgstr ""
|
98 |
+
|
99 |
+
#: ../dashboard.php:1027
|
100 |
+
msgid "Recently locked out IP addresses"
|
101 |
+
msgstr ""
|
102 |
+
|
103 |
+
#: ../dashboard.php:1132
|
104 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: ../dashboard.php:1235
|
108 |
+
msgid "Subscribe"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: ../dashboard.php:1236
|
112 |
+
msgid "Unsubscribe"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: ../dashboard.php:1264
|
116 |
+
msgid "You've subscribed"
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: ../dashboard.php:1267
|
120 |
+
msgid "You've unsubscribed"
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#. Description of the plugin
|
124 |
+
msgid ""
|
125 |
+
"Protects site from brute force attacks, bots and hackers. Antispam "
|
126 |
+
"protection with reCAPTCHA. Comprehensive control of user activity. Restrict "
|
127 |
+
"login by IP access lists. Limit login attempts. Feel free to contact "
|
128 |
+
"developer on the site <a href=\"http://wpcerber.com\">wpcerber.com</a>."
|
129 |
+
msgstr ""
|
130 |
+
|
131 |
+
#. Author of the plugin
|
132 |
+
msgid "Gregory"
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
#: ../wp-cerber.php:1960 ../wp-cerber.php:1961
|
136 |
+
msgid "A new activity has been recorded"
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: ../wp-cerber.php:2172
|
140 |
+
msgid "User"
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#: ../wp-cerber.php:2180
|
144 |
+
msgid "Search string"
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#: ../wp-cerber.php:2193
|
148 |
+
msgid "To unsubscribe click here"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: ../common.php:273
|
152 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: ../common.php:341
|
156 |
+
msgid "year"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: ../common.php:342
|
160 |
+
msgid "month"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: ../common.php:343
|
164 |
+
msgid "day"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: ../common.php:344
|
168 |
+
msgid "hour"
|
169 |
+
msgstr ""
|
170 |
+
|
171 |
+
#: ../common.php:345
|
172 |
+
msgid "minute"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: ../common.php:346
|
176 |
+
msgid "second"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: ../common.php:349
|
180 |
+
msgid "years"
|
181 |
+
msgstr ""
|
182 |
+
|
183 |
+
#: ../common.php:350
|
184 |
+
msgid "months"
|
185 |
+
msgstr ""
|
186 |
+
|
187 |
+
#: ../common.php:352
|
188 |
+
msgid "hours"
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: ../common.php:354
|
192 |
+
msgid "seconds"
|
193 |
+
msgstr ""
|
194 |
+
|
195 |
+
#: ../common.php:360
|
196 |
+
msgid "ago"
|
197 |
+
msgstr ""
|
198 |
+
|
199 |
+
#: ../cerber-lab.php:415
|
200 |
+
msgid "Want to make WP Cerber even more powerful?"
|
201 |
+
msgstr ""
|
202 |
+
|
203 |
+
#: ../cerber-lab.php:416
|
204 |
+
msgid ""
|
205 |
+
"Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
|
206 |
+
"This helps the plugin team to develop new algorithms for WP Cerber that will "
|
207 |
+
"defend WordPress against new threats and botnets that are appearing "
|
208 |
+
"everyday. You can disable the sending in the plugin settings at any time."
|
209 |
+
msgstr ""
|
210 |
+
|
211 |
+
#: ../cerber-lab.php:417
|
212 |
+
msgid "OK, nail them all"
|
213 |
+
msgstr ""
|
214 |
+
|
215 |
+
#: ../cerber-lab.php:418
|
216 |
+
msgid "NO, maybe later"
|
217 |
+
msgstr ""
|
218 |
+
|
219 |
+
#: ../settings.php:71
|
220 |
+
msgid "Display 404 page"
|
221 |
+
msgstr ""
|
222 |
+
|
223 |
+
#: ../settings.php:90
|
224 |
+
msgid "Cerber Lab connection"
|
225 |
+
msgstr ""
|
226 |
+
|
227 |
+
#: ../settings.php:90
|
228 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
229 |
+
msgstr ""
|
230 |
+
|
231 |
+
#: ../settings.php:91
|
232 |
+
msgid "Cerber Lab protocol"
|
233 |
+
msgstr ""
|
234 |
+
|
235 |
+
#: ../settings.php:94
|
236 |
+
msgid "Preferences"
|
237 |
+
msgstr ""
|
238 |
+
|
239 |
+
#: ../settings.php:96
|
240 |
+
msgid "Date format"
|
241 |
+
msgstr ""
|
242 |
+
|
243 |
+
#: ../settings.php:96
|
244 |
+
#, php-format
|
245 |
+
msgid "if empty, the default format %s will be used"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: ../settings.php:127
|
249 |
+
msgid "Registration form"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
+
#: ../settings.php:127
|
253 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
254 |
+
msgstr ""
|
255 |
+
|
256 |
+
#: ../settings.php:128
|
257 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
258 |
+
msgstr ""
|
259 |
+
|
260 |
+
#: ../settings.php:130
|
261 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
262 |
+
msgstr ""
|
263 |
+
|
264 |
+
#: ../settings.php:131
|
265 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
266 |
+
msgstr ""
|
267 |
+
|
268 |
+
#: ../settings.php:133
|
269 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: ../settings.php:134
|
273 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
274 |
+
msgstr ""
|
275 |
+
|
276 |
+
#: ../settings.php:140
|
277 |
+
msgid "Email notifications"
|
278 |
+
msgstr ""
|
279 |
+
|
280 |
+
#: ../settings.php:142
|
281 |
+
msgid "Use comma to specify multiple values"
|
282 |
+
msgstr ""
|
283 |
+
|
284 |
+
#: ../settings.php:152
|
285 |
+
msgid "All connected devices"
|
286 |
+
msgstr ""
|
287 |
+
|
288 |
+
#: ../settings.php:153
|
289 |
+
msgid "No devices found"
|
290 |
+
msgstr ""
|
291 |
+
|
292 |
+
#: ../settings.php:155
|
293 |
+
msgid "Not available"
|
294 |
+
msgstr ""
|
295 |
+
|
296 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
297 |
+
msgid "Remove"
|
298 |
+
msgstr "Видалити"
|
299 |
+
|
300 |
+
#: ../dashboard.php:77 ../dashboard.php:460 ../wp-cerber.php:2168
|
301 |
+
msgid "IP"
|
302 |
+
msgstr "IP"
|
303 |
+
|
304 |
+
#: ../dashboard.php:77 ../dashboard.php:460
|
305 |
+
msgid "Hostname"
|
306 |
+
msgstr "Ім'я хосту"
|
307 |
+
|
308 |
+
#: ../dashboard.php:77
|
309 |
+
msgid "Expires"
|
310 |
+
msgstr "Спливає"
|
311 |
+
|
312 |
+
#: ../dashboard.php:77 ../wp-cerber.php:1921
|
313 |
+
msgid "Reason"
|
314 |
+
msgstr "Причина"
|
315 |
+
|
316 |
+
#: ../dashboard.php:77
|
317 |
+
msgid "Action"
|
318 |
+
msgstr "Дія"
|
319 |
+
|
320 |
+
#: ../dashboard.php:83
|
321 |
+
#, php-format
|
322 |
+
msgid "Showing last %d records from %d"
|
323 |
+
msgstr "Відображається %d останніх записів з %d"
|
324 |
+
|
325 |
+
#: ../dashboard.php:85
|
326 |
+
msgid "Hint"
|
327 |
+
msgstr "Підказка"
|
328 |
+
|
329 |
+
#: ../dashboard.php:85
|
330 |
+
msgid "To view activity, click on the IP"
|
331 |
+
msgstr "Щоб переглянути активність, натисніть на IP адресу"
|
332 |
+
|
333 |
+
#: ../dashboard.php:89
|
334 |
+
msgid "No lockouts at the moment. The sky is clear."
|
335 |
+
msgstr "Наразі немає блокувань. Небо ясне."
|
336 |
+
|
337 |
+
#: ../dashboard.php:102 ../dashboard.php:440 ../dashboard.php:625 ../dashboard.
|
338 |
+
#: php:868 ../wp-cerber.php:2272 ../settings.php:184
|
339 |
+
msgid "White IP Access List"
|
340 |
+
msgstr "Білий список доступу за IP"
|
341 |
+
|
342 |
+
#: ../dashboard.php:102
|
343 |
+
msgid "These IPs will never be locked out"
|
344 |
+
msgstr "Ці IP-адреси ніколи не буде заблоковано"
|
345 |
+
|
346 |
+
#: ../dashboard.php:104 ../dashboard.php:441 ../dashboard.php:627 ../dashboard.
|
347 |
+
#: php:869
|
348 |
+
msgid "Black IP Access List"
|
349 |
+
msgstr "Чорний список доступу за IP"
|
350 |
+
|
351 |
+
#: ../dashboard.php:104
|
352 |
+
msgid "Nobody can log in or register from these IPs"
|
353 |
+
msgstr "Ніхто не може увійти або зареєструватися з цих IP-адрес"
|
354 |
+
|
355 |
+
#: ../dashboard.php:106
|
356 |
+
msgid "Your IP"
|
357 |
+
msgstr "Ваш IP"
|
358 |
+
|
359 |
+
#: ../dashboard.php:123 ../dashboard.php:657
|
360 |
+
msgid "Check for activity"
|
361 |
+
msgstr "Перевірити активність"
|
362 |
+
|
363 |
+
#: ../dashboard.php:126
|
364 |
+
msgid "List is empty"
|
365 |
+
msgstr "Список порожній"
|
366 |
+
|
367 |
+
#: ../dashboard.php:130
|
368 |
+
msgid "Add IP to the list"
|
369 |
+
msgstr "Додати IP до списку"
|
370 |
+
|
371 |
+
#: ../dashboard.php:153
|
372 |
+
#, php-format
|
373 |
+
msgid "Address %s was added to White IP Access List"
|
374 |
+
msgstr "Адресу %s було додано до білого списку доступу за IP"
|
375 |
+
|
376 |
+
#: ../dashboard.php:162
|
377 |
+
msgid "You can't add your IP address"
|
378 |
+
msgstr "Ви не можете додати вашу IP-адресу"
|
379 |
+
|
380 |
+
#: ../dashboard.php:166
|
381 |
+
#, php-format
|
382 |
+
msgid "Address %s was added to Black IP Access List"
|
383 |
+
msgstr "Адресу %s було додано до чорного списку доступу за IP"
|
384 |
+
|
385 |
+
#: ../dashboard.php:237
|
386 |
+
msgid "unknown"
|
387 |
+
msgstr "невідомо"
|
388 |
+
|
389 |
+
#: ../dashboard.php:257
|
390 |
+
msgid "Message has been sent to "
|
391 |
+
msgstr "Сповіщення було надіслано "
|
392 |
+
|
393 |
+
#: ../dashboard.php:260
|
394 |
+
msgid "Unable to send notification email"
|
395 |
+
msgstr "Неможливо відправити сповіщення на email"
|
396 |
+
|
397 |
+
#: ../dashboard.php:267
|
398 |
+
#, php-format
|
399 |
+
msgid "Lockout for %s was removed"
|
400 |
+
msgstr "Блокування для %s було видалено"
|
401 |
+
|
402 |
+
#: ../dashboard.php:337 ../dashboard.php:460
|
403 |
+
msgid "Date"
|
404 |
+
msgstr "Дата"
|
405 |
+
|
406 |
+
#: ../dashboard.php:337 ../dashboard.php:460 ../dashboard.php:877 ../dashboard.
|
407 |
+
#: php:1012 ../wp-cerber.php:2167 ../settings.php:88 ../settings.php:219
|
408 |
+
msgid "Activity"
|
409 |
+
msgstr "Активність"
|
410 |
+
|
411 |
+
#: ../dashboard.php:337 ../dashboard.php:460
|
412 |
+
msgid "Local User"
|
413 |
+
msgstr "Користувач"
|
414 |
+
|
415 |
+
#: ../dashboard.php:337 ../dashboard.php:460 ../wp-cerber.php:2176
|
416 |
+
msgid "Username used"
|
417 |
+
msgstr "Використано логін"
|
418 |
+
|
419 |
+
#: ../dashboard.php:445 ../dashboard.php:630 ../common.php:265
|
420 |
+
msgid "Locked out"
|
421 |
+
msgstr "Заблоковано"
|
422 |
+
|
423 |
+
#: ../dashboard.php:473
|
424 |
+
msgid "No activity has been logged."
|
425 |
+
msgstr "Не було відмічено жодної активності."
|
426 |
+
|
427 |
+
#: ../dashboard.php:653
|
428 |
+
msgid "Abuse email:"
|
429 |
+
msgstr "Email aдресa для скарг:"
|
430 |
+
|
431 |
+
#: ../dashboard.php:675
|
432 |
+
msgid "Add IP to the Black List"
|
433 |
+
msgstr "Додати IP в чорний список"
|
434 |
+
|
435 |
+
#: ../dashboard.php:700
|
436 |
+
msgid "WP Cerber Settings"
|
437 |
+
msgstr "Налаштування WP Cerber"
|
438 |
+
|
439 |
+
#. #-#-#-#-# tmp-wp-cerber.pot (WP Cerber 3.0) #-#-#-#-#
|
440 |
+
#. Plugin Name of the plugin/theme
|
441 |
+
#: ../dashboard.php:700 ../dashboard.php:703 ../dashboard.php:732
|
442 |
+
msgid "WP Cerber"
|
443 |
+
msgstr "WP Cerber"
|
444 |
+
|
445 |
+
#: ../dashboard.php:707
|
446 |
+
msgid "reCAPTCHA"
|
447 |
+
msgstr "reCAPTCHA"
|
448 |
+
|
449 |
+
#: ../dashboard.php:708 ../cerber-tools.php:40
|
450 |
+
msgid "Tools"
|
451 |
+
msgstr "Інструменти"
|
452 |
+
|
453 |
+
#: ../dashboard.php:770
|
454 |
+
msgid "Comments"
|
455 |
+
msgstr "Коментарі"
|
456 |
+
|
457 |
+
#: ../dashboard.php:771
|
458 |
+
msgid "Last login"
|
459 |
+
msgstr "Останній вхід"
|
460 |
+
|
461 |
+
#: ../dashboard.php:772
|
462 |
+
msgid "Failed attempts in last 24 hours"
|
463 |
+
msgstr "Невдалі спроби за останні 24 години"
|
464 |
+
|
465 |
+
#: ../dashboard.php:773
|
466 |
+
msgid "Date of registration"
|
467 |
+
msgstr "Дата реєстрації"
|
468 |
+
|
469 |
+
#: ../dashboard.php:798 ../dashboard.php:851
|
470 |
+
msgid "Never"
|
471 |
+
msgstr "Ніколи"
|
472 |
+
|
473 |
+
#: ../dashboard.php:822
|
474 |
+
msgid "Cerber Quick View"
|
475 |
+
msgstr "Швидкий огляд Cerber"
|
476 |
+
|
477 |
+
#: ../dashboard.php:855
|
478 |
+
msgid "active"
|
479 |
+
msgstr "активний"
|
480 |
+
|
481 |
+
#: ../dashboard.php:855
|
482 |
+
msgid "deactivate"
|
483 |
+
msgstr "деактивувати"
|
484 |
+
|
485 |
+
#: ../dashboard.php:857
|
486 |
+
msgid "not active"
|
487 |
+
msgstr "неактивний"
|
488 |
+
|
489 |
+
#: ../dashboard.php:858
|
490 |
+
msgid "disabled"
|
491 |
+
msgstr "відключений"
|
492 |
+
|
493 |
+
#: ../dashboard.php:863
|
494 |
+
msgid "failed attempts"
|
495 |
+
msgstr "невдалих спроб"
|
496 |
+
|
497 |
+
#: ../dashboard.php:863 ../dashboard.php:864
|
498 |
+
msgid "in 24 hours"
|
499 |
+
msgstr "за 24 години"
|
500 |
+
|
501 |
+
#: ../dashboard.php:863 ../dashboard.php:864
|
502 |
+
msgid "view all"
|
503 |
+
msgstr "переглянути усі"
|
504 |
+
|
505 |
+
#: ../dashboard.php:864
|
506 |
+
msgid "lockouts"
|
507 |
+
msgstr "блокувань"
|
508 |
+
|
509 |
+
#: ../dashboard.php:866
|
510 |
+
msgid "Lockouts at the moment"
|
511 |
+
msgstr "Наразі заблоковано"
|
512 |
+
|
513 |
+
#: ../dashboard.php:867
|
514 |
+
msgid "Last lockout"
|
515 |
+
msgstr "Останнє блокування"
|
516 |
+
|
517 |
+
#: ../dashboard.php:868 ../dashboard.php:869 ../dashboard.php:1300
|
518 |
+
msgid "entry"
|
519 |
+
msgid_plural "entries"
|
520 |
+
msgstr[0] "запис"
|
521 |
+
msgstr[1] "записи"
|
522 |
+
msgstr[2] "записів"
|
523 |
+
|
524 |
+
#: ../dashboard.php:870 ../settings.php:77
|
525 |
+
msgid "Citadel mode"
|
526 |
+
msgstr "Режим Цитадель"
|
527 |
+
|
528 |
+
#: ../dashboard.php:878 ../settings.php:222
|
529 |
+
msgid "Lockouts"
|
530 |
+
msgstr "Блокування"
|
531 |
+
|
532 |
+
#: ../dashboard.php:879 ../dashboard.php:1321 ../wp-cerber.php:2278 ../settings.
|
533 |
+
#: php:227 ../cerber-tools.php:59 ../cerber-tools.php:68 ../cerber-tools.php:178
|
534 |
+
msgid "Access Lists"
|
535 |
+
msgstr "Списки доступу"
|
536 |
+
|
537 |
+
#: ../dashboard.php:1049
|
538 |
+
msgid "Confused about some settings?"
|
539 |
+
msgstr "Маєте сумнів щодо налаштувань?"
|
540 |
+
|
541 |
+
#: ../dashboard.php:1050
|
542 |
+
msgid "You can easily load default recommended settings using button below"
|
543 |
+
msgstr ""
|
544 |
+
"Ви можете легко завантажити рекомендовані налаштування за допомогою кнопки "
|
545 |
+
"нижче"
|
546 |
+
|
547 |
+
#: ../dashboard.php:1052
|
548 |
+
msgid "Load default settings"
|
549 |
+
msgstr "Завантажити типові налаштування"
|
550 |
+
|
551 |
+
#: ../dashboard.php:1054 ../dashboard.php:1450
|
552 |
+
msgid "Are you sure?"
|
553 |
+
msgstr "Ви впевнені?"
|
554 |
+
|
555 |
+
#: ../dashboard.php:1060
|
556 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
557 |
+
msgstr "не впливає на URL сторінки авторизації та списки доступу"
|
558 |
+
|
559 |
+
#: ../dashboard.php:1079
|
560 |
+
msgid "Donate"
|
561 |
+
msgstr "Підтримайте розробку"
|
562 |
+
|
563 |
+
#: ../dashboard.php:1133
|
564 |
+
msgid "Deactivate"
|
565 |
+
msgstr "Деактивувати"
|
566 |
+
|
567 |
+
#: ../dashboard.php:1134
|
568 |
+
msgid "View Activity"
|
569 |
+
msgstr "Переглянути активність"
|
570 |
+
|
571 |
+
#: ../dashboard.php:1190
|
572 |
+
msgid "New version is available"
|
573 |
+
msgstr "Доступна нова версія"
|
574 |
+
|
575 |
+
#: ../dashboard.php:1196
|
576 |
+
#, php-format
|
577 |
+
msgid "Update to version %s of WP Cerber"
|
578 |
+
msgstr "Оновити WP Cerber до версії %s"
|
579 |
+
|
580 |
+
#. #-#-#-#-# tmp-wp-cerber.pot (WP Cerber 3.0) #-#-#-#-#
|
581 |
+
#. Plugin URI of the plugin/theme
|
582 |
+
#. #-#-#-#-# tmp-wp-cerber.pot (WP Cerber 3.0) #-#-#-#-#
|
583 |
+
#. Author URI of the plugin/theme
|
584 |
+
msgid "http://wpcerber.com"
|
585 |
+
msgstr "http://wpcerber.com"
|
586 |
+
|
587 |
+
#: ../wp-cerber.php:190
|
588 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
589 |
+
msgstr "Вам заборонено вхід. Спитайте вашого адміністратора про допомогу."
|
590 |
+
|
591 |
+
#: ../wp-cerber.php:196
|
592 |
+
#, php-format
|
593 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
594 |
+
msgstr "Ви досягли ліміту спроб входу. Будь ласка, спробуйте ще раз за %d хвилин."
|
595 |
+
|
596 |
+
#: ../wp-cerber.php:214
|
597 |
+
#, php-format
|
598 |
+
msgid "You have only one attempt remaining."
|
599 |
+
msgid_plural "You have %d attempts remaining."
|
600 |
+
msgstr[0] "У вас залишилася тільки одна спроба."
|
601 |
+
msgstr[1] "У вас залишилося %d спроби."
|
602 |
+
msgstr[2] "У вас залишилося %d спроб."
|
603 |
+
|
604 |
+
#: ../wp-cerber.php:496
|
605 |
+
msgid ""
|
606 |
+
"Human verification failed. Please click the square box in the reCAPTCHA "
|
607 |
+
"block below."
|
608 |
+
msgstr ""
|
609 |
+
"Візуальна веріфікація невдала. Будь ласка клікніть на квадратик блока "
|
610 |
+
"reCAPTCHA нижче."
|
611 |
+
|
612 |
+
#: ../wp-cerber.php:602 ../wp-cerber.php:734 ../wp-cerber.php:741 ../wp-cerber.
|
613 |
+
#: php:765 ../common.php:81 ../common.php:134 ../settings.php:479
|
614 |
+
msgid "ERROR:"
|
615 |
+
msgstr "ПОМИЛКА:"
|
616 |
+
|
617 |
+
#: ../wp-cerber.php:613
|
618 |
+
#, php-format
|
619 |
+
msgid ""
|
620 |
+
"<strong>ERROR</strong>: The password you entered for the username %s is "
|
621 |
+
"incorrect."
|
622 |
+
msgstr ""
|
623 |
+
"<strong>ПОМИЛКА</strong>: Пароль, який ви ввели для імені користувача %s є "
|
624 |
+
"некоректний."
|
625 |
+
|
626 |
+
#: ../wp-cerber.php:742
|
627 |
+
msgid "Username is not allowed. Please choose another one."
|
628 |
+
msgstr "Недозволене ім'я користувача. Будь ласка, оберіть інше."
|
629 |
+
|
630 |
+
#: ../wp-cerber.php:1870
|
631 |
+
msgid "WP Cerber notify"
|
632 |
+
msgstr "Сповіщення WP Cerber"
|
633 |
+
|
634 |
+
#: ../wp-cerber.php:1888
|
635 |
+
msgid "Citadel mode is activated"
|
636 |
+
msgstr "Режим Цитадель активовано"
|
637 |
+
|
638 |
+
#: ../wp-cerber.php:1890
|
639 |
+
#, php-format
|
640 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
641 |
+
msgstr "Режим Цитадель активовано після %d невдалих спроб входу протягом %d хвилин."
|
642 |
+
|
643 |
+
#: ../wp-cerber.php:1891
|
644 |
+
#, php-format
|
645 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
646 |
+
msgstr "Остання невдала спроба відбулася %s з IP адреси %s з логіном користувача: %s."
|
647 |
+
|
648 |
+
#: ../wp-cerber.php:1892 ../wp-cerber.php:2192
|
649 |
+
msgid "View activity in dashboard"
|
650 |
+
msgstr "Переглянути активність на панелі управління"
|
651 |
+
|
652 |
+
#: ../wp-cerber.php:1914
|
653 |
+
msgid "unspecified"
|
654 |
+
msgstr "невизначена"
|
655 |
+
|
656 |
+
#: ../wp-cerber.php:1917
|
657 |
+
msgid "Number of lockouts is increasing"
|
658 |
+
msgstr "Кількість блокувань збільшується"
|
659 |
+
|
660 |
+
#: ../wp-cerber.php:1919
|
661 |
+
msgid "Number of active lockouts"
|
662 |
+
msgstr "Кількість активних блокувань"
|
663 |
+
|
664 |
+
#: ../wp-cerber.php:1920
|
665 |
+
#, php-format
|
666 |
+
msgid "Last lockout was added: %s for IP %s"
|
667 |
+
msgstr "Останнє блокування було додане: %s для IP %s"
|
668 |
+
|
669 |
+
#: ../wp-cerber.php:1922
|
670 |
+
msgid "View activity for this IP"
|
671 |
+
msgstr "Переглянути активність для цього IP"
|
672 |
+
|
673 |
+
#: ../wp-cerber.php:1923
|
674 |
+
msgid "View lockouts in dashboard"
|
675 |
+
msgstr "Переглянути блокування на панелі управління"
|
676 |
+
|
677 |
+
#: ../wp-cerber.php:1926 ../wp-cerber.php:1928
|
678 |
+
msgid "A new version of WP Cerber is available to install"
|
679 |
+
msgstr "Нова версія WP Cerber доступна для установки"
|
680 |
+
|
681 |
+
#: ../wp-cerber.php:1927
|
682 |
+
msgid "Hi!"
|
683 |
+
msgstr "Вітаємо!"
|
684 |
+
|
685 |
+
#: ../wp-cerber.php:1929 ../wp-cerber.php:1940
|
686 |
+
msgid "Website"
|
687 |
+
msgstr "Вебсайт"
|
688 |
+
|
689 |
+
#: ../wp-cerber.php:1932 ../wp-cerber.php:1933
|
690 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
691 |
+
msgstr "Плагін безпеки WP Cerber було деактивовано"
|
692 |
+
|
693 |
+
#: ../wp-cerber.php:1935
|
694 |
+
msgid "Not logged in"
|
695 |
+
msgstr "Неавторизований"
|
696 |
+
|
697 |
+
#: ../wp-cerber.php:1941
|
698 |
+
msgid "By user"
|
699 |
+
msgstr "Від користувача"
|
700 |
+
|
701 |
+
#: ../wp-cerber.php:1942
|
702 |
+
msgid "From IP address"
|
703 |
+
msgstr "З IP-адреси"
|
704 |
+
|
705 |
+
#: ../wp-cerber.php:1945
|
706 |
+
msgid "From country"
|
707 |
+
msgstr "З країни"
|
708 |
+
|
709 |
+
#: ../wp-cerber.php:1949
|
710 |
+
msgid "The WP Cerber security plugin is now active"
|
711 |
+
msgstr "Плагін безпеки WP Cerber є активний"
|
712 |
+
|
713 |
+
#: ../wp-cerber.php:1950 ../wp-cerber.php:2271
|
714 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
715 |
+
msgstr "Відтепер WP Cerber є активний і захищає ваш сайт"
|
716 |
+
|
717 |
+
#: ../wp-cerber.php:1951
|
718 |
+
msgid "Change notification settings"
|
719 |
+
msgstr "Змінити налаштування сповіщень"
|
720 |
+
|
721 |
+
#: ../wp-cerber.php:1956
|
722 |
+
msgid "New Custom login URL"
|
723 |
+
msgstr "Новий URL для входу на сайт"
|
724 |
+
|
725 |
+
#: ../wp-cerber.php:1976
|
726 |
+
msgid "This message was sent by"
|
727 |
+
msgstr "Це повідомлення було надіслано від"
|
728 |
+
|
729 |
+
#: ../wp-cerber.php:2246
|
730 |
+
#, php-format
|
731 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
732 |
+
msgstr "WP Cerber потребує PHP %s або вище. Ви використовуєте"
|
733 |
+
|
734 |
+
#: ../wp-cerber.php:2250
|
735 |
+
#, php-format
|
736 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
737 |
+
msgstr "WP Cerber потребує WordPress %s або вище. Ви використовуєте"
|
738 |
+
|
739 |
+
#: ../wp-cerber.php:2255
|
740 |
+
msgid "Can't activate WP Cerber due to a database error."
|
741 |
+
msgstr "Не вдалося активувати WP Cerber через помилку у базі даних."
|
742 |
+
|
743 |
+
#: ../wp-cerber.php:2272
|
744 |
+
msgid "Your IP address is added to the"
|
745 |
+
msgstr "Ваша IP-адреса додана до"
|
746 |
+
|
747 |
+
#: ../wp-cerber.php:2274
|
748 |
+
msgid "It's important to check security settings."
|
749 |
+
msgstr "Важливо перевірити налаштування безпеки."
|
750 |
+
|
751 |
+
#: ../wp-cerber.php:2277 ../settings.php:224
|
752 |
+
msgid "Main Settings"
|
753 |
+
msgstr "Основні налаштування"
|
754 |
+
|
755 |
+
#: ../wp-cerber.php:2279 ../settings.php:229
|
756 |
+
msgid "Hardening"
|
757 |
+
msgstr "Зміцнення безпеки"
|
758 |
+
|
759 |
+
#: ../wp-cerber.php:2280 ../settings.php:63 ../settings.php:81 ../settings.php:234
|
760 |
+
msgid "Notifications"
|
761 |
+
msgstr "Сповіщення"
|
762 |
+
|
763 |
+
#: ../wp-cerber.php:2281
|
764 |
+
msgid "Import settings"
|
765 |
+
msgstr "Імпорт налаштувань"
|
766 |
+
|
767 |
+
#: ../whois.php:211
|
768 |
+
msgid "Unknown"
|
769 |
+
msgstr "Невідомо"
|
770 |
+
|
771 |
+
#: ../common.php:253
|
772 |
+
msgid "User created"
|
773 |
+
msgstr "Користувача створено"
|
774 |
+
|
775 |
+
#: ../common.php:254
|
776 |
+
msgid "User registered"
|
777 |
+
msgstr "Користувача зареєстровано"
|
778 |
+
|
779 |
+
#: ../common.php:255
|
780 |
+
msgid "Logged in"
|
781 |
+
msgstr "Увійшов"
|
782 |
+
|
783 |
+
#: ../common.php:256
|
784 |
+
msgid "Logged out"
|
785 |
+
msgstr "Вийшов"
|
786 |
+
|
787 |
+
#: ../common.php:257
|
788 |
+
msgid "Login failed"
|
789 |
+
msgstr "Невдалий вхід"
|
790 |
+
|
791 |
+
#: ../common.php:260
|
792 |
+
msgid "IP blocked"
|
793 |
+
msgstr "IP заблоковано"
|
794 |
+
|
795 |
+
#: ../common.php:261
|
796 |
+
msgid "Subnet blocked"
|
797 |
+
msgstr "Підсітку заблоковано"
|
798 |
+
|
799 |
+
#: ../common.php:263
|
800 |
+
msgid "Citadel activated!"
|
801 |
+
msgstr "Режим Цитадель активовано!"
|
802 |
+
|
803 |
+
#: ../common.php:266
|
804 |
+
msgid "IP blacklisted"
|
805 |
+
msgstr "IP у чорному списку"
|
806 |
+
|
807 |
+
#: ../common.php:269
|
808 |
+
msgid "Password changed"
|
809 |
+
msgstr "Пароль змінено"
|
810 |
+
|
811 |
+
#: ../common.php:271
|
812 |
+
msgid "reCAPTCHA verification failed"
|
813 |
+
msgstr "Перевірка reCAPTCHA невдала"
|
814 |
+
|
815 |
+
#: ../common.php:272
|
816 |
+
msgid "reCAPTCHA settings are incorrect"
|
817 |
+
msgstr "Налаштування reCAPTCHA невірні"
|
818 |
+
|
819 |
+
#: ../common.php:275
|
820 |
+
msgid "Attempt to access prohibited URL"
|
821 |
+
msgstr "Спроба отримати доступ до забороненого URL"
|
822 |
+
|
823 |
+
#: ../common.php:276 ../common.php:288
|
824 |
+
msgid "Attempt to log in with non-existent username"
|
825 |
+
msgstr "Спроба увійти з неіснуючим ім'ям користувача"
|
826 |
+
|
827 |
+
#: ../common.php:277 ../common.php:289
|
828 |
+
msgid "Attempt to log in with prohibited username"
|
829 |
+
msgstr "Спроба увійти із забороненим ім'ям користувача"
|
830 |
+
|
831 |
+
#: ../common.php:286
|
832 |
+
msgid "Limit on login attempts is reached"
|
833 |
+
msgstr "Досягнуто ліміт для спроб входу"
|
834 |
+
|
835 |
+
#: ../common.php:287
|
836 |
+
msgid "Attempt to access"
|
837 |
+
msgstr "Спроба отримати доступ до"
|
838 |
+
|
839 |
+
#: ../common.php:351 ../settings.php:89
|
840 |
+
msgid "days"
|
841 |
+
msgstr "днів"
|
842 |
+
|
843 |
+
#: ../common.php:353 ../settings.php:61 ../settings.php:79
|
844 |
+
msgid "minutes"
|
845 |
+
msgstr "хвилин"
|
846 |
+
|
847 |
+
#: ../cerber-lab.php:419 ../settings.php:190
|
848 |
+
msgid "Know more"
|
849 |
+
msgstr "Дізнатися більше"
|
850 |
+
|
851 |
+
#: ../settings.php:59
|
852 |
+
msgid "Limit login attempts"
|
853 |
+
msgstr "Ліміт спроб входу"
|
854 |
+
|
855 |
+
#: ../settings.php:60
|
856 |
+
msgid "Attempts"
|
857 |
+
msgstr "Спроби"
|
858 |
+
|
859 |
+
#: ../settings.php:61
|
860 |
+
msgid "Lockout duration"
|
861 |
+
msgstr "Тривалість блокування"
|
862 |
+
|
863 |
+
#: ../settings.php:62
|
864 |
+
msgid "Aggressive lockout"
|
865 |
+
msgstr "Агресивне блокування"
|
866 |
+
|
867 |
+
#: ../settings.php:64
|
868 |
+
msgid "Site connection"
|
869 |
+
msgstr "Підключення сайту"
|
870 |
+
|
871 |
+
#: ../settings.php:64
|
872 |
+
msgid "My site is behind a reverse proxy"
|
873 |
+
msgstr "Мій сайт підключено через проксі сервер"
|
874 |
+
|
875 |
+
#: ../settings.php:66
|
876 |
+
msgid "Proactive security rules"
|
877 |
+
msgstr "Профілактичні правила безпеки"
|
878 |
+
|
879 |
+
#: ../settings.php:67
|
880 |
+
msgid "Block subnet"
|
881 |
+
msgstr "Блокувати підсітку"
|
882 |
+
|
883 |
+
#: ../settings.php:67
|
884 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
885 |
+
msgstr "Завжди блокувати всю подсітку класу С від IP-порушника"
|
886 |
+
|
887 |
+
#: ../settings.php:68
|
888 |
+
msgid "Non-existent users"
|
889 |
+
msgstr "Неіснуючі користувачі"
|
890 |
+
|
891 |
+
#: ../settings.php:68
|
892 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
893 |
+
msgstr "Негайно блокувати IP-адресу при спробі входу з неіснуючим ім'ям користувача"
|
894 |
+
|
895 |
+
#: ../settings.php:69
|
896 |
+
msgid "Redirect dashboard requests"
|
897 |
+
msgstr "Перенаправлення до панелі управління"
|
898 |
+
|
899 |
+
#: ../settings.php:69
|
900 |
+
msgid ""
|
901 |
+
"Disable automatic redirecting to the login page when /wp-admin/ is requested "
|
902 |
+
"by an unauthorized request"
|
903 |
+
msgstr ""
|
904 |
+
"Вимкнути автоматичне перенаправлення до сторінки авторизації коли /wp-admin/ "
|
905 |
+
"отримує неавторизований запит"
|
906 |
+
|
907 |
+
#: ../settings.php:70
|
908 |
+
msgid "Request wp-login.php"
|
909 |
+
msgstr "Запит до wp-login.php"
|
910 |
+
|
911 |
+
#: ../settings.php:70
|
912 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
913 |
+
msgstr "Негайно блокувати IP-адресу після будь-якого запиту до wp-login.php"
|
914 |
+
|
915 |
+
#: ../settings.php:73
|
916 |
+
msgid "Custom login page"
|
917 |
+
msgstr "Власна сторінка авторизації"
|
918 |
+
|
919 |
+
#: ../settings.php:74
|
920 |
+
msgid "Custom login URL"
|
921 |
+
msgstr "Власний URL сторінки авторизації"
|
922 |
+
|
923 |
+
#: ../settings.php:74
|
924 |
+
msgid "must not overlap with the existing pages or posts slug"
|
925 |
+
msgstr "не має співпадати з URL сторінок або постів, що вже існують"
|
926 |
+
|
927 |
+
#: ../settings.php:75
|
928 |
+
msgid "Disable wp-login.php"
|
929 |
+
msgstr "Відключити wp-login.php"
|
930 |
+
|
931 |
+
#: ../settings.php:75
|
932 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
933 |
+
msgstr ""
|
934 |
+
"Заблокувати прямий доступ до wp-login.php та повернути HTTP помилку 404 "
|
935 |
+
"\"Сторінку не знайдено\""
|
936 |
+
|
937 |
+
#: ../settings.php:78
|
938 |
+
msgid "Threshold"
|
939 |
+
msgstr "Поріг"
|
940 |
+
|
941 |
+
#: ../settings.php:79
|
942 |
+
msgid "Duration"
|
943 |
+
msgstr "Тривалість"
|
944 |
+
|
945 |
+
#: ../settings.php:81
|
946 |
+
msgid "Send notification to admin email"
|
947 |
+
msgstr "Надіслати сповіщення на email адміністратора"
|
948 |
+
|
949 |
+
#: ../settings.php:81 ../settings.php:339
|
950 |
+
msgid "Click to send test"
|
951 |
+
msgstr "Клікніть, щоб надіслати тестовий email"
|
952 |
+
|
953 |
+
#: ../settings.php:89
|
954 |
+
msgid "Keep records for"
|
955 |
+
msgstr "Зберігати записи не більше"
|
956 |
+
|
957 |
+
#: ../settings.php:92
|
958 |
+
msgid "Use file"
|
959 |
+
msgstr "Використовувати файл"
|
960 |
+
|
961 |
+
#: ../settings.php:92
|
962 |
+
msgid "Write failed login attempts to the file"
|
963 |
+
msgstr "Записувати невдалі спроби увійти до файлу"
|
964 |
+
|
965 |
+
#: ../settings.php:95
|
966 |
+
msgid "Drill down IP"
|
967 |
+
msgstr "Деталізувати інформацію про IP"
|
968 |
+
|
969 |
+
#: ../settings.php:95
|
970 |
+
msgid "Retrieve extra WHOIS information for IP"
|
971 |
+
msgstr "Отримати додаткову інформацію WHOIS для IP"
|
972 |
+
|
973 |
+
#: ../settings.php:103
|
974 |
+
msgid "Hardening WordPress"
|
975 |
+
msgstr "Зміцнення безпеки WordPress"
|
976 |
+
|
977 |
+
#: ../settings.php:104
|
978 |
+
msgid "Stop user enumeration"
|
979 |
+
msgstr "Відключити доступ до користувача за його ID"
|
980 |
+
|
981 |
+
#: ../settings.php:104
|
982 |
+
msgid "Block access to the pages like /?author=n"
|
983 |
+
msgstr "Блокувати доступ до сторінок таких як /?author=n"
|
984 |
+
|
985 |
+
#: ../settings.php:105
|
986 |
+
msgid "Disable XML-RPC"
|
987 |
+
msgstr "Відключити XML-RPC"
|
988 |
+
|
989 |
+
#: ../settings.php:105
|
990 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
991 |
+
msgstr "Блокувати доступ до XML-RPC серверу (включаючі Pingbacks та Trackbacks)"
|
992 |
+
|
993 |
+
#: ../settings.php:106
|
994 |
+
msgid "Disable feeds"
|
995 |
+
msgstr "Відключити канали (feeds)"
|
996 |
+
|
997 |
+
#: ../settings.php:106
|
998 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
999 |
+
msgstr "Блокувати доступ до RSS, Atom та RDF канали (feeds)"
|
1000 |
+
|
1001 |
+
#: ../settings.php:107
|
1002 |
+
msgid "Disable REST API"
|
1003 |
+
msgstr "Відключити REST API"
|
1004 |
+
|
1005 |
+
#: ../settings.php:107
|
1006 |
+
msgid "Block access to the WordPress REST API"
|
1007 |
+
msgstr "Блокувати доступ до WordPress REST API"
|
1008 |
+
|
1009 |
+
#: ../settings.php:115
|
1010 |
+
msgid "User related settings"
|
1011 |
+
msgstr "Налаштування, що стосуються користувача"
|
1012 |
+
|
1013 |
+
#: ../settings.php:116
|
1014 |
+
msgid "Prohibited usernames"
|
1015 |
+
msgstr "Заборонені імена користувачів"
|
1016 |
+
|
1017 |
+
#: ../settings.php:116
|
1018 |
+
msgid ""
|
1019 |
+
"Usernames from this list are not allowed to log in or register. Any IP "
|
1020 |
+
"address, have tried to use any of these usernames, will be immediately "
|
1021 |
+
"blocked. Use comma to separate logins."
|
1022 |
+
msgstr ""
|
1023 |
+
"Імена користувачів з цього списку не дозволені для входу або реєстрації. "
|
1024 |
+
"Будь-яка IP-адреса, яка спробує використати одне з цих імен, буде негайно "
|
1025 |
+
"заблокована. Використовуйте кому, щоб розділити імена."
|
1026 |
+
|
1027 |
+
#: ../settings.php:117
|
1028 |
+
msgid "User session expire"
|
1029 |
+
msgstr "Сесія користувача збігає за"
|
1030 |
+
|
1031 |
+
#: ../settings.php:117
|
1032 |
+
msgid "in minutes (leave empty to use default WP value)"
|
1033 |
+
msgstr "у хвилинах (якщо порожнє - стандартне значення WP)"
|
1034 |
+
|
1035 |
+
#: ../settings.php:124
|
1036 |
+
msgid "Site key"
|
1037 |
+
msgstr "Ключ сайта (Site key)"
|
1038 |
+
|
1039 |
+
#: ../settings.php:125
|
1040 |
+
msgid "Secret key"
|
1041 |
+
msgstr "Секретний ключ (Secret key)"
|
1042 |
+
|
1043 |
+
#: ../settings.php:130
|
1044 |
+
msgid "Lost password form"
|
1045 |
+
msgstr "Форма відновлення втраченого паролю"
|
1046 |
+
|
1047 |
+
#: ../settings.php:133
|
1048 |
+
msgid "Login form"
|
1049 |
+
msgstr "Форма входу"
|
1050 |
+
|
1051 |
+
#: ../settings.php:142
|
1052 |
+
msgid "Email Address"
|
1053 |
+
msgstr "Email адреса"
|
1054 |
+
|
1055 |
+
#: ../settings.php:142
|
1056 |
+
#, php-format
|
1057 |
+
msgid "if empty, the admin email %s will be used"
|
1058 |
+
msgstr "якщо порожнє, email адміністратора %s буде використано"
|
1059 |
+
|
1060 |
+
#: ../settings.php:143
|
1061 |
+
msgid "Notification limit"
|
1062 |
+
msgstr "Ліміт сповіщень"
|
1063 |
+
|
1064 |
+
#: ../settings.php:143
|
1065 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
1066 |
+
msgstr "листів зі сповіщеннями дозволено протягом години (0 означає нелімітовано)"
|
1067 |
+
|
1068 |
+
#: ../settings.php:166
|
1069 |
+
msgid "Make your protection smarter!"
|
1070 |
+
msgstr "Зробіть ваш захист розумнішим!"
|
1071 |
+
|
1072 |
+
#: ../settings.php:170
|
1073 |
+
msgid ""
|
1074 |
+
"Please enable Permalinks to use this feature. Set Permalink Settings to "
|
1075 |
+
"something other than Default."
|
1076 |
+
msgstr "Будь ласка, активуйте \"Постійні посилання\", щоб використовувати цю опцію."
|
1077 |
+
|
1078 |
+
#: ../settings.php:173
|
1079 |
+
msgid ""
|
1080 |
+
"Be careful when enabling this options. If you forget the custom login URL "
|
1081 |
+
"you will not be able to login."
|
1082 |
+
msgstr ""
|
1083 |
+
"Будьте уважними при установці цих параметрів. Якщо ви забудете URL сторінки "
|
1084 |
+
"авторизації, ви не зможете увійти."
|
1085 |
+
|
1086 |
+
#: ../settings.php:177
|
1087 |
+
msgid ""
|
1088 |
+
"In Citadel mode nobody is able to login. Active user's sessions will not be "
|
1089 |
+
"affected."
|
1090 |
+
msgstr ""
|
1091 |
+
"У режимі Цитадeль ніхто не може увійти на сайт. Активні сесії користувачів "
|
1092 |
+
"лишаться недоторканими."
|
1093 |
+
|
1094 |
+
#: ../settings.php:184
|
1095 |
+
msgid "These settings do not affect hosts from the "
|
1096 |
+
msgstr "Ці налаштування не впливають на хости з"
|
1097 |
+
|
1098 |
+
#: ../settings.php:189
|
1099 |
+
msgid ""
|
1100 |
+
"Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
|
1101 |
+
"key on the Google website"
|
1102 |
+
msgstr ""
|
1103 |
+
"Перед тим, як використовувати reCAPTCHA, ви маєте отримати ключ сайта (Site "
|
1104 |
+
"key) та секретний ключ (Secret key) на сайті Гугла"
|
1105 |
+
|
1106 |
+
#: ../settings.php:231
|
1107 |
+
msgid "Users"
|
1108 |
+
msgstr "Користувачі"
|
1109 |
+
|
1110 |
+
#: ../settings.php:238
|
1111 |
+
msgid "Help"
|
1112 |
+
msgstr "Допомога"
|
1113 |
+
|
1114 |
+
#: ../settings.php:325
|
1115 |
+
#, php-format
|
1116 |
+
msgid "%s allowed retries in %s minutes"
|
1117 |
+
msgstr "%s дозволених спроб за %s хвилин"
|
1118 |
+
|
1119 |
+
#: ../settings.php:330
|
1120 |
+
#, php-format
|
1121 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
1122 |
+
msgstr ""
|
1123 |
+
"Збільшити тривалість блокування до %s годин після %s блокувань протягом "
|
1124 |
+
"останніх %s годин"
|
1125 |
+
|
1126 |
+
#: ../settings.php:337
|
1127 |
+
msgid "Notify admin if the number of active lockouts above"
|
1128 |
+
msgstr "Сповіщати адміністратора, якщо кількість активних блокувань перевищує"
|
1129 |
+
|
1130 |
+
#: ../settings.php:342
|
1131 |
+
#, php-format
|
1132 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
1133 |
+
msgstr "Активувати після %s невдалих спроб за останні %s хвилин"
|
1134 |
+
|
1135 |
+
#: ../settings.php:426
|
1136 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
1137 |
+
msgstr "Увага! Ви змінили URL входу! Новий URL входу"
|
1138 |
+
|
1139 |
+
#: ../settings.php:501
|
1140 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
1141 |
+
msgstr ""
|
1142 |
+
"<strong>ПОМИЛКА</strong>: будь ласка, введіть дійсну адресу електронної "
|
1143 |
+
"пошти."
|
1144 |
+
|
1145 |
+
#: ../cerber-tools.php:55
|
1146 |
+
msgid "Export settings to the file"
|
1147 |
+
msgstr "Експортувати налаштування у файл"
|
1148 |
+
|
1149 |
+
#: ../cerber-tools.php:56
|
1150 |
+
msgid ""
|
1151 |
+
"When you click the button below you will get a configuration file, which you "
|
1152 |
+
"can upload on another site."
|
1153 |
+
msgstr ""
|
1154 |
+
"Коли ви натиснете кнопку нижче, ви отримаєте конфігураційний файл, який "
|
1155 |
+
"зможете завантажити на інший сайт."
|
1156 |
+
|
1157 |
+
#: ../cerber-tools.php:57
|
1158 |
+
msgid "What do you want to export?"
|
1159 |
+
msgstr "Що ви хочете експортувати?"
|
1160 |
+
|
1161 |
+
#: ../cerber-tools.php:58 ../cerber-tools.php:67
|
1162 |
+
msgid "Settings"
|
1163 |
+
msgstr "Налаштування"
|
1164 |
+
|
1165 |
+
#: ../cerber-tools.php:60
|
1166 |
+
msgid "Download file"
|
1167 |
+
msgstr "Завантажити файл"
|
1168 |
+
|
1169 |
+
#: ../cerber-tools.php:62
|
1170 |
+
msgid "Import settings from the file"
|
1171 |
+
msgstr "Імпортувати налаштування з файлу"
|
1172 |
+
|
1173 |
+
#: ../cerber-tools.php:63
|
1174 |
+
msgid ""
|
1175 |
+
"When you click the button below, file will be uploaded and all existing "
|
1176 |
+
"settings will be overridden."
|
1177 |
+
msgstr ""
|
1178 |
+
"Коли ви натиснете кнопку нижче, файл буде завантажено, і всі існуючі "
|
1179 |
+
"налаштування будуть перезаписані."
|
1180 |
+
|
1181 |
+
#: ../cerber-tools.php:64
|
1182 |
+
msgid "Select file to import."
|
1183 |
+
msgstr "Обрати файл для імпорту."
|
1184 |
+
|
1185 |
+
#: ../cerber-tools.php:64
|
1186 |
+
#, php-format
|
1187 |
+
msgid "Maximum upload file size: %s."
|
1188 |
+
msgstr "Максимальний розмір файла: %s."
|
1189 |
+
|
1190 |
+
#: ../cerber-tools.php:67
|
1191 |
+
msgid "What do you want to import?"
|
1192 |
+
msgstr "Що ви хочете імпортувати?"
|
1193 |
+
|
1194 |
+
#: ../cerber-tools.php:69
|
1195 |
+
msgid "Upload file"
|
1196 |
+
msgstr "Завантажити файл"
|
1197 |
+
|
1198 |
+
#: ../cerber-tools.php:148
|
1199 |
+
msgid "No file was uploaded or file is corrupted"
|
1200 |
+
msgstr "Файл не було завантажено або файл пошкоджено"
|
1201 |
+
|
1202 |
+
#: ../cerber-tools.php:178
|
1203 |
+
msgid "Error while updating"
|
1204 |
+
msgstr "Помилка при оновленні"
|
1205 |
+
|
1206 |
+
#: ../cerber-tools.php:181
|
1207 |
+
msgid "Settings has imported successfully from"
|
1208 |
+
msgstr "Налаштування були успішно імпортовані з"
|
1209 |
+
|
1210 |
+
#: ../cerber-tools.php:185
|
1211 |
+
msgid "Error while parsing file"
|
1212 |
+
msgstr "Помилка під час парсингу файла"
|
1213 |
+
|
1214 |
+
#: ../cerber-tools.php:195
|
1215 |
+
msgid "reCAPTCHA settings"
|
1216 |
+
msgstr "Налаштування reCAPTCHA"
|
languages/wp-cerber.pot
ADDED
@@ -0,0 +1,1286 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Loco Gettext template
|
2 |
+
#, fuzzy
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: WP Cerber\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
|
8 |
+
"POT-Revision-Date: Wed Aug 16 2017 17:10:17 GMT+0300\n"
|
9 |
+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
10 |
+
"Last-Translator: \n"
|
11 |
+
"Language-Team: \n"
|
12 |
+
"Language: \n"
|
13 |
+
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n"
|
14 |
+
"MIME-Version: 1.0\n"
|
15 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
+
"Content-Transfer-Encoding: 8bit\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-Basepath: .\n"
|
19 |
+
"X-Poedit-SearchPath-0: ..\n"
|
20 |
+
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
|
21 |
+
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
|
22 |
+
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
|
23 |
+
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
|
24 |
+
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
|
25 |
+
"X-Generator: Loco - https://localise.biz/"
|
26 |
+
|
27 |
+
#: ../dashboard.php:74 ../dashboard.php:123
|
28 |
+
msgid "Remove"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
#: ../dashboard.php:77 ../dashboard.php:502 ../wp-cerber.php:2696
|
32 |
+
msgid "IP"
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: ../dashboard.php:77 ../dashboard.php:502
|
36 |
+
msgid "Hostname"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: ../dashboard.php:77
|
40 |
+
msgid "Expires"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
#: ../dashboard.php:77 ../wp-cerber.php:2402
|
44 |
+
msgid "Reason"
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: ../dashboard.php:77
|
48 |
+
msgid "Action"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#: ../dashboard.php:83
|
52 |
+
#, php-format
|
53 |
+
msgid "Showing last %d records from %d"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: ../dashboard.php:85
|
57 |
+
msgid "Hint"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: ../dashboard.php:85
|
61 |
+
msgid "To view activity, click on the IP"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: ../dashboard.php:89
|
65 |
+
msgid "No lockouts at the moment. The sky is clear."
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: ../dashboard.php:102 ../dashboard.php:483 ../dashboard.php:663 ../dashboard.
|
69 |
+
#: php:902 ../wp-cerber.php:2822 ../settings.php:61 ../settings.php:192
|
70 |
+
msgid "White IP Access List"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: ../dashboard.php:102
|
74 |
+
msgid "These IPs will never be locked out"
|
75 |
+
msgstr ""
|
76 |
+
|
77 |
+
#: ../dashboard.php:104 ../dashboard.php:484 ../dashboard.php:665 ../dashboard.
|
78 |
+
#: php:903
|
79 |
+
msgid "Black IP Access List"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: ../dashboard.php:104
|
83 |
+
msgid "Nobody can log in or register from these IPs"
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: ../dashboard.php:106
|
87 |
+
msgid "Your IP"
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
+
#: ../dashboard.php:123 ../dashboard.php:695
|
91 |
+
msgid "Check for activity"
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
#: ../dashboard.php:126
|
95 |
+
msgid "List is empty"
|
96 |
+
msgstr ""
|
97 |
+
|
98 |
+
#: ../dashboard.php:130
|
99 |
+
msgid "Add IP to the list"
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: ../dashboard.php:150 ../dashboard.php:158
|
103 |
+
msgid "Incorrect IP address or IP range"
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: ../dashboard.php:153
|
107 |
+
#, php-format
|
108 |
+
msgid "Address %s was added to White IP Access List"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: ../dashboard.php:162
|
112 |
+
msgid "You can't add your IP address"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: ../dashboard.php:166
|
116 |
+
#, php-format
|
117 |
+
msgid "Address %s was added to Black IP Access List"
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
#: ../dashboard.php:237
|
121 |
+
msgid "unknown"
|
122 |
+
msgstr ""
|
123 |
+
|
124 |
+
#: ../dashboard.php:259
|
125 |
+
msgid "Message has been sent to "
|
126 |
+
msgstr ""
|
127 |
+
|
128 |
+
#: ../dashboard.php:262
|
129 |
+
msgid "Unable to send notification email"
|
130 |
+
msgstr ""
|
131 |
+
|
132 |
+
#: ../dashboard.php:270
|
133 |
+
#, php-format
|
134 |
+
msgid "Lockout for %s was removed"
|
135 |
+
msgstr ""
|
136 |
+
|
137 |
+
#: ../dashboard.php:287 ../dashboard.php:1220
|
138 |
+
msgid "Settings saved"
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: ../dashboard.php:355
|
142 |
+
msgid "IP address"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
146 |
+
msgid "Date"
|
147 |
+
msgstr ""
|
148 |
+
|
149 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
150 |
+
msgid "Event"
|
151 |
+
msgstr ""
|
152 |
+
|
153 |
+
#: ../dashboard.php:355 ../dashboard.php:502
|
154 |
+
msgid "Local User"
|
155 |
+
msgstr ""
|
156 |
+
|
157 |
+
#: ../dashboard.php:355
|
158 |
+
msgid "User login"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
+
#: ../dashboard.php:355
|
162 |
+
msgid "User ID"
|
163 |
+
msgstr ""
|
164 |
+
|
165 |
+
#: ../dashboard.php:355 ../dashboard.php:502 ../wp-cerber.php:2704
|
166 |
+
msgid "Username used"
|
167 |
+
msgstr ""
|
168 |
+
|
169 |
+
#: ../dashboard.php:488 ../dashboard.php:668 ../common.php:347
|
170 |
+
msgid "Locked out"
|
171 |
+
msgstr ""
|
172 |
+
|
173 |
+
#: ../dashboard.php:511
|
174 |
+
msgid "Export"
|
175 |
+
msgstr ""
|
176 |
+
|
177 |
+
#: ../dashboard.php:515
|
178 |
+
msgid "No activity has been logged."
|
179 |
+
msgstr ""
|
180 |
+
|
181 |
+
#: ../dashboard.php:521
|
182 |
+
msgid "All activities"
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
#: ../dashboard.php:530
|
186 |
+
msgid "Search for IP or username"
|
187 |
+
msgstr ""
|
188 |
+
|
189 |
+
#: ../dashboard.php:530
|
190 |
+
msgid "Filter"
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: ../dashboard.php:691
|
194 |
+
msgid "Abuse email:"
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: ../dashboard.php:695
|
198 |
+
msgid "Network:"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: ../dashboard.php:709
|
202 |
+
msgid "Add network to the Black List"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
#: ../dashboard.php:713
|
206 |
+
msgid "Add IP to the Black List"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
+
#: ../dashboard.php:744 ../settings.php:215
|
210 |
+
msgid "WP Cerber Security"
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
#. Name of the plugin
|
214 |
+
#: ../dashboard.php:744 ../dashboard.php:759
|
215 |
+
msgid "WP Cerber"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#: ../dashboard.php:746
|
219 |
+
msgid "Cerber Dashboard"
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
#: ../dashboard.php:746 ../dashboard.php:910 ../dashboard.php:1412 ../settings.
|
223 |
+
#: php:220
|
224 |
+
msgid "Dashboard"
|
225 |
+
msgstr ""
|
226 |
+
|
227 |
+
#: ../dashboard.php:748
|
228 |
+
msgid "Cerber antispam settings"
|
229 |
+
msgstr ""
|
230 |
+
|
231 |
+
#: ../dashboard.php:748 ../settings.php:143
|
232 |
+
msgid "Antispam"
|
233 |
+
msgstr ""
|
234 |
+
|
235 |
+
#: ../dashboard.php:749
|
236 |
+
msgid "Cerber tools"
|
237 |
+
msgstr ""
|
238 |
+
|
239 |
+
#: ../dashboard.php:749 ../cerber-tools.php:43
|
240 |
+
msgid "Tools"
|
241 |
+
msgstr ""
|
242 |
+
|
243 |
+
#: ../dashboard.php:802
|
244 |
+
msgid "Comments"
|
245 |
+
msgstr ""
|
246 |
+
|
247 |
+
#: ../dashboard.php:803
|
248 |
+
msgid "Last login"
|
249 |
+
msgstr ""
|
250 |
+
|
251 |
+
#: ../dashboard.php:804
|
252 |
+
msgid "Failed attempts in last 24 hours"
|
253 |
+
msgstr ""
|
254 |
+
|
255 |
+
#: ../dashboard.php:805
|
256 |
+
msgid "Date of registration"
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: ../dashboard.php:830 ../dashboard.php:885
|
260 |
+
msgid "Never"
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: ../dashboard.php:854
|
264 |
+
msgid "Cerber Quick View"
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: ../dashboard.php:889
|
268 |
+
msgid "active"
|
269 |
+
msgstr ""
|
270 |
+
|
271 |
+
#: ../dashboard.php:889
|
272 |
+
msgid "deactivate"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: ../dashboard.php:891
|
276 |
+
msgid "not active"
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
#: ../dashboard.php:892
|
280 |
+
msgid "disabled"
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: ../dashboard.php:897
|
284 |
+
msgid "failed attempts"
|
285 |
+
msgstr ""
|
286 |
+
|
287 |
+
#: ../dashboard.php:897 ../dashboard.php:898
|
288 |
+
msgid "in 24 hours"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
#: ../dashboard.php:897 ../dashboard.php:898
|
292 |
+
msgid "view all"
|
293 |
+
msgstr ""
|
294 |
+
|
295 |
+
#: ../dashboard.php:898
|
296 |
+
msgid "lockouts"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: ../dashboard.php:900
|
300 |
+
msgid "Lockouts at the moment"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
#: ../dashboard.php:901
|
304 |
+
msgid "Last lockout"
|
305 |
+
msgstr ""
|
306 |
+
|
307 |
+
#: ../dashboard.php:902 ../dashboard.php:903 ../dashboard.php:1392
|
308 |
+
msgid "entry"
|
309 |
+
msgid_plural "entries"
|
310 |
+
msgstr[0] ""
|
311 |
+
msgstr[1] ""
|
312 |
+
|
313 |
+
#: ../dashboard.php:904 ../settings.php:76
|
314 |
+
msgid "Citadel mode"
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: ../dashboard.php:906 ../settings.php:157
|
318 |
+
msgid "Push notifications"
|
319 |
+
msgstr ""
|
320 |
+
|
321 |
+
#: ../dashboard.php:911 ../dashboard.php:1082 ../wp-cerber.php:2695 ../settings.
|
322 |
+
#: php:82 ../settings.php:222
|
323 |
+
msgid "Activity"
|
324 |
+
msgstr ""
|
325 |
+
|
326 |
+
#: ../dashboard.php:912 ../settings.php:226
|
327 |
+
msgid "Lockouts"
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: ../dashboard.php:913 ../dashboard.php:1413 ../wp-cerber.php:2828 ../settings.
|
331 |
+
#: php:231 ../cerber-tools.php:87 ../cerber-tools.php:96 ../cerber-tools.php:162
|
332 |
+
msgid "Access Lists"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: ../dashboard.php:1048
|
336 |
+
msgid "Malicious activities mitigated"
|
337 |
+
msgstr ""
|
338 |
+
|
339 |
+
#: ../dashboard.php:1049
|
340 |
+
msgid "Spam comments denied"
|
341 |
+
msgstr ""
|
342 |
+
|
343 |
+
#: ../dashboard.php:1050
|
344 |
+
msgid "Malicious IP addresses detected"
|
345 |
+
msgstr ""
|
346 |
+
|
347 |
+
#: ../dashboard.php:1051
|
348 |
+
msgid "Lockouts occurred"
|
349 |
+
msgstr ""
|
350 |
+
|
351 |
+
#: ../dashboard.php:1052
|
352 |
+
msgid "Locked out IP now"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: ../dashboard.php:1068 ../dashboard.php:1097
|
356 |
+
msgid "View all"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: ../dashboard.php:1076 ../common.php:334
|
360 |
+
msgid "User registered"
|
361 |
+
msgstr ""
|
362 |
+
|
363 |
+
#: ../dashboard.php:1077
|
364 |
+
msgid "All suspicious activity"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: ../dashboard.php:1098
|
368 |
+
msgid "Recently locked out IP addresses"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: ../dashboard.php:1120
|
372 |
+
msgid "Confused about some settings?"
|
373 |
+
msgstr ""
|
374 |
+
|
375 |
+
#: ../dashboard.php:1121
|
376 |
+
msgid "You can easily load default recommended settings using button below"
|
377 |
+
msgstr ""
|
378 |
+
|
379 |
+
#: ../dashboard.php:1123
|
380 |
+
msgid "Load default settings"
|
381 |
+
msgstr ""
|
382 |
+
|
383 |
+
#: ../dashboard.php:1125
|
384 |
+
msgid "Are you sure?"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: ../dashboard.php:1131
|
388 |
+
msgid "doesn't affect Custom login URL and Access Lists"
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
#: ../dashboard.php:1150
|
392 |
+
msgid "Donate"
|
393 |
+
msgstr ""
|
394 |
+
|
395 |
+
#: ../dashboard.php:1203
|
396 |
+
msgid "Attention! Citadel mode is now active. Nobody is able to log in."
|
397 |
+
msgstr ""
|
398 |
+
|
399 |
+
#: ../dashboard.php:1204
|
400 |
+
msgid "Deactivate"
|
401 |
+
msgstr ""
|
402 |
+
|
403 |
+
#: ../dashboard.php:1205
|
404 |
+
msgid "View Activity"
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
#: ../dashboard.php:1280
|
408 |
+
msgid "New version is available"
|
409 |
+
msgstr ""
|
410 |
+
|
411 |
+
#: ../dashboard.php:1286
|
412 |
+
#, php-format
|
413 |
+
msgid "Update to version %s of WP Cerber"
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#: ../dashboard.php:1325
|
417 |
+
msgid "Subscribe"
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
#: ../dashboard.php:1326
|
421 |
+
msgid "Unsubscribe"
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
#: ../dashboard.php:1354
|
425 |
+
msgid "You've subscribed"
|
426 |
+
msgstr ""
|
427 |
+
|
428 |
+
#: ../dashboard.php:1357
|
429 |
+
msgid "You've unsubscribed"
|
430 |
+
msgstr ""
|
431 |
+
|
432 |
+
#. URI of the plugin
|
433 |
+
msgid "http://wpcerber.com"
|
434 |
+
msgstr ""
|
435 |
+
|
436 |
+
#. Description of the plugin
|
437 |
+
msgid ""
|
438 |
+
"Protects site from brute force attacks, bots and hackers. Antispam "
|
439 |
+
"protection with reCAPTCHA. Comprehensive control of user activity. Restrict "
|
440 |
+
"login by IP access lists. Limit login attempts. Know more: <a href=\"http:"
|
441 |
+
"//wpcerber.com\">wpcerber.com</a>."
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
#. Author of the plugin
|
445 |
+
msgid "Gregory"
|
446 |
+
msgstr ""
|
447 |
+
|
448 |
+
#: ../wp-cerber.php:215
|
449 |
+
msgid "You are not allowed to log in. Ask your administrator for assistance."
|
450 |
+
msgstr ""
|
451 |
+
|
452 |
+
#: ../wp-cerber.php:221
|
453 |
+
#, php-format
|
454 |
+
msgid "You have reached the login attempts limit. Please try again in %d minutes."
|
455 |
+
msgstr ""
|
456 |
+
|
457 |
+
#: ../wp-cerber.php:240
|
458 |
+
#, php-format
|
459 |
+
msgid "You have only one attempt remaining."
|
460 |
+
msgid_plural "You have %d attempts remaining."
|
461 |
+
msgstr[0] ""
|
462 |
+
msgstr[1] ""
|
463 |
+
|
464 |
+
#: ../wp-cerber.php:560 ../wp-cerber.php:572 ../wp-cerber.php:579 ../wp-cerber.
|
465 |
+
#: php:717 ../wp-cerber.php:922 ../wp-cerber.php:927 ../wp-cerber.php:932 ../wp-
|
466 |
+
#: cerber.php:938 ../wp-cerber.php:968 ../wp-cerber.php:1062 ../common.php:128 ..
|
467 |
+
#: /common.php:181 ../common.php:185 ../settings.php:513
|
468 |
+
msgid "ERROR:"
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
#: ../wp-cerber.php:589
|
472 |
+
msgid ""
|
473 |
+
"Human verification failed. Please click the square box in the reCAPTCHA "
|
474 |
+
"block below."
|
475 |
+
msgstr ""
|
476 |
+
|
477 |
+
#: ../wp-cerber.php:728
|
478 |
+
#, php-format
|
479 |
+
msgid ""
|
480 |
+
"<strong>ERROR</strong>: The password you entered for the username %s is "
|
481 |
+
"incorrect."
|
482 |
+
msgstr ""
|
483 |
+
|
484 |
+
#: ../wp-cerber.php:923 ../wp-cerber.php:939
|
485 |
+
msgid "You are not allowed to register."
|
486 |
+
msgstr ""
|
487 |
+
|
488 |
+
#: ../wp-cerber.php:933
|
489 |
+
msgid "Username is not allowed. Please choose another one."
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
#: ../wp-cerber.php:1062
|
493 |
+
msgid "Sorry, human verification failed."
|
494 |
+
msgstr ""
|
495 |
+
|
496 |
+
#: ../wp-cerber.php:2348
|
497 |
+
msgid "WP Cerber notify"
|
498 |
+
msgstr ""
|
499 |
+
|
500 |
+
#: ../wp-cerber.php:2366
|
501 |
+
msgid "Citadel mode is activated"
|
502 |
+
msgstr ""
|
503 |
+
|
504 |
+
#: ../wp-cerber.php:2368
|
505 |
+
#, php-format
|
506 |
+
msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
|
507 |
+
msgstr ""
|
508 |
+
|
509 |
+
#: ../wp-cerber.php:2369
|
510 |
+
#, php-format
|
511 |
+
msgid "Last failed attempt was at %s from IP %s with user login: %s."
|
512 |
+
msgstr ""
|
513 |
+
|
514 |
+
#: ../wp-cerber.php:2370 ../wp-cerber.php:2720
|
515 |
+
msgid "View activity in dashboard"
|
516 |
+
msgstr ""
|
517 |
+
|
518 |
+
#: ../wp-cerber.php:2395
|
519 |
+
msgid "unspecified"
|
520 |
+
msgstr ""
|
521 |
+
|
522 |
+
#: ../wp-cerber.php:2398
|
523 |
+
msgid "Number of lockouts is increasing"
|
524 |
+
msgstr ""
|
525 |
+
|
526 |
+
#: ../wp-cerber.php:2400
|
527 |
+
msgid "Number of active lockouts"
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
#: ../wp-cerber.php:2401
|
531 |
+
#, php-format
|
532 |
+
msgid "Last lockout was added: %s for IP %s"
|
533 |
+
msgstr ""
|
534 |
+
|
535 |
+
#: ../wp-cerber.php:2403
|
536 |
+
msgid "View activity for this IP"
|
537 |
+
msgstr ""
|
538 |
+
|
539 |
+
#: ../wp-cerber.php:2404
|
540 |
+
msgid "View lockouts in dashboard"
|
541 |
+
msgstr ""
|
542 |
+
|
543 |
+
#: ../wp-cerber.php:2407 ../wp-cerber.php:2409
|
544 |
+
msgid "A new version of WP Cerber is available to install"
|
545 |
+
msgstr ""
|
546 |
+
|
547 |
+
#: ../wp-cerber.php:2408
|
548 |
+
msgid "Hi!"
|
549 |
+
msgstr ""
|
550 |
+
|
551 |
+
#: ../wp-cerber.php:2410 ../wp-cerber.php:2421
|
552 |
+
msgid "Website"
|
553 |
+
msgstr ""
|
554 |
+
|
555 |
+
#: ../wp-cerber.php:2413 ../wp-cerber.php:2414
|
556 |
+
msgid "The WP Cerber security plugin has been deactivated"
|
557 |
+
msgstr ""
|
558 |
+
|
559 |
+
#: ../wp-cerber.php:2416
|
560 |
+
msgid "Not logged in"
|
561 |
+
msgstr ""
|
562 |
+
|
563 |
+
#: ../wp-cerber.php:2422
|
564 |
+
msgid "By user"
|
565 |
+
msgstr ""
|
566 |
+
|
567 |
+
#: ../wp-cerber.php:2423
|
568 |
+
msgid "From IP address"
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
#: ../wp-cerber.php:2426
|
572 |
+
msgid "From country"
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: ../wp-cerber.php:2430
|
576 |
+
msgid "The WP Cerber security plugin is now active"
|
577 |
+
msgstr ""
|
578 |
+
|
579 |
+
#: ../wp-cerber.php:2431 ../wp-cerber.php:2821
|
580 |
+
msgid "WP Cerber is now active and has started protecting your site"
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
#: ../wp-cerber.php:2432
|
584 |
+
msgid "Change notification settings"
|
585 |
+
msgstr ""
|
586 |
+
|
587 |
+
#: ../wp-cerber.php:2437
|
588 |
+
msgid "New Custom login URL"
|
589 |
+
msgstr ""
|
590 |
+
|
591 |
+
#: ../wp-cerber.php:2441 ../wp-cerber.php:2442
|
592 |
+
msgid "A new activity has been recorded"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
#: ../wp-cerber.php:2457
|
596 |
+
msgid "This message was sent by"
|
597 |
+
msgstr ""
|
598 |
+
|
599 |
+
#: ../wp-cerber.php:2700
|
600 |
+
msgid "User"
|
601 |
+
msgstr ""
|
602 |
+
|
603 |
+
#: ../wp-cerber.php:2708
|
604 |
+
msgid "Search string"
|
605 |
+
msgstr ""
|
606 |
+
|
607 |
+
#: ../wp-cerber.php:2721
|
608 |
+
msgid "To unsubscribe click here"
|
609 |
+
msgstr ""
|
610 |
+
|
611 |
+
#: ../wp-cerber.php:2796
|
612 |
+
#, php-format
|
613 |
+
msgid "The WP Cerber requires PHP %s or higher. You are running"
|
614 |
+
msgstr ""
|
615 |
+
|
616 |
+
#: ../wp-cerber.php:2800
|
617 |
+
#, php-format
|
618 |
+
msgid "The WP Cerber requires WordPress %s or higher. You are running"
|
619 |
+
msgstr ""
|
620 |
+
|
621 |
+
#: ../wp-cerber.php:2805
|
622 |
+
msgid "Can't activate WP Cerber due to a database error."
|
623 |
+
msgstr ""
|
624 |
+
|
625 |
+
#: ../wp-cerber.php:2822
|
626 |
+
msgid "Your IP address is added to the"
|
627 |
+
msgstr ""
|
628 |
+
|
629 |
+
#: ../wp-cerber.php:2824
|
630 |
+
msgid "It's important to check security settings."
|
631 |
+
msgstr ""
|
632 |
+
|
633 |
+
#: ../wp-cerber.php:2827 ../settings.php:228
|
634 |
+
msgid "Main Settings"
|
635 |
+
msgstr ""
|
636 |
+
|
637 |
+
#: ../wp-cerber.php:2829 ../settings.php:233
|
638 |
+
msgid "Hardening"
|
639 |
+
msgstr ""
|
640 |
+
|
641 |
+
#: ../wp-cerber.php:2830 ../settings.php:62 ../settings.php:80 ../settings.php:238
|
642 |
+
msgid "Notifications"
|
643 |
+
msgstr ""
|
644 |
+
|
645 |
+
#: ../wp-cerber.php:2831
|
646 |
+
msgid "Import settings"
|
647 |
+
msgstr ""
|
648 |
+
|
649 |
+
#: ../whois.php:210 ../common.php:374
|
650 |
+
msgid "Unknown"
|
651 |
+
msgstr ""
|
652 |
+
|
653 |
+
#: ../common.php:333
|
654 |
+
msgid "User created"
|
655 |
+
msgstr ""
|
656 |
+
|
657 |
+
#: ../common.php:335
|
658 |
+
msgid "Logged in"
|
659 |
+
msgstr ""
|
660 |
+
|
661 |
+
#: ../common.php:336
|
662 |
+
msgid "Logged out"
|
663 |
+
msgstr ""
|
664 |
+
|
665 |
+
#: ../common.php:337
|
666 |
+
msgid "Login failed"
|
667 |
+
msgstr ""
|
668 |
+
|
669 |
+
#: ../common.php:340
|
670 |
+
msgid "IP blocked"
|
671 |
+
msgstr ""
|
672 |
+
|
673 |
+
#: ../common.php:341
|
674 |
+
msgid "Subnet blocked"
|
675 |
+
msgstr ""
|
676 |
+
|
677 |
+
#: ../common.php:343
|
678 |
+
msgid "Citadel activated!"
|
679 |
+
msgstr ""
|
680 |
+
|
681 |
+
#: ../common.php:344
|
682 |
+
msgid "Spam comment denied"
|
683 |
+
msgstr ""
|
684 |
+
|
685 |
+
#: ../common.php:348
|
686 |
+
msgid "IP blacklisted"
|
687 |
+
msgstr ""
|
688 |
+
|
689 |
+
#: ../common.php:350
|
690 |
+
msgid "by Cerber Lab"
|
691 |
+
msgstr ""
|
692 |
+
|
693 |
+
#: ../common.php:354
|
694 |
+
msgid "Password changed"
|
695 |
+
msgstr ""
|
696 |
+
|
697 |
+
#: ../common.php:355
|
698 |
+
msgid "Password reset requested"
|
699 |
+
msgstr ""
|
700 |
+
|
701 |
+
#: ../common.php:357
|
702 |
+
msgid "reCAPTCHA verification failed"
|
703 |
+
msgstr ""
|
704 |
+
|
705 |
+
#: ../common.php:358
|
706 |
+
msgid "reCAPTCHA settings are incorrect"
|
707 |
+
msgstr ""
|
708 |
+
|
709 |
+
#: ../common.php:359
|
710 |
+
msgid "Request to the Google reCAPTCHA service failed"
|
711 |
+
msgstr ""
|
712 |
+
|
713 |
+
#: ../common.php:361
|
714 |
+
msgid "Attempt to access prohibited URL"
|
715 |
+
msgstr ""
|
716 |
+
|
717 |
+
#: ../common.php:362 ../common.php:377
|
718 |
+
msgid "Attempt to log in with non-existent username"
|
719 |
+
msgstr ""
|
720 |
+
|
721 |
+
#: ../common.php:363 ../common.php:378
|
722 |
+
msgid "Attempt to log in with prohibited username"
|
723 |
+
msgstr ""
|
724 |
+
|
725 |
+
#: ../common.php:365
|
726 |
+
msgid "Attempt to log in denied"
|
727 |
+
msgstr ""
|
728 |
+
|
729 |
+
#: ../common.php:366
|
730 |
+
msgid "Attempt to register denied"
|
731 |
+
msgstr ""
|
732 |
+
|
733 |
+
#: ../common.php:375
|
734 |
+
msgid "Limit on login attempts is reached"
|
735 |
+
msgstr ""
|
736 |
+
|
737 |
+
#: ../common.php:376
|
738 |
+
msgid "Attempt to access"
|
739 |
+
msgstr ""
|
740 |
+
|
741 |
+
#: ../common.php:379
|
742 |
+
msgid "Limit on failed reCAPTCHA verifications is reached"
|
743 |
+
msgstr ""
|
744 |
+
|
745 |
+
#: ../common.php:380
|
746 |
+
msgid "Bot activity is detected"
|
747 |
+
msgstr ""
|
748 |
+
|
749 |
+
#: ../common.php:432
|
750 |
+
#, php-format
|
751 |
+
msgid "%s ago"
|
752 |
+
msgstr ""
|
753 |
+
|
754 |
+
#: ../cerber-lab.php:576
|
755 |
+
msgid "Want to make WP Cerber even more powerful?"
|
756 |
+
msgstr ""
|
757 |
+
|
758 |
+
#: ../cerber-lab.php:577
|
759 |
+
msgid ""
|
760 |
+
"Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
|
761 |
+
"This helps the plugin team to develop new algorithms for WP Cerber that will "
|
762 |
+
"defend WordPress against new threats and botnets that are appearing "
|
763 |
+
"everyday. You can disable the sending in the plugin settings at any time."
|
764 |
+
msgstr ""
|
765 |
+
|
766 |
+
#: ../cerber-lab.php:578
|
767 |
+
msgid "OK, nail them all"
|
768 |
+
msgstr ""
|
769 |
+
|
770 |
+
#: ../cerber-lab.php:579
|
771 |
+
msgid "NO, maybe later"
|
772 |
+
msgstr ""
|
773 |
+
|
774 |
+
#: ../cerber-lab.php:580 ../settings.php:196
|
775 |
+
msgid "Know more"
|
776 |
+
msgstr ""
|
777 |
+
|
778 |
+
#: ../settings.php:57
|
779 |
+
msgid "Limit login attempts"
|
780 |
+
msgstr ""
|
781 |
+
|
782 |
+
#: ../settings.php:58
|
783 |
+
msgid "Attempts"
|
784 |
+
msgstr ""
|
785 |
+
|
786 |
+
#: ../settings.php:59
|
787 |
+
msgid "Lockout duration"
|
788 |
+
msgstr ""
|
789 |
+
|
790 |
+
#: ../settings.php:59 ../settings.php:78
|
791 |
+
msgid "minutes"
|
792 |
+
msgstr ""
|
793 |
+
|
794 |
+
#: ../settings.php:60
|
795 |
+
msgid "Aggressive lockout"
|
796 |
+
msgstr ""
|
797 |
+
|
798 |
+
#: ../settings.php:61
|
799 |
+
msgid "Apply limit login rules to IP addresses in the White IP Access List"
|
800 |
+
msgstr ""
|
801 |
+
|
802 |
+
#: ../settings.php:63
|
803 |
+
msgid "Site connection"
|
804 |
+
msgstr ""
|
805 |
+
|
806 |
+
#: ../settings.php:63
|
807 |
+
msgid "My site is behind a reverse proxy"
|
808 |
+
msgstr ""
|
809 |
+
|
810 |
+
#: ../settings.php:65
|
811 |
+
msgid "Proactive security rules"
|
812 |
+
msgstr ""
|
813 |
+
|
814 |
+
#: ../settings.php:66
|
815 |
+
msgid "Block subnet"
|
816 |
+
msgstr ""
|
817 |
+
|
818 |
+
#: ../settings.php:66
|
819 |
+
msgid "Always block entire subnet Class C of intruders IP"
|
820 |
+
msgstr ""
|
821 |
+
|
822 |
+
#: ../settings.php:67
|
823 |
+
msgid "Non-existent users"
|
824 |
+
msgstr ""
|
825 |
+
|
826 |
+
#: ../settings.php:67
|
827 |
+
msgid "Immediately block IP when attempting to login with a non-existent username"
|
828 |
+
msgstr ""
|
829 |
+
|
830 |
+
#: ../settings.php:68
|
831 |
+
msgid "Redirect dashboard requests"
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
#: ../settings.php:68
|
835 |
+
msgid ""
|
836 |
+
"Disable automatic redirecting to the login page when /wp-admin/ is requested "
|
837 |
+
"by an unauthorized request"
|
838 |
+
msgstr ""
|
839 |
+
|
840 |
+
#: ../settings.php:69
|
841 |
+
msgid "Request wp-login.php"
|
842 |
+
msgstr ""
|
843 |
+
|
844 |
+
#: ../settings.php:69
|
845 |
+
msgid "Immediately block IP after any request to wp-login.php"
|
846 |
+
msgstr ""
|
847 |
+
|
848 |
+
#: ../settings.php:70
|
849 |
+
msgid "Display 404 page"
|
850 |
+
msgstr ""
|
851 |
+
|
852 |
+
#: ../settings.php:72
|
853 |
+
msgid "Custom login page"
|
854 |
+
msgstr ""
|
855 |
+
|
856 |
+
#: ../settings.php:73
|
857 |
+
msgid "Custom login URL"
|
858 |
+
msgstr ""
|
859 |
+
|
860 |
+
#: ../settings.php:73
|
861 |
+
msgid "must not overlap with the existing pages or posts slug"
|
862 |
+
msgstr ""
|
863 |
+
|
864 |
+
#: ../settings.php:74
|
865 |
+
msgid "Disable wp-login.php"
|
866 |
+
msgstr ""
|
867 |
+
|
868 |
+
#: ../settings.php:74
|
869 |
+
msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
|
870 |
+
msgstr ""
|
871 |
+
|
872 |
+
#: ../settings.php:77
|
873 |
+
msgid "Threshold"
|
874 |
+
msgstr ""
|
875 |
+
|
876 |
+
#: ../settings.php:78
|
877 |
+
msgid "Duration"
|
878 |
+
msgstr ""
|
879 |
+
|
880 |
+
#: ../settings.php:80
|
881 |
+
msgid "Send notification to admin email"
|
882 |
+
msgstr ""
|
883 |
+
|
884 |
+
#: ../settings.php:80 ../settings.php:367
|
885 |
+
msgid "Click to send test"
|
886 |
+
msgstr ""
|
887 |
+
|
888 |
+
#: ../settings.php:83
|
889 |
+
msgid "Keep records for"
|
890 |
+
msgstr ""
|
891 |
+
|
892 |
+
#: ../settings.php:83 ../settings.php:126
|
893 |
+
msgid "days"
|
894 |
+
msgstr ""
|
895 |
+
|
896 |
+
#: ../settings.php:84
|
897 |
+
msgid "Cerber Lab connection"
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
#: ../settings.php:84
|
901 |
+
msgid "Send malicious IP addresses to the Cerber Lab"
|
902 |
+
msgstr ""
|
903 |
+
|
904 |
+
#: ../settings.php:85
|
905 |
+
msgid "Cerber Lab protocol"
|
906 |
+
msgstr ""
|
907 |
+
|
908 |
+
#: ../settings.php:86
|
909 |
+
msgid "Use file"
|
910 |
+
msgstr ""
|
911 |
+
|
912 |
+
#: ../settings.php:86
|
913 |
+
msgid "Write failed login attempts to the file"
|
914 |
+
msgstr ""
|
915 |
+
|
916 |
+
#: ../settings.php:88
|
917 |
+
msgid "Preferences"
|
918 |
+
msgstr ""
|
919 |
+
|
920 |
+
#: ../settings.php:89
|
921 |
+
msgid "Drill down IP"
|
922 |
+
msgstr ""
|
923 |
+
|
924 |
+
#: ../settings.php:89
|
925 |
+
msgid "Retrieve extra WHOIS information for IP"
|
926 |
+
msgstr ""
|
927 |
+
|
928 |
+
#: ../settings.php:90
|
929 |
+
msgid "Date format"
|
930 |
+
msgstr ""
|
931 |
+
|
932 |
+
#: ../settings.php:90
|
933 |
+
#, php-format
|
934 |
+
msgid "if empty, the default format %s will be used"
|
935 |
+
msgstr ""
|
936 |
+
|
937 |
+
#: ../settings.php:97
|
938 |
+
msgid "Hardening WordPress"
|
939 |
+
msgstr ""
|
940 |
+
|
941 |
+
#: ../settings.php:98
|
942 |
+
msgid "Stop user enumeration"
|
943 |
+
msgstr ""
|
944 |
+
|
945 |
+
#: ../settings.php:98
|
946 |
+
msgid "Block access to the pages like /?author=n"
|
947 |
+
msgstr ""
|
948 |
+
|
949 |
+
#: ../settings.php:99
|
950 |
+
msgid "Disable XML-RPC"
|
951 |
+
msgstr ""
|
952 |
+
|
953 |
+
#: ../settings.php:99
|
954 |
+
msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
|
955 |
+
msgstr ""
|
956 |
+
|
957 |
+
#: ../settings.php:100
|
958 |
+
msgid "Disable feeds"
|
959 |
+
msgstr ""
|
960 |
+
|
961 |
+
#: ../settings.php:100
|
962 |
+
msgid "Block access to the RSS, Atom and RDF feeds"
|
963 |
+
msgstr ""
|
964 |
+
|
965 |
+
#: ../settings.php:101
|
966 |
+
msgid "Disable REST API"
|
967 |
+
msgstr ""
|
968 |
+
|
969 |
+
#: ../settings.php:101
|
970 |
+
msgid "Block access to the WordPress REST API"
|
971 |
+
msgstr ""
|
972 |
+
|
973 |
+
#: ../settings.php:110
|
974 |
+
msgid "User related settings"
|
975 |
+
msgstr ""
|
976 |
+
|
977 |
+
#: ../settings.php:111
|
978 |
+
msgid "Prohibited usernames"
|
979 |
+
msgstr ""
|
980 |
+
|
981 |
+
#: ../settings.php:111
|
982 |
+
msgid ""
|
983 |
+
"Usernames from this list are not allowed to log in or register. Any IP "
|
984 |
+
"address, have tried to use any of these usernames, will be immediately "
|
985 |
+
"blocked. Use comma to separate logins."
|
986 |
+
msgstr ""
|
987 |
+
|
988 |
+
#: ../settings.php:112
|
989 |
+
msgid "User session expire"
|
990 |
+
msgstr ""
|
991 |
+
|
992 |
+
#: ../settings.php:112
|
993 |
+
msgid "in minutes (leave empty to use default WP value)"
|
994 |
+
msgstr ""
|
995 |
+
|
996 |
+
#: ../settings.php:119
|
997 |
+
msgid "Cerber antispam engine"
|
998 |
+
msgstr ""
|
999 |
+
|
1000 |
+
#: ../settings.php:120
|
1001 |
+
msgid "Comment form"
|
1002 |
+
msgstr ""
|
1003 |
+
|
1004 |
+
#: ../settings.php:120
|
1005 |
+
msgid "Protect comment form with bot detection engine"
|
1006 |
+
msgstr ""
|
1007 |
+
|
1008 |
+
#: ../settings.php:121 ../settings.php:134
|
1009 |
+
msgid "Registration form"
|
1010 |
+
msgstr ""
|
1011 |
+
|
1012 |
+
#: ../settings.php:121
|
1013 |
+
msgid "Protect registration form with bot detection engine"
|
1014 |
+
msgstr ""
|
1015 |
+
|
1016 |
+
#: ../settings.php:124
|
1017 |
+
msgid "Comment processing"
|
1018 |
+
msgstr ""
|
1019 |
+
|
1020 |
+
#: ../settings.php:125
|
1021 |
+
msgid "If a spam comment detected"
|
1022 |
+
msgstr ""
|
1023 |
+
|
1024 |
+
#: ../settings.php:126
|
1025 |
+
msgid "Trash spam comments"
|
1026 |
+
msgstr ""
|
1027 |
+
|
1028 |
+
#: ../settings.php:126
|
1029 |
+
msgid "Move spam comments to trash after"
|
1030 |
+
msgstr ""
|
1031 |
+
|
1032 |
+
#: ../settings.php:129
|
1033 |
+
msgid "reCAPTCHA settings"
|
1034 |
+
msgstr ""
|
1035 |
+
|
1036 |
+
#: ../settings.php:130
|
1037 |
+
msgid "Site key"
|
1038 |
+
msgstr ""
|
1039 |
+
|
1040 |
+
#: ../settings.php:131
|
1041 |
+
msgid "Secret key"
|
1042 |
+
msgstr ""
|
1043 |
+
|
1044 |
+
#: ../settings.php:132
|
1045 |
+
msgid "Invisible reCAPTCHA"
|
1046 |
+
msgstr ""
|
1047 |
+
|
1048 |
+
#: ../settings.php:132
|
1049 |
+
msgid "Enable invisible reCAPTCHA"
|
1050 |
+
msgstr ""
|
1051 |
+
|
1052 |
+
#: ../settings.php:132
|
1053 |
+
msgid ""
|
1054 |
+
"(do not enable it unless you get and enter the Site and Secret keys for the "
|
1055 |
+
"invisible version)"
|
1056 |
+
msgstr ""
|
1057 |
+
|
1058 |
+
#: ../settings.php:134
|
1059 |
+
msgid "Enable reCAPTCHA for WordPress registration form"
|
1060 |
+
msgstr ""
|
1061 |
+
|
1062 |
+
#: ../settings.php:135
|
1063 |
+
msgid "Enable reCAPTCHA for WooCommerce registration form"
|
1064 |
+
msgstr ""
|
1065 |
+
|
1066 |
+
#: ../settings.php:137
|
1067 |
+
msgid "Lost password form"
|
1068 |
+
msgstr ""
|
1069 |
+
|
1070 |
+
#: ../settings.php:137
|
1071 |
+
msgid "Enable reCAPTCHA for WordPress lost password form"
|
1072 |
+
msgstr ""
|
1073 |
+
|
1074 |
+
#: ../settings.php:138
|
1075 |
+
msgid "Enable reCAPTCHA for WooCommerce lost password form"
|
1076 |
+
msgstr ""
|
1077 |
+
|
1078 |
+
#: ../settings.php:140
|
1079 |
+
msgid "Login form"
|
1080 |
+
msgstr ""
|
1081 |
+
|
1082 |
+
#: ../settings.php:140
|
1083 |
+
msgid "Enable reCAPTCHA for WordPress login form"
|
1084 |
+
msgstr ""
|
1085 |
+
|
1086 |
+
#: ../settings.php:141
|
1087 |
+
msgid "Enable reCAPTCHA for WooCommerce login form"
|
1088 |
+
msgstr ""
|
1089 |
+
|
1090 |
+
#: ../settings.php:143
|
1091 |
+
msgid "Enable reCAPTCHA for WordPress comment form"
|
1092 |
+
msgstr ""
|
1093 |
+
|
1094 |
+
#: ../settings.php:144
|
1095 |
+
msgid "Disable reCAPTCHA for logged in users"
|
1096 |
+
msgstr ""
|
1097 |
+
|
1098 |
+
#: ../settings.php:146
|
1099 |
+
msgid "Limit attempts"
|
1100 |
+
msgstr ""
|
1101 |
+
|
1102 |
+
#: ../settings.php:146
|
1103 |
+
#, php-format
|
1104 |
+
msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
|
1105 |
+
msgstr ""
|
1106 |
+
|
1107 |
+
#: ../settings.php:152
|
1108 |
+
msgid "Email notifications"
|
1109 |
+
msgstr ""
|
1110 |
+
|
1111 |
+
#: ../settings.php:154
|
1112 |
+
msgid "Email Address"
|
1113 |
+
msgstr ""
|
1114 |
+
|
1115 |
+
#: ../settings.php:154
|
1116 |
+
msgid "Use comma to specify multiple values"
|
1117 |
+
msgstr ""
|
1118 |
+
|
1119 |
+
#: ../settings.php:154
|
1120 |
+
#, php-format
|
1121 |
+
msgid "if empty, the admin email %s will be used"
|
1122 |
+
msgstr ""
|
1123 |
+
|
1124 |
+
#: ../settings.php:155
|
1125 |
+
msgid "Notification limit"
|
1126 |
+
msgstr ""
|
1127 |
+
|
1128 |
+
#: ../settings.php:155
|
1129 |
+
msgid "notification letters allowed per hour (0 means unlimited)"
|
1130 |
+
msgstr ""
|
1131 |
+
|
1132 |
+
#: ../settings.php:164
|
1133 |
+
msgid "All connected devices"
|
1134 |
+
msgstr ""
|
1135 |
+
|
1136 |
+
#: ../settings.php:165
|
1137 |
+
msgid "No devices found"
|
1138 |
+
msgstr ""
|
1139 |
+
|
1140 |
+
#: ../settings.php:167
|
1141 |
+
msgid "Not available"
|
1142 |
+
msgstr ""
|
1143 |
+
|
1144 |
+
#: ../settings.php:178
|
1145 |
+
msgid "Make your protection smarter!"
|
1146 |
+
msgstr ""
|
1147 |
+
|
1148 |
+
#: ../settings.php:182
|
1149 |
+
msgid ""
|
1150 |
+
"Please enable Permalinks to use this feature. Set Permalink Settings to "
|
1151 |
+
"something other than Default."
|
1152 |
+
msgstr ""
|
1153 |
+
|
1154 |
+
#: ../settings.php:185
|
1155 |
+
msgid ""
|
1156 |
+
"Be careful when enabling this options. If you forget the custom login URL "
|
1157 |
+
"you will not be able to login."
|
1158 |
+
msgstr ""
|
1159 |
+
|
1160 |
+
#: ../settings.php:189
|
1161 |
+
msgid ""
|
1162 |
+
"In the Citadel mode nobody is able to log in except IPs from the White IP "
|
1163 |
+
"Access List. Active user sessions will not be affected."
|
1164 |
+
msgstr ""
|
1165 |
+
|
1166 |
+
#: ../settings.php:192
|
1167 |
+
msgid "These settings do not affect hosts from the "
|
1168 |
+
msgstr ""
|
1169 |
+
|
1170 |
+
#: ../settings.php:195
|
1171 |
+
msgid ""
|
1172 |
+
"Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
|
1173 |
+
"key on the Google website"
|
1174 |
+
msgstr ""
|
1175 |
+
|
1176 |
+
#: ../settings.php:235
|
1177 |
+
msgid "Users"
|
1178 |
+
msgstr ""
|
1179 |
+
|
1180 |
+
#: ../settings.php:240
|
1181 |
+
msgid "Help"
|
1182 |
+
msgstr ""
|
1183 |
+
|
1184 |
+
#: ../settings.php:353
|
1185 |
+
#, php-format
|
1186 |
+
msgid "%s allowed retries in %s minutes"
|
1187 |
+
msgstr ""
|
1188 |
+
|
1189 |
+
#: ../settings.php:358
|
1190 |
+
#, php-format
|
1191 |
+
msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
|
1192 |
+
msgstr ""
|
1193 |
+
|
1194 |
+
#: ../settings.php:365
|
1195 |
+
msgid "Notify admin if the number of active lockouts above"
|
1196 |
+
msgstr ""
|
1197 |
+
|
1198 |
+
#: ../settings.php:370
|
1199 |
+
#, php-format
|
1200 |
+
msgid "Enable after %s failed login attempts in last %s minutes"
|
1201 |
+
msgstr ""
|
1202 |
+
|
1203 |
+
#: ../settings.php:460
|
1204 |
+
msgid "Attention! You have changed the login URL! The new login URL is"
|
1205 |
+
msgstr ""
|
1206 |
+
|
1207 |
+
#: ../settings.php:540
|
1208 |
+
msgid "<strong>ERROR</strong>: please enter a valid email address."
|
1209 |
+
msgstr ""
|
1210 |
+
|
1211 |
+
#: ../cerber-tools.php:48
|
1212 |
+
msgid "Export & Import"
|
1213 |
+
msgstr ""
|
1214 |
+
|
1215 |
+
#: ../cerber-tools.php:49
|
1216 |
+
msgid "Diagnostic"
|
1217 |
+
msgstr ""
|
1218 |
+
|
1219 |
+
#: ../cerber-tools.php:83
|
1220 |
+
msgid "Export settings to the file"
|
1221 |
+
msgstr ""
|
1222 |
+
|
1223 |
+
#: ../cerber-tools.php:84
|
1224 |
+
msgid ""
|
1225 |
+
"When you click the button below you will get a configuration file, which you "
|
1226 |
+
"can upload on another site."
|
1227 |
+
msgstr ""
|
1228 |
+
|
1229 |
+
#: ../cerber-tools.php:85
|
1230 |
+
msgid "What do you want to export?"
|
1231 |
+
msgstr ""
|
1232 |
+
|
1233 |
+
#: ../cerber-tools.php:86 ../cerber-tools.php:95
|
1234 |
+
msgid "Settings"
|
1235 |
+
msgstr ""
|
1236 |
+
|
1237 |
+
#: ../cerber-tools.php:88
|
1238 |
+
msgid "Download file"
|
1239 |
+
msgstr ""
|
1240 |
+
|
1241 |
+
#: ../cerber-tools.php:90
|
1242 |
+
msgid "Import settings from the file"
|
1243 |
+
msgstr ""
|
1244 |
+
|
1245 |
+
#: ../cerber-tools.php:91
|
1246 |
+
msgid ""
|
1247 |
+
"When you click the button below, file will be uploaded and all existing "
|
1248 |
+
"settings will be overridden."
|
1249 |
+
msgstr ""
|
1250 |
+
|
1251 |
+
#: ../cerber-tools.php:92
|
1252 |
+
msgid "Select file to import."
|
1253 |
+
msgstr ""
|
1254 |
+
|
1255 |
+
#: ../cerber-tools.php:92
|
1256 |
+
#, php-format
|
1257 |
+
msgid "Maximum upload file size: %s."
|
1258 |
+
msgstr ""
|
1259 |
+
|
1260 |
+
#: ../cerber-tools.php:95
|
1261 |
+
msgid "What do you want to import?"
|
1262 |
+
msgstr ""
|
1263 |
+
|
1264 |
+
#: ../cerber-tools.php:97
|
1265 |
+
msgid "Upload file"
|
1266 |
+
msgstr ""
|
1267 |
+
|
1268 |
+
#: ../cerber-tools.php:132
|
1269 |
+
msgid "No file was uploaded or file is corrupted"
|
1270 |
+
msgstr ""
|
1271 |
+
|
1272 |
+
#: ../cerber-tools.php:162
|
1273 |
+
msgid "Error while updating"
|
1274 |
+
msgstr ""
|
1275 |
+
|
1276 |
+
#: ../cerber-tools.php:165
|
1277 |
+
msgid "Settings has imported successfully from"
|
1278 |
+
msgstr ""
|
1279 |
+
|
1280 |
+
#: ../cerber-tools.php:169
|
1281 |
+
msgid "Error while parsing file"
|
1282 |
+
msgstr ""
|
1283 |
+
|
1284 |
+
#: ../cerber-tools.php:267
|
1285 |
+
msgid "Antispam and bot detection settings"
|
1286 |
+
msgstr ""
|
readme.txt
ADDED
@@ -0,0 +1,447 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Cerber Security & Limit Login Attempts ===
|
2 |
+
Contributors: gioni
|
3 |
+
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SR8RJXFU35EW8
|
4 |
+
Tags: security, login, custom login, protect, antispam, woocommerce, recaptcha, captcha, activity, log, logging, block, fail2ban, monitoring, rename wp login, whitelist, blacklist, wordpress security, xmlrpc, user enumeration, hardening, authentication, notification, pushbullet, brute force, bruteforce, users
|
5 |
+
Requires at least: 4.4
|
6 |
+
Tested up to: 4.8.1
|
7 |
+
Stable tag: 5.0
|
8 |
+
License: GPLv2
|
9 |
+
|
10 |
+
Protection against hacker attacks and bots. Restrict access with IP access lists, track user and bot activity. reCAPTCHA. Limit login attempts.
|
11 |
+
|
12 |
+
== Description ==
|
13 |
+
|
14 |
+
Defends WordPress against brute force attacks by limiting the number of login attempts through the login form, XML-RPC / REST API requests or using auth cookies.
|
15 |
+
Restricts access with a Black IP Access List and a White IP Access List.
|
16 |
+
Tracks user and intruder activity with powerful email, mobile and desktop notifications.
|
17 |
+
Stop spam: activates reCAPTCHA for protecting registration and comments forms.
|
18 |
+
Hardening WordPress.
|
19 |
+
|
20 |
+
**Features you will love**
|
21 |
+
|
22 |
+
* Limit login attempts when logging in by IP address or entire subnet.
|
23 |
+
* Monitors logins made by login forms, XML-RPC requests or auth cookies.
|
24 |
+
* Permit or restrict access by [White IP Access list and Black IP Access List](http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/) with a single IP, IP range or subnet.
|
25 |
+
* Log all activities related to the logging in/out process.
|
26 |
+
* Cool notifications with powerful filters
|
27 |
+
* Hide wp-login.php, wp-signup.php and wp-register.php from possible attacks and return 404 HTTP Error.
|
28 |
+
* Hide wp-admin (dashboard) and return 404 HTTP Error when a user isn't logged in.
|
29 |
+
* Create **Custom login URL** ([rename wp-login.php](http://wpcerber.com/how-to-rename-wp-login-php/)).
|
30 |
+
* Immediately block IP or subnet when attempting to log in with non-existent or prohibited username.
|
31 |
+
* Disable WP REST API
|
32 |
+
* Disable XML-RPC (block access to the XML-RPC interface including Pingbacks and Trackbacks)
|
33 |
+
* Disable feeds (block access to the RSS, Atom and RDF feeds)
|
34 |
+
* Restrict access to XML-RPC, REST API and feeds by **White IP Access list** with IP or IP range.
|
35 |
+
* Disable automatic redirecting to login page.
|
36 |
+
* **Stop user enumeration** (block access to the pages like /?author=n)
|
37 |
+
* Proactively **block IP subnet class C** for intruder's IP.
|
38 |
+
* Antispam: **reCAPTCHA** to protect WordPress register and comment forms.
|
39 |
+
* [reCAPTCHA for WooCommerce & WordPress forms](http://wpcerber.com/how-to-setup-recaptcha/).
|
40 |
+
* Invisible reCAPTCHA for WordPress comments forms
|
41 |
+
* Citadel mode for **massive brute force attack**.
|
42 |
+
* [Play nice with **fail2ban**](http://wpcerber.com/how-to-protect-wordpress-with-fail2ban/): write failed attempts to the syslog or a custom log file.
|
43 |
+
* Filter out and inspect activities by IP address, user, username or a particular activity.
|
44 |
+
* Filter out activities and export them to a CSV file.
|
45 |
+
* Limit login attempts works on a site/server behind a reverse proxy.
|
46 |
+
* [Notifications by email or mobile push notifications](http://wpcerber.com/wordpress-notifications-made-easy/).
|
47 |
+
* Trigger and action for the [jetFlow.io automation plugin](http://jetflow.io).
|
48 |
+
|
49 |
+
= Limit login attempts done right =
|
50 |
+
|
51 |
+
By default, WordPress allows unlimited login attempts through the login form, XML-RPC or by sending special cookies. This allows passwords to be cracked with relative ease via brute force attack.
|
52 |
+
|
53 |
+
WP Cerber blocks intruders by IP or subnet from making further attempts after a specified limit on retries is reached, making brute force attacks or distributed brute force attacks from botnets impossible.
|
54 |
+
|
55 |
+
You will be able to create a **Black IP Access List** or **White IP Access List** to block or allow logins from a particular IP address, IP address range or a subnet any class (A,B,C).
|
56 |
+
|
57 |
+
Moreover, you can create your Custom login page and forget about automatic attacks to the default wp-login.php, which takes your attention and consumes a lot of server resources. If an attacker tries to access wp-login.php they will be blocked and get a 404 Error response.
|
58 |
+
|
59 |
+
= Log, filter out and export activities =
|
60 |
+
|
61 |
+
WP Cerber tracks time, IP addresses and usernames for successful and failed login attempts, logins, logouts, password changes, blocked IP and actions taken by itself. You can export them to a CSV file.
|
62 |
+
|
63 |
+
= Limit login attempts reinvented =
|
64 |
+
|
65 |
+
You can **hide WordPress dashboard** (/wp-admin/) when a user isn't logged in. If a user isn't logged in and they attempt to access the dashboard by requesting /wp-admin/, WP Cerber will return a 404 Error.
|
66 |
+
|
67 |
+
Massive botnet brute force attack? That's no longer a problem. **Citadel mode** will automatically be activated for awhile and prevent your site from making further attempts to log in with any username.
|
68 |
+
|
69 |
+
= Antispam protection: invisible reCAPTCHA for WooCommerce =
|
70 |
+
|
71 |
+
* WooCommerce login form
|
72 |
+
* WooCommerce register form
|
73 |
+
* WooCommerce lost password form
|
74 |
+
|
75 |
+
= Antispam protection: invisible reCAPTCHA for WordPress =
|
76 |
+
|
77 |
+
* WordPress login form
|
78 |
+
* WordPress register form
|
79 |
+
* WordPress lost password form
|
80 |
+
* WordPress comment form
|
81 |
+
|
82 |
+
**Documentation & Tutorials**
|
83 |
+
|
84 |
+
* [How to set up notifications](http://wpcerber.com/wordpress-notifications-made-easy/)
|
85 |
+
* [Push notifications with Pushbullet](http://wpcerber.com/wordpress-mobile-and-browser-notifications-pushbullet/)
|
86 |
+
* [How to set up invisible reCAPTCHA for WooCommerce](http://wpcerber.com/how-to-setup-recaptcha/)
|
87 |
+
* [Changing default plugin messages](http://wpcerber.com/wordpress-hooks/)
|
88 |
+
* [Best alternatives to the Clef plugin](http://wpcerber.com/two-factor-authentication-plugins-for-wordpress/)
|
89 |
+
* [Why reCAPTCHA does not protect WordPress from bots and brute-force attacks](http://wpcerber.com/why-recaptcha-does-not-protect-wordpress/)
|
90 |
+
|
91 |
+
**Translations**
|
92 |
+
|
93 |
+
* Czech, thanks to [Hrohh](https://profiles.wordpress.org/hrohh/)
|
94 |
+
* Deutsche, thanks to mario, Mike and [Daniel](http://detacu.de)
|
95 |
+
* Dutch, thanks to [Bernardo](https://twitter.com/bernardohulsman)
|
96 |
+
* Français, thanks to [hardesfred](https://profiles.wordpress.org/hardesfred/)
|
97 |
+
* Norwegian (Bokmål), thanks to [Eirik Vorland](https://www.facebook.com/KjellDaSensei)
|
98 |
+
* Portuguese, thanks to [Felipe Turcheti](http://felipeturcheti.com)
|
99 |
+
* Polski, thanks to [Wojciech Górski](https://www.facebook.com/profile.php?id=100010484049780)
|
100 |
+
* Spanish, thanks to Ismael Murias and [leemon](https://profiles.wordpress.org/leemon/)
|
101 |
+
* Український, thanks to [Nadia](https://profiles.wordpress.org/webbistro)
|
102 |
+
* Русский, thanks to [Yui](https://profiles.wordpress.org/fierevere/)
|
103 |
+
* Italian, thanks to [Francesco Venuti](http://www.algostream.it/)
|
104 |
+
|
105 |
+
Thanks to [POEditor.com](https://poeditor.com) for helping to translate this project.
|
106 |
+
|
107 |
+
There are some semi-similar security plugins you can check out: Login LockDown, Login Security Solution,
|
108 |
+
BruteProtect, Ajax Login & Register, Lockdown WP Admin,
|
109 |
+
BulletProof Security, SiteGuard WP Plugin, All In One WP Security & Firewall, Brute Force Login Protection
|
110 |
+
|
111 |
+
**Another reliable plugins from the trusted author**
|
112 |
+
|
113 |
+
* [Plugin Inspector reveals issues with installed plugins](https://wordpress.org/plugins/plugin-inspector/)
|
114 |
+
|
115 |
+
Checks plugins for deprecated WordPress functions, known security vulnerabilities, and some unsafe PHP functions
|
116 |
+
|
117 |
+
* [Translate sites with Google Translate Widget](https://wordpress.org/plugins/goo-translate-widget/)
|
118 |
+
|
119 |
+
Make your website instantly available in 90+ languages with Google Translate Widget. Add the power of Google automatic translations with one click.
|
120 |
+
|
121 |
+
== Installation ==
|
122 |
+
|
123 |
+
Installing the WP Cerber security plugin is the same as other WordPress plugins.
|
124 |
+
|
125 |
+
1. Install the plugin through Plugins > Add New > Upload or unzip plugin package into wp-content/plugins/.
|
126 |
+
2. Activate the WP Cerber through the Plugins > Installed Plugins menu in the WordPress admin dashboard.
|
127 |
+
3. The plugin is now active and has started protecting your WordPress with default settings.
|
128 |
+
4. Make sure, that you received a notification letter with your site admin email.
|
129 |
+
|
130 |
+
**Important notes**
|
131 |
+
|
132 |
+
1. Before enabling invisible reCAPTCHA, you must get separate keys for invisible version. [How to enable reCAPTCHA](http://wpcerber.com/how-to-setup-recaptcha/).
|
133 |
+
2. If you want to test out plugin's features, do this from another computer and remove that computer's network from the White Access List. Cerber is smart enough to recognize "the boss".
|
134 |
+
3. If you've set up the Custom login URL and you use some caching plugin like **W3 Total Cache** or **WP Super Cache**, you have to add a new Custom login URL to the list of pages not to cache.
|
135 |
+
4. [Read this if your website is under CloudFlare](http://wpcerber.com/cloudflare-and-wordpress-cerber/)
|
136 |
+
5. If you use the Jetpack plugin or another plugin that needs to connect to wordpress.com, you need to unlock XML-RPC. To do that go to the Hardening tab, uncheck Disable XML-RPC, and click the Save changes button.
|
137 |
+
|
138 |
+
The following steps are optional but they allow you to reinforce the protection of your WordPress.
|
139 |
+
|
140 |
+
1. Fine tune **Limit login attempts** settings making them more restrictive according to your needs
|
141 |
+
2. Configure your **Custom login URL** and remember it (the plugin will send you an email with it).
|
142 |
+
3. Once you have configured Custom login URL, check 'Immediately block IP after any request to wp-login.php' and 'Block direct access to wp-login.php and return HTTP 404 Not Found Error'. Don't use wp-admin to log in to your WordPress dashboard anymore.
|
143 |
+
4. If your WordPress has a few experienced users, check 'Immediately block IP when attempting to log in with a non-existent username'.
|
144 |
+
5. Specify the list of prohibited usernames (logins) that legit users will never use. They will not be allowed to log in and register in any circumstances.
|
145 |
+
6. Configure mobile and browser notifications via Pushbullet.
|
146 |
+
7. Obtain keys and enable invisible reCAPTCHA for password reset and registration forms (WooCommerce supported too).
|
147 |
+
|
148 |
+
|
149 |
+
== Frequently Asked Questions ==
|
150 |
+
|
151 |
+
= Can I use the plugin with CloudFlare? =
|
152 |
+
|
153 |
+
Yes. [WP Cerber settings for CloudFlare](http://wpcerber.com/cloudflare-and-wordpress-cerber/).
|
154 |
+
|
155 |
+
= Is this plugin compatible with WordPress multisite mode? =
|
156 |
+
|
157 |
+
Yes. All settings apply to all sites in the network simultaneously. You have to activate the plugin in the Network Admin area on the Plugins page. Just click on the Network Activate link.
|
158 |
+
|
159 |
+
= Is WP Cerber compatible with bbPress? =
|
160 |
+
|
161 |
+
Yes. [Compatibility notes](http://wpcerber.com/compatibility/).
|
162 |
+
|
163 |
+
= Is this plugin compatible with WooCommerce? =
|
164 |
+
|
165 |
+
Completely.
|
166 |
+
|
167 |
+
= Is reCAPTCHA for WooCommerce free feature? =
|
168 |
+
|
169 |
+
Yes. [How to set up reCAPTCHA for WooCommerce](http://wpcerber.com/how-to-setup-recaptcha/).
|
170 |
+
|
171 |
+
= Can I change login URL (rename wp-login.php)? =
|
172 |
+
|
173 |
+
Yes, easily. [How to rename wp-login.php](http://wpcerber.com/how-to-rename-wp-login-php/)
|
174 |
+
|
175 |
+
= Can I hide wp-admin? =
|
176 |
+
|
177 |
+
Yes, easily. [How to hide wp-admin and wp-login.php from possible attacks](http://wpcerber.com/how-to-hide-wp-admin-and-wp-login-php-from-possible-attacks/)
|
178 |
+
|
179 |
+
= Can I rename wp-admin folder? =
|
180 |
+
|
181 |
+
Nope. It's not possible and not recommended for compatibility reasons.
|
182 |
+
|
183 |
+
= Can WP Cerber work together with the Limit Login Attempts plugin? =
|
184 |
+
|
185 |
+
Nope. WP Cerber is a drop in replacement for that outdated plugin.
|
186 |
+
|
187 |
+
= Can WP Cerber protect my site from DDoS attacks? =
|
188 |
+
|
189 |
+
Nope. WP Cerber protects your site from Brute force attacks or distributed Brute force attacks. By default WordPress allows unlimited login attempts either through the login form or by sending special cookies. This allows passwords to be cracked with relative ease via a brute force attack. To prevent from such a bad situation use WP Cerber.
|
190 |
+
|
191 |
+
= Is there any WordPress plugin to protect my site from DDoS attacks? =
|
192 |
+
|
193 |
+
Nope. This hard task cannot be done by using a plugin. That may be done by using special hardware from your hosting provider.
|
194 |
+
|
195 |
+
= What is the goal of Citadel mode? =
|
196 |
+
|
197 |
+
Citadel mode is intended to block massive, distributed botnet attacks and also slow attacks. The last type of attack has a large range of intruder IPs with a small number of attempts to login per each.
|
198 |
+
|
199 |
+
= How to turn off Citadel mode completely? =
|
200 |
+
|
201 |
+
Set Threshold fields to 0 or leave them empty.
|
202 |
+
|
203 |
+
= What is the goal of using Fail2Ban? =
|
204 |
+
|
205 |
+
With Fail2Ban you can protect site on the OS level with iptables. See details here: [http://wpcerber.com/how-to-protect-wordpress-with-fail2ban/](http://wpcerber.com/how-to-protect-wordpress-with-fail2ban/)
|
206 |
+
|
207 |
+
= Do I need using Fail2Ban to get the plugin working? =
|
208 |
+
|
209 |
+
No, you don't. It is optional.
|
210 |
+
|
211 |
+
= Can I use this plugin on the WP Engine hosting? =
|
212 |
+
|
213 |
+
Yes! WP Cerber is not on the list of disallowed plugins. There are no limitation on the hosting providers. You can use it even on the shared hosting. Plugin consumes minimum resources and does not impact server performance or response time.
|
214 |
+
|
215 |
+
= It seems that old activity records are not removing from the activity log =
|
216 |
+
|
217 |
+
That means that scheduled tasks are not executed on your site. In other words, WordPress cron is not working the right way.
|
218 |
+
Try to add the following line to your wp-config.php file:
|
219 |
+
|
220 |
+
define( 'ALTERNATE_WP_CRON', true );
|
221 |
+
|
222 |
+
= I'm unable to log in / I'm locked out of my site / How to get access (log in) to the dashboard? =
|
223 |
+
|
224 |
+
There is a special version of the plugin called **WP Cerber Reset**. This version performs only one task. It will reset all WP Cerber settings to initial values (excluding Access Lists) and then will deactivate itself.
|
225 |
+
|
226 |
+
To get access to your dashboard you need to copy the WP Cerber Reset folder to the plugins folder. Follow these simple steps.
|
227 |
+
|
228 |
+
1. Download the wp-cerber-reset.zip archive to your computer using this link: [http://wpcerber.com/downloads/wp-cerber-reset.zip](http://wpcerber.com/downloads/wp-cerber-reset.zip)
|
229 |
+
2. Unpack wp-cerber folder from the archive.
|
230 |
+
3. Upload the wp-cerber folder to the **plugins** folder of your site using any FTP client or a file manager from your hosting control panel. If you see a question about overwriting files, click Yes.
|
231 |
+
4. Log in to your site as usually. Now WP Cerber is disabled completely.
|
232 |
+
5. Reinstall the WP Cerber plugin again. You need to do that, because **WP Cerber Reset** cannot work as a normal plugin.
|
233 |
+
|
234 |
+
== Screenshots ==
|
235 |
+
|
236 |
+
1. The Dashboard: Recently recorded important security events and recently locked out IP addresses.
|
237 |
+
2. WordPress activity log with filtering, export to CSV and powerful notifications. You can see what's going on right now, when an IP reaches the limit of login attempts and when it was blocked.
|
238 |
+
3. Activity log filtered by login and specific type of activity. Export it or click Subscribe to be notified with each event.
|
239 |
+
4. Detailed information about an IP address with WHOIS information.
|
240 |
+
5. These settings allows you to customize the plugin according to your needs.
|
241 |
+
6. White and Black IP access lists allow you to restrict access from a particular IP address, network or IP range.
|
242 |
+
7. Hardening WordPress: disable REST API, XML-RPC and stop user enumeration.
|
243 |
+
8. Powerful email, mobile and browser notifications for WordPress events.
|
244 |
+
9. Stop spammer: visible/invisible reCAPTCHA for WooCommerce and WordPress forms - no spam comments anymore.
|
245 |
+
10. You can export and import security settings and IP Access Lists on the Tools screen.
|
246 |
+
11. Beautiful widget for the WP dashboard to keep an eye on things. Get quick analytic with trends over last 24 hours.
|
247 |
+
12. WP Cerber adds four new columns on the WordPress Users screen: Date of registration, Date of last login, Number of failed login attempts and Number of comments. To get more information just click on the appropriate link.
|
248 |
+
|
249 |
+
|
250 |
+
== Changelog ==
|
251 |
+
|
252 |
+
= 5.0 =
|
253 |
+
* New: A new antispam and bot detection engine that protects comment and user registration forms from bot attacks. After several attempts bot IP will be locked out.
|
254 |
+
* New: You can tell Cerber either to mark detected spam comments as spam or deny them completely.
|
255 |
+
* New: Cerber can automatically move spam comments older than the specified amount of days to trash.
|
256 |
+
* New: Added the cerber_404_template filter for specifying an alternative to the default 404 page not found template.
|
257 |
+
* New: Added code to avoid possible conflict between Custom login URL and REST API.
|
258 |
+
* New: Italian translation has been added, thanks to Francesco Venuti.
|
259 |
+
* Bug fixed: WordPress database error: Table '...cerber_lab_net' doesn't exist.
|
260 |
+
|
261 |
+
= 4.9 =
|
262 |
+
* New: Additional details will be logged and displayed on the Activity page: the URL of a request and decision the plugin engine had made.
|
263 |
+
* New: Added a nice panel with performance indicators showing key events and plugin performance in the last 24 hours.
|
264 |
+
* New: To improve reliability self check-up code has been added.
|
265 |
+
* New: Polish translation has been added, thanks to Wojciech Górski.
|
266 |
+
* New: On a multisite WP installation scheduled tasks will be executed once per hour for the entire network: there will no excess SQL queries when the plugin executes hourly cron tasks.
|
267 |
+
* Bug fixed: The language for visible reCAPTCHA doesn't set according to the site language setting. It's always English.
|
268 |
+
|
269 |
+
= 4.8.2 =
|
270 |
+
* New: Starting with this version all database tables will be created with a default database engine. It should be InnoDB.
|
271 |
+
* New: To improve compatibility with some plugins the email notification function has been updated and now uses the comma-separated list of email addresses instead of an array.
|
272 |
+
* Bug fixed: An IP address from a range might not be allowed to log in if you have overlapping IP ranges in the both IP Access List.
|
273 |
+
* Bug fixed: A reason of blocking an IP address is not shown in notification emails if Always block entire subnet Class C of intruders IP is selected in the settings.
|
274 |
+
|
275 |
+
= 4.8 =
|
276 |
+
* New: You can enable/disable applying limit login rules to IP addresses in the White IP Access List.
|
277 |
+
* New: Block malicious IP addresses after a specified number of failed attempts to solve visible or invisible reCAPTCHA.
|
278 |
+
* New: Track password reset requests with username entered.
|
279 |
+
|
280 |
+
= 4.7.7 =
|
281 |
+
* New: invisible reCAPTCHA (classic, visible also available).
|
282 |
+
* New: reCAPTCHA for comment forms. Works well as anti-spam tool.
|
283 |
+
* Fixed bug: "Add network to the Black List" and "Add IP to the Black List" buttons on the Activity tab doesn't work in the Safari web browser.
|
284 |
+
|
285 |
+
= 4.5 =
|
286 |
+
* New: Instant mobile and browser notifications with Pushbullet.
|
287 |
+
* New: Ability to choose a 404 page template.
|
288 |
+
* New: Events on the Activity tab are displaying with user roles and avatars.
|
289 |
+
* Update: PHP function file_get_contents() has been replaced with cURL to improve compatibilty with restrictive hostings.
|
290 |
+
* Fixed bug: Password reset link that is generated by the WooCommerce reset password form can be corrupted if reCAPTCHA is enabled for the form.
|
291 |
+
* Fixed bug: The plugin doesn’t block IPv6 addresses from the Black IP Access List (versions affected: 4.0 – 4.3).
|
292 |
+
|
293 |
+
= 4.3 =
|
294 |
+
* New: Use powerful subscriptions to get email notifications according to filters for events you have set.
|
295 |
+
* New: Search and/or filter activity by IP address, username (login), specific event and a user. You may use any combination of them.
|
296 |
+
* New: Now you can export activity from your WordPress website to a CSV file. You may export all activities or just a set of filtered out activities.
|
297 |
+
* Update: Now you can specify multiple email boxes for notifications.
|
298 |
+
* Update: The Spanish translation has been updated, thanks to [leemon](https://profiles.wordpress.org/leemon/).
|
299 |
+
|
300 |
+
= 4.1 =
|
301 |
+
* New: Date format field allows you to specify a desirable format for displaying dates and time.
|
302 |
+
* Updated code for registration_errors filter to handle errors right way.
|
303 |
+
* The French translation has been updated.
|
304 |
+
* Fixed issue: Loading settings from a file with reCAPTCHA key and secret on a different website overwrite existing reCAPTCHA key and secret with values from the file.
|
305 |
+
* Fixed bug: The plugin tries to validate reCAPTCHA on WooCommerce login form if the validation enabled for the default WordPress login form only.
|
306 |
+
|
307 |
+
= 4.0 =
|
308 |
+
* New: reCAPTCHA for WooCommerce forms. [How to set up reCAPTCHA](http://wpcerber.com/how-to-setup-recaptcha/).
|
309 |
+
* New: IP Access Lists has got support for IP networks in three forms: ability to restrict access with IPv4 ranges, IPv4 CIDR notation and IPv4 subnets: A,B,C has been added. [Access Lists for WordPress](http://wpcerber.com/using-ip-access-lists-to-protect-wordpress/).
|
310 |
+
* New: Cerber can automatically detect an IP network of an intruder and suggest you to block entire network right from the Activity screen.
|
311 |
+
* New: Norwegian translation added, thanks to [Eirik Vorland](https://www.facebook.com/KjellDaSensei).
|
312 |
+
* Update: WP REST API is controlled by Access Lists. While REST API is blocked for the rest of the world, IP addresses from the White Access List can use WP REST API.
|
313 |
+
* Update: The WP Cerber admin menu is moved from Settings to the main admin menu.
|
314 |
+
* Update: To make Cerber more compatible with other plugins, the order of the init hook on the Custom login page (Custom login URL) has been changed.
|
315 |
+
* Update: Several languages and translations has been updated.
|
316 |
+
* Update: Large amount of code has been rewritten to improve performance and stability.
|
317 |
+
* Fixed bug: If a hacker or a bot uses login from the list of prohibited usernames or non-existent username, Citadel mode is unable to be automatically activated.
|
318 |
+
* Fixed bug: reCAPTCHA for an ordinary WordPress login form is incompatible with a WooCommerce login form.
|
319 |
+
* Fixed issue: In some cases the plugin log first digits of an IP address as an ID of existing user.
|
320 |
+
|
321 |
+
= 3.0 =
|
322 |
+
* New: [reCAPTCHA to protect WordPress forms spam registrations. Also available for lost password and login forms.](http://wpcerber.com/how-to-setup-recaptcha/)
|
323 |
+
* New: Registration, XML RCP, WP REST API are controlled by IP Access Lists now. If a particular IP address is locked out or blacklisted registration is impossible.
|
324 |
+
* New: Action Get WHOIS info and trigger IP locked out to create automation scenarios with the [jetFlow.io automation plugin](http://jetflow.io).
|
325 |
+
* New: Notification emails will contain Reason of a lockout.
|
326 |
+
* New: The activity DB table will be optimized after removing old records daily.
|
327 |
+
* Update: Column Username on the Activity tab now shows real value that submitted with WordPress login form.
|
328 |
+
* Update: Text domain is updated to 'wp-cerber'
|
329 |
+
* Fixed issue: If a user enter correct email address and wrong password to log in, IP address is locked immediately.
|
330 |
+
|
331 |
+
= 2.9 =
|
332 |
+
* New: Checking for a prohibited username (login). You can specify list of logins manually on the new settings page (Users).
|
333 |
+
* New: Rate limiting for notification letters. Set it on the main settings page.
|
334 |
+
* New: If new user registration disabled, automatic redirection from wp-register.php to the login page is blocked (404 error). Remote IP will be locked out.
|
335 |
+
* New: You can set user session expiration timeout.
|
336 |
+
* New: Define constant CERBER_IP_KEY if you want the plugin to use it as a key to get IP address from $_SERVER variable.
|
337 |
+
* Update: Improved WP-CLI compatibility.
|
338 |
+
* Update: All dates are displayed in a localized format with date_i18n function.
|
339 |
+
* Fixed bugs: incorrect admin URL in notification letters for multisite with multiple domains configuration, lack of error message on the login form if IP is blocked, CSRF vulnerability on the import settings page
|
340 |
+
* Removed calls of deprecated function get_currentuserinfo().
|
341 |
+
|
342 |
+
= 2.7.2 =
|
343 |
+
* Fixed bug for non-English WordPress configuration: the plugin is unable to block IP in some server environment. If you have configured language other than English you have to install this release.
|
344 |
+
|
345 |
+
= 2.7.1 =
|
346 |
+
* Fixed two small bugs related to 1) unable to remove IP subnet from the Access Lists and 2) getting IP address in case of reverse proxy doesn't work properly.
|
347 |
+
|
348 |
+
= 2.7 =
|
349 |
+
|
350 |
+
* New: Now you can view extra WHOIS information for IP addresses in the activity log including country, network info, abuse contact, etc.
|
351 |
+
* New: Added ability to disable WP REST API, see [Hardening WordPress](http://wpcerber.com/hardening-wordpress/)
|
352 |
+
* New: Added ability to add IP address to the Black List from the Activity tab. Nail it!
|
353 |
+
* New: Added Spanish translation, thanks to Ismael.
|
354 |
+
* New: Added ability to set numbers of displayed rows (lines) on the Activity and Lockout tabs. Click Screen Options on the top-right.
|
355 |
+
* Fixed minor security issue: Actions to remove IP on the Access Lists tab were not protected against CSRF attacks. Thanks to Gerard.
|
356 |
+
* Update: Small changes on the dashboard widget.
|
357 |
+
* Update: Action taken by the plugin (plugin makes a decision) now marked with dark vertical bar on the right side of the labels (Activity tab).
|
358 |
+
|
359 |
+
= 2.0.1.6 =
|
360 |
+
* New: Added Reason column on the Lockouts screen which will display cause of blocking particular IP.
|
361 |
+
* New: Added Hardening WP with options: disable XML-RPC completely, disable user enumeration, disable feeds (RSS, Atom, RSD).
|
362 |
+
* New: Added Custom email address for notifications.
|
363 |
+
* New: Added Dutch and Czech translations.
|
364 |
+
* New: Added Quick info about IP on Activity tab.
|
365 |
+
* Update: Removed option 'Allow whitelist in Citadel mode'. Now this whitelist is enabled by default all the time.
|
366 |
+
* Update: For notifications on the multisite installation the admin email address from the Network Settings will be used.
|
367 |
+
* Fixed Bug: Disable wp-login.php doesn't work for subfolder installation.
|
368 |
+
* Fixed Bug: Custom login URL doesn't work without trailing slash.
|
369 |
+
* Fixed Bug: Any request to wp-signup.php reveal hidden Custom login URL.
|
370 |
+
|
371 |
+
= 1.9 =
|
372 |
+
* Code refactoring and cleaning up.
|
373 |
+
* Unlocalized strings was localized.
|
374 |
+
|
375 |
+
= 1.8.1 =
|
376 |
+
* Fixed minor bug: no content (empty cells) in the custom colums added by other plugins on the Users screen in the Dashboard.
|
377 |
+
|
378 |
+
= 1.8 =
|
379 |
+
* New! added Hostname column for the Activity and Lockouts tabs.
|
380 |
+
* New! added ability to write failed login attempts to the specified file or to the syslog file. Use it to protect site with fail2ban.
|
381 |
+
* Added Ukrainian translation (Український переклад).
|
382 |
+
|
383 |
+
= 1.7 =
|
384 |
+
* Added ability to remove old records from the user activity log. Log will be cleaned up automatically. Check out new Keep records for field on the settings page.
|
385 |
+
* Added pagination for the Activity and Lockouts tabs.
|
386 |
+
* Added German (Deutsch) translation, thanks to mario.
|
387 |
+
* Added ability to reset settings to the recommended defaults at any time.
|
388 |
+
|
389 |
+
= 1.6 =
|
390 |
+
* New: beautiful widget for the dashboard to keep an eye on things. Get quick analytic with trends over 24 hours and ability to manually deactivate Citadel mode.
|
391 |
+
* French translation added, thanks to hardesfred.
|
392 |
+
* Hardening WordPress. Removed automatically redirection from /login/ to the login page, from /admin/ and /dashboard/ to the dashboard.
|
393 |
+
* Fixed issue with lost password link in the multisite mode.
|
394 |
+
* Now compatible with User Switching plugin.
|
395 |
+
* Added ability to manually deactivate Citadel mode, once it automatically switches on.
|
396 |
+
|
397 |
+
= 1.5 =
|
398 |
+
* New feature: importing and exporting settings and access lists from/to the file.
|
399 |
+
* Limited notifications in the dashboard.
|
400 |
+
|
401 |
+
= 1.4 =
|
402 |
+
* Added support Multisite mode for limit login attempts.
|
403 |
+
* Added Number of comments column on the Users screen in dashboard.
|
404 |
+
* Updated notification settings.
|
405 |
+
* Updated languages files.
|
406 |
+
|
407 |
+
= 1.3 =
|
408 |
+
* Fixed issue with hanging up during redirect to /wp-admin/ on some circumstance.
|
409 |
+
* Fixed minor issue with limit login attempts for non-admin users.
|
410 |
+
* Added Date of registration column on the Users screen in dashboard.
|
411 |
+
* Some UI improvements on access-list screen.
|
412 |
+
* Performance optimization & code refactoring.
|
413 |
+
|
414 |
+
= 1.2 =
|
415 |
+
* Added localization & internationalization files. You can use Loco Translate plugin to make your own translation.
|
416 |
+
* Added Russian translation.
|
417 |
+
* Added headers for failed attempts to use such headers with [fail2ban](http://www.fail2ban.org).
|
418 |
+
|
419 |
+
= 1.1 =
|
420 |
+
* Added ability to filter out Activity List by IP, username or particular event. You can see what happens and when it happened with particular IP or username. When IP reaches limit login attempts and when it was blocked.
|
421 |
+
* Added protection from adding to the Black IP Access List subnet belongs to current user's session IP.
|
422 |
+
* Added option to work with site/server behind reverse proxy.
|
423 |
+
* Update installation instruction.
|
424 |
+
|
425 |
+
= 1.0 =
|
426 |
+
* Initial version
|
427 |
+
|
428 |
+
== Other Notes ==
|
429 |
+
|
430 |
+
1. If you want to test out plugin's features, do this from another computer and remove that computer's network from the White Access List. Cerber is smart enough to recognize "the boss".
|
431 |
+
2. If you've set up the Custom login URL and you use some caching plugin like **W3 Total Cache** or **WP Super Cache**, you have to add a new Custom login URL to the list of pages not to cache.
|
432 |
+
3. [Read this if your website is under CloudFlare](http://wpcerber.com/cloudflare-and-wordpress-cerber/)
|
433 |
+
|
434 |
+
**Deutsche**
|
435 |
+
Schützt vor Ort gegen Brute-Force-Attacken. Umfassende Kontrolle der Benutzeraktivität. Beschränken Sie die Anzahl der Anmeldeversuche durch die Login-Formular, XML-RPC-Anfragen oder mit Auth-Cookies. Beschränken Sie den Zugriff mit Schwarz-Weiß-Zugriffsliste Zugriffsliste. Track Benutzer und Einbruch Aktivität.
|
436 |
+
|
437 |
+
**Français**
|
438 |
+
Protège site contre les attaques par force brute. Un contrôle complet de l'activité de l'utilisateur. Limiter le nombre de tentatives de connexion à travers les demandes formulaire de connexion, XML-RPC ou en utilisant auth cookies. Restreindre l'accès à la liste noire accès et blanc Liste d'accès. L'utilisateur de la piste et l'activité anti-intrusion.
|
439 |
+
|
440 |
+
**Український**
|
441 |
+
Захищає сайт від атак перебором. Обмежте кількість спроб входу через запити ввійти форми, XML-RPC або за допомогою авторизації в печиво. Обмежити доступ з чорний список доступу і список білий доступу. Користувач трек і охоронної діяльності.
|
442 |
+
|
443 |
+
**What does "Cerber" mean?**
|
444 |
+
|
445 |
+
Cerber is derived from the name Cerberus. In Greek and Roman mythology, Cerberus is a multi-headed dog with a serpent's tail, a mane of snakes, and a lion's claws. Nobody can bypass this angry dog. Now you can order WP Cerber to guard the entrance to your site too.
|
446 |
+
|
447 |
+
|
ripe.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL.
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
|
21 |
+
*/
|
22 |
+
|
23 |
+
|
24 |
+
/*
|
25 |
+
|
26 |
+
*========================================================================*
|
27 |
+
| |
|
28 |
+
| ATTENTION! Do not change or edit this file! |
|
29 |
+
| |
|
30 |
+
*========================================================================*
|
31 |
+
|
32 |
+
*/
|
33 |
+
|
34 |
+
|
35 |
+
|
36 |
+
|
37 |
+
// If this file is called directly, abort executing.
|
38 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
39 |
+
|
40 |
+
/**
|
41 |
+
* RIPE REST API
|
42 |
+
*
|
43 |
+
* RIPE Database Acceptable Use Policy
|
44 |
+
* https://www.ripe.net/manage-ips-and-asns/db/support/documentation/ripe-database-acceptable-use-policy
|
45 |
+
* https://www.ripe.net/manage-ips-and-asns/db/faq/faq-db
|
46 |
+
*
|
47 |
+
*/
|
48 |
+
|
49 |
+
define('RIPE_ERR_EXPIRE',300);
|
50 |
+
define('RIPE_OK_EXPIRE',24 * 3600);
|
51 |
+
define('RIPE_HOST','http://rest.db.ripe.net/');
|
52 |
+
/*
|
53 |
+
* Search for information about IP by using RIPE REST API, method 'search'
|
54 |
+
* @since 2.7
|
55 |
+
*
|
56 |
+
*/
|
57 |
+
function ripe_search($ip = ''){
|
58 |
+
//if ( !cerber_is_ip_or_net($ip) || !is_user_logged_in() || !is_admin()) return false;
|
59 |
+
if ( !cerber_is_ip_or_net($ip)) return false;
|
60 |
+
$key = 'ripe-'.cerber_get_id_ip($ip);
|
61 |
+
$ripe = get_transient($key);
|
62 |
+
if (false === $ripe) {
|
63 |
+
//if (1==1) {
|
64 |
+
$args = array();
|
65 |
+
$args['headers']['Accept'] = 'application/json';
|
66 |
+
$args['headers']['User-Agent'] = 'Cerber Security Plugin for WP';
|
67 |
+
$ripe_response = wp_remote_get( RIPE_HOST.'search?query-string=' . $ip, $args );
|
68 |
+
if ( is_wp_error( $ripe_response ) ) {
|
69 |
+
$error = 'WHOIS: '.$ripe_response->get_error_message();
|
70 |
+
return $error;
|
71 |
+
}
|
72 |
+
if (absint($ripe_response['response']['code']) != 200) {
|
73 |
+
$error = 'WHOIS: '.$ripe_response['response']['message'].' / '.$ripe_response['response']['code'];
|
74 |
+
set_transient( $key, $error , RIPE_ERR_EXPIRE );
|
75 |
+
//return $error;
|
76 |
+
return ''; // don't blow user mind
|
77 |
+
}
|
78 |
+
$ripe = $ripe_response;
|
79 |
+
$ripe['body'] = json_decode($ripe_response['body']);
|
80 |
+
if (JSON_ERROR_NONE != json_last_error()) {
|
81 |
+
$error = 'WHOIS: '.json_last_error_msg();
|
82 |
+
set_transient( $key, $error , RIPE_ERR_EXPIRE );
|
83 |
+
return $error;
|
84 |
+
}
|
85 |
+
$ripe['abuse-email'] = ripe_find_abuse_contact($ripe['body'],$ip);
|
86 |
+
set_transient( $key, serialize( $ripe ), RIPE_OK_EXPIRE );
|
87 |
+
}
|
88 |
+
else {
|
89 |
+
$ripe = unserialize($ripe);
|
90 |
+
}
|
91 |
+
//$ripe['abuse-email'] = ripe_get_abuse_contact($ripe['body'],$ip);
|
92 |
+
return $ripe;
|
93 |
+
}
|
94 |
+
/*
|
95 |
+
* Retrieve abuse email from response, rollback to direct request to the API
|
96 |
+
* @since 2.7
|
97 |
+
*
|
98 |
+
*/
|
99 |
+
function ripe_find_abuse_contact($ripe_body, $ip){
|
100 |
+
//http://rest.db.ripe.net/abuse-contact
|
101 |
+
$email = '';
|
102 |
+
foreach ($ripe_body->objects->object as $object) {
|
103 |
+
foreach ($object->attributes->attribute as $att){
|
104 |
+
if ($att->name == 'abuse-mailbox' && is_email($att->value)){
|
105 |
+
$email = $att->value;
|
106 |
+
break;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
}
|
110 |
+
if (!$email) { // make an API request
|
111 |
+
$args = array();
|
112 |
+
$args['headers']['Accept'] = 'application/json';
|
113 |
+
$ripe_response = wp_remote_get( RIPE_HOST.'abuse-contact/' . $ip, $args );
|
114 |
+
if ( is_wp_error( $ripe_response ) ) {
|
115 |
+
return $ripe_response->get_error_message();
|
116 |
+
}
|
117 |
+
$abuse = json_decode($ripe_response['body']);
|
118 |
+
$abuse = get_object_vars($abuse);
|
119 |
+
if (is_email($abuse['abuse-contacts']->email)) $email = $abuse['abuse-contacts']->email;
|
120 |
+
}
|
121 |
+
return $email;
|
122 |
+
}
|
123 |
+
/*
|
124 |
+
* Get and parse RIPE response to human readable view
|
125 |
+
* @since 2.7
|
126 |
+
*
|
127 |
+
*/
|
128 |
+
function ripe_readable_info($ip){
|
129 |
+
$ripe = ripe_search($ip);
|
130 |
+
if (!is_array($ripe)) {
|
131 |
+
if (!$ripe) return array('error' => 'RIPE error');
|
132 |
+
return array('whois' => $ripe);
|
133 |
+
}
|
134 |
+
$ret = array();
|
135 |
+
|
136 |
+
$body = $ripe['body'];
|
137 |
+
if ($body->service->name != 'search') return $ret; // only for RIPE search requests & responses
|
138 |
+
|
139 |
+
$info = '';
|
140 |
+
foreach ($body->objects->object as $object) {
|
141 |
+
$info.='<table class="whois-object otype-'.$object->type.'"><tr><td colspan="2"><b>'.strtoupper($object->type).'</b></td></tr>';
|
142 |
+
foreach ($object->attributes->attribute as $att){
|
143 |
+
$ret['data'][$att->name] = $att->value;
|
144 |
+
if (is_email($att->value)) $value = '<a href="mailto:'.$att->value.'">'.$att->value.'</a>';
|
145 |
+
elseif (strtolower($att->name) == 'country') {
|
146 |
+
$value = '<b><span '.cerber_get_flag_css($att->value).'>'.cerber_country_name($att->value).'</span> ('.$att->value.')</b>';
|
147 |
+
$ret['country'] = $value;
|
148 |
+
}
|
149 |
+
else $value = $att->value;
|
150 |
+
$info.='<tr><td>'.$att->name.'</td><td>'.$value.'</td></tr>';
|
151 |
+
}
|
152 |
+
$info.='</table>';
|
153 |
+
}
|
154 |
+
|
155 |
+
if (!empty($ripe['abuse-email']) && is_email($ripe['abuse-email'])) {
|
156 |
+
$ret['data']['abuse-mailbox'] = $ripe['abuse-email'];
|
157 |
+
}
|
158 |
+
|
159 |
+
// Network
|
160 |
+
if (!empty($ret['data']['inetnum'])) {
|
161 |
+
$ret['data']['network'] = $ret['data']['inetnum'];
|
162 |
+
}
|
163 |
+
|
164 |
+
$ret['whois'] = $info;
|
165 |
+
|
166 |
+
return $ret;
|
167 |
+
}
|
168 |
+
|
settings.php
ADDED
@@ -0,0 +1,766 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL.
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
|
21 |
+
*/
|
22 |
+
|
23 |
+
/*
|
24 |
+
|
25 |
+
*========================================================================*
|
26 |
+
| |
|
27 |
+
| ATTENTION! Do not change or edit this file! |
|
28 |
+
| |
|
29 |
+
*========================================================================*
|
30 |
+
|
31 |
+
*/
|
32 |
+
|
33 |
+
|
34 |
+
|
35 |
+
// If this file is called directly, abort executing.
|
36 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
37 |
+
|
38 |
+
define('CERBER_OPT','cerber-main');
|
39 |
+
define('CERBER_OPT_H','cerber-hardening');
|
40 |
+
define('CERBER_OPT_U','cerber-users');
|
41 |
+
define('CERBER_OPT_C','cerber-recaptcha');
|
42 |
+
define('CERBER_OPT_N','cerber-notifications');
|
43 |
+
|
44 |
+
/*
|
45 |
+
WP Settings API
|
46 |
+
*/
|
47 |
+
add_action('admin_init', 'cerber_settings_init');
|
48 |
+
function cerber_settings_init(){
|
49 |
+
|
50 |
+
if (!cerber_is_admin_page() && !strpos($_SERVER['REQUEST_URI'],'/options.php')) return;
|
51 |
+
|
52 |
+
// Main Settings tab ---------------------------------------------------------------------
|
53 |
+
|
54 |
+
$tab='main'; // 'cerber-main' settings
|
55 |
+
register_setting( 'cerberus-'.$tab, 'cerber-'.$tab );
|
56 |
+
|
57 |
+
add_settings_section('cerber', __('Limit login attempts','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
58 |
+
add_settings_field('attempts',__('Attempts','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'cerber',array('group'=>$tab,'option'=>'attempts','type'=>'attempts'));
|
59 |
+
add_settings_field('lockout',__('Lockout duration','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'cerber',array('group'=>$tab,'option'=>'lockout','type'=>'text','label'=>__('minutes','wp-cerber'),'size'=>3));
|
60 |
+
add_settings_field('aggressive',__('Aggressive lockout','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'cerber',array('group'=>$tab,'type'=>'aggressive'));
|
61 |
+
add_settings_field('limitwhite',__('White IP Access List','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'cerber',array('group'=>$tab,'option'=>'limitwhite','type'=>'checkbox','label'=>__('Apply limit login rules to IP addresses in the White IP Access List','wp-cerber')));
|
62 |
+
add_settings_field('notify',__('Notifications','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'cerber',array('group'=>$tab,'type'=>'notify','option'=>'notify'));
|
63 |
+
add_settings_field('proxy',__('Site connection','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'cerber',array('group'=>$tab,'option'=>'proxy','type'=>'checkbox','label'=>__('My site is behind a reverse proxy','wp-cerber')));
|
64 |
+
|
65 |
+
add_settings_section('proactive', __('Proactive security rules','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
66 |
+
add_settings_field('subnet',__('Block subnet','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'proactive',array('group'=>$tab,'option'=>'subnet','type'=>'checkbox','label'=>__('Always block entire subnet Class C of intruders IP','wp-cerber')));
|
67 |
+
add_settings_field('nonusers',__('Non-existent users','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'proactive',array('group'=>$tab,'option'=>'nonusers','type'=>'checkbox','label'=>__('Immediately block IP when attempting to login with a non-existent username','wp-cerber')));
|
68 |
+
add_settings_field('noredirect',__('Redirect dashboard requests','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'proactive',array('group'=>$tab,'option'=>'noredirect','type'=>'checkbox','label'=>__('Disable automatic redirecting to the login page when /wp-admin/ is requested by an unauthorized request','wp-cerber')));
|
69 |
+
add_settings_field('wplogin',__('Request wp-login.php','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'proactive',array('group'=>$tab,'option'=>'wplogin','type'=>'checkbox','label'=>__('Immediately block IP after any request to wp-login.php','wp-cerber')));
|
70 |
+
add_settings_field('page404',__('Display 404 page','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'proactive',array('group'=>$tab, 'option'=>'page404', 'type'=>'select', 'set' => array('Use 404 template from active theme', 'Display simple 404 page')));
|
71 |
+
|
72 |
+
add_settings_section('custom', __('Custom login page','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
73 |
+
add_settings_field('loginpath',__('Custom login URL','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'custom',array('group'=>$tab,'option'=>'loginpath','type'=>'text','label'=>__('must not overlap with the existing pages or posts slug','wp-cerber')));
|
74 |
+
add_settings_field('loginnowp',__('Disable wp-login.php','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'custom',array('group'=>$tab,'option'=>'loginnowp','type'=>'checkbox','label'=>__('Block direct access to wp-login.php and return HTTP 404 Not Found Error','wp-cerber')));
|
75 |
+
|
76 |
+
add_settings_section('citadel', __('Citadel mode','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
77 |
+
add_settings_field('citadel',__('Threshold','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'citadel',array('group'=>$tab,'type'=>'citadel'));
|
78 |
+
add_settings_field('ciduration',__('Duration','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'citadel',array('group'=>$tab,'option'=>'ciduration','type'=>'text','label'=>__('minutes','wp-cerber'),'size'=>3));
|
79 |
+
//add_settings_field('ciwhite',__('White IP Access List','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'citadel',array('group'=>$tab,'option'=>'ciwhite','type'=>'checkbox','label'=>__('Permit IPs from the White IP Access List to log in','wp-cerber')));
|
80 |
+
add_settings_field('cinotify',__('Notifications','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'citadel',array('group'=>$tab,'option'=>'cinotify','type'=>'checkbox','label'=>__('Send notification to admin email','wp-cerber').' (<a href="'.wp_nonce_url(add_query_arg(array('testnotify'=>'citadel', 'settings-updated' => 0)),'control','cerber_nonce').'">'.__('Click to send test','wp-cerber').'</a>)'));
|
81 |
+
|
82 |
+
add_settings_section('activity', __('Activity','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
83 |
+
add_settings_field('keeplog',__('Keep records for','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'activity',array('group'=>$tab,'option'=>'keeplog','type'=>'text','label'=>__('days','wp-cerber'),'size'=>3));
|
84 |
+
add_settings_field('cerberlab',__('Cerber Lab connection','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'activity',array('group'=>$tab,'option'=>'cerberlab','type'=>'checkbox','label'=>__('Send malicious IP addresses to the Cerber Lab','wp-cerber').' <a target="_blank" href="http://wpcerber.com/cerber-laboratory/">Know more</a>'));
|
85 |
+
add_settings_field('cerberproto',__('Cerber Lab protocol','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'activity',array('group'=>$tab,'option'=>'cerberproto','type'=>'select','set'=> array('HTTP', 'HTTPS')));
|
86 |
+
add_settings_field('usefile',__('Use file','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'activity',array('group'=>$tab,'option'=>'usefile','type'=>'checkbox','label'=>__('Write failed login attempts to the file','wp-cerber')));
|
87 |
+
|
88 |
+
add_settings_section('prefs', __('Preferences','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
89 |
+
add_settings_field('ip_extra',__('Drill down IP','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'prefs',array('group'=>$tab,'option'=>'ip_extra','type'=>'checkbox','label'=>__('Retrieve extra WHOIS information for IP','wp-cerber').' <a href="' . cerber_admin_link('help') . '">Know more</a>'));
|
90 |
+
add_settings_field( 'dateformat', __( 'Date format', 'wp-cerber' ), 'cerberus_field_show', 'cerber-' . $tab, 'prefs', array( 'group' => $tab, 'option' => 'dateformat', 'type' => 'text', 'label' => sprintf(__('if empty, the default format %s will be used','wp-cerber'),'<b>'.cerber_date(time()).'</b>') . ' <a target="_blank" href="http://wpcerber.com/date-format-setting/">Know more</a>'
|
91 |
+
) );
|
92 |
+
|
93 |
+
// Hardening tab --------------------------------------------------------------------------
|
94 |
+
|
95 |
+
$tab='hardening'; // 'cerber-hardening' settings
|
96 |
+
register_setting( 'cerberus-'.$tab, CERBER_OPT_H);
|
97 |
+
add_settings_section('hwp', __('Hardening WordPress','wp-cerber'), 'cerber_sapi_section', CERBER_OPT_H);
|
98 |
+
add_settings_field('stopenum',__('Stop user enumeration','wp-cerber'),'cerberus_field_show',CERBER_OPT_H,'hwp',array('group'=>$tab,'option'=>'stopenum','type'=>'checkbox','label'=>__('Block access to the pages like /?author=n','wp-cerber')));
|
99 |
+
add_settings_field('xmlrpc',__('Disable XML-RPC','wp-cerber'),'cerberus_field_show',CERBER_OPT_H,'hwp',array('group'=>$tab,'option'=>'xmlrpc','type'=>'checkbox','label'=>__('Block access to the XML-RPC server (including Pingbacks and Trackbacks)','wp-cerber')));
|
100 |
+
add_settings_field('nofeeds',__('Disable feeds','wp-cerber'),'cerberus_field_show',CERBER_OPT_H,'hwp',array('group'=>$tab,'option'=>'nofeeds','type'=>'checkbox','label'=>__('Block access to the RSS, Atom and RDF feeds','wp-cerber')));
|
101 |
+
add_settings_field('norest',__('Disable REST API','wp-cerber'),'cerberus_field_show',CERBER_OPT_H,'hwp',array('group'=>$tab,'option'=>'norest','type'=>'checkbox','label'=>__('Block access to the WordPress REST API','wp-cerber')));
|
102 |
+
//add_settings_field('hashauthor',__('Hide author usernames','wp-cerber'),'cerberus_field_show',CERBER_OPT_H,'hwp',array('group'=>$tab,'option'=>'hashauthor','type'=>'checkbox','label'=>__('Replace author username with hash for author pages and URLs','wp-cerber')));
|
103 |
+
//add_settings_field('cleanhead',__('Clean up HEAD','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'hwp',array('group'=>$tab,'option'=>'cleanhead','type'=>'checkbox','label'=>__('Remove generator and version tags from HEAD section','wp-cerber')));
|
104 |
+
//add_settings_field('ping',__('Disable Pingback','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'hwp',array('group'=>$tab,'option'=>'ping','type'=>'checkbox','label'=>__('Block access to ping functional','wp-cerber')));
|
105 |
+
|
106 |
+
// Users tab -----------------------------------------------------------------------------
|
107 |
+
|
108 |
+
$tab='users'; // 'cerber-users' settings
|
109 |
+
register_setting( 'cerberus-'.$tab, CERBER_OPT_U);
|
110 |
+
add_settings_section('us', __('User related settings','wp-cerber'), 'cerber_sapi_section', CERBER_OPT_U);
|
111 |
+
add_settings_field('prohibited',__('Prohibited usernames','wp-cerber'),'cerberus_field_show',CERBER_OPT_U,'us',array('group'=>$tab,'option'=>'prohibited','type'=>'textarea','label'=>__('Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins.','wp-cerber')));
|
112 |
+
add_settings_field('auth_expire',__('User session expire','wp-cerber'),'cerberus_field_show',CERBER_OPT_U,'us',array('group'=>$tab,'option'=>'auth_expire','type'=>'text','label'=>__('in minutes (leave empty to use default WP value)','wp-cerber'),'size' => 6));
|
113 |
+
|
114 |
+
// reCAPTCHA -----------------------------------------------------------------------------
|
115 |
+
|
116 |
+
$tab='recaptcha'; // 'cerber-recaptcha' settings
|
117 |
+
register_setting( 'cerberus-'.$tab, CERBER_OPT_C);
|
118 |
+
|
119 |
+
add_settings_section('antibot', __('Cerber antispam engine','wp-cerber'), 'cerber_sapi_section', CERBER_OPT_C);
|
120 |
+
add_settings_field('botscomm',__('Comment form','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'antibot',array('group'=>$tab,'option'=>'botscomm','type'=>'checkbox','label'=>__('Protect comment form with bot detection engine','wp-cerber') ));
|
121 |
+
add_settings_field('botsreg',__('Registration form','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'antibot',array('group'=>$tab,'option'=>'botsreg','type'=>'checkbox','label'=>__('Protect registration form with bot detection engine','wp-cerber') ));
|
122 |
+
//add_settings_field('botsany',__('Any form','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'antibot',array('group'=>$tab,'option'=>'botsany','type'=>'checkbox','label'=>__('Protect all forms with bot detection engine','wp-cerber') ));
|
123 |
+
|
124 |
+
add_settings_section('commproc', __('Comment processing','wp-cerber'), 'cerber_sapi_section', CERBER_OPT_C);
|
125 |
+
add_settings_field('spamcomm',__('If a spam comment detected','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'commproc',array('group'=>$tab, 'option'=>'spamcomm', 'type'=>'select', 'set' => array('Deny it completely', 'Mark it as spam')));
|
126 |
+
add_settings_field('trashafter',__('Trash spam comments','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'commproc',array('group'=>$tab,'option'=>'trashafter','type'=>'text','enabled'=>__('Move spam comments to trash after'),'label'=>__('days','wp-cerber'),'size'=>3));
|
127 |
+
//add_settings_field('deleteafter',__('Delete comments from trash after','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'commproc',array('group'=>$tab,'option'=>'deleteafter','type'=>'text','label'=>__('days','wp-cerber'),'size'=>3));
|
128 |
+
|
129 |
+
add_settings_section('recap', __('reCAPTCHA settings','wp-cerber'), 'cerber_sapi_section', CERBER_OPT_C);
|
130 |
+
add_settings_field('sitekey',__('Site key','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'sitekey','type'=>'text','size' => 60));
|
131 |
+
add_settings_field('secretkey',__('Secret key','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'secretkey','type'=>'text','size' => 60));
|
132 |
+
add_settings_field('invirecap',__('Invisible reCAPTCHA','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'invirecap','type'=>'checkbox','label'=>__('Enable invisible reCAPTCHA','wp-cerber') .' '. __('(do not enable it unless you get and enter the Site and Secret keys for the invisible version)','wp-cerber')));
|
133 |
+
|
134 |
+
add_settings_field('recapreg',__('Registration form','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recapreg','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WordPress registration form','wp-cerber')));
|
135 |
+
add_settings_field('recapwooreg', '' ,'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recapwooreg','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WooCommerce registration form','wp-cerber')));
|
136 |
+
|
137 |
+
add_settings_field('recaplost',__('Lost password form','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recaplost','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WordPress lost password form','wp-cerber')));
|
138 |
+
add_settings_field('recapwoolost', '' ,'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recapwoolost','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WooCommerce lost password form','wp-cerber')));
|
139 |
+
|
140 |
+
add_settings_field('recaplogin',__('Login form','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recaplogin','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WordPress login form','wp-cerber')));
|
141 |
+
add_settings_field('recapwoologin', '' ,'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recapwoologin','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WooCommerce login form','wp-cerber')));
|
142 |
+
|
143 |
+
add_settings_field('recapcom',__('Antispam','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recapcom','type'=>'checkbox','label'=>__('Enable reCAPTCHA for WordPress comment form','wp-cerber')));
|
144 |
+
add_settings_field('recapcomauth', '' ,'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recapcomauth','type'=>'checkbox','label'=>__('Disable reCAPTCHA for logged in users','wp-cerber')));
|
145 |
+
|
146 |
+
add_settings_field('recaplimit',__('Limit attempts','wp-cerber'),'cerberus_field_show',CERBER_OPT_C,'recap',array('group'=>$tab,'option'=>'recaplimit','type'=>'limitz','label' => __('Lock out IP address for %s minutes after %s failed attempts within %s minutes','wp-cerber') ));
|
147 |
+
|
148 |
+
// Notifications -----------------------------------------------------------------------------
|
149 |
+
|
150 |
+
$tab='notifications'; // 'cerber-notifications' settings
|
151 |
+
register_setting( 'cerberus-'.$tab, CERBER_OPT_N);
|
152 |
+
add_settings_section('notify', __('Email notifications','wp-cerber'), 'cerber_sapi_section', 'cerber-' . $tab);
|
153 |
+
$def_email = '<b>'.get_site_option('admin_email').'</b>';
|
154 |
+
add_settings_field('email',__('Email Address','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'notify',array('group'=>$tab,'option'=>'email','type'=>'text','placeholder'=>__('Use comma to specify multiple values','wp-cerber'),'size'=>60,'label'=>sprintf(__('if empty, the admin email %s will be used','wp-cerber'),$def_email)));
|
155 |
+
add_settings_field('emailrate',__('Notification limit','wp-cerber'),'cerberus_field_show','cerber-'.$tab,'notify',array('group'=>$tab,'option'=>'emailrate','type'=>'text','label'=>__('notification letters allowed per hour (0 means unlimited)','wp-cerber'),'size'=>3));
|
156 |
+
|
157 |
+
add_settings_section('pushit', __('Push notifications','wp-cerber'). ' <a class="help-sign" href="'.cerber_admin_link('help').'">?</a>', 'cerber_sapi_section', 'cerber-' . $tab);
|
158 |
+
add_settings_field('pbtoken','Pushbullet access token','cerberus_field_show','cerber-'.$tab,'pushit',array('group'=>$tab,'option'=>'pbtoken','type'=>'text','size'=>60));
|
159 |
+
|
160 |
+
$set = array();
|
161 |
+
if (cerber_is_admin_page(false, array('tab'=>'notifications'))){
|
162 |
+
$set = cerber_pb_get_devices();
|
163 |
+
if (is_array($set)){
|
164 |
+
if (!empty($set)) $set = array('all' => __('All connected devices','wp-cerber')) + $set;
|
165 |
+
else $set = array('N' => __('No devices found','wp-cerber'));
|
166 |
+
}
|
167 |
+
else $set = array('N' => __('Not available','wp-cerber'));
|
168 |
+
}
|
169 |
+
add_settings_field('pbdevice','Pushbullet device','cerberus_field_show','cerber-'.$tab,'pushit',array('group'=>$tab,'option'=>'pbdevice','type'=>'select','set'=>$set));
|
170 |
+
|
171 |
+
}
|
172 |
+
/*
|
173 |
+
Generate HTML for every sections on a settings page
|
174 |
+
*/
|
175 |
+
function cerber_sapi_section($args){
|
176 |
+
switch ($args['id']){ // a section id
|
177 |
+
case 'proactive':
|
178 |
+
_e('Make your protection smarter!','wp-cerber');
|
179 |
+
break;
|
180 |
+
case 'custom':
|
181 |
+
if (!get_option('permalink_structure')) {
|
182 |
+
echo '<span style="color:#DF0000;">'.__('Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default.','wp-cerber').'</span>';
|
183 |
+
}
|
184 |
+
else {
|
185 |
+
_e('Be careful when enabling this options. If you forget the custom login URL you will not be able to login.','wp-cerber');
|
186 |
+
}
|
187 |
+
break;
|
188 |
+
case 'citadel':
|
189 |
+
_e("In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected.",'wp-cerber');
|
190 |
+
break;
|
191 |
+
case 'hwp':
|
192 |
+
echo __('These settings do not affect hosts from the ','wp-cerber').' '.__('White IP Access List','wp-cerber');
|
193 |
+
break;
|
194 |
+
case 'recap':
|
195 |
+
_e('Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website','wp-cerber');
|
196 |
+
echo ' <a href="http://wpcerber.com/how-to-setup-recaptcha/">'.__('Know more','wp-cerber').'</a>';
|
197 |
+
break;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
/*
|
202 |
+
*
|
203 |
+
* Generate HTML for admin page with tabs
|
204 |
+
* @since 1.0
|
205 |
+
*
|
206 |
+
*/
|
207 |
+
function cerber_settings_page(){
|
208 |
+
global $wpdb;
|
209 |
+
|
210 |
+
$tab = cerber_get_tab('dashboard', array('main','acl','activity','lockouts','messages','help','hardening','users','notifications'));
|
211 |
+
|
212 |
+
?>
|
213 |
+
<div class="wrap">
|
214 |
+
|
215 |
+
<h2><?php _e('WP Cerber Security','wp-cerber') ?></h2>
|
216 |
+
|
217 |
+
<h2 class="nav-tab-wrapper cerber-tabs">
|
218 |
+
<?php
|
219 |
+
|
220 |
+
echo '<a href="' . cerber_admin_link() . '" class="nav-tab ' . ( $tab == 'dashboard' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-dashboard"></span> ' . __('Dashboard') . '</a>';
|
221 |
+
|
222 |
+
echo '<a href="' . cerber_admin_link('activity') . '" class="nav-tab ' . ( $tab == 'activity' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-welcome-view-site"></span> ' . __('Activity','wp-cerber') . '</a>';
|
223 |
+
|
224 |
+
$total = cerber_blocked_num();
|
225 |
+
|
226 |
+
echo '<a href="' . cerber_admin_link('lockouts') . '" class="nav-tab ' . ( $tab == 'lockouts' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-shield"></span> ' . __('Lockouts','wp-cerber') . ' <sup class="loctotal">' . $total . '</sup></a>';
|
227 |
+
|
228 |
+
echo '<a href="' . cerber_admin_link('main') . '" class="nav-tab ' . ( $tab == 'main' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-admin-settings"></span> ' . __('Main Settings','wp-cerber') . '</a>';
|
229 |
+
|
230 |
+
$total = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_ACL_TABLE);
|
231 |
+
echo '<a href="' . cerber_admin_link('acl') . '" class="nav-tab ' . ( $tab == 'acl' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-admin-network"></span> ' . __('Access Lists','wp-cerber') . ' <sup class="acltotal">' . $total . '</sup></a>';
|
232 |
+
|
233 |
+
echo '<a href="' . cerber_admin_link('hardening') . '" class="nav-tab ' . ( $tab == 'hardening' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-shield-alt"></span> ' . __('Hardening','wp-cerber') . '</a>';
|
234 |
+
|
235 |
+
echo '<a href="' . cerber_admin_link('users') . '" class="nav-tab ' . ( $tab == 'users' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-admin-users"></span> ' . __('Users') . '</a>';
|
236 |
+
//echo '<a href="'.cerber_admin_link('messages').'" class="nav-tab '. ($tab == 'messages' ? 'nav-tab-active' : '') .'">'. __('Messages','wp-cerber').'</a>';
|
237 |
+
|
238 |
+
echo '<a href="' . cerber_admin_link('notifications') . '" class="nav-tab ' . ( $tab == 'notifications' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-controls-volumeon"></span> ' . __('Notifications','wp-cerber') . '</a>';
|
239 |
+
|
240 |
+
echo '<a href="' . cerber_admin_link('help') . '" class="nav-tab ' . ( $tab == 'help' ? 'nav-tab-active' : '') . '"><span class="dashicons dashicons-editor-help"></span> ' . __('Help','wp-cerber') . '</a>';
|
241 |
+
|
242 |
+
?>
|
243 |
+
</h2>
|
244 |
+
<?php
|
245 |
+
|
246 |
+
cerber_show_aside($tab);
|
247 |
+
|
248 |
+
echo '<div class="crb-main">';
|
249 |
+
|
250 |
+
switch ($tab){
|
251 |
+
case 'acl':
|
252 |
+
cerber_acl_form();
|
253 |
+
break;
|
254 |
+
case 'activity':
|
255 |
+
cerber_show_activity();
|
256 |
+
break;
|
257 |
+
case 'lockouts':
|
258 |
+
cerber_show_lockouts();
|
259 |
+
break;
|
260 |
+
case 'help':
|
261 |
+
cerber_show_help();
|
262 |
+
break;
|
263 |
+
case 'dashboard':
|
264 |
+
cerber_show_dashboard();
|
265 |
+
break;
|
266 |
+
default: cerber_show_settings($tab);
|
267 |
+
}
|
268 |
+
|
269 |
+
echo '</div>';
|
270 |
+
|
271 |
+
$pi ['Version'] = CERBER_VER;
|
272 |
+
$pi ['time'] = time();
|
273 |
+
$pi ['user'] = get_current_user_id();
|
274 |
+
update_site_option( '_cp_tabs_' . $tab, serialize( $pi ) );
|
275 |
+
|
276 |
+
?>
|
277 |
+
</div>
|
278 |
+
<?php
|
279 |
+
}
|
280 |
+
/*
|
281 |
+
* Display settings screen (one tab)
|
282 |
+
*
|
283 |
+
*/
|
284 |
+
function cerber_show_settings($active_tab = null){
|
285 |
+
if (is_multisite()) $action = ''; // Settings API doesn't work in multisite. Post data will be handled in the cerber_ms_update()
|
286 |
+
else $action ='options.php';
|
287 |
+
// Display form with settings fields via Settings API
|
288 |
+
echo '<form method="post" action="'.$action.'">';
|
289 |
+
|
290 |
+
settings_fields( 'cerberus-'.$active_tab ); // option group name, the same as used in register_setting().
|
291 |
+
do_settings_sections( 'cerber-'.$active_tab ); // the same as used in add_settings_section() $page
|
292 |
+
echo '<div style="padding-left: 220px">';
|
293 |
+
submit_button();
|
294 |
+
echo '</div>';
|
295 |
+
echo '</form>';
|
296 |
+
}
|
297 |
+
/*
|
298 |
+
* Prepare values to display.
|
299 |
+
* Generate HTML for one input field on the settings page.
|
300 |
+
*
|
301 |
+
*
|
302 |
+
*/
|
303 |
+
function cerberus_field_show($args){
|
304 |
+
|
305 |
+
$settings = get_site_option('cerber-'.$args['group']);
|
306 |
+
if ( is_array( $settings ) ) {
|
307 |
+
array_walk_recursive( $settings, 'esc_html' );
|
308 |
+
}
|
309 |
+
$pre = '';
|
310 |
+
$value = '';
|
311 |
+
if ( ! empty( $args['label'] ) ) {
|
312 |
+
$label = $args['label'];
|
313 |
+
} else {
|
314 |
+
$label = '';
|
315 |
+
}
|
316 |
+
if ( isset( $args['option'] ) ) {
|
317 |
+
if ( isset( $settings[ $args['option'] ] ) ) {
|
318 |
+
$value = $settings[ $args['option'] ];
|
319 |
+
}
|
320 |
+
if ( ( $args['option'] == 'loginnowp' || $args['option'] == 'loginpath' ) && ! get_option( 'permalink_structure' ) ) {
|
321 |
+
$disabled = ' disabled="disabled" ';
|
322 |
+
}
|
323 |
+
else {
|
324 |
+
$disabled = '';
|
325 |
+
}
|
326 |
+
if ( $args['option'] == 'loginpath' ) {
|
327 |
+
$pre = rtrim( get_home_url(), '/' ) . '/';
|
328 |
+
$value = urldecode( $value );
|
329 |
+
}
|
330 |
+
elseif ( $args['option'] == 'prohibited' || $args['option'] == 'email' ) {
|
331 |
+
if ( is_array( $value ) ) {
|
332 |
+
$value = implode( ', ', $value );
|
333 |
+
}
|
334 |
+
}
|
335 |
+
}
|
336 |
+
|
337 |
+
$name = 'cerber-'.$args['group'].'['.$args['option'].']';
|
338 |
+
|
339 |
+
switch ($args['type']) {
|
340 |
+
|
341 |
+
case 'limitz':
|
342 |
+
$s1 = $args['group'].'-period';
|
343 |
+
$s2 = $args['group'].'-number';
|
344 |
+
$s3 = $args['group'].'-within';
|
345 |
+
|
346 |
+
$html=sprintf( $args['label'] ,
|
347 |
+
'<input type="text" name="cerber-'.$args['group'].'['.$s1.']" value="'.$settings[$s1].'" size="3" maxlength="3" />',
|
348 |
+
'<input type="text" name="cerber-'.$args['group'].'['.$s2.']" value="'.$settings[$s2].'" size="3" maxlength="3" />',
|
349 |
+
'<input type="text" name="cerber-'.$args['group'].'['.$s3.']" value="'.$settings[$s3].'" size="3" maxlength="3" />');
|
350 |
+
break;
|
351 |
+
|
352 |
+
case 'attempts':
|
353 |
+
$html=sprintf(__('%s allowed retries in %s minutes','wp-cerber'),
|
354 |
+
'<input type="text" id="attempts" name="cerber-'.$args['group'].'[attempts]" value="'.$settings['attempts'].'" size="3" maxlength="3" />',
|
355 |
+
'<input type="text" id="period" name="cerber-'.$args['group'].'[period]" value="'.$settings['period'].'" size="3" maxlength="3" />');
|
356 |
+
break;
|
357 |
+
case 'aggressive':
|
358 |
+
$html=sprintf(__('Increase lockout duration to %s hours after %s lockouts in the last %s hours','wp-cerber'),
|
359 |
+
'<input type="text" id="agperiod" name="cerber-'.$args['group'].'[agperiod]" value="'.$settings['agperiod'].'" size="3" maxlength="3" />',
|
360 |
+
'<input type="text" id="aglocks" name="cerber-'.$args['group'].'[aglocks]" value="'.$settings['aglocks'].'" size="3" maxlength="3" />',
|
361 |
+
'<input type="text" id="aglast" name="cerber-'.$args['group'].'[aglast]" value="'.$settings['aglast'].'" size="3" maxlength="3" />');
|
362 |
+
break;
|
363 |
+
case 'notify':
|
364 |
+
$html= '<input type="checkbox" id="'.$args['option'].'" name="cerber-'.$args['group'].'['.$args['option'].']" value="1" '.checked(1,$value,false).$disabled.' /> '
|
365 |
+
.__('Notify admin if the number of active lockouts above','wp-cerber').
|
366 |
+
' <input type="text" id="above" name="cerber-'.$args['group'].'[above]" value="'.$settings['above'].'" size="3" maxlength="3" />'.
|
367 |
+
' (<a href="' . wp_nonce_url( add_query_arg( array( 'testnotify' => 'lockout', 'settings-updated' => 0 ) ), 'control', 'cerber_nonce' ) . '">' . __( 'Click to send test', 'wp-cerber' ) . '</a>)';
|
368 |
+
break;
|
369 |
+
case 'citadel':
|
370 |
+
$html=sprintf(__('Enable after %s failed login attempts in last %s minutes','wp-cerber'),
|
371 |
+
'<input type="text" id="cilimit" name="cerber-'.$args['group'].'[cilimit]" value="'.$settings['cilimit'].'" size="3" maxlength="3" />',
|
372 |
+
'<input type="text" id="ciperiod" name="cerber-'.$args['group'].'[ciperiod]" value="'.$settings['ciperiod'].'" size="3" maxlength="3" />');
|
373 |
+
break;
|
374 |
+
case 'checkbox':
|
375 |
+
//$name = 'cerber-'.$args['group'].'['.$args['option'].']';
|
376 |
+
$html='<input type="checkbox" id="'.$args['option'].'" name="'.$name.'" value="1" '.checked(1,$value,false).$disabled.' />';
|
377 |
+
$html.= ' <label for="'.$args['option'].'">'.$args['label'].'</label>';
|
378 |
+
break;
|
379 |
+
case 'textarea':
|
380 |
+
//$name = 'cerber-'.$args['group'].'['.$args['option'].']';
|
381 |
+
$html='<textarea class="large-text code" id="'.$args['option'].'" name="'.$name.'" '.$disabled.' />'.$value.'</textarea>';
|
382 |
+
$html.= '<br><label for="'.$args['option'].'">'.$args['label'].'</label>';
|
383 |
+
break;
|
384 |
+
case 'select':
|
385 |
+
//$name = 'cerber-'.$args['group'].'['.$args['option'].']';
|
386 |
+
$html=cerber_select($name,$args['set'],$value);
|
387 |
+
break;
|
388 |
+
case 'text':
|
389 |
+
default:
|
390 |
+
//$name = 'cerber-'.$args['group'].'['.$args['option'].']';
|
391 |
+
if ( isset( $args['size'] ) ) {
|
392 |
+
$size = ' size="' . $args['size'] . '" maxlength="' . $args['size'] . '" ';
|
393 |
+
} else {
|
394 |
+
$size = '';
|
395 |
+
}
|
396 |
+
if ( isset( $args['placeholder'] ) ) {
|
397 |
+
$plh = ' placeholder="' . $args['placeholder'] . '"';
|
398 |
+
} else {
|
399 |
+
$plh = '';
|
400 |
+
}
|
401 |
+
$html = $pre . '<input type="text" id="' . $args['option'] . '" name="'.$name.'" value="' . $value . '"' . $disabled . $size . $plh. '/>';
|
402 |
+
$html .= ' <label for="' . $args['option'] . '">' . $label . '</label>';
|
403 |
+
break;
|
404 |
+
}
|
405 |
+
|
406 |
+
if (!empty($args['enabled'])){
|
407 |
+
$name = 'cerber-'.$args['group'].'['.$args['option'].'-enabled]';
|
408 |
+
$value = 0;
|
409 |
+
if ( isset( $settings[ $args['option'] . '-enabled' ] ) ) {
|
410 |
+
$value = $settings[ $args['option'] . '-enabled' ];
|
411 |
+
}
|
412 |
+
$checkbox = '<input type="checkbox" id="' . $args['option'] . '-enabled" name="' . $name . '" value="1" ' . checked( 1, $value, false ) . ' /> <label for="' . $args['option'] . '-enabled">' . $args['enabled'] . '</label> ';
|
413 |
+
$html = $checkbox . $html;
|
414 |
+
}
|
415 |
+
|
416 |
+
echo $html."\n";
|
417 |
+
}
|
418 |
+
|
419 |
+
/**
|
420 |
+
* @param $name string HTML input name
|
421 |
+
* @param $list array List of elements
|
422 |
+
* @param null $selected Index of selected element in the list
|
423 |
+
* @param string $class HTML class
|
424 |
+
* @param string $multiple
|
425 |
+
*
|
426 |
+
* @return string HTML for select element
|
427 |
+
*/
|
428 |
+
function cerber_select($name, $list, $selected = null, $class = '' , $multiple = ''){
|
429 |
+
$options = array();
|
430 |
+
foreach ($list as $key => $value ) {
|
431 |
+
if ($selected == (string)$key) {
|
432 |
+
$s = 'selected';
|
433 |
+
}
|
434 |
+
else $s = '';
|
435 |
+
$options[]= '<option value="'.$key.'" '.$s.'>'.htmlspecialchars($value).'</option>';
|
436 |
+
}
|
437 |
+
if ($multiple) $m = 'multiple="multiple"'; else $m = '';
|
438 |
+
return ' <select name="'.$name.'" class="crb-select '.$class.'" '.$m.'>'.implode("\n",$options).'</select>';
|
439 |
+
}
|
440 |
+
|
441 |
+
/*
|
442 |
+
Sanitizing users input for Main Settings
|
443 |
+
*/
|
444 |
+
add_filter( 'pre_update_option_'.CERBER_OPT, 'cerber_sanitize_options', 10, 3 );
|
445 |
+
function cerber_sanitize_options($new, $old, $option) { // $option added in WP 4.4.0
|
446 |
+
|
447 |
+
$new['attempts'] = absint( $new['attempts'] );
|
448 |
+
$new['period'] = absint( $new['period'] );
|
449 |
+
$new['lockout'] = absint( $new['lockout'] );
|
450 |
+
|
451 |
+
$new['agperiod'] = absint( $new['agperiod'] );
|
452 |
+
$new['aglocks'] = absint( $new['aglocks'] );
|
453 |
+
$new['aglast'] = absint( $new['aglast'] );
|
454 |
+
|
455 |
+
if ( get_option( 'permalink_structure' ) ) {
|
456 |
+
$new['loginpath'] = urlencode( str_replace( '/', '', $new['loginpath'] ) );
|
457 |
+
if ( $new['loginpath'] && $new['loginpath'] != $old['loginpath'] ) {
|
458 |
+
$href = get_home_url() . '/' . $new['loginpath'] . '/';
|
459 |
+
$url = urldecode( $href );
|
460 |
+
$msg = __( 'Attention! You have changed the login URL! The new login URL is', 'wp-cerber' );
|
461 |
+
cerber_admin_notice( $msg . ': <a href="' . $href . '">' . $url . '</a>' );
|
462 |
+
cerber_send_notify( 'newlurl', $msg . ': ' . $url );
|
463 |
+
}
|
464 |
+
} else {
|
465 |
+
$new['loginpath'] = '';
|
466 |
+
$new['loginnowp'] = 0;
|
467 |
+
}
|
468 |
+
|
469 |
+
$new['ciduration'] = absint( $new['ciduration'] );
|
470 |
+
$new['cilimit'] = absint( $new['cilimit'] );
|
471 |
+
$new['cilimit'] = $new['cilimit'] == 0 ? '' : $new['cilimit'];
|
472 |
+
$new['ciperiod'] = absint( $new['ciperiod'] );
|
473 |
+
$new['ciperiod'] = $new['ciperiod'] == 0 ? '' : $new['ciperiod'];
|
474 |
+
if ( ! $new['cilimit'] ) {
|
475 |
+
$new['ciperiod'] = '';
|
476 |
+
}
|
477 |
+
if ( ! $new['ciperiod'] ) {
|
478 |
+
$new['cilimit'] = '';
|
479 |
+
}
|
480 |
+
|
481 |
+
if ( absint( $new['keeplog'] ) == 0 ) {
|
482 |
+
$new['keeplog'] = '';
|
483 |
+
}
|
484 |
+
|
485 |
+
return $new;
|
486 |
+
}
|
487 |
+
/*
|
488 |
+
Sanitizing/checking user input for User tab settings
|
489 |
+
*/
|
490 |
+
add_filter( 'pre_update_option_'.CERBER_OPT_U, 'cerber_sanitize_u', 10, 3 );
|
491 |
+
function cerber_sanitize_u($new, $old, $option) { // $option added in WP 4.4.0
|
492 |
+
if ( ! is_array( $new['prohibited'] ) ) {
|
493 |
+
$list = explode( ',', $new['prohibited'] );
|
494 |
+
} else {
|
495 |
+
$list = $new['prohibited'];
|
496 |
+
}
|
497 |
+
$list = array_map('trim', $list);
|
498 |
+
$list = array_filter($list);
|
499 |
+
$list = array_unique($list);
|
500 |
+
$new['prohibited'] = $list;
|
501 |
+
return $new;
|
502 |
+
}
|
503 |
+
/*
|
504 |
+
Sanitizing/checking user input for reCAPTCHA tab settings
|
505 |
+
*/
|
506 |
+
add_filter( 'pre_update_option_'.CERBER_OPT_C, 'cerber_sanitize_c', 10, 3 );
|
507 |
+
function cerber_sanitize_c($new, $old, $option) {
|
508 |
+
global $wp_cerber;
|
509 |
+
// Check ability to make external HTTP requests
|
510 |
+
if ($wp_cerber && !empty($new['sitekey']) && !empty($new['secretkey'])) {
|
511 |
+
if (!$goo = $wp_cerber->reCaptchaRequest('1')) {
|
512 |
+
$labels = cerber_get_labels( 'activity' );
|
513 |
+
cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' ' . $labels[42] );
|
514 |
+
cerber_log( 42 );
|
515 |
+
}
|
516 |
+
}
|
517 |
+
|
518 |
+
$new['recaptcha-period'] = absint( $new['recaptcha-period'] );
|
519 |
+
$new['recaptcha-number'] = absint( $new['recaptcha-number'] );
|
520 |
+
$new['recaptcha-within'] = absint( $new['recaptcha-within'] );
|
521 |
+
|
522 |
+
return $new;
|
523 |
+
}
|
524 |
+
/*
|
525 |
+
Sanitizing/checking user input for Notifications tab settings
|
526 |
+
*/
|
527 |
+
add_filter( 'pre_update_option_'.CERBER_OPT_N, 'cerber_sanitize_n', 10, 3 );
|
528 |
+
function cerber_sanitize_n($new, $old, $option) {
|
529 |
+
|
530 |
+
if ( ! empty( $new['email'] ) ) {
|
531 |
+
if ( ! is_array( $new['email'] ) ) {
|
532 |
+
$list = explode( ',', $new['email'] );
|
533 |
+
} else {
|
534 |
+
$list = $new['email'];
|
535 |
+
}
|
536 |
+
$list = array_map('trim', $list);
|
537 |
+
$list = array_filter($list);
|
538 |
+
$list = array_unique($list);
|
539 |
+
foreach ( $list as $item ) {
|
540 |
+
if (!is_email( $item )) cerber_admin_notice( __( '<strong>ERROR</strong>: please enter a valid email address.' ) );
|
541 |
+
}
|
542 |
+
$new['email'] = $list;
|
543 |
+
}
|
544 |
+
$new['emailrate'] = absint( $new['emailrate'] );
|
545 |
+
|
546 |
+
// set 'default' value for device setting if a new token has been entered
|
547 |
+
if ( $new['pbtoken'] != $old['pbtoken'] ) {
|
548 |
+
$list = cerber_pb_get_devices($new['pbtoken']);
|
549 |
+
if (is_array($list) && !empty($list)) $new['pbdevice'] = 'all';
|
550 |
+
else $new['pbdevice'] = '';
|
551 |
+
}
|
552 |
+
|
553 |
+
return $new;
|
554 |
+
}
|
555 |
+
/**
|
556 |
+
* Let's sanitize them all
|
557 |
+
* @since 4.1
|
558 |
+
*
|
559 |
+
*/
|
560 |
+
add_filter( 'pre_update_option','cerber_o_o_sanitizer', 10 , 3);
|
561 |
+
function cerber_o_o_sanitizer($value, $option, $old_value) {
|
562 |
+
if (in_array($option, array(CERBER_OPT, CERBER_OPT_H, CERBER_OPT_U, CERBER_OPT_C, CERBER_OPT_N))){
|
563 |
+
if (is_array($value)){
|
564 |
+
array_walk_recursive($value, function (&$element, $key) {
|
565 |
+
if (!is_array($element)) $element = sanitize_text_field($element);
|
566 |
+
});
|
567 |
+
}
|
568 |
+
else {
|
569 |
+
$value = sanitize_text_field($value);
|
570 |
+
}
|
571 |
+
}
|
572 |
+
return $value;
|
573 |
+
}
|
574 |
+
|
575 |
+
/*
|
576 |
+
* Save settings on the multisite WP.
|
577 |
+
* Process POST Form for settings screens.
|
578 |
+
* Because Settings API doesn't work in multisite mode!
|
579 |
+
*
|
580 |
+
*/
|
581 |
+
if (is_multisite()) {
|
582 |
+
add_action('admin_init', 'cerber_ms_update');
|
583 |
+
}
|
584 |
+
function cerber_ms_update() {
|
585 |
+
if ( $_SERVER['REQUEST_METHOD'] != 'POST' || ! isset( $_POST['action'] ) || $_POST['action'] != 'update' ) {
|
586 |
+
return;
|
587 |
+
}
|
588 |
+
if ( ! isset( $_POST['option_page'] ) || false === strpos( $_POST['option_page'], 'cerberus-' ) ) {
|
589 |
+
return;
|
590 |
+
}
|
591 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
592 |
+
return;
|
593 |
+
}
|
594 |
+
|
595 |
+
// See wp_nonce_field() in the settings_fields() function
|
596 |
+
check_admin_referer($_POST['option_page'].'-options');
|
597 |
+
|
598 |
+
$opt_name = 'cerber-' . substr( $_POST['option_page'], 9 ); // 8 = length of 'cerberus-'
|
599 |
+
|
600 |
+
$old = (array) get_site_option( $opt_name );
|
601 |
+
$new = $_POST[ $opt_name ];
|
602 |
+
$new = apply_filters( 'pre_update_option_' . $opt_name, $new, $old, $opt_name );
|
603 |
+
update_site_option( $opt_name, $new );
|
604 |
+
}
|
605 |
+
|
606 |
+
/*
|
607 |
+
* Default settings
|
608 |
+
*
|
609 |
+
*/
|
610 |
+
function cerber_get_defaults($field = null) {
|
611 |
+
$all_defaults = array(
|
612 |
+
CERBER_OPT => array(
|
613 |
+
'attempts' => 3,
|
614 |
+
'period' => 60,
|
615 |
+
'lockout' => 60,
|
616 |
+
'agperiod' => 24,
|
617 |
+
'aglocks' => 2,
|
618 |
+
'aglast' => 4,
|
619 |
+
'limitwhite' => 0,
|
620 |
+
'notify' => 1,
|
621 |
+
'above' => 3,
|
622 |
+
|
623 |
+
'proxy' => 0,
|
624 |
+
|
625 |
+
'subnet' => 0,
|
626 |
+
'nonusers' => 1,
|
627 |
+
'wplogin' => 0,
|
628 |
+
'noredirect' => 1,
|
629 |
+
'page404' => 0,
|
630 |
+
|
631 |
+
'loginpath' => '',
|
632 |
+
'loginnowp' => 0,
|
633 |
+
|
634 |
+
'cilimit' => 200,
|
635 |
+
'ciperiod' => 30,
|
636 |
+
'ciduration' => 60,
|
637 |
+
'ciwhite' => 1,
|
638 |
+
'cinotify' => 1,
|
639 |
+
|
640 |
+
'keeplog' => 30,
|
641 |
+
'ip_extra' => 1,
|
642 |
+
'cerberlab' => 0,
|
643 |
+
'cerberproto' => 0,
|
644 |
+
'usefile' => 0,
|
645 |
+
'dateformat' => ''
|
646 |
+
|
647 |
+
),
|
648 |
+
CERBER_OPT_H => array(
|
649 |
+
'stopenum' => 1,
|
650 |
+
'xmlrpc' => 0,
|
651 |
+
'nofeeds' => 0,
|
652 |
+
'norest' => 1,
|
653 |
+
'hashauthor' => 0,
|
654 |
+
'cleanhead' => 1,
|
655 |
+
),
|
656 |
+
CERBER_OPT_U => array(
|
657 |
+
'prohibited' => array(),
|
658 |
+
'auth_expire' => '',
|
659 |
+
),
|
660 |
+
CERBER_OPT_C => array(
|
661 |
+
'botscomm' => 1,
|
662 |
+
'botsreg' => 1,
|
663 |
+
'spamcomm' => 0,
|
664 |
+
'trashafter' => 7,
|
665 |
+
'trashafter-enabled' => 0,
|
666 |
+
'sitekey' => '',
|
667 |
+
'secretkey' => '',
|
668 |
+
'invirecap' => 0,
|
669 |
+
'recaplogin' => 0,
|
670 |
+
'recaplost' => 0,
|
671 |
+
'recapreg' => 0,
|
672 |
+
'recapwoologin' => 0,
|
673 |
+
'recapwoolost' => 0,
|
674 |
+
'recapwooreg' => 0,
|
675 |
+
'recapcom' => 0,
|
676 |
+
'recapcomauth' => 0,
|
677 |
+
'recaptcha-period' => 60,
|
678 |
+
'recaptcha-number' => 3,
|
679 |
+
'recaptcha-within' => 30,
|
680 |
+
),
|
681 |
+
CERBER_OPT_N => array(
|
682 |
+
'email' => '',
|
683 |
+
'emailrate' => 12,
|
684 |
+
'pbtoken' => '',
|
685 |
+
'pbdevice' => '',
|
686 |
+
)
|
687 |
+
);
|
688 |
+
if ( $field ) {
|
689 |
+
foreach ( $all_defaults as $option ) {
|
690 |
+
if ( isset( $option[ $field ] ) ) {
|
691 |
+
return $option[ $field ];
|
692 |
+
}
|
693 |
+
}
|
694 |
+
return false;
|
695 |
+
} else {
|
696 |
+
return $all_defaults;
|
697 |
+
}
|
698 |
+
}
|
699 |
+
|
700 |
+
/*
|
701 |
+
*
|
702 |
+
* Right way to save Cerber settings outside of wp-admin settings page
|
703 |
+
* @since 2.0
|
704 |
+
*
|
705 |
+
*/
|
706 |
+
function cerber_save_options($options){
|
707 |
+
foreach ( cerber_get_defaults() as $option_name => $fields ) {
|
708 |
+
$save=array();
|
709 |
+
foreach ( $fields as $field_name => $def ) {
|
710 |
+
if (isset($options[$field_name])) $save[$field_name]=$options[$field_name];
|
711 |
+
}
|
712 |
+
if (!empty($save)) {
|
713 |
+
$result = update_site_option($option_name,$save);
|
714 |
+
}
|
715 |
+
}
|
716 |
+
}
|
717 |
+
|
718 |
+
/**
|
719 |
+
*
|
720 |
+
* @deprecated since 4.0 use $wp_cerber->getSettings() instead.
|
721 |
+
* @param string $option
|
722 |
+
*
|
723 |
+
* @return array|bool|mixed
|
724 |
+
*/
|
725 |
+
function cerber_get_options($option = '') {
|
726 |
+
$options = array( CERBER_OPT, CERBER_OPT_H, CERBER_OPT_U, CERBER_OPT_C, CERBER_OPT_N );
|
727 |
+
$united = array();
|
728 |
+
foreach ( $options as $opt ) {
|
729 |
+
$o = get_site_option( $opt );
|
730 |
+
if (!is_array($o)) continue;
|
731 |
+
$united = array_merge( $united, $o );
|
732 |
+
}
|
733 |
+
$options = $united;
|
734 |
+
if ( ! empty( $option ) ) {
|
735 |
+
if ( isset( $options[ $option ] ) ) {
|
736 |
+
return $options[ $option ];
|
737 |
+
} else {
|
738 |
+
return false;
|
739 |
+
}
|
740 |
+
}
|
741 |
+
return $options;
|
742 |
+
}
|
743 |
+
/*
|
744 |
+
Load default settings, except Custom Login URL
|
745 |
+
*/
|
746 |
+
function cerber_load_defaults() {
|
747 |
+
$save = array();
|
748 |
+
foreach ( cerber_get_defaults() as $option_name => $fields ) {
|
749 |
+
foreach ( $fields as $field_name => $def ) {
|
750 |
+
$save[ $field_name ] = $def;
|
751 |
+
}
|
752 |
+
}
|
753 |
+
$old = cerber_get_options();
|
754 |
+
if (!empty($old['loginpath'])) $save['loginpath'] = $old['loginpath'];
|
755 |
+
cerber_save_options( $save );
|
756 |
+
}
|
757 |
+
/*
|
758 |
+
Email addresses for notification
|
759 |
+
*/
|
760 |
+
function cerber_get_email() {
|
761 |
+
global $wp_cerber;
|
762 |
+
if (!$email = $wp_cerber->getSettings('email')) $email = get_site_option('admin_email');
|
763 |
+
//if (!is_array($email)) $email = array($email);
|
764 |
+
if (is_array($email)) $email = implode(',',$email); // @since 4.9
|
765 |
+
return $email;
|
766 |
+
}
|
whois.php
ADDED
@@ -0,0 +1,465 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
4 |
+
|
5 |
+
Licenced under the GNU GPL.
|
6 |
+
|
7 |
+
This program is free software; you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation; either version 3 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program; if not, write to the Free Software
|
19 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
|
21 |
+
*/
|
22 |
+
|
23 |
+
/*
|
24 |
+
|
25 |
+
*========================================================================*
|
26 |
+
| |
|
27 |
+
| ATTENTION! Do not change or edit this file! |
|
28 |
+
| |
|
29 |
+
*========================================================================*
|
30 |
+
|
31 |
+
*/
|
32 |
+
|
33 |
+
|
34 |
+
// If this file is called directly, abort executing.
|
35 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
36 |
+
|
37 |
+
define('WHOIS_ERR_EXPIRE',300);
|
38 |
+
define('WHOIS_OK_EXPIRE',24 * 3600);
|
39 |
+
define('WHOIS_IO_TIMEOUT', 3);
|
40 |
+
|
41 |
+
require_once(dirname(__FILE__).'/ripe.php');
|
42 |
+
|
43 |
+
/*
|
44 |
+
* Get WHOIS about IP
|
45 |
+
* @since 2.7
|
46 |
+
*
|
47 |
+
*/
|
48 |
+
function cerber_ip_whois_info($ip) {
|
49 |
+
$ret = array();
|
50 |
+
|
51 |
+
$whois_server = cerber_get_whois_server($ip);
|
52 |
+
if (is_array($whois_server)) return $whois_server;
|
53 |
+
|
54 |
+
if ($whois_server == 'whois.ripe.net') {
|
55 |
+
return ripe_readable_info($ip);
|
56 |
+
}
|
57 |
+
|
58 |
+
$whois_info = cerber_get_whois($ip);
|
59 |
+
if (is_array($whois_info)) return $whois_info;
|
60 |
+
$data = cerber_parse_whois_data($whois_info);
|
61 |
+
|
62 |
+
// Special case - network was transfered to RIPE
|
63 |
+
if (isset($data['ReferralServer']) && $data['ReferralServer'] == 'whois://whois.ripe.net') {
|
64 |
+
return ripe_readable_info($ip);
|
65 |
+
}
|
66 |
+
|
67 |
+
$table1 = '';
|
68 |
+
if (!empty($data)) {
|
69 |
+
$table1 = '<table class="whois-object"><tr><td colspan="2"><b>FILTERED WHOIS INFO</b></td></tr>';
|
70 |
+
foreach ( $data as $key => $value ) {
|
71 |
+
if (is_email($value)) $value = '<a href="mailto:'.$value.'">'.$value.'</a>';
|
72 |
+
elseif (strtolower($key) == 'country') {
|
73 |
+
$value = '<b><span '.cerber_get_flag_css($value).'>'.cerber_country_name($value).'</span> ('.$value.')</b>';
|
74 |
+
$ret['country'] = $value;
|
75 |
+
}
|
76 |
+
|
77 |
+
$table1.='<tr><td>'.$key.'</td><td>'.$value.'</td></tr>';
|
78 |
+
}
|
79 |
+
$table1.='</table>';
|
80 |
+
}
|
81 |
+
|
82 |
+
$table2 ='<table class="whois-object raw"><tr><td><b>RAW WHOIS INFO</b></td></tr>';
|
83 |
+
$table2.='<tr><td><pre>'.$whois_info."\n WHOIS server: ".$whois_server.'</pre></td></tr>';
|
84 |
+
$table2.='</table>';
|
85 |
+
|
86 |
+
$info = $table1.$table2;
|
87 |
+
|
88 |
+
// Other possible field with abuse email address
|
89 |
+
if (empty($data['abuse-mailbox']) && !empty($data['OrgAbuseEmail'])){
|
90 |
+
$data['abuse-mailbox'] = $data['OrgAbuseEmail'];
|
91 |
+
}
|
92 |
+
if (empty($data['abuse-mailbox'])){
|
93 |
+
foreach ($data as $field){
|
94 |
+
$maybe_email = trim($field);
|
95 |
+
if (false !== strpos($maybe_email,'abuse') && is_email($maybe_email)){
|
96 |
+
$data['abuse-mailbox'] = $maybe_email;
|
97 |
+
break;
|
98 |
+
}
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
// Network
|
103 |
+
if (!empty($data['inetnum'])){
|
104 |
+
$data['network'] = $data['inetnum'];
|
105 |
+
}
|
106 |
+
elseif (!empty($data['NetRange'])){
|
107 |
+
$data['network'] = $data['NetRange'];
|
108 |
+
}
|
109 |
+
|
110 |
+
$ret['data'] = $data;
|
111 |
+
$ret['whois'] = $info;
|
112 |
+
return $ret;
|
113 |
+
}
|
114 |
+
/*
|
115 |
+
* Get WHOIS info fro given IP
|
116 |
+
* @since 2.7
|
117 |
+
*
|
118 |
+
*/
|
119 |
+
function cerber_get_whois($ip){
|
120 |
+
$key = 'WHS-'.cerber_get_id_ip($ip);
|
121 |
+
$info = get_transient($key);
|
122 |
+
if (false === $info) {
|
123 |
+
$whois_server = cerber_get_whois_server($ip);
|
124 |
+
if (is_array($whois_server)) return $whois_server;
|
125 |
+
$info = make_whois_request($whois_server, $ip);
|
126 |
+
if (is_array($info)) return $info;
|
127 |
+
set_transient( $key, $info , WHOIS_OK_EXPIRE );
|
128 |
+
}
|
129 |
+
return $info;
|
130 |
+
}
|
131 |
+
/*
|
132 |
+
* Find out what is server storing WHOIS info for given IP
|
133 |
+
* @since 2.7
|
134 |
+
*
|
135 |
+
*/
|
136 |
+
function cerber_get_whois_server($ip){
|
137 |
+
$key = 'SRV-'.cerber_get_id_ip($ip);
|
138 |
+
$server = get_transient($key);
|
139 |
+
if (false === $server) {
|
140 |
+
$w = make_whois_request( 'whois.iana.org', $ip);
|
141 |
+
if (is_array($w)) return $w;
|
142 |
+
preg_match( '/^whois\:\s+([\w\.\-]{3,})/m', $w, $data );
|
143 |
+
if ( ! isset( $data[1] ) ) return array('error'=>'No WHOIS server was found for IP '.$ip);
|
144 |
+
$server = $data[1];
|
145 |
+
set_transient( $key, $server , WHOIS_OK_EXPIRE );
|
146 |
+
}
|
147 |
+
return $server;
|
148 |
+
}
|
149 |
+
/*
|
150 |
+
* Attempt to parse TXT WHOIS response to associative array
|
151 |
+
* @since 2.7
|
152 |
+
*
|
153 |
+
*/
|
154 |
+
function cerber_parse_whois_data($txt){
|
155 |
+
$lines = explode("\n",$txt);
|
156 |
+
$lines = array_filter($lines);
|
157 |
+
$ret = array();
|
158 |
+
foreach ( $lines as $line ) {
|
159 |
+
if (preg_match( '/^([\w\-]+)\:\s+(.+)/', trim($line), $data )) $ret[$data[1]] = $data[2];
|
160 |
+
}
|
161 |
+
return $ret;
|
162 |
+
}
|
163 |
+
/*
|
164 |
+
*
|
165 |
+
* Retrieve RAW IP information by using WHOIS protocol
|
166 |
+
* @since 2.7
|
167 |
+
*
|
168 |
+
*/
|
169 |
+
function make_whois_request($server, $ip) {
|
170 |
+
if (!$f = fsockopen( $server, 43, $errno, $errstr, WHOIS_IO_TIMEOUT )) return array('error'=>$errstr.' (WHOIS: '.$server.').');
|
171 |
+
#Set the timeout for answering
|
172 |
+
if (!stream_set_timeout($f,WHOIS_IO_TIMEOUT)) return array('error'=>'WHOIS: Unable to set IO timeout.');
|
173 |
+
#Send the IP address to the whois server
|
174 |
+
if (false === fwrite($f, "$ip\r\n" )) return array('error'=>'WHOIS: Unable to send request to remote WHOIS server ('.$server.').');
|
175 |
+
//Set the timeout limit for reading again
|
176 |
+
if (!stream_set_timeout($f,WHOIS_IO_TIMEOUT)) return array('error'=>'WHOIS: Unable to set IO timeout.');
|
177 |
+
//Set socket in non-blocking mode
|
178 |
+
if (!stream_set_blocking( $f, 0 )) return array('error'=>'WHOIS: Unable to set IO non-blocking mode.');
|
179 |
+
//If connection still valid
|
180 |
+
if ($f) {
|
181 |
+
$data = '';
|
182 |
+
while (!feof($f)) {
|
183 |
+
$data .= fread($f,256);
|
184 |
+
}
|
185 |
+
}
|
186 |
+
else return array('error'=>'Unable to get WHOIS response.');
|
187 |
+
if (!$data) return array('error'=>'Remote WHOIS server return empty response ('.$server.').');
|
188 |
+
return $data;
|
189 |
+
}
|
190 |
+
/*
|
191 |
+
* Tiny national flag by country code
|
192 |
+
* @since 2.7
|
193 |
+
*
|
194 |
+
*/
|
195 |
+
function cerber_get_flag_css($code){
|
196 |
+
$assets_url = plugin_dir_url(CERBER_FILE).'assets';
|
197 |
+
return 'style="padding-left: 24px; background: url(\''.$assets_url.'/flags/'.strtolower($code).'.gif\') no-repeat left;"';
|
198 |
+
}
|
199 |
+
/*
|
200 |
+
*
|
201 |
+
* Country name from two letter code
|
202 |
+
* ISO 3166-1 alpha-2
|
203 |
+
* @since 2.7
|
204 |
+
*
|
205 |
+
*/
|
206 |
+
function cerber_country_name($code) {
|
207 |
+
global $cerber_country_names;
|
208 |
+
$code = strtoupper($code);
|
209 |
+
if (isset($cerber_country_names[$code])) return $cerber_country_names[$code];
|
210 |
+
return __('Unknown','wp-cerber');
|
211 |
+
}
|
212 |
+
|
213 |
+
$cerber_country_names = array(
|
214 |
+
'AF' => 'AFGHANISTAN',
|
215 |
+
'AL' => 'ALBANIA',
|
216 |
+
'AX' => 'Åland Islands',
|
217 |
+
'DZ' => 'ALGERIA',
|
218 |
+
'AS' => 'AMERICAN SAMOA',
|
219 |
+
'AD' => 'ANDORRA',
|
220 |
+
'AO' => 'ANGOLA',
|
221 |
+
'AI' => 'ANGUILLA',
|
222 |
+
'AQ' => 'ANTARCTICA',
|
223 |
+
'AG' => 'ANTIGUA AND BARBUDA',
|
224 |
+
'AR' => 'ARGENTINA',
|
225 |
+
'AM' => 'ARMENIA',
|
226 |
+
'AW' => 'ARUBA',
|
227 |
+
'AU' => 'AUSTRALIA',
|
228 |
+
'AT' => 'AUSTRIA',
|
229 |
+
'AZ' => 'AZERBAIJAN',
|
230 |
+
'BS' => 'BAHAMAS',
|
231 |
+
'BH' => 'BAHRAIN',
|
232 |
+
'BD' => 'BANGLADESH',
|
233 |
+
'BB' => 'BARBADOS',
|
234 |
+
'BY' => 'BELARUS',
|
235 |
+
'BE' => 'BELGIUM',
|
236 |
+
'BZ' => 'BELIZE',
|
237 |
+
'BJ' => 'BENIN',
|
238 |
+
'BM' => 'BERMUDA',
|
239 |
+
'BT' => 'BHUTAN',
|
240 |
+
'BO' => 'BOLIVIA, PLURINATIONAL STATE OF',
|
241 |
+
'BQ' => 'BONAIRE, SINT EUSTATIUS AND SABA',
|
242 |
+
'BA' => 'BOSNIA AND HERZEGOVINA',
|
243 |
+
'BW' => 'BOTSWANA',
|
244 |
+
'BV' => 'BOUVET ISLAND',
|
245 |
+
'BR' => 'BRAZIL',
|
246 |
+
'IO' => 'BRITISH INDIAN OCEAN TERRITORY',
|
247 |
+
'BN' => 'BRUNEI DARUSSALAM',
|
248 |
+
'BG' => 'BULGARIA',
|
249 |
+
'BF' => 'BURKINA FASO',
|
250 |
+
'BI' => 'BURUNDI',
|
251 |
+
'KH' => 'CAMBODIA',
|
252 |
+
'CM' => 'CAMEROON',
|
253 |
+
'CA' => 'CANADA',
|
254 |
+
'CV' => 'CAPE VERDE',
|
255 |
+
'KY' => 'CAYMAN ISLANDS',
|
256 |
+
'CF' => 'CENTRAL AFRICAN REPUBLIC',
|
257 |
+
'TD' => 'CHAD',
|
258 |
+
'CL' => 'CHILE',
|
259 |
+
'CN' => 'CHINA',
|
260 |
+
'CX' => 'CHRISTMAS ISLAND',
|
261 |
+
'CC' => 'COCOS (KEELING) ISLANDS',
|
262 |
+
'CO' => 'COLOMBIA',
|
263 |
+
'KM' => 'COMOROS',
|
264 |
+
'CG' => 'CONGO',
|
265 |
+
'CD' => 'CONGO, THE DEMOCRATIC REPUBLIC OF THE',
|
266 |
+
'CK' => 'COOK ISLANDS',
|
267 |
+
'CR' => 'COSTA RICA',
|
268 |
+
'CI' => 'COTE DIVOIRE',
|
269 |
+
'HR' => 'CROATIA',
|
270 |
+
'CU' => 'CUBA',
|
271 |
+
'CW' => 'CURACAO',
|
272 |
+
'CY' => 'CYPRUS',
|
273 |
+
'CZ' => 'CZECH REPUBLIC',
|
274 |
+
'DK' => 'DENMARK',
|
275 |
+
'DJ' => 'DJIBOUTI',
|
276 |
+
'DM' => 'DOMINICA',
|
277 |
+
'DO' => 'DOMINICAN REPUBLIC',
|
278 |
+
'EC' => 'ECUADOR',
|
279 |
+
'EG' => 'EGYPT',
|
280 |
+
'SV' => 'EL SALVADOR',
|
281 |
+
'GQ' => 'EQUATORIAL GUINEA',
|
282 |
+
'ER' => 'ERITREA',
|
283 |
+
'EE' => 'ESTONIA',
|
284 |
+
'ET' => 'ETHIOPIA',
|
285 |
+
'EU' => 'European Union',
|
286 |
+
'EZ' => 'Eurozone',
|
287 |
+
'FK' => 'FALKLAND ISLANDS (MALVINAS)',
|
288 |
+
'FO' => 'FAROE ISLANDS',
|
289 |
+
'FJ' => 'FIJI',
|
290 |
+
'FI' => 'FINLAND',
|
291 |
+
'FR' => 'FRANCE',
|
292 |
+
'GF' => 'FRENCH GUIANA',
|
293 |
+
'PF' => 'FRENCH POLYNESIA',
|
294 |
+
'TF' => 'FRENCH SOUTHERN TERRITORIES',
|
295 |
+
'GA' => 'GABON',
|
296 |
+
'GM' => 'GAMBIA',
|
297 |
+
'GE' => 'GEORGIA',
|
298 |
+
'DE' => 'GERMANY',
|
299 |
+
'GH' => 'GHANA',
|
300 |
+
'GI' => 'GIBRALTAR',
|
301 |
+
'GR' => 'GREECE',
|
302 |
+
'GL' => 'GREENLAND',
|
303 |
+
'GD' => 'GRENADA',
|
304 |
+
'GP' => 'GUADELOUPE',
|
305 |
+
'GU' => 'GUAM',
|
306 |
+
'GT' => 'GUATEMALA',
|
307 |
+
'GG' => 'GUERNSEY',
|
308 |
+
'GN' => 'GUINEA',
|
309 |
+
'GW' => 'GUINEA-BISSAU',
|
310 |
+
'GY' => 'GUYANA',
|
311 |
+
'HT' => 'HAITI',
|
312 |
+
'HM' => 'HEARD ISLAND AND MCDONALD ISLANDS',
|
313 |
+
'VA' => 'HOLY SEE (VATICAN CITY STATE)',
|
314 |
+
'HN' => 'HONDURAS',
|
315 |
+
'HK' => 'HONG KONG',
|
316 |
+
'HU' => 'HUNGARY',
|
317 |
+
'IS' => 'ICELAND',
|
318 |
+
'IN' => 'INDIA',
|
319 |
+
'ID' => 'INDONESIA',
|
320 |
+
'IR' => 'IRAN, ISLAMIC REPUBLIC OF',
|
321 |
+
'IQ' => 'IRAQ',
|
322 |
+
'IE' => 'IRELAND',
|
323 |
+
'IM' => 'ISLE OF MAN',
|
324 |
+
'IL' => 'ISRAEL',
|
325 |
+
'IT' => 'ITALY',
|
326 |
+
'JM' => 'JAMAICA',
|
327 |
+
'JP' => 'JAPAN',
|
328 |
+
'JE' => 'JERSEY',
|
329 |
+
'JO' => 'JORDAN',
|
330 |
+
'KZ' => 'KAZAKHSTAN',
|
331 |
+
'KE' => 'KENYA',
|
332 |
+
'KI' => 'KIRIBATI',
|
333 |
+
'KP' => 'KOREA, DEMOCRATIC PEOPLES REPUBLIC OF',
|
334 |
+
'KR' => 'KOREA, REPUBLIC OF',
|
335 |
+
'KW' => 'KUWAIT',
|
336 |
+
'KG' => 'KYRGYZSTAN',
|
337 |
+
'LA' => 'LAO PEOPLES DEMOCRATIC REPUBLIC',
|
338 |
+
'LV' => 'LATVIA',
|
339 |
+
'LB' => 'LEBANON',
|
340 |
+
'LS' => 'LESOTHO',
|
341 |
+
'LR' => 'LIBERIA',
|
342 |
+
'LY' => 'LIBYA',
|
343 |
+
'LI' => 'LIECHTENSTEIN',
|
344 |
+
'LT' => 'LITHUANIA',
|
345 |
+
'LU' => 'LUXEMBOURG',
|
346 |
+
'MO' => 'MACAO',
|
347 |
+
'MK' => 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF',
|
348 |
+
'MG' => 'MADAGASCAR',
|
349 |
+
'MW' => 'MALAWI',
|
350 |
+
'MY' => 'MALAYSIA',
|
351 |
+
'MV' => 'MALDIVES',
|
352 |
+
'ML' => 'MALI',
|
353 |
+
'MT' => 'MALTA',
|
354 |
+
'MH' => 'MARSHALL ISLANDS',
|
355 |
+
'MQ' => 'MARTINIQUE',
|
356 |
+
'MR' => 'MAURITANIA',
|
357 |
+
'MU' => 'MAURITIUS',
|
358 |
+
'YT' => 'MAYOTTE',
|
359 |
+
'MX' => 'MEXICO',
|
360 |
+
'FM' => 'MICRONESIA, FEDERATED STATES OF',
|
361 |
+
'MD' => 'MOLDOVA, REPUBLIC OF',
|
362 |
+
'MC' => 'MONACO',
|
363 |
+
'MN' => 'MONGOLIA',
|
364 |
+
'ME' => 'MONTENEGRO',
|
365 |
+
'MS' => 'MONTSERRAT',
|
366 |
+
'MA' => 'MOROCCO',
|
367 |
+
'MZ' => 'MOZAMBIQUE',
|
368 |
+
'MM' => 'MYANMAR',
|
369 |
+
'NA' => 'NAMIBIA',
|
370 |
+
'NR' => 'NAURU',
|
371 |
+
'NP' => 'NEPAL',
|
372 |
+
'NL' => 'NETHERLANDS',
|
373 |
+
'NC' => 'NEW CALEDONIA',
|
374 |
+
'NZ' => 'NEW ZEALAND',
|
375 |
+
'NI' => 'NICARAGUA',
|
376 |
+
'NE' => 'NIGER',
|
377 |
+
'NG' => 'NIGERIA',
|
378 |
+
'NU' => 'NIUE',
|
379 |
+
'NF' => 'NORFOLK ISLAND',
|
380 |
+
'MP' => 'NORTHERN MARIANA ISLANDS',
|
381 |
+
'NO' => 'NORWAY',
|
382 |
+
'OM' => 'OMAN',
|
383 |
+
'PK' => 'PAKISTAN',
|
384 |
+
'PW' => 'PALAU',
|
385 |
+
'PS' => 'PALESTINE, STATE OF',
|
386 |
+
'PA' => 'PANAMA',
|
387 |
+
'PG' => 'PAPUA NEW GUINEA',
|
388 |
+
'PY' => 'PARAGUAY',
|
389 |
+
'PE' => 'PERU',
|
390 |
+
'PH' => 'PHILIPPINES',
|
391 |
+
'PN' => 'PITCAIRN',
|
392 |
+
'PL' => 'POLAND',
|
393 |
+
'PT' => 'PORTUGAL',
|
394 |
+
'PR' => 'PUERTO RICO',
|
395 |
+
'QA' => 'QATAR',
|
396 |
+
'RE' => 'REUNION',
|
397 |
+
'RO' => 'ROMANIA',
|
398 |
+
'RU' => 'RUSSIAN FEDERATION',
|
399 |
+
'RW' => 'RWANDA',
|
400 |
+
'BL' => 'SAINT BARTHÉLEMY',
|
401 |
+
'SH' => 'SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA',
|
402 |
+
'KN' => 'SAINT KITTS AND NEVIS',
|
403 |
+
'LC' => 'SAINT LUCIA',
|
404 |
+
'MF' => 'SAINT MARTIN (FRENCH PART)',
|
405 |
+
'PM' => 'SAINT PIERRE AND MIQUELON',
|
406 |
+
'VC' => 'SAINT VINCENT AND THE GRENADINES',
|
407 |
+
'WS' => 'SAMOA',
|
408 |
+
'SM' => 'SAN MARINO',
|
409 |
+
'ST' => 'SAO TOME AND PRINCIPE',
|
410 |
+
'SA' => 'SAUDI ARABIA',
|
411 |
+
'SN' => 'SENEGAL',
|
412 |
+
'RS' => 'SERBIA',
|
413 |
+
'SC' => 'SEYCHELLES',
|
414 |
+
'SL' => 'SIERRA LEONE',
|
415 |
+
'SG' => 'SINGAPORE',
|
416 |
+
'SX' => 'SINT MAARTEN (DUTCH PART)',
|
417 |
+
'SK' => 'SLOVAKIA',
|
418 |
+
'SI' => 'SLOVENIA',
|
419 |
+
'SB' => 'SOLOMON ISLANDS',
|
420 |
+
'SO' => 'SOMALIA',
|
421 |
+
'ZA' => 'SOUTH AFRICA',
|
422 |
+
'GS' => 'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS',
|
423 |
+
'SS' => 'SOUTH SUDAN',
|
424 |
+
'ES' => 'SPAIN',
|
425 |
+
'LK' => 'SRI LANKA',
|
426 |
+
'SD' => 'SUDAN',
|
427 |
+
'SR' => 'SURINAME',
|
428 |
+
'SJ' => 'SVALBARD AND JAN MAYEN',
|
429 |
+
'SZ' => 'SWAZILAND',
|
430 |
+
'SE' => 'SWEDEN',
|
431 |
+
'CH' => 'SWITZERLAND',
|
432 |
+
'SY' => 'SYRIAN ARAB REPUBLIC',
|
433 |
+
'TW' => 'TAIWAN, PROVINCE OF CHINA',
|
434 |
+
'TJ' => 'TAJIKISTAN',
|
435 |
+
'TZ' => 'TANZANIA, UNITED REPUBLIC OF',
|
436 |
+
'TH' => 'THAILAND',
|
437 |
+
'TL' => 'TIMOR-LESTE',
|
438 |
+
'TG' => 'TOGO',
|
439 |
+
'TK' => 'TOKELAU',
|
440 |
+
'TO' => 'TONGA',
|
441 |
+
'TT' => 'TRINIDAD AND TOBAGO',
|
442 |
+
'TN' => 'TUNISIA',
|
443 |
+
'TR' => 'TURKEY',
|
444 |
+
'TM' => 'TURKMENISTAN',
|
445 |
+
'TC' => 'TURKS AND CAICOS ISLANDS',
|
446 |
+
'TV' => 'TUVALU',
|
447 |
+
'UG' => 'UGANDA',
|
448 |
+
'UA' => 'UKRAINE',
|
449 |
+
'AE' => 'UNITED ARAB EMIRATES',
|
450 |
+
'GB' => 'UNITED KINGDOM',
|
451 |
+
'US' => 'UNITED STATES',
|
452 |
+
'UM' => 'UNITED STATES MINOR OUTLYING ISLANDS',
|
453 |
+
'UY' => 'URUGUAY',
|
454 |
+
'UZ' => 'UZBEKISTAN',
|
455 |
+
'VU' => 'VANUATU',
|
456 |
+
'VE' => 'VENEZUELA, BOLIVARIAN REPUBLIC OF',
|
457 |
+
'VN' => 'VIET NAM',
|
458 |
+
'VG' => 'VIRGIN ISLANDS, BRITISH',
|
459 |
+
'VI' => 'VIRGIN ISLANDS, U.S.',
|
460 |
+
'WF' => 'WALLIS AND FUTUNA',
|
461 |
+
'EH' => 'WESTERN SAHARA',
|
462 |
+
'YE' => 'YEMEN',
|
463 |
+
'ZM' => 'ZAMBIA',
|
464 |
+
'ZW' => 'ZIMBABWE'
|
465 |
+
);
|
wp-cerber.php
ADDED
@@ -0,0 +1,3295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: WP Cerber Security
|
4 |
+
Plugin URI: http://wpcerber.com
|
5 |
+
Description: Protects site from brute force attacks, bots and hackers. Antispam protection with reCAPTCHA. Comprehensive control of user activity. Restrict login by IP access lists. Limit login attempts. Know more: <a href="http://wpcerber.com">wpcerber.com</a>.
|
6 |
+
Author: Gregory
|
7 |
+
Author URI: http://wpcerber.com
|
8 |
+
Version: 5.0
|
9 |
+
Text Domain: wp-cerber
|
10 |
+
Domain Path: /languages
|
11 |
+
Network: true
|
12 |
+
|
13 |
+
Copyright (C) 2015-17 CERBER TECH INC., Gregory Markov, http://wpcerber.com
|
14 |
+
Flag icons - http://www.famfamfam.com
|
15 |
+
|
16 |
+
Licenced under the GNU GPL.
|
17 |
+
|
18 |
+
This program is free software; you can redistribute it and/or modify
|
19 |
+
it under the terms of the GNU General Public License as published by
|
20 |
+
the Free Software Foundation; either version 3 of the License, or
|
21 |
+
(at your option) any later version.
|
22 |
+
|
23 |
+
This program is distributed in the hope that it will be useful,
|
24 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
25 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
26 |
+
GNU General Public License for more details.
|
27 |
+
|
28 |
+
You should have received a copy of the GNU General Public License
|
29 |
+
along with this program; if not, write to the Free Software
|
30 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
31 |
+
|
32 |
+
*/
|
33 |
+
/*
|
34 |
+
|
35 |
+
|
36 |
+
|
37 |
+
▄████▄ ▓█████ ██▀███ ▄▄▄▄ ▓█████ ██▀███
|
38 |
+
▒██▀ ▀█ ▓█ ▀ ▓██ ▒ ██▒ ▓█████▄ ▓█ ▀ ▓██ ▒ ██▒
|
39 |
+
▒▓█ ▄ ▒███ ▓██ ░▄█ ▒ ▒██▒ ▄██ ▒███ ▓██ ░▄█ ▒
|
40 |
+
▒▓▓▄ ▄██▒ ▒▓█ ▄ ▒██▀▀█▄ ▒██░█▀ ▒▓█ ▄ ▒██▀▀█▄
|
41 |
+
▒ ▓███▀ ░ ░▒████▒ ░██▓ ▒██▒ ░▓█ ▀█▓ ░▒████▒ ░██▓ ▒██▒
|
42 |
+
░ ░▒ ▒ ░ ░░ ▒░ ░ ░ ▒▓ ░▒▓░ ░▒▓███▀▒ ░░ ▒░ ░ ░ ▒▓ ░▒▓░
|
43 |
+
░ ▒ ░ ░ ░ ░▒ ░ ▒░ ▒░▒ ░ ░ ░ ░ ░▒ ░ ▒░
|
44 |
+
░ ░ ░░ ░ ░ ░ ░ ░░ ░
|
45 |
+
░ ░ ░ ░ ░ ░ ░ ░ ░
|
46 |
+
░ ░
|
47 |
+
|
48 |
+
|
49 |
+
|
50 |
+
|
51 |
+
*========================================================================*
|
52 |
+
| |
|
53 |
+
| ATTENTION! Do not change or edit this file! |
|
54 |
+
| |
|
55 |
+
*========================================================================*
|
56 |
+
|
57 |
+
*/
|
58 |
+
|
59 |
+
// If this file is called directly, abort executing.
|
60 |
+
if ( ! defined( 'WPINC' ) ) { exit; }
|
61 |
+
|
62 |
+
define( 'CERBER_VER', '5.0' );
|
63 |
+
define( 'CERBER_LOG_TABLE', 'cerber_log' );
|
64 |
+
define( 'CERBER_ACL_TABLE', 'cerber_acl' );
|
65 |
+
define( 'CERBER_BLOCKS_TABLE', 'cerber_blocks' );
|
66 |
+
define( 'CERBER_LAB_TABLE', 'cerber_lab' );
|
67 |
+
define( 'CERBER_LAB_IP_TABLE', 'cerber_lab_ip' );
|
68 |
+
define( 'CERBER_LAB_NET_TABLE', 'cerber_lab_net' );
|
69 |
+
|
70 |
+
define( 'WP_LOGIN_SCRIPT', 'wp-login.php' );
|
71 |
+
define( 'WP_REG_URI', 'wp-register.php' );
|
72 |
+
define( 'WP_XMLRPC_SCRIPT', 'xmlrpc.php' );
|
73 |
+
define( 'WP_TRACKBACK_SCRIPT', 'wp-trackback.php' );
|
74 |
+
define( 'WP_PING_SCRIPT', 'wp-trackback.php' );
|
75 |
+
define( 'WP_SIGNUP_SCRIPT', 'wp-signup.php' );
|
76 |
+
|
77 |
+
define( 'GOO_RECAPTCHA_URL', 'https://www.google.com/recaptcha/api/siteverify' );
|
78 |
+
|
79 |
+
define( 'CERBER_REQ_PHP', '5.3.0' );
|
80 |
+
define( 'CERBER_REQ_WP', '4.4' );
|
81 |
+
define( 'CERBER_FILE', __FILE__ );
|
82 |
+
define( 'CERBER_TECH', 'https://cerber.tech/' );
|
83 |
+
|
84 |
+
require_once( dirname( __FILE__ ) . '/common.php' );
|
85 |
+
require_once( dirname( __FILE__ ) . '/settings.php' );
|
86 |
+
require_once( dirname( __FILE__ ) . '/cerber-lab.php' );
|
87 |
+
require_once( dirname( __FILE__ ) . '/whois.php' );
|
88 |
+
require_once( dirname( __FILE__ ) . '/jetflow.php' );
|
89 |
+
require_once( dirname( __FILE__ ) . '/cerber-news.php' );
|
90 |
+
|
91 |
+
if ( defined( 'WP_ADMIN' ) || defined( 'WP_NETWORK_ADMIN' ) ) {
|
92 |
+
// Load dashboard stuff
|
93 |
+
require_once( dirname( __FILE__ ) . '/dashboard.php' );
|
94 |
+
}
|
95 |
+
|
96 |
+
cerber_upgrade_all();
|
97 |
+
|
98 |
+
class WP_Cerber {
|
99 |
+
private $remote_ip;
|
100 |
+
private $session_id;
|
101 |
+
private $status = null;
|
102 |
+
private $options;
|
103 |
+
private $locked = null; // IP has been locked out
|
104 |
+
|
105 |
+
private $recaptcha = null; // Can recaptcha be verified with a current request
|
106 |
+
private $recaptcha_verified = null; // Is recaptcha successfully verified with a current request
|
107 |
+
public $recaptcha_here = null; // Is recaptcha widget enabled on the currently displayed page
|
108 |
+
|
109 |
+
public $garbage = false; // Garbage has been deleted
|
110 |
+
|
111 |
+
final function __construct() {
|
112 |
+
|
113 |
+
//$this->session_id = wp_generate_password( 16, false, false );
|
114 |
+
$this->session_id = substr(str_shuffle('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'), 0, 24);
|
115 |
+
|
116 |
+
// Load settings with filling missing (not-set) array keys
|
117 |
+
$this->options = cerber_get_options();
|
118 |
+
$keys = array();
|
119 |
+
//$defaults = array();
|
120 |
+
foreach ( cerber_get_defaults() as $item ) {
|
121 |
+
$keys = array_merge( $keys, array_keys( $item ) );
|
122 |
+
//$defaults = array_merge( $defaults, $item );
|
123 |
+
}
|
124 |
+
foreach ( $keys as $key ) {
|
125 |
+
if ( ! isset( $this->options[ $key ] ) ) {
|
126 |
+
$this->options[ $key ] = null;
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
if ( defined( 'CERBER_IP_KEY' ) ) {
|
131 |
+
$this->remote_ip = filter_var( $_SERVER[ CERBER_IP_KEY ], FILTER_VALIDATE_IP );
|
132 |
+
}
|
133 |
+
elseif ( $this->options['proxy'] && isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
134 |
+
$list = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );
|
135 |
+
foreach ( $list as $maybe_ip ) {
|
136 |
+
$this->remote_ip = filter_var( trim( $maybe_ip ), FILTER_VALIDATE_IP );
|
137 |
+
if ( $this->remote_ip ) {
|
138 |
+
break;
|
139 |
+
}
|
140 |
+
}
|
141 |
+
if ( ! $this->remote_ip && isset( $_SERVER['HTTP_X_REAL_IP'] ) ) {
|
142 |
+
$this->remote_ip = filter_var( $_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP );
|
143 |
+
}
|
144 |
+
} else {
|
145 |
+
if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
|
146 |
+
$this->remote_ip = $_SERVER['REMOTE_ADDR'];
|
147 |
+
} elseif ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) {
|
148 |
+
$this->remote_ip = $_SERVER['HTTP_X_REAL_IP'];
|
149 |
+
} elseif ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) {
|
150 |
+
$this->remote_ip = $_SERVER['HTTP_CLIENT_IP'];
|
151 |
+
} elseif ( isset( $_SERVER['SERVER_ADDR'] ) ) {
|
152 |
+
$this->remote_ip = $_SERVER['SERVER_ADDR'];
|
153 |
+
}
|
154 |
+
$this->remote_ip = filter_var( $this->remote_ip, FILTER_VALIDATE_IP );
|
155 |
+
}
|
156 |
+
// No IP address was found? Roll back to localhost.
|
157 |
+
if ( ! $this->remote_ip ) {
|
158 |
+
$this->remote_ip = '127.0.0.1';
|
159 |
+
} // including WP-CLI, other way is: if defined('WP_CLI')
|
160 |
+
|
161 |
+
|
162 |
+
$this->reCaptchaInit();
|
163 |
+
|
164 |
+
$this->deleteGarbage();
|
165 |
+
|
166 |
+
// Condition to check reCAPTCHA
|
167 |
+
|
168 |
+
add_action( 'login_init', array( $this, 'reCaptchaNow' ) );
|
169 |
+
|
170 |
+
}
|
171 |
+
|
172 |
+
final public function getRemoteIp() {
|
173 |
+
return $this->remote_ip;
|
174 |
+
}
|
175 |
+
|
176 |
+
final public function getSessionID() {
|
177 |
+
return $this->session_id;
|
178 |
+
}
|
179 |
+
|
180 |
+
final public function getStatus() {
|
181 |
+
if (isset($this->status)) return $this->status;
|
182 |
+
|
183 |
+
$this->status = 0; // Default
|
184 |
+
|
185 |
+
if ( cerber_is_citadel() ) {
|
186 |
+
$this->status = 3;
|
187 |
+
}
|
188 |
+
else {
|
189 |
+
//if ( ! cerber_is_allowed( $this->remote_ip ) ) {
|
190 |
+
if ( cerber_block_check( $this->remote_ip ) ) {
|
191 |
+
$this->status = 2;
|
192 |
+
}
|
193 |
+
else {
|
194 |
+
$tag = cerber_acl_check( $this->remote_ip );
|
195 |
+
if ( $tag == 'W' ) {
|
196 |
+
//$this->status = 4;
|
197 |
+
}
|
198 |
+
elseif ( $tag == 'B' || lab_is_blocked($this->remote_ip, false)) {
|
199 |
+
$this->status = 1;
|
200 |
+
}
|
201 |
+
}
|
202 |
+
}
|
203 |
+
|
204 |
+
return $this->status;
|
205 |
+
}
|
206 |
+
|
207 |
+
/*
|
208 |
+
Return Error message in context
|
209 |
+
*/
|
210 |
+
final public function getErrorMsg() {
|
211 |
+
$status = $this->getStatus();
|
212 |
+
switch ( $status ) {
|
213 |
+
case 1:
|
214 |
+
case 3:
|
215 |
+
return apply_filters( 'cerber_msg_blocked', __( 'You are not allowed to log in. Ask your administrator for assistance.', 'wp-cerber' ) , $status);
|
216 |
+
case 2:
|
217 |
+
$block = cerber_get_block();
|
218 |
+
$min = 1 + ( $block->block_until - time() ) / 60;
|
219 |
+
|
220 |
+
return apply_filters( 'cerber_msg_reached',
|
221 |
+
sprintf( __( 'You have reached the login attempts limit. Please try again in %d minutes.', 'wp-cerber' ), $min ),
|
222 |
+
$min );
|
223 |
+
break;
|
224 |
+
default:
|
225 |
+
return '';
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
/*
|
230 |
+
Return Remain message in context
|
231 |
+
*/
|
232 |
+
final public function getRemainMsg() {
|
233 |
+
$acl = !$this->options['limitwhite'];
|
234 |
+
$remain = cerber_get_remain_count($this->remote_ip, $acl);
|
235 |
+
if ( $remain < $this->options['attempts'] ) {
|
236 |
+
if ( $remain == 0 ) {
|
237 |
+
$remain = 1; // with some settings or when lockout was manually removed, we need to have 1 attempt.
|
238 |
+
}
|
239 |
+
return apply_filters( 'cerber_msg_remain',
|
240 |
+
sprintf( _n( 'You have only one attempt remaining.', 'You have %d attempts remaining.', $remain, 'wp-cerber' ), $remain ),
|
241 |
+
$remain );
|
242 |
+
}
|
243 |
+
|
244 |
+
return false;
|
245 |
+
}
|
246 |
+
|
247 |
+
final public function getSettings( $name = null ) {
|
248 |
+
if ( ! empty( $name ) ) {
|
249 |
+
if ( isset( $this->options[ $name ] ) ) {
|
250 |
+
return $this->options[ $name ];
|
251 |
+
} else {
|
252 |
+
return false;
|
253 |
+
}
|
254 |
+
}
|
255 |
+
|
256 |
+
return $this->options;
|
257 |
+
}
|
258 |
+
|
259 |
+
final public function isProhibited( $username ) {
|
260 |
+
if ( empty( $this->options['prohibited'] ) ) {
|
261 |
+
return false;
|
262 |
+
}
|
263 |
+
|
264 |
+
return in_array( $username, (array) $this->options['prohibited'] );
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Adding reCAPTCHA widgets
|
269 |
+
*
|
270 |
+
*/
|
271 |
+
final public function reCaptchaInit(){
|
272 |
+
|
273 |
+
if ( $this->status == 4 || empty( $this->options['sitekey'] ) || empty( $this->options['secretkey'] )) return;
|
274 |
+
|
275 |
+
// Native WP forms
|
276 |
+
add_action( 'login_form', function () {
|
277 |
+
global $wp_cerber;
|
278 |
+
$wp_cerber->reCaptcha( 'widget', 'recaplogin' );
|
279 |
+
} );
|
280 |
+
add_filter( 'login_form_middle', function ( $value ) {
|
281 |
+
global $wp_cerber;
|
282 |
+
$value .= $wp_cerber->reCaptcha( 'widget', 'recaplogin', false );
|
283 |
+
return $value;
|
284 |
+
});
|
285 |
+
add_action( 'lostpassword_form', function () {
|
286 |
+
global $wp_cerber;
|
287 |
+
$wp_cerber->reCaptcha( 'widget', 'recaplost' );
|
288 |
+
} );
|
289 |
+
add_action( 'register_form', function () {
|
290 |
+
global $wp_cerber;
|
291 |
+
if ( !did_action( 'woocommerce_register_form_start' ) ) {
|
292 |
+
$wp_cerber->reCaptcha( 'widget', 'recapreg' );
|
293 |
+
}
|
294 |
+
} );
|
295 |
+
|
296 |
+
// Commenting
|
297 |
+
/*
|
298 |
+
add_filter( 'comment_form_submit_field', function ( $value ) {
|
299 |
+
global $wp_cerber, $post;
|
300 |
+
$au = $wp_cerber->getSettings('recapcomauth');
|
301 |
+
if (!$au || ($au && !is_user_logged_in())) {
|
302 |
+
if (!empty($_COOKIE["cerber-recaptcha-id"]) && $_COOKIE["cerber-recaptcha-id"] == $post->ID){
|
303 |
+
echo 'ZZ<div id="cerber-recaptcha-msg">'. __( 'ERROR:', 'wp-cerber' ) .' '. $wp_cerber->reCaptchaMsg('comment').'</div>';
|
304 |
+
echo '<script type="text/javascript">document.cookie = "the-recaptcha-id=0";</script>';
|
305 |
+
}
|
306 |
+
$wp_cerber->reCaptcha( 'widget', 'recapcom' );
|
307 |
+
}
|
308 |
+
return $value;
|
309 |
+
} );
|
310 |
+
*/
|
311 |
+
// $approved = apply_filters( 'pre_comment_approved', $approved, $commentdata );
|
312 |
+
/* @since 4.9
|
313 |
+
add_action( 'pre_comment_on_post', function ( $comment_post_ID ) {
|
314 |
+
global $wp_cerber;
|
315 |
+
|
316 |
+
if ($wp_cerber->getSettings('recapcomauth') && is_user_logged_in()) return;
|
317 |
+
|
318 |
+
if ( ! $wp_cerber->reCaptchaValidate('comment', true) ) {
|
319 |
+
cerber_log(16);
|
320 |
+
setcookie('cerber-recaptcha-id', $comment_post_ID, time() + 60, '/');
|
321 |
+
$comments = get_comments( array( 'number' => '1', 'post_id' => $comment_post_ID ) );
|
322 |
+
if ($comments) {
|
323 |
+
$loc = get_comment_link($comments[0]->comment_ID);
|
324 |
+
}
|
325 |
+
else {
|
326 |
+
$loc = get_permalink($comment_post_ID).'#cerber-recaptcha-msg';
|
327 |
+
}
|
328 |
+
wp_safe_redirect( $loc );
|
329 |
+
exit;
|
330 |
+
}
|
331 |
+
});
|
332 |
+
*/
|
333 |
+
|
334 |
+
// Support for WooCommerce forms: @since 3.8
|
335 |
+
add_action( 'woocommerce_login_form', function () {
|
336 |
+
global $wp_cerber;
|
337 |
+
$wp_cerber->reCaptcha( 'widget', 'recapwoologin' );
|
338 |
+
} );
|
339 |
+
add_action( 'woocommerce_lostpassword_form', function () {
|
340 |
+
global $wp_cerber;
|
341 |
+
$wp_cerber->reCaptcha( 'widget', 'recapwoolost' );
|
342 |
+
} );
|
343 |
+
add_action( 'woocommerce_register_form', function () {
|
344 |
+
global $wp_cerber;
|
345 |
+
if ( ! did_action( 'woocommerce_register_form_start' ) ) {
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
$wp_cerber->reCaptcha( 'widget', 'recapwooreg' );
|
349 |
+
} );
|
350 |
+
add_filter( 'woocommerce_process_login_errors', function ( $validation_error ) {
|
351 |
+
global $wp_cerber;
|
352 |
+
//$wp_cerber->reCaptchaNow();
|
353 |
+
if ( ! $wp_cerber->reCaptchaValidate('woologin', true) ) {
|
354 |
+
|
355 |
+
return new WP_Error( 'incorrect_recaptcha', $wp_cerber->reCaptchaMsg('woocommerce-login'));
|
356 |
+
}
|
357 |
+
return $validation_error;
|
358 |
+
});
|
359 |
+
add_filter( 'allow_password_reset', function ( $var ) { // Note: 'allow_password_reset' also is fired in WP itself
|
360 |
+
global $wp_cerber;
|
361 |
+
if ( isset( $_POST['wc_reset_password'] ) && did_action( 'woocommerce_init' )) {
|
362 |
+
//$wp_cerber->reCaptchaNow();
|
363 |
+
if ( ! $wp_cerber->reCaptchaValidate( 'woolost' , true) ) {
|
364 |
+
|
365 |
+
return new WP_Error( 'incorrect_recaptcha', $wp_cerber->reCaptchaMsg('woocommerce-lost'));
|
366 |
+
}
|
367 |
+
}
|
368 |
+
return $var;
|
369 |
+
});
|
370 |
+
add_filter( 'woocommerce_process_registration_errors', function ( $validation_error ) {
|
371 |
+
global $wp_cerber;
|
372 |
+
//$wp_cerber->reCaptchaNow();
|
373 |
+
if ( ! $wp_cerber->reCaptchaValidate('wooreg' , true) ) {
|
374 |
+
|
375 |
+
return new WP_Error( 'incorrect_recaptcha', $wp_cerber->reCaptchaMsg('woocommerce-register'));
|
376 |
+
}
|
377 |
+
return $validation_error;
|
378 |
+
});
|
379 |
+
|
380 |
+
}
|
381 |
+
|
382 |
+
/**
|
383 |
+
* Generates reCAPTCHA HTML
|
384 |
+
*
|
385 |
+
* @param string $part 'style' or 'widget'
|
386 |
+
* @param null $option what plugin setting must be set to show the reCAPTCHA
|
387 |
+
* @param bool $echo if false, return the code, otherwise show it
|
388 |
+
*
|
389 |
+
* @return null|string
|
390 |
+
*/
|
391 |
+
final public function reCaptcha( $part = '', $option = null, $echo = true ) {
|
392 |
+
if ( $this->status == 4 || empty( $this->options['sitekey'] ) || empty( $this->options['secretkey'] )
|
393 |
+
|| ( $option && empty( $this->options[ $option ] ) )
|
394 |
+
) {
|
395 |
+
return null;
|
396 |
+
}
|
397 |
+
|
398 |
+
$sitekey = $this->options['sitekey'];
|
399 |
+
$ret = '';
|
400 |
+
|
401 |
+
switch ( $part ) {
|
402 |
+
case 'style': // for default login WP form only - fit it in width nicely.
|
403 |
+
?>
|
404 |
+
<style type="text/css" media="all">
|
405 |
+
#rc-imageselect, .g-recaptcha {
|
406 |
+
transform: scale(0.9);
|
407 |
+
-webkit-transform: scale(0.9);
|
408 |
+
transform-origin: 0 0;
|
409 |
+
-webkit-transform-origin: 0 0;
|
410 |
+
}
|
411 |
+
|
412 |
+
.g-recaptcha {
|
413 |
+
margin: 16px 0 20px 0;
|
414 |
+
}
|
415 |
+
</style>
|
416 |
+
<?php
|
417 |
+
break;
|
418 |
+
case 'widget':
|
419 |
+
if ( ! empty( $this->options[ $option ] ) ) {
|
420 |
+
$this->recaptcha_here = true;
|
421 |
+
|
422 |
+
//if ($this->options['invirecap']) $ret = '<div data-size="invisible" class="g-recaptcha" data-sitekey="' . $sitekey . '" data-callback="now_submit_the_form" id="cerber-recaptcha" data-badge="bottomright"></div>';
|
423 |
+
if ($this->options['invirecap']) {
|
424 |
+
$ret = '<span class="cerber-form-marker"></span><div data-size="invisible" class="g-recaptcha" data-sitekey="' . $sitekey . '" data-callback="now_submit_the_form" id="cerber-recaptcha" data-badge="bottomright"></div>';
|
425 |
+
}
|
426 |
+
else $ret = '<span class="cerber-form-marker"></span><div class="g-recaptcha" data-sitekey="' . $sitekey . '" data-callback="form_button_enabler" id="cerber-recaptcha"></div>';
|
427 |
+
|
428 |
+
//$ret = '<span class="cerber-form-marker g-recaptcha"></span>';
|
429 |
+
|
430 |
+
}
|
431 |
+
break;
|
432 |
+
}
|
433 |
+
if ( $echo ) {
|
434 |
+
echo $ret;
|
435 |
+
$ret = null;
|
436 |
+
}
|
437 |
+
|
438 |
+
return $ret;
|
439 |
+
/*
|
440 |
+
<script type="text/javascript">
|
441 |
+
var onloadCallback = function() {
|
442 |
+
//document.getElementById("wp-submit").disabled = true;
|
443 |
+
grecaptcha.render("c-recaptcha", {"sitekey" : "<?php echo $sitekey; ?>" });
|
444 |
+
//document.getElementById("wp-submit").disabled = false;
|
445 |
+
};
|
446 |
+
</script>
|
447 |
+
<script src = "https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=<?php echo $lang; ?>" async defer></script>
|
448 |
+
*/
|
449 |
+
}
|
450 |
+
|
451 |
+
/**
|
452 |
+
* Validate reCAPTCHA by calling Google service
|
453 |
+
*
|
454 |
+
* @param string $form Form ID (slug)
|
455 |
+
* @param boolean $force Force validate without pre-checks
|
456 |
+
*
|
457 |
+
* @return bool true on success false on failure
|
458 |
+
*/
|
459 |
+
final public function reCaptchaValidate($form = null, $force = false) {
|
460 |
+
if (!$force) {
|
461 |
+
if ( ! $this->recaptcha || $this->status == 4 ) {
|
462 |
+
return true;
|
463 |
+
}
|
464 |
+
}
|
465 |
+
|
466 |
+
if ($this->recaptcha_verified != null) return $this->recaptcha_verified;
|
467 |
+
|
468 |
+
if ( $form == 'comment' && $this->options['recapcomauth'] && is_user_logged_in()) return true;
|
469 |
+
|
470 |
+
if ( ! $form ) {
|
471 |
+
$form = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'login';
|
472 |
+
}
|
473 |
+
|
474 |
+
$forms = array( // known pairs: form => specific plugin setting
|
475 |
+
'lostpassword' => 'recaplost',
|
476 |
+
'register' => 'recapreg',
|
477 |
+
'login' => 'recaplogin',
|
478 |
+
'comment' => 'recapcom',
|
479 |
+
'woologin' => 'recapwoologin',
|
480 |
+
'woolost' => 'recapwoolost',
|
481 |
+
'wooreg' => 'recapwooreg',
|
482 |
+
);
|
483 |
+
|
484 |
+
if ( isset( $forms[ $form ] ) ) {
|
485 |
+
if ( empty( $this->options[ $forms[ $form ] ] ) ) {
|
486 |
+
return true; // no validation is required
|
487 |
+
}
|
488 |
+
}
|
489 |
+
else {
|
490 |
+
return true; // we don't know this form
|
491 |
+
}
|
492 |
+
|
493 |
+
if ( empty( $_POST['g-recaptcha-response'] ) ) {
|
494 |
+
$this->reCaptchaFailed($form);
|
495 |
+
return false;
|
496 |
+
}
|
497 |
+
|
498 |
+
$result = $this->reCaptchaRequest($_POST['g-recaptcha-response']);
|
499 |
+
if ( ! $result ) {
|
500 |
+
cerber_log( 42 );
|
501 |
+
return false;
|
502 |
+
}
|
503 |
+
|
504 |
+
$result = json_decode( $result );
|
505 |
+
$result = obj_to_arr_deep( $result );
|
506 |
+
|
507 |
+
if ( ! empty( $result['success'] ) ) {
|
508 |
+
$this->recaptcha_verified = true;
|
509 |
+
return true;
|
510 |
+
}
|
511 |
+
$this->recaptcha_verified = false;
|
512 |
+
|
513 |
+
if ( ! empty( $result['error-codes'] ) ) {
|
514 |
+
if ( in_array( 'invalid-input-secret', (array) $result['error-codes'] ) ) {
|
515 |
+
cerber_log( 41 );
|
516 |
+
}
|
517 |
+
}
|
518 |
+
|
519 |
+
$this->reCaptchaFailed($form);
|
520 |
+
|
521 |
+
return false;
|
522 |
+
}
|
523 |
+
|
524 |
+
final function reCaptchaFailed($context = '') {
|
525 |
+
cerber_log( 40 );
|
526 |
+
if ($this->options['recaptcha-period'] && $this->options['recaptcha-number'] && $this->options['recaptcha-within']) {
|
527 |
+
$remain = cerber_get_remain_count($this->remote_ip , true, 40, $this->options['recaptcha-number'], $this->options['recaptcha-within']);
|
528 |
+
if ($remain < 1) cerber_block_add( $this->remote_ip, 5 );
|
529 |
+
}
|
530 |
+
}
|
531 |
+
|
532 |
+
/**
|
533 |
+
* A form with possible reCAPTCHA has been submitted.
|
534 |
+
* Allow to process reCAPTCHA by setting a global flag.
|
535 |
+
* Must be called before reCaptchaValidate();
|
536 |
+
*
|
537 |
+
*/
|
538 |
+
final public function reCaptchaNow() {
|
539 |
+
if ( $_SERVER['REQUEST_METHOD'] == 'POST' && $this->options['sitekey'] && $this->options['secretkey'] ) {
|
540 |
+
$this->recaptcha = true;
|
541 |
+
}
|
542 |
+
}
|
543 |
+
|
544 |
+
/**
|
545 |
+
* Make a request to the Google reCaptcha web service
|
546 |
+
*
|
547 |
+
* @param string $response Google specific field from the submitted form (widget)
|
548 |
+
*
|
549 |
+
* @return bool|string Response of the Google service or false on failure
|
550 |
+
*/
|
551 |
+
final public function reCaptchaRequest($response = ''){
|
552 |
+
|
553 |
+
if (!$response) {
|
554 |
+
if (!empty($_POST['g-recaptcha-response'])) $response = $_POST['g-recaptcha-response'];
|
555 |
+
else return false;
|
556 |
+
}
|
557 |
+
|
558 |
+
$curl = @curl_init(); // @since 4.32
|
559 |
+
if (!$curl) {
|
560 |
+
cerber_admin_notice(__( 'ERROR:', 'wp-cerber' ) .' Unable to initialize cURL');
|
561 |
+
return false;
|
562 |
+
}
|
563 |
+
|
564 |
+
$opt = curl_setopt_array($curl, array(
|
565 |
+
CURLOPT_URL => GOO_RECAPTCHA_URL,
|
566 |
+
CURLOPT_POST => true,
|
567 |
+
CURLOPT_POSTFIELDS => array( 'secret' => $this->options['secretkey'], 'response' => $response ),
|
568 |
+
CURLOPT_RETURNTRANSFER => true,
|
569 |
+
));
|
570 |
+
|
571 |
+
if (!$opt) {
|
572 |
+
cerber_admin_notice(__( 'ERROR:', 'wp-cerber' ) .' '. curl_error($curl));
|
573 |
+
curl_close($curl);
|
574 |
+
return false;
|
575 |
+
}
|
576 |
+
|
577 |
+
$result = curl_exec($curl);
|
578 |
+
if (!$result) {
|
579 |
+
cerber_admin_notice(__( 'ERROR:', 'wp-cerber' ) .' '. curl_error($curl));
|
580 |
+
$result = false;
|
581 |
+
}
|
582 |
+
curl_close($curl);
|
583 |
+
|
584 |
+
return $result;
|
585 |
+
|
586 |
+
}
|
587 |
+
|
588 |
+
final public function reCaptchaMsg($context = null){
|
589 |
+
return apply_filters( 'cerber_msg_recaptcha', __( 'Human verification failed. Please click the square box in the reCAPTCHA block below.', 'wp-cerber' ), $context);
|
590 |
+
}
|
591 |
+
|
592 |
+
final public function setLocked() {
|
593 |
+
if ( ! isset( $this->locked ) ) {
|
594 |
+
$this->locked = 1;
|
595 |
+
}
|
596 |
+
}
|
597 |
+
|
598 |
+
final public function isLocked() {
|
599 |
+
if ( ! empty( $this->locked ) ) {
|
600 |
+
return 1;
|
601 |
+
}
|
602 |
+
return 0;
|
603 |
+
}
|
604 |
+
|
605 |
+
final public function deleteGarbage() {
|
606 |
+
global $wpdb;
|
607 |
+
if ( $this->garbage ) {
|
608 |
+
return;
|
609 |
+
}
|
610 |
+
$wpdb->query( 'DELETE FROM ' . CERBER_BLOCKS_TABLE . ' WHERE block_until < ' . time() );
|
611 |
+
$this->garbage = true;
|
612 |
+
}
|
613 |
+
}
|
614 |
+
|
615 |
+
global $wp_cerber;
|
616 |
+
$wp_cerber = new WP_Cerber();
|
617 |
+
|
618 |
+
|
619 |
+
/*
|
620 |
+
*
|
621 |
+
* Initialize Cerber
|
622 |
+
*
|
623 |
+
*/
|
624 |
+
add_action( 'plugins_loaded', 'cerber_init', 1000 );
|
625 |
+
function cerber_init() {
|
626 |
+
global $wp_cerber;
|
627 |
+
|
628 |
+
load_plugin_textdomain( 'wp-cerber', false, basename( dirname( __FILE__ ) ) . '/languages' );
|
629 |
+
|
630 |
+
if ( ! is_object( $wp_cerber ) || get_class($wp_cerber) != 'WP_Cerber') {
|
631 |
+
$wp_cerber = new WP_Cerber();
|
632 |
+
}
|
633 |
+
|
634 |
+
if ( !cerber_check_groove() && !cerber_is_allowed() ) {
|
635 |
+
wp_clear_auth_cookie();
|
636 |
+
}
|
637 |
+
|
638 |
+
if ( ! wp_next_scheduled( 'cerber_hourly' ) ) {
|
639 |
+
wp_schedule_event( time(), 'hourly', 'cerber_hourly' );
|
640 |
+
}
|
641 |
+
if ( ! wp_next_scheduled( 'cerber_daily' ) ) {
|
642 |
+
wp_schedule_event( time(), 'daily', 'cerber_daily' );
|
643 |
+
}
|
644 |
+
}
|
645 |
+
|
646 |
+
/*
|
647 |
+
Display login form if Custom login URL has been requested
|
648 |
+
|
649 |
+
*/
|
650 |
+
add_action( 'init', 'cerber_wp_login_page', 20 );
|
651 |
+
function cerber_wp_login_page() {
|
652 |
+
global $wp_cerber;
|
653 |
+
if ( $path = $wp_cerber->getSettings( 'loginpath' ) ) {
|
654 |
+
$request = $_SERVER['REQUEST_URI'];
|
655 |
+
if ( $pos = strpos( $request, '?' ) ) {
|
656 |
+
//$request = explode( '?', $request );
|
657 |
+
//$request = array_shift( $request );
|
658 |
+
$request = substr( $request, 0, $pos - 1 ); // @since 4.8
|
659 |
+
}
|
660 |
+
$request = explode( '/', rtrim( $request, '/' ) );
|
661 |
+
//$request = array_pop( $request );
|
662 |
+
$request = end($request); // @since 4.8
|
663 |
+
if ( $path == $request && !cerber_is_rest_url() ) {
|
664 |
+
require( ABSPATH . WP_LOGIN_SCRIPT ); // load default wp-login form
|
665 |
+
exit;
|
666 |
+
}
|
667 |
+
}
|
668 |
+
}
|
669 |
+
|
670 |
+
/*
|
671 |
+
Create message to show it above login form for any simply GET
|
672 |
+
*/
|
673 |
+
add_action( 'login_head', 'cerber_login_head' );
|
674 |
+
function cerber_login_head() {
|
675 |
+
global $error, $wp_cerber;
|
676 |
+
|
677 |
+
if ( !$allowed = cerber_is_allowed() ) :
|
678 |
+
?>
|
679 |
+
<style type="text/css" media="all">
|
680 |
+
#logidnform {
|
681 |
+
display: none;
|
682 |
+
}
|
683 |
+
</style>
|
684 |
+
<?php
|
685 |
+
endif;
|
686 |
+
|
687 |
+
$wp_cerber->reCaptcha( 'style' );
|
688 |
+
|
689 |
+
if ( $_SERVER['REQUEST_METHOD'] != 'GET' ) {
|
690 |
+
return;
|
691 |
+
}
|
692 |
+
if ( ! cerber_can_msg() ) {
|
693 |
+
return;
|
694 |
+
}
|
695 |
+
if ( ! $allowed ) {
|
696 |
+
$error = $wp_cerber->getErrorMsg();
|
697 |
+
}
|
698 |
+
elseif ( $msg = $wp_cerber->getRemainMsg() ) {
|
699 |
+
$error = $msg;
|
700 |
+
}
|
701 |
+
}
|
702 |
+
|
703 |
+
/**
|
704 |
+
* Control the process of authentication
|
705 |
+
*
|
706 |
+
* @since 2.9
|
707 |
+
*
|
708 |
+
*/
|
709 |
+
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20 );
|
710 |
+
add_filter( 'authenticate', 'cerber_auth_control', 20, 3 );
|
711 |
+
function cerber_auth_control( $null, $username, $password ) {
|
712 |
+
global $wp_cerber;
|
713 |
+
|
714 |
+
if ( ! $wp_cerber->reCaptchaValidate() ) {
|
715 |
+
|
716 |
+
return new WP_Error( 'incorrect_recaptcha',
|
717 |
+
'<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
|
718 |
+
$wp_cerber->reCaptchaMsg('login'));
|
719 |
+
}
|
720 |
+
|
721 |
+
// Check for prohibited username
|
722 |
+
if ( $wp_cerber->isProhibited( $username ) ) {
|
723 |
+
cerber_log( 52, $username );
|
724 |
+
cerber_block_add( null, 4, $username );
|
725 |
+
|
726 |
+
// Create with message which is identical default WP
|
727 |
+
return new WP_Error( 'incorrect_password', sprintf(
|
728 |
+
__( '<strong>ERROR</strong>: The password you entered for the username %s is incorrect.' ),
|
729 |
+
'<strong>' . $username . '</strong>'
|
730 |
+
) );
|
731 |
+
}
|
732 |
+
/*
|
733 |
+
if ( lab_is_blocked($wp_cerber->getRemoteIp()) ) {
|
734 |
+
|
735 |
+
// Create with message which is identical default WP
|
736 |
+
return new WP_Error( 'incorrect_password', sprintf(
|
737 |
+
__( '<strong>ERROR</strong>: The password you entered for the username %s is incorrect.' ),
|
738 |
+
'<strong>' . $username . '</strong>'
|
739 |
+
) );
|
740 |
+
}*/
|
741 |
+
|
742 |
+
$user = wp_authenticate_username_password( $null, $username, $password );
|
743 |
+
|
744 |
+
// @since 4.18 it is replacement for 'wp_login_failed' action hook
|
745 |
+
// see WP function wp_authenticate()
|
746 |
+
$ignore_codes = array( 'empty_username', 'empty_password' );
|
747 |
+
if ( is_wp_error( $user ) && ! in_array( $user->get_error_code(), $ignore_codes ) ) {
|
748 |
+
cerber_login_failed( $username );
|
749 |
+
}
|
750 |
+
|
751 |
+
return $user;
|
752 |
+
}
|
753 |
+
|
754 |
+
/*
|
755 |
+
Block authentication for an existing user if IP is not allowed.
|
756 |
+
Invoked in the 'wp_authenticate_username_password()'
|
757 |
+
*/
|
758 |
+
add_filter( 'wp_authenticate_user', 'cerber_stop_authentication', 9999, 2 ); // fires after user found, with 'authenticate' filter
|
759 |
+
function cerber_stop_authentication( $user, $password ) {
|
760 |
+
global $wp_cerber;
|
761 |
+
|
762 |
+
if ( !cerber_is_allowed() || lab_is_blocked($wp_cerber->getRemoteIp())) {
|
763 |
+
status_header( 403 );
|
764 |
+
$error = new WP_Error();
|
765 |
+
$error->add( 'cerber_wp_error', $wp_cerber->getErrorMsg() );
|
766 |
+
|
767 |
+
return $error;
|
768 |
+
}
|
769 |
+
|
770 |
+
return $user;
|
771 |
+
}
|
772 |
+
|
773 |
+
// Block prohibited usernames
|
774 |
+
// add_filter('illegal_user_logins',function(){ return cerber_get_options('prohibited'); });
|
775 |
+
|
776 |
+
|
777 |
+
/*
|
778 |
+
* Handler for failed login attempts
|
779 |
+
*
|
780 |
+
*/
|
781 |
+
//add_action( 'wp_login_failed', 'cerber_login_failed' ); // @since 4.18
|
782 |
+
function cerber_login_failed( $user_login ) {
|
783 |
+
global $wpdb, $wp_cerber;
|
784 |
+
static $is_processed = false;
|
785 |
+
|
786 |
+
if ( $is_processed ) return;
|
787 |
+
$is_processed = true;
|
788 |
+
|
789 |
+
$ip = $wp_cerber->getRemoteIp();
|
790 |
+
$acl = cerber_acl_check( $ip );
|
791 |
+
if ( ! cerber_get_user( $user_login ) ) {
|
792 |
+
$no_user = true;
|
793 |
+
}
|
794 |
+
else {
|
795 |
+
$no_user = false;
|
796 |
+
}
|
797 |
+
|
798 |
+
//cerber_failed_work($ip, $acl, $no_user, $user_login);
|
799 |
+
|
800 |
+
//if ( ! $wp_cerber->isProcessed() ) {
|
801 |
+
//if ( ! cerber_get_user( $user_login ) ) {
|
802 |
+
// $no_user = true;
|
803 |
+
//}
|
804 |
+
|
805 |
+
$ac = 7;
|
806 |
+
|
807 |
+
if ( $no_user ) {
|
808 |
+
$ac = 51;
|
809 |
+
}
|
810 |
+
elseif ( ! cerber_is_allowed( $ip ) ) {
|
811 |
+
$ac = 53;
|
812 |
+
}
|
813 |
+
/*
|
814 |
+
elseif ( $acl == 'B' ) {
|
815 |
+
$ac = 14;
|
816 |
+
}
|
817 |
+
elseif ( lab_is_blocked($ip, false) ) {
|
818 |
+
$ac = 53;
|
819 |
+
}
|
820 |
+
else {
|
821 |
+
$ac = 53;
|
822 |
+
}*/
|
823 |
+
|
824 |
+
cerber_log( $ac, $user_login );
|
825 |
+
|
826 |
+
//}
|
827 |
+
|
828 |
+
|
829 |
+
// White? Stop further actions.
|
830 |
+
if ( $acl == 'W' && !$wp_cerber->getSettings( 'limitwhite' )) {
|
831 |
+
return;
|
832 |
+
}
|
833 |
+
|
834 |
+
if ( $wp_cerber->getSettings( 'usefile' ) ) {
|
835 |
+
cerber_file_log( $user_login, $ip );
|
836 |
+
}
|
837 |
+
|
838 |
+
if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) { // Needs additional researching and, maybe, refactoring
|
839 |
+
status_header( 403 );
|
840 |
+
}
|
841 |
+
|
842 |
+
// Blacklisted? No more actions are needed.
|
843 |
+
if ( $acl == 'B' ) {
|
844 |
+
return;
|
845 |
+
}
|
846 |
+
|
847 |
+
// Must the Citadel mode be activated?
|
848 |
+
if ( $wp_cerber->getSettings( 'ciperiod' ) && ! cerber_is_citadel() ) {
|
849 |
+
$range = time() - $wp_cerber->getSettings( 'ciperiod' ) * 60;
|
850 |
+
$lockouts = $wpdb->get_var( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (7,51,52) AND stamp > ' . $range );
|
851 |
+
if ( $lockouts >= $wp_cerber->getSettings( 'cilimit' ) ) {
|
852 |
+
cerber_enable_citadel();
|
853 |
+
}
|
854 |
+
}
|
855 |
+
|
856 |
+
if ( $no_user && $wp_cerber->getSettings( 'nonusers' ) ) {
|
857 |
+
cerber_block_add( $ip, 3, $user_login, null, false );
|
858 |
+
}
|
859 |
+
elseif ( cerber_get_remain_count($ip, false) < 1 ) { //Limit on the number of login attempts is reached
|
860 |
+
cerber_block_add( $ip, 1, '', null, false);
|
861 |
+
}
|
862 |
+
|
863 |
+
}
|
864 |
+
|
865 |
+
/**
|
866 |
+
* Do the work with failed/blocked attempt
|
867 |
+
*
|
868 |
+
* @param $ip
|
869 |
+
* @param $acl
|
870 |
+
* @param $user_login
|
871 |
+
*/
|
872 |
+
function cerber_failed_work($ip, $acl, $no_user, $user_login){
|
873 |
+
global $wpdb, $wp_cerber;
|
874 |
+
|
875 |
+
// White? Stop further actions.
|
876 |
+
if ( $acl == 'W' && !$wp_cerber->getSettings( 'limitwhite' )) {
|
877 |
+
return;
|
878 |
+
}
|
879 |
+
|
880 |
+
if ( $wp_cerber->getSettings( 'usefile' ) ) {
|
881 |
+
cerber_file_log( $user_login, $ip );
|
882 |
+
}
|
883 |
+
|
884 |
+
if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) { // Needs additional researching and, maybe, refactoring
|
885 |
+
status_header( 403 );
|
886 |
+
}
|
887 |
+
|
888 |
+
// Blacklisted? No more actions are needed.
|
889 |
+
if ( $acl == 'B' ) {
|
890 |
+
return;
|
891 |
+
}
|
892 |
+
|
893 |
+
// Must the Citadel mode be activated?
|
894 |
+
if ( $wp_cerber->getSettings( 'ciperiod' ) && ! cerber_is_citadel() ) {
|
895 |
+
$range = time() - $wp_cerber->getSettings( 'ciperiod' ) * 60;
|
896 |
+
$lockouts = $wpdb->get_var( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (7,51,52) AND stamp > ' . $range );
|
897 |
+
if ( $lockouts >= $wp_cerber->getSettings( 'cilimit' ) ) {
|
898 |
+
cerber_enable_citadel();
|
899 |
+
}
|
900 |
+
}
|
901 |
+
|
902 |
+
if ( $no_user && $wp_cerber->getSettings( 'nonusers' ) ) {
|
903 |
+
cerber_block_add( $ip, 3, $user_login, null, false );
|
904 |
+
}
|
905 |
+
elseif ( cerber_get_remain_count($ip, false) <= 1 ) { //Limit on the number of login attempts is reached
|
906 |
+
cerber_block_add( $ip, 1, '', null, false);
|
907 |
+
}
|
908 |
+
}
|
909 |
+
|
910 |
+
// Registration -----------------------------------------------------------------------
|
911 |
+
|
912 |
+
add_filter( 'registration_errors', 'cerber_registration_request', 10, 3 );
|
913 |
+
function cerber_registration_request( $errors, $sanitized_user_login, $user_email ) {
|
914 |
+
global $wp_cerber;
|
915 |
+
|
916 |
+
$code = null;
|
917 |
+
$msg = null;
|
918 |
+
|
919 |
+
if ( cerber_is_bot('botsreg') ) {
|
920 |
+
cerber_log(54);
|
921 |
+
$code = 'bot_detected';
|
922 |
+
$msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
|
923 |
+
apply_filters( 'cerber_msg_denied', __( 'You are not allowed to register.', 'wp-cerber' ), 'register' );
|
924 |
+
}
|
925 |
+
elseif ( ! $wp_cerber->reCaptchaValidate() ) {
|
926 |
+
$code = 'incorrect_recaptcha';
|
927 |
+
$msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
|
928 |
+
$wp_cerber->reCaptchaMsg('register');
|
929 |
+
}
|
930 |
+
elseif ( $wp_cerber->isProhibited( $sanitized_user_login ) ) {
|
931 |
+
$code = 'prohibited_login';
|
932 |
+
$msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
|
933 |
+
apply_filters( 'cerber_msg_prohibited', __( 'Username is not allowed. Please choose another one.', 'wp-cerber' ), 'register' );
|
934 |
+
}
|
935 |
+
elseif ( !cerber_is_allowed() || lab_is_blocked($wp_cerber->getRemoteIp()) ) {
|
936 |
+
cerber_log(54);
|
937 |
+
$code = 'ip_denied';
|
938 |
+
$msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
|
939 |
+
apply_filters( 'cerber_msg_denied', __( 'You are not allowed to register.', 'wp-cerber' ), 'register' );
|
940 |
+
}
|
941 |
+
|
942 |
+
if ($code){
|
943 |
+
return new WP_Error($code, $msg);
|
944 |
+
}
|
945 |
+
|
946 |
+
return $errors;
|
947 |
+
}
|
948 |
+
|
949 |
+
add_filter( 'option_users_can_register', function ( $value ) {
|
950 |
+
if ( ! cerber_is_allowed() ) {
|
951 |
+
return false;
|
952 |
+
}
|
953 |
+
|
954 |
+
return $value;
|
955 |
+
}, 9999 );
|
956 |
+
|
957 |
+
|
958 |
+
// Lost password form --------------------------------------------------------------------
|
959 |
+
|
960 |
+
/**
|
961 |
+
* Validate reCAPTCHA for the WordPress lost password form
|
962 |
+
*/
|
963 |
+
add_action( 'login_form_' . 'lostpassword', 'cerber_lost_captcha' );
|
964 |
+
function cerber_lost_captcha() {
|
965 |
+
global $wp_cerber, $cerber_lost;
|
966 |
+
if ( ! $wp_cerber->reCaptchaValidate() ) {
|
967 |
+
$_POST['user_login'] = null; // workaround due to lack of any way to control lost password form
|
968 |
+
$cerber_lost = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' . $wp_cerber->reCaptchaMsg('lostpassword');
|
969 |
+
}
|
970 |
+
}
|
971 |
+
/**
|
972 |
+
* Display message on the WordPress lost password form screen
|
973 |
+
*/
|
974 |
+
add_action( 'lostpassword_form', 'cerber_lost_show_msg' );
|
975 |
+
function cerber_lost_show_msg() {
|
976 |
+
global $cerber_lost;
|
977 |
+
if ( ! $cerber_lost ) {
|
978 |
+
return;
|
979 |
+
}
|
980 |
+
?>
|
981 |
+
<script type="text/javascript">
|
982 |
+
//document.getElementById('login_error').style.visibility = "hidden";
|
983 |
+
document.getElementById('login_error').innerHTML = "<?php echo $cerber_lost; ?>";
|
984 |
+
</script>
|
985 |
+
<?php
|
986 |
+
}
|
987 |
+
|
988 |
+
|
989 |
+
// Comments section ----------------------------------------------------------------------
|
990 |
+
|
991 |
+
|
992 |
+
if (1 == cerber_get_options('spamcomm')) {
|
993 |
+
// $approved = apply_filters( 'pre_comment_approved', $approved, $commentdata );
|
994 |
+
add_filter( 'pre_comment_approved', function ( $approved, $commentdata ) {
|
995 |
+
if ( ! cerber_is_comment_allowed() ) {
|
996 |
+
$approved = 'spam';
|
997 |
+
}
|
998 |
+
return $approved;
|
999 |
+
}, 10, 2 );
|
1000 |
+
}
|
1001 |
+
else {
|
1002 |
+
add_action( 'pre_comment_on_post', function ( $comment_post_ID ) {
|
1003 |
+
global $wp_cerber;
|
1004 |
+
|
1005 |
+
if ( ! cerber_is_comment_allowed() ) {
|
1006 |
+
setcookie( 'cerber-post-id', $comment_post_ID, time() + 60, '/' );
|
1007 |
+
$comments = get_comments( array( 'number' => '1', 'post_id' => $comment_post_ID ) );
|
1008 |
+
if ( $comments ) {
|
1009 |
+
$loc = get_comment_link( $comments[0]->comment_ID );
|
1010 |
+
} else {
|
1011 |
+
$loc = get_permalink( $comment_post_ID ) . '#cerber-recaptcha-msg';
|
1012 |
+
}
|
1013 |
+
wp_safe_redirect( $loc );
|
1014 |
+
exit;
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
} );
|
1018 |
+
|
1019 |
+
}
|
1020 |
+
/**
|
1021 |
+
* Check if if submitted comment is allowed
|
1022 |
+
*
|
1023 |
+
* @return bool
|
1024 |
+
*/
|
1025 |
+
function cerber_is_comment_allowed(){
|
1026 |
+
global $wp_cerber;
|
1027 |
+
|
1028 |
+
$deny = false;
|
1029 |
+
|
1030 |
+
if ( ! cerber_is_allowed() ) {
|
1031 |
+
$deny = true;
|
1032 |
+
}
|
1033 |
+
elseif ( cerber_is_bot('botscomm') ) {
|
1034 |
+
$remain = cerber_get_remain_count( null , true, 16, 3, 60);
|
1035 |
+
if ($remain < 1) cerber_block_add( null, 6, '', 60 );
|
1036 |
+
$deny = true;
|
1037 |
+
}
|
1038 |
+
elseif ( ! $wp_cerber->reCaptchaValidate( 'comment' , true ) ) {
|
1039 |
+
$deny = true;
|
1040 |
+
}
|
1041 |
+
elseif ( lab_is_blocked( $wp_cerber->getRemoteIp() ) ) {
|
1042 |
+
$deny = true;
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
if ($deny) {
|
1046 |
+
cerber_log( 16 );
|
1047 |
+
}
|
1048 |
+
|
1049 |
+
return !$deny;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
/**
|
1053 |
+
* Showing reCAPTCHA widget.
|
1054 |
+
* Displaying error message on the comment form for a human.
|
1055 |
+
*
|
1056 |
+
*/
|
1057 |
+
add_filter( 'comment_form_submit_field', function ( $value ) {
|
1058 |
+
global $wp_cerber, $post;
|
1059 |
+
|
1060 |
+
if ( ! empty( $_COOKIE["cerber-post-id"] ) && absint( $_COOKIE["cerber-post-id"] ) == $post->ID ) {
|
1061 |
+
//echo '<div id="cerber-recaptcha-msg">' . __( 'ERROR:', 'wp-cerber' ) . ' ' . $wp_cerber->reCaptchaMsg( 'comment' ) . '</div>';
|
1062 |
+
echo '<div id="cerber-recaptcha-msg">' . __( 'ERROR:', 'wp-cerber' ) . ' ' . __('Sorry, human verification failed.') . '</div>';
|
1063 |
+
echo '<script type="text/javascript">document.cookie = "cerber-post-id=0;path=/";</script>';
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
$au = $wp_cerber->getSettings( 'recapcomauth' );
|
1067 |
+
if ( ! $au || ( $au && ! is_user_logged_in() ) ) {
|
1068 |
+
$wp_cerber->reCaptcha( 'widget', 'recapcom' );
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
return $value;
|
1072 |
+
} );
|
1073 |
+
|
1074 |
+
|
1075 |
+
// Messages ----------------------------------------------------------------------
|
1076 |
+
|
1077 |
+
/**
|
1078 |
+
* Replace ANY system messages or add notify message above login form if IP is not allowed (blocked or locked out)
|
1079 |
+
*/
|
1080 |
+
add_filter( 'login_errors', 'cerber_login_form_msg' ); // hook on POST if credentials was wrong
|
1081 |
+
function cerber_login_form_msg( $errors ) {
|
1082 |
+
global $error, $wp_cerber;
|
1083 |
+
if ( cerber_can_msg() ) {
|
1084 |
+
if ( ! cerber_is_allowed() ) {
|
1085 |
+
$errors = $wp_cerber->getErrorMsg();
|
1086 |
+
}
|
1087 |
+
elseif ( ! $error && ( $msg = $wp_cerber->getRemainMsg() ) ) {
|
1088 |
+
$errors .= '<p>' . $msg;
|
1089 |
+
}
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
return $errors;
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
add_filter( 'shake_error_codes', 'cerber_login_failure_shake' ); // Shake it, baby!
|
1096 |
+
function cerber_login_failure_shake( $shake_error_codes ) {
|
1097 |
+
$shake_error_codes[] = 'cerber_wp_error';
|
1098 |
+
|
1099 |
+
return $shake_error_codes;
|
1100 |
+
}
|
1101 |
+
|
1102 |
+
/*
|
1103 |
+
Replace default login/logout URL with Custom login page URL
|
1104 |
+
*/
|
1105 |
+
add_filter( 'site_url', 'cerber_login_logout', 9999, 4 );
|
1106 |
+
add_filter( 'network_site_url', 'cerber_login_logout', 9999, 3 );
|
1107 |
+
function cerber_login_logout( $url, $path, $scheme, $blog_id = 0 ) { // $blog_id only for 'site_url'
|
1108 |
+
global $wp_cerber;
|
1109 |
+
if ( $login_path = $wp_cerber->getSettings( 'loginpath' ) ) {
|
1110 |
+
$url = str_replace( WP_LOGIN_SCRIPT, $login_path . '/', $url );
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
return $url;
|
1114 |
+
}
|
1115 |
+
|
1116 |
+
/*
|
1117 |
+
Replace default logout redirect URL with Custom login page URL
|
1118 |
+
*/
|
1119 |
+
add_filter( 'wp_redirect', 'cerber_redirect', 9999, 2 );
|
1120 |
+
function cerber_redirect( $location, $status ) {
|
1121 |
+
global $wp_cerber;
|
1122 |
+
if ( ($path = $wp_cerber->getSettings( 'loginpath' )) && ( 0 === strpos( $location, WP_LOGIN_SCRIPT . '?' ) ) ) {
|
1123 |
+
$loc = explode( '?', $location );
|
1124 |
+
$location = get_home_url() . '/' . $path . '/?' . $loc[1];
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
return $location;
|
1128 |
+
}
|
1129 |
+
|
1130 |
+
// Access control ========================================================================================
|
1131 |
+
|
1132 |
+
/*
|
1133 |
+
Direct access to the restricted WP php scripts - what will we do?
|
1134 |
+
*/
|
1135 |
+
add_action( 'init', 'cerber_access_control' );
|
1136 |
+
function cerber_access_control() {
|
1137 |
+
global $wp_cerber;
|
1138 |
+
|
1139 |
+
if ( is_admin() ) {
|
1140 |
+
return;
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
// IPs from White List are allowed
|
1144 |
+
$acl = cerber_acl_check();
|
1145 |
+
if ( $acl == 'W' ) {
|
1146 |
+
return;
|
1147 |
+
}
|
1148 |
+
elseif ( $acl == 'B' || cerber_block_check() ) {
|
1149 |
+
$deny = true;
|
1150 |
+
}
|
1151 |
+
else {
|
1152 |
+
$deny = false;
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
$opt = $wp_cerber->getSettings();
|
1156 |
+
//$script = substr( strrchr( $_SERVER['SCRIPT_NAME'], '/' ), 1 );
|
1157 |
+
$script = substr( strrchr( $_SERVER['REQUEST_URI'], '/' ), 1 );
|
1158 |
+
|
1159 |
+
if ( $script ) {
|
1160 |
+
if ( $script == WP_LOGIN_SCRIPT || $script == WP_SIGNUP_SCRIPT || ( $script == WP_REG_URI && ! get_option( 'users_can_register' ) ) ) { // no direct access
|
1161 |
+
if ( !empty( $opt['wplogin'] ) ) {
|
1162 |
+
cerber_log( 50 );
|
1163 |
+
cerber_soft_block_add( $wp_cerber->getRemoteIp(), 2, $script );
|
1164 |
+
cerber_404_page();
|
1165 |
+
}
|
1166 |
+
if ( $deny || !empty( $opt['loginnowp'] ) ) {
|
1167 |
+
cerber_log( 50 );
|
1168 |
+
cerber_404_page();
|
1169 |
+
}
|
1170 |
+
}
|
1171 |
+
elseif ( $script == WP_XMLRPC_SCRIPT || $script == WP_TRACKBACK_SCRIPT ) { // no direct access
|
1172 |
+
if ( $deny || ! empty( $opt['xmlrpc'] ) ) {
|
1173 |
+
//cerber_log( 50 );
|
1174 |
+
cerber_404_page();
|
1175 |
+
}
|
1176 |
+
}
|
1177 |
+
}
|
1178 |
+
|
1179 |
+
if ( $deny || ! empty( $opt['norest'] ) ) {
|
1180 |
+
cerber_block_rest();
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
if ( $deny || ! empty( $opt['xmlrpc'] ) ) {
|
1184 |
+
add_filter( 'xmlrpc_enabled', '__return_false' );
|
1185 |
+
add_filter( 'pings_open', '__return_false' );
|
1186 |
+
add_filter( 'bloginfo_url', 'cerber_pingback_url', 10, 2 );
|
1187 |
+
remove_action( 'wp_head', 'rsd_link', 10 );
|
1188 |
+
remove_action( 'wp_head', 'wlwmanifest_link', 10 );
|
1189 |
+
}
|
1190 |
+
|
1191 |
+
if ( $deny || ! empty( $opt['nofeeds'] ) ) {
|
1192 |
+
remove_action( 'wp_head', 'feed_links', 2 );
|
1193 |
+
remove_action( 'wp_head', 'feed_links_extra', 3 );
|
1194 |
+
|
1195 |
+
remove_action( 'do_feed_rdf', 'do_feed_rdf', 10 );
|
1196 |
+
remove_action( 'do_feed_rss', 'do_feed_rss', 10 );
|
1197 |
+
remove_action( 'do_feed_rss2', 'do_feed_rss2', 10 );
|
1198 |
+
remove_action( 'do_feed_atom', 'do_feed_atom', 10 );
|
1199 |
+
remove_action( 'do_pings', 'do_all_pings', 10 );
|
1200 |
+
|
1201 |
+
add_action( 'do_feed_rdf', 'cerber_404_page', 1 );
|
1202 |
+
add_action( 'do_feed_rss', 'cerber_404_page', 1 );
|
1203 |
+
add_action( 'do_feed_rss2', 'cerber_404_page', 1 );
|
1204 |
+
add_action( 'do_feed_atom', 'cerber_404_page', 1 );
|
1205 |
+
add_action( 'do_feed_rss2_comments', 'cerber_404_page', 1 );
|
1206 |
+
add_action( 'do_feed_atom_comments', 'cerber_404_page', 1 );
|
1207 |
+
}
|
1208 |
+
}
|
1209 |
+
|
1210 |
+
/*
|
1211 |
+
* Disable pingback URL (hide from HEAD)
|
1212 |
+
*/
|
1213 |
+
function cerber_pingback_url( $output, $show ) {
|
1214 |
+
if ( $show == 'pingback_url' ) {
|
1215 |
+
$output = '';
|
1216 |
+
}
|
1217 |
+
|
1218 |
+
return $output;
|
1219 |
+
}
|
1220 |
+
|
1221 |
+
/**
|
1222 |
+
* Disable REST API
|
1223 |
+
*
|
1224 |
+
*/
|
1225 |
+
function cerber_block_rest() {
|
1226 |
+
// OLD WP
|
1227 |
+
add_filter( 'json_enabled', '__return_false' );
|
1228 |
+
add_filter( 'json_jsonp_enabled', '__return_false' );
|
1229 |
+
// WP 4.4
|
1230 |
+
add_filter( 'rest_enabled', '__return_false', 9999 );
|
1231 |
+
// WP 4.7
|
1232 |
+
add_filter( 'rest_jsonp_enabled', '__return_false' );
|
1233 |
+
// Links
|
1234 |
+
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
|
1235 |
+
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
|
1236 |
+
// Default REST API hooks from default-filters.php
|
1237 |
+
remove_action( 'init', 'rest_api_init' );
|
1238 |
+
remove_action( 'rest_api_init', 'rest_api_default_filters', 10 );
|
1239 |
+
remove_action( 'rest_api_init', 'register_initial_settings', 10 );
|
1240 |
+
remove_action( 'rest_api_init', 'create_initial_rest_routes', 99 );
|
1241 |
+
remove_action( 'parse_request', 'rest_api_loaded' );
|
1242 |
+
|
1243 |
+
if ( cerber_is_rest_url() ) {
|
1244 |
+
cerber_404_page();
|
1245 |
+
}
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
/*
|
1249 |
+
* Redirection control: standard admin/login redirections
|
1250 |
+
*
|
1251 |
+
*/
|
1252 |
+
add_filter( 'wp_redirect', 'cerber_no_redirect', 10, 2 );
|
1253 |
+
function cerber_no_redirect( $location, $status ) {
|
1254 |
+
global $current_user, $wp_cerber;
|
1255 |
+
if ( $current_user->ID == 0 && $wp_cerber->getSettings( 'noredirect' ) ) {
|
1256 |
+
$str = 'redirect_to=' . urlencode( admin_url() );
|
1257 |
+
if ( strpos( $location, $str ) ) {
|
1258 |
+
cerber_404_page();
|
1259 |
+
}
|
1260 |
+
}
|
1261 |
+
|
1262 |
+
return $location;
|
1263 |
+
}
|
1264 |
+
/*
|
1265 |
+
* Redirection control: no default aliases for redirections
|
1266 |
+
*
|
1267 |
+
*/
|
1268 |
+
if ( $wp_cerber->getSettings( 'noredirect' ) ) {
|
1269 |
+
remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
|
1270 |
+
}
|
1271 |
+
/*
|
1272 |
+
* Stop user enumeration
|
1273 |
+
*
|
1274 |
+
*/
|
1275 |
+
add_action( 'template_redirect', 'cerber_canonical', 1 );
|
1276 |
+
function cerber_canonical() {
|
1277 |
+
global $wp_cerber;
|
1278 |
+
if ( $wp_cerber->getSettings( 'stopenum' ) ) {
|
1279 |
+
if ( ! is_admin() && ! empty( $_GET['author'] ) ) {
|
1280 |
+
cerber_404_page();
|
1281 |
+
}
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
/*
|
1285 |
+
if ( $wp_cerber->getSettings( 'hashauthor' ) ) {
|
1286 |
+
add_filter( 'request',
|
1287 |
+
function ( $vars ) {
|
1288 |
+
if (isset($vars['author_name']) && !is_admin()) {
|
1289 |
+
$vars['author_name'] = '><';
|
1290 |
+
}
|
1291 |
+
|
1292 |
+
return $vars;
|
1293 |
+
} );
|
1294 |
+
}
|
1295 |
+
*/
|
1296 |
+
|
1297 |
+
/*
|
1298 |
+
Can login form message be shown?
|
1299 |
+
*/
|
1300 |
+
function cerber_can_msg() {
|
1301 |
+
if ( ! isset( $_REQUEST['action'] ) ) {
|
1302 |
+
return true;
|
1303 |
+
}
|
1304 |
+
if ( $_REQUEST['action'] == 'login' ) {
|
1305 |
+
return true;
|
1306 |
+
}
|
1307 |
+
|
1308 |
+
return false;
|
1309 |
+
//if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' );
|
1310 |
+
}
|
1311 |
+
|
1312 |
+
|
1313 |
+
// Cookies ---------------------------------------------------------------------------------
|
1314 |
+
/*
|
1315 |
+
Mark user with groove
|
1316 |
+
@since 1.3
|
1317 |
+
*/
|
1318 |
+
add_action( 'auth_cookie_valid', 'cerber_cookie1', 10, 2 );
|
1319 |
+
function cerber_cookie1( $cookie_elements = null, $user = null ) {
|
1320 |
+
global $current_user;
|
1321 |
+
if ( ! $user ) {
|
1322 |
+
$user = wp_get_current_user();
|
1323 |
+
}
|
1324 |
+
$expire = time() + apply_filters( 'auth_cookie_expiration', 14 * 24 * 3600, $user->ID, true ) + ( 24 * 3600 );
|
1325 |
+
cerber_set_cookie( $expire );
|
1326 |
+
}
|
1327 |
+
|
1328 |
+
/*
|
1329 |
+
Mark switched user with groove
|
1330 |
+
@since 1.6
|
1331 |
+
*/
|
1332 |
+
add_action( 'set_logged_in_cookie', 'cerber_cookie2', 10, 5 );
|
1333 |
+
function cerber_cookie2( $logged_in_cookie, $expire, $expiration, $user_id, $logged_in ) {
|
1334 |
+
cerber_set_cookie( $expire );
|
1335 |
+
}
|
1336 |
+
|
1337 |
+
function cerber_set_cookie( $expire ) {
|
1338 |
+
if ( ! headers_sent() ) {
|
1339 |
+
setcookie( 'cerber_groove', cerber_get_groove(), $expire + 1, COOKIEPATH );
|
1340 |
+
}
|
1341 |
+
}
|
1342 |
+
|
1343 |
+
/*
|
1344 |
+
Mark current user when they logged out
|
1345 |
+
@since 1.0
|
1346 |
+
*/
|
1347 |
+
add_action( 'wp_logout', 'cerber_clear_cookie' );
|
1348 |
+
function cerber_clear_cookie() {
|
1349 |
+
if ( ! headers_sent() ) {
|
1350 |
+
setcookie( 'cerber_logout', 'ok', time() + 24 * 3600, COOKIEPATH );
|
1351 |
+
}
|
1352 |
+
}
|
1353 |
+
|
1354 |
+
/*
|
1355 |
+
Track BAD cookies with non-existence user or bad password (hash)
|
1356 |
+
*/
|
1357 |
+
add_action( 'auth_cookie_bad_username', 'cerber_cookie_bad' );
|
1358 |
+
add_action( 'auth_cookie_bad_hash', 'cerber_cookie_bad' );
|
1359 |
+
function cerber_cookie_bad( $cookie_elements ) {
|
1360 |
+
cerber_login_failed( $cookie_elements['username'] );
|
1361 |
+
wp_clear_auth_cookie();
|
1362 |
+
}
|
1363 |
+
|
1364 |
+
/*
|
1365 |
+
Get special Cerber Sign for using with cookies
|
1366 |
+
*/
|
1367 |
+
function cerber_get_groove() {
|
1368 |
+
$groove = get_site_option( 'cerber-groove' );
|
1369 |
+
if ( empty( $groove ) ) {
|
1370 |
+
$groove = wp_generate_password( 16, false );
|
1371 |
+
update_site_option( 'cerber-groove', $groove );
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
return md5( $groove );
|
1375 |
+
}
|
1376 |
+
|
1377 |
+
/*
|
1378 |
+
Check if special Cerber Sign valid
|
1379 |
+
*/
|
1380 |
+
function cerber_check_groove( $hash = '' ) {
|
1381 |
+
if ( ! $hash ) {
|
1382 |
+
if ( ! isset( $_COOKIE['cerber_groove'] ) ) {
|
1383 |
+
return false;
|
1384 |
+
}
|
1385 |
+
$hash = $_COOKIE['cerber_groove'];
|
1386 |
+
}
|
1387 |
+
$groove = get_site_option( 'cerber-groove' );
|
1388 |
+
if ( $hash == md5( $groove ) ) {
|
1389 |
+
return true;
|
1390 |
+
}
|
1391 |
+
|
1392 |
+
return false;
|
1393 |
+
}
|
1394 |
+
|
1395 |
+
/**
|
1396 |
+
* Is bot detection engine enabled in a given location
|
1397 |
+
*
|
1398 |
+
* @param $location string|array Location
|
1399 |
+
*
|
1400 |
+
* @return bool true if enabled
|
1401 |
+
*/
|
1402 |
+
function cerber_antibot_enabled($location) {
|
1403 |
+
global $wp_cerber;
|
1404 |
+
|
1405 |
+
if ( is_array( $location ) ) {
|
1406 |
+
foreach ( $location as $loc ) {
|
1407 |
+
if ( $wp_cerber->getSettings( $loc ) ) {
|
1408 |
+
return true;
|
1409 |
+
}
|
1410 |
+
}
|
1411 |
+
}
|
1412 |
+
else {
|
1413 |
+
if ( $wp_cerber->getSettings( $location ) ) {
|
1414 |
+
return true;
|
1415 |
+
}
|
1416 |
+
}
|
1417 |
+
|
1418 |
+
return false;
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
/**
|
1422 |
+
* Print out the antibot/antispam jQuery code
|
1423 |
+
*
|
1424 |
+
* @param $location string|array Location (setting)
|
1425 |
+
*/
|
1426 |
+
function cerber_antibot_code($location) {
|
1427 |
+
if ( ! cerber_antibot_enabled( $location ) ) {
|
1428 |
+
return;
|
1429 |
+
}
|
1430 |
+
|
1431 |
+
$ret = get_site_option( 'cerber-antibot', null );
|
1432 |
+
|
1433 |
+
/*
|
1434 |
+
if ( empty( $ret ) ) {
|
1435 |
+
$var = substr( str_shuffle( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ), 0, 16 );
|
1436 |
+
$val = substr( str_shuffle( '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ), 0, 16 );
|
1437 |
+
$ret = array( $var, $val );
|
1438 |
+
update_site_option( 'cerber-antibot', $ret );
|
1439 |
+
}
|
1440 |
+
*/
|
1441 |
+
|
1442 |
+
if ( empty( $ret ) || !is_array( $ret ) ) {
|
1443 |
+
$ret = cerber_antibot_gene();
|
1444 |
+
}
|
1445 |
+
|
1446 |
+
?>
|
1447 |
+
<script type="text/javascript">
|
1448 |
+
jQuery(document).ready(function ($) {
|
1449 |
+
$(document).on('submit', 'form', function () {
|
1450 |
+
$(this).append('<input type="hidden" name="<?php echo $ret[0][0]; ?>" value="<?php echo $ret[0][1]; ?>" />');
|
1451 |
+
$(this).append('<input type="hidden" name="<?php echo $ret[1][0]; ?>" value="<?php echo $ret[1][1]; ?>" />');
|
1452 |
+
return true;
|
1453 |
+
});
|
1454 |
+
});
|
1455 |
+
</script>
|
1456 |
+
<?php
|
1457 |
+
|
1458 |
+
}
|
1459 |
+
|
1460 |
+
/**
|
1461 |
+
* Generates and saves antibot markers
|
1462 |
+
*
|
1463 |
+
* @return array
|
1464 |
+
*/
|
1465 |
+
function cerber_antibot_gene() {
|
1466 |
+
|
1467 |
+
$length = rand( 10, 16 );
|
1468 |
+
$string1 = str_shuffle( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' );
|
1469 |
+
$string2 = str_shuffle( '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz @*-+!?.,' );
|
1470 |
+
|
1471 |
+
$ret = array(
|
1472 |
+
array( substr( $string1, 0, $length - 1 ), substr( $string2, 0, $length + 1 ) ),
|
1473 |
+
array( substr( $string1, 1, $length + 1 ), substr( $string2, 2, $length - 1 ) ),
|
1474 |
+
);
|
1475 |
+
|
1476 |
+
update_site_option( 'cerber-antibot', $ret );
|
1477 |
+
|
1478 |
+
return $ret;
|
1479 |
+
}
|
1480 |
+
|
1481 |
+
/**
|
1482 |
+
* Is a POST request (a form) was submitted by a bot
|
1483 |
+
*
|
1484 |
+
* @return bool|mixed|null
|
1485 |
+
*/
|
1486 |
+
function cerber_is_bot($location) {
|
1487 |
+
global $wp_cerber;
|
1488 |
+
static $ret = null;
|
1489 |
+
|
1490 |
+
if ( !$location || $_SERVER['REQUEST_METHOD'] != 'POST' ) {
|
1491 |
+
return false;
|
1492 |
+
}
|
1493 |
+
|
1494 |
+
if ( isset( $ret ) ) {
|
1495 |
+
return $ret;
|
1496 |
+
}
|
1497 |
+
|
1498 |
+
if ( ! cerber_antibot_enabled($location) ) {
|
1499 |
+
$ret = false;
|
1500 |
+
return $ret;
|
1501 |
+
}
|
1502 |
+
|
1503 |
+
$fields = get_site_option( 'cerber-antibot', null );
|
1504 |
+
|
1505 |
+
if ( empty( $fields ) ) {
|
1506 |
+
$ret = false;
|
1507 |
+
}
|
1508 |
+
elseif (
|
1509 |
+
empty( $_POST[ $fields[0][0] ] ) || $_POST[ $fields[0][0] ] != $fields[0][1]
|
1510 |
+
|| empty( $_POST[ $fields[1][0] ] ) || $_POST[ $fields[1][0] ] != $fields[1][1]
|
1511 |
+
) {
|
1512 |
+
$ret = true;
|
1513 |
+
if ( $wp_cerber->getSettings( 'cerberlab' ) ) {
|
1514 |
+
lab_save_push( $wp_cerber->getRemoteIp(), 333, '' );
|
1515 |
+
}
|
1516 |
+
}
|
1517 |
+
else {
|
1518 |
+
$ret = false;
|
1519 |
+
}
|
1520 |
+
|
1521 |
+
return $ret;
|
1522 |
+
}
|
1523 |
+
|
1524 |
+
/**
|
1525 |
+
* Set user session expiration
|
1526 |
+
*
|
1527 |
+
*/
|
1528 |
+
add_filter( 'auth_cookie_expiration', function ( $expire ) {
|
1529 |
+
global $wp_cerber;
|
1530 |
+
$time = $wp_cerber->getSettings( 'auth_expire' );
|
1531 |
+
if ( $time ) {
|
1532 |
+
$expire = 60 * $time;
|
1533 |
+
}
|
1534 |
+
|
1535 |
+
return $expire;
|
1536 |
+
} );
|
1537 |
+
|
1538 |
+
// Track various activity -------------------------------------------------------------------------
|
1539 |
+
|
1540 |
+
add_action( 'wp_login', 'cerber_log_login', 10, 2 );
|
1541 |
+
function cerber_log_login( $login, $user ) {
|
1542 |
+
if ( ! empty( $_POST['log'] ) ) { // default WP form
|
1543 |
+
$user_login = htmlspecialchars($_POST['log']);
|
1544 |
+
} else {
|
1545 |
+
$user_login = $login;
|
1546 |
+
}
|
1547 |
+
cerber_log( 5, $user_login, $user->ID, null );
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
add_action( 'wp_logout', 'cerber_log_logout' );
|
1551 |
+
function cerber_log_logout() {
|
1552 |
+
global $user_ID;
|
1553 |
+
if ( ! $user_ID ) {
|
1554 |
+
$user = wp_get_current_user();
|
1555 |
+
$user_ID = $user->ID;
|
1556 |
+
}
|
1557 |
+
cerber_log( 6, '', $user_ID, null );
|
1558 |
+
}
|
1559 |
+
|
1560 |
+
//add_action( 'lostpassword_post', 'cerber_password_post' );
|
1561 |
+
add_action( 'retrieve_password', 'cerber_password_post' );
|
1562 |
+
function cerber_password_post( $user_login ) {
|
1563 |
+
cerber_log( 21, $user_login );
|
1564 |
+
}
|
1565 |
+
|
1566 |
+
add_action( 'password_reset', 'cerber_password_reset' );
|
1567 |
+
function cerber_password_reset( $user ) {
|
1568 |
+
cerber_log( 20, $user->user_login, $user->ID );
|
1569 |
+
}
|
1570 |
+
|
1571 |
+
add_action( 'register_new_user', 'cerber_log_reg' );
|
1572 |
+
function cerber_log_reg( $user_id ) {
|
1573 |
+
$user = get_user_by( 'ID', $user_id );
|
1574 |
+
cerber_log( 2, $user->user_login, $user_id );
|
1575 |
+
}
|
1576 |
+
|
1577 |
+
add_action( 'edit_user_created_user', 'cerber_log_create', 10, 2 );
|
1578 |
+
function cerber_log_create( $user_id, $notify = null ) {
|
1579 |
+
$user = get_user_by( 'ID', $user_id );
|
1580 |
+
cerber_log( 1, $user->user_login, $user_id );
|
1581 |
+
}
|
1582 |
+
|
1583 |
+
// Lockouts routines ---------------------------------------------------------------------
|
1584 |
+
|
1585 |
+
/**
|
1586 |
+
* Lock out IP address if it is an alien IP only (browser does not have valid Cerber groove)
|
1587 |
+
*
|
1588 |
+
* @param $ip string IP address to block
|
1589 |
+
* @param integer $reason_id ID of reason of blocking
|
1590 |
+
* @param string $details Reason of blocking
|
1591 |
+
* @param null $duration Duration of blocking
|
1592 |
+
*
|
1593 |
+
* @return bool|false|int
|
1594 |
+
*/
|
1595 |
+
function cerber_soft_block_add( $ip, $reason_id, $details = '', $duration = null ) {
|
1596 |
+
if ( cerber_check_groove() ) {
|
1597 |
+
return false;
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
return cerber_block_add( $ip, $reason_id, $details, $duration );
|
1601 |
+
}
|
1602 |
+
|
1603 |
+
/**
|
1604 |
+
* Lock out IP address
|
1605 |
+
*
|
1606 |
+
* @param $ip string IP address to block
|
1607 |
+
* @param integer $reason_id ID of reason of blocking
|
1608 |
+
* @param string $details Reason of blocking
|
1609 |
+
* @param int $duration Duration of blocking
|
1610 |
+
* @param bool $check_acl Check for ACL
|
1611 |
+
*
|
1612 |
+
* @return bool|false|int
|
1613 |
+
*/
|
1614 |
+
function cerber_block_add( $ip, $reason_id = 1, $details = '', $duration = null, $check_acl = true ) {
|
1615 |
+
global $wpdb, $wp_cerber;
|
1616 |
+
|
1617 |
+
//$wp_cerber->setProcessed();
|
1618 |
+
|
1619 |
+
if (cerber_get_block($ip)) return false;
|
1620 |
+
|
1621 |
+
if ( empty($ip) ) {
|
1622 |
+
$ip = $wp_cerber->getRemoteIp();
|
1623 |
+
}
|
1624 |
+
|
1625 |
+
if ( $check_acl && cerber_acl_check( $ip ) ) {
|
1626 |
+
return false;
|
1627 |
+
}
|
1628 |
+
|
1629 |
+
$ip_address = $ip;
|
1630 |
+
|
1631 |
+
if ( $wp_cerber->getSettings( 'cerberlab' ) ) {
|
1632 |
+
lab_save_push( $ip, $reason_id, $details );
|
1633 |
+
}
|
1634 |
+
|
1635 |
+
if ( $wp_cerber->getSettings( 'subnet' ) ) {
|
1636 |
+
$ip = cerber_get_subnet( $ip );
|
1637 |
+
$activity = 11;
|
1638 |
+
} else {
|
1639 |
+
$activity = 10;
|
1640 |
+
}
|
1641 |
+
|
1642 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_BLOCKS_TABLE . ' WHERE ip = %s', $ip ) ) ) {
|
1643 |
+
return false;
|
1644 |
+
}
|
1645 |
+
|
1646 |
+
$reason = cerber_get_reason( $reason_id );
|
1647 |
+
if ($details) $reason .= ': <b>' . $details . '</b>';
|
1648 |
+
|
1649 |
+
if ( ! $duration ) {
|
1650 |
+
$duration = cerber_calc_duration( $ip );
|
1651 |
+
}
|
1652 |
+
$until = time() + $duration;
|
1653 |
+
|
1654 |
+
//$result = $wpdb->query($wpdb->prepare('INSERT INTO '. CERBER_BLOCKS_TABLE . ' (ip,block_until,reason) VALUES (%s,%d,%s)',$ip,$until,$reason));
|
1655 |
+
$result = $wpdb->insert( CERBER_BLOCKS_TABLE, array(
|
1656 |
+
'ip' => $ip,
|
1657 |
+
'block_until' => $until,
|
1658 |
+
'reason' => $reason
|
1659 |
+
), array( '%s', '%d', '%s' ) );
|
1660 |
+
|
1661 |
+
if ( $result ) {
|
1662 |
+
cerber_log( $activity, null, null, $ip_address );
|
1663 |
+
$wp_cerber->setLocked();
|
1664 |
+
do_action( 'cerber_ip_locked', array( 'IP' => $ip_address, 'reason' => $reason ) );
|
1665 |
+
$result = true;
|
1666 |
+
}
|
1667 |
+
else {
|
1668 |
+
cerber_db_error_log();
|
1669 |
+
$result = false;
|
1670 |
+
}
|
1671 |
+
|
1672 |
+
if ( $wp_cerber->getSettings( 'notify' ) ) {
|
1673 |
+
//$count = $wpdb->get_var( 'SELECT count(ip) FROM ' . CERBER_BLOCKS_TABLE );
|
1674 |
+
$count = cerber_blocked_num();
|
1675 |
+
if ( $count > $wp_cerber->getSettings( 'above' ) ) {
|
1676 |
+
cerber_send_notify( 'lockout', '', $ip_address );
|
1677 |
+
}
|
1678 |
+
}
|
1679 |
+
|
1680 |
+
return $result;
|
1681 |
+
}
|
1682 |
+
|
1683 |
+
function cerber_block_delete( $ip ) {
|
1684 |
+
global $wpdb;
|
1685 |
+
|
1686 |
+
return $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . CERBER_BLOCKS_TABLE . ' WHERE ip = %s', $ip ) );
|
1687 |
+
}
|
1688 |
+
|
1689 |
+
|
1690 |
+
/**
|
1691 |
+
*
|
1692 |
+
* Check if an IP address is currently blocked. With C subnet also.
|
1693 |
+
*
|
1694 |
+
* @param string $ip an IP address
|
1695 |
+
*
|
1696 |
+
* @return bool true if IP is locked out
|
1697 |
+
*/
|
1698 |
+
function cerber_block_check( $ip = '' ) {
|
1699 |
+
|
1700 |
+
// @since 4.8
|
1701 |
+
if (cerber_get_block($ip)) return true;
|
1702 |
+
|
1703 |
+
return false;
|
1704 |
+
}
|
1705 |
+
|
1706 |
+
/**
|
1707 |
+
*
|
1708 |
+
* Return the lockout row for an IP if it is blocked. With C subnet also.
|
1709 |
+
*
|
1710 |
+
* @param string $ip an IP address
|
1711 |
+
*
|
1712 |
+
* @return object|bool object if IP is locked out, false otherwise
|
1713 |
+
*/
|
1714 |
+
function cerber_get_block( $ip = '' ) {
|
1715 |
+
global $wpdb, $wp_cerber;
|
1716 |
+
|
1717 |
+
if ( ! $ip ) {
|
1718 |
+
$ip = $wp_cerber->getRemoteIp();
|
1719 |
+
}
|
1720 |
+
|
1721 |
+
if ( ! filter_var( $ip, FILTER_VALIDATE_IP ) ) {
|
1722 |
+
return false;
|
1723 |
+
}
|
1724 |
+
|
1725 |
+
$where = ' WHERE ip = "' . $ip . '"';
|
1726 |
+
if ( cerber_is_ipv4( $ip ) ) {
|
1727 |
+
$subnet = cerber_get_subnet( $ip );
|
1728 |
+
$where .= ' OR ip = "' . $subnet . '"';
|
1729 |
+
}
|
1730 |
+
if ( $ret = $wpdb->get_row( 'SELECT * FROM ' . CERBER_BLOCKS_TABLE . $where ) ) {
|
1731 |
+
return $ret;
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
return false;
|
1735 |
+
}
|
1736 |
+
|
1737 |
+
// TODO: replace all entrance of $count = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_BLOCKS_TABLE ); with this function
|
1738 |
+
/**
|
1739 |
+
* Return the number of currently locked out IPs
|
1740 |
+
*
|
1741 |
+
* @return int the number of currently locked out IPs
|
1742 |
+
* @since 3.0
|
1743 |
+
*/
|
1744 |
+
function cerber_blocked_num(){
|
1745 |
+
global $wpdb;
|
1746 |
+
$count = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_BLOCKS_TABLE );
|
1747 |
+
return absint($count);
|
1748 |
+
}
|
1749 |
+
|
1750 |
+
/*
|
1751 |
+
Calculation duration of blocking (lockout) IP address based on settings & rules.
|
1752 |
+
*/
|
1753 |
+
function cerber_calc_duration( $ip ) {
|
1754 |
+
global $wpdb, $wp_cerber;
|
1755 |
+
$range = time() - $wp_cerber->getSettings( 'aglast' ) * 3600;
|
1756 |
+
$lockouts = $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = %s AND activity IN (10,11) AND stamp > %d', $ip, $range ) );
|
1757 |
+
if ( $lockouts >= $wp_cerber->getSettings( 'aglocks' ) ) {
|
1758 |
+
return $wp_cerber->getSettings( 'agperiod' ) * 3600;
|
1759 |
+
}
|
1760 |
+
|
1761 |
+
return $wp_cerber->getSettings( 'lockout' ) * 60;
|
1762 |
+
}
|
1763 |
+
|
1764 |
+
/**
|
1765 |
+
* Calculation of remaining attempts
|
1766 |
+
*
|
1767 |
+
* @param $ip string an IP address
|
1768 |
+
* @param $check_acl bool if true will check the White IP ACL first
|
1769 |
+
* @param $activity string comma-separated list of activity IDs to calculate for
|
1770 |
+
* @param $allowed int Allowed attempts within $period
|
1771 |
+
* @param $period int Period for count attempts
|
1772 |
+
*
|
1773 |
+
* @return int Allowed attempts for now
|
1774 |
+
*/
|
1775 |
+
function cerber_get_remain_count( $ip = '', $check_acl = true, $activity = '7,51,52', $allowed = null, $period = null ) {
|
1776 |
+
global $wpdb, $wp_cerber;
|
1777 |
+
if ( ! $ip ) {
|
1778 |
+
$ip = $wp_cerber->getRemoteIp();
|
1779 |
+
}
|
1780 |
+
|
1781 |
+
if (!$allowed) $allowed = $wp_cerber->getSettings( 'attempts' );
|
1782 |
+
|
1783 |
+
if ( $check_acl && cerber_acl_check( $ip, 'W' ) ) {
|
1784 |
+
return $allowed; // whitelist = infinity attempts
|
1785 |
+
}
|
1786 |
+
|
1787 |
+
//if (!is_string($activity)) $activity = (string)$activity;
|
1788 |
+
|
1789 |
+
if (!$period) $period = $wp_cerber->getSettings( 'period' );
|
1790 |
+
|
1791 |
+
$range = time() - $period * 60;
|
1792 |
+
$attempts = $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = %s AND activity IN (%s) AND stamp > %d', $ip, $activity, $range ) );
|
1793 |
+
|
1794 |
+
if ( ! $attempts ) {
|
1795 |
+
return $allowed;
|
1796 |
+
}
|
1797 |
+
else {
|
1798 |
+
$ret = $allowed - $attempts;
|
1799 |
+
}
|
1800 |
+
$ret = $ret < 0 ? 0 : $ret;
|
1801 |
+
|
1802 |
+
return $ret;
|
1803 |
+
}
|
1804 |
+
|
1805 |
+
/**
|
1806 |
+
* Is a given IP is allowed to do restricted things?
|
1807 |
+
* Here Cerber makes its decision.
|
1808 |
+
*
|
1809 |
+
* @param $ip string IP address
|
1810 |
+
*
|
1811 |
+
* @return bool
|
1812 |
+
*/
|
1813 |
+
function cerber_is_allowed( $ip = '' ) {
|
1814 |
+
global $wp_cerber;
|
1815 |
+
static $cache = array();
|
1816 |
+
|
1817 |
+
if ( ! $ip ) {
|
1818 |
+
$ip = $wp_cerber->getRemoteIp();
|
1819 |
+
}
|
1820 |
+
|
1821 |
+
if ( ! filter_var( $ip, FILTER_VALIDATE_IP ) ) {
|
1822 |
+
return false;
|
1823 |
+
}
|
1824 |
+
|
1825 |
+
/*
|
1826 |
+
if ( isset( $cache[ $ip ] ) ) {
|
1827 |
+
return $cache[ $ip ];
|
1828 |
+
}
|
1829 |
+
*/
|
1830 |
+
|
1831 |
+
// @since 4.7.9
|
1832 |
+
if ( cerber_block_check( $ip ) ) {
|
1833 |
+
$cache[ $ip ] = false;
|
1834 |
+
return false;
|
1835 |
+
}
|
1836 |
+
|
1837 |
+
$tag = cerber_acl_check( $ip );
|
1838 |
+
if ( $tag == 'W' ) {
|
1839 |
+
$cache[ $ip ] = true;
|
1840 |
+
return true;
|
1841 |
+
}
|
1842 |
+
if ( $tag == 'B' ) {
|
1843 |
+
$cache[ $ip ] = false;
|
1844 |
+
return false;
|
1845 |
+
}
|
1846 |
+
|
1847 |
+
/* @since 4.7.9
|
1848 |
+
if ( cerber_block_check( $ip ) ) {
|
1849 |
+
return false;
|
1850 |
+
}*/
|
1851 |
+
|
1852 |
+
if ( cerber_is_citadel() ) {
|
1853 |
+
$cache[ $ip ] = false;
|
1854 |
+
return false;
|
1855 |
+
}
|
1856 |
+
|
1857 |
+
if ( lab_is_blocked( $ip, false ) ) {
|
1858 |
+
$cache[ $ip ] = false;
|
1859 |
+
return false;
|
1860 |
+
}
|
1861 |
+
|
1862 |
+
$cache[ $ip ] = true;
|
1863 |
+
return true;
|
1864 |
+
}
|
1865 |
+
// TODO: Merge with $wp_cerber->getStatus();
|
1866 |
+
function cerber_get_status( $ip ) {
|
1867 |
+
|
1868 |
+
if ( cerber_block_check( $ip ) ) {
|
1869 |
+
return 13;
|
1870 |
+
}
|
1871 |
+
|
1872 |
+
$tag = cerber_acl_check( $ip );
|
1873 |
+
if ( $tag == 'W' ) {
|
1874 |
+
return 0;
|
1875 |
+
}
|
1876 |
+
if ( $tag == 'B' ) {
|
1877 |
+
return 14;
|
1878 |
+
}
|
1879 |
+
|
1880 |
+
if ( cerber_is_citadel() ) {
|
1881 |
+
return 12;
|
1882 |
+
}
|
1883 |
+
|
1884 |
+
if ( lab_is_blocked( $ip, false ) ) {
|
1885 |
+
return 15;
|
1886 |
+
}
|
1887 |
+
|
1888 |
+
return 0;
|
1889 |
+
}
|
1890 |
+
|
1891 |
+
// Access lists (ACL) routines --------------------------------------------------------------------------------
|
1892 |
+
|
1893 |
+
/**
|
1894 |
+
* Add IP to specified access list
|
1895 |
+
*
|
1896 |
+
* @param $ip string|array single IP address, string with IP network, range or associative range array
|
1897 |
+
* @param $tag string 'B'|'W'
|
1898 |
+
*
|
1899 |
+
* @return bool|int Result of operation
|
1900 |
+
*/
|
1901 |
+
function cerber_acl_add( $ip, $tag ) {
|
1902 |
+
global $wpdb;
|
1903 |
+
if ( is_string( $ip ) ) {
|
1904 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SELECT COUNT(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE ip = %s', $ip ) ) ) {
|
1905 |
+
return false;
|
1906 |
+
}
|
1907 |
+
$range = cerber_any2range( $ip );
|
1908 |
+
if ( is_array( $range ) ) {
|
1909 |
+
$begin = $range['begin'];
|
1910 |
+
$end = $range['end'];
|
1911 |
+
} else {
|
1912 |
+
$begin = ip2long( $ip );
|
1913 |
+
$end = ip2long( $ip );
|
1914 |
+
}
|
1915 |
+
|
1916 |
+
return $wpdb->query( $wpdb->prepare( 'INSERT INTO ' . CERBER_ACL_TABLE . ' (ip, ip_long_begin, ip_long_end,tag) VALUES (%s,%d,%d,%s)', $ip, $begin, $end, $tag ) );
|
1917 |
+
//cerber_db_error_log();
|
1918 |
+
}
|
1919 |
+
elseif ( is_array( $ip ) ) {
|
1920 |
+
$range = $ip['range'];
|
1921 |
+
$begin = $ip['begin'];
|
1922 |
+
$end = $ip['end'];
|
1923 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SELECT COUNT(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE ip_long_begin = %d AND ip_long_end = %d', $begin, $end ) ) ) {
|
1924 |
+
return false;
|
1925 |
+
}
|
1926 |
+
|
1927 |
+
return $wpdb->query( $wpdb->prepare( 'INSERT INTO ' . CERBER_ACL_TABLE . ' (ip, ip_long_begin, ip_long_end, tag) VALUES (%s,%d,%d,%s)', $range, $begin, $end, $tag ) );
|
1928 |
+
}
|
1929 |
+
|
1930 |
+
return false;
|
1931 |
+
}
|
1932 |
+
|
1933 |
+
function cerber_add_white( $ip ) {
|
1934 |
+
return cerber_acl_add( $ip, 'W' );
|
1935 |
+
}
|
1936 |
+
|
1937 |
+
function cerber_add_black( $ip ) {
|
1938 |
+
return cerber_acl_add( $ip, 'B' );
|
1939 |
+
}
|
1940 |
+
|
1941 |
+
function cerber_acl_remove( $ip ) {
|
1942 |
+
global $wpdb;
|
1943 |
+
if ( is_string( $ip ) ) {
|
1944 |
+
return $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . CERBER_ACL_TABLE . ' WHERE ip = %s ', $ip ) );
|
1945 |
+
} elseif ( is_array( $ip ) ) {
|
1946 |
+
return $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . CERBER_ACL_TABLE . ' WHERE ip_long_begin = %d AND ip_long_end = %d', $ip['begin'], $ip['end'] ) );
|
1947 |
+
}
|
1948 |
+
|
1949 |
+
return false;
|
1950 |
+
}
|
1951 |
+
|
1952 |
+
/**
|
1953 |
+
* Check ACL for given IP. Some extra lines for performance reason.
|
1954 |
+
*
|
1955 |
+
* @param string $ip
|
1956 |
+
* @param string $tag
|
1957 |
+
*
|
1958 |
+
* @return bool|string
|
1959 |
+
*/
|
1960 |
+
function cerber_acl_check( $ip = null, $tag = '' ) {
|
1961 |
+
global $wpdb, $wp_cerber;
|
1962 |
+
if ( ! $ip ) {
|
1963 |
+
$ip = $wp_cerber->getRemoteIp();
|
1964 |
+
}
|
1965 |
+
|
1966 |
+
if ( ! cerber_is_ipv4( $ip ) ) {
|
1967 |
+
return cerber_acl_checkV6( $ip, $tag );
|
1968 |
+
}
|
1969 |
+
|
1970 |
+
$long = ip2long( $ip );
|
1971 |
+
|
1972 |
+
if ( $tag ) {
|
1973 |
+
if ( $tag != 'W' && $tag != 'B' ) {
|
1974 |
+
return false;
|
1975 |
+
}
|
1976 |
+
if ( $wpdb->get_var( 'SELECT ip FROM ' . CERBER_ACL_TABLE . ' WHERE ip_long_begin <= '.$long.' AND '.$long.' <= ip_long_end AND tag = "'.$tag.'" LIMIT 1' ) ) {
|
1977 |
+
return true;
|
1978 |
+
}
|
1979 |
+
return false;
|
1980 |
+
}
|
1981 |
+
else {
|
1982 |
+
if ( $ret = $wpdb->get_var( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "W" LIMIT 1' ) ) {
|
1983 |
+
return $ret;
|
1984 |
+
}
|
1985 |
+
if ( $ret = $wpdb->get_var( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "B" LIMIT 1' ) ) {
|
1986 |
+
return $ret;
|
1987 |
+
}
|
1988 |
+
|
1989 |
+
return false;
|
1990 |
+
}
|
1991 |
+
}
|
1992 |
+
|
1993 |
+
/**
|
1994 |
+
* IPv6 version of cerber_acl_check() without subnets and ranges
|
1995 |
+
*
|
1996 |
+
* @param null $ip
|
1997 |
+
* @param string $tag
|
1998 |
+
*
|
1999 |
+
* @return bool|null|string
|
2000 |
+
*/
|
2001 |
+
function cerber_acl_checkV6( $ip = null, $tag = '' ) {
|
2002 |
+
global $wpdb, $wp_cerber;
|
2003 |
+
if ( ! $ip ) {
|
2004 |
+
$ip = $wp_cerber->getRemoteIp();
|
2005 |
+
}
|
2006 |
+
if ( $tag ) {
|
2007 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE ip = %s AND tag = %s', $ip, $tag ) ) ) {
|
2008 |
+
return true;
|
2009 |
+
}
|
2010 |
+
|
2011 |
+
return false;
|
2012 |
+
} else {
|
2013 |
+
if ( $ret = $wpdb->get_var( $wpdb->prepare( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE ip = %s', $ip ) ) ) {
|
2014 |
+
return $ret;
|
2015 |
+
}
|
2016 |
+
|
2017 |
+
return false;
|
2018 |
+
}
|
2019 |
+
}
|
2020 |
+
|
2021 |
+
/*
|
2022 |
+
* Logging directly to the file
|
2023 |
+
*
|
2024 |
+
* CERBER_FAIL_LOG optional, full path including filename to the log file
|
2025 |
+
* CERBER_LOG_FACILITY optional, use to specify what type of program is logging the messages
|
2026 |
+
*
|
2027 |
+
* */
|
2028 |
+
function cerber_file_log( $user_login, $ip ) {
|
2029 |
+
if ( defined( 'CERBER_FAIL_LOG' ) ) {
|
2030 |
+
if ( $log = @fopen( CERBER_FAIL_LOG, 'a' ) ) {
|
2031 |
+
$pid = absint( @posix_getpid() );
|
2032 |
+
@fwrite( $log, date( 'M j H:i:s ' ) . $_SERVER['SERVER_NAME'] . ' Cerber(' . $_SERVER['HTTP_HOST'] . ')[' . $pid . ']: Authentication failure for ' . $user_login . ' from ' . $ip . "\n" );
|
2033 |
+
@fclose( $log );
|
2034 |
+
}
|
2035 |
+
} else {
|
2036 |
+
@openlog( 'Cerber(' . $_SERVER['HTTP_HOST'] . ')', LOG_NDELAY | LOG_PID, defined( 'CERBER_LOG_FACILITY' ) ? CERBER_LOG_FACILITY : LOG_AUTH );
|
2037 |
+
@syslog( LOG_NOTICE, 'Authentication failure for ' . $user_login . ' from ' . $ip );
|
2038 |
+
@closelog();
|
2039 |
+
}
|
2040 |
+
}
|
2041 |
+
|
2042 |
+
/*
|
2043 |
+
Return wildcard - string like subnet Class C
|
2044 |
+
*/
|
2045 |
+
function cerber_get_subnet( $ip ) {
|
2046 |
+
return preg_replace( '/\.\d{1,3}$/', '.*', $ip );
|
2047 |
+
}
|
2048 |
+
|
2049 |
+
/*
|
2050 |
+
Check if given IP address or wildcard or CIDR is valid
|
2051 |
+
*/
|
2052 |
+
function cerber_is_ip_or_net( $ip ) {
|
2053 |
+
if ( @inet_pton( $ip ) ) {
|
2054 |
+
return true;
|
2055 |
+
}
|
2056 |
+
// WILDCARD: 192.168.1.*
|
2057 |
+
$ip = str_replace( '*', '0', $ip );
|
2058 |
+
if ( @inet_pton( $ip ) ) {
|
2059 |
+
return true;
|
2060 |
+
}
|
2061 |
+
// CIDR: 192.168.1/24
|
2062 |
+
if ( strpos( $ip, '/' ) ) {
|
2063 |
+
$cidr = explode( '/', $ip );
|
2064 |
+
$net = $cidr[0];
|
2065 |
+
$mask = absint( $cidr[1] );
|
2066 |
+
$dots = substr_count( $net, '.' );
|
2067 |
+
if ( $dots < 3 ) {
|
2068 |
+
if ( $dots == 1 ) {
|
2069 |
+
$net .= '.0.0';
|
2070 |
+
} elseif ( $dots == 2 ) {
|
2071 |
+
$net .= '.0';
|
2072 |
+
}
|
2073 |
+
}
|
2074 |
+
if ( ! cerber_is_ipv4( $net ) ) {
|
2075 |
+
return false;
|
2076 |
+
}
|
2077 |
+
if ( ! is_numeric( $mask ) ) {
|
2078 |
+
return false;
|
2079 |
+
}
|
2080 |
+
|
2081 |
+
return true;
|
2082 |
+
}
|
2083 |
+
|
2084 |
+
return false;
|
2085 |
+
}
|
2086 |
+
|
2087 |
+
/**
|
2088 |
+
* Tries to recognize single IP address or IP v4 range (with dash) in a given string.
|
2089 |
+
*
|
2090 |
+
* @param string $string String to recognize IP address in
|
2091 |
+
*
|
2092 |
+
* @return array|bool|string Return single IP address or wildcard or CIDR as a string, and IP range as an array.
|
2093 |
+
*/
|
2094 |
+
function cerber_parse_ip( $string = '' ) {
|
2095 |
+
$string = trim( $string );
|
2096 |
+
if ( cerber_is_ip_or_net( $string ) ) {
|
2097 |
+
return $string;
|
2098 |
+
}
|
2099 |
+
$explode = explode( '-', $string );
|
2100 |
+
if ( ! is_array( $explode ) || ! $explode ) {
|
2101 |
+
return false;
|
2102 |
+
}
|
2103 |
+
$range = array();
|
2104 |
+
$count = 0;
|
2105 |
+
foreach ( $explode as $ip ) {
|
2106 |
+
$ip = trim( $ip );
|
2107 |
+
if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
|
2108 |
+
$range[] = $ip;
|
2109 |
+
$count ++;
|
2110 |
+
if ( $count >= 2 ) {
|
2111 |
+
break;
|
2112 |
+
}
|
2113 |
+
}
|
2114 |
+
}
|
2115 |
+
if ( count( $range ) < 2 ) {
|
2116 |
+
return false;
|
2117 |
+
}
|
2118 |
+
if ( ip2long( $range[1] ) <= ip2long( $range[0] ) ) {
|
2119 |
+
return false;
|
2120 |
+
}
|
2121 |
+
|
2122 |
+
return array(
|
2123 |
+
'range' => $range[0] . ' - ' . $range[1],
|
2124 |
+
'begin_ip' => $range[0],
|
2125 |
+
'end_ip' => $range[1],
|
2126 |
+
'begin' => ip2long( $range[0] ),
|
2127 |
+
'end' => ip2long( $range[1] ),
|
2128 |
+
);
|
2129 |
+
}
|
2130 |
+
|
2131 |
+
/**
|
2132 |
+
* Convert a network wildcard string like x.x.x.* to an IP v4 range
|
2133 |
+
*
|
2134 |
+
* @param $wildcard string
|
2135 |
+
*
|
2136 |
+
* @return array|bool|string False if no wildcard found, otherwise result of cerber_parse_ip()
|
2137 |
+
*/
|
2138 |
+
function cerber_wildcard2range( $wildcard = '' ) {
|
2139 |
+
$begin = str_replace( '*', '0', $wildcard );
|
2140 |
+
$end = str_replace( '*', '255', $wildcard );
|
2141 |
+
if ( ! cerber_is_ipv4( $begin ) ) {
|
2142 |
+
return false;
|
2143 |
+
}
|
2144 |
+
if ( ! cerber_is_ipv4( $end ) ) {
|
2145 |
+
return false;
|
2146 |
+
}
|
2147 |
+
|
2148 |
+
return cerber_parse_ip( $begin . ' - ' . $end );
|
2149 |
+
}
|
2150 |
+
|
2151 |
+
/**
|
2152 |
+
* Convert a CIDR to an IP v4 range
|
2153 |
+
*
|
2154 |
+
* @param $cidr string
|
2155 |
+
*
|
2156 |
+
* @return array|bool|string
|
2157 |
+
*/
|
2158 |
+
function cerber_cidr2range( $cidr = '' ) {
|
2159 |
+
if ( ! strpos( $cidr, '/' ) ) {
|
2160 |
+
return false;
|
2161 |
+
}
|
2162 |
+
$cidr = explode( '/', $cidr );
|
2163 |
+
$net = $cidr[0];
|
2164 |
+
$mask = absint( $cidr[1] );
|
2165 |
+
$dots = substr_count( $net, '.' );
|
2166 |
+
if ( $dots < 3 ) { // not completed CIDR
|
2167 |
+
if ( $dots == 1 ) {
|
2168 |
+
$net .= '.0.0';
|
2169 |
+
} elseif ( $dots == 2 ) {
|
2170 |
+
$net .= '.0';
|
2171 |
+
}
|
2172 |
+
}
|
2173 |
+
if ( ! cerber_is_ipv4( $net ) ) {
|
2174 |
+
return false;
|
2175 |
+
}
|
2176 |
+
if ( ! is_numeric( $mask ) ) {
|
2177 |
+
return false;
|
2178 |
+
}
|
2179 |
+
$begin = long2ip( ( ip2long( $net ) ) & ( ( - 1 << ( 32 - (int) $mask ) ) ) );
|
2180 |
+
$end = long2ip( ( ip2long( $net ) ) + pow( 2, ( 32 - (int) $mask ) ) - 1 );
|
2181 |
+
|
2182 |
+
return cerber_parse_ip( $begin . ' - ' . $end );
|
2183 |
+
}
|
2184 |
+
|
2185 |
+
/**
|
2186 |
+
* Try to recognize an IP range or a single IP in a string.
|
2187 |
+
*
|
2188 |
+
* @param $string string Network wildcard, CIDR or IP range.
|
2189 |
+
*
|
2190 |
+
* @return array|bool|string
|
2191 |
+
*/
|
2192 |
+
function cerber_any2range( $string = '' ) {
|
2193 |
+
// Do not change the order!
|
2194 |
+
$ret = cerber_wildcard2range( $string );
|
2195 |
+
if ( ! $ret ) {
|
2196 |
+
$ret = cerber_cidr2range( $string );
|
2197 |
+
}
|
2198 |
+
if ( ! $ret ) {
|
2199 |
+
$ret = cerber_parse_ip( $string ); // must be last due to checking for cidr and wildcard
|
2200 |
+
}
|
2201 |
+
|
2202 |
+
return $ret;
|
2203 |
+
}
|
2204 |
+
|
2205 |
+
/*
|
2206 |
+
Check for given IP address or subnet belong to this session.
|
2207 |
+
*/
|
2208 |
+
function cerber_is_myip( $ip ) {
|
2209 |
+
global $wp_cerber;
|
2210 |
+
if ( ! is_string( $ip ) ) {
|
2211 |
+
return false;
|
2212 |
+
}
|
2213 |
+
$remote_ip = $wp_cerber->getRemoteIp();
|
2214 |
+
if ( $ip == $remote_ip ) {
|
2215 |
+
return true;
|
2216 |
+
}
|
2217 |
+
if ( $ip == cerber_get_subnet( $remote_ip ) ) {
|
2218 |
+
return true;
|
2219 |
+
}
|
2220 |
+
|
2221 |
+
return false;
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
function cerber_is_ip_in_range( $range, $ip = null ) {
|
2225 |
+
global $wp_cerber;
|
2226 |
+
if ( ! is_array( $range ) ) {
|
2227 |
+
return false;
|
2228 |
+
}
|
2229 |
+
if ( ! $ip ) {
|
2230 |
+
$ip = $wp_cerber->getRemoteIp();
|
2231 |
+
}
|
2232 |
+
$long = ip2long( $ip );
|
2233 |
+
if ( $range['begin'] <= $long && $long <= $range['end'] ) {
|
2234 |
+
return true;
|
2235 |
+
}
|
2236 |
+
|
2237 |
+
return false;
|
2238 |
+
}
|
2239 |
+
|
2240 |
+
/*
|
2241 |
+
Display 404 page to bump bots and bad guys
|
2242 |
+
*/
|
2243 |
+
function cerber_404_page() {
|
2244 |
+
global $wp_query, $wp_cerber;
|
2245 |
+
status_header( '404' );
|
2246 |
+
$wp_query->set_404();
|
2247 |
+
|
2248 |
+
if ( 0 == $wp_cerber->getSettings( 'page404' ) ) {
|
2249 |
+
$template = apply_filters( 'cerber_404_template', get_404_template() );
|
2250 |
+
if ( @file_exists( $template ) ) {
|
2251 |
+
include( $template );
|
2252 |
+
exit;
|
2253 |
+
}
|
2254 |
+
}
|
2255 |
+
|
2256 |
+
header( 'HTTP/1.0 404 Not Found', true, 404 );
|
2257 |
+
echo '<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL ' . esc_url( $_SERVER['REQUEST_URI'] ) . ' was not found on this server.</p></body></html>';
|
2258 |
+
exit;
|
2259 |
+
}
|
2260 |
+
|
2261 |
+
// Citadel mode -------------------------------------------------------------------------------------
|
2262 |
+
|
2263 |
+
function cerber_enable_citadel() {
|
2264 |
+
global $wp_cerber;
|
2265 |
+
if ( get_transient( 'cerber_citadel' ) ) {
|
2266 |
+
return;
|
2267 |
+
}
|
2268 |
+
set_transient( 'cerber_citadel', true, $wp_cerber->getSettings( 'ciduration' ) * 60 );
|
2269 |
+
cerber_log( 12 );
|
2270 |
+
|
2271 |
+
// Notify admin
|
2272 |
+
if ( $wp_cerber->getSettings( 'cinotify' ) ) {
|
2273 |
+
cerber_send_notify( 'citadel' );
|
2274 |
+
}
|
2275 |
+
}
|
2276 |
+
|
2277 |
+
function cerber_disable_citadel() {
|
2278 |
+
delete_transient( 'cerber_citadel' );
|
2279 |
+
}
|
2280 |
+
|
2281 |
+
function cerber_is_citadel() {
|
2282 |
+
if ( get_transient( 'cerber_citadel' ) ) {
|
2283 |
+
return true;
|
2284 |
+
}
|
2285 |
+
|
2286 |
+
return false;
|
2287 |
+
}
|
2288 |
+
|
2289 |
+
// Hardening -------------------------------------------------------------------------------------
|
2290 |
+
|
2291 |
+
//if (!cerber_acl_check(cerber_get_ip(),'W') && false) {
|
2292 |
+
|
2293 |
+
/*
|
2294 |
+
if ($hardening['ping']) {
|
2295 |
+
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback' );
|
2296 |
+
function remove_xmlrpc_pingback( $methods ) {
|
2297 |
+
unset($methods['pingback.ping']);
|
2298 |
+
unset($methods['pingback.extensions.getPingbacks']);
|
2299 |
+
return $methods;
|
2300 |
+
}
|
2301 |
+
add_filter( 'wp_headers', 'remove_pingback_header' );
|
2302 |
+
function remove_pingback_header( $headers ) {
|
2303 |
+
unset( $headers['X-Pingback'] );
|
2304 |
+
return $headers;
|
2305 |
+
}
|
2306 |
+
}
|
2307 |
+
*/
|
2308 |
+
//pingback_ping();
|
2309 |
+
|
2310 |
+
|
2311 |
+
/*
|
2312 |
+
// Remove shortlink from HEAD <link rel='shortlink' href='http://адрес-сайта/?p=45' />
|
2313 |
+
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );
|
2314 |
+
*/
|
2315 |
+
|
2316 |
+
/**
|
2317 |
+
*
|
2318 |
+
* Send notification letter
|
2319 |
+
*
|
2320 |
+
* @param string $type Notification type
|
2321 |
+
* @param string $msg Additional message
|
2322 |
+
* @param string $ip Remote IP address, if applicable
|
2323 |
+
*
|
2324 |
+
* @return bool
|
2325 |
+
*/
|
2326 |
+
function cerber_send_notify( $type = '', $msg = '', $ip = '' ) {
|
2327 |
+
global $wpdb, $wp_cerber;
|
2328 |
+
if ( ! $type ) {
|
2329 |
+
return false;
|
2330 |
+
}
|
2331 |
+
|
2332 |
+
if ( $type == 'lockout' && !is_super_admin()) {
|
2333 |
+
$rate = absint( $wp_cerber->getSettings( 'emailrate' ) );
|
2334 |
+
if ( $rate ) {
|
2335 |
+
$last = get_transient( 'cerber_last' );
|
2336 |
+
$period = 60 * 60; // per hour
|
2337 |
+
if ( $last ) {
|
2338 |
+
if ( $last > ( time() - $period / $rate ) ) {
|
2339 |
+
return false;
|
2340 |
+
}
|
2341 |
+
}
|
2342 |
+
set_transient( 'cerber_last', time(), $period );
|
2343 |
+
}
|
2344 |
+
}
|
2345 |
+
|
2346 |
+
$to = cerber_get_email();
|
2347 |
+
|
2348 |
+
$subj = '[' . get_option( 'blogname' ) . '] ' . __( 'WP Cerber notify', 'wp-cerber' ) . ': ';
|
2349 |
+
$body = '';
|
2350 |
+
|
2351 |
+
switch ( $type ) {
|
2352 |
+
case 'citadel':
|
2353 |
+
$max = $wpdb->get_var( 'SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity = 7' );
|
2354 |
+
if ($max) {
|
2355 |
+
$last_date = cerber_date( $max );
|
2356 |
+
$last = $wpdb->get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity = 7' );
|
2357 |
+
}
|
2358 |
+
else $last = null;
|
2359 |
+
|
2360 |
+
if ( ! $last ) { // workaround for the empty log table
|
2361 |
+
$last = new stdClass();
|
2362 |
+
$last->ip = '127.0.0.1';
|
2363 |
+
$last->user_login = 'test';
|
2364 |
+
}
|
2365 |
+
|
2366 |
+
$subj .= __( 'Citadel mode is activated', 'wp-cerber' );
|
2367 |
+
|
2368 |
+
$body = sprintf( __( 'Citadel mode is activated after %d failed login attempts in %d minutes.', 'wp-cerber' ), $wp_cerber->getSettings( 'cilimit' ), $wp_cerber->getSettings( 'ciperiod' ) ) . "\n\n";
|
2369 |
+
$body .= sprintf( __( 'Last failed attempt was at %s from IP %s with user login: %s.', 'wp-cerber' ), $last_date, $last->ip, $last->user_login ) . "\n\n";
|
2370 |
+
$body .= __( 'View activity in dashboard', 'wp-cerber' ) . ': ' . cerber_admin_link( 'activity' ) . "\n\n";
|
2371 |
+
//$body .= __('Change notification settings','wp-cerber').': '.cerber_admin_link();
|
2372 |
+
break;
|
2373 |
+
case 'lockout':
|
2374 |
+
$max = $wpdb->get_var( 'SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (10,11)' );
|
2375 |
+
if ($max){
|
2376 |
+
$last_date = cerber_date( $max );
|
2377 |
+
$last = $wpdb->get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity IN (10,11)' );
|
2378 |
+
}
|
2379 |
+
else $last = null;
|
2380 |
+
if ( ! $last ) { // workaround for the empty log table
|
2381 |
+
$last = new stdClass();
|
2382 |
+
$last->ip = '127.0.0.1';
|
2383 |
+
$last->user_login = 'test';
|
2384 |
+
}
|
2385 |
+
|
2386 |
+
//if ( ! $active = $wpdb->get_var( 'SELECT count(ip) FROM ' . CERBER_BLOCKS_TABLE ) ) {
|
2387 |
+
if ( ! $active = cerber_blocked_num() ) {
|
2388 |
+
$active = 0;
|
2389 |
+
}
|
2390 |
+
//if ( $ip && ( $block = cerber_get_block( $ip ) ) ) {
|
2391 |
+
if ( $last->ip && ( $block = cerber_get_block( $last->ip ) ) ) {
|
2392 |
+
$reason = $block->reason;
|
2393 |
+
}
|
2394 |
+
else {
|
2395 |
+
$reason = __( 'unspecified', 'wp-cerber' );
|
2396 |
+
}
|
2397 |
+
|
2398 |
+
$subj .= __( 'Number of lockouts is increasing', 'wp-cerber' ) . ' (' . $active . ')';
|
2399 |
+
|
2400 |
+
$body = __( 'Number of active lockouts', 'wp-cerber' ) . ': ' . $active . "\n\n";
|
2401 |
+
$body .= sprintf( __( 'Last lockout was added: %s for IP %s', 'wp-cerber' ), $last_date, $last->ip . ' (' . @gethostbyaddr( $last->ip ) . ')' ) . "\n\n";
|
2402 |
+
$body .= __( 'Reason', 'wp-cerber' ) . ': ' . strip_tags($reason) . "\n\n";
|
2403 |
+
$body .= __( 'View activity for this IP', 'wp-cerber' ) . ': ' . cerber_admin_link( 'activity' ) . '&filter_ip=' . $last->ip . "\n\n";
|
2404 |
+
$body .= __( 'View lockouts in dashboard', 'wp-cerber' ) . ': ' . cerber_admin_link( 'lockouts' ) . "\n\n";
|
2405 |
+
break;
|
2406 |
+
case 'new_version':
|
2407 |
+
$subj = __( 'A new version of WP Cerber is available to install', 'wp-cerber' );
|
2408 |
+
$body = __( 'Hi!', 'wp-cerber' ) . "\n\n";
|
2409 |
+
$body .= __( 'A new version of WP Cerber is available to install', 'wp-cerber' ) . "\n\n";
|
2410 |
+
$body .= __( 'Website', 'wp-cerber' ) . ': ' . get_bloginfo( 'name' ) . "\n";
|
2411 |
+
break;
|
2412 |
+
case 'shutdown':
|
2413 |
+
$subj = '[' . get_option( 'blogname' ) . '] ' . __( 'The WP Cerber security plugin has been deactivated', 'wp-cerber' );
|
2414 |
+
$body .= __( 'The WP Cerber security plugin has been deactivated', 'wp-cerber' ) . "\n\n";
|
2415 |
+
if ( ! is_user_logged_in() ) {
|
2416 |
+
$u = __( 'Not logged in', 'wp-cerber' );
|
2417 |
+
} else {
|
2418 |
+
$user = wp_get_current_user();
|
2419 |
+
$u = $user->display_name;
|
2420 |
+
}
|
2421 |
+
$body .= __( 'Website', 'wp-cerber' ) . ': ' . get_bloginfo( 'name' ) . "\n";
|
2422 |
+
$body .= __( 'By user', 'wp-cerber' ) . ': ' . $u . "\n";
|
2423 |
+
$body .= __( 'From IP address', 'wp-cerber' ) . ': ' . $wp_cerber->getRemoteIp() . "\n";
|
2424 |
+
$whois = cerber_ip_whois_info( $wp_cerber->getRemoteIp() );
|
2425 |
+
if ( ! empty( $whois['data']['country'] ) ) {
|
2426 |
+
$body .= __( 'From country', 'wp-cerber' ) . ': ' . cerber_country_name( $whois['data']['country'] );
|
2427 |
+
}
|
2428 |
+
break;
|
2429 |
+
case 'activated':
|
2430 |
+
$subj = '[' . get_option( 'blogname' ) . '] ' . __( 'The WP Cerber security plugin is now active', 'wp-cerber' );
|
2431 |
+
$body .= __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . "\n\n";
|
2432 |
+
$body .= __( 'Change notification settings', 'wp-cerber' ) . ': ' . cerber_admin_link('notifications') . "\n\n";
|
2433 |
+
$body .= 'Be in touch with the developer. Subscribe to Cerber\'s newsletter: http://wpcerber.com/subscribe-newsletter/';
|
2434 |
+
//$body .= get_bloginfo( 'name' );
|
2435 |
+
break;
|
2436 |
+
case 'newlurl':
|
2437 |
+
$subj .= __( 'New Custom login URL', 'wp-cerber' );
|
2438 |
+
$body .= $msg;
|
2439 |
+
break;
|
2440 |
+
case 'subs':
|
2441 |
+
$subj .= __( 'A new activity has been recorded', 'wp-cerber' );
|
2442 |
+
$body = __( 'A new activity has been recorded', 'wp-cerber' ) . "\n\n";
|
2443 |
+
$body .= $msg;
|
2444 |
+
break;
|
2445 |
+
}
|
2446 |
+
|
2447 |
+
$body_filtered = apply_filters( 'cerber_notify_body', $body, array( 'type' => $type,
|
2448 |
+
'IP' => $ip,
|
2449 |
+
'to' => $to,
|
2450 |
+
'subject' => $subj
|
2451 |
+
) );
|
2452 |
+
if ( $body_filtered && is_string( $body_filtered ) ) {
|
2453 |
+
$body = $body_filtered;
|
2454 |
+
} // correct body only allowed
|
2455 |
+
|
2456 |
+
//$body .= __('This message was sent by','wp-cerber').' <a href="http://wpcerber.com">WP Cerber security plugin</a>.'."\n";
|
2457 |
+
$body .= "\n\n\n" . __( 'This message was sent by', 'wp-cerber' ) . " WP Cerber.\n";
|
2458 |
+
$body .= 'http://wpcerber.com';
|
2459 |
+
|
2460 |
+
if ( $to && $subj && $body ) {
|
2461 |
+
cerber_pb_send($subj, $body);
|
2462 |
+
$result = wp_mail( $to, $subj, $body );
|
2463 |
+
}
|
2464 |
+
else {
|
2465 |
+
$result = false;
|
2466 |
+
}
|
2467 |
+
|
2468 |
+
$params = array( 'type' => $type, 'IP' => $ip, 'to' => $to, 'subject' => $subj );
|
2469 |
+
if ( $result ) {
|
2470 |
+
do_action( 'cerber_notify_sent', $body, $params );
|
2471 |
+
}
|
2472 |
+
else {
|
2473 |
+
do_action( 'cerber_notify_fail', $body, $params );
|
2474 |
+
}
|
2475 |
+
|
2476 |
+
return $result;
|
2477 |
+
}
|
2478 |
+
|
2479 |
+
|
2480 |
+
/*
|
2481 |
+
TODO: Return themed page with message instead of login form.
|
2482 |
+
*/
|
2483 |
+
/*
|
2484 |
+
function cerber_info_page(){
|
2485 |
+
global $wp_query;
|
2486 |
+
$wp_query->is_page = true;
|
2487 |
+
add_filter('the_content', 'cerber_info_page_content');
|
2488 |
+
if(!include(TEMPLATEPATH.'/page.php')) { // wow, theme does not have page.php file?
|
2489 |
+
echo '<html><head><title>Login not permited</title></head><body><h1>Login not permited</h1><p>You not allowed to login to this site.</p></body></html>';
|
2490 |
+
}
|
2491 |
+
exit;
|
2492 |
+
}
|
2493 |
+
function cerber_info_page_content(){
|
2494 |
+
return 'Login not permited.';
|
2495 |
+
}
|
2496 |
+
*/
|
2497 |
+
|
2498 |
+
// Maintenance routines ----------------------------------------------------------------
|
2499 |
+
|
2500 |
+
add_action( 'cerber_hourly', 'cerber_do_hourly' );
|
2501 |
+
function cerber_do_hourly($force = false) {
|
2502 |
+
global $wpdb, $wp_cerber;
|
2503 |
+
|
2504 |
+
if ( !$force && get_site_transient( 'cerber_multisite' ) ) {
|
2505 |
+
return;
|
2506 |
+
}
|
2507 |
+
set_site_transient( 'cerber_multisite', 'executed', 3600 );
|
2508 |
+
|
2509 |
+
$days = absint( $wp_cerber->getSettings( 'keeplog' ) );
|
2510 |
+
$time = time();
|
2511 |
+
|
2512 |
+
if ( $days > 0 ) {
|
2513 |
+
$wpdb->query( 'DELETE FROM ' . CERBER_LOG_TABLE . ' WHERE stamp < ' . ( $time - $days * 24 * 3600 ) );
|
2514 |
+
}
|
2515 |
+
if ( $wp_cerber->getSettings( 'cerberlab' ) ) {
|
2516 |
+
cerber_push_lab();
|
2517 |
+
}
|
2518 |
+
|
2519 |
+
$wpdb->query( 'DELETE FROM ' . CERBER_LAB_IP_TABLE . ' WHERE expires < ' . $time );
|
2520 |
+
|
2521 |
+
if ( $wp_cerber->getSettings( 'trashafter-enabled') && absint($wp_cerber->getSettings('trashafter'))) {
|
2522 |
+
$list = get_comments( array( 'status' => 'spam' ) );
|
2523 |
+
if ( $list ) {
|
2524 |
+
$time = time() - DAY_IN_SECONDS * absint($wp_cerber->getSettings( 'trashafter' ));
|
2525 |
+
foreach ( $list as $item ) {
|
2526 |
+
if ( $time > strtotime( $item->comment_date_gmt ) ) {
|
2527 |
+
wp_trash_comment( $item->comment_ID );
|
2528 |
+
}
|
2529 |
+
}
|
2530 |
+
}
|
2531 |
+
}
|
2532 |
+
|
2533 |
+
cerber_up_data();
|
2534 |
+
}
|
2535 |
+
|
2536 |
+
add_action( 'cerber_daily', 'cerber_do_daily' );
|
2537 |
+
function cerber_do_daily() {
|
2538 |
+
global $wpdb, $wp_cerber;
|
2539 |
+
|
2540 |
+
cerber_do_hourly( true );
|
2541 |
+
|
2542 |
+
$time = time();
|
2543 |
+
|
2544 |
+
if ( $wp_cerber->getSettings( 'cerberlab' ) ) {
|
2545 |
+
lab_check_nodes();
|
2546 |
+
}
|
2547 |
+
|
2548 |
+
lab_trunc_push();
|
2549 |
+
|
2550 |
+
$wpdb->query( 'DELETE FROM ' . CERBER_LAB_NET_TABLE . ' WHERE expires < ' . $time );
|
2551 |
+
|
2552 |
+
$wpdb->query( 'OPTIMIZE TABLE ' . CERBER_LOG_TABLE );
|
2553 |
+
$wpdb->query( 'OPTIMIZE TABLE ' . CERBER_ACL_TABLE );
|
2554 |
+
$wpdb->query( 'OPTIMIZE TABLE ' . CERBER_BLOCKS_TABLE );
|
2555 |
+
$wpdb->query( 'OPTIMIZE TABLE ' . CERBER_LAB_TABLE );
|
2556 |
+
$wpdb->query( 'OPTIMIZE TABLE ' . CERBER_LAB_IP_TABLE );
|
2557 |
+
$wpdb->query( 'OPTIMIZE TABLE ' . CERBER_LAB_NET_TABLE );
|
2558 |
+
|
2559 |
+
lab_validate_key();
|
2560 |
+
}
|
2561 |
+
|
2562 |
+
/*
|
2563 |
+
Return system ID of the WP Cerber plugin
|
2564 |
+
*/
|
2565 |
+
function cerber_plug_in() {
|
2566 |
+
return plugin_basename( __FILE__ );
|
2567 |
+
}
|
2568 |
+
|
2569 |
+
/*
|
2570 |
+
Return plugin info
|
2571 |
+
*/
|
2572 |
+
function cerber_plugin_data() {
|
2573 |
+
return get_plugin_data( __FILE__ );
|
2574 |
+
}
|
2575 |
+
|
2576 |
+
/*
|
2577 |
+
Return main plugin file
|
2578 |
+
*/
|
2579 |
+
function cerber_plugin_file() {
|
2580 |
+
return __FILE__;
|
2581 |
+
}
|
2582 |
+
|
2583 |
+
/*
|
2584 |
+
Format date
|
2585 |
+
*/
|
2586 |
+
function cerber_date( $timestamp ) {
|
2587 |
+
global $wp_cerber;
|
2588 |
+
$timestamp = absint( $timestamp );
|
2589 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
2590 |
+
if ($df = $wp_cerber->getSettings('dateformat')){
|
2591 |
+
return date_i18n( $df, $gmt_offset + $timestamp );
|
2592 |
+
}
|
2593 |
+
else {
|
2594 |
+
$tf = get_option( 'time_format' );
|
2595 |
+
$df = get_option( 'date_format' );
|
2596 |
+
return date_i18n( $df, $gmt_offset + $timestamp ) . ', ' . date_i18n( $tf, $gmt_offset + $timestamp );
|
2597 |
+
}
|
2598 |
+
}
|
2599 |
+
|
2600 |
+
/**
|
2601 |
+
* Log activity
|
2602 |
+
*
|
2603 |
+
* @param int $activity Activity ID
|
2604 |
+
* @param string $login Login used or any additional information
|
2605 |
+
* @param int $user_id User ID
|
2606 |
+
* @param null $ip IP Address
|
2607 |
+
*
|
2608 |
+
* @return false|int
|
2609 |
+
* @since 3.0
|
2610 |
+
*/
|
2611 |
+
function cerber_log( $activity, $login = '', $user_id = 0, $ip = null ) {
|
2612 |
+
global $wpdb, $wp_cerber;
|
2613 |
+
|
2614 |
+
//$wp_cerber->setProcessed();
|
2615 |
+
|
2616 |
+
if ( empty( $ip ) ) {
|
2617 |
+
$ip = $wp_cerber->getRemoteIp();
|
2618 |
+
}
|
2619 |
+
if ( cerber_is_ipv4( $ip ) ) {
|
2620 |
+
$ip_long = ip2long( $ip );
|
2621 |
+
}
|
2622 |
+
else {
|
2623 |
+
$ip_long = 1;
|
2624 |
+
}
|
2625 |
+
if ( empty( $user_id ) ) {
|
2626 |
+
$user_id = 0;
|
2627 |
+
}
|
2628 |
+
|
2629 |
+
$stamp = microtime( true );
|
2630 |
+
|
2631 |
+
$pos = strpos($_SERVER['REQUEST_URI'],'?');
|
2632 |
+
if ($pos) {
|
2633 |
+
$path = substr( $_SERVER['REQUEST_URI'], 0, $pos );
|
2634 |
+
}
|
2635 |
+
else {
|
2636 |
+
$path = $_SERVER['REQUEST_URI'];
|
2637 |
+
}
|
2638 |
+
$url = strip_tags($_SERVER['HTTP_HOST'] . $path);
|
2639 |
+
|
2640 |
+
$why = 0;
|
2641 |
+
if ($activity != 10 && $activity != 11) {
|
2642 |
+
$why = cerber_get_status($ip);
|
2643 |
+
}
|
2644 |
+
|
2645 |
+
$details = $why .'|0|0|0|'. $url;
|
2646 |
+
|
2647 |
+
$ret = $wpdb->query( $wpdb->prepare( 'INSERT INTO ' . CERBER_LOG_TABLE . ' (ip, ip_long, user_login, user_id, stamp, activity, session_id, details) VALUES (%s,%d,%s,%d,%f,%d,%s,%s)', $ip, $ip_long, $login, $user_id, $stamp, $activity, $wp_cerber->getSessionID(), $details ) );
|
2648 |
+
if ( ! $ret ) {
|
2649 |
+
// workaround for a WP bugs like this: WP silently doesn't not insert a row into a table
|
2650 |
+
// https://core.trac.wordpress.org/ticket/32315
|
2651 |
+
$ret = $wpdb->insert( CERBER_LOG_TABLE, array(
|
2652 |
+
'ip' => $ip,
|
2653 |
+
'ip_long' => $ip_long,
|
2654 |
+
'user_login' => $login,
|
2655 |
+
'user_id' => $user_id,
|
2656 |
+
'stamp' => $stamp,
|
2657 |
+
'activity' => $activity,
|
2658 |
+
'session_id' => $wp_cerber->getSessionID(),
|
2659 |
+
'details' => $details,
|
2660 |
+
), array( '%s', '%d', '%s', '%d', '%f', '%d' ) );
|
2661 |
+
}
|
2662 |
+
|
2663 |
+
if ( ! $ret ) {
|
2664 |
+
cerber_watchdog();
|
2665 |
+
}
|
2666 |
+
|
2667 |
+
// Subscriptions - notifications for admin ---------------------------------------------------
|
2668 |
+
|
2669 |
+
$subs = get_site_option( '_cerber_subs', null );
|
2670 |
+
|
2671 |
+
if (!empty($subs)) {
|
2672 |
+
foreach ( $subs as $hash => $sub ) {
|
2673 |
+
|
2674 |
+
// Loop through parameters
|
2675 |
+
if ( ! empty( $sub[1] ) && $sub[1] != $user_id ) {
|
2676 |
+
continue;
|
2677 |
+
}
|
2678 |
+
if ( ! empty( $sub[3] ) && ( $ip_long < $sub[2] || $sub[3] < $ip_long ) ) {
|
2679 |
+
continue;
|
2680 |
+
}
|
2681 |
+
if ( ! empty( $sub[4] ) && $sub[4] != $ip ) {
|
2682 |
+
continue;
|
2683 |
+
}
|
2684 |
+
if ( ! empty( $sub[5] ) && $sub[5] != $login ) {
|
2685 |
+
continue;
|
2686 |
+
}
|
2687 |
+
if ( ! empty( $sub[6] ) && (false === strpos( $ip, $sub[6] )) && (false === mb_strpos( $login, $sub[6] )) ) {
|
2688 |
+
continue;
|
2689 |
+
}
|
2690 |
+
|
2691 |
+
// Some parameter(s) matched, send notification
|
2692 |
+
|
2693 |
+
$labels = cerber_get_labels( 'activity' );
|
2694 |
+
|
2695 |
+
$msg = __( 'Activity', 'wp-cerber' ) . ': ' . $labels[$activity] . "\n\n";
|
2696 |
+
$msg .= __( 'IP', 'wp-cerber' ) . ': ' . $ip . "\n\n";
|
2697 |
+
|
2698 |
+
if ( $user_id ) {
|
2699 |
+
$u = get_userdata( $user_id );
|
2700 |
+
$msg .= __( 'User', 'wp-cerber' ) . ': ' . $u->display_name . "\n\n";
|
2701 |
+
}
|
2702 |
+
|
2703 |
+
if ( $login ) {
|
2704 |
+
$msg .= __( 'Username used', 'wp-cerber' ) . ': ' . $login . "\n\n";
|
2705 |
+
}
|
2706 |
+
|
2707 |
+
if ( ! empty( $sub['6'] ) ) {
|
2708 |
+
$msg .= __( 'Search string', 'wp-cerber' ) . ': ' . $sub['6'] . "\n\n";
|
2709 |
+
}
|
2710 |
+
|
2711 |
+
$args = cerber_subscribe_params();
|
2712 |
+
$i = 0; $str = '';
|
2713 |
+
foreach ($args as $arg => $val){
|
2714 |
+
$str .= '&'.$arg.'='.$sub[$i];
|
2715 |
+
$i++;
|
2716 |
+
}
|
2717 |
+
|
2718 |
+
$link = cerber_admin_link( 'activity' ).$str;
|
2719 |
+
|
2720 |
+
$msg .= __( 'View activity in dashboard', 'wp-cerber' ) . ': ' . $link;
|
2721 |
+
$msg .= "\n\n" . __( 'To unsubscribe click here', 'wp-cerber' ) .': '. cerber_admin_link( 'activity' ).'&unsubscribeme='.$hash;
|
2722 |
+
|
2723 |
+
cerber_send_notify( 'subs', $msg, $ip );
|
2724 |
+
|
2725 |
+
break; // Just one notification letter per event
|
2726 |
+
}
|
2727 |
+
}
|
2728 |
+
|
2729 |
+
if ( $activity == 40 && $wp_cerber->getSettings( 'cerberlab' ) ) {
|
2730 |
+
lab_save_push( $ip, $activity, '' );
|
2731 |
+
}
|
2732 |
+
|
2733 |
+
return $ret;
|
2734 |
+
}
|
2735 |
+
|
2736 |
+
function cerber_get_log( $args ) {
|
2737 |
+
global $wpdb, $wp_cerber;
|
2738 |
+
|
2739 |
+
$locked = $wpdb->get_var('SELECT count(ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN (10,11) AND stamp > '.(time() - 24 * 3600));
|
2740 |
+
|
2741 |
+
}
|
2742 |
+
|
2743 |
+
function cerber_count_log($activity = array()) {
|
2744 |
+
global $wpdb;
|
2745 |
+
|
2746 |
+
// TODO: replace with SELECT COUNT(DISTINCT session_id)
|
2747 |
+
$ret = $wpdb->get_var('SELECT COUNT(ip) FROM '. CERBER_LOG_TABLE .' WHERE activity IN ('.implode(',',$activity).') AND stamp > '.(time() - 24 * 3600));
|
2748 |
+
if (!$ret) $ret = 0;
|
2749 |
+
|
2750 |
+
return $ret;
|
2751 |
+
}
|
2752 |
+
|
2753 |
+
/**
|
2754 |
+
* Create a set of parameters for using it in Subscriptions
|
2755 |
+
* The keys are used to built an URL. Values to calculate a hash.
|
2756 |
+
*
|
2757 |
+
* @return array The set of parameters
|
2758 |
+
*/
|
2759 |
+
function cerber_subscribe_params() {
|
2760 |
+
$begin = 0;
|
2761 |
+
$end = 0;
|
2762 |
+
$ip = 0;
|
2763 |
+
if ( ! empty( $_GET['filter_ip'] ) ) {
|
2764 |
+
$ip = cerber_any2range( $_GET['filter_ip'] );
|
2765 |
+
if ( is_array( $ip ) ) {
|
2766 |
+
$begin = $ip['begin'];
|
2767 |
+
$end = $ip['end'];
|
2768 |
+
$ip = 0;
|
2769 |
+
} elseif ( ! $ip ) {
|
2770 |
+
$ip = 0;
|
2771 |
+
}
|
2772 |
+
}
|
2773 |
+
|
2774 |
+
$filter_activity = ( empty( $_GET['filter_activity'] ) ) ? 0 : $_GET['filter_activity'];
|
2775 |
+
$filter_user = ( empty( $_GET['filter_user'] ) ) ? 0 : $_GET['filter_user'];
|
2776 |
+
$filter_login = ( empty( $_GET['filter_login'] ) ) ? 0 : $_GET['filter_login'];
|
2777 |
+
$search_activity = ( empty( $_GET['search_activity'] ) ) ? 0 : $_GET['search_activity'];
|
2778 |
+
$filter_role = ( empty( $_GET['filter_role'] ) ) ? 0 : $_GET['filter_role'];
|
2779 |
+
|
2780 |
+
// 'begin' and 'end' array keys are not used, added for compatibility
|
2781 |
+
return array( 'filter_activity' => $filter_activity, 'filter_user' => $filter_user, 'being' => $begin, 'end' => $end, 'filter_ip' => $ip, 'filter_login' => $filter_login, 'search_activity' => $search_activity, 'filter_role' => $filter_role );
|
2782 |
+
}
|
2783 |
+
|
2784 |
+
/*
|
2785 |
+
Plugin activation
|
2786 |
+
*/
|
2787 |
+
register_activation_hook( __FILE__, 'cerber_activate' );
|
2788 |
+
function cerber_activate() {
|
2789 |
+
global $wp_version, $wp_cerber;
|
2790 |
+
$assets_url = plugin_dir_url( CERBER_FILE ) . 'assets';
|
2791 |
+
|
2792 |
+
//cerber_load_lang();
|
2793 |
+
load_plugin_textdomain( 'wp-cerber', false, basename( dirname( __FILE__ ) ) . '/languages' );
|
2794 |
+
|
2795 |
+
if ( version_compare( CERBER_REQ_PHP, phpversion(), '>' ) ) {
|
2796 |
+
cerber_stop_activating( '<h3>' . sprintf( __( 'The WP Cerber requires PHP %s or higher. You are running', 'wp-cerber' ), CERBER_REQ_PHP ) . ' ' . phpversion() . '</h3>' );
|
2797 |
+
}
|
2798 |
+
|
2799 |
+
if ( version_compare( CERBER_REQ_WP, $wp_version, '>' ) ) {
|
2800 |
+
cerber_stop_activating( '<h3>' . sprintf( __( 'The WP Cerber requires WordPress %s or higher. You are running', 'wp-cerber' ), CERBER_REQ_WP ) . ' ' . $wp_version . '</h3>' );
|
2801 |
+
}
|
2802 |
+
|
2803 |
+
$db_errors = cerber_create_db();
|
2804 |
+
if ( $db_errors ) {
|
2805 |
+
cerber_stop_activating( '<h3>' . __( "Can't activate WP Cerber due to a database error.", 'wp-cerber' ) . '</h3><p>' . implode( '<p>', $db_errors ) );
|
2806 |
+
}
|
2807 |
+
|
2808 |
+
cerber_upgrade_all();
|
2809 |
+
|
2810 |
+
cerber_cookie1();
|
2811 |
+
cerber_disable_citadel();
|
2812 |
+
//cerber_get_groove();
|
2813 |
+
|
2814 |
+
if ( ! is_object( $wp_cerber ) ) {
|
2815 |
+
$wp_cerber = new WP_Cerber();
|
2816 |
+
}
|
2817 |
+
cerber_add_white( cerber_get_subnet( $wp_cerber->getRemoteIp() ) ); // Protection for non-experienced user
|
2818 |
+
|
2819 |
+
cerber_admin_message(
|
2820 |
+
'<img style="float:left; margin-left:-10px;" src="' . $assets_url . '/icon-128x128.png">' .
|
2821 |
+
'<p style="font-size:120%;">' . __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . '</p>' .
|
2822 |
+
' <p>' . __( 'Your IP address is added to the', 'wp-cerber' ) . ' ' . __( 'White IP Access List', 'wp-cerber' ) .
|
2823 |
+
|
2824 |
+
' <p><b>' . __( "It's important to check security settings.", 'wp-cerber' ) . '</b> <a href="http://wpcerber.com/" target="_blank">Read Cerber\'s blog</a> ' .
|
2825 |
+
' <a href="http://wpcerber.com/subscribe-newsletter/" target="_blank">Subscribe to Cerber\'s newsletter</a></p>' .
|
2826 |
+
|
2827 |
+
' <p> </p><p><span class="dashicons dashicons-admin-settings"></span> <a href="' . cerber_admin_link( 'main' ) . '">' . __( 'Main Settings', 'wp-cerber' ) . '</a>' .
|
2828 |
+
' <span style="margin-left:20px;" class="dashicons dashicons-admin-network"></span> <a href="' . cerber_admin_link( 'acl' ) . '">' . __( 'Access Lists', 'wp-cerber' ) . '</a>' .
|
2829 |
+
' <span style="margin-left:20px;" class="dashicons dashicons-shield-alt"></span> <a href="' . cerber_admin_link( 'hardening' ) . '">' . __( 'Hardening', 'wp-cerber' ) . '</a>' .
|
2830 |
+
' <span style="margin-left:20px;" class="dashicons dashicons-controls-volumeon"></span> <a href="' . cerber_admin_link( 'notifications' ) . '">' . __( 'Notifications', 'wp-cerber' ) . '</a>' .
|
2831 |
+
' <span style="margin-left:20px;" class="dashicons dashicons-admin-tools"></span> <a href="' . cerber_admin_link( 'tools' ) . '">' . __( 'Import settings', 'wp-cerber' ) . '</a>' .
|
2832 |
+
'</p>' );
|
2833 |
+
|
2834 |
+
|
2835 |
+
// Check for existing options
|
2836 |
+
$opt = cerber_get_options();
|
2837 |
+
$opt = array_filter( $opt );
|
2838 |
+
if ( ! empty( $opt ) ) {
|
2839 |
+
return;
|
2840 |
+
}
|
2841 |
+
|
2842 |
+
cerber_load_defaults();
|
2843 |
+
|
2844 |
+
cerber_send_notify( 'activated' );
|
2845 |
+
|
2846 |
+
$pi = get_file_data( cerber_plugin_file(), array( 'Version' => 'Version' ), 'plugin' );
|
2847 |
+
$pi ['time'] = time();
|
2848 |
+
$pi ['user'] = get_current_user_id();
|
2849 |
+
update_site_option( '_cerber_activated', serialize( $pi ) );
|
2850 |
+
}
|
2851 |
+
|
2852 |
+
/*
|
2853 |
+
Abort activating plugin!
|
2854 |
+
*/
|
2855 |
+
function cerber_stop_activating( $msg ) {
|
2856 |
+
deactivate_plugins( plugin_basename( __FILE__ ) );
|
2857 |
+
wp_die( $msg );
|
2858 |
+
}
|
2859 |
+
|
2860 |
+
/**
|
2861 |
+
* Upgrade database tables, data and plugin settings
|
2862 |
+
*
|
2863 |
+
* @since 3.0
|
2864 |
+
*
|
2865 |
+
*/
|
2866 |
+
function cerber_upgrade_all() {
|
2867 |
+
$ver = get_site_option( '_cerber_up', false );
|
2868 |
+
if ( ! $ver || $ver['v'] != CERBER_VER ) {
|
2869 |
+
cerber_create_db();
|
2870 |
+
cerber_upgrade_db();
|
2871 |
+
|
2872 |
+
cerber_push_the_news( CERBER_VER );
|
2873 |
+
cerber_acl_fixer();
|
2874 |
+
cerber_antibot_gene();
|
2875 |
+
|
2876 |
+
// Updating the plugin settings ----------------------------------------------
|
2877 |
+
|
2878 |
+
// @since 4.4
|
2879 |
+
$main = get_site_option( CERBER_OPT );
|
2880 |
+
if (!empty($main['email']) || !empty($main['emailrate'])){
|
2881 |
+
$new = get_site_option( CERBER_OPT_N, array() );
|
2882 |
+
$new['email'] = $main['email'];
|
2883 |
+
$new['emailrate'] = $main['emailrate'];
|
2884 |
+
update_site_option( CERBER_OPT_N, $new );
|
2885 |
+
// clean up old values
|
2886 |
+
$main['email'] = '';
|
2887 |
+
$main['emailrate'] = '';
|
2888 |
+
update_site_option( CERBER_OPT, $main );
|
2889 |
+
}
|
2890 |
+
|
2891 |
+
// @since 4.8, new settings
|
2892 |
+
$settings = get_site_option( CERBER_OPT_C );
|
2893 |
+
$new_fields = array('recaptcha-period', 'recaptcha-number', 'recaptcha-within');
|
2894 |
+
foreach ( $new_fields as $field ) {
|
2895 |
+
if (!isset($settings[$field])) $settings[$field] = cerber_get_defaults($field);
|
2896 |
+
}
|
2897 |
+
update_site_option( CERBER_OPT_C, $settings );
|
2898 |
+
|
2899 |
+
update_site_option( '_cerber_up', array( 'v' => CERBER_VER, 't' => time() ) );
|
2900 |
+
}
|
2901 |
+
}
|
2902 |
+
|
2903 |
+
/**
|
2904 |
+
* Creates DB tables if they don't exist
|
2905 |
+
*
|
2906 |
+
* @param bool $recreate If true, recreate some tables completely (with data lost)
|
2907 |
+
*
|
2908 |
+
* @return array Errors
|
2909 |
+
*/
|
2910 |
+
function cerber_create_db($recreate = true) {
|
2911 |
+
global $wpdb;
|
2912 |
+
|
2913 |
+
$wpdb->hide_errors();
|
2914 |
+
$db_errors = array();
|
2915 |
+
$sql = array();
|
2916 |
+
|
2917 |
+
if (!cerber_is_table(CERBER_LOG_TABLE)){
|
2918 |
+
$sql[] = "
|
2919 |
+
CREATE TABLE IF NOT EXISTS " . CERBER_LOG_TABLE . " (
|
2920 |
+
ip varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'Remote IP',
|
2921 |
+
user_login varchar(60) NOT NULL COMMENT 'Username from HTTP request',
|
2922 |
+
user_id bigint(20) unsigned NOT NULL DEFAULT '0',
|
2923 |
+
stamp bigint(20) unsigned NOT NULL COMMENT 'Unix timestamp',
|
2924 |
+
activity int(10) unsigned NOT NULL DEFAULT '0',
|
2925 |
+
KEY ip (ip)
|
2926 |
+
) DEFAULT CHARSET=utf8 COMMENT='Cerber activity log';
|
2927 |
+
";
|
2928 |
+
}
|
2929 |
+
|
2930 |
+
if (!cerber_is_table(CERBER_ACL_TABLE)){
|
2931 |
+
$sql[] = "
|
2932 |
+
CREATE TABLE IF NOT EXISTS " . CERBER_ACL_TABLE . " (
|
2933 |
+
ip varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'IP',
|
2934 |
+
tag char(1) NOT NULL COMMENT 'Type: B or W',
|
2935 |
+
comments varchar(250) NOT NULL,
|
2936 |
+
UNIQUE KEY ip (ip)
|
2937 |
+
) DEFAULT CHARSET=utf8 COMMENT='Cerber IP Access Lists';
|
2938 |
+
";
|
2939 |
+
}
|
2940 |
+
|
2941 |
+
if (!cerber_is_table(CERBER_BLOCKS_TABLE)){
|
2942 |
+
$sql[] = "
|
2943 |
+
CREATE TABLE IF NOT EXISTS " . CERBER_BLOCKS_TABLE . " (
|
2944 |
+
ip varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'Remote IP',
|
2945 |
+
block_until bigint(20) unsigned NOT NULL COMMENT 'Unix timestamp',
|
2946 |
+
reason varchar(250) NOT NULL COMMENT 'Why IP was blocked',
|
2947 |
+
UNIQUE KEY ip (ip)
|
2948 |
+
) DEFAULT CHARSET=utf8 COMMENT='Cerber list of currently blocked IPs';
|
2949 |
+
";
|
2950 |
+
}
|
2951 |
+
|
2952 |
+
if (!cerber_is_table(CERBER_LAB_TABLE)){
|
2953 |
+
$sql[] = "
|
2954 |
+
CREATE TABLE IF NOT EXISTS " . CERBER_LAB_TABLE . " (
|
2955 |
+
ip varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'Remote IP',
|
2956 |
+
reason_id int(11) unsigned NOT NULL DEFAULT '0',
|
2957 |
+
stamp bigint(20) unsigned NOT NULL COMMENT 'Unix timestamp',
|
2958 |
+
details text NOT NULL
|
2959 |
+
) DEFAULT CHARSET=utf8 COMMENT='Cerber lab cache';
|
2960 |
+
";
|
2961 |
+
}
|
2962 |
+
|
2963 |
+
|
2964 |
+
if ($recreate || !cerber_is_table(CERBER_LAB_IP_TABLE)){
|
2965 |
+
if ( $recreate && cerber_is_table( CERBER_LAB_IP_TABLE ) ) {
|
2966 |
+
$sql[] = 'DROP TABLE ' . CERBER_LAB_IP_TABLE;
|
2967 |
+
}
|
2968 |
+
$sql[] = "
|
2969 |
+
CREATE TABLE IF NOT EXISTS " . CERBER_LAB_IP_TABLE . " (
|
2970 |
+
ip varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'IP',
|
2971 |
+
reputation INT(11) UNSIGNED NOT NULL COMMENT 'Reputation of IP',
|
2972 |
+
expires INT(11) UNSIGNED NOT NULL COMMENT 'Unix timestamp',
|
2973 |
+
PRIMARY KEY (ip)
|
2974 |
+
) DEFAULT CHARSET=utf8 COMMENT='Cerber lab IP cache';
|
2975 |
+
";
|
2976 |
+
}
|
2977 |
+
|
2978 |
+
if ( $recreate || ! cerber_is_table( CERBER_LAB_NET_TABLE ) ) {
|
2979 |
+
if ( $recreate && cerber_is_table( CERBER_LAB_NET_TABLE ) ) {
|
2980 |
+
$sql[] = 'DROP TABLE ' . CERBER_LAB_NET_TABLE;
|
2981 |
+
}
|
2982 |
+
$sql[] = '
|
2983 |
+
CREATE TABLE IF NOT EXISTS ' . CERBER_LAB_NET_TABLE . ' (
|
2984 |
+
ip varchar(39) CHARACTER SET ascii NOT NULL COMMENT "Malicious IP",
|
2985 |
+
expires INT(11) UNSIGNED NOT NULL,
|
2986 |
+
PRIMARY KEY (ip)
|
2987 |
+
) DEFAULT CHARSET=utf8 COMMENT="Cerber lab network cache";
|
2988 |
+
';
|
2989 |
+
}
|
2990 |
+
|
2991 |
+
foreach ( $sql as $query ) {
|
2992 |
+
if ( ! $wpdb->query( $query ) && $wpdb->last_error ) {
|
2993 |
+
$db_errors[] = array( $wpdb->last_error, $wpdb->last_query );
|
2994 |
+
}
|
2995 |
+
}
|
2996 |
+
|
2997 |
+
return $db_errors;
|
2998 |
+
}
|
2999 |
+
|
3000 |
+
/**
|
3001 |
+
* Upgrade structure of existing DB tables
|
3002 |
+
*
|
3003 |
+
* @return array Errors during upgrading
|
3004 |
+
* @since 3.0
|
3005 |
+
*/
|
3006 |
+
function cerber_upgrade_db( $force = false ) {
|
3007 |
+
global $wpdb;
|
3008 |
+
$wpdb->hide_errors();
|
3009 |
+
if ($force) $wpdb->suppress_errors();
|
3010 |
+
$db_errors = array();
|
3011 |
+
$sql = array();
|
3012 |
+
|
3013 |
+
// @since 3.0
|
3014 |
+
$sql[] = 'ALTER TABLE ' . CERBER_LOG_TABLE . ' CHANGE stamp stamp DECIMAL(14,4) NOT NULL';
|
3015 |
+
|
3016 |
+
// @since 3.1
|
3017 |
+
if ( $force || ! cerber_is_column( CERBER_LOG_TABLE, 'ip_long' ) ) {
|
3018 |
+
$sql[] = 'ALTER TABLE ' . CERBER_LOG_TABLE . ' ADD ip_long BIGINT UNSIGNED NOT NULL DEFAULT "0" COMMENT "IPv4 long" AFTER ip, ADD INDEX (ip_long)';
|
3019 |
+
}
|
3020 |
+
if ( $force || ! cerber_is_column( CERBER_ACL_TABLE, 'ip_long_begin' ) ) {
|
3021 |
+
$sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . " ADD ip_long_begin BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT 'IPv4 range begin' AFTER ip, ADD ip_long_end BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT 'IPv4 range end' AFTER ip_long_begin";
|
3022 |
+
}
|
3023 |
+
if ( $force || !cerber_is_index( CERBER_ACL_TABLE, 'ip_begin_end' ) ) {
|
3024 |
+
$sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . ' ADD UNIQUE ip_begin_end (ip, ip_long_begin, ip_long_end)';
|
3025 |
+
}
|
3026 |
+
if ( $force || cerber_is_index( CERBER_ACL_TABLE, 'ip' ) ) {
|
3027 |
+
$sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . ' DROP INDEX ip';
|
3028 |
+
}
|
3029 |
+
|
3030 |
+
// @since 4.8.2
|
3031 |
+
if ( $force || cerber_is_index( CERBER_ACL_TABLE, 'begin_end' ) ) {
|
3032 |
+
$sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . ' DROP INDEX begin_end';
|
3033 |
+
}
|
3034 |
+
if ( $force || !cerber_is_index( CERBER_ACL_TABLE, 'begin_end_tag' ) ) {
|
3035 |
+
$sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . ' ADD INDEX begin_end_tag (ip_long_begin, ip_long_end, tag)';
|
3036 |
+
}
|
3037 |
+
|
3038 |
+
// @since 4.9
|
3039 |
+
if ( $force || ! cerber_is_column( CERBER_ACL_TABLE, 'session_id' ) ) {
|
3040 |
+
$sql[] = 'ALTER TABLE cerber_log
|
3041 |
+
ADD session_id CHAR(32) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT "",
|
3042 |
+
ADD country CHAR(3) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT "" COMMENT "Country code",
|
3043 |
+
ADD details VARCHAR(250) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT "" COMMENT "Details about HTTP request";
|
3044 |
+
';
|
3045 |
+
}
|
3046 |
+
|
3047 |
+
if (!empty($sql)) {
|
3048 |
+
foreach ( $sql as $query ) {
|
3049 |
+
if ( !$wpdb->query( $query ) && $wpdb->last_error ) {
|
3050 |
+
$db_errors[] = array( $wpdb->last_error, $wpdb->last_query );
|
3051 |
+
}
|
3052 |
+
}
|
3053 |
+
}
|
3054 |
+
|
3055 |
+
|
3056 |
+
// Convert existing data into the new format
|
3057 |
+
$rows = $wpdb->get_results( 'SELECT * FROM ' . CERBER_ACL_TABLE );
|
3058 |
+
if ( $rows ) {
|
3059 |
+
foreach ( $rows as $row ) {
|
3060 |
+
$range = cerber_wildcard2range( $row->ip );
|
3061 |
+
if ( is_array( $range ) ) {
|
3062 |
+
$begin = $range['begin'];
|
3063 |
+
$end = $range['end'];
|
3064 |
+
} elseif ( cerber_is_ipv4( $row->ip ) ) {
|
3065 |
+
$begin = ip2long( $row->ip );
|
3066 |
+
$end = ip2long( $row->ip );
|
3067 |
+
} else {
|
3068 |
+
$begin = 0;
|
3069 |
+
$end = 0;
|
3070 |
+
}
|
3071 |
+
$query = $wpdb->prepare( 'UPDATE ' . CERBER_ACL_TABLE . ' SET ip_long_begin = %d, ip_long_end = %d WHERE ip = %s', $begin, $end, $row->ip );
|
3072 |
+
if ( ! $wpdb->query( $query ) ) {
|
3073 |
+
if ( $wpdb->last_error ) {
|
3074 |
+
$db_errors[] = array( $wpdb->last_error, $wpdb->last_query );
|
3075 |
+
}
|
3076 |
+
}
|
3077 |
+
}
|
3078 |
+
}
|
3079 |
+
|
3080 |
+
if ( $db_errors ) {
|
3081 |
+
update_site_option( '_cerber_db_errors', $db_errors );
|
3082 |
+
}
|
3083 |
+
else {
|
3084 |
+
update_site_option( '_cerber_db_errors', '' );
|
3085 |
+
}
|
3086 |
+
|
3087 |
+
return $db_errors;
|
3088 |
+
}
|
3089 |
+
|
3090 |
+
/**
|
3091 |
+
* Updating old activity log records to the new row format (has been introduced in v 3.1)
|
3092 |
+
*
|
3093 |
+
* @since 4.0
|
3094 |
+
*
|
3095 |
+
*/
|
3096 |
+
function cerber_up_data() {
|
3097 |
+
global $wpdb;
|
3098 |
+
$ips = $wpdb->get_col( 'SELECT DISTINCT ip FROM ' . CERBER_LOG_TABLE . ' WHERE ip_long = 0 LIMIT 50' );
|
3099 |
+
if ( ! $ips ) {
|
3100 |
+
return;
|
3101 |
+
}
|
3102 |
+
foreach ( $ips as $ip ) {
|
3103 |
+
if ( cerber_is_ipv4( $ip ) ) {
|
3104 |
+
$ip_long = ip2long( $ip );
|
3105 |
+
} else {
|
3106 |
+
$ip_long = 1;
|
3107 |
+
}
|
3108 |
+
$wpdb->query( 'UPDATE ' . CERBER_LOG_TABLE . ' SET ip_long = ' . $ip_long . ' WHERE ip = "' . $ip .'" AND ip_long = 0');
|
3109 |
+
}
|
3110 |
+
}
|
3111 |
+
|
3112 |
+
/**
|
3113 |
+
* Just fix corrupted (have no long values) ACL entries
|
3114 |
+
*
|
3115 |
+
*/
|
3116 |
+
function cerber_acl_fixer(){
|
3117 |
+
global $wpdb;
|
3118 |
+
$rows = $wpdb->get_col( 'SELECT ip FROM ' . CERBER_ACL_TABLE . ' WHERE ip_long_begin = 0 OR ip_long_end = 0' );
|
3119 |
+
if ( ! $rows ) {
|
3120 |
+
return;
|
3121 |
+
}
|
3122 |
+
foreach ( $rows as $ip ) {
|
3123 |
+
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) continue;
|
3124 |
+
$range = cerber_any2range( $ip );
|
3125 |
+
if ( is_array( $range ) ) {
|
3126 |
+
$begin = $range['begin'];
|
3127 |
+
$end = $range['end'];
|
3128 |
+
} else {
|
3129 |
+
$begin = ip2long( $ip );
|
3130 |
+
$end = ip2long( $ip );
|
3131 |
+
}
|
3132 |
+
|
3133 |
+
$wpdb->query( 'UPDATE ' . CERBER_ACL_TABLE . ' SET ip_long_begin = ' . $begin . ', ip_long_end = ' . $end . ' WHERE ip = "' . $ip .'"');
|
3134 |
+
}
|
3135 |
+
}
|
3136 |
+
|
3137 |
+
$file = plugin_basename( cerber_plugin_file() );
|
3138 |
+
add_action( 'deac' . 'tivate_' . $file, 'cerber_clean' );
|
3139 |
+
function cerber_clean( $ip ) {
|
3140 |
+
wp_clear_scheduled_hook( 'cerber' . '_hourly' );
|
3141 |
+
$pi = get_file_data( cerber_plugin_file(), array( 'Version' => 'Version' ), 'plugin' );
|
3142 |
+
$pi ['v'] = time();
|
3143 |
+
$pi ['u'] = get_current_user_id();
|
3144 |
+
update_site_option( '_cerber_o' . 'ff', $pi );
|
3145 |
+
$f = 'cerb' . 'er_se' . 'nd_not' . 'ify';
|
3146 |
+
$f( 'sh' . 'utd' . 'own' );
|
3147 |
+
}
|
3148 |
+
|
3149 |
+
/*
|
3150 |
+
Fix an issue with the empty user_id field in the comments table.
|
3151 |
+
*/
|
3152 |
+
add_filter( 'preprocess_comment', 'cerber_add_uid' );
|
3153 |
+
function cerber_add_uid( $commentdata ) {
|
3154 |
+
$current_user = wp_get_current_user();
|
3155 |
+
$commentdata['user_ID'] = $current_user->ID;
|
3156 |
+
|
3157 |
+
return $commentdata;
|
3158 |
+
}
|
3159 |
+
|
3160 |
+
/**
|
3161 |
+
* Load jQuery on the page
|
3162 |
+
*
|
3163 |
+
*/
|
3164 |
+
add_action( 'login_enqueue_scripts', 'cerber_login_scripts' );
|
3165 |
+
function cerber_login_scripts() {
|
3166 |
+
if ( cerber_antibot_enabled( 'botsreg' ) ) {
|
3167 |
+
wp_enqueue_script( 'jquery' );
|
3168 |
+
}
|
3169 |
+
}
|
3170 |
+
add_action( 'wp_enqueue_scripts', 'cerber_scripts' );
|
3171 |
+
function cerber_scripts() {
|
3172 |
+
global $wp_cerber;
|
3173 |
+
if ( ( is_singular() && cerber_antibot_enabled( array( 'botscomm', 'botsany' ) ) )
|
3174 |
+
|| ( $wp_cerber->getSettings( 'sitekey' ) && $wp_cerber->getSettings( 'secretkey' ) )
|
3175 |
+
) {
|
3176 |
+
wp_enqueue_script( 'jquery' );
|
3177 |
+
}
|
3178 |
+
}
|
3179 |
+
|
3180 |
+
/**
|
3181 |
+
* Footer stuff
|
3182 |
+
* Explicit rendering reCAPTCHA
|
3183 |
+
*
|
3184 |
+
*/
|
3185 |
+
add_action( 'login_footer', 'cerber_login_foo', 1000 );
|
3186 |
+
function cerber_login_foo( $ip ) {
|
3187 |
+
global $wp_cerber;
|
3188 |
+
|
3189 |
+
cerber_antibot_code('botsreg');
|
3190 |
+
|
3191 |
+
// Universal JS
|
3192 |
+
if (!$wp_cerber->recaptcha_here) return;
|
3193 |
+
|
3194 |
+
$sitekey = $wp_cerber->getSettings('sitekey');
|
3195 |
+
|
3196 |
+
if (!$wp_cerber->getSettings('invirecap')){
|
3197 |
+
// Classic version (visible reCAPTCHA)
|
3198 |
+
echo '<script src = https://www.google.com/recaptcha/api.js?hl='.cerber_recaptcha_lang().' async defer></script>';
|
3199 |
+
}
|
3200 |
+
else {
|
3201 |
+
// Pure JS version with explicit rendering
|
3202 |
+
?>
|
3203 |
+
<script src="https://www.google.com/recaptcha/api.js?onload=init_recaptcha_widgets&render=explicit&hl=<?php echo cerber_recaptcha_lang(); ?>" async defer></script>
|
3204 |
+
<script type='text/javascript'>
|
3205 |
+
|
3206 |
+
document.getElementById("cerber-recaptcha").remove();
|
3207 |
+
|
3208 |
+
var init_recaptcha_widgets = function () {
|
3209 |
+
for (var i = 0; i < document.forms.length; ++i) {
|
3210 |
+
var form = document.forms[i];
|
3211 |
+
var place = form.querySelector('.cerber-form-marker');
|
3212 |
+
if (null !== place) render_recaptcha_widget(form, place);
|
3213 |
+
}
|
3214 |
+
};
|
3215 |
+
|
3216 |
+
function render_recaptcha_widget(form, place) {
|
3217 |
+
var place_id = grecaptcha.render(place, {
|
3218 |
+
'callback': function (g_recaptcha_response) {
|
3219 |
+
HTMLFormElement.prototype.submit.call(form);
|
3220 |
+
},
|
3221 |
+
'sitekey': '<?php echo $sitekey; ?>',
|
3222 |
+
'size': 'invisible',
|
3223 |
+
'badge': 'bottomright'
|
3224 |
+
});
|
3225 |
+
|
3226 |
+
form.onsubmit = function (event) {
|
3227 |
+
event.preventDefault();
|
3228 |
+
grecaptcha.execute(place_id);
|
3229 |
+
};
|
3230 |
+
|
3231 |
+
}
|
3232 |
+
</script>
|
3233 |
+
<?php
|
3234 |
+
}
|
3235 |
+
}
|
3236 |
+
|
3237 |
+
/**
|
3238 |
+
* Inline reCAPTCHA widget
|
3239 |
+
*
|
3240 |
+
*/
|
3241 |
+
add_action( 'wp_footer', 'cerber_foo', 1000 );
|
3242 |
+
function cerber_foo() {
|
3243 |
+
global $wp_cerber;
|
3244 |
+
|
3245 |
+
if (is_singular()) cerber_antibot_code( array( 'botscomm', 'botsany' ) );
|
3246 |
+
|
3247 |
+
if (!$wp_cerber->recaptcha_here) return;
|
3248 |
+
|
3249 |
+
// jQuery version with support visible and invisible reCAPTCHA
|
3250 |
+
// TODO: convert it into pure JS
|
3251 |
+
?>
|
3252 |
+
<script type="text/javascript">
|
3253 |
+
|
3254 |
+
jQuery(document).ready(function ($) {
|
3255 |
+
|
3256 |
+
var recaptcha_ok = false;
|
3257 |
+
var the_recaptcha_widget = $("#cerber-recaptcha");
|
3258 |
+
var is_recaptcha_visible = ($(the_recaptcha_widget).data('size') !== 'invisible');
|
3259 |
+
|
3260 |
+
var the_form = $(the_recaptcha_widget).closest("form");
|
3261 |
+
var the_button = $(the_form).find('input[type="submit"]');
|
3262 |
+
if (!the_button.length) {
|
3263 |
+
the_button = $(the_form).find(':button');
|
3264 |
+
}
|
3265 |
+
|
3266 |
+
// visible
|
3267 |
+
if (the_button.length && is_recaptcha_visible) {
|
3268 |
+
the_button.prop("disabled", true);
|
3269 |
+
the_button.css("opacity", 0.5);
|
3270 |
+
}
|
3271 |
+
|
3272 |
+
window.form_button_enabler = function () {
|
3273 |
+
if (!the_button.length) return;
|
3274 |
+
the_button.prop("disabled", false);
|
3275 |
+
the_button.css( "opacity", 1 );
|
3276 |
+
};
|
3277 |
+
|
3278 |
+
// invisible
|
3279 |
+
if (!is_recaptcha_visible) {
|
3280 |
+
$(the_button).click(function (event) {
|
3281 |
+
if (recaptcha_ok) return;
|
3282 |
+
event.preventDefault();
|
3283 |
+
grecaptcha.execute();
|
3284 |
+
});
|
3285 |
+
}
|
3286 |
+
|
3287 |
+
window.now_submit_the_form = function () {
|
3288 |
+
recaptcha_ok = true;
|
3289 |
+
$(the_button).click(); // this is only way to submit a form that contains "submit" inputs
|
3290 |
+
};
|
3291 |
+
});
|
3292 |
+
</script>
|
3293 |
+
<script src = "https://www.google.com/recaptcha/api.js?hl=<?php echo cerber_recaptcha_lang(); ?>" async defer></script>
|
3294 |
+
<?php
|
3295 |
+
}
|