Acunetix Secure WordPress - Version 3.0

Version Description

Download this release

Release Info

Developer Acunetix
Plugin Icon wp plugin Acunetix Secure WordPress
Version 3.0
Comparing to
See all releases

Code changes from version 2.0.8 to 3.0

Files changed (136) hide show
  1. css/acx-wp-dashboard.css +0 -17
  2. css/remove_login.css +0 -3
  3. css/remove_update_plugins.css +0 -3
  4. css/remove_wp_version.css +0 -3
  5. css/wsd_sw_styles.css +0 -317
  6. img/acunetix.png +0 -0
  7. img/agent-green.png +0 -0
  8. img/agent-red.png +0 -0
  9. img/facebook.gif +0 -0
  10. img/loading45.gif +0 -0
  11. img/wsd-logo-small.png +0 -0
  12. img/wsd-logo.png +0 -0
  13. inc/WPlize.php +0 -161
  14. inc/json.php +0 -806
  15. inc/readme_de.txt +0 -88
  16. inc/readme_en.txt +0 -88
  17. inc/recaptchalib.php +0 -277
  18. inc/swUtil.php +0 -169
  19. inc/swWSD.php +0 -857
  20. index.php +64 -0
  21. js/json.js +0 -482
  22. js/md5.js +0 -195
  23. js/prepare_new_user_form.js +0 -44
  24. js/remove_wp_version.js +0 -1
  25. js/sw_wsd.js +0 -183
  26. js/sw_wsd_scripts.js +0 -9
  27. js/verify_form.js +0 -137
  28. languages/secure_wp-ar.mo +0 -0
  29. languages/secure_wp-ar.po +0 -225
  30. languages/secure_wp-be_BY.mo +0 -0
  31. languages/secure_wp-be_BY.po +0 -237
  32. languages/secure_wp-da_DK.mo +0 -0
  33. languages/secure_wp-da_DK.po +0 -425
  34. languages/secure_wp-de_DE.mo +0 -0
  35. languages/secure_wp-de_DE.po +0 -533
  36. languages/secure_wp-es_ES.mo +0 -0
  37. languages/secure_wp-es_ES.po +0 -241
  38. languages/secure_wp-fa_IR.mo +0 -0
  39. languages/secure_wp-fa_IR.po +0 -441
  40. languages/secure_wp-fr_FR.mo +0 -0
  41. languages/secure_wp-fr_FR.po +0 -246
  42. languages/secure_wp-hu_HU.mo +0 -0
  43. languages/secure_wp-hu_HU.po +0 -237
  44. languages/secure_wp-it_IT.mo +0 -0
  45. languages/secure_wp-it_IT.po +0 -476
  46. languages/secure_wp-ja.mo +0 -0
  47. languages/secure_wp-ja.po +0 -526
  48. languages/secure_wp-nl_NL.mo +0 -0
  49. languages/secure_wp-nl_NL.po +0 -246
  50. languages/secure_wp-pl_PL.mo +0 -0
  51. languages/secure_wp-pl_PL.po +0 -530
  52. languages/secure_wp-ro_RO.mo +0 -0
  53. languages/secure_wp-ro_RO.po +0 -532
  54. languages/secure_wp-ru_RU.mo +0 -0
  55. languages/secure_wp-ru_RU.po +0 -237
  56. languages/secure_wp-tr_TR.mo +0 -0
  57. languages/secure_wp-tr_TR.po +0 -530
  58. languages/secure_wp-uk.mo +0 -0
  59. languages/secure_wp-uk.po +0 -225
  60. languages/secure_wp-zh_CN.mo +0 -0
  61. languages/secure_wp-zh_CN.po +0 -236
  62. languages/secure_wp.pot +0 -533
  63. license.txt +0 -674
  64. readme.txt +146 -36
  65. res/backups/index.php +1 -0
  66. res/css/acx-styles-extra.css +1 -0
  67. res/css/blog.css +66 -0
  68. res/css/index.php +1 -0
  69. res/css/styles.alerts.css +54 -0
  70. res/css/styles.base.css +31 -0
  71. res/css/styles.general.css +196 -0
  72. res/css/styles.status.css +37 -0
  73. res/images/ajax-loader.gif +0 -0
  74. res/images/alert-info-critical.png +0 -0
  75. res/images/alert-info-icon.png +0 -0
  76. res/images/alerts-page-ico.png +0 -0
  77. res/images/arrow-black-icon.png +0 -0
  78. res/images/blog/featured-slider-bg.jpg +0 -0
  79. res/images/blog/ico-facebook.png +0 -0
  80. res/images/blog/ico-twitter.png +0 -0
  81. res/images/blog/index.php +1 -0
  82. res/images/blog/logo.png +0 -0
  83. res/images/checkbox.png +0 -0
  84. {img → res/images}/close-button.png +0 -0
  85. res/images/green-check-icon.png +0 -0
  86. res/images/icon-info.png +0 -0
  87. res/images/index.php +1 -0
  88. res/images/indicator-blue.png +0 -0
  89. res/images/indicator-green.png +0 -0
  90. res/images/indicator-red.png +0 -0
  91. res/images/indicator-yellow.png +0 -0
  92. img/wsd-logo-small-list.png → res/images/logo-small.png +0 -0
  93. res/images/logo.png +0 -0
  94. {img → res/images}/rss.png +0 -0
  95. res/images/tooltips/index.php +1 -0
  96. res/images/tooltips/tt_bottom.gif +0 -0
  97. res/images/tooltips/tt_top.gif +0 -0
  98. res/inc/SwpaCheck.php +286 -0
  99. res/inc/SwpaInfo.php +317 -0
  100. res/inc/SwpaLiveTraffic.php +222 -0
  101. res/inc/SwpaPlugin.php +382 -0
  102. res/inc/SwpaScheduler.php +115 -0
  103. res/inc/SwpaSecurity.php +726 -0
  104. res/inc/SwpaUtil.php +577 -0
  105. res/inc/SwpaWatch.php +67 -0
  106. res/inc/alerts.php +64 -0
  107. res/inc/index.php +1 -0
  108. res/inc/swpa-functions.php +48 -0
  109. res/js/index.php +1 -0
  110. res/js/wsd-util.js +25 -0
  111. res/js/wsdplugin_glossary_tooltip.js +78 -0
  112. res/languages/index.php +1 -0
  113. res/pages/about.php +57 -0
  114. res/pages/blog.php +113 -0
  115. res/pages/dashboard.php +134 -0
  116. res/pages/database.php +61 -0
  117. res/pages/index.php +1 -0
  118. res/pages/live_traffic.php +271 -0
  119. res/pages/scanner.php +39 -0
  120. res/pages/settings.php +168 -0
  121. res/pages/tpl/box-available-backups.php +26 -0
  122. res/pages/tpl/box-banners.php +8 -0
  123. res/pages/tpl/box-database-backup.php +57 -0
  124. res/pages/tpl/box-database-change-prefix.php +244 -0
  125. res/pages/tpl/box-scan-results-file.php +108 -0
  126. res/pages/tpl/box-scan-results-wp.php +13 -0
  127. res/pages/tpl/box-server-results.php +3 -0
  128. res/pages/tpl/index.php +1 -0
  129. screenshot-1.jpg +0 -0
  130. screenshot-1.png +0 -0
  131. screenshot-2.jpg +0 -0
  132. screenshot-3.jpg +0 -0
  133. screenshot-4.jpg +0 -0
  134. secure-wordpress.php +0 -1101
  135. swpa-settings.php +75 -0
  136. uninstall.php +0 -12
css/acx-wp-dashboard.css DELETED
@@ -1,17 +0,0 @@
1
- /*
2
- * manage the rss box on dashboard
3
- */
4
-
5
- #acx_plugin_dashboard_widget h3.hndle{
6
- background: url('../img/wsd-logo-small.png') no-repeat 5px 50%;
7
- padding-left: 35px; padding-top: 10px;
8
- }
9
- #acx_plugin_dashboard_widget h4 {
10
- margin: 0 0; font-size: 1.2em;
11
- /* background: url('../images/arrow-black-icon.png') no-repeat left center;
12
- background: url('../images/wsd-logo-small-list.png') no-repeat left center;
13
- padding-left: 20px;*/
14
- }
15
- #acx_plugin_dashboard_widget p { margin: 3px 0; }
16
-
17
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/remove_login.css DELETED
@@ -1,3 +0,0 @@
1
- #login_error {
2
- display: none;
3
- }
 
 
 
css/remove_update_plugins.css DELETED
@@ -1,3 +0,0 @@
1
- .update-plugins {
2
- display: none !important;
3
- }
 
 
 
css/remove_wp_version.css DELETED
@@ -1,3 +0,0 @@
1
- #wp-version-message, #footer-upgrade {
2
- display: none !important;
3
- }
 
 
 
css/wsd_sw_styles.css DELETED
@@ -1,317 +0,0 @@
1
- /*
2
- Document : wsd_sw_styles.css
3
- Created on : Jul 15, 2011, 10:50:06 AM
4
- Author : kos
5
- Description: Define the page layout
6
- $rev #1 07/15/2011 k$
7
- */
8
- /*[ Overriden ]*/
9
- .poststuff { float: left; display: block; width: 49%; margin-left: 10px; }
10
- .wrap .poststuff_left { margin-left: 0 !important;}
11
- .wrap .poststuff_clear { clear: both; width: 100% !important; }
12
- .form-table th { width: auto; }
13
-
14
- /*[ IMPORTED ]*/
15
-
16
- /********************************************************
17
- * BEGIN >> General styling
18
- */
19
- p.wsd-error-summary {
20
- background-color: #F9EFAC;
21
- border: 1px dotted #f00;
22
- color: #DC143C;
23
- padding: 5px 10px;
24
- margin: 10px;
25
- font-weight: bold;
26
- cursor: default;
27
- }
28
-
29
- span.wsd-error-summary-detail {
30
- color: #000;
31
- font-weight: normal;
32
- font-size: 11px;
33
- cursor: default;
34
- }
35
-
36
-
37
- p.wsd-success-summary {
38
- background-color: #90EE90;
39
- border: 1px dotted #f00;
40
- color: #000;
41
- padding: 5px 10px;
42
- margin: 10px;
43
- font-weight: bold;
44
- cursor: default;
45
- }
46
-
47
- span.wsd-success-summary-detail {
48
- color: #000;
49
- font-weight: normal;
50
- font-size: 11px;
51
- cursor: default;
52
- }
53
-
54
-
55
- p.wsd-login-notice {
56
- font-weight: bold;
57
- color: #000;
58
- margin-top: -10px;
59
- margin-bottom: 20px;
60
- }
61
-
62
- .wsd-inside {
63
- padding: 10px;
64
- font-family: Verdana, Arial, sans-serif !important;
65
- font-size: 100% !important;
66
- }
67
-
68
- p.wsd-error-summary a, .wsd-inside a {
69
- color: #CC0000;
70
- text-decoration: none;
71
- }
72
-
73
- p.wsd-error-summary a:hover, .wsd-inside a:hover {
74
- color: #CC0000;
75
- text-decoration: underline;
76
- }
77
-
78
- /********************************************************
79
- * BEGIN >> Login form styling
80
- */
81
- #wsd_login_form,
82
- #sw_wsd_login_form {
83
- margin: 0px;
84
- }
85
-
86
- #wsd_login_form .wsd-login-section,
87
- #sw_wsd_login_form .wsd-login-section {
88
- display: block;
89
- float: left;
90
- width: 100%;
91
- margin-bottom: 5px;
92
- }
93
-
94
- #wsd_login_form .wsd-login-section label,
95
- #sw_wsd_login_form .wsd-login-section label {
96
- display: block;
97
- float: left;
98
- width: 70px;
99
- padding-top: 6px;
100
- }
101
-
102
- #wsd_login_form .wsd-login-section input,
103
- #sw_wsd_login_form .wsd-login-section input {
104
- display: block;
105
- width: 200px;
106
- float: left;
107
- }
108
-
109
- #wsd_login_form #wsd-login,
110
- #sw_wsd_login_form #wsd-login {
111
- clear: left;
112
- margin-left: 70px;
113
- }
114
-
115
- /********************************************************
116
- * BEGIN >> Registration form styling
117
- */
118
- #wsd_new_user_form, #sw_wsd_new_user_form {
119
- margin: 0px;
120
- }
121
-
122
- #wsd_new_user_form .wsd-new-user-section,
123
- #sw_wsd_new_user_form .wsd-new-user-section {
124
- display: block;
125
- float: left;
126
- width: 100%;
127
- margin-bottom: 5px;
128
- }
129
-
130
- #wsd_new_user_form .wsd-new-user-section label,
131
- #sw_wsd_new_user_form .wsd-new-user-section label {
132
- display: block;
133
- float: left;
134
- width: 120px;
135
- padding-top: 6px;
136
- }
137
-
138
- #wsd_new_user_form .wsd-new-user-section input,
139
- #sw_wsd_new_user_form .wsd-new-user-section input {
140
- display: block;
141
- width: 200px;
142
- float: left;
143
- }
144
-
145
- #wsd_new_user_form #wsd-login,
146
- #sw_wsd_new_user_form #wsd-login {
147
- clear: left;
148
- margin-left: 70px;
149
- }
150
-
151
- /********************************************************
152
- * BEGIN >> Initial scan widget styling
153
- */
154
- #wsd-information-scan-list {
155
- list-style-type: disc;
156
- margin: 10px;
157
- padding-left: 20px;
158
- }
159
-
160
- #wsd-initial-scan { }
161
-
162
- #wsd-initial-scan .wsd-initial-scan-section {
163
- line-height: 1.4em;
164
- display: block;
165
- color: #090;
166
- }
167
-
168
-
169
- /********************************************************
170
- * BEGIN >> Target update form styling
171
- */
172
- #wsd_target_id_form {
173
- width: 100%;
174
- }
175
-
176
- #wsd_target_id_form #targetid {
177
- width: 290px !important;
178
- }
179
-
180
-
181
-
182
- /********************************************************
183
- * BEGIN >> Status content styling
184
- */
185
- div#wsd-target-status-holder {
186
- overflow: hidden;
187
- }
188
-
189
- p.wsd-target-status-title {
190
- font-weight: bold;
191
- }
192
-
193
- div.wsd-target-status-section {
194
- display: block;
195
- float: left;
196
- margin-right: 5px;
197
- }
198
-
199
- span.wsd-target-status-section-label {
200
- display: block;
201
- padding: 5px 4px;
202
- float: left;
203
- color: #999999
204
- }
205
-
206
- span.wsd-target-status-section-enabled {
207
- display: block;
208
- padding: 5px 0px;
209
- background-color: #0f0;
210
- color: #000;
211
- float: left;
212
- width: 50px;
213
- height: 24px;
214
- border-radius: 3px;
215
- -moz-border-radius: 3px;
216
- -webkit-border-radius: 3px;
217
- text-align: center;
218
- font-weight: bold;
219
-
220
- background: url('../img/agent-green.png') no-repeat scroll left top transparent;
221
- }
222
-
223
- span.wsd-target-status-section-disabled {
224
- display: block;
225
- padding: 5px 0px;
226
- background-color: #f00;
227
- color: #fff;
228
- float: left;
229
- width: 50px;
230
- height: 24px;
231
- border-radius: 3px;
232
- -moz-border-radius: 3px;
233
- -webkit-border-radius: 3px;
234
- text-align: center;
235
- font-weight: bold;
236
-
237
- background: url('../img/agent-red.png') no-repeat scroll left top transparent;
238
- }
239
-
240
- .scanpass { color: #090; }
241
-
242
- .mrt_wpss_note {
243
- text-align: center;
244
- color: grey;
245
- margin-top: 20px;
246
- margin-bottom: 20px;
247
- }
248
-
249
- .wpss_icon {
250
- background: url(../img/wsd-logo.png) no-repeat left center;
251
- margin-top: 10px !important;
252
- padding: 5px 0 3px 50px !important;
253
- }
254
-
255
- .wsd_user_notify {
256
- border: solid 1px #fc0; background: #ffc;
257
- padding: 5px 5px;
258
- font-size: 100%;
259
- }
260
- .wsd_user_information {
261
- border: solid 1px #324FB2; background: #E5EAF0;
262
- padding: 5px 5px;
263
- font-size: 100%;
264
- }
265
- .wsd_user_success {
266
- border: solid 1px #030; background: #090;
267
- padding: 5px 5px;
268
- font-size: 100%;
269
- color: #fff;
270
- }
271
- .wsd_info_list {
272
- list-style-type: disc;
273
- list-style-position: outside;
274
- margin: 0 0 10px 25px;
275
- }
276
- div.wsd_user_information, div.wsd_user_notify, div.wsd_user_success { margin: 1em 0 !important; }
277
-
278
- #Words { overflow: hidden; min-height: 1px; margin: 0 0 0 0 !important; padding: 0 0 0 0 !important; }
279
- #Words p { float: left; display: block; width: 150px; line-height: normal !important; padding: 0 0 0 0; margin: 6px 0 0 0 !important; }
280
- #Words p.indicator { height: 4px; }
281
- #Words p.indicator-1 { background: #f00;}
282
- #Words p.indicator-2 { background: #990000; }
283
- #Words p.indicator-3 { background: #990099; }
284
- #Words p.indicator-4 { background: #000099; }
285
- #Words p.indicator-5 { background: #0000ff; }
286
- #Words p.indicator-6 { background: #ffffff; }
287
- #Words p+p {margin: 0 0 0 5px !important; padding: 0 0 0 0 !important; line-height: normal !important;}
288
- #wsd_pwdtool { margin-top: 10px; }
289
-
290
- .wsd_commonList {
291
- list-style-type: none;
292
- margin: 0 0 10px 0;
293
- padding-left: 0;
294
- }
295
- .wsd_commonList li {
296
- font-style: italic !important;
297
- background: url('../img/wsd-logo-small-list.png') no-repeat 0 50%;
298
- padding: 2px 0 2px 20px !important;
299
- }
300
-
301
- .wsd-inside p, .wsd-inside ul, .wsd-inside ol, .wsd-inside blockquote, .wsd-inside input, .wsd-inside select {
302
- font-size: 100%;
303
- }
304
-
305
- .wsd-inside, .wsd-inside p, .wsd-inside li, .wsd-inside dl, .wsd-inside dd, .wsd-inside dt {
306
- line-height: normal !important;
307
- }
308
-
309
- #wsd_db_wrapper .inner-sidebar1 { margin: 10px 10px 0 10px; }
310
- #wsd_db_wrapper, #wsd_db_wrapper .metabox-holder {overflow:hidden; min-height:1px; }
311
- #wsd_permissions_table { margin: 15px 0; }
312
- #wsd_permissions_table th,
313
- #wsd_permissions_table td { text-align: left; }
314
- #wsd_permissions_table td { padding: 1px 7px;}
315
- #wsd_tables_list_block { clear: both;}
316
-
317
- .wsd_cursor_help { cursor: help; border-bottom: dotted 1px #000; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
img/acunetix.png DELETED
Binary file
img/agent-green.png DELETED
Binary file
img/agent-red.png DELETED
Binary file
img/facebook.gif DELETED
Binary file
img/loading45.gif DELETED
Binary file
img/wsd-logo-small.png DELETED
Binary file
img/wsd-logo.png DELETED
Binary file
inc/WPlize.php DELETED
@@ -1,161 +0,0 @@
1
- <?php
2
- /**
3
- * WPlize [Klasse]
4
- *
5
- * DE: Updaten, Setzen, Holen und L&ouml;schen von Optionen in WordPress
6
- * EN: update, set, get and delete options in WordPress
7
- *
8
- * DE:
9
- * WPlize gruppiert und verwaltet alle Optionen eines Plugins bzw.
10
- * Themes in einem einzigen Optionsfeld. Die Anzahl der
11
- * Datenbankabfragen und somit die Ladezeit des Blogs k&ouml;nnen sich
12
- * sich enorm verringern. WPlize richtet sich an die Entwickler
13
- * von WordPress-Plugins und -Themes.
14
- *
15
- * EN:
16
- * WPlize regroups and manages all options of a plugin or
17
- * theme in one option field. The amount of database queries
18
- * can be reduced and therefore the loading time of blogs
19
- * can be improved enormously. WPlize is designed for
20
- * developers of WordPress themes or plugins.
21
- *
22
- * @package WPlize.php
23
- * @author Sergej M&uuml;ller and Frank B&uuml;ltge
24
- * @since 26.09.2008
25
- * @change 09.12.2008
26
- * @access public
27
- */
28
-
29
-
30
- class WPlize {
31
-
32
-
33
- /**
34
- * WPlize [Konstruktor]
35
- *
36
- * DE: Setzt Eigenschafen fest und startet die Initialisierung
37
- * EN: set properties and start init
38
- *
39
- * @package WPlize.php
40
- * @author Sergej M&uuml;ller
41
- * @since 26.09.2008
42
- * @change 03.12.2008
43
- * @access public
44
- * @param array $option Title of the multi-option in the DB [optional]
45
- * @param array $data Array with startvalue [optional]
46
- */
47
- function WPlize($option = '', $data = array()) {
48
- if (empty($option) === true) {
49
- $this->multi_option = 'WPlize_'. md5(get_bloginfo('home'));
50
- } else {
51
- $this->multi_option = $option;
52
- }
53
-
54
- if ($data) {
55
- $this->init_option($data);
56
- }
57
- }
58
-
59
-
60
- /**
61
- * init_option
62
- *
63
- * DE: Initialisiert die Multi-Option in der DB
64
- * EN: init mulit-option in the db
65
- *
66
- * @package WPlize.php
67
- * @author Sergej M&uuml;ller
68
- * @since 26.09.2008
69
- * @change 26.09.2008
70
- * @access public
71
- * @param array $data Array with startvalues [optional]
72
- */
73
- function init_option($data = array()) {
74
- add_option($this->multi_option, $data);
75
- }
76
-
77
-
78
- /**
79
- * delete_option
80
- *
81
- * DE: Entfernt die Multi-Option aus der DB
82
- * EN: delete the multi-option of the db
83
- *
84
- * @package WPlize.php
85
- * @author Sergej M&uuml;ller
86
- * @since 26.09.2008
87
- * @change 26.09.2008
88
- * @access public
89
- */
90
- function delete_option() {
91
- delete_option($this->multi_option);
92
- }
93
-
94
-
95
- /**
96
- * get_option
97
- *
98
- * DE: Liefert den Wert einer Option
99
- * EN: get the value to option
100
- *
101
- * @package WPlize.php
102
- * @author Sergej M&uuml;ller
103
- * @since 26.09.2008
104
- * @change 26.09.2008
105
- * @access public
106
- * @param string $key Title of the option
107
- * @return mixed Value of the option [false on error]
108
- */
109
- function get_option($key) {
110
- if (empty($key) === true) {
111
- return false;
112
- }
113
-
114
- $data = get_option($this->multi_option);
115
-
116
- return @$data[$key];
117
- }
118
-
119
-
120
- /**
121
- * update_option
122
- *
123
- * DE: Weist den Optionen neue Werte zu
124
- * EN: Set new options to value
125
- *
126
- * @package WPlize.php
127
- * @author Sergej M&uuml;ller
128
- * @since 26.09.2008
129
- * @change 07.12.2008
130
- * @access public
131
- * @param mixed $key Title of the option [alternativ Array with optionen]
132
- * @param string $value Value of the option [optional]
133
- * @return boolean False on error
134
- */
135
- function update_option($key, $value = '') {
136
- if (empty($key) === true) {
137
- return false;
138
- }
139
-
140
- if (is_array($key) === true) {
141
- $data = $key;
142
- } else {
143
- $data = array($key => $value);
144
- }
145
-
146
- if (is_array(get_option($this->multi_option)) === true) {
147
- $update = array_merge(
148
- get_option($this->multi_option),
149
- $data
150
- );
151
- } else {
152
- $update = $data;
153
- }
154
-
155
- update_option(
156
- $this->multi_option,
157
- $update
158
- );
159
- }
160
- }
161
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/json.php DELETED
@@ -1,806 +0,0 @@
1
- <?php
2
- /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
-
4
- /**
5
- * Converts to and from JSON format.
6
- *
7
- * JSON (JavaScript Object Notation) is a lightweight data-interchange
8
- * format. It is easy for humans to read and write. It is easy for machines
9
- * to parse and generate. It is based on a subset of the JavaScript
10
- * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
11
- * This feature can also be found in Python. JSON is a text format that is
12
- * completely language independent but uses conventions that are familiar
13
- * to programmers of the C-family of languages, including C, C++, C#, Java,
14
- * JavaScript, Perl, TCL, and many others. These properties make JSON an
15
- * ideal data-interchange language.
16
- *
17
- * This package provides a simple encoder and decoder for JSON notation. It
18
- * is intended for use with client-side Javascript applications that make
19
- * use of HTTPRequest to perform server communication functions - data can
20
- * be encoded into JSON notation for use in a client-side javascript, or
21
- * decoded from incoming Javascript requests. JSON format is native to
22
- * Javascript, and can be directly eval()'ed with no further parsing
23
- * overhead
24
- *
25
- * All strings should be in ASCII or UTF-8 format!
26
- *
27
- * LICENSE: Redistribution and use in source and binary forms, with or
28
- * without modification, are permitted provided that the following
29
- * conditions are met: Redistributions of source code must retain the
30
- * above copyright notice, this list of conditions and the following
31
- * disclaimer. Redistributions in binary form must reproduce the above
32
- * copyright notice, this list of conditions and the following disclaimer
33
- * in the documentation and/or other materials provided with the
34
- * distribution.
35
- *
36
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
37
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
38
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
39
- * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
40
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
41
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
42
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
44
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
45
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
46
- * DAMAGE.
47
- *
48
- * @category
49
- * @package Services_JSON
50
- * @author Michal Migurski <mike-json@teczno.com>
51
- * @author Matt Knapp <mdknapp[at]gmail[dot]com>
52
- * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
53
- * @copyright 2005 Michal Migurski
54
- * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
55
- * @license http://www.opensource.org/licenses/bsd-license.php
56
- * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
57
- */
58
-
59
- /**
60
- * Marker constant for Services_JSON::decode(), used to flag stack state
61
- */
62
- define('SERVICES_JSON_SLICE', 1);
63
-
64
- /**
65
- * Marker constant for Services_JSON::decode(), used to flag stack state
66
- */
67
- define('SERVICES_JSON_IN_STR', 2);
68
-
69
- /**
70
- * Marker constant for Services_JSON::decode(), used to flag stack state
71
- */
72
- define('SERVICES_JSON_IN_ARR', 3);
73
-
74
- /**
75
- * Marker constant for Services_JSON::decode(), used to flag stack state
76
- */
77
- define('SERVICES_JSON_IN_OBJ', 4);
78
-
79
- /**
80
- * Marker constant for Services_JSON::decode(), used to flag stack state
81
- */
82
- define('SERVICES_JSON_IN_CMT', 5);
83
-
84
- /**
85
- * Behavior switch for Services_JSON::decode()
86
- */
87
- define('SERVICES_JSON_LOOSE_TYPE', 16);
88
-
89
- /**
90
- * Behavior switch for Services_JSON::decode()
91
- */
92
- define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
93
-
94
- /**
95
- * Converts to and from JSON format.
96
- *
97
- * Brief example of use:
98
- *
99
- * <code>
100
- * // create a new instance of Services_JSON
101
- * $json = new Services_JSON();
102
- *
103
- * // convert a complexe value to JSON notation, and send it to the browser
104
- * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
105
- * $output = $json->encode($value);
106
- *
107
- * print($output);
108
- * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
109
- *
110
- * // accept incoming POST data, assumed to be in JSON notation
111
- * $input = file_get_contents('php://input', 1000000);
112
- * $value = $json->decode($input);
113
- * </code>
114
- */
115
- class Services_JSON
116
- {
117
- /**
118
- * constructs a new JSON instance
119
- *
120
- * @param int $use object behavior flags; combine with boolean-OR
121
- *
122
- * possible values:
123
- * - SERVICES_JSON_LOOSE_TYPE: loose typing.
124
- * "{...}" syntax creates associative arrays
125
- * instead of objects in decode().
126
- * - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
127
- * Values which can't be encoded (e.g. resources)
128
- * appear as NULL instead of throwing errors.
129
- * By default, a deeply-nested resource will
130
- * bubble up with an error, so all return values
131
- * from encode() should be checked with isError()
132
- */
133
- function Services_JSON($use = 0)
134
- {
135
- $this->use = $use;
136
- }
137
-
138
- /**
139
- * convert a string from one UTF-16 char to one UTF-8 char
140
- *
141
- * Normally should be handled by mb_convert_encoding, but
142
- * provides a slower PHP-only method for installations
143
- * that lack the multibye string extension.
144
- *
145
- * @param string $utf16 UTF-16 character
146
- * @return string UTF-8 character
147
- * @access private
148
- */
149
- function utf162utf8($utf16)
150
- {
151
- // oh please oh please oh please oh please oh please
152
- if(function_exists('mb_convert_encoding')) {
153
- return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
154
- }
155
-
156
- $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
157
-
158
- switch(true) {
159
- case ((0x7F & $bytes) == $bytes):
160
- // this case should never be reached, because we are in ASCII range
161
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
162
- return chr(0x7F & $bytes);
163
-
164
- case (0x07FF & $bytes) == $bytes:
165
- // return a 2-byte UTF-8 character
166
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
167
- return chr(0xC0 | (($bytes >> 6) & 0x1F))
168
- . chr(0x80 | ($bytes & 0x3F));
169
-
170
- case (0xFFFF & $bytes) == $bytes:
171
- // return a 3-byte UTF-8 character
172
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
173
- return chr(0xE0 | (($bytes >> 12) & 0x0F))
174
- . chr(0x80 | (($bytes >> 6) & 0x3F))
175
- . chr(0x80 | ($bytes & 0x3F));
176
- }
177
-
178
- // ignoring UTF-32 for now, sorry
179
- return '';
180
- }
181
-
182
- /**
183
- * convert a string from one UTF-8 char to one UTF-16 char
184
- *
185
- * Normally should be handled by mb_convert_encoding, but
186
- * provides a slower PHP-only method for installations
187
- * that lack the multibye string extension.
188
- *
189
- * @param string $utf8 UTF-8 character
190
- * @return string UTF-16 character
191
- * @access private
192
- */
193
- function utf82utf16($utf8)
194
- {
195
- // oh please oh please oh please oh please oh please
196
- if(function_exists('mb_convert_encoding')) {
197
- return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
198
- }
199
-
200
- switch(strlen($utf8)) {
201
- case 1:
202
- // this case should never be reached, because we are in ASCII range
203
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
204
- return $utf8;
205
-
206
- case 2:
207
- // return a UTF-16 character from a 2-byte UTF-8 char
208
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
209
- return chr(0x07 & (ord($utf8{0}) >> 2))
210
- . chr((0xC0 & (ord($utf8{0}) << 6))
211
- | (0x3F & ord($utf8{1})));
212
-
213
- case 3:
214
- // return a UTF-16 character from a 3-byte UTF-8 char
215
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
216
- return chr((0xF0 & (ord($utf8{0}) << 4))
217
- | (0x0F & (ord($utf8{1}) >> 2)))
218
- . chr((0xC0 & (ord($utf8{1}) << 6))
219
- | (0x7F & ord($utf8{2})));
220
- }
221
-
222
- // ignoring UTF-32 for now, sorry
223
- return '';
224
- }
225
-
226
- /**
227
- * encodes an arbitrary variable into JSON format
228
- *
229
- * @param mixed $var any number, boolean, string, array, or object to be encoded.
230
- * see argument 1 to Services_JSON() above for array-parsing behavior.
231
- * if var is a strng, note that encode() always expects it
232
- * to be in ASCII or UTF-8 format!
233
- *
234
- * @return mixed JSON string representation of input var or an error if a problem occurs
235
- * @access public
236
- */
237
- function encode($var)
238
- {
239
- switch (gettype($var)) {
240
- case 'boolean':
241
- return $var ? 'true' : 'false';
242
-
243
- case 'NULL':
244
- return 'null';
245
-
246
- case 'integer':
247
- return (int) $var;
248
-
249
- case 'double':
250
- case 'float':
251
- return (float) $var;
252
-
253
- case 'string':
254
- // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
255
- $ascii = '';
256
- $strlen_var = strlen($var);
257
-
258
- /*
259
- * Iterate over every character in the string,
260
- * escaping with a slash or encoding to UTF-8 where necessary
261
- */
262
- for ($c = 0; $c < $strlen_var; ++$c) {
263
-
264
- $ord_var_c = ord($var{$c});
265
-
266
- switch (true) {
267
- case $ord_var_c == 0x08:
268
- $ascii .= '\b';
269
- break;
270
- case $ord_var_c == 0x09:
271
- $ascii .= '\t';
272
- break;
273
- case $ord_var_c == 0x0A:
274
- $ascii .= '\n';
275
- break;
276
- case $ord_var_c == 0x0C:
277
- $ascii .= '\f';
278
- break;
279
- case $ord_var_c == 0x0D:
280
- $ascii .= '\r';
281
- break;
282
-
283
- case $ord_var_c == 0x22:
284
- case $ord_var_c == 0x2F:
285
- case $ord_var_c == 0x5C:
286
- // double quote, slash, slosh
287
- $ascii .= '\\'.$var{$c};
288
- break;
289
-
290
- case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
291
- // characters U-00000000 - U-0000007F (same as ASCII)
292
- $ascii .= $var{$c};
293
- break;
294
-
295
- case (($ord_var_c & 0xE0) == 0xC0):
296
- // characters U-00000080 - U-000007FF, mask 110XXXXX
297
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
298
- $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
299
- $c += 1;
300
- $utf16 = $this->utf82utf16($char);
301
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
302
- break;
303
-
304
- case (($ord_var_c & 0xF0) == 0xE0):
305
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
306
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
307
- $char = pack('C*', $ord_var_c,
308
- ord($var{$c + 1}),
309
- ord($var{$c + 2}));
310
- $c += 2;
311
- $utf16 = $this->utf82utf16($char);
312
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
313
- break;
314
-
315
- case (($ord_var_c & 0xF8) == 0xF0):
316
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
317
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
318
- $char = pack('C*', $ord_var_c,
319
- ord($var{$c + 1}),
320
- ord($var{$c + 2}),
321
- ord($var{$c + 3}));
322
- $c += 3;
323
- $utf16 = $this->utf82utf16($char);
324
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
325
- break;
326
-
327
- case (($ord_var_c & 0xFC) == 0xF8):
328
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
329
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
330
- $char = pack('C*', $ord_var_c,
331
- ord($var{$c + 1}),
332
- ord($var{$c + 2}),
333
- ord($var{$c + 3}),
334
- ord($var{$c + 4}));
335
- $c += 4;
336
- $utf16 = $this->utf82utf16($char);
337
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
338
- break;
339
-
340
- case (($ord_var_c & 0xFE) == 0xFC):
341
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
342
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
343
- $char = pack('C*', $ord_var_c,
344
- ord($var{$c + 1}),
345
- ord($var{$c + 2}),
346
- ord($var{$c + 3}),
347
- ord($var{$c + 4}),
348
- ord($var{$c + 5}));
349
- $c += 5;
350
- $utf16 = $this->utf82utf16($char);
351
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
352
- break;
353
- }
354
- }
355
-
356
- return '"'.$ascii.'"';
357
-
358
- case 'array':
359
- /*
360
- * As per JSON spec if any array key is not an integer
361
- * we must treat the the whole array as an object. We
362
- * also try to catch a sparsely populated associative
363
- * array with numeric keys here because some JS engines
364
- * will create an array with empty indexes up to
365
- * max_index which can cause memory issues and because
366
- * the keys, which may be relevant, will be remapped
367
- * otherwise.
368
- *
369
- * As per the ECMA and JSON specification an object may
370
- * have any string as a property. Unfortunately due to
371
- * a hole in the ECMA specification if the key is a
372
- * ECMA reserved word or starts with a digit the
373
- * parameter is only accessible using ECMAScript's
374
- * bracket notation.
375
- */
376
-
377
- // treat as a JSON object
378
- if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
379
- $properties = array_map(array($this, 'name_value'),
380
- array_keys($var),
381
- array_values($var));
382
-
383
- foreach($properties as $property) {
384
- if(Services_JSON::isError($property)) {
385
- return $property;
386
- }
387
- }
388
-
389
- return '{' . join(',', $properties) . '}';
390
- }
391
-
392
- // treat it like a regular array
393
- $elements = array_map(array($this, 'encode'), $var);
394
-
395
- foreach($elements as $element) {
396
- if(Services_JSON::isError($element)) {
397
- return $element;
398
- }
399
- }
400
-
401
- return '[' . join(',', $elements) . ']';
402
-
403
- case 'object':
404
- $vars = get_object_vars($var);
405
-
406
- $properties = array_map(array($this, 'name_value'),
407
- array_keys($vars),
408
- array_values($vars));
409
-
410
- foreach($properties as $property) {
411
- if(Services_JSON::isError($property)) {
412
- return $property;
413
- }
414
- }
415
-
416
- return '{' . join(',', $properties) . '}';
417
-
418
- default:
419
- return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
420
- ? 'null'
421
- : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
422
- }
423
- }
424
-
425
- /**
426
- * array-walking function for use in generating JSON-formatted name-value pairs
427
- *
428
- * @param string $name name of key to use
429
- * @param mixed $value reference to an array element to be encoded
430
- *
431
- * @return string JSON-formatted name-value pair, like '"name":value'
432
- * @access private
433
- */
434
- function name_value($name, $value)
435
- {
436
- $encoded_value = $this->encode($value);
437
-
438
- if(Services_JSON::isError($encoded_value)) {
439
- return $encoded_value;
440
- }
441
-
442
- return $this->encode(strval($name)) . ':' . $encoded_value;
443
- }
444
-
445
- /**
446
- * reduce a string by removing leading and trailing comments and whitespace
447
- *
448
- * @param $str string string value to strip of comments and whitespace
449
- *
450
- * @return string string value stripped of comments and whitespace
451
- * @access private
452
- */
453
- function reduce_string($str)
454
- {
455
- $str = preg_replace(array(
456
-
457
- // eliminate single line comments in '// ...' form
458
- '#^\s*//(.+)$#m',
459
-
460
- // eliminate multi-line comments in '/* ... */' form, at start of string
461
- '#^\s*/\*(.+)\*/#Us',
462
-
463
- // eliminate multi-line comments in '/* ... */' form, at end of string
464
- '#/\*(.+)\*/\s*$#Us'
465
-
466
- ), '', $str);
467
-
468
- // eliminate extraneous space
469
- return trim($str);
470
- }
471
-
472
- /**
473
- * decodes a JSON string into appropriate variable
474
- *
475
- * @param string $str JSON-formatted string
476
- *
477
- * @return mixed number, boolean, string, array, or object
478
- * corresponding to given JSON input string.
479
- * See argument 1 to Services_JSON() above for object-output behavior.
480
- * Note that decode() always returns strings
481
- * in ASCII or UTF-8 format!
482
- * @access public
483
- */
484
- function decode($str)
485
- {
486
- $str = $this->reduce_string($str);
487
-
488
- switch (strtolower($str)) {
489
- case 'true':
490
- return true;
491
-
492
- case 'false':
493
- return false;
494
-
495
- case 'null':
496
- return null;
497
-
498
- default:
499
- $m = array();
500
-
501
- if (is_numeric($str)) {
502
- // Lookie-loo, it's a number
503
-
504
- // This would work on its own, but I'm trying to be
505
- // good about returning integers where appropriate:
506
- // return (float)$str;
507
-
508
- // Return float or int, as appropriate
509
- return ((float)$str == (integer)$str)
510
- ? (integer)$str
511
- : (float)$str;
512
-
513
- } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
514
- // STRINGS RETURNED IN UTF-8 FORMAT
515
- $delim = substr($str, 0, 1);
516
- $chrs = substr($str, 1, -1);
517
- $utf8 = '';
518
- $strlen_chrs = strlen($chrs);
519
-
520
- for ($c = 0; $c < $strlen_chrs; ++$c) {
521
-
522
- $substr_chrs_c_2 = substr($chrs, $c, 2);
523
- $ord_chrs_c = ord($chrs{$c});
524
-
525
- switch (true) {
526
- case $substr_chrs_c_2 == '\b':
527
- $utf8 .= chr(0x08);
528
- ++$c;
529
- break;
530
- case $substr_chrs_c_2 == '\t':
531
- $utf8 .= chr(0x09);
532
- ++$c;
533
- break;
534
- case $substr_chrs_c_2 == '\n':
535
- $utf8 .= chr(0x0A);
536
- ++$c;
537
- break;
538
- case $substr_chrs_c_2 == '\f':
539
- $utf8 .= chr(0x0C);
540
- ++$c;
541
- break;
542
- case $substr_chrs_c_2 == '\r':
543
- $utf8 .= chr(0x0D);
544
- ++$c;
545
- break;
546
-
547
- case $substr_chrs_c_2 == '\\"':
548
- case $substr_chrs_c_2 == '\\\'':
549
- case $substr_chrs_c_2 == '\\\\':
550
- case $substr_chrs_c_2 == '\\/':
551
- if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
552
- ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
553
- $utf8 .= $chrs{++$c};
554
- }
555
- break;
556
-
557
- case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
558
- // single, escaped unicode character
559
- $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
560
- . chr(hexdec(substr($chrs, ($c + 4), 2)));
561
- $utf8 .= $this->utf162utf8($utf16);
562
- $c += 5;
563
- break;
564
-
565
- case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
566
- $utf8 .= $chrs{$c};
567
- break;
568
-
569
- case ($ord_chrs_c & 0xE0) == 0xC0:
570
- // characters U-00000080 - U-000007FF, mask 110XXXXX
571
- //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
572
- $utf8 .= substr($chrs, $c, 2);
573
- ++$c;
574
- break;
575
-
576
- case ($ord_chrs_c & 0xF0) == 0xE0:
577
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
578
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
579
- $utf8 .= substr($chrs, $c, 3);
580
- $c += 2;
581
- break;
582
-
583
- case ($ord_chrs_c & 0xF8) == 0xF0:
584
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
585
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
586
- $utf8 .= substr($chrs, $c, 4);
587
- $c += 3;
588
- break;
589
-
590
- case ($ord_chrs_c & 0xFC) == 0xF8:
591
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
592
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
593
- $utf8 .= substr($chrs, $c, 5);
594
- $c += 4;
595
- break;
596
-
597
- case ($ord_chrs_c & 0xFE) == 0xFC:
598
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
599
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
600
- $utf8 .= substr($chrs, $c, 6);
601
- $c += 5;
602
- break;
603
-
604
- }
605
-
606
- }
607
-
608
- return $utf8;
609
-
610
- } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
611
- // array, or object notation
612
-
613
- if ($str{0} == '[') {
614
- $stk = array(SERVICES_JSON_IN_ARR);
615
- $arr = array();
616
- } else {
617
- if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
618
- $stk = array(SERVICES_JSON_IN_OBJ);
619
- $obj = array();
620
- } else {
621
- $stk = array(SERVICES_JSON_IN_OBJ);
622
- $obj = new stdClass();
623
- }
624
- }
625
-
626
- array_push($stk, array('what' => SERVICES_JSON_SLICE,
627
- 'where' => 0,
628
- 'delim' => false));
629
-
630
- $chrs = substr($str, 1, -1);
631
- $chrs = $this->reduce_string($chrs);
632
-
633
- if ($chrs == '') {
634
- if (reset($stk) == SERVICES_JSON_IN_ARR) {
635
- return $arr;
636
-
637
- } else {
638
- return $obj;
639
-
640
- }
641
- }
642
-
643
- //print("\nparsing {$chrs}\n");
644
-
645
- $strlen_chrs = strlen($chrs);
646
-
647
- for ($c = 0; $c <= $strlen_chrs; ++$c) {
648
-
649
- $top = end($stk);
650
- $substr_chrs_c_2 = substr($chrs, $c, 2);
651
-
652
- if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
653
- // found a comma that is not inside a string, array, etc.,
654
- // OR we've reached the end of the character list
655
- $slice = substr($chrs, $top['where'], ($c - $top['where']));
656
- array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
657
- //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
658
-
659
- if (reset($stk) == SERVICES_JSON_IN_ARR) {
660
- // we are in an array, so just push an element onto the stack
661
- array_push($arr, $this->decode($slice));
662
-
663
- } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
664
- // we are in an object, so figure
665
- // out the property name and set an
666
- // element in an associative array,
667
- // for now
668
- $parts = array();
669
-
670
- if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
671
- // "name":value pair
672
- $key = $this->decode($parts[1]);
673
- $val = $this->decode($parts[2]);
674
-
675
- if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
676
- $obj[$key] = $val;
677
- } else {
678
- $obj->$key = $val;
679
- }
680
- } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
681
- // name:value pair, where name is unquoted
682
- $key = $parts[1];
683
- $val = $this->decode($parts[2]);
684
-
685
- if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
686
- $obj[$key] = $val;
687
- } else {
688
- $obj->$key = $val;
689
- }
690
- }
691
-
692
- }
693
-
694
- } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
695
- // found a quote, and we are not inside a string
696
- array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
697
- //print("Found start of string at {$c}\n");
698
-
699
- } elseif (($chrs{$c} == $top['delim']) &&
700
- ($top['what'] == SERVICES_JSON_IN_STR) &&
701
- ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
702
- // found a quote, we're in a string, and it's not escaped
703
- // we know that it's not escaped becase there is _not_ an
704
- // odd number of backslashes at the end of the string so far
705
- array_pop($stk);
706
- //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
707
-
708
- } elseif (($chrs{$c} == '[') &&
709
- in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
710
- // found a left-bracket, and we are in an array, object, or slice
711
- array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
712
- //print("Found start of array at {$c}\n");
713
-
714
- } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
715
- // found a right-bracket, and we're in an array
716
- array_pop($stk);
717
- //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
718
-
719
- } elseif (($chrs{$c} == '{') &&
720
- in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
721
- // found a left-brace, and we are in an array, object, or slice
722
- array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
723
- //print("Found start of object at {$c}\n");
724
-
725
- } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
726
- // found a right-brace, and we're in an object
727
- array_pop($stk);
728
- //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
729
-
730
- } elseif (($substr_chrs_c_2 == '/*') &&
731
- in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
732
- // found a comment start, and we are in an array, object, or slice
733
- array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
734
- $c++;
735
- //print("Found start of comment at {$c}\n");
736
-
737
- } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
738
- // found a comment end, and we're in one now
739
- array_pop($stk);
740
- $c++;
741
-
742
- for ($i = $top['where']; $i <= $c; ++$i)
743
- $chrs = substr_replace($chrs, ' ', $i, 1);
744
-
745
- //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
746
-
747
- }
748
-
749
- }
750
-
751
- if (reset($stk) == SERVICES_JSON_IN_ARR) {
752
- return $arr;
753
-
754
- } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
755
- return $obj;
756
-
757
- }
758
-
759
- }
760
- }
761
- }
762
-
763
- /**
764
- * @todo Ultimately, this should just call PEAR::isError()
765
- */
766
- function isError($data, $code = null)
767
- {
768
- if (class_exists('pear')) {
769
- return PEAR::isError($data, $code);
770
- } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
771
- is_subclass_of($data, 'services_json_error'))) {
772
- return true;
773
- }
774
-
775
- return false;
776
- }
777
- }
778
-
779
- if (class_exists('PEAR_Error')) {
780
-
781
- class Services_JSON_Error extends PEAR_Error
782
- {
783
- function Services_JSON_Error($message = 'unknown error', $code = null,
784
- $mode = null, $options = null, $userinfo = null)
785
- {
786
- parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
787
- }
788
- }
789
-
790
- } else {
791
-
792
- /**
793
- * @todo Ultimately, this class shall be descended from PEAR_Error
794
- */
795
- class Services_JSON_Error
796
- {
797
- function Services_JSON_Error($message = 'unknown error', $code = null,
798
- $mode = null, $options = null, $userinfo = null)
799
- {
800
-
801
- }
802
- }
803
-
804
- }
805
-
806
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/readme_de.txt DELETED
@@ -1,88 +0,0 @@
1
- /**
2
- * WPlize [Klasse]
3
- *
4
- * Updaten, Setzen, Holen und Löschen von Optionen in WordPress
5
- *
6
- * WPlize gruppiert und verwaltet alle Optionen eines Plugins bzw.
7
- * Themes in einem einzigen Optionsfeld. Die Anzahl der
8
- * Datenbankabfragen und somit die Ladezeit des Blogs können sich
9
- * sich enorm verringern. WPlize richtet sich an die Entwickler
10
- * von WordPress-Plugins und -Themes.
11
- *
12
- * @package WPlize.php
13
- * @author Sergej Müller und Frank Bültge
14
- * @since 26.09.2008
15
- * @change 10.11.2008 15:41:36
16
- * @access public
17
- */
18
-
19
-
20
- /*****************************************************************/
21
- /* EINBINDEN */
22
- /*****************************************************************/
23
-
24
- if ( !class_exists('WPlize') ) {
25
- require_once('WPlize.php');
26
- }
27
-
28
-
29
- /*****************************************************************/
30
- /* BEISPIELE */
31
- /*****************************************************************/
32
-
33
-
34
- /**
35
- * Multi-Option initialisieren
36
- *
37
- * @param string Name der Multi-Option
38
- * @param array Array mit Anfangswerten [optional]
39
- */
40
-
41
- $WPlize = new WPlize(
42
- 'my_plugin',
43
- array(
44
- 'my_key' => 'my_value',
45
- 'your_key' => 'your_value'
46
- )
47
- );
48
-
49
-
50
- /**
51
- * Option updaten [Variante 1]
52
- *
53
- * @param string Name der Option
54
- * @param string Wert der Option
55
- */
56
-
57
- $WPlize->update_option('my_key', 'simple_value');
58
-
59
-
60
- /**
61
- * Option updaten [Variante 2]
62
- *
63
- * @param array Array mit Optionspaaren
64
- */
65
-
66
- $WPlize->update_option(
67
- array(
68
- 'my_key' => 'my_value',
69
- 'your_key' => 'simple_value'
70
- )
71
- );
72
-
73
-
74
- /**
75
- * Option auslesen
76
- *
77
- * @param string Name der Option
78
- * @return mixed Wert der Option [false im Fehlerfall]
79
- */
80
-
81
- $WPlize->get_option('your_key');
82
-
83
-
84
- /**
85
- * Multi-Option entfernen
86
- */
87
-
88
- $WPlize->delete_option();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/readme_en.txt DELETED
@@ -1,88 +0,0 @@
1
- /**
2
- * WPlize [class]
3
- *
4
- * update, set, get and delete options in WordPress
5
- *
6
- * WPlize regroups and manages all options of a plugin or
7
- * theme in one option field. The amount of database queries
8
- * can be reduced and therefore the loading time of blogs
9
- * can be improved enormously. WPlize is designed for
10
- * developers of WordPress themes or plugins.
11
- *
12
- * @package WPlize.php
13
- * @author Sergej M&uuml;ller and Frank B&uuml;ltge
14
- * @since 26.09.2008
15
- * @change 26.09.2008
16
- * @access public
17
- */
18
-
19
-
20
- /*****************************************************************/
21
- /* EMBEDDING */
22
- /*****************************************************************/
23
-
24
- if ( !class_exists('WPlize') ) {
25
- require_once('WPlize.php');
26
- }
27
-
28
-
29
- /*****************************************************************/
30
- /* EXAMPLE */
31
- /*****************************************************************/
32
-
33
-
34
- /**
35
- * init multi-option
36
- *
37
- * @param string Title of the multi-option
38
- * @param array Array with startvalues [optional]
39
- */
40
-
41
- $WPlize = new WPlize(
42
- 'my_plugin',
43
- array(
44
- 'my_key' => 'my_value',
45
- 'your_key' => 'your_value'
46
- )
47
- );
48
-
49
-
50
- /**
51
- * update option [alternative 1]
52
- *
53
- * @param string Title of the option
54
- * @param string Value of the option
55
- */
56
-
57
- $WPlize->update_option('my_key', 'simple_value');
58
-
59
-
60
- /**
61
- * update option [alternative 2]
62
- *
63
- * @param array Array with optionscouple
64
- */
65
-
66
- $WPlize->update_option(
67
- array(
68
- 'my_key' => 'my_value',
69
- 'your_key' => 'simple_value'
70
- )
71
- );
72
-
73
-
74
- /**
75
- * read option
76
- *
77
- * @param string Name of the option
78
- * @return mixed Value of the option [false on error]
79
- */
80
-
81
- $WPlize->get_option('your_key');
82
-
83
-
84
- /**
85
- * delete multi-option
86
- */
87
-
88
- $WPlize->delete_option();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/recaptchalib.php DELETED
@@ -1,277 +0,0 @@
1
- <?php
2
- /*
3
- * This is a PHP library that handles calling reCAPTCHA.
4
- * - Documentation and latest version
5
- * http://recaptcha.net/plugins/php/
6
- * - Get a reCAPTCHA API Key
7
- * https://www.google.com/recaptcha/admin/create
8
- * - Discussion group
9
- * http://groups.google.com/group/recaptcha
10
- *
11
- * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
12
- * AUTHORS:
13
- * Mike Crawford
14
- * Ben Maurer
15
- *
16
- * Permission is hereby granted, free of charge, to any person obtaining a copy
17
- * of this software and associated documentation files (the "Software"), to deal
18
- * in the Software without restriction, including without limitation the rights
19
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
- * copies of the Software, and to permit persons to whom the Software is
21
- * furnished to do so, subject to the following conditions:
22
- *
23
- * The above copyright notice and this permission notice shall be included in
24
- * all copies or substantial portions of the Software.
25
- *
26
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
- * THE SOFTWARE.
33
- */
34
-
35
- /**
36
- * The reCAPTCHA server URL's
37
- */
38
- define("WSD_RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
39
- define("WSD_RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
40
- define("WSD_RECAPTCHA_VERIFY_SERVER", "www.google.com");
41
-
42
- /**
43
- * Encodes the given data into a query string format
44
- * @param $data - array of string elements to be encoded
45
- * @return string - encoded request
46
- */
47
- function wsd__recaptcha_qsencode ($data) {
48
- $req = "";
49
- foreach ( $data as $key => $value )
50
- $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
51
-
52
- // Cut the last '&'
53
- $req=substr($req,0,strlen($req)-1);
54
- return $req;
55
- }
56
-
57
-
58
-
59
- /**
60
- * Submits an HTTP POST to a reCAPTCHA server
61
- * @param string $host
62
- * @param string $path
63
- * @param array $data
64
- * @param int port
65
- * @return array response
66
- */
67
- function wsd__recaptcha_http_post($host, $path, $data, $port = 80) {
68
-
69
- $req = wsd__recaptcha_qsencode ($data);
70
-
71
- $http_request = "POST $path HTTP/1.0\r\n";
72
- $http_request .= "Host: $host\r\n";
73
- $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
74
- $http_request .= "Content-Length: " . strlen($req) . "\r\n";
75
- $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
76
- $http_request .= "\r\n";
77
- $http_request .= $req;
78
-
79
- $response = '';
80
- if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
81
- die ('Could not open socket');
82
- }
83
-
84
- fwrite($fs, $http_request);
85
-
86
- while ( !feof($fs) )
87
- $response .= fgets($fs, 1160); // One TCP-IP packet
88
- fclose($fs);
89
- $response = explode("\r\n\r\n", $response, 2);
90
-
91
- return $response;
92
- }
93
-
94
-
95
-
96
- /**
97
- * Gets the challenge HTML (javascript and non-javascript version).
98
- * This is called from the browser, and the resulting reCAPTCHA HTML widget
99
- * is embedded within the HTML form it was called from.
100
- * @param string $pubkey A public key for reCAPTCHA
101
- * @param string $error The error given by reCAPTCHA (optional, default is null)
102
- * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
103
-
104
- * @return string - The HTML to be embedded in the user's form.
105
- */
106
- function wsd_recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
107
- {
108
- if ($pubkey == null || $pubkey == '') {
109
- die ('To use reCAPTCHA you must get an API key from <a href="https://www.google.com/recaptcha/admin/create" target="_blank">https://www.google.com/recaptcha/admin/create</a>');
110
- }
111
-
112
- if ($use_ssl) {
113
- $server = WSD_RECAPTCHA_API_SECURE_SERVER;
114
- } else {
115
- $server = WSD_RECAPTCHA_API_SERVER;
116
- }
117
-
118
- $errorpart = "";
119
- if ($error) {
120
- $errorpart = "&amp;error=" . $error;
121
- }
122
- return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
123
-
124
- <noscript>
125
- <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
126
- <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
127
- <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
128
- </noscript>';
129
- }
130
-
131
-
132
-
133
-
134
- /**
135
- * A wsd_ReCaptchaResponse is returned from wsd_recaptcha_check_answer()
136
- */
137
- class wsd_ReCaptchaResponse {
138
- var $is_valid;
139
- var $error;
140
- }
141
-
142
-
143
- /**
144
- * Calls an HTTP POST function to verify if the user's guess was correct
145
- * @param string $privkey
146
- * @param string $remoteip
147
- * @param string $challenge
148
- * @param string $response
149
- * @param array $extra_params an array of extra variables to post to the server
150
- * @return wsd_ReCaptchaResponse
151
- */
152
- function wsd_recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
153
- {
154
- if ($privkey == null || $privkey == '') {
155
- die ('To use reCAPTCHA you must get an API key from <a href="https://www.google.com/recaptcha/admin/create" target="_blank">https://www.google.com/recaptcha/admin/create</a>');
156
- }
157
-
158
- if ($remoteip == null || $remoteip == '') {
159
- die ('For security reasons, you must pass the remote ip to reCAPTCHA');
160
- }
161
-
162
-
163
-
164
- //discard spam submissions
165
- if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
166
- $recaptcha_response = new wsd_ReCaptchaResponse();
167
- $recaptcha_response->is_valid = false;
168
- $recaptcha_response->error = 'incorrect-captcha-sol';
169
- return $recaptcha_response;
170
- }
171
-
172
- $response = wsd__recaptcha_http_post (WSD_RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
173
- array (
174
- 'privatekey' => $privkey,
175
- 'remoteip' => $remoteip,
176
- 'challenge' => $challenge,
177
- 'response' => $response
178
- ) + $extra_params
179
- );
180
-
181
- $answers = explode ("\n", $response [1]);
182
- $recaptcha_response = new wsd_ReCaptchaResponse();
183
-
184
- if (trim ($answers [0]) == 'true') {
185
- $recaptcha_response->is_valid = true;
186
- }
187
- else {
188
- $recaptcha_response->is_valid = false;
189
- $recaptcha_response->error = $answers [1];
190
- }
191
- return $recaptcha_response;
192
-
193
- }
194
-
195
- /**
196
- * gets a URL where the user can sign up for reCAPTCHA. If your application
197
- * has a configuration page where you enter a key, you should provide a link
198
- * using this function.
199
- * @param string $domain The domain where the page is hosted
200
- * @param string $appname The name of your application
201
- */
202
- function wsd_recaptcha_get_signup_url ($domain = null, $appname = null) {
203
- return 'https://www.google.com/recaptcha/admin/create?' . wsd__recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
204
- }
205
-
206
- function wsd__recaptcha_aes_pad($val) {
207
- $block_size = 16;
208
- $numpad = $block_size - (strlen ($val) % $block_size);
209
- return str_pad($val, strlen ($val) + $numpad, chr($numpad));
210
- }
211
-
212
- /* Mailhide related code */
213
-
214
- function wsd__recaptcha_aes_encrypt($val,$ky) {
215
- if (! function_exists ("mcrypt_encrypt")) {
216
- die ('To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.');
217
- }
218
- $mode=MCRYPT_MODE_CBC;
219
- $enc=MCRYPT_RIJNDAEL_128;
220
- $val=wsd__recaptcha_aes_pad($val);
221
- return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
222
- }
223
-
224
-
225
- function wsd__wsd_recaptcha_mailhide_urlbase64 ($x) {
226
- return strtr(base64_encode ($x), '+/', '-_');
227
- }
228
-
229
- /* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
230
- function wsd_recaptcha_mailhide_url($pubkey, $privkey, $email) {
231
- if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
232
- die ('To use reCAPTCHA Mailhide, you have to sign up for a public and private key, ' .
233
- 'you can do so at <a href="http://www.google.com/recaptcha/mailhide/apikey" target="_blank">http://www.google.com/recaptcha/mailhide/apikey</a>');
234
- }
235
-
236
-
237
- $ky = pack('H*', $privkey);
238
- $cryptmail = wsd__recaptcha_aes_encrypt ($email, $ky);
239
-
240
- return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . wsd__wsd_recaptcha_mailhide_urlbase64 ($cryptmail);
241
- }
242
-
243
- /**
244
- * gets the parts of the email to expose to the user.
245
- * eg, given johndoe@example,com return ["john", "example.com"].
246
- * the email is then displayed as john...@example.com
247
- */
248
- function wsd__recaptcha_mailhide_email_parts ($email) {
249
- $arr = preg_split("/@/", $email );
250
-
251
- if (strlen ($arr[0]) <= 4) {
252
- $arr[0] = substr ($arr[0], 0, 1);
253
- } else if (strlen ($arr[0]) <= 6) {
254
- $arr[0] = substr ($arr[0], 0, 3);
255
- } else {
256
- $arr[0] = substr ($arr[0], 0, 4);
257
- }
258
- return $arr;
259
- }
260
-
261
- /**
262
- * Gets html to display an email address given a public an private key.
263
- * to get a key, go to:
264
- *
265
- * http://www.google.com/recaptcha/mailhide/apikey
266
- */
267
- function wsd_recaptcha_mailhide_html($pubkey, $privkey, $email) {
268
- $emailparts = wsd__recaptcha_mailhide_email_parts ($email);
269
- $url = wsd_recaptcha_mailhide_url ($pubkey, $privkey, $email);
270
-
271
- return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
272
- "' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
273
-
274
- }
275
-
276
-
277
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/swUtil.php DELETED
@@ -1,169 +0,0 @@
1
- <?php
2
- /**
3
- * utility methods
4
- *
5
- * @author kos
6
- */
7
- class swUtil
8
- {
9
- //@since v2.0.6
10
- private static $_pluginID = 'acx_plugin_dashboard_widget';
11
- /**
12
- * @public
13
- * @static
14
- * @since v0.1
15
- * @global SWP_WSD_BLOG_FEED
16
- *
17
- * Retrieve and display a list of links for an existing RSS feed, limiting the selection to the 5 most recent items.
18
- *
19
- * @return void
20
- */
21
- public static function displayDashboardWidget()
22
- {
23
- // @since v2.0.6
24
- if ($_SERVER['REQUEST_METHOD'] == 'POST')
25
- {
26
- $opt = get_option('WSD-RSS-WGT-DISPLAY');
27
- if (empty($opt)) {
28
- add_option('WSD-RSS-WGT-DISPLAY', 'no');
29
- }
30
- else {
31
- update_option('WSD-RSS-WGT-DISPLAY', 'no');
32
- }
33
- self::_hideDashboardWidget();
34
- return;
35
- }
36
-
37
- //@ flag
38
- $run = false;
39
-
40
- //@ check cache
41
- $optData = get_option('wsd_feed_data');
42
- if (! empty($optData))
43
- {
44
- if (is_object($optData))
45
- {
46
-
47
- $lastUpdateTime = @$optData->expires;
48
- // invalid cache
49
- if (empty($lastUpdateTime)) { $run = true; }
50
- else
51
- {
52
- $nextUpdateTime = $lastUpdateTime+(24*60*60);
53
- if ($nextUpdateTime >= $lastUpdateTime)
54
- {
55
- $data = @$optData->data;
56
- if (empty($data)) { $run = true; }
57
- else {
58
- // still a valid cache
59
- echo $data;
60
- return;
61
- }
62
- }
63
- else { $run = true; }
64
- }
65
- }
66
- else { $run = true; }
67
- }
68
- else { $run = true; }
69
-
70
- if (!$run) { return; }
71
-
72
- $rss = fetch_feed(SWP_WSD_BLOG_FEED);
73
-
74
- $out = '';
75
- if (is_wp_error( $rss ) )
76
- {
77
- $out = '<li>'.__('An error has occurred while trying to load the rss feed!').'</li>';
78
- echo $out;
79
- return;
80
- }
81
- else
82
- {
83
- // Limit to 5 entries.
84
- $maxitems = $rss->get_item_quantity(5);
85
-
86
- // Build an array of all the items,
87
- $rss_items = $rss->get_items(0, $maxitems);
88
-
89
- $out .= '<ul>';
90
- if ($maxitems == 0)
91
- {
92
- $out.= '<li>'.__('There are no entries for this rss feed!').'</li>';
93
- }
94
- else
95
- {
96
- foreach ( $rss_items as $item ) :
97
- $url = esc_url($item->get_permalink());
98
- $out.= '<li>';
99
- $out.= '<h4><a href="'.$url.'" target="_blank" title="Posted on '.$item->get_date('F j, Y | g:i a').'">';
100
- $out.= esc_html( $item->get_title() );
101
- $out.= '</a></h4>';
102
- $out.= '<p>';
103
- $d = $item->get_description();
104
- $p = substr($d, 0, 115).' <a href="'.$url.'" target="_blank" title="Read all article">[...]</a>';
105
- $out.= $p;
106
- $out.= '</p>';
107
- $out.= '</li>';
108
- endforeach;
109
- }
110
- $out.= '</ul>';
111
-
112
- $path = trailingslashit(get_option('siteurl')).'wp-content/plugins/secure-wordpress/';
113
-
114
- $out .= '<div style="border-top: solid 1px #ccc; margin-top: 4px; padding: 2px 0;">';
115
- $out .= '<p style="margin: 5px 0 0 0; padding: 0 0; line-height: normal; overflow: hidden;">';
116
- $out .= '<a href="http://feeds.feedburner.com/Websitedefendercom"
117
- style="float: left; display: block; width: 50%; text-align: right; margin-left: 30px;
118
- padding-right: 22px; background: url('.$path.'img/rss.png) no-repeat right center;"
119
- target="_blank">Follow us on RSS</a>';
120
- $out .= '<a href="#" id="wsd_close_rss_widget"
121
- style="float: right; display: block; width: 16px; height: 16px;
122
- margin: 0 0; background: url('.$path.'img/close-button.png) no-repeat 0 0;"
123
- title="Close widget"></a><form id="wsd_form" method="post"></form>';
124
- $out .= '</p>';
125
- $out .= '<script type="text/javascript">
126
- document.getElementById("wsd_close_rss_widget").onclick = function(){
127
- document.getElementById("wsd_form").submit();
128
- };
129
- </script>';
130
- $out .= '</div>';
131
- }
132
-
133
- // Update cache
134
- $obj = new stdClass();
135
- $obj->expires = time();
136
- $obj->data = $out;
137
- update_option('wsd_feed_data', $obj);
138
-
139
- echo $out;
140
- }
141
-
142
- /**
143
- * @public
144
- * @static
145
- * Add the rss widget to dashboard
146
- * @return void
147
- */
148
- public static function addDashboardWidget()
149
- {
150
- // update 10/04/2011
151
- $opt = get_option('WSD-RSS-WGT-DISPLAY');
152
- if(strtolower($opt) == 'yes'):
153
- wp_add_dashboard_widget(self::$_pluginID,
154
- __('WebsiteDefender news and updates'),
155
- 'swUtil::displayDashboardWidget');
156
- endif;
157
- }
158
- /**
159
- * Hide the dashboard rss widget
160
- * @static
161
- * @public
162
- * @since v2.0.6
163
- */
164
- public static function _hideDashboardWidget()
165
- {
166
- echo '<script>document.getElementById("'.self::$_pluginID.'").style.display = "none";</script>';
167
- }
168
-
169
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/swWSD.php DELETED
@@ -1,857 +0,0 @@
1
- <?php if (!defined('ABSPATH')) { exit; }
2
- /**
3
- * Facilitates the login/register with websitedefender.com for website scanner.
4
- *
5
- * @author WebsiteDefender
6
- * $rev #1 07/16/2011 {c}$
7
- * $rev #2 07/21/2011 {c}$
8
- * $rev #3 09/20/2011 {c}$
9
- * $rev #4 09/30/2011 {c}$
10
- */
11
- class swWSD
12
- {
13
- const WSD_URL = 'https://dashboard.websitedefender.com/';
14
- const WSD_URL_RPC = 'https://dashboard.websitedefender.com/jsrpc.php';
15
- const WSD_URL_DOWN = 'https://dashboard.websitedefender.com/download.php';
16
- const WSD_SOURCE = 3;
17
- //error codes
18
- const WSD_ERROR_LIMITATION = 0x27;
19
- const WSD_ERROR_WPP_SERVICE_DOWN = 0x50;
20
- const WSD_ERROR_WPP_ERROR_INVALID_URL = 0x51;
21
- const WSD_ERROR_WPP_URL_REGISTERED = 0x52;
22
- const WSD_WSD_ERROR_WPP_NEWUSR_PARAM = 0x53;
23
- const WSD_ERROR_WPP_INVALID_CAPTCHA =0x54 ;
24
- const WSD_ERROR_WPP_USER_EXIST = 0x55;
25
- const WSD_ERROR_WPP_URL_EXIST = 0x56;
26
- //http status
27
- const HTTP_STATUS = 0;
28
- const HTTP_HEADERS = 1;
29
- const HTTP_BODY = 2;
30
- const HTTP_CHUNK_HEADER = 3;
31
- const HTTP_CHUNK_BODY = 4;
32
-
33
-
34
- // constructor
35
- public function __construct() {}
36
-
37
-
38
- function wsd_site_url(){
39
- $url = get_option( 'siteurl' );
40
- return trailingslashit($url);
41
- }
42
-
43
- function wsd_parseUrl($url)
44
- {
45
- $result = parse_url($url);
46
- if($result === null) { return array("error"=>"Invalid URL."); }
47
- $result["error"] = null;
48
- if(!array_key_exists("port", $result)) {$result["port"] = 80;}
49
- if(!array_key_exists("scheme", $result)) {$result["scheme"] = "http";}
50
- if(!array_key_exists("query", $result)) {$result["query"] = "";}
51
- else {$result["query"] = "?" . $result["query"];}
52
- if(array_key_exists("host", $result))
53
- {
54
- if(!array_key_exists("path", $result)) $result["path"] = "";
55
- }
56
- else
57
- {
58
- if(array_key_exists("path", $result))
59
- {
60
- $dirs = explode("/", $result["path"], 2);
61
- $result["host"] = $dirs[0];
62
- if(count($dirs)>1) {
63
- $result["path"] = "/".$dirs[1];
64
- }
65
- else {$result["path"] = "/";}
66
- }
67
- else {return array("error"=>"Invalid URL (no host).");}
68
- }
69
-
70
- if($result["host"] == "") {return array("error"=>"Invalid URL (no host).");}
71
-
72
- $scheme = "http";
73
- if(array_key_exists("scheme", $result)) {$scheme = $result["scheme"];}
74
-
75
- if((strcasecmp($scheme,"http")!=0) && (strcasecmp($scheme,"https")!=0)) {return array("error"=>"Invalid URL (unknown scheme).");}
76
-
77
- if(strcasecmp($scheme,"https")==0) $result["port"] = 443;
78
-
79
- $userPass = "";
80
- if(array_key_exists("user", $result) && array_key_exists("pass", $result)) {
81
- $userPass = $result["user"].":".$result["pass"]."@";
82
- }
83
-
84
- $port = "";
85
- if(array_key_exists("port", $result)) {$port = ":".$result["port"];}
86
-
87
- $result["all"] = $scheme."://".$userPass.$result["host"].$port;
88
-
89
- return $result;
90
- }
91
-
92
- function wsd_httpRequest($verb, $url, $body="", $headers=array(), $timeout = 10)
93
- {
94
- $e = error_reporting(0);
95
-
96
- $result = array();
97
- $result["cookie"] = null;
98
- $result["body"] = "";
99
- $result["length"] = null;
100
- $result["error"] = null;
101
-
102
- $now = time();
103
- $url = $this->wsd_parseUrl($url);
104
-
105
- if($url["error"] !== null) {return $url;}
106
-
107
- $scheme = $url["scheme"]=="https" ? "ssl://" : "";
108
-
109
- $fp = fsockopen($scheme.$url["host"], $url["port"] , $errno, $errstr, $timeout);
110
-
111
- if (!$fp)
112
- {
113
- if($scheme == "ssl://")
114
- {
115
- $fp = fsockopen($url["host"], 80 , $errno, $errstr, $timeout);
116
- if (!$fp)
117
- {
118
- error_reporting($e);
119
- return array("error"=>"Can't connect to server [$errno]");
120
- }
121
- }
122
- else
123
- {
124
- error_reporting($e);
125
- return array("error"=>"Can't connect to server [$errno].");
126
- }
127
- }
128
-
129
- $out = $verb." ".$url["path"].$url["query"]." HTTP/1.1\r\n";
130
- $out .= "Host: ". $url["host"] . "\r\n";
131
- $out .= "Connection: Close\r\n";
132
- $out .= "Accept-Encoding: identity\r\n";
133
- if($verb == "POST") {$out .= "Content-Length: " . strlen($body) . "\r\n"; }
134
- foreach ($headers as $name => $value) {$out .= $name .": " . $value . "\r\n";}
135
- $out .= "\r\n";
136
- if($verb == "POST") {$out .= $body;}
137
- fwrite($fp, $out);
138
- fflush($fp);
139
-
140
- //print "<br>".str_replace("\r\n", "<br>", $out)."<br>";
141
-
142
- $status = self::HTTP_STATUS;
143
- $chunked = false;
144
- $lastChunk = "";
145
- $chunkLength = 0;
146
-
147
- while (!feof($fp))
148
- {
149
- $remaining = $timeout - (time() - $now);
150
- if($remaining < 0) {return array("error"=>"Request timed out [1].");}
151
-
152
- stream_set_timeout($fp, $remaining + 1);
153
- $data = fgets($fp, 4096);
154
- $info = stream_get_meta_data($fp);
155
-
156
- if ($info["timed_out"])
157
- {
158
- error_reporting($e);
159
- return array("error"=>"Request timed out [2].");
160
- }
161
-
162
- //print($data."<br>");
163
-
164
- if($status == self::HTTP_STATUS)
165
- {
166
- //TODO: check status for 200, error on rest, eventually work arround 302 303
167
- $resultStatus = trim($data);
168
- $status = self::HTTP_HEADERS;
169
- continue;
170
- }
171
-
172
- if($status == self::HTTP_HEADERS)
173
- {
174
- if($data == "\r\n")
175
- {
176
- if($chunked) {
177
- $status = self::HTTP_CHUNK_HEADER;
178
- }
179
- else {$status = self::HTTP_BODY;}
180
-
181
- continue;
182
- }
183
-
184
- $data = trim($data);
185
- $separator = strpos($data, ": ");
186
-
187
- if(($separator === false)||($separator == 0) || ($separator >= (strlen($data) -2))) {
188
- return array("error"=>"Invalid HTTP response header.");
189
- }
190
-
191
- $name = substr($data, 0, $separator);
192
- $value = substr($data, $separator + 2);
193
- if(strcasecmp("Set-Cookie", $name) == 0)
194
- {
195
- $result["cookie"] = $value;
196
- continue;
197
- }
198
- if(strcasecmp("Content-Length", $name) == 0)
199
- {
200
- $result["length"] = $value + 0;
201
- continue;
202
- }
203
- if((strcasecmp("Transfer-Encoding", $name) == 0) && (strpos($value, 'chunked') !== false) )
204
- {
205
- $chunked = true;
206
- continue;
207
- }
208
- continue;
209
- }
210
-
211
- if($status == self::HTTP_CHUNK_HEADER)
212
- {
213
- $data = trim($data);
214
- $sc = strpos($data, ';');
215
- if($sc !== false) {$data = substr($data, 0, $sc);}
216
- $chunkLength = hexdec($data);
217
- if($chunkLength == 0) {
218
- break;
219
- }
220
- $lastChunk = "";
221
- $status = self::HTTP_CHUNK_BODY;
222
- continue;
223
- }
224
-
225
- if($status == self::HTTP_CHUNK_BODY)
226
- {
227
- $lastChunk .= $data;
228
- if(strlen($lastChunk) >= $chunkLength)
229
- {
230
- $result["body"] .= substr($lastChunk, 0, $chunkLength);
231
- $status = self::HTTP_CHUNK_HEADER;
232
- }
233
- continue;
234
- }
235
-
236
- if($status == self::HTTP_BODY)
237
- {
238
- $result["body"] .= $data;
239
- if(($result["length"] !== null) && (strlen($result["body"]) >= $result["length"])) {
240
- break;
241
- }
242
- continue;
243
- }
244
- }
245
- fclose($fp);
246
-
247
- if(($result["length"] !== null) && (strlen($result["body"]) != $result["length"])) {
248
- array("error"=>"Invalid HTTP body length.");
249
- }
250
-
251
- error_reporting($e);
252
- return $result;
253
- }
254
-
255
- function wsd_jsonHttpRequest($url, $data, $timeout = 10)
256
- {
257
- $body = json_encode($data);
258
- $headers = array("Content-type" => "application/json");
259
-
260
- $cookie = '';
261
- $option_cookie = get_option("WSD-COOKIE");
262
- if($option_cookie !== false) {$cookie = $option_cookie;}
263
-
264
- $token = get_option("WSD-TOKEN");
265
- if($token !== false)
266
- {
267
- if($cookie != ''){ $cookie .= '; ';}
268
- $cookie .= "token=".$token;
269
- }
270
-
271
- if($cookie != '') {
272
- $headers["Cookie"] = $cookie;
273
- }
274
-
275
- $result = $this->wsd_httpRequest("POST", $url, $body, $headers, $timeout);
276
-
277
- if($result["cookie"] !== null)
278
- {
279
- if($option_cookie === false) {
280
- add_option("WSD-COOKIE", $result["cookie"]);
281
- }
282
- else {update_option("WSD-COOKIE", $result["cookie"]);}
283
- }
284
-
285
- if($result["error"] === null)
286
- {
287
- $decoded = json_decode($result["body"], true);
288
- if($decoded == null) {$result["error"] = "Invalid JSON response.".$result["body"];}
289
- $result["body"] = $decoded;
290
- }
291
- return $result;
292
- }
293
-
294
- function wsd_jsonRPC($url, $method, $params, $timeout = 10)
295
- {
296
- $GLOBALS['wsd_last_err'] = array('code'=>0, 'message'=>'');
297
- $id = rand(1,100);
298
-
299
- $token = get_option("WSD-TOKEN");
300
- if($token === false) {
301
- $request = array("jsonrpc"=>"2.0", "id"=>$id, "method"=>$method, "params"=>$params);
302
- }
303
- else {$request = array("jsonrpc"=>"2.0", "id"=>$id, "method"=>$method, "params"=>$params, "token"=>$token);}
304
-
305
- $response = $this->wsd_jsonHttpRequest($url, $request, $timeout);
306
-
307
- //print("request:");print_r($request); print("<hr>"); print("response:");print_r($response); print("<hr>");
308
-
309
- if($response["error"] !== null)
310
- {
311
- $GLOBALS['wsd_last_err'] = array("code" => 0, "message" => $response["error"]);
312
- return null;
313
- }
314
-
315
- if((! array_key_exists("id", $response["body"])) || ($response["body"]["id"] != $id) )
316
- {
317
- $GLOBALS['wsd_last_err'] = array("code" => 0, "message" => "Invalid JSONRPC response [0].");
318
- return null;
319
- }
320
-
321
- if( array_key_exists("token", $response["body"]))
322
- {
323
- if($token === false) {add_option("WSD-TOKEN", $response["body"]['token']);}
324
- else {update_option("WSD-TOKEN", $response["body"]['token']);}
325
- }
326
-
327
- if(array_key_exists("error", $response["body"]))
328
- {
329
- $GLOBALS['wsd_last_err'] = $response["body"]["error"];
330
- return null;
331
- }
332
-
333
- if(! array_key_exists("result", $response["body"]))
334
- {
335
- $GLOBALS['wsd_last_err'] = array("code" => 0, "message" => "Invalid JSONRPC response [1].");
336
- return null;
337
- }
338
-
339
- return $response["body"]["result"];
340
- }
341
-
342
- // ========================= RENDER UI ===========================================================
343
-
344
- function wsd_render_error($custom_message = null)
345
- {
346
- $html = '';
347
- if ($custom_message === null) {
348
- $html = '<p class="wsd-error-summary">' . $GLOBALS['wsd_last_err']['message'];
349
- }
350
- else {$html = '<p class="wsd-error-summary">' . $custom_message;}
351
- $html .= '<br /><span class="wsd-error-summary-detail">If the problem persists please continue at <a href="https://dashboard.websitedefender.com" target="_blank">Website Defender</a>.</span></p>';
352
- echo $html;
353
- }
354
-
355
- function wsd_render_agent_install_issues($message)
356
- {
357
- //echo "wsd_render_agent_install_issues<br>";
358
- $html = '<p class="wsd-error-summary">' . $message;
359
- $html .= '<br /><span class="wsd-error-summary-detail">It has to be installed manually from the <a href="https://dashboard.websitedefender.com" target="_blank">WebsiteDefender dashboard</a>.</span></p>';
360
- echo $html;
361
- }
362
-
363
- function wsd_render_user_login($error = '')
364
- {
365
- if($error !== '') {$this->wsd_render_error($error);}
366
- ?>
367
-
368
- <?php if(!empty($error)) { ?>
369
- <div class="wsd-inside">
370
- <?php } ?>
371
-
372
- <p class="wsd-login-notice">Login here if you already have a WSD account.</p>
373
- <form action="" method="post" id="sw_wsd_login_form" name="sw_wsd_login_form">
374
- <div>
375
- <div class="wsd-login-section">
376
- <label for="wsd_login_form_email">Email:</label>
377
- <input type="text" name="wsd_login_form_email" id="wsd_login_form_email" value="<?php echo get_option("admin_email"); ?>" />
378
- </div>
379
- <div class="wsd-login-section">
380
- <label for="wsd_login_form_password">Password:</label>
381
- <input type="password" name="wsd_login_form_password" id="wsd_login_form_password" />
382
- </div>
383
- <input type="submit" name="wsd-login" id="wsd-login" value="Login">
384
- </div>
385
- </form>
386
-
387
- <?php if(!empty($error)) { ?>
388
- </div>
389
- <?php } ?>
390
-
391
- <?php
392
- }
393
-
394
- function wsd_render_new_user($error = '')
395
- {
396
- //print "wsd_render_new_user $error<br>";
397
-
398
- $form = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cPlugin.getfrm", $this->wsd_site_url());
399
- if ($form === null)
400
- {
401
- $this->wsd_render_error();
402
- return;
403
- }
404
- $recaptcha_publickey = $form['captcha'];
405
- if(empty($recaptcha_publickey))
406
- {
407
- $this->wsd_render_error('Invalid server response.');
408
- return;
409
- }
410
-
411
- //intro text
412
- echo '<p class="wsd-inside" style="margin-top: 0px;">';
413
- _e('WebsiteDefender.com is based upon web application scanning technology from <a href="http://www.acunetix.com/" target="_blank">Acunetix</a>; a pioneer in website security. <a href="http://www.websitedefender.com" target="_blank">WebsiteDefender</a> requires no installation, no learning curve and no maintenance. Above all, there is no impact on site performance! WebsiteDefender regularly scans and monitors your WordPress website/blog effortlessly, efficient, easily and is available for Free! Start scanning your WordPress website/blog against malware and hackers, absolutely free!', FB_SWP_TEXTDOMAIN);
414
- echo "</p>";
415
-
416
- ?>
417
- <div class="wsd-inside">
418
- <?php
419
- $this->wsd_render_user_login();
420
- ?>
421
-
422
- <h4><?php _e('Register here to use all the WebsiteDefender.com advanced features', FB_SWP_TEXTDOMAIN)?></h4>
423
- <p><?php _e('WebsiteDefender is an online service that protects your website from any hacker activity by monitoring and auditing the security of your website, giving you easy to understand solutions to keep your website safe, always! WebsiteDefender\'s enhanced WordPress Security Checks allow it to optimise any threats on a blog or site powered by WordPress.', FB_SWP_TEXTDOMAIN)?></p>
424
- <p><?php _e('<strong>With WebsiteDefender you can:</strong>', FB_SWP_TEXTDOMAIN)?></p>
425
- <ul class="wsd_commonList">
426
- <li><span>Detect Malware present on your website</span></li>
427
- <li><span>Audit your website for security issues</span></li>
428
- <li><span>Avoid getting blacklisted by Google</span></li>
429
- <li><span>Keep your website content and data safe</span></li>
430
- <li><span>Get alerted to suspicious hacker activity</span></li>
431
- </ul>
432
-
433
- <p><?php _e('WebsiteDefender.com does all this an more via an easy-to-understand web-based dashboard, which gives step by step solutions on how to make sure your website stays secure!', FB_SWP_TEXTDOMAIN)?></p>
434
-
435
- <h4><?php _e('Sign up for your FREE account here', FB_SWP_TEXTDOMAIN)?></h4>
436
-
437
- <?php
438
- if($error !== '') {$this->wsd_render_error($error);}
439
- ?>
440
-
441
- <form action="#em" method="post" id="sw_wsd_new_user_form" name="sw_wsd_new_user_form">
442
- <div id="em" class="wsd-new-user-section">
443
- <label for="wsd_new_user_email">Email:</label>
444
- <input type="text" name="wsd_new_user_email" id="wsd_new_user_email" value="<?php echo get_option("admin_email"); ?>" />
445
- </div>
446
- <div class="wsd-new-user-section">
447
- <label for="wsd_new_user_name">Name:</label>
448
- <input type="text" name="wsd_new_user_name" id="wsd_new_user_name" value="<?php echo isset($_POST['wsd_new_user_name']) ? $_POST['wsd_new_user_name'] : '' ?>" />
449
- </div>
450
- <div class="wsd-new-user-section">
451
- <label for="wsd_new_user_surname">Surname:</label>
452
- <input type="text" name="wsd_new_user_surname" id="wsd_new_user_surname" value="<?php echo isset($_POST['wsd_new_user_surname']) ? $_POST['wsd_new_user_surname']: '' ?>" />
453
- </div>
454
- <div class="wsd-new-user-section">
455
- <label for="wsd_new_user_password">Password:</label>
456
- <input type="password" name="wsd_new_user_password" id="wsd_new_user_password"/>
457
- <label class="password-meter" style="background-color: rgb(238, 0, 0); display: none;">Too Short</label>
458
- </div>
459
- <div class="wsd-new-user-section">
460
- <label for="wsd_new_user_password_re">Retype Password:</label>
461
- <input type="password" name="wsd_new_user_password_re" id="wsd_new_user_password_re"/>
462
- </div>
463
- <div class="wsd-new-user-section">
464
- <?php
465
- echo wsd_recaptcha_get_html($recaptcha_publickey, null, true);
466
- ?>
467
- </div>
468
- <input type="submit" name="wsd-new-user" id="wsd-new-user" value="Register">
469
- </form>
470
- </div>
471
- <?php
472
- }
473
-
474
-
475
- function wsd_process_login()
476
- {
477
- $email = isset($_POST['wsd_login_form_email']) ? $_POST['wsd_login_form_email'] : null;
478
- $password = isset($_POST['wsd_login_form_password']) ? $password = $_POST['wsd_login_form_password'] : null;
479
-
480
- if (empty($email)) {
481
- $this->wsd_render_user_login('Email address is required.');
482
- return;
483
- }
484
-
485
- if (empty($password)) {
486
- $this->wsd_render_user_login('Password is required.');
487
- return;
488
- }
489
-
490
- // $password is received as MD5 hash
491
- $login = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cUser.login", array($email, $password));
492
-
493
- if ($login == null) {
494
- $this->wsd_render_user_login('Invalid login');
495
- return;
496
- }
497
-
498
- $user = get_option("WSD-USER");
499
- if ($user === false) {
500
- add_option("WSD-USER", $email);
501
- }
502
- else {update_option("WSD-USER", $email);}
503
-
504
- $this->wsd_add_or_process_target();
505
- }
506
-
507
- function wsd_render_add_target_id()
508
- {
509
- ?>
510
- <div class="wsd-inside">
511
- <?php if(!empty($error)) {$this->wsd_render_error($error);} ?>
512
- <form action="" method="post" id="wsd_target_id_form" name="wsd_target_id_form">
513
- <?php
514
- $emailAddress = get_option('WSD-USER');
515
- if(empty($emailAddress)){
516
- $emailAddress = get_option('admin_email');
517
- }
518
- ?>
519
- <p>
520
- <label><?php echo __('WebsiteDefender email account');?>:</label>
521
- <br/>
522
- <input type="text" name="sw_user_email" id="sw_user_email" value="<?php echo $emailAddress;?>"
523
- style="width: 200px;"/>
524
- </p>
525
- <p>
526
- <label for="wsd_target_update_id"><?php echo __('Target ID');?>:</label>
527
- <br/>
528
- <input type="text" name="targetid" id="targetid" value="<?php echo get_option('WSD-TARGETID');?>"/>
529
- <br/><br/>
530
- <input type="submit" name="wsd_update_target_id" value="<?php echo __('Update');?>" />
531
- </p>
532
- </form>
533
- <div>
534
- <p>
535
- <?php
536
- echo __('To get the WebsiteDefender target ID of your website, login to the
537
- <a href="https://dashboard.websitedefender.com/" target="_blank">WebsiteDefender dashboard</a>
538
- and from the <code>Website Settings</code> navigate to the <code>Status</code> tab. The Target ID
539
- can be found under the <code>Scan Status</code> section.');
540
- ?>
541
- </p>
542
- </div>
543
- </div>
544
- <?php
545
- }
546
-
547
- function wsd_process_add_target_id()
548
- {
549
- //echo "wsd_process_add_target_id<br>";
550
- if(! empty($_POST['targetid'])){
551
- add_option('WSD-TARGETID', $_POST['targetid']);
552
- }
553
- if( ! empty($_POST['sw_user_email'])){
554
- add_option('WSD-USER', $_POST['sw_user_email']);
555
- }
556
- $this->wsd_render_target_status();
557
- }
558
-
559
- function wsd_add_or_process_target()
560
- {
561
- //check if we already registered
562
- $targetid = get_option('WSD-TARGETID');
563
-
564
- if($targetid !== false)
565
- {
566
- $this->wsd_render_target_status();
567
- return;
568
- }
569
- else
570
- {
571
- //check first is this url is already there
572
- $target = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cPlugin.urlstatus", $this->wsd_site_url());
573
- if($target === null)
574
- {
575
- $this->wsd_render_error();
576
- return;
577
- }
578
- if(array_key_exists('id', $target) && ($target['id'] != null))
579
- {
580
- if($targetid === false) {add_option('WSD-TARGETID', $target['id']);}
581
- else {update_option('WSD-TARGETID', $target['id']);}
582
- $this->wsd_render_target_status();
583
- return;
584
- }
585
- }
586
-
587
- //the target was not there so we have to register a new one
588
- $newtarget = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cTargets.add", $this->wsd_site_url());
589
- if($newtarget === null)
590
- {
591
- if($GLOBALS['wsd_last_err']['code'] == self::WSD_ERROR_LIMITATION)
592
- {
593
- $this->wsd_render_error("This account reached the maximum number of targets.");
594
- return;
595
- }
596
- if($GLOBALS['wsd_last_err']['code'] == self::WSD_ERROR_WPP_URL_EXIST)
597
- {
598
- $this->wsd_render_add_target_id();
599
- return;
600
- }
601
- print_r($GLOBALS['wsd_last_err']);
602
- return;
603
- }
604
-
605
- if(!array_key_exists("id", $newtarget))
606
- {
607
- $this->wsd_render_error("Invalid WSD response received.");
608
- return;
609
- }
610
-
611
- delete_option('WSD-TARGETID');
612
- add_option('WSD-TARGETID', $newtarget['id']);
613
-
614
- //download agent
615
- $targetInstalError = '';
616
-
617
- $headers = array("a"=>"a");
618
- $option_cookie = get_option("WSD-COOKIE");
619
- if($option_cookie !== false) $headers["Cookie"] = $option_cookie;
620
-
621
- //print "<br>Downloading: ". WSD_URL_DOWN.'?id='.$newtarget['id'] ."#". print_r($headers, true). "<br>";
622
-
623
- $agent = $this->wsd_httpRequest("GET", self::WSD_URL_DOWN.'?id='.$newtarget['id'], "", $headers);
624
-
625
- if($agent["error"] !== null) {
626
- $targetInstalError = 'The WebsiteDefender Agent failed to install automatically [0x01].'; //can't download
627
- }
628
- else
629
- {
630
- //try to copy the target
631
- $agentURL = $agent["sensor_url"];
632
- if(preg_match('/[a-f0-9]{40}.php/', $newtarget["sensor_url"], $matches))
633
- {
634
- $path = rtrim(ABSPATH, '/');
635
- $path .= '/'.$matches[0];
636
-
637
- $r = file_put_contents($path, $agent['body']);
638
- if(!$r) {$targetInstalError = 'The WebsiteDefender Agent failed to install automatically [0x02].';} /* can't save */
639
- }
640
- else {$targetInstalError = 'The WebsiteDefender Agent failed to install automatically [0x03].';} /* other */
641
- }
642
-
643
- //test the agent, this will triger agentless if agent not functioning
644
- $testTarget = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cTargets.agenttest", $newtarget['id']);
645
- $enbableTarget = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cTargets.enable", array($newtarget['id'], true));
646
-
647
- if($targetInstalError != '') {$this->wsd_render_agent_install_issues($targetInstalError);}
648
-
649
- $this->wsd_render_target_status();
650
- }
651
-
652
- function wsd_process_new_user_form()
653
- {
654
- //print "wsd_process_new_user_form<br>";
655
-
656
- $email = $_POST['wsd_new_user_email'];
657
- $name = $_POST['wsd_new_user_name'];
658
- $surname = $_POST['wsd_new_user_surname'];
659
- $password = $_POST['wsd_new_user_password'];
660
- $password_re = $_POST['wsd_new_user_password_re'];
661
-
662
- if (empty($email)) {
663
- $this->wsd_render_new_user('Email is required.');
664
- return;
665
- }
666
- if (empty($name)) {
667
- $this->wsd_render_new_user('Name is required.');
668
- return;
669
- }
670
- if (empty($surname)) {
671
- $this->wsd_render_new_user('Surname is required.');
672
- return;
673
- }
674
- if (empty($password)) {
675
- $this->wsd_render_new_user('Password is required.');
676
- return;
677
- }
678
- if ($password != $password_re) {
679
- $this->wsd_render_new_user('Passwords do not match.');
680
- return;
681
- }
682
-
683
- $register = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cPlugin.register",
684
- array(
685
- array("challenge"=>$_POST['recaptcha_challenge_field'],
686
- "response"=>$_POST['recaptcha_response_field']),
687
- array(
688
- "url" => $this->wsd_site_url(),
689
- "email" => $email,
690
- "name" => $name,
691
- "surname" => $surname,
692
- /* the password coming from the client already as a hash */
693
- "pass" => $password,
694
- "source" => self::WSD_SOURCE
695
- )
696
- ));
697
- if($register == null)
698
- {
699
- if($GLOBALS['wsd_last_err']['code'] == self::WSD_ERROR_WPP_INVALID_CAPTCHA)
700
- {
701
- $this->wsd_render_new_user('Invalid captcha. Please try again.');
702
- return;
703
- }
704
- if($GLOBALS['wsd_last_err']['code'] == self::WSD_ERROR_WPP_USER_EXIST)
705
- {
706
- $this->wsd_render_new_user("This user is already registered. To continue with this user, please use the login form above or register with a new user name.");
707
- return;
708
- }
709
- $this->wsd_render_new_user('Registration failed! Please try again.');
710
- return;
711
- }
712
- $user = get_option("WSD-USER");
713
- if($user === false) {
714
- add_option("WSD-USER", $email);
715
- }
716
- else {update_option("WSD-USER", $email);}
717
-
718
- $this->wsd_add_or_process_target();
719
- }
720
-
721
- function wsd_render_target_status()
722
- {
723
- #echo "wsd_render_target_status<br>";
724
- $user = get_option('WSD-USER');
725
- if((!is_string($user))||($user == "") ) {$user = get_option("admin_email"); }
726
- $status = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cPlugin.status", array($user, get_option('WSD-TARGETID'), $this->wsd_site_url()));
727
- if($status === null)
728
- {
729
- $this->wsd_render_error();
730
- return;
731
- }
732
- if((!array_key_exists('active', $status)) || ($status['active'] !== 1))
733
- {
734
- //our target is not valid anymore
735
- delete_option('WSD-TARGETID');
736
-
737
- // Display the add target id form
738
- // update: $rev 3
739
- $this->wsd_render_add_target_id();
740
- $this->wsd_render_error('Invalid Target ID!');
741
- return false;
742
- }
743
-
744
- echo '<p class="wsd-inside">';
745
- echo 'Thank you for registering with WebsiteDefender. Please navigate to the <a target="_blank" href="https://dashboard.websitedefender.com/">WebsiteDefender dashboard</a> to see the alerts.';
746
- echo "</p>";
747
-
748
- $enabled = array_key_exists('enabled', $status) ? $status['enabled'] : null;
749
- $scanned = array_key_exists('scanned', $status) ? $status['scanned'] : null;
750
- $agentless = array_key_exists('agentless', $status) ? $status['agentless'] : null;
751
-
752
- if (!is_numeric($enabled) || !is_numeric($scanned) || !is_numeric($agentless))
753
- {
754
- $this->wsd_render_error('Invalid server response.');
755
- return;
756
- }
757
- $enabled = intval($enabled);
758
- $scanned = intval($scanned);
759
- $agentless = intval($agentless);
760
- ?>
761
-
762
- <div id="wsd-target-status-holder" class="wsd-inside">
763
- <p class="wsd-target-status-title">
764
- Website status on Website Defender
765
- </p>
766
- <div class="wsd-target-status-section">
767
- <?php
768
- $statusText = (($enabled == 1) ? 'YES' : 'NO');
769
-
770
- echo '<span class="wsd-target-status-section-label">Enabled: </span>',
771
- '<span class="wsd-target-status-section-', $enabled ? 'enabled' : 'disabled', '">', $statusText, '</span>';
772
- ?>
773
- </div>
774
- <div class="wsd-target-status-section">
775
- <?php
776
- $statusText = (($scanned == 1) ? 'YES' : 'NO');
777
-
778
- echo '<span class="wsd-target-status-section-label">Scanned: </span>',
779
- '<span class="wsd-target-status-section-', $scanned ? 'enabled' : 'disabled', '">', $statusText, '</span>';
780
- ?>
781
- </div>
782
- <div class="wsd-target-status-section">
783
- <?php
784
- $statusText = (($agentless == 1) ? 'DOWN' : 'UP');
785
-
786
- echo '<span class="wsd-target-status-section-label">Agent status: </span>',
787
- '<span class="wsd-target-status-section-', $agentless ? 'disabled' : 'enabled', '">', $statusText, '</span>';
788
- ?>
789
- </div>
790
- </div>
791
-
792
- <?php return true; }
793
-
794
- function wsd_render_main()
795
- {
796
- if(1==0)
797
- {
798
- delete_option('WSD-TARGETID');
799
- delete_option("WSD-COOKIE");
800
- delete_option("WSD-USER");
801
- return;
802
- }
803
-
804
- if(isset($_POST['wsd-new-user']))
805
- {
806
- $this->wsd_process_new_user_form();
807
- return;
808
- }
809
-
810
- if(isset($_POST['wsd-login']))
811
- {
812
- $this->wsd_process_login();
813
- return;
814
- }
815
-
816
- if(isset($_POST['wsd_update_target_id']))
817
- {
818
- $this->wsd_process_add_target_id();
819
- return;
820
- }
821
-
822
- $targetid = get_option("WSD-TARGETID");
823
- if($targetid !== false)
824
- {
825
- $this->wsd_render_target_status();
826
- return;
827
- }
828
-
829
- $hello = $this->wsd_jsonRPC(self::WSD_URL_RPC, "cPlugin.hello", $this->wsd_site_url());
830
- if($hello == null)
831
- {
832
- // update: $rev 3
833
- $this->wsd_render_new_user();
834
-
835
- return;
836
- }
837
-
838
- if($hello == 'registered')
839
- {
840
- $this->wsd_render_add_target_id();
841
- return;
842
- }
843
- elseif($hello == 'new')
844
- {
845
- //$user = get_option("WSD-USER"); if($user === false)
846
- $this->wsd_render_new_user();
847
- //else wsd_render_user_login();
848
- }
849
- else
850
- {
851
- $this->wsd_render_error("Invalid server response.");
852
- return;
853
- }
854
- }
855
-
856
- }
857
- /* End of file: swWSD.php */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
index.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ Plugin Name: Acunetix Secure WordPress
4
+ Plugin URI: http://www.acunetix.com/websitesecurity/wordpress-security-plugin/
5
+ Description: The Acunetix Secure WordPress plugin is the ultimate must-have tool when it comes to WordPress security. The plugin is free and monitors your website for security weaknesses that hackers might exploit and tells you how to easily fix them.
6
+ Version: 3.0.0
7
+ Author: Acunetix
8
+ Author URI: http://www.acunetix.com/
9
+ License: GPLv2 or later
10
+ Text Domain: WSDWP_SECURITY
11
+ Domain Path: /languages
12
+ */
13
+ define('SWPA_PLUGIN_PREFIX', 'swpa_');
14
+ define('SWPA_PLUGIN_NAME', 'Acunetix Secure WordPress');
15
+ define('SWPA_PLUGIN_URL', trailingslashit(plugins_url('', __FILE__)));
16
+ define('SWPA_PLUGIN_DIR', trailingslashit(plugin_dir_path(__FILE__)));
17
+ define('SWPA_PLUGIN_BASE_NAME', basename(__DIR__));
18
+
19
+ require('swpa-settings.php');
20
+ require('res/inc/alerts.php');
21
+ require('res/inc/SwpaUtil.php');
22
+ require('res/inc/SwpaPlugin.php');
23
+ require('res/inc/SwpaInfo.php');
24
+ require('res/inc/SwpaSecurity.php');
25
+ require('res/inc/SwpaCheck.php');
26
+ require('res/inc/SwpaScheduler.php');
27
+ require('res/inc/SwpaWatch.php');
28
+ require('res/inc/SwpaLiveTraffic.php');
29
+ require('res/inc/swpa-functions.php');
30
+
31
+ //#!--
32
+ add_action('admin_init', array('SwpaUtil','loadPluggable'));
33
+ register_activation_hook( __FILE__, array('SwpaPlugin', 'activate') );
34
+ register_deactivation_hook( __FILE__, array('SwpaPlugin', 'deactivate') );
35
+ register_uninstall_hook( __FILE__, array('SwpaPlugin', 'uninstall') );
36
+ //#++
37
+
38
+
39
+
40
+ #! register tasks
41
+ if(false !== get_option('WSD-PLUGIN-CAN-RUN-TASKS',false))
42
+ {
43
+ SwpaScheduler::registerTask(array('SwpaPlugin','loadResources'), 'init');
44
+ SwpaScheduler::registerTask(array('SwpaPlugin','createWpMenu'), 'admin_menu');
45
+ SwpaScheduler::registerTask(array('SwpaLiveTraffic','registerHit'), 'init');
46
+ SwpaScheduler::registerTask(array('SwpaLiveTraffic','ajaxGetTrafficData'), 'wp_ajax_ajaxGetTrafficData');
47
+ SwpaScheduler::registerTask(array('SwpaLiveTraffic','ajaxGetTrafficData'), 'wp_ajax_nopriv_ajaxGetTrafficData');
48
+ SwpaScheduler::registerTask(array('SwpaUtil','addDashboardWidget'), 'wp_dashboard_setup');
49
+
50
+ // override - scheduled task
51
+ SwpaScheduler::registerCronTask('swpa_check_user_admin', array('SwpaCheck','adminUsername'), '8h');
52
+
53
+ // scheduled task - hourly cleanup of events in live traffic
54
+ SwpaScheduler::registerCronTask('swpa_cleanup_live_traffic', array('SwpaLiveTraffic','clearEvents'), 'hourly');
55
+
56
+ // stacked
57
+ SwpaScheduler::registerTask(array('SwpaWatch','userPasswordUpdate'));
58
+
59
+ // #! run fixes. Only those checked by the user will run (@see: settings page)
60
+ SwpaScheduler::registerClassTasks('SwpaSecurity','fix_');
61
+
62
+ //#! run checks.
63
+ SwpaScheduler::registerClassTasks('SwpaCheck','check_');
64
+ }
js/json.js DELETED
@@ -1,482 +0,0 @@
1
- /*
2
- http://www.JSON.org/json2.js
3
- 2010-03-20
4
-
5
- Public Domain.
6
-
7
- NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
8
-
9
- See http://www.JSON.org/js.html
10
-
11
-
12
- This code should be minified before deployment.
13
- See http://javascript.crockford.com/jsmin.html
14
-
15
- USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
16
- NOT CONTROL.
17
-
18
-
19
- This file creates a global JSON object containing two methods: stringify
20
- and parse.
21
-
22
- JSON.stringify(value, replacer, space)
23
- value any JavaScript value, usually an object or array.
24
-
25
- replacer an optional parameter that determines how object
26
- values are stringified for objects. It can be a
27
- function or an array of strings.
28
-
29
- space an optional parameter that specifies the indentation
30
- of nested structures. If it is omitted, the text will
31
- be packed without extra whitespace. If it is a number,
32
- it will specify the number of spaces to indent at each
33
- level. If it is a string (such as '\t' or '&nbsp;'),
34
- it contains the characters used to indent at each level.
35
-
36
- This method produces a JSON text from a JavaScript value.
37
-
38
- When an object value is found, if the object contains a toJSON
39
- method, its toJSON method will be called and the result will be
40
- stringified. A toJSON method does not serialize: it returns the
41
- value represented by the name/value pair that should be serialized,
42
- or undefined if nothing should be serialized. The toJSON method
43
- will be passed the key associated with the value, and this will be
44
- bound to the value
45
-
46
- For example, this would serialize Dates as ISO strings.
47
-
48
- Date.prototype.toJSON = function (key) {
49
- function f(n) {
50
- // Format integers to have at least two digits.
51
- return n < 10 ? '0' + n : n;
52
- }
53
-
54
- return this.getUTCFullYear() + '-' +
55
- f(this.getUTCMonth() + 1) + '-' +
56
- f(this.getUTCDate()) + 'T' +
57
- f(this.getUTCHours()) + ':' +
58
- f(this.getUTCMinutes()) + ':' +
59
- f(this.getUTCSeconds()) + 'Z';
60
- };
61
-
62
- You can provide an optional replacer method. It will be passed the
63
- key and value of each member, with this bound to the containing
64
- object. The value that is returned from your method will be
65
- serialized. If your method returns undefined, then the member will
66
- be excluded from the serialization.
67
-
68
- If the replacer parameter is an array of strings, then it will be
69
- used to select the members to be serialized. It filters the results
70
- such that only members with keys listed in the replacer array are
71
- stringified.
72
-
73
- Values that do not have JSON representations, such as undefined or
74
- functions, will not be serialized. Such values in objects will be
75
- dropped; in arrays they will be replaced with null. You can use
76
- a replacer function to replace those with JSON values.
77
- JSON.stringify(undefined) returns undefined.
78
-
79
- The optional space parameter produces a stringification of the
80
- value that is filled with line breaks and indentation to make it
81
- easier to read.
82
-
83
- If the space parameter is a non-empty string, then that string will
84
- be used for indentation. If the space parameter is a number, then
85
- the indentation will be that many spaces.
86
-
87
- Example:
88
-
89
- text = JSON.stringify(['e', {pluribus: 'unum'}]);
90
- // text is '["e",{"pluribus":"unum"}]'
91
-
92
-
93
- text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
94
- // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
95
-
96
- text = JSON.stringify([new Date()], function (key, value) {
97
- return this[key] instanceof Date ?
98
- 'Date(' + this[key] + ')' : value;
99
- });
100
- // text is '["Date(---current time---)"]'
101
-
102
-
103
- JSON.parse(text, reviver)
104
- This method parses a JSON text to produce an object or array.
105
- It can throw a SyntaxError exception.
106
-
107
- The optional reviver parameter is a function that can filter and
108
- transform the results. It receives each of the keys and values,
109
- and its return value is used instead of the original value.
110
- If it returns what it received, then the structure is not modified.
111
- If it returns undefined then the member is deleted.
112
-
113
- Example:
114
-
115
- // Parse the text. Values that look like ISO date strings will
116
- // be converted to Date objects.
117
-
118
- myData = JSON.parse(text, function (key, value) {
119
- var a;
120
- if (typeof value === 'string') {
121
- a =
122
- /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
123
- if (a) {
124
- return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
125
- +a[5], +a[6]));
126
- }
127
- }
128
- return value;
129
- });
130
-
131
- myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
132
- var d;
133
- if (typeof value === 'string' &&
134
- value.slice(0, 5) === 'Date(' &&
135
- value.slice(-1) === ')') {
136
- d = new Date(value.slice(5, -1));
137
- if (d) {
138
- return d;
139
- }
140
- }
141
- return value;
142
- });
143
-
144
-
145
- This is a reference implementation. You are free to copy, modify, or
146
- redistribute.
147
- */
148
-
149
- /*jslint evil: true, strict: false */
150
-
151
- /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
152
- call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
153
- getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
154
- lastIndex, length, parse, prototype, push, replace, slice, stringify,
155
- test, toJSON, toString, valueOf
156
- */
157
-
158
-
159
- // Create a JSON object only if one does not already exist. We create the
160
- // methods in a closure to avoid creating global variables.
161
-
162
- if (!this.JSON) {
163
- this.JSON = {};
164
- }
165
-
166
- (function () {
167
-
168
- function f(n) {
169
- // Format integers to have at least two digits.
170
- return n < 10 ? '0' + n : n;
171
- }
172
-
173
- if (typeof Date.prototype.toJSON !== 'function') {
174
-
175
- Date.prototype.toJSON = function (key) {
176
-
177
- return isFinite(this.valueOf()) ?
178
- this.getUTCFullYear() + '-' +
179
- f(this.getUTCMonth() + 1) + '-' +
180
- f(this.getUTCDate()) + 'T' +
181
- f(this.getUTCHours()) + ':' +
182
- f(this.getUTCMinutes()) + ':' +
183
- f(this.getUTCSeconds()) + 'Z' : null;
184
- };
185
-
186
- String.prototype.toJSON =
187
- Number.prototype.toJSON =
188
- Boolean.prototype.toJSON = function (key) {
189
- return this.valueOf();
190
- };
191
- }
192
-
193
- var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
194
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
195
- gap,
196
- indent,
197
- meta = { // table of character substitutions
198
- '\b': '\\b',
199
- '\t': '\\t',
200
- '\n': '\\n',
201
- '\f': '\\f',
202
- '\r': '\\r',
203
- '"' : '\\"',
204
- '\\': '\\\\'
205
- },
206
- rep;
207
-
208
-
209
- function quote(string) {
210
-
211
- // If the string contains no control characters, no quote characters, and no
212
- // backslash characters, then we can safely slap some quotes around it.
213
- // Otherwise we must also replace the offending characters with safe escape
214
- // sequences.
215
-
216
- escapable.lastIndex = 0;
217
- return escapable.test(string) ?
218
- '"' + string.replace(escapable, function (a) {
219
- var c = meta[a];
220
- return typeof c === 'string' ? c :
221
- '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
222
- }) + '"' :
223
- '"' + string + '"';
224
- }
225
-
226
-
227
- function str(key, holder) {
228
-
229
- // Produce a string from holder[key].
230
-
231
- var i, // The loop counter.
232
- k, // The member key.
233
- v, // The member value.
234
- length,
235
- mind = gap,
236
- partial,
237
- value = holder[key];
238
-
239
- // If the value has a toJSON method, call it to obtain a replacement value.
240
-
241
- if (value && typeof value === 'object' &&
242
- typeof value.toJSON === 'function') {
243
- value = value.toJSON(key);
244
- }
245
-
246
- // If we were called with a replacer function, then call the replacer to
247
- // obtain a replacement value.
248
-
249
- if (typeof rep === 'function') {
250
- value = rep.call(holder, key, value);
251
- }
252
-
253
- // What happens next depends on the value's type.
254
-
255
- switch (typeof value) {
256
- case 'string':
257
- return quote(value);
258
-
259
- case 'number':
260
-
261
- // JSON numbers must be finite. Encode non-finite numbers as null.
262
-
263
- return isFinite(value) ? String(value) : 'null';
264
-
265
- case 'boolean':
266
- case 'null':
267
-
268
- // If the value is a boolean or null, convert it to a string. Note:
269
- // typeof null does not produce 'null'. The case is included here in
270
- // the remote chance that this gets fixed someday.
271
-
272
- return String(value);
273
-
274
- // If the type is 'object', we might be dealing with an object or an array or
275
- // null.
276
-
277
- case 'object':
278
-
279
- // Due to a specification blunder in ECMAScript, typeof null is 'object',
280
- // so watch out for that case.
281
-
282
- if (!value) {
283
- return 'null';
284
- }
285
-
286
- // Make an array to hold the partial results of stringifying this object value.
287
-
288
- gap += indent;
289
- partial = [];
290
-
291
- // Is the value an array?
292
-
293
- if (Object.prototype.toString.apply(value) === '[object Array]') {
294
-
295
- // The value is an array. Stringify every element. Use null as a placeholder
296
- // for non-JSON values.
297
-
298
- length = value.length;
299
- for (i = 0; i < length; i += 1) {
300
- partial[i] = str(i, value) || 'null';
301
- }
302
-
303
- // Join all of the elements together, separated with commas, and wrap them in
304
- // brackets.
305
-
306
- v = partial.length === 0 ? '[]' :
307
- gap ? '[\n' + gap +
308
- partial.join(',\n' + gap) + '\n' +
309
- mind + ']' :
310
- '[' + partial.join(',') + ']';
311
- gap = mind;
312
- return v;
313
- }
314
-
315
- // If the replacer is an array, use it to select the members to be stringified.
316
-
317
- if (rep && typeof rep === 'object') {
318
- length = rep.length;
319
- for (i = 0; i < length; i += 1) {
320
- k = rep[i];
321
- if (typeof k === 'string') {
322
- v = str(k, value);
323
- if (v) {
324
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
325
- }
326
- }
327
- }
328
- } else {
329
-
330
- // Otherwise, iterate through all of the keys in the object.
331
-
332
- for (k in value) {
333
- if (Object.hasOwnProperty.call(value, k)) {
334
- v = str(k, value);
335
- if (v) {
336
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
337
- }
338
- }
339
- }
340
- }
341
-
342
- // Join all of the member texts together, separated with commas,
343
- // and wrap them in braces.
344
-
345
- v = partial.length === 0 ? '{}' :
346
- gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
347
- mind + '}' : '{' + partial.join(',') + '}';
348
- gap = mind;
349
- return v;
350
- }
351
- }
352
-
353
- // If the JSON object does not yet have a stringify method, give it one.
354
-
355
- if (typeof JSON.stringify !== 'function') {
356
- JSON.stringify = function (value, replacer, space) {
357
-
358
- // The stringify method takes a value and an optional replacer, and an optional
359
- // space parameter, and returns a JSON text. The replacer can be a function
360
- // that can replace values, or an array of strings that will select the keys.
361
- // A default replacer method can be provided. Use of the space parameter can
362
- // produce text that is more easily readable.
363
-
364
- var i;
365
- gap = '';
366
- indent = '';
367
-
368
- // If the space parameter is a number, make an indent string containing that
369
- // many spaces.
370
-
371
- if (typeof space === 'number') {
372
- for (i = 0; i < space; i += 1) {
373
- indent += ' ';
374
- }
375
-
376
- // If the space parameter is a string, it will be used as the indent string.
377
-
378
- } else if (typeof space === 'string') {
379
- indent = space;
380
- }
381
-
382
- // If there is a replacer, it must be a function or an array.
383
- // Otherwise, throw an error.
384
-
385
- rep = replacer;
386
- if (replacer && typeof replacer !== 'function' &&
387
- (typeof replacer !== 'object' ||
388
- typeof replacer.length !== 'number')) {
389
- throw new Error('JSON.stringify');
390
- }
391
-
392
- // Make a fake root object containing our value under the key of ''.
393
- // Return the result of stringifying the value.
394
-
395
- return str('', {'': value});
396
- };
397
- }
398
-
399
-
400
- // If the JSON object does not yet have a parse method, give it one.
401
-
402
- if (typeof JSON.parse !== 'function') {
403
- JSON.parse = function (text, reviver) {
404
-
405
- // The parse method takes a text and an optional reviver function, and returns
406
- // a JavaScript value if the text is a valid JSON text.
407
-
408
- var j;
409
-
410
- function walk(holder, key) {
411
-
412
- // The walk method is used to recursively walk the resulting structure so
413
- // that modifications can be made.
414
-
415
- var k, v, value = holder[key];
416
- if (value && typeof value === 'object') {
417
- for (k in value) {
418
- if (Object.hasOwnProperty.call(value, k)) {
419
- v = walk(value, k);
420
- if (v !== undefined) {
421
- value[k] = v;
422
- } else {
423
- delete value[k];
424
- }
425
- }
426
- }
427
- }
428
- return reviver.call(holder, key, value);
429
- }
430
-
431
-
432
- // Parsing happens in four stages. In the first stage, we replace certain
433
- // Unicode characters with escape sequences. JavaScript handles many characters
434
- // incorrectly, either silently deleting them, or treating them as line endings.
435
-
436
- text = String(text);
437
- cx.lastIndex = 0;
438
- if (cx.test(text)) {
439
- text = text.replace(cx, function (a) {
440
- return '\\u' +
441
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
442
- });
443
- }
444
-
445
- // In the second stage, we run the text against regular expressions that look
446
- // for non-JSON patterns. We are especially concerned with '()' and 'new'
447
- // because they can cause invocation, and '=' because it can cause mutation.
448
- // But just to be safe, we want to reject all unexpected forms.
449
-
450
- // We split the second stage into 4 regexp operations in order to work around
451
- // crippling inefficiencies in IE's and Safari's regexp engines. First we
452
- // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
453
- // replace all simple value tokens with ']' characters. Third, we delete all
454
- // open brackets that follow a colon or comma or that begin the text. Finally,
455
- // we look to see that the remaining characters are only whitespace or ']' or
456
- // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
457
-
458
- if (/^[\],:{}\s]*$/.
459
- test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
460
- replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
461
- replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
462
-
463
- // In the third stage we use the eval function to compile the text into a
464
- // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
465
- // in JavaScript: it can begin a block or an object literal. We wrap the text
466
- // in parens to eliminate the ambiguity.
467
-
468
- j = eval('(' + text + ')');
469
-
470
- // In the optional fourth stage, we recursively walk the new structure, passing
471
- // each name/value pair to a reviver function for possible transformation.
472
-
473
- return typeof reviver === 'function' ?
474
- walk({'': j}, '') : j;
475
- }
476
-
477
- // If the text is not JSON parseable, then a SyntaxError is thrown.
478
-
479
- throw new SyntaxError('JSON.parse');
480
- };
481
- }
482
- }());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/md5.js DELETED
@@ -1,195 +0,0 @@
1
- var wsdMD5 = function (string)
2
- {
3
- function RotateLeft(lValue, iShiftBits) {
4
- return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
5
- }
6
-
7
- function AddUnsigned(lX,lY) {
8
- var lX4,lY4,lX8,lY8,lResult;
9
- lX8 = (lX & 0x80000000);
10
- lY8 = (lY & 0x80000000);
11
- lX4 = (lX & 0x40000000);
12
- lY4 = (lY & 0x40000000);
13
- lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
14
- if (lX4 & lY4) {
15
- return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
16
- }
17
- if (lX4 | lY4) {
18
- if (lResult & 0x40000000) {
19
- return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
20
- }
21
- else {return (lResult ^ 0x40000000 ^ lX8 ^ lY8);}
22
- }
23
- else {return (lResult ^ lX8 ^ lY8);}
24
- }
25
-
26
- function F(x,y,z) { return (x & y) | ((~x) & z); }
27
- function G(x,y,z) { return (x & z) | (y & (~z)); }
28
- function H(x,y,z) { return (x ^ y ^ z); }
29
- function I(x,y,z) { return (y ^ (x | (~z))); }
30
-
31
- function FF(a,b,c,d,x,s,ac) {
32
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
33
- return AddUnsigned(RotateLeft(a, s), b);
34
- };
35
-
36
- function GG(a,b,c,d,x,s,ac) {
37
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
38
- return AddUnsigned(RotateLeft(a, s), b);
39
- };
40
-
41
- function HH(a,b,c,d,x,s,ac) {
42
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
43
- return AddUnsigned(RotateLeft(a, s), b);
44
- };
45
-
46
- function II(a,b,c,d,x,s,ac) {
47
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
48
- return AddUnsigned(RotateLeft(a, s), b);
49
- };
50
-
51
- function ConvertToWordArray(string) {
52
- var lWordCount;
53
- var lMessageLength = string.length;
54
- var lNumberOfWords_temp1=lMessageLength + 8;
55
- var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
56
- var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
57
- var lWordArray=Array(lNumberOfWords-1);
58
- var lBytePosition = 0;
59
- var lByteCount = 0;
60
- while ( lByteCount < lMessageLength ) {
61
- lWordCount = (lByteCount-(lByteCount % 4))/4;
62
- lBytePosition = (lByteCount % 4)*8;
63
- lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
64
- lByteCount++;
65
- }
66
- lWordCount = (lByteCount-(lByteCount % 4))/4;
67
- lBytePosition = (lByteCount % 4)*8;
68
- lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
69
- lWordArray[lNumberOfWords-2] = lMessageLength<<3;
70
- lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
71
- return lWordArray;
72
- };
73
-
74
- function WordToHex(lValue) {
75
- var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
76
- for (lCount = 0;lCount<=3;lCount++) {
77
- lByte = (lValue>>>(lCount*8)) & 255;
78
- WordToHexValue_temp = "0" + lByte.toString(16);
79
- WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
80
- }
81
- return WordToHexValue;
82
- };
83
-
84
- function Utf8Encode(string) {
85
- string = string.replace(/\r\n/g,"\n");
86
- var utftext = "";
87
- for (var n = 0; n < string.length; n++)
88
- {
89
- var c = string.charCodeAt(n);
90
- if (c < 128) {
91
- utftext += String.fromCharCode(c);
92
- }
93
- else if((c > 127) && (c < 2048)) {
94
- utftext += String.fromCharCode((c >> 6) | 192);
95
- utftext += String.fromCharCode((c & 63) | 128);
96
- }
97
- else {
98
- utftext += String.fromCharCode((c >> 12) | 224);
99
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
100
- utftext += String.fromCharCode((c & 63) | 128);
101
- }
102
- }
103
-
104
- return utftext;
105
- };
106
-
107
- var x=Array();
108
- var k,AA,BB,CC,DD,a,b,c,d;
109
- var S11=7, S12=12, S13=17, S14=22;
110
- var S21=5, S22=9 , S23=14, S24=20;
111
- var S31=4, S32=11, S33=16, S34=23;
112
- var S41=6, S42=10, S43=15, S44=21;
113
-
114
- string = Utf8Encode(string);
115
-
116
- x = ConvertToWordArray(string);
117
-
118
- a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
119
-
120
- for (k=0;k<x.length;k+=16) {
121
- AA=a; BB=b; CC=c; DD=d;
122
- a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
123
- d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
124
- c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
125
- b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
126
- a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
127
- d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
128
- c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
129
- b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
130
- a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
131
- d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
132
- c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
133
- b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
134
- a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
135
- d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
136
- c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
137
- b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
138
- a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
139
- d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
140
- c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
141
- b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
142
- a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
143
- d=GG(d,a,b,c,x[k+10],S22,0x2441453);
144
- c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
145
- b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
146
- a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
147
- d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
148
- c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
149
- b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
150
- a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
151
- d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
152
- c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
153
- b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
154
- a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
155
- d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
156
- c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
157
- b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
158
- a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
159
- d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
160
- c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
161
- b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
162
- a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
163
- d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
164
- c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
165
- b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
166
- a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
167
- d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
168
- c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
169
- b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
170
- a=II(a,b,c,d,x[k+0], S41,0xF4292244);
171
- d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
172
- c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
173
- b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
174
- a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
175
- d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
176
- c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
177
- b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
178
- a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
179
- d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
180
- c=II(c,d,a,b,x[k+6], S43,0xA3014314);
181
- b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
182
- a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
183
- d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
184
- c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
185
- b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
186
- a=AddUnsigned(a,AA);
187
- b=AddUnsigned(b,BB);
188
- c=AddUnsigned(c,CC);
189
- d=AddUnsigned(d,DD);
190
- }
191
-
192
- var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
193
-
194
- return temp.toLowerCase();
195
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/prepare_new_user_form.js DELETED
@@ -1,44 +0,0 @@
1
- /*$rev #1 07/16/2011 {c}*/
2
- var recaptchaPublic = "6Ld1jcASAAAAAAyGvwtF6ujAd0yf3jFlj220qcrZ";
3
- var waiting = 0;
4
- function ifLoaded(){
5
- waiting++;
6
- if(waiting>=20){
7
- return false
8
- }
9
- if( typeof(wsd_form_fields) != 'undefined' &&
10
- typeof(Recaptcha) != 'undefined' &&
11
- document.getElementById("sw_wsd_new_user_form") &&
12
- typeof(wsd_commonPasswords) != 'undefined')
13
- constructForm();
14
- else
15
- setTimeout(ifLoaded, 250);
16
- }
17
- function addInputElement(holder, name, type, label, description){
18
- var inputRow = document.createElement("TR");
19
- var cell = document.createElement("TH");
20
- cell.innerHTML = '<label for="' + name + '">' + label + ':</label>'
21
- cell.setAttribute("scope", "row");
22
- inputRow.appendChild(cell);
23
- var cell = document.createElement("TD");
24
- if(name=="account_website")
25
- cell.innerHTML = '<input id="wsd_' + name + '" name="' + name + '" type="' + type + '" class="regular-text" value="' + wordpress_site_name + '"/>' +
26
- (description?'<label for"' + name + '">' + description + '</label>':'');
27
- else
28
- cell.innerHTML = '<input id="wsd_' + name + '" name="' + name + '" type="' + type + '" class="regular-text"/>' +
29
- (description?'<label for"' + name + '">' + description + '</label>':'');
30
- inputRow.appendChild(cell);
31
- holder.appendChild(inputRow);
32
- }
33
- function constructForm(){
34
- var inputHolder = document.getElementById("wsd_new_user_form_dynamic_inputs_table");
35
- if(!inputHolder)return false;
36
- for(var i=0; i<wsd_form_fields.length; i++){
37
- addInputElement(inputHolder, wsd_form_fields[i].name, wsd_form_fields[i].type, wsd_form_fields[i].label, wsd_form_fields[i].descr);
38
- }
39
- Recaptcha.create(recaptchaPublic, "wsd_new_user_form_captcha_div", {theme: "red"});
40
- formReady = true;
41
- if(img=document.getElementById("img_loading_animation"))img.style.display="none";
42
- if(div=document.getElementById("wsd_new_user_form_div"))div.style.visibility="visible";
43
- }
44
- setTimeout(ifLoaded, 250);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/remove_wp_version.js DELETED
@@ -1 +0,0 @@
1
- jQuery(document).ready(function($) {$("#wp-version-message, #footer-upgrade").remove();});
 
js/sw_wsd.js DELETED
@@ -1,183 +0,0 @@
1
- if(console===undefined){var console={log:function(){return;}};}
2
-
3
-
4
- function sw_wsdPassStrengthProvider($)
5
- {
6
- this.badPass=['abc123','password','computer','123456','tigger','a1b2c3','qwerty','password1','carmen','mickey','secret','summer','internet','service','canada','ranger','shadow','baseball','donald','harley','hockey','letmein','maggie','mustang','snoopy','buster','dragon','jordan','michael','michelle','patrick','123abc','andrew','calvin','changeme','diamond','fuckme','fuckyou','matthew','miller','trustno1','12345678','123456789','avalon','brandy','chelsea','coffee','falcon','freedom','gandalf','helpme','merlin','molson','newyork','soccer','thomas','wizard','Monday','asdfgh','bandit','batman','butthead','dorothy','eeyore','fishing',
7
- 'football','george','iloveyou','jennifer','jonathan','marina','master','monday','monkey','natasha','ncc1701','newpass','pamela','pepper','piglet','poohbear','pookie','rabbit','rachel','rocket','sparky','spring','steven','success','sunshine','thx1138','victoria','whatever','zapata','8675309','Internet','amanda','august','barney','biteme','boomer','cowboy','doctor','fisher','foobar','island','joshua','marley','orange','please','rascal','richard','scooter','shalom','silver','skippy','stanley','taylor','welcome','zephyr','111111','aaaaaa','access','albert','alexander','andrea','anthony','asdfjkl;','ashley','basketball',
8
- 'beavis','booboo','bradley','brandon','caitlin','camaro','charlie','chicken','cricket','dakota','dallas','daniel','debbie','dolphin','elephant','friend','fucker','ginger','goodluck','hammer','heather','iceman','jessica','joseph','jupiter','justin','knight','lacrosse','lakers','lizard','madison','mother','muffin','murphy','ncc1701d','newuser','nirvana','pentium','phoenix','picture','rainbow','saturn','shannon','shithead','skeeter','sophie','special','stephanie','stephen','sweetie','teacher','tennis','test123','topgun','tristan','william','wilson','1q2w3e','654321','666666','a12345','a1b2c3d4','angela','archie','blazer',
9
- 'bond007','booger','charles','christin','claire','control','david1','dennis','digital','disney','edward','flipper','franklin','horses','hunter','indigo','jasper','jeremy','julian','kelsey','killer','kingfish','lauren','maryjane','matrix','maverick','mayday','mercury','mitchell','morgan','mountain','niners','nothing','oliver','peanut','pearljam','phantom','popcorn','princess','psycho','pumpkin','purple','rebecca','reddog','robert','salmon','samson','sharon','sierra','smokey','startrek','steelers','stimpy','sunflower','superman','support','sydney','techno','telecom','walter','willie','willow','winner','zxcvbnm','absolut',
10
- 'alaska','alexis','animal','apples','babylon5','backup','barbara','benjamin','bird33','bluebird','bonnie','camera','chocolate','claudia','cocacola','compton','connect','cookie','cruise','deliver','douglas','dreamer','dreams','duckie','eagles','einstein','explorer','family','ferrari','flamingo','flower','foxtrot','francis','freddy','friday','froggy','galileo','giants','global','gopher','hansolo','happy1','hendrix','herman','houston','iguana','indiana','insane','inside','ironman','jasmin','jeanne','justice','katherine','kermit','leslie','martin','minnie','nascar','nelson','netware','pantera','parker','passwd','penguin',
11
- 'porsche911','prince','punkin','pyramid','raymond','rosebud','route66','running','security','sergei','sheena','sheila','skiing','snapple','snowball','sparrow','spencer','stealth','student','sylvia','tamara','taurus','teresa','theresa','thunderbird','tigers','toyota','training','travel','tuesday','victory','viper1','wesley','whisky','winnie','winter','wolves','xyz123','123123','1234567','696969','888888','Anthony','Bond007','Friday','Hendrix','Joshua','Matthew','October','Taurus','Tigger','abcdef','adidas','adrian','alexandr','alfred','arthur','athena','austin','awesome','badger','bamboo','beagle','beatles','beautiful',
12
- 'beaver','bigmac','blonde','boogie','boston','brenda','bright','bubba1','bubbles','button','buttons','cactus','captain','carlos','caroline','carrie','casper','catalog','catch22','challenge','chance','charity','charlotte','cheese','cheryl','chris1','clancy','clipper','coltrane','compaq','conrad','cooper','cooter','copper','cosmos','cougar','cracker','crawford','crystal','curtis','cyclone','cyrano','deutsch','diablo','dilbert','dollars','dookie','dumbass','dundee','e-mail','elizabeth','europe','export','farmer','firebird','fletcher','fluffy','fountain','france','freak1','friends','fuckoff','gabriel','gabriell','galaxy',
13
- 'gambit','garden','garfield','garlic','garnet','genesis','genius','godzilla','goforit','golfer','goober','grateful','greenday','groovy','grover','guitar','hacker','hector','herbert','horizon','hornet','howard','icecream','imagine','impala','informix','janice','jasmine','jason1','jeanette','jeffrey','jenifer','jesus1','jewels','julie1','junior','justin1','kathleen','kelly1','kennedy','kevin1','knicks','larry1','ledzep','leonard','lestat','library','lincoln','lionking','london','louise','lucky1','maddog','mailman','majordomo','mantra','margaret','mariposa','market','marlboro','martin1','master1','mazda1','mensuck','mercedes',
14
- 'metallic','midori','millie','mirage','money1','monica','monopoly','mookie','moroni','nathan','ncc1701e','nesbitt','nguyen','nicholas','nicole','nimrod','october','olivia','online','oxford','pacific','painter','peaches','penelope','petunia','philip','phoenix1','pickle','player','poiuyt','porsche','porter','python','quality','raquel','remember','republic','research','robbie','robert1','runner','russell','sailing','sailor','samantha','savage','scarlett','school','shadow1','shelby','simple','skipper','smiley','snickers','sniper','snoopdog','snowman','spitfire','sprite','spunky','starwars','station','stella','stingray',
15
- 'stormy','stupid','sumuinen','sunny1','sunrise','surfer','teddy1','testing','theboss','theking','thumper','tintin','tomcat','trebor','trevor','tweety','unicorn','valentine','valerie','vanilla','veronica','victor','vincent','warrior','warriors','weasel','wheels','wilbur','winston','wisdom','wombat','xanadu','xavier','yellow','zaphod','zeppelin','!@#$%^','!@#$%^&*','10sne1','1p2o3i','3bears','Andrew','Broadway','Champs','Family','Fisher','Friends','Jeanne','Killer','Knight','Master','Michael','Michelle','Pentium','Pepper','Raistlin','Sierra','Snoopy','Tennis','Tuesday','abacab','abcd1234','abcdefg','abigail','account',
16
- 'acropolis','alice1','allison','alpine','anders','andre1','andrea1','angel1','annette','antares','apache','apollo','aragorn','arizona','arnold','arsenal','asdfasdf','asdfghjk','avenger','avenir','babydoll','bailey','banana','basket','batman1','beaner','beatrice','bertha','bigben','bigdog','biggles','bigman','biology','bishop','blondie','blowfish','bluefish','bobcat','braves','brazil','bridges','brutus','buffalo','bulldog','bullet','bullshit','business','butler','butter','california','cannondale','carebear','carol1','carole','cassie','castle','catalina','catherine','catnip','cccccc','celine','center','champion','chanel',
17
- 'chelsea1','chester1','chicago','christian','christy','church','cinder','colleen','colorado','columbia','commander','connie','content','cookies','cooking','cordelia','corona','cowboys','coyote','crack1','creative','cuddles','cuervo','daisie','daniel1','danielle','database','davids','deadhead','denali','depeche','design','destiny','dickens','dickhead','digger','dodger','dougie','dragonfly','eclipse','electric','emerald','emmitt','entropy','etoile','excalibur','express','farout','farside','feedback','fender','fireman','firenze','fletch','florida','flowers','foster','fozzie','francesco','francine','francois','french','fuckface',
18
- 'gargoyle','gasman','gemini','general','gerald','germany','gilbert','goaway','golden','goldfish','gordon','graham','graphic','gregory','gretchen','gunner','hal9000','hannah','harold','harrison','harvey','hawkeye','heaven','helena','herzog','hithere','hobbit','ibanez','idontknow','integra','intern','intrepid','ireland','isabel','jackie','jackson','jaguar','jamaica','jenny1','jessie','jethrotull','jkl123','johanna1','johnny','joker1','jordan23','judith','jumanji','kangaroo','karen1','keepout','keith1','kenneth','kidder','kimberly','kingdom','kitkat','kramer','kristen','lambda','laurie','lawrence','lawyer','legend','liberty',
19
- 'lindsay','lindsey','liverpool','logical','lonely','lorrie','lovely','loveme','madonna','malcolm','malibu','marathon','marcel','maria1','mariah','mariah1','marilyn','mariner','marvin','maurice','maxine','maxwell','meggie','melanie','melissa','melody','merlot','mexico','michael1','michele','midnight','midway','miracle','mishka','mmouse','molly1','monique','montreal','moocow','morris','mortimer','mouse1','mulder','nautica','nellie','nermal','newton','nicarao','nirvana1','nissan','norman','notebook','olivier','oranges','oregon','overkill','pacers','packer','pandora','panther','passion','patricia','peewee','pencil','people',
20
- 'person','peter1','picard','picasso','pierre','pinkfloyd','polaris','police','pookie1','predator','preston','primus','prometheus','public','q1w2e3','queenie','quentin','random','rangers','raptor','rastafarian','reality','redrum','remote','reptile','reynolds','rhonda','ricardo','ricardo1','roadrunner','robinhood','robotech','rocknroll','rocky1','ronald','ruthie','sabrina','sakura','salasana','sampson','samuel','sandra','sapphire','scarecrow','scarlet','scorpio','scott1','scottie','scruffy','scuba1','seattle','serena','sergey','shanti','shogun','singer','skibum','skywalker','slacker','smashing','smiles','snowflake','snowski',
21
- 'snuffy','soccer1','soleil','spanky','speedy','spider','spooky','stacey','star69','starter','steven1','sting1','stinky','strawberry','stuart','sunbird','sundance','superfly','suzanne','suzuki','swimmer','swimming','system','tarzan','teddybear','teflon','temporal','terminal','theatre','thejudge','thunder','thursday','tinker','tootsie','tornado','tricia','trident','trojan','truman','trumpet','tucker','turtle','utopia','valhalla','voyager','warcraft','warlock','warren','williams','windsurf','winona','woofwoof','wrangler','wright','xcountry','xfiles','xxxxxx','yankees','yvonne','zenith','zigzag','zombie','zxc123','000000',
22
- '007007','11111111','123321','171717','181818','1a2b3c','1chris','1kitty','1qw23e','4runner','57chevy','7777777','789456','7dwarfs','88888888','Abcdefg','Alexis','Animals','Bailey','Bastard','Beavis','Bismillah','Booboo','Boston','Canucks','Cardinal','Celtics','ChangeMe','Charlie','Computer','Cougar','Creative','Curtis','Daniel','Darkman','Denise','Dragon','Eagles','Elizabeth','Esther','Figaro','Fishing','Fortune','Freddy','Front242','Gandalf','Geronimo','Gingers','Golden','Goober','Gretel','HARLEY','Hacker','Hammer','Harley','Heather','Hershey','Jackson','Jennifer','Jersey','Jessica','Joanna','Johnson','Jordan','KILLER',
23
- 'Kitten','Liberty','Lindsay','Lizard','Madeline','Margaret','Maxwell','Mellon','Merlot','Metallic','Michel1','Monster','Montreal','Newton','Nicholas','Noriko','Paladin','Pamela','Password','Peaches','Peanuts','Phoenix','Piglet','Pookie','Princess','Purple','Rabbit','Raiders','Random','Rebecca','Robert','Russell','Saturn','Service','Shadow','Sidekick','Skeeter','Smokey','Sparky','Speedy','Sterling','Steven','Summer','Sunshine','Superman','Sverige','Swoosh','Taylor','Theresa','Thomas','Thunder','Vernon','Victoria','Vincent','Waterloo','Webster','Willow','Winnie','Wolverine','Woodrow','aardvark','abbott','abcd123','accord',
24
- 'active','admin1','adrock','aerobics','africa','airborne','airwolf','aki123','alfaro','alicia','aliens','alison','allegro','allstate','alpha1','altamira','althea','altima','altima1','amanda1','amazing','america','anderson','andrew!','andrew1','andromed','angels','angie1','anneli','anything','apple1','apple2','applepie','aptiva','aquarius','ariane','arlene','artemis','asdf1234','asdf;lkj','asdfjkl','ashley1','ashraf','ashton','assmunch','asterix','attila','autumn','avatar','ayelet','aylmer','baraka','barbie','barney1','barnyard','barrett','bartman','beaches','beanie','beasty','beauty','beavis1','belgium','belize','belmont',
25
- 'benson','beowulf','bernardo','betacam','bharat','bichon','bigboss','bigred','billy1','bimmer','bioboy','biochem','birdie','birthday','biscuit','bitter','blackjack','blanche','blinds','blowjob','blowme','blueeyes','bluejean','bogart','bombay','boobie','bootsie','boulder','bourbon','boxers','branch','brandi','brewster','bridge','britain','broker','bronco','bronte','brooke','brother','bubble','buddha','budgie','buffett','burton','butterfly','c00per','calendar','calgary','calvin1','camille','campbell','camping','cancer','canela','cannon','carbon','carnage','carolyn','carrot','cascade','catfish','catwoman','cecile','celica',
26
- 'cement','cessna','chainsaw','chameleon','change','chantal','charger','cherry','chiara','chiefs','chinacat','chinook','chouette','chris123','christ1','christmas','christopher','chronos','cicero','cindy1','cinema','circuit','cirque','cirrus','clapton','clarkson','claude','claudel','clueless','cobain','colette','college','colors','colt45','concept','concorde','confused','coolbean','cornflake','corvette','corwin','country','courier','crescent','crowley','crusader','cthulhu','cunningham','cupcake','current','cutlass','cynthia','daedalus','dagger','dagger1','dammit','damogran','dancer','daphne','darkstar','darren','darryl',
27
- 'darwin','datatrain','daytek','deborah','december','decker','deedee','deeznuts','delano','delete','denise','desert','deskjet','detroit','devine','dexter','dharma','dianne','diesel','dillweed','dipper','director','dodgers','dogbert','doitnow','dollar','dominique','domino','dontknow','doogie','doudou','downtown','dragon1','driver','dudley','dutchess','dwight','eagle1','easter','eastern','edmund','element','elina1','elissa','elliot','empire','engage','enigma','enterprise','ernie1','escort','escort1','estelle','eugene','evelyn','explore','faculty','fairview','family1','fatboy','felipe','fenris','ferguson','ferret','ferris',
28
- 'finance','fireball','fishes','fishhead','fishie','flanders','fleurs','flight','florida1','flowerpot','flyboy','forward','franka','freddie','frederic','freebird','freeman','frisco','froggie','froggies','front242','frontier','fugazi','funguy','funtime','future','gaelic','gambler','gammaphi','garcia','garfunkel','gaston','gateway','gateway2','gator1','george1','georgia','german','germany1','getout','ggeorge','gibbons','gibson','gilgamesh','giselle','glider1','gmoney','goblin','goblue','godiva','goethe','gofish','gollum','gramps','grandma','gravis','gremlin','gretzky','grizzly','grumpy','guitar1','gustavo','h2opolo','haggis',
29
- 'hailey','halloween','hallowell','hamilton','hamlet','hanson','happy123','happyday','hardcore','harley1','harriet','harris','harvard','hawkeye1','health','health1','heather1','heather2','hedgehog','heikki','helene','hello1','hello123','hello8','hellohello','help123','helper','hermes','heythere','highland','hillary','histoire','history','hitler','hobbes','holiday','homerj','honda1','hongkong','hoosier','hootie','hosehead','hotrod','hudson','hummer','huskies','hydrogen','ib6ub9','if6was9','iforget','ilmari','iloveu','impact','indonesia','ingvar','insight','instruct','integral','iomega','irmeli','isabelle','israel','italia',
30
- 'j1l2t3','jackie1','james1','jamesbond','jamjam','jeepster','jeffrey1','jennie','jensen','jesse1','jester','jethro','jetta1','jimbob','joanie','joanna','joelle','john316','jordie','journey','jubilee','juhani','julia2','julien','juliet','junebug','juniper','justdoit','justice4','kalamazo','karine','katerina','katie1','keeper','keller','kendall','kerala','kerrya','ketchup','kissa2','kissme','kitten','kittycat','kkkkkk','kleenex','kombat','kristi','kristine','labtec','laddie','ladybug','laserjet','lassie1','laurel','lawson','leader','leblanc','leland','lester','letter','letters','lexus1','lights','lionel','lissabon','little',
31
- 'logger','loislane','lolita','lonestar','longer','longhorn','looney','lovers','loveyou','lucifer','lucky14','macross','macse30','maddie','madmax','madoka','magic1','magnum','maiden','makeitso','mallard','manageme','manson','manuel','marcus','marielle','marine','marino','marshall','martha','matti1','mattingly','maxmax','meatloaf','mechanic','medical','meister','melina','memphis','mercer','mermaid','merrill','michal','michel','michigan','michou','mickel','mickey1','microsoft','midvale','mikael','milano','millenium','million','miranda','miriam','mission','mmmmmm','mobile','mobydick','monkey1','monroe','montana','montana3',
32
- 'montrose','moomoo','moonbeam','morecats','morpheus','motorola','movies','mowgli','mozart','mulder1','munchkin','murray','muscle','mustang1','nadine','napoleon','nation','national','nesbit','nestle','neutrino','newaccount','newlife','newyork1','nexus6','nichole','nicklaus','nightshadow','nightwind','nikita','nintendo','nomore','nopass','normal','norton','notta1','nouveau','novell','nugget','number9','numbers','nutmeg','oaxaca','obiwan','obsession','ohshit','oicu812','openup','orchid','orlando','orville','paagal','packard','packers','packrat','paloma','pancake','paradigm','parola','parrot','partner','pascal','patches',
33
- 'patriots','pauline','payton','peanuts','pedro1','perfect','performa','peterk','peterpan','phialpha','philips','phillips','phishy','piano1','pianoman','pianos','pierce','pigeon','pioneer','pipeline','piper1','pirate','pisces','playboy','poetic','poetry','pontiac','pookey','popeye','prayer','precious','prelude','premier','printing','provider','puddin','pulsar','pussy1','qqq111','quebec','qwerty12','qwertyui','rabbit1','racerx','rachelle','racoon','rafiki','raleigh','randy1','rasta1','ravens','redcloud','redfish','redman','redskins','redwing','redwood','reggae','reggie','reliant','renegade','rescue','revolution','reznor',
34
- 'rhjrjlbk','richard1','richards','richmond','ripper','ripple','roberts','robocop','robotics','rocket1','rockie','rockon','roger1','rogers','roland','rommel','rookie','rootbeer','rossigno','rugger','ruthless','sabbath','sabina','safety','safety1','saigon','samIam','samiam','sammie','samsam','sanjose','saphire','sarah1','saskia','satori','saturday','saturn5','schnapps','science','scooby','scoobydoo','scooter1','scorpion','scotch','scotty','scouts','search','secret3','seeker','september','server','services','seven7','shaggy','shanghai','shanny','shaolin','shasta','shayne','shazam','shelly','shelter','sherry','shirley',
35
- 'shorty','shotgun','sidney','sigmachi','signal','signature','simba1','simsim','sinatra','sirius','skipper1','skydive','skyler','slayer','sleepy','slider','smegma','smile1','smiths','smitty','smurfy','snakes','snapper','sober1','solomon','sonics','sophia','sparks','spartan','sphynx','spike1','sponge','sprocket','squash','starbuck','stargate','starlight','steph1','stephi','steve1','stevens','stewart','stivers','stocks','storage','stranger','strato','stretch','strong','student2','studio','stumpy','sucker','suckme','sultan','summit','sunfire','sunset','superstar','surfing','susan1','susanna','sutton','swanson','sweden',
36
- 'sweetpea','sweety','switzer','swordfish','system5','t-bone','tabatha','tacobell','taiwan','tamtam','tanner','tapani','targas','target','tarheel','tattoo','tazdevil','tequila','terry1','tester','testtest','thankyou','theend','thelorax','thisisit','thompson','thorne','thrasher','tiger2','tightend','timber','timothy','tinkerbell','topcat','topher','toshiba','tototo','toucan','transfer','transit','transport','trapper','travis','treasure','tricky','triton','trombone','trophy','trouble','trucker','tucson','turbo2','tyler1','ultimate','unique','united','upsilon','ursula','vacation','valley','vampire','vanessa','vedder',
37
- 'venice','vermont','victor1','vikram','vincent1','violet','violin','virago','virgil','virginia','vision','visual','volcano','volley','voodoo','vortex','waiting','walden','walleye','wanker','warner','water1','wayne1','webmaster','webster','weezer','wendy1','western','whale1','whitney','whocares','whoville','wibble','wildcat','william1','window','winniethepooh','wolfgang','wolverine','wombat1','wonder','x-files','xxx123','xxxxxxxx','yamaha','yankee','yogibear','yolanda','yomama','yvette','zachary','zebras','zepplin','zoltan','zoomer','zxcvbn','!@#$%^&','00000000','121212','1234qwer','131313','21122112','99999999',
38
- '@#$%^&','ABC123','Abcdef','Asdfgh','Changeme','FuckYou','Fuckyou','JSBach','Michel','NCC1701','Qwerty','Windows','Zxcvbnm','action','amelie','anaconda','apollo13','artist','asshole','benoit','bernard','bernie','bigbird','blizzard','bluesky','bonjour','booster','byteme','caesar','cardinal','carolina','chandler','changeit','chapman','charlie1','chiquita','chocolat','christia','christoph','classroom','cloclo','corrado','cougars','courtney','dolphins','dominic','donkey','eminem','energy','fearless','fiction','forest','forever','french1','gilles','gocougs','good-luck','graymail','guinness','hilbert','homebrew','hotdog',
39
- 'indian','johnson','kristin','lorraine','m1911a1','macintosh','mailer','maxime','memory','mirror','ne1410s','ne1469','ne14a69','nebraska','nemesis','network','newcourt','notused','oatmeal','patton','planet','players','politics','portland','praise','property','protel','psalms','qwaszx','raiders','rambo1','rancid','scrooge','shelley','skidoo','softball','speedo','sports','ssssss','steele','stephani','sunday','sylvie','symbol','tiffany','toronto','trixie','undead','valentin','velvet','viking','walker','watson','zhongguo','babygirl','1234567890','pretty','hottie','987654321','naruto','spongebob','daniela','princesa',
40
- 'christ','blessed','single','qazwsx','pokemon','iloveyou1','iloveyou2','fuckyou1','hahaha','blessing','blahblah','blink182','123qwe','trinity','passw0rd','google','looking','spirit','iloveyou!','qwerty1','rotimi','onelove','mylove','222222','ilovegod','football1','loving','emmanuel','1q2w3e4r','red123','blabla','112233'];
41
-
42
- this.showPassStrength = function(score)
43
- {
44
- var ind = $('.password-meter');
45
- if(score == undefined)
46
- {
47
- ind.hide();
48
- ind.css('background-color','#ffffff');
49
- return;
50
- }
51
- ind.show();
52
- if(score == -1)
53
- {
54
- ind.html('Too Short');
55
- ind.css('background-color','#ee0000');
56
- }
57
- else if(score == 0)
58
- {
59
- ind.html('Obvious');
60
- ind.css('background-color','#ee0000');
61
- }
62
- else if(score < 34)
63
- {
64
- ind.html('Bad');
65
- ind.css('background-color','#eeaaaa');
66
- }
67
- else if(score < 68)
68
- {
69
- ind.html('Good');
70
- ind.css('background-color','#ffff00');
71
- }
72
- else
73
- {
74
- ind.html('Strong');
75
- ind.css('background-color','#00ff00');
76
- }
77
- };
78
-
79
- this.getPassStrength = function(pass)
80
- {
81
- if(typeof pass != 'string'){ this.showPassStrength();return -1;}
82
- var len = pass.length;
83
- if(len == 0){this.showPassStrength();return -1;}
84
- if(len < 6)
85
- {
86
- this.showPassStrength(-1);
87
- return -1;
88
- }
89
- for(var i=0;i<this.badPass.length;i++)
90
- if(this.badPass[i] == pass)
91
- {
92
- this.showPassStrength(0);
93
- return 0;
94
- }
95
- var score=len*4;
96
- var a=0;
97
- var C=0;
98
- var n=0;
99
- var s=0;
100
- var l='';
101
- for(var i=0;i<len;i++)
102
- {
103
- if(l==pass.charAt(i)) score -= 1; else l=pass.charAt(i);
104
- if((pass.charAt(i)>='a')&&(pass.charAt(i)<='z')){a++;continue;}
105
- if((pass.charAt(i)>='A')&&(pass.charAt(i)<='Z')){C++;continue;}
106
- if((pass.charAt(i)>='0')&&(pass.charAt(i)<='9')){n++;continue;}
107
- s++;
108
- }
109
- if(len == a) score -= 10;
110
- if(len == n) score -= 10;
111
- if(len == C) score -= 10;
112
- if(n > 0) score += 5;
113
- if(C > 0) score += 5;
114
- if(s > 0) score += 5;
115
- if((n>0)&&(a>0)) score += 15;
116
- if((C>0)&&(a>0)) score += 15;
117
- if((s>0)&&(a>0)) score += 15;
118
- if(score > 100) score = 100;
119
-
120
- this.showPassStrength(score);
121
- return score;
122
- };
123
-
124
-
125
- // called on document.ready
126
- this.init = function() {
127
- var $wsd_new_user_form = $('#sw_wsd_new_user_form');
128
- // Hook for keyup events to display password strength
129
- $wsd_new_user_form.delegate('#wsd_new_user_password', 'keyup',
130
- function() {
131
- _sw_wsdPassStrengthProvider.getPassStrength($('#wsd_new_user_password').val());
132
- });
133
-
134
- // Hook for submit event to prevent form submision if password strength is <= BAD
135
- $wsd_new_user_form.delegate('#wsd-new-user', 'click',
136
- function() {
137
- var $wsd_new_user_password = $('#wsd_new_user_password');
138
- var $wsd_new_user_password_re = $('#wsd_new_user_password_re');
139
-
140
- if ($wsd_new_user_password.val() != $wsd_new_user_password_re.val()) {
141
- alert('Passwords do not match.');
142
- return false;
143
- }
144
-
145
- var score = _sw_wsdPassStrengthProvider.getPassStrength($wsd_new_user_password.val());
146
-
147
- if (score <= 1) {
148
- alert('The selected password is weak! Please select passwords with a minimum length of 6 characters, also including numbers and/or special characters is recomended.');
149
- $wsd_new_user_password.val('');
150
- $wsd_new_user_password_re.val('');
151
- _sw_wsdPassStrengthProvider.showPassStrength(score);
152
- return false;
153
- }
154
- else {
155
- var password = $wsd_new_user_password.val();
156
- var passwordHash = wsdMD5(password);
157
-
158
- $wsd_new_user_password.val(passwordHash);
159
- $wsd_new_user_password_re.val(passwordHash);
160
- }
161
- return true;
162
- });
163
-
164
- var $wsd_login_form = $('#sw_wsd_login_form');
165
- if ($wsd_login_form.length > 0) {
166
- $wsd_login_form.delegate('#wsd-login', 'click',
167
- function() {
168
- var $wsd_login_form_password = $('#wsd_login_form_password');
169
- var password = $wsd_login_form_password.val();
170
- if (password != '') {
171
- var passwordHash = wsdMD5(password);
172
- $wsd_login_form_password.val(passwordHash);
173
- }
174
- else {
175
- alert('Password is required!');
176
- $wsd_login_form_password.focus();
177
- return false;
178
- }
179
- return true;
180
- });
181
- }
182
- };
183
- }// end of wsdPassStrengthProvider
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/sw_wsd_scripts.js DELETED
@@ -1,9 +0,0 @@
1
- /*
2
- * wsd registration form
3
- * $rev #1 07/15/2011 k$
4
- */
5
- var _sw_wsdPassStrengthProvider = null;
6
- jQuery(document).ready(function($) {
7
- _sw_wsdPassStrengthProvider = new sw_wsdPassStrengthProvider($);
8
- _sw_wsdPassStrengthProvider.init();
9
- });
 
 
 
 
 
 
 
 
 
js/verify_form.js DELETED
@@ -1,137 +0,0 @@
1
- var wsd_commonPasswords=['abc123','password','computer','123456','tigger','a1b2c3','qwerty','password1','carmen','mickey','secret','summer','internet','service','canada','ranger','shadow','baseball','donald','harley','hockey','letmein','maggie','mustang','snoopy','buster','dragon','jordan','michael','michelle','patrick','123abc','andrew','calvin','changeme','diamond','fuckme','fuckyou','matthew','miller','trustno1','12345678','123456789','avalon','brandy','chelsea','coffee','falcon','freedom','gandalf','helpme','merlin','molson','newyork','soccer','thomas','wizard','Monday','asdfgh','bandit','batman','butthead','dorothy','eeyore','fishing','football','george','iloveyou','jennifer','jonathan','marina','master','monday','monkey','natasha','ncc1701','newpass','pamela','pepper','piglet','poohbear','pookie','rabbit','rachel','rocket','sparky','spring','steven','success','sunshine','thx1138','victoria','whatever','zapata','8675309','Internet','amanda','august','barney','biteme','boomer','cowboy','doctor','fisher','foobar','island','joshua','marley','orange','please','rascal','richard','scooter','shalom','silver','skippy','stanley','taylor','welcome','zephyr','111111','aaaaaa','access','albert','alexander','andrea','anthony','asdfjkl;','ashley','basketball','beavis','booboo','bradley','brandon','caitlin','camaro','charlie','chicken','cricket','dakota','dallas','daniel','debbie','dolphin','elephant','friend','fucker','ginger','goodluck','hammer','heather','iceman','jessica','joseph','jupiter','justin','knight','lacrosse','lakers','lizard','madison','mother','muffin','murphy','ncc1701d','newuser','nirvana','pentium','phoenix','picture','rainbow','saturn','shannon','shithead','skeeter','sophie','special','stephanie','stephen','sweetie','teacher','tennis','test123','topgun','tristan','william','wilson','1q2w3e','654321','666666','a12345','a1b2c3d4','angela','archie','blazer','bond007','booger','charles','christin','claire','control','david1','dennis','digital','disney','edward','flipper','franklin','horses','hunter','indigo','jasper','jeremy','julian','kelsey','killer','kingfish','lauren','maryjane','matrix','maverick','mayday','mercury','mitchell','morgan','mountain','niners','nothing','oliver','peanut','pearljam','phantom','popcorn','princess','psycho','pumpkin','purple','rebecca','reddog','robert','salmon','samson','sharon','sierra','smokey','startrek','steelers','stimpy','sunflower','superman','support','sydney','techno','telecom','walter','willie','willow','winner','zxcvbnm','absolut','alaska','alexis','animal','apples','babylon5','backup','barbara','benjamin','bird33','bluebird','bonnie','camera','chocolate','claudia','cocacola','compton','connect','cookie','cruise','deliver','douglas','dreamer','dreams','duckie','eagles','einstein','explorer','family','ferrari','flamingo','flower','foxtrot','francis','freddy','friday','froggy','galileo','giants','global','gopher','hansolo','happy1','hendrix','herman','houston','iguana','indiana','insane','inside','ironman','jasmin','jeanne','justice','katherine','kermit','leslie','martin','minnie','nascar','nelson','netware','pantera','parker','passwd','penguin','porsche911','prince','punkin','pyramid','raymond','rosebud','route66','running','security','sergei','sheena','sheila','skiing','snapple','snowball','sparrow','spencer','stealth','student','sylvia','tamara','taurus','teresa','theresa','thunderbird','tigers','toyota','training','travel','tuesday','victory','viper1','wesley','whisky','winnie','winter','wolves','xyz123','123123','1234567','696969','888888','Anthony','Bond007','Friday','Hendrix','Joshua','Matthew','October','Taurus','Tigger','abcdef','adidas','adrian','alexandr','alfred','arthur','athena','austin','awesome','badger','bamboo','beagle','beatles','beautiful','beaver','bigmac','blonde','boogie','boston','brenda','bright','bubba1','bubbles','button','buttons','cactus','captain','carlos','caroline','carrie','casper','catalog','catch22','challenge','chance','charity','charlotte','cheese','cheryl','chris1','clancy','clipper','coltrane','compaq','conrad','cooper','cooter','copper','cosmos','cougar','cracker','crawford','crystal','curtis','cyclone','cyrano','deutsch','diablo','dilbert','dollars','dookie','dumbass','dundee','e-mail','elizabeth','europe','export','farmer','firebird','fletcher','fluffy','fountain','france','freak1','friends','fuckoff','gabriel','gabriell','galaxy','gambit','garden','garfield','garlic','garnet','genesis','genius','godzilla','goforit','golfer','goober','grateful','greenday','groovy','grover','guitar','hacker','hector','herbert','horizon','hornet','howard','icecream','imagine','impala','informix','janice','jasmine','jason1','jeanette','jeffrey','jenifer','jesus1','jewels','julie1','junior','justin1','kathleen','kelly1','kennedy','kevin1','knicks','larry1','ledzep','leonard','lestat','library','lincoln','lionking','london','louise','lucky1','maddog','mailman','majordomo','mantra','margaret','mariposa','market','marlboro','martin1','master1','mazda1','mensuck','mercedes','metallic','midori','millie','mirage','money1','monica','monopoly','mookie','moroni','nathan','ncc1701e','nesbitt','nguyen','nicholas','nicole','nimrod','october','olivia','online','oxford','pacific','painter','peaches','penelope','petunia','philip','phoenix1','pickle','player','poiuyt','porsche','porter','python','quality','raquel','remember','republic','research','robbie','robert1','runner','russell','sailing','sailor','samantha','savage','scarlett','school','shadow1','shelby','simple','skipper','smiley','snickers','sniper','snoopdog','snowman','spitfire','sprite','spunky','starwars','station','stella','stingray','stormy','stupid','sumuinen','sunny1','sunrise','surfer','teddy1','testing','theboss','theking','thumper','tintin','tomcat','trebor','trevor','tweety','unicorn','valentine','valerie','vanilla','veronica','victor','vincent','warrior','warriors','weasel','wheels','wilbur','winston','wisdom','wombat','xanadu','xavier','yellow','zaphod','zeppelin','!@#$%^','!@#$%^&*','10sne1','1p2o3i','3bears','Andrew','Broadway','Champs','Family','Fisher','Friends','Jeanne','Killer','Knight','Master','Michael','Michelle','Pentium','Pepper','Raistlin','Sierra','Snoopy','Tennis','Tuesday','abacab','abcd1234','abcdefg','abigail','account','acropolis','alice1','allison','alpine','anders','andre1','andrea1','angel1','annette','antares','apache','apollo','aragorn','arizona','arnold','arsenal','asdfasdf','asdfghjk','avenger','avenir','babydoll','bailey','banana','basket','batman1','beaner','beatrice','bertha','bigben','bigdog','biggles','bigman','biology','bishop','blondie','blowfish','bluefish','bobcat','braves','brazil','bridges','brutus','buffalo','bulldog','bullet','bullshit','business','butler','butter','california','cannondale','carebear','carol1','carole','cassie','castle','catalina','catherine','catnip','cccccc','celine','center','champion','chanel','chelsea1','chester1','chicago','christian','christy','church','cinder','colleen','colorado','columbia','commander','connie','content','cookies','cooking','cordelia','corona','cowboys','coyote','crack1','creative','cuddles','cuervo','daisie','daniel1','danielle','database','davids','deadhead','denali','depeche','design','destiny','dickens','dickhead','digger','dodger','dougie','dragonfly','eclipse','electric','emerald','emmitt','entropy','etoile','excalibur','express','farout','farside','feedback','fender','fireman','firenze','fletch','florida','flowers','foster','fozzie','francesco','francine','francois','french','fuckface','gargoyle','gasman','gemini','general','gerald','germany','gilbert','goaway','golden','goldfish','gordon','graham','graphic','gregory','gretchen','gunner','hal9000','hannah','harold','harrison','harvey','hawkeye','heaven','helena','herzog','hithere','hobbit','ibanez','idontknow','integra','intern','intrepid','ireland','isabel','jackie','jackson','jaguar','jamaica','jenny1','jessie','jethrotull','jkl123','johanna1','johnny','joker1','jordan23','judith','jumanji','kangaroo','karen1','keepout','keith1','kenneth','kidder','kimberly','kingdom','kitkat','kramer','kristen','lambda','laurie','lawrence','lawyer','legend','liberty','lindsay','lindsey','liverpool','logical','lonely','lorrie','lovely','loveme','madonna','malcolm','malibu','marathon','marcel','maria1','mariah','mariah1','marilyn','mariner','marvin','maurice','maxine','maxwell','meggie','melanie','melissa','melody','merlot','mexico','michael1','michele','midnight','midway','miracle','mishka','mmouse','molly1','monique','montreal','moocow','morris','mortimer','mouse1','mulder','nautica','nellie','nermal','newton','nicarao','nirvana1','nissan','norman','notebook','olivier','oranges','oregon','overkill','pacers','packer','pandora','panther','passion','patricia','peewee','pencil','people','person','peter1','picard','picasso','pierre','pinkfloyd','polaris','police','pookie1','predator','preston','primus','prometheus','public','q1w2e3','queenie','quentin','random','rangers','raptor','rastafarian','reality','redrum','remote','reptile','reynolds','rhonda','ricardo','ricardo1','roadrunner','robinhood','robotech','rocknroll','rocky1','ronald','ruthie','sabrina','sakura','salasana','sampson','samuel','sandra','sapphire','scarecrow','scarlet','scorpio','scott1','scottie','scruffy','scuba1','seattle','serena','sergey','shanti','shogun','singer','skibum','skywalker','slacker','smashing','smiles','snowflake','snowski','snuffy','soccer1','soleil','spanky','speedy','spider','spooky','stacey','star69','starter','steven1','sting1','stinky','strawberry','stuart','sunbird','sundance','superfly','suzanne','suzuki','swimmer','swimming','system','tarzan','teddybear','teflon','temporal','terminal','theatre','thejudge','thunder','thursday','tinker','tootsie','tornado','tricia','trident','trojan','truman','trumpet','tucker','turtle','utopia','valhalla','voyager','warcraft','warlock','warren','williams','windsurf','winona','woofwoof','wrangler','wright','xcountry','xfiles','xxxxxx','yankees','yvonne','zenith','zigzag','zombie','zxc123','000000','007007','11111111','123321','171717','181818','1a2b3c','1chris','1kitty','1qw23e','4runner','57chevy','7777777','789456','7dwarfs','88888888','Abcdefg','Alexis','Animals','Bailey','Bastard','Beavis','Bismillah','Booboo','Boston','Canucks','Cardinal','Celtics','ChangeMe','Charlie','Computer','Cougar','Creative','Curtis','Daniel','Darkman','Denise','Dragon','Eagles','Elizabeth','Esther','Figaro','Fishing','Fortune','Freddy','Front242','Gandalf','Geronimo','Gingers','Golden','Goober','Gretel','HARLEY','Hacker','Hammer','Harley','Heather','Hershey','Jackson','Jennifer','Jersey','Jessica','Joanna','Johnson','Jordan','KILLER','Kitten','Liberty','Lindsay','Lizard','Madeline','Margaret','Maxwell','Mellon','Merlot','Metallic','Michel1','Monster','Montreal','Newton','Nicholas','Noriko','Paladin','Pamela','Password','Peaches','Peanuts','Phoenix','Piglet','Pookie','Princess','Purple','Rabbit','Raiders','Random','Rebecca','Robert','Russell','Saturn','Service','Shadow','Sidekick','Skeeter','Smokey','Sparky','Speedy','Sterling','Steven','Summer','Sunshine','Superman','Sverige','Swoosh','Taylor','Theresa','Thomas','Thunder','Vernon','Victoria','Vincent','Waterloo','Webster','Willow','Winnie','Wolverine','Woodrow','aardvark','abbott','abcd123','accord','active','admin1','adrock','aerobics','africa','airborne','airwolf','aki123','alfaro','alicia','aliens','alison','allegro','allstate','alpha1','altamira','althea','altima','altima1','amanda1','amazing','america','anderson','andrew!','andrew1','andromed','angels','angie1','anneli','anything','apple1','apple2','applepie','aptiva','aquarius','ariane','arlene','artemis','asdf1234','asdf;lkj','asdfjkl','ashley1','ashraf','ashton','assmunch','asterix','attila','autumn','avatar','ayelet','aylmer','baraka','barbie','barney1','barnyard','barrett','bartman','beaches','beanie','beasty','beauty','beavis1','belgium','belize','belmont','benson','beowulf','bernardo','betacam','bharat','bichon','bigboss','bigred','billy1','bimmer','bioboy','biochem','birdie','birthday','biscuit','bitter','blackjack','blanche','blinds','blowjob','blowme','blueeyes','bluejean','bogart','bombay','boobie','bootsie','boulder','bourbon','boxers','branch','brandi','brewster','bridge','britain','broker','bronco','bronte','brooke','brother','bubble','buddha','budgie','buffett','burton','butterfly','c00per','calendar','calgary','calvin1','camille','campbell','camping','cancer','canela','cannon','carbon','carnage','carolyn','carrot','cascade','catfish','catwoman','cecile','celica','cement','cessna','chainsaw','chameleon','change','chantal','charger','cherry','chiara','chiefs','chinacat','chinook','chouette','chris123','christ1','christmas','christopher','chronos','cicero','cindy1','cinema','circuit','cirque','cirrus','clapton','clarkson','claude','claudel','clueless','cobain','colette','college','colors','colt45','concept','concorde','confused','coolbean','cornflake','corvette','corwin','country','courier','crescent','crowley','crusader','cthulhu','cunningham','cupcake','current','cutlass','cynthia','daedalus','dagger','dagger1','dammit','damogran','dancer','daphne','darkstar','darren','darryl','darwin','datatrain','daytek','deborah','december','decker','deedee','deeznuts','delano','delete','denise','desert','deskjet','detroit','devine','dexter','dharma','dianne','diesel','dillweed','dipper','director','dodgers','dogbert','doitnow','dollar','dominique','domino','dontknow','doogie','doudou','downtown','dragon1','driver','dudley','dutchess','dwight','eagle1','easter','eastern','edmund','element','elina1','elissa','elliot','empire','engage','enigma','enterprise','ernie1','escort','escort1','estelle','eugene','evelyn','explore','faculty','fairview','family1','fatboy','felipe','fenris','ferguson','ferret','ferris','finance','fireball','fishes','fishhead','fishie','flanders','fleurs','flight','florida1','flowerpot','flyboy','forward','franka','freddie','frederic','freebird','freeman','frisco','froggie','froggies','front242','frontier','fugazi','funguy','funtime','future','gaelic','gambler','gammaphi','garcia','garfunkel','gaston','gateway','gateway2','gator1','george1','georgia','german','germany1','getout','ggeorge','gibbons','gibson','gilgamesh','giselle','glider1','gmoney','goblin','goblue','godiva','goethe','gofish','gollum','gramps','grandma','gravis','gremlin','gretzky','grizzly','grumpy','guitar1','gustavo','h2opolo','haggis','hailey','halloween','hallowell','hamilton','hamlet','hanson','happy123','happyday','hardcore','harley1','harriet','harris','harvard','hawkeye1','health','health1','heather1','heather2','hedgehog','heikki','helene','hello1','hello123','hello8','hellohello','help123','helper','hermes','heythere','highland','hillary','histoire','history','hitler','hobbes','holiday','homerj','honda1','hongkong','hoosier','hootie','hosehead','hotrod','hudson','hummer','huskies','hydrogen','ib6ub9','if6was9','iforget','ilmari','iloveu','impact','indonesia','ingvar','insight','instruct','integral','iomega','irmeli','isabelle','israel','italia','j1l2t3','jackie1','james1','jamesbond','jamjam','jeepster','jeffrey1','jennie','jensen','jesse1','jester','jethro','jetta1','jimbob','joanie','joanna','joelle','john316','jordie','journey','jubilee','juhani','julia2','julien','juliet','junebug','juniper','justdoit','justice4','kalamazo','karine','katerina','katie1','keeper','keller','kendall','kerala','kerrya','ketchup','kissa2','kissme','kitten','kittycat','kkkkkk','kleenex','kombat','kristi','kristine','labtec','laddie','ladybug','laserjet','lassie1','laurel','lawson','leader','leblanc','leland','lester','letter','letters','lexus1','lights','lionel','lissabon','little','logger','loislane','lolita','lonestar','longer','longhorn','looney','lovers','loveyou','lucifer','lucky14','macross','macse30','maddie','madmax','madoka','magic1','magnum','maiden','makeitso','mallard','manageme','manson','manuel','marcus','marielle','marine','marino','marshall','martha','matti1','mattingly','maxmax','meatloaf','mechanic','medical','meister','melina','memphis','mercer','mermaid','merrill','michal','michel','michigan','michou','mickel','mickey1','microsoft','midvale','mikael','milano','millenium','million','miranda','miriam','mission','mmmmmm','mobile','mobydick','monkey1','monroe','montana','montana3','montrose','moomoo','moonbeam','morecats','morpheus','motorola','movies','mowgli','mozart','mulder1','munchkin','murray','muscle','mustang1','nadine','napoleon','nation','national','nesbit','nestle','neutrino','newaccount','newlife','newyork1','nexus6','nichole','nicklaus','nightshadow','nightwind','nikita','nintendo','nomore','nopass','normal','norton','notta1','nouveau','novell','nugget','number9','numbers','nutmeg','oaxaca','obiwan','obsession','ohshit','oicu812','openup','orchid','orlando','orville','paagal','packard','packers','packrat','paloma','pancake','paradigm','parola','parrot','partner','pascal','patches','patriots','pauline','payton','peanuts','pedro1','perfect','performa','peterk','peterpan','phialpha','philips','phillips','phishy','piano1','pianoman','pianos','pierce','pigeon','pioneer','pipeline','piper1','pirate','pisces','playboy','poetic','poetry','pontiac','pookey','popeye','prayer','precious','prelude','premier','printing','provider','puddin','pulsar','pussy1','qqq111','quebec','qwerty12','qwertyui','rabbit1','racerx','rachelle','racoon','rafiki','raleigh','randy1','rasta1','ravens','redcloud','redfish','redman','redskins','redwing','redwood','reggae','reggie','reliant','renegade','rescue','revolution','reznor','rhjrjlbk','richard1','richards','richmond','ripper','ripple','roberts','robocop','robotics','rocket1','rockie','rockon','roger1','rogers','roland','rommel','rookie','rootbeer','rossigno','rugger','ruthless','sabbath','sabina','safety','safety1','saigon','samIam','samiam','sammie','samsam','sanjose','saphire','sarah1','saskia','satori','saturday','saturn5','schnapps','science','scooby','scoobydoo','scooter1','scorpion','scotch','scotty','scouts','search','secret3','seeker','september','server','services','seven7','shaggy','shanghai','shanny','shaolin','shasta','shayne','shazam','shelly','shelter','sherry','shirley','shorty','shotgun','sidney','sigmachi','signal','signature','simba1','simsim','sinatra','sirius','skipper1','skydive','skyler','slayer','sleepy','slider','smegma','smile1','smiths','smitty','smurfy','snakes','snapper','sober1','solomon','sonics','sophia','sparks','spartan','sphynx','spike1','sponge','sprocket','squash','starbuck','stargate','starlight','steph1','stephi','steve1','stevens','stewart','stivers','stocks','storage','stranger','strato','stretch','strong','student2','studio','stumpy','sucker','suckme','sultan','summit','sunfire','sunset','superstar','surfing','susan1','susanna','sutton','swanson','sweden','sweetpea','sweety','switzer','swordfish','system5','t-bone','tabatha','tacobell','taiwan','tamtam','tanner','tapani','targas','target','tarheel','tattoo','tazdevil','tequila','terry1','tester','testtest','thankyou','theend','thelorax','thisisit','thompson','thorne','thrasher','tiger2','tightend','timber','timothy','tinkerbell','topcat','topher','toshiba','tototo','toucan','transfer','transit','transport','trapper','travis','treasure','tricky','triton','trombone','trophy','trouble','trucker','tucson','turbo2','tyler1','ultimate','unique','united','upsilon','ursula','vacation','valley','vampire','vanessa','vedder','venice','vermont','victor1','vikram','vincent1','violet','violin','virago','virgil','virginia','vision','visual','volcano','volley','voodoo','vortex','waiting','walden','walleye','wanker','warner','water1','wayne1','webmaster','webster','weezer','wendy1','western','whale1','whitney','whocares','whoville','wibble','wildcat','william1','window','winniethepooh','wolfgang','wolverine','wombat1','wonder','x-files','xxx123','xxxxxxxx','yamaha','yankee','yogibear','yolanda','yomama','yvette','zachary','zebras','zepplin','zoltan','zoomer','zxcvbn','!@#$%^&','00000000','121212','1234qwer','131313','21122112','99999999','@#$%^&','ABC123','Abcdef','Asdfgh','Changeme','FuckYou','Fuckyou','JSBach','Michel','NCC1701','Qwerty','Windows','Zxcvbnm','action','amelie','anaconda','apollo13','artist','asshole','benoit','bernard','bernie','bigbird','blizzard','bluesky','bonjour','booster','byteme','caesar','cardinal','carolina','chandler','changeit','chapman','charlie1','chiquita','chocolat','christia','christoph','classroom','cloclo','corrado','cougars','courtney','dolphins','dominic','donkey','eminem','energy','fearless','fiction','forest','forever','french1','gilles','gocougs','good-luck','graymail','guinness','hilbert','homebrew','hotdog','indian','johnson','kristin','lorraine','m1911a1','macintosh','mailer','maxime','memory','mirror','ne1410s','ne1469','ne14a69','nebraska','nemesis','network','newcourt','notused','oatmeal','patton','planet','players','politics','portland','praise','property','protel','psalms','qwaszx','raiders','rambo1','rancid','scrooge','shelley','skidoo','softball','speedo','sports','ssssss','steele','stephani','sunday','sylvie','symbol','tiffany','toronto','trixie','undead','valentin','velvet','viking','walker','watson','zhongguo','babygirl','1234567890','pretty','hottie','987654321','naruto','spongebob','daniela','princesa','christ','blessed','single','qazwsx','pokemon','iloveyou1','iloveyou2','fuckyou1','hahaha','blessing','blahblah','blink182','123qwe','trinity','passw0rd','google','looking','spirit','iloveyou!','qwerty1','rotimi','onelove','mylove','222222','ilovegod','football1','loving','emmanuel','1q2w3e4r','red123','blabla','112233'];
2
-
3
- function showPasswordStrength(score)
4
- {
5
- var strengthDiv = document.getElementById("wsd_password_strength");
6
- if(!strengthDiv)return false;
7
- if(score == undefined)
8
- {
9
- strengthDiv.style.visibility = "hidden";
10
- return true;
11
- }
12
- else {
13
- strengthDiv.style.visibility = "visible";
14
- if(score == -1)
15
- {
16
- strengthDiv.innerHTML = "too short";
17
- strengthDiv.style.backgroundColor = "#ee0000"
18
- }
19
- else if(score == 0)
20
- {
21
- strengthDiv.innerHTML = "too obvious";
22
- strengthDiv.style.backgroundColor = "#ee0000";
23
- }
24
- else if(score < 34)
25
- {
26
- strengthDiv.innerHTML = "not strong enough";
27
- strengthDiv.style.backgroundColor = "#eeaaaa";
28
- }
29
- else if(score < 68)
30
- {
31
- strengthDiv.innerHTML = "good";
32
- strengthDiv.style.backgroundColor = "#ffff00";
33
- }
34
- else
35
- {
36
- strengthDiv.innerHTML = "strong";
37
- strengthDiv.style.backgroundColor = "#00ff00";
38
- }
39
- }
40
- }
41
-
42
- function evaluatePassStrength(pass)
43
- {
44
- if(typeof pass != 'string'){
45
- showPasswordStrength();
46
- return -1;
47
- }
48
- var len = pass.length;
49
- if(len == 0){
50
- showPasswordStrength();
51
- return -1;
52
- }
53
- if(len < 6) {
54
- showPasswordStrength(-1);
55
- return -1;
56
- }
57
- for(var i=0;i<wsd_commonPasswords.length;i++) {
58
- if(wsd_commonPasswords[i] == pass) {
59
- showPasswordStrength(0);
60
- return 0;
61
- }
62
- }
63
-
64
- var score=len*4;
65
- var a=0;
66
- var C=0;
67
- var n=0;
68
- var s=0;
69
- var l='';
70
- for(var i=0;i<len;i++){
71
- if(l==pass.charAt(i)) score -= 1; else l=pass.charAt(i);
72
- if((pass.charAt(i)>='a')&&(pass.charAt(i)<='z')){a++;continue;}
73
- if((pass.charAt(i)>='A')&&(pass.charAt(i)<='Z')){C++;continue;}
74
- if((pass.charAt(i)>='0')&&(pass.charAt(i)<='9')){n++;continue;}
75
- s++;
76
- }
77
- if(len == a) score -= 10;
78
- if(len == n) score -= 10;
79
- if(len == C) score -= 10;
80
- if(n > 0) score += 5;
81
- if(C > 0) score += 5;
82
- if(s > 0) score += 5;
83
- if((n>0)&&(a>0)) score += 15;
84
- if((C>0)&&(a>0)) score += 15;
85
- if((s>0)&&(a>0)) score += 15;
86
- if(score > 100) score = 100;
87
-
88
- showPasswordStrength(score);
89
- return score;
90
- }
91
-
92
- function onPasswordChange(){
93
- var passInput = document.getElementById("wsd_account_pass");
94
- if(passInput){
95
- evaluatePassStrength(passInput.value);
96
- passwordMatch();
97
- }
98
- }
99
-
100
- function passwordMatch(){
101
- var passInput1 = document.getElementById("wsd_account_pass");
102
- var passInput2 = document.getElementById("wsd_account_pass_re");
103
- if(passInput1 && passInput2){
104
- var match = (passInput1.value==passInput2.value);
105
- var matchhDiv = document.getElementById("wsd_password_match");
106
- if(match)matchhDiv.style.visibility = "hidden";
107
- else {
108
- matchhDiv.style.visibility = "visible";
109
- matchhDiv.innerHTML = "passwords don't match";
110
- matchhDiv.style.backgroundColor = "#eeaaaa";
111
- }
112
- return match;
113
- }
114
- else
115
- return true;
116
- }
117
-
118
- function submitForm(){
119
- var agree = document.getElementById("wsd_account_agree");
120
- var passInput1 = document.getElementById("wsd_account_pass");
121
- var passInput2 = document.getElementById("wsd_account_pass_re");
122
-
123
- if(!agree || !passInput1 || !passInput2)return;
124
-
125
- var errors = '';
126
- if(passInput1.value == "")errors += " - Password cannot be blank\n";
127
- else if(evaluatePassStrength(passInput1.value) <= 34)errors += " - Choose a better password\n";
128
- if(!passwordMatch())errors += " - Passwords don't match\n";
129
- if(agree.checked != 1)errors += " - You have to agree with the terms of service\n";
130
- if(errors!=''){
131
- alert("Please correct the following errors and try again:\n" + errors)
132
- }
133
- else {
134
- if(form=document.getElementById("sw_wsd_new_user_form"))form.submit();
135
- Recaptcha.reload();
136
- }
137
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-ar.mo DELETED
Binary file
languages/secure_wp-ar.po DELETED
@@ -1,225 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-06-22 12:29+0100\n"
6
- "PO-Revision-Date: 2010-05-24 13:50+0300\n"
7
- "Last-Translator: www.r-sn.com <web.rsn@gmail.com>\n"
8
- "Language-Team: مدونة رسين <web.rsn@gmail.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-SourceCharset: utf-8\n"
13
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
14
- "X-Poedit-Basepath: ../\n"
15
- "X-Textdomain-Support: yes\n"
16
- "X-Poedit-Language: Arabic\n"
17
- "X-Poedit-Country: SAUDI ARABIA\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
-
20
- #: secure-wordpress.php:323
21
- msgid "Settings"
22
- msgstr "الإعدادات"
23
-
24
- #@ secure_wp
25
- #: secure-wordpress.php:352
26
- #: secure-wordpress.php:389
27
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
28
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">معلومات</a>"
29
-
30
- #@ secure_wp
31
- #: secure-wordpress.php:369
32
- msgid "Options update."
33
- msgstr "تحديث الإعدادات"
34
-
35
- #@ secure_wp
36
- #: secure-wordpress.php:371
37
- msgid "All entries in the database was cleared. Now deactivate this plugin."
38
- msgstr "تم مسح جميع الإدخالات في قاعدة البيانات. تم تعطيل الإضافة ."
39
-
40
- #@ secure_wp
41
- #: secure-wordpress.php:385
42
- #: secure-wordpress.php:392
43
- msgid "Secure WP"
44
- msgstr "تأمين WP"
45
-
46
- #@ secure_wp
47
- #: secure-wordpress.php:388
48
- #: secure-wordpress.php:614
49
- msgid "Secure WordPress"
50
- msgstr "تأمين الوورد بريس"
51
-
52
- #: secure-wordpress.php:412
53
- msgid "Version"
54
- msgstr "الإصدار"
55
-
56
- #@ secure_wp
57
- #: secure-wordpress.php:412
58
- msgid "History"
59
- msgstr "السجل"
60
-
61
- #: secure-wordpress.php:412
62
- msgid "Author"
63
- msgstr "الكاتب"
64
-
65
- #@ secure_wp
66
- #: secure-wordpress.php:542
67
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
68
- msgstr "الخيارات لم يتم تحديثها .. لا تملك الصلاحيات"
69
-
70
- #@ secure_wp
71
- #: secure-wordpress.php:562
72
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
73
- msgstr "لايمكن حذف الادخالات .. لا تملك الصلاحيات"
74
-
75
- #@ secure_wp
76
- #: secure-wordpress.php:570
77
- msgid "Entries was not delleted - check the checkbox!"
78
- msgstr "لايمكن حذف الادخالات .. تحقق من الصندوق"
79
-
80
- #@ secure_wp
81
- #: secure-wordpress.php:590
82
- msgid "All entries in the database was cleared."
83
- msgstr "تم مسح جميع الإدخالات في قاعدة البيانات."
84
-
85
- #@ secure_wp
86
- #: secure-wordpress.php:594
87
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
88
- msgstr "لا يمكن حذف الادخالات .. تحقق من الصندوق أو أنك لاتملك الصلاحيات"
89
-
90
- #: secure-wordpress.php:619
91
- #: secure-wordpress.php:734
92
- #: secure-wordpress.php:754
93
- msgid "Click to toggle"
94
- msgstr "انقر للتبديل"
95
-
96
- #@ secure_wp
97
- #: secure-wordpress.php:620
98
- msgid "Configuration"
99
- msgstr "التكوين"
100
-
101
- #@ secure_wp
102
- #: secure-wordpress.php:630
103
- msgid "Error-Messages"
104
- msgstr "رسالة خطأ"
105
-
106
- #@ secure_wp
107
- #: secure-wordpress.php:634
108
- msgid "deactivates tooltip and error message at login of WordPress"
109
- msgstr "تعطيل tooltip و إظهار رسالة خطأ عند تسجيل الدخول"
110
-
111
- #@ secure_wp
112
- #: secure-wordpress.php:640
113
- msgid "WordPress Version"
114
- msgstr "إصدار الوورد بريس"
115
-
116
- #@ secure_wp
117
- #: secure-wordpress.php:644
118
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
119
- msgstr "إزالة إصدار الوورد بريس في جميع المجالات ، بما في ذلك الخلاصات ، وليس في الادارة"
120
-
121
- #@ secure_wp
122
- #: secure-wordpress.php:650
123
- msgid "index.html"
124
- msgstr "index.html"
125
-
126
- #@ secure_wp
127
- #: secure-wordpress.php:660
128
- msgid "Really Simple Discovery"
129
- msgstr "Really Simple Discovery"
130
-
131
- #@ secure_wp
132
- #: secure-wordpress.php:664
133
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
134
- msgstr "إزالة ارتباط Really Simple Discovery من <code>wp_head</code> من الواجهة"
135
-
136
- #@ secure_wp
137
- #: secure-wordpress.php:670
138
- msgid "Windows Live Writer"
139
- msgstr "Windows Live Writer"
140
-
141
- #@ secure_wp
142
- #: secure-wordpress.php:674
143
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
144
- msgstr "إزالة ارتباط Windows Live Writer من <code>wp_head</code> من الواجهة"
145
-
146
- #@ secure_wp
147
- #: secure-wordpress.php:680
148
- msgid "Core Update"
149
- msgstr "تحديث الأصل"
150
-
151
- #@ secure_wp
152
- #: secure-wordpress.php:684
153
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
154
- msgstr "إزالة المطالبة بتحديث إصدار الوورد بريس لغير المدراء .. مع ظهور رسالة التحديث "
155
-
156
- #@ secure_wp
157
- #: secure-wordpress.php:690
158
- msgid "Plugin Update"
159
- msgstr "تحديث الإضافة"
160
-
161
- #@ secure_wp
162
- #: secure-wordpress.php:694
163
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
164
- msgstr "إزالة المطالبة بتحديث إصدارات الإضافات لغير المدراء .. مع ظهور رسالة التحديث "
165
-
166
- #@ secure_wp
167
- #: secure-wordpress.php:701
168
- msgid "Theme Update"
169
- msgstr "تحديث القالب"
170
-
171
- #@ secure_wp
172
- #: secure-wordpress.php:705
173
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
174
- msgstr "إزالة المطالبة بتحديث إصدارات القوالب لغير المدراء .. مع ظهور رسالة التحديث "
175
-
176
- #@ secure_wp
177
- #: secure-wordpress.php:712
178
- msgid "WP Scanner"
179
- msgstr "WP مسح"
180
-
181
- #@ secure_wp
182
- #: secure-wordpress.php:716
183
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
184
- msgstr "يجب عليك إضافة هذا الكود لقالبك <code>&lt;!-- wpscanner --&gt;</code> ثم إذهب لصفحة <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> وأضغط مسح .."
185
-
186
- #@ secure_wp
187
- #: secure-wordpress.php:724
188
- msgid "Save Changes"
189
- msgstr "حفظ التغييرات"
190
-
191
- #@ secure_wp
192
- #: secure-wordpress.php:735
193
- msgid "Clear Options"
194
- msgstr "حذف الخيارات"
195
-
196
- #@ secure_wp
197
- #: secure-wordpress.php:738
198
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
199
- msgstr "عند الضغط على زر الحذف سيتم حذف جميع إعدادات الإضافة التي تم إنشاؤها من قبل"
200
-
201
- #@ secure_wp
202
- #: secure-wordpress.php:743
203
- msgid "Delete Options"
204
- msgstr "حذف الخيارات"
205
-
206
- #@ secure_wp
207
- #: secure-wordpress.php:755
208
- msgid "About the plugin"
209
- msgstr "معلومات عن الإضافة"
210
-
211
- #@ secure_wp
212
- #: secure-wordpress.php:768
213
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
214
- msgstr "للمزيد من المعلومات قم بزيارة <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">صفحة الإضافة </a> أو <a href=\"http://www.r-sn.com/wp/archives/1848/\">مدونة رسين </a> وطرح الاستفسارات لمن يواجه مشكلة أو لمزيد من المعلومات"
215
-
216
- #@ secure_wp
217
- #: secure-wordpress.php:768
218
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
219
- msgstr "قم بزيارتي <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
220
-
221
- #@ secure_wp
222
- #: secure-wordpress.php:654
223
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
224
- msgstr "إنشاء <code>index.php</code> في <code>/plugins/</code> و <code>/themes/</code> مهم جداً لأجل أن لايتم استعراض المجلدات .."
225
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-be_BY.mo DELETED
Binary file
languages/secure_wp-be_BY.po DELETED
@@ -1,237 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-05-08 12:17+0100\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Fat Cow <zhr@tut.by>\n"
8
- "Language-Team: Fat Cow <zhr@tut.by>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: Belarusian\n"
14
- "X-Poedit-Country: BELARUS\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
17
- "X-Poedit-Basepath: .\n"
18
- "X-Poedit-Bookmarks: \n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Textdomain-Support: yes"
21
-
22
- #: secure-wordpress.php:330
23
- msgid "Settings"
24
- msgstr "Настройки"
25
-
26
- #: secure-wordpress.php:359
27
- #: secure-wordpress.php:402
28
- #@ secure_wp
29
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
30
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Документация</a>"
31
-
32
- #: secure-wordpress.php:382
33
- #@ secure_wp
34
- msgid "Options update."
35
- msgstr "Опции обновлены."
36
-
37
- #: secure-wordpress.php:384
38
- #@ secure_wp
39
- msgid "All entries in the database was cleared. Now deactivate this plugin."
40
- msgstr "Все элементы в базе данных были очищены. Сейчас деактивируйте плагин."
41
-
42
- #: secure-wordpress.php:398
43
- #: secure-wordpress.php:405
44
- #@ secure_wp
45
- msgid "Secure WP"
46
- msgstr "Secure WP"
47
-
48
- #: secure-wordpress.php:401
49
- #: secure-wordpress.php:641
50
- #@ secure_wp
51
- msgid "Secure WordPress"
52
- msgstr "Безопасность WordPress"
53
-
54
- #: secure-wordpress.php:425
55
- msgid "Version"
56
- msgstr "Версия"
57
-
58
- #: secure-wordpress.php:425
59
- #@ secure_wp
60
- msgid "History"
61
- msgstr "История"
62
-
63
- #: secure-wordpress.php:425
64
- msgid "Author"
65
- msgstr "Автор"
66
-
67
- #: secure-wordpress.php:568
68
- #@ secure_wp
69
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
70
- msgstr "Опции не обновлены - у вас нет привилегий для этого!"
71
-
72
- #: secure-wordpress.php:588
73
- #@ secure_wp
74
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
75
- msgstr "Элементы не удалены - у вас нет привилегий для этого!"
76
-
77
- #: secure-wordpress.php:596
78
- #@ secure_wp
79
- msgid "Entries was not delleted - check the checkbox!"
80
- msgstr "Элементы не удалены - отметьте поля!"
81
-
82
- #: secure-wordpress.php:616
83
- #@ secure_wp
84
- msgid "All entries in the database was cleared."
85
- msgstr "Все элементы удалены из базы!"
86
-
87
- #: secure-wordpress.php:620
88
- #@ secure_wp
89
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
90
- msgstr "Элементы не удалены - отметьте поля или же у вас нет прав для этого!"
91
-
92
- #: secure-wordpress.php:646
93
- #: secure-wordpress.php:771
94
- #: secure-wordpress.php:791
95
- msgid "Click to toggle"
96
- msgstr "Нажмите для разворачивания"
97
-
98
- #: secure-wordpress.php:647
99
- #@ secure_wp
100
- msgid "Configuration"
101
- msgstr "Конфигурация"
102
-
103
- #: secure-wordpress.php:657
104
- #@ secure_wp
105
- msgid "Error-Messages"
106
- msgstr "Сообщения об ошибках"
107
-
108
- #: secure-wordpress.php:661
109
- #@ secure_wp
110
- msgid "deactivates tooltip and error message at login of WordPress"
111
- msgstr "деактивирует подсказки и сообщения об ошибке при выходе из WordPress"
112
-
113
- #: secure-wordpress.php:667
114
- #@ secure_wp
115
- msgid "WordPress Version"
116
- msgstr "версия WordPress"
117
-
118
- #: secure-wordpress.php:671
119
- #@ secure_wp
120
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
121
- msgstr "Удаление версии WordPress во всех областях, в том числе и в ленте, не в Admin режиме"
122
-
123
- #: secure-wordpress.php:697
124
- #@ secure_wp
125
- msgid "Really Simple Discovery"
126
- msgstr "Really Simple Discovery"
127
-
128
- #: secure-wordpress.php:701
129
- #@ secure_wp
130
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
131
- msgstr "Удалите ссылку Really Simple Discovery с <code>wp_head</code> панели."
132
-
133
- #: secure-wordpress.php:707
134
- #@ secure_wp
135
- msgid "Windows Live Writer"
136
- msgstr "Windows Live Writer"
137
-
138
- #: secure-wordpress.php:711
139
- #@ secure_wp
140
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
141
- msgstr "Удалите Windows Live Writer из <code>wp_head</code> панели."
142
-
143
- #: secure-wordpress.php:717
144
- #@ secure_wp
145
- msgid "Core Update"
146
- msgstr "Обновления ядра"
147
-
148
- #: secure-wordpress.php:721
149
- #@ secure_wp
150
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
151
- msgstr "Деактивировать обновление ядра для не-администраторов. Показать сообщение о новой версии WordPress только пользователям с правом обновления."
152
-
153
- #: secure-wordpress.php:727
154
- #@ secure_wp
155
- msgid "Plugin Update"
156
- msgstr "Обновление плагина"
157
-
158
- #: secure-wordpress.php:731
159
- #@ secure_wp
160
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
161
- msgstr "Деактивировать обновление плагина для не-администраторов. Показать сообщение о новой версии WordPress только пользователям с правом редактирования плагинов."
162
-
163
- #: secure-wordpress.php:749
164
- #@ secure_wp
165
- msgid "WP Scanner"
166
- msgstr "WP Scanner"
167
-
168
- #: secure-wordpress.php:753
169
- #@ secure_wp
170
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
171
- msgstr "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
172
-
173
- #: secure-wordpress.php:761
174
- #@ secure_wp
175
- msgid "Save Changes"
176
- msgstr "Сохранить настройки"
177
-
178
- #: secure-wordpress.php:772
179
- #@ secure_wp
180
- msgid "Clear Options"
181
- msgstr "Очистить опции"
182
-
183
- #: secure-wordpress.php:775
184
- #@ secure_wp
185
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
186
- msgstr "Нажмите на эту кнопку, чтобы удалить настройки этого плагина. Отключение Secure WordPress удалит все данные, которые могли быть созданы."
187
-
188
- #: secure-wordpress.php:780
189
- #@ secure_wp
190
- msgid "Delete Options"
191
- msgstr "Удалить опции"
192
-
193
- #: secure-wordpress.php:792
194
- #@ secure_wp
195
- msgid "About the plugin"
196
- msgstr "Об этом плагине"
197
-
198
- #: secure-wordpress.php:805
199
- #@ secure_wp
200
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
201
- msgstr "Дополнительная информация: посетите <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">домашнюю страницу плагина</a> для дополнительной информации и получения последней версии плагина."
202
-
203
- #: secure-wordpress.php:805
204
- #@ secure_wp
205
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
206
- msgstr "Хотите поблагодарить меня? Посетите мой <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
207
-
208
- #: secure-wordpress.php:691
209
- #@ secure_wp
210
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
211
- msgstr "tworzy <code>index.php</code> w pliku <code>/plugins/</code> i <code>/themes/</code>, aby zachować jej wyświetlaniu listy katalogów"
212
-
213
- #: secure-wordpress.php:738
214
- #@ secure_wp
215
- msgid "Theme Update"
216
- msgstr "Theme Update"
217
-
218
- #: secure-wordpress.php:742
219
- #@ secure_wp
220
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
221
- msgstr "Usuń aktualizację tematem niż administratorzy. Pokaż wiadomość do nowej wersji tematem zainstalować bloga tylko dla użytkowników z prawami do edycji tematów."
222
-
223
- #: secure-wordpress.php:677
224
- #@ secure_wp
225
- msgid "WordPress Version in Backend"
226
- msgstr ""
227
-
228
- #: secure-wordpress.php:687
229
- #@ secure_wp
230
- msgid "index.php"
231
- msgstr ""
232
-
233
- #: secure-wordpress.php:681
234
- #@ secure_wp
235
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
236
- msgstr ""
237
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-da_DK.mo DELETED
Binary file
languages/secure_wp-da_DK.po DELETED
@@ -1,425 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPres 0.8.5\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-06-16 15:22+0100\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Team Blogos <wordpress@blogos.dk>\n"
8
- "Language-Team: Team Blogos <wordpress@blogos.dk>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2;plural=n != 1;\n"
13
- "X-Poedit-Language: Danish\n"
14
- "X-Poedit-Country: DENMARK\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;_n:1,2;__ngettext:1,2;__ngettext_noop:1,2;_nc:1,2;_nx:1,2;_n_noop:1,2;_nx_noop;_x;_c;esc_html__;esc_html_e;esc_html_x;esc_attr__;esc_attr_e;esc_attr_x\n"
17
- "X-Poedit-Basepath: d:\\wordpress\\plugins\\secure-wordpress\n"
18
- "X-Poedit-SearchPath-0: d:\\wordpress\\plugins\\secure-wordpress\n"
19
-
20
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:364
21
- msgid "Settings"
22
- msgstr "Indstillinger"
23
-
24
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:393
25
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:440
26
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
27
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Dokumentation</a>"
28
-
29
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:416
30
- msgid "Options update."
31
- msgstr "Update om indstillinger"
32
-
33
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:418
34
- msgid "All entries in the database was cleared. Now deactivate this plugin."
35
- msgstr "Alle pluginnets poster i databasen blev ryddet. Deaktivér dette plugin nu."
36
-
37
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:432
38
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:443
39
- msgid "Secure WP"
40
- msgstr "Secure WP"
41
-
42
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:439
43
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:738
44
- msgid "Secure WordPress"
45
- msgstr "Secure WordPress"
46
-
47
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:463
48
- msgid "Version"
49
- msgstr "version"
50
-
51
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:463
52
- msgid "History"
53
- msgstr "Historik"
54
-
55
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:463
56
- msgid "Author"
57
- msgstr "Forfatter"
58
-
59
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:664
60
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
61
- msgstr "Indstillingerne blev ikke opdateret &ndash; du har ikke rettigheder til at gøre dette!"
62
-
63
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:684
64
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
65
- msgstr "Posterne blev ikke slettet &ndash; du har ikke rettigheder til at gøre dette!"
66
-
67
- # type: deleted
68
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:692
69
- msgid "Entries were not deleted - check the checkbox!"
70
- msgstr "Posterne blev ikke slettet &ndash; tjek afkrydsningsfeltet!"
71
-
72
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:712
73
- msgid "All entries in the database were cleared."
74
- msgstr "Alle poster i databasen blev tømt."
75
-
76
- # typo: deleted
77
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:716
78
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
79
- msgstr "Posterne blev ikke slettet &ndash; tjek afkrydsningsfeltet. Eller også har du ikke rettigheder til at gøre dette!"
80
-
81
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:743
82
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:878
83
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:988
84
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1101
85
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1121
86
- msgid "Click to toggle"
87
- msgstr "Klik for slå til/fra"
88
-
89
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:744
90
- msgid "Configuration"
91
- msgstr "Opsætning"
92
-
93
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:754
94
- msgid "Error-Messages"
95
- msgstr "Fejlmeddelelser"
96
-
97
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:758
98
- msgid "Deactivates tooltip and error message at login of WordPress"
99
- msgstr "Deaktiverer tooltip og fejlmeddelelse ved login til WordPress"
100
-
101
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:764
102
- msgid "WordPress Version"
103
- msgstr "WordPress-version"
104
-
105
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:768
106
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
107
- msgstr "Fjerner WordPress-version alle steder, også i feeds, men ikke i admin"
108
-
109
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:774
110
- msgid "WordPress Version in Backend"
111
- msgstr "WordPress-version i kontrolpanel"
112
-
113
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:778
114
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
115
- msgstr "Fjern WordPress-version i admin-området for ikke-admins. Vis kun meddelelse om WordPress-version til de brugere, der har rettigheder til at redigere plugins."
116
-
117
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:784
118
- msgid "index.php"
119
- msgstr "index.php"
120
-
121
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:788
122
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
123
- msgstr "Opretter en <code>index.php</code> fil i <code>/plugins/</code>-mappen, så der ikke bliver vist nogen mappeoversigt"
124
-
125
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:794
126
- msgid "Really Simple Discovery"
127
- msgstr "Really Simple Discovery"
128
-
129
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:798
130
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
131
- msgstr "Fjern Really Simple Discovery-linket i <code>wp_head</code> ude i bloggen"
132
-
133
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:804
134
- msgid "Windows Live Writer"
135
- msgstr "Windows Live Writer"
136
-
137
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:808
138
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
139
- msgstr "Fjern Windows Live Writer-linket i <code>wp_head</code> ude i bloggen"
140
-
141
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:814
142
- msgid "Core Update"
143
- msgstr "Kerne-opdatering"
144
-
145
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:818
146
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
147
- msgstr "Fjern WordPress Core-opdatering fra ikke-admins. Vis kun meddelelse om ny WordPress-version til de brugere, der har rettigheder til at opdatere."
148
-
149
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:824
150
- msgid "Plugin Update"
151
- msgstr "Plugin-opdatering"
152
-
153
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:828
154
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
155
- msgstr "Fjern plugin-opdatering for ikke-admins. Vis kun meddelelse om ny version af et plugin i din WordPress-installation til de brugere, der har rettigheder til at redigere plugins."
156
-
157
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:835
158
- msgid "Theme Update"
159
- msgstr "Tema-opdatering"
160
-
161
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:839
162
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
163
- msgstr "Fjern tema-opdatering for ikke-admins. Vis kun meddelelse om ny version af et tema i din blogs installation til de brugere, der har rettigheder til at redigere temaer."
164
-
165
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:846
166
- msgid "WP Scanner"
167
- msgstr "WP-scanner"
168
-
169
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:850
170
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
171
- msgstr "WordPress-scanner er en gratis online-ressource, som blogadministratorer kan bruge til at undersøge niveauet af deres WordPress-sikkerhed. Hvis du vil køre WP-scanner, så markér denne indstilling og tilføj <code>&lt;!-- wpscanner --&gt;</code> til dit aktuelle WordPress-tema. Gå derefter til <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> og scan din site."
172
-
173
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:856
174
- msgid "Block bad queries"
175
- msgstr "Blokér ondsindede forespørgsler"
176
-
177
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:860
178
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
179
- msgstr "Beskyt WordPress mod ondsindede URL-forespørgsler; få flere oplysninger i <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"læs dette indlæg\" >indlæg fra Jeff Starr</a>"
180
-
181
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:868
182
- msgid "Save Changes"
183
- msgstr "Gem ændringer"
184
-
185
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:879
186
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
187
- msgstr "Validér din site med en gratis malware-scan fra www.sitesecuritymonitor.com"
188
-
189
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:882
190
- msgid "Take us for a Test Drive - Free Scan"
191
- msgstr "Lad os teste &ndash; Gratis scan"
192
-
193
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:883
194
- msgid "We understand you may have questions:"
195
- msgstr "Det er forståeligt, hvis du har et spørgsmål:"
196
-
197
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:884
198
- msgid "What does this do for me?"
199
- msgstr "Hvad får jeg ud af det?"
200
-
201
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:885
202
- msgid "Am I really safe? I need to be sure."
203
- msgstr "Er jeg helt sikret? Jeg skal være sikker!"
204
-
205
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:886
206
- msgid "Rest Assured, Site Security Monitor has you covered."
207
- msgstr "Du kan være sikker på, at Site Security Monitor sikrer dig."
208
-
209
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:888
210
- msgid "FREE scan looks for malware"
211
- msgstr "Gratis scan søger efter malware"
212
-
213
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:889
214
- msgid "FREE report of website vulnerabilities found"
215
- msgstr "Gratis rapport over fundne sårbarheder på din site"
216
-
217
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:890
218
- msgid "No setup, tuning and installation on your site - scan begins immediately"
219
- msgstr "Ingen opsætning, indstilling eller installation på din site &ndash; scan begynder med det samme"
220
-
221
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:892
222
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
223
- msgstr "Du får en detaljeret mailware- og websårbarhedsrapport &ndash; helt gratis. Du er velkommen til at bruge denne rapport til at løse problemer, at vise din chef, at siten er ok, eller at vise dine klienter, at den site, du har udviklet, er sikker!"
224
-
225
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:893
226
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
227
- msgstr "Bonus: Du vil få lov til at bruge Site Security Monitors <span title=\"Sikkerhedssegl\">Safe-Seal</span> på din site efter scanningen. Det viser verden, at du ikke har malware på din site!"
228
-
229
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:895
230
- msgid "The form"
231
- msgstr "Formularen"
232
-
233
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:896
234
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
235
- msgstr "Brug den følgende formular eller brug den på <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">din website</a>."
236
-
237
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:928
238
- msgid "Full Name"
239
- msgstr "Fuld navn"
240
-
241
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:931
242
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:939
243
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:947
244
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:955
245
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:971
246
- msgid "*required"
247
- msgstr "* skal udfyldes"
248
-
249
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:936
250
- msgid "eMail Adress"
251
- msgstr "E-mail-adresse"
252
-
253
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:939
254
- msgid ", eMail Address must match domain name"
255
- msgstr ", e-mail-adresse skal matche domænenavn"
256
-
257
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:944
258
- msgid "Website"
259
- msgstr "Website"
260
-
261
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:952
262
- msgid "Phone"
263
- msgstr "Telefon"
264
-
265
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:960
266
- msgid "Yes, I need help!"
267
- msgstr "Ja, jeg har brug for hjælp!"
268
-
269
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:963
270
- msgid "Call me"
271
- msgstr "Ring til mig"
272
-
273
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:968
274
- msgid "Terms and Conditions"
275
- msgstr "Vilkår og betingelser"
276
-
277
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:971
278
- msgid ", I accept"
279
- msgstr ", jeg accepterer"
280
-
281
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:978
282
- msgid "Get my Free Web Scan"
283
- msgstr "Brug den gratis webscan"
284
-
285
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:989
286
- msgid "Safe Seal"
287
- msgstr "<span title=\"Sikkerhedssegl\">Safe Seal</span>"
288
-
289
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:992
290
- msgid "Thankyou for using our scan. You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
291
- msgstr "Tak, fordi du bruger vores scanner. Du er velkommen til at bruge scanneren nedenfor (den genererer HTML, som du slet kan indsætte) på din egen blog. Dette segl udfører ikke nogen scanning, men kun basal WordPress-sikkerhed, sådan som fællesskabet og vores egne kundeerfaringer anbefaler.<br/>Ønsker du at foretage regelmæssige skanninger for sårbarheder og malware, så <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">besøg vores hovedside ...</a>"
292
-
293
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1020
294
- msgid "Color"
295
- msgstr "Farve"
296
-
297
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1024
298
- msgid "Green"
299
- msgstr "Grøn"
300
-
301
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1025
302
- msgid "Blue"
303
- msgstr "Blå"
304
-
305
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1026
306
- msgid "Red"
307
- msgstr "Rød"
308
-
309
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1027
310
- msgid "Brown"
311
- msgstr "Brun"
312
-
313
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1028
314
- msgid "Gray"
315
- msgstr "Grå"
316
-
317
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1037
318
- msgid "Text"
319
- msgstr "Tekst"
320
-
321
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1041
322
- msgid "Protected"
323
- msgstr "Beskyttet"
324
-
325
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1042
326
- msgid "Secured"
327
- msgstr "Sikrer"
328
-
329
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1043
330
- msgid "Scanned"
331
- msgstr "Scannet"
332
-
333
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1044
334
- msgid "Protected by"
335
- msgstr "Beskyttet af"
336
-
337
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1050
338
- msgid "Orientation"
339
- msgstr "Retning"
340
-
341
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1054
342
- msgid "Horizontal"
343
- msgstr "Horisontalt"
344
-
345
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1055
346
- msgid "Vertical"
347
- msgstr "Vertikalt"
348
-
349
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1061
350
- msgid "Image border"
351
- msgstr "Billedramme"
352
-
353
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1069
354
- msgid "Language"
355
- msgstr "Sprog"
356
-
357
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1073
358
- msgid "English (US)"
359
- msgstr "Engelsk (US)"
360
-
361
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1074
362
- msgid "English (UK)"
363
- msgstr "Engelsk (UK)"
364
-
365
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1075
366
- msgid "Spanish"
367
- msgstr "Spansk"
368
-
369
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1076
370
- msgid "German"
371
- msgstr "Tysk"
372
-
373
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1077
374
- msgid "Italian"
375
- msgstr "Italiensk"
376
-
377
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1078
378
- msgid "Japanese"
379
- msgstr "Japansk"
380
-
381
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1079
382
- msgid "Chinese (Simplified)"
383
- msgstr "Kinesisk (Forsimplet)"
384
-
385
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1080
386
- msgid "Chinese (Traditional)"
387
- msgstr "Kinesisk (Traditionel)"
388
-
389
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1088
390
- msgid "Source"
391
- msgstr "Kilde"
392
-
393
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1089
394
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
395
- msgstr "Her er din genererede kode. Placér den (som HTML-widget) på din website for at vise, at du er beskyttet."
396
-
397
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1102
398
- msgid "Clear Options"
399
- msgstr "Ryd indstillinger"
400
-
401
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1105
402
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
403
- msgstr "Klik på denne knap, hvis du vil slette pluginnets indstillinger. Deaktivering af Secure WordPress-pluginnet fjerner al data, det måtte have oprettet."
404
-
405
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1110
406
- msgid "Delete Options"
407
- msgstr "Slet indstillinger"
408
-
409
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1122
410
- msgid "About the plugin"
411
- msgstr "Om pluginnet"
412
-
413
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1127
414
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1129
415
- msgid "Scan this QR Code to donate for me"
416
- msgstr "Scan denne QR-kode og foretag en donation på mine vegne"
417
-
418
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1142
419
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
420
- msgstr "Yderligere information: Besøg <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">pluginnets hjemmeside</a> for mere information eller for at hente den seneste udgave af dette plugin."
421
-
422
- #: d:\wordpress\plugins\secure-wordpress/secure-wordpress.php:1142
423
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
424
- msgstr "Ønsker du at takke mig? Kig på min <a href=\"http://bueltge.de/wunschliste/\">ønskeliste</a>."
425
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-de_DE.mo DELETED
Binary file
languages/secure_wp-de_DE.po DELETED
@@ -1,533 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: 2010-07-09 13:20+0100\n"
7
- "Last-Translator: Frank Bueltge <frank@bueltge.de>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: \n"
14
- "X-Poedit-Country: \n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
17
- "X-Poedit-Basepath: ../\n"
18
- "X-Poedit-Bookmarks: \n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Textdomain-Support: yes"
21
-
22
- #. translators: plugin header field 'Description'
23
- #: secure-wordpress.php:0
24
- #@ secure_wp
25
- msgid "Little basics for secure your WordPress-installation."
26
- msgstr "Kleine Grundlagen für die Sicherheit deiner WordPress Installation"
27
-
28
- #: secure-wordpress.php:370
29
- #@ default
30
- msgid "Settings"
31
- msgstr "Einstellungen"
32
-
33
- #: secure-wordpress.php:399
34
- #: secure-wordpress.php:446
35
- #@ secure_wp
36
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
37
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Dokumentation</a>"
38
-
39
- #: secure-wordpress.php:422
40
- #@ secure_wp
41
- msgid "Options update."
42
- msgstr "Einstellungen aktualisiert."
43
-
44
- #: secure-wordpress.php:424
45
- #@ secure_wp
46
- msgid "All entries in the database was cleared. Now deactivate this plugin."
47
- msgstr "Alle Einträge in der Datenbank wurden entfernt. Jetzt deaktiviere das Plugin."
48
-
49
- #: secure-wordpress.php:438
50
- #: secure-wordpress.php:449
51
- #@ secure_wp
52
- msgid "Secure WP"
53
- msgstr "Secure WP"
54
-
55
- #. translators: plugin header field 'Name'
56
- #: secure-wordpress.php:0
57
- #: secure-wordpress.php:445
58
- #: secure-wordpress.php:773
59
- #@ secure_wp
60
- msgid "Secure WordPress"
61
- msgstr "Secure WordPress"
62
-
63
- #: secure-wordpress.php:469
64
- #@ default
65
- msgid "Version"
66
- msgstr "Version"
67
-
68
- #: secure-wordpress.php:469
69
- #@ secure_wp
70
- msgid "History"
71
- msgstr "Historie"
72
-
73
- #: secure-wordpress.php:469
74
- #@ default
75
- msgid "Author"
76
- msgstr "Autor"
77
-
78
- #: secure-wordpress.php:698
79
- #@ secure_wp
80
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
81
- msgstr "Einstellungen wurden nicht aktualisiert - du hast nicht genügend Rechte dazu!"
82
-
83
- #: secure-wordpress.php:718
84
- #@ secure_wp
85
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
86
- msgstr "Einstellungen wurden nicht entfernt - du hast nicht genügend Rechte dazu!"
87
-
88
- #: secure-wordpress.php:726
89
- #@ secure_wp
90
- msgid "Entries were not deleted - check the checkbox!"
91
- msgstr "Einstellungen wurden nicht entfernt - prüfe dich Checkbox!"
92
-
93
- #: secure-wordpress.php:746
94
- #@ secure_wp
95
- msgid "All entries in the database were cleared."
96
- msgstr "Alle Einträge in der Datenbank wurden entfernt."
97
-
98
- #: secure-wordpress.php:750
99
- #@ secure_wp
100
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
101
- msgstr "Einstellungen wurden nicht entfernt - prüfe dich Checkbox oder du hast nicht genügend Rechte dazu!"
102
-
103
- #: secure-wordpress.php:778
104
- #: secure-wordpress.php:914
105
- #: secure-wordpress.php:1027
106
- #: secure-wordpress.php:1141
107
- #@ default
108
- msgid "Click to toggle"
109
- msgstr "Zum umschalten klicken"
110
-
111
- #: secure-wordpress.php:779
112
- #@ secure_wp
113
- msgid "Configuration"
114
- msgstr "Einstellungen"
115
-
116
- #: secure-wordpress.php:789
117
- #@ secure_wp
118
- msgid "Error-Messages"
119
- msgstr "Fehler-Meldungen"
120
-
121
- #: secure-wordpress.php:793
122
- #@ secure_wp
123
- msgid "Deactivates tooltip and error message at login of WordPress"
124
- msgstr "Deaktivert die Hinweis- und Fehlermeldung beim Login von WordPress"
125
-
126
- #: secure-wordpress.php:799
127
- #@ secure_wp
128
- msgid "WordPress Version"
129
- msgstr "WordPress Version"
130
-
131
- #: secure-wordpress.php:803
132
- #@ secure_wp
133
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
134
- msgstr "Entfernen der Version von WordPress in allen Bereichen, inkl. Feed, nicht im Admin-Bereich"
135
-
136
- #: secure-wordpress.php:809
137
- #@ secure_wp
138
- msgid "WordPress Version in Backend"
139
- msgstr "WordPress Version im Administrationsbereich"
140
-
141
- #: secure-wordpress.php:813
142
- #@ secure_wp
143
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
144
- msgstr "Entfernen der Version von WordPress im Admin-Bereich für Nicht-Administratoren. Die WordPress Version deines Blogs wird ausschließlich Nutzern dargestellt, die die Rechte zum Editieren von Plugins haben."
145
-
146
- #: secure-wordpress.php:819
147
- #@ secure_wp
148
- msgid "index.php"
149
- msgstr "index.php"
150
-
151
- #: secure-wordpress.php:823
152
- #@ secure_wp
153
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
154
- msgstr "hinterlegt eine <code>index.php</code> in <code>/plugins/</code> und <code>/themes/</code> um das Auslesen des Verzeichnis zu vermeiden"
155
-
156
- #: secure-wordpress.php:829
157
- #@ secure_wp
158
- msgid "Really Simple Discovery"
159
- msgstr "Really Simple Discovery"
160
-
161
- #: secure-wordpress.php:833
162
- #@ secure_wp
163
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
164
- msgstr "Entfernt den link für Really Simple Discovery im head des Frontend"
165
-
166
- #: secure-wordpress.php:839
167
- #@ secure_wp
168
- msgid "Windows Live Writer"
169
- msgstr "Windows Live Writer"
170
-
171
- #: secure-wordpress.php:843
172
- #@ secure_wp
173
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
174
- msgstr "Entfernt den link für Windows Live Writer im head des Frontend"
175
-
176
- #: secure-wordpress.php:849
177
- #@ secure_wp
178
- msgid "Core Update"
179
- msgstr "Core Update"
180
-
181
- #: secure-wordpress.php:853
182
- #@ secure_wp
183
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
184
- msgstr "Deaktiviert das Core-Update für Nicht-Admin's. Die Mitteilung einer neuen Version von WordPress wird ausschließlich Nutzern gezeigt, die die Rechte zum Editieren von Plugins haben."
185
-
186
- #: secure-wordpress.php:859
187
- #@ secure_wp
188
- msgid "Plugin Update"
189
- msgstr "Plugin Update"
190
-
191
- #: secure-wordpress.php:863
192
- #@ secure_wp
193
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
194
- msgstr "Deaktiviert das Plugin-Update für Nicht-Admin's. Die Mitteilung einer neuen Version von WordPress zu Plugins wird ausschließlich Nutzern gezeigt, die die Rechte zum Editieren von Plugins haben."
195
-
196
- #: secure-wordpress.php:870
197
- #@ secure_wp
198
- msgid "Theme Update"
199
- msgstr "Theme Update"
200
-
201
- #: secure-wordpress.php:874
202
- #@ secure_wp
203
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
204
- msgstr "Deaktiviert das Theme-Update für Nicht-Admin's. Die Mitteilung einer neuen Version von WordPress zum Theme wird ausschließlich Nutzern gezeigt, die die Rechte zum Editieren von Themes haben."
205
-
206
- #: secure-wordpress.php:891
207
- #@ secure_wp
208
- msgid "Block bad queries"
209
- msgstr "Blocke negative Abfragen"
210
-
211
- #: secure-wordpress.php:895
212
- #@ secure_wp
213
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
214
- msgstr "WordPress gegen bösartige URL-Anforderungen schützen, mehr Informationen gibt es im <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >Beitrag von Jeff Starr</a>"
215
-
216
- #: secure-wordpress.php:903
217
- #@ secure_wp
218
- msgid "Save Changes"
219
- msgstr "Einstellungen aktualisieren"
220
-
221
- #: secure-wordpress.php:915
222
- #@ secure_wp
223
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
224
- msgstr "Überprüfe deine Seite mit einem freien Malware-Scan von www.sitesecuritymonitor.com"
225
-
226
- #: secure-wordpress.php:918
227
- #@ secure_wp
228
- msgid "Take us for a Test Drive - Free Scan"
229
- msgstr "Nutze uns für eine Probefahrt - freier Scan"
230
-
231
- #: secure-wordpress.php:919
232
- #@ secure_wp
233
- msgid "We understand you may have questions:"
234
- msgstr "Wie verstehen, dass du Fragen hast:"
235
-
236
- #: secure-wordpress.php:920
237
- #@ secure_wp
238
- msgid "What does this do for me?"
239
- msgstr "Was bedeutet der Scan für mich?"
240
-
241
- #: secure-wordpress.php:921
242
- #@ secure_wp
243
- msgid "Am I really safe? I need to be sure."
244
- msgstr "Bin ich wirklich sicher? Ich muss sicher sein."
245
-
246
- #: secure-wordpress.php:922
247
- #@ secure_wp
248
- msgid "Rest Assured, Site Security Monitor has you covered."
249
- msgstr "Sei dir sicher, Site Security Monitor ist sicher."
250
-
251
- #: secure-wordpress.php:924
252
- #@ secure_wp
253
- msgid "FREE scan looks for malware"
254
- msgstr "FREIER scan um Malware zu finden"
255
-
256
- #: secure-wordpress.php:925
257
- #@ secure_wp
258
- msgid "FREE report of website vulnerabilities found"
259
- msgstr "FREIE Auswertung der gefundenen Schwachstellen auf einer Webseite"
260
-
261
- #: secure-wordpress.php:926
262
- #@ secure_wp
263
- msgid "No setup, tuning and installation on your site - scan begins immediately"
264
- msgstr "Keine Einrichtung, keine Anpassunge und Installationen auf deiner Site - der Scan kann sofort starten"
265
-
266
- #: secure-wordpress.php:928
267
- #@ secure_wp
268
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
269
- msgstr "Wir liefern einen detaillierten Bericht zu Schwachstellen und Malware (Schadprogrammen) - kostenlos. Du kannst entscheiden, wie du den Bericht verwendest um Probleme zu lösen, es werden Hinweise zum Problem gegeben. Zeigen den anderen, dass die Site sauber und sicher ist."
270
-
271
- #: secure-wordpress.php:929
272
- #@ secure_wp
273
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
274
- msgstr "** Bonus: Du kannst das Site Security Monitor \"Safe-Seal\" in deine Site integrieren - zeige der Welt, dass du frei von Malware bist."
275
-
276
- #: secure-wordpress.php:931
277
- #@ secure_wp
278
- msgid "The form"
279
- msgstr "Das Formular"
280
-
281
- #: secure-wordpress.php:932
282
- #@ secure_wp
283
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
284
- msgstr "Nutze das Formular oder gehe direkt über <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">unsere Website</a>."
285
-
286
- #: secure-wordpress.php:967
287
- #@ secure_wp
288
- msgid "Full Name"
289
- msgstr "Name, Vorname"
290
-
291
- #: secure-wordpress.php:970
292
- #: secure-wordpress.php:978
293
- #: secure-wordpress.php:986
294
- #: secure-wordpress.php:994
295
- #: secure-wordpress.php:1010
296
- #@ secure_wp
297
- msgid "*required"
298
- msgstr "*Pflichtfeld"
299
-
300
- #: secure-wordpress.php:975
301
- #@ secure_wp
302
- msgid "eMail Adress"
303
- msgstr "E-Mail Adresse"
304
-
305
- #: secure-wordpress.php:978
306
- #@ secure_wp
307
- msgid ", eMail Address must match domain name"
308
- msgstr ", die E-Mail Adresse muss den Domain-Namen enthalten"
309
-
310
- #: secure-wordpress.php:983
311
- #@ secure_wp
312
- msgid "Website"
313
- msgstr "Website"
314
-
315
- #: secure-wordpress.php:991
316
- #@ secure_wp
317
- msgid "Phone"
318
- msgstr "Telefon"
319
-
320
- #: secure-wordpress.php:999
321
- #@ secure_wp
322
- msgid "Yes, I need help!"
323
- msgstr "Ja, ich brauche Hilfe!"
324
-
325
- #: secure-wordpress.php:1002
326
- #@ secure_wp
327
- msgid "Call me"
328
- msgstr "Rufe mich an"
329
-
330
- #: secure-wordpress.php:1007
331
- #@ secure_wp
332
- msgid "Terms and Conditions"
333
- msgstr "Allgemeine Geschäftsbedingungen"
334
-
335
- #: secure-wordpress.php:1010
336
- #@ secure_wp
337
- msgid ", I accept"
338
- msgstr ", ich akzeptiere"
339
-
340
- #: secure-wordpress.php:1017
341
- #@ secure_wp
342
- msgid "Get my Free Web Scan"
343
- msgstr "Starte meinen freien Web-Scan"
344
-
345
- #: secure-wordpress.php:1028
346
- #@ secure_wp
347
- msgid "Safe Seal"
348
- msgstr "Safe Seal"
349
-
350
- #: secure-wordpress.php:1058
351
- #@ secure_wp
352
- msgid "Color"
353
- msgstr "Farbe"
354
-
355
- #: secure-wordpress.php:1062
356
- #@ secure_wp
357
- msgid "Green"
358
- msgstr "Grün"
359
-
360
- #: secure-wordpress.php:1063
361
- #@ secure_wp
362
- msgid "Blue"
363
- msgstr "Blau"
364
-
365
- #: secure-wordpress.php:1064
366
- #@ secure_wp
367
- msgid "Red"
368
- msgstr "Rot"
369
-
370
- #: secure-wordpress.php:1065
371
- #@ secure_wp
372
- msgid "Brown"
373
- msgstr "Braun"
374
-
375
- #: secure-wordpress.php:1066
376
- #@ secure_wp
377
- msgid "Gray"
378
- msgstr "Grau"
379
-
380
- #: secure-wordpress.php:1075
381
- #@ secure_wp
382
- msgid "Text"
383
- msgstr "Text"
384
-
385
- #: secure-wordpress.php:1079
386
- #@ secure_wp
387
- msgid "Protected"
388
- msgstr "Geschützt"
389
-
390
- #: secure-wordpress.php:1080
391
- #@ secure_wp
392
- msgid "Secured"
393
- msgstr "Sicher"
394
-
395
- #: secure-wordpress.php:1081
396
- #@ secure_wp
397
- msgid "Scanned"
398
- msgstr "Gescannt"
399
-
400
- #: secure-wordpress.php:1082
401
- #@ secure_wp
402
- msgid "Protected by"
403
- msgstr "Geschützt durch"
404
-
405
- #: secure-wordpress.php:1088
406
- #@ secure_wp
407
- msgid "Orientation"
408
- msgstr "Orientierung"
409
-
410
- #: secure-wordpress.php:1092
411
- #@ secure_wp
412
- msgid "Horizontal"
413
- msgstr "Horizontal"
414
-
415
- #: secure-wordpress.php:1093
416
- #@ secure_wp
417
- msgid "Vertical"
418
- msgstr "Vertical"
419
-
420
- #: secure-wordpress.php:1099
421
- #@ secure_wp
422
- msgid "Image border"
423
- msgstr "Bilder-Rahmen"
424
-
425
- #: secure-wordpress.php:1107
426
- #@ secure_wp
427
- msgid "Language"
428
- msgstr "Sprache"
429
-
430
- #: secure-wordpress.php:1111
431
- #@ secure_wp
432
- msgid "English (US)"
433
- msgstr "Englisch (US)"
434
-
435
- #: secure-wordpress.php:1112
436
- #@ secure_wp
437
- msgid "English (UK)"
438
- msgstr "Englisch (UK)"
439
-
440
- #: secure-wordpress.php:1113
441
- #@ secure_wp
442
- msgid "Spanish"
443
- msgstr "Spanisch"
444
-
445
- #: secure-wordpress.php:1114
446
- #@ secure_wp
447
- msgid "German"
448
- msgstr "Deutsch"
449
-
450
- #: secure-wordpress.php:1115
451
- #@ secure_wp
452
- msgid "Italian"
453
- msgstr "Italienisch"
454
-
455
- #: secure-wordpress.php:1116
456
- #@ secure_wp
457
- msgid "Japanese"
458
- msgstr "Japanisch"
459
-
460
- #: secure-wordpress.php:1117
461
- #@ secure_wp
462
- msgid "Chinese (Simplified)"
463
- msgstr "Chinesisch (Einfach)"
464
-
465
- #: secure-wordpress.php:1118
466
- #@ secure_wp
467
- msgid "Chinese (Traditional)"
468
- msgstr "Chinesisch (Traditonell)"
469
-
470
- #: secure-wordpress.php:1127
471
- #@ secure_wp
472
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
473
- msgstr "Hier ist der erstellte Code, platziere in ihn in deiner Site (als HTML Widget) um zu zeigen, dass du geschützt bist."
474
-
475
- #: secure-wordpress.php:1142
476
- #@ secure_wp
477
- msgid "Clear Options"
478
- msgstr "Einstellungen löschen"
479
-
480
- #: secure-wordpress.php:1145
481
- #@ secure_wp
482
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
483
- msgstr "Nutze diese Möglichkeit um alle Einstellungen des Plugins in der Datenbank zu löschen. Das Plugin löscht ebenfalls alle Einstellungen wenn du es deaktivierst oder aus dem Backend heraus entfernst."
484
-
485
- #: secure-wordpress.php:1150
486
- #@ secure_wp
487
- msgid "Delete Options"
488
- msgstr "Einstellungen löschen"
489
-
490
- #. translators: plugin header field 'PluginURI'
491
- #: secure-wordpress.php:0
492
- #@ secure_wp
493
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
494
- msgstr ""
495
-
496
- #. translators: plugin header field 'Author'
497
- #: secure-wordpress.php:0
498
- #@ secure_wp
499
- msgid "jremillard"
500
- msgstr ""
501
-
502
- #. translators: plugin header field 'AuthorURI'
503
- #: secure-wordpress.php:0
504
- #@ secure_wp
505
- msgid "http://www.sitesecuritymonitor.com/"
506
- msgstr ""
507
-
508
- #: secure-wordpress.php:1031
509
- #@ secure_wp
510
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
511
- msgstr ""
512
-
513
- #: secure-wordpress.php:1126
514
- #@ secure_wp
515
- msgid "Source"
516
- msgstr "Quellcode"
517
-
518
- #. translators: plugin header field 'Version'
519
- #: secure-wordpress.php:0
520
- #@ secure_wp
521
- msgid "1.0.5"
522
- msgstr ""
523
-
524
- #: secure-wordpress.php:881
525
- #@ secure_wp
526
- msgid "WP Version on Scripts/Styles"
527
- msgstr "WP Version bei Scripten/Stylesheets"
528
-
529
- #: secure-wordpress.php:885
530
- #@ secure_wp
531
- msgid "Removes version of WordPress on the url form scripts and stylesheets only on frontend."
532
- msgstr "Entfernt die WordPress Version an den URLs von Scripten und Stylesheets, nur im Frontend."
533
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-es_ES.mo DELETED
Binary file
languages/secure_wp-es_ES.po DELETED
@@ -1,241 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: secure_wp\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-06-22 12:29+0100\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Pablo <pjimcal@yahoo.com>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-Language: Spanish\n"
13
- "X-Poedit-Country: SPAIN\n"
14
- "X-Poedit-SourceCharset: utf-8\n"
15
-
16
- #: secure-wordpress.php:337
17
- msgid "Settings"
18
- msgstr "Configuración"
19
-
20
- # @ secure_wp
21
- #: secure-wordpress.php:366
22
- #: secure-wordpress.php:413
23
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
24
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentación</a>"
25
-
26
- # @ secure_wp
27
- #: secure-wordpress.php:389
28
- msgid "Options update."
29
- msgstr "Opciones de actualización."
30
-
31
- # @ secure_wp
32
- #: secure-wordpress.php:391
33
- msgid "All entries in the database was cleared. Now deactivate this plugin."
34
- msgstr "Todas las entradas en la base de datos fueron borradas. Ahora desactive este plugin."
35
-
36
- # @ secure_wp
37
- #: secure-wordpress.php:405
38
- #: secure-wordpress.php:416
39
- msgid "Secure WP"
40
- msgstr "WP Seguro(Secure WP)"
41
-
42
- # @ secure_wp
43
- #: secure-wordpress.php:412
44
- #: secure-wordpress.php:703
45
- msgid "Secure WordPress"
46
- msgstr "WordPress Seguro(Secure WordPress)"
47
-
48
- #: secure-wordpress.php:436
49
- msgid "Version"
50
- msgstr "Versión"
51
-
52
- # @ secure_wp
53
- #: secure-wordpress.php:436
54
- msgid "History"
55
- msgstr "Historia"
56
-
57
- #: secure-wordpress.php:436
58
- msgid "Author"
59
- msgstr "Autor"
60
-
61
- # @ secure_wp
62
- #: secure-wordpress.php:629
63
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
64
- msgstr "Opciones no actualizadas. Usted no tiene los privilegios para hacer esto!"
65
-
66
- # @ secure_wp
67
- #: secure-wordpress.php:649
68
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
69
- msgstr "Las entradas no fueron eliminadas - Usted no tiene los privilegios para hacer esto!"
70
-
71
- # @ secure_wp
72
- #: secure-wordpress.php:657
73
- msgid "Entries was not delleted - check the checkbox!"
74
- msgstr "Las entradas no fueron eliminadas - Revise la casilla de verificación!(checkbox)"
75
-
76
- # @ secure_wp
77
- #: secure-wordpress.php:677
78
- msgid "All entries in the database was cleared."
79
- msgstr "Todas las entradas en la Base de Datos fueron borradas."
80
-
81
- # @ secure_wp
82
- #: secure-wordpress.php:681
83
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
84
- msgstr "Las entradas no fueron eliminadas - Revise la casilla de verificación!(checkbox) o Usted no tiene los privilegios para hacer esto!"
85
-
86
- #: secure-wordpress.php:708
87
- #: secure-wordpress.php:843
88
- #: secure-wordpress.php:863
89
- msgid "Click to toggle"
90
- msgstr "Haga clic para alternar"
91
-
92
- # @ secure_wp
93
- #: secure-wordpress.php:709
94
- msgid "Configuration"
95
- msgstr "Configuración"
96
-
97
- # @ secure_wp
98
- #: secure-wordpress.php:719
99
- msgid "Error-Messages"
100
- msgstr "Mensaje de error"
101
-
102
- # @ secure_wp
103
- #: secure-wordpress.php:729
104
- msgid "WordPress Version"
105
- msgstr "Versión de WordPress"
106
-
107
- # @ secure_wp
108
- #: secure-wordpress.php:733
109
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
110
- msgstr "Remover versión de WordPress de todas las areas, tambien de los feeds (no del escritorio/dashboard)"
111
-
112
- # @ secure_wp
113
- #: secure-wordpress.php:759
114
- msgid "Really Simple Discovery"
115
- msgstr "Really Simple Discovery"
116
-
117
- # @ secure_wp
118
- #: secure-wordpress.php:763
119
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
120
- msgstr "Remover el link \"Really Simple Discovery\" ubicado en <code>wp_head</code> de la interfaz del ususario(frontend)"
121
-
122
- # @ secure_wp
123
- #: secure-wordpress.php:769
124
- msgid "Windows Live Writer"
125
- msgstr "Windows Live Writer"
126
-
127
- # @ secure_wp
128
- #: secure-wordpress.php:773
129
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
130
- msgstr "Remover el link \"Windows Live Writer\" ubicado en <code>wp_head</code> de la interfaz del ususario(frontend)"
131
-
132
- # @ secure_wp
133
- #: secure-wordpress.php:779
134
- msgid "Core Update"
135
- msgstr "Actualización del Core "
136
-
137
- # @ secure_wp
138
- #: secure-wordpress.php:783
139
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
140
- msgstr "Remover la actualización del core de WordPress a no-administradores. Solo se muestra el mensaje de nueva versión del core, a usuarios con derecho para actualizar."
141
-
142
- # @ secure_wp
143
- #: secure-wordpress.php:789
144
- msgid "Plugin Update"
145
- msgstr "Actualización de Plugin"
146
-
147
- # @ secure_wp
148
- #: secure-wordpress.php:793
149
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
150
- msgstr "Remover actualizaciónes de Plugin a no-administradores. Solo se muestra el mensaje de nueva versionde plugin, a usuarios con derechos para editar plugins."
151
-
152
- # @ secure_wp
153
- #: secure-wordpress.php:800
154
- msgid "Theme Update"
155
- msgstr "Actualización de tema"
156
-
157
- # @ secure_wp
158
- #: secure-wordpress.php:804
159
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
160
- msgstr "Remover Actualización del tema a no-administradores.Solo se muestra el mensaje de nueva versión de tema, a usuarios con derechos para editar temas."
161
-
162
- # @ secure_wp
163
- #: secure-wordpress.php:811
164
- msgid "WP Scanner"
165
- msgstr "Escáner WP(WP Scanner)"
166
-
167
- # @ secure_wp
168
- #: secure-wordpress.php:815
169
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
170
- msgstr "Escáner WP(WP Scanner) es un recurso gratuito en línea que los administradores de blog puede utilizar para proporcionar un nivel mayor de seguridad a wordpress. Para ejecutar wp-scanner marca esta opción y se añadira <code> <! - Wpscanner --></ code> a su plantilla actual de wordpress. Después de esto, visita <a href=\"http://blogsecurity.net/wpscan\"> http://blogsecurity.net/wpscan </ a> y scanee su sitio."
171
-
172
- # @ secure_wp
173
- #: secure-wordpress.php:833
174
- msgid "Save Changes"
175
- msgstr "Guardar Cambios"
176
-
177
- # @ secure_wp
178
- #: secure-wordpress.php:844
179
- msgid "Clear Options"
180
- msgstr "Limpiar Opciones"
181
-
182
- # @ secure_wp
183
- #: secure-wordpress.php:847
184
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
185
- msgstr "Presione este botón para eliminar la configuración de este plugin. Desactivando el plugin Secure WordPress se removerá cualquier dato que haya sido creado."
186
-
187
- # @ secure_wp
188
- #: secure-wordpress.php:852
189
- msgid "Delete Options"
190
- msgstr "Eliminar Opciones"
191
-
192
- # @ secure_wp
193
- #: secure-wordpress.php:864
194
- msgid "About the plugin"
195
- msgstr "Acerca del Plugin"
196
-
197
- # @ secure_wp
198
- #: secure-wordpress.php:877
199
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
200
- msgstr "Más información: Visite la <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">página principal del Plugin</ a> para obtener más información o para tomar la última versión de este plugin ."
201
-
202
- # @ secure_wp
203
- #: secure-wordpress.php:877
204
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
205
- msgstr "¿Desea agradecerme? Visita mi <a href=\"http://bueltge.de/wunschliste/\">Lista de deseos</a>."
206
-
207
- # @ secure_wp
208
- #: secure-wordpress.php:753
209
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
210
- msgstr "Crear un archivo <code>index.php</code> en <code>/plugins/</code> y<code>/themes/</code>, para evitar que se muestre su lista de directorios."
211
-
212
- # @ secure_wp
213
- #: secure-wordpress.php:739
214
- msgid "WordPress Version in Backend"
215
- msgstr "Versión de WordPress en la parte interna(Backend)"
216
-
217
- # @ secure_wp
218
- #: secure-wordpress.php:749
219
- msgid "index.php"
220
- msgstr "index.php"
221
-
222
- # @ secure_wp
223
- #: secure-wordpress.php:743
224
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
225
- msgstr "Remover la versión de WordPress del escritorio(dashboard) a no-administradores. Solo se muestra la versión de WordPress a usuarios con derechos para editar plugins."
226
-
227
- # @ secure_wp
228
- #: secure-wordpress.php:723
229
- msgid "Deactivates tooltip and error message at login of WordPress"
230
- msgstr "Desactivar la descripción y el mensaje de error, en el formulario de inicio de sesión de WordPress."
231
-
232
- # @ secure_wp
233
- #: secure-wordpress.php:821
234
- msgid "Block bad queries"
235
- msgstr "Bloqueo de peticiones maliciosas"
236
-
237
- # @ secure_wp
238
- #: secure-wordpress.php:825
239
- msgid "Protect WordPress against malicious URL requests, see more informations on the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
240
- msgstr "Proteger a WordPress de peticiones de URL maliciosas, ver más información en el <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"leer este post\" >post de Jeff Starr</a>"
241
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-fa_IR.mo DELETED
Binary file
languages/secure_wp-fa_IR.po DELETED
@@ -1,441 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: secure-wordpress-fa_IR\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: ALiRezaCH <alirezach70@gmail.com>\n"
8
- "Language-Team: AliRezaCH.co.cc\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __\n"
13
- "X-Poedit-Basepath: C:\\xampp\\htdocs\\wp3\\wp-content\\plugins\\secure-wordpress\n"
14
-
15
- #: secure-wordpress.php:13
16
- msgid "Little basics for secure your WordPress-installation."
17
- msgstr "آموزشي كوچك براي براي امنيت در نصب وردپرس"
18
-
19
- #: secure-wordpress.php:364
20
- msgid "Settings"
21
- msgstr "تنظيمات"
22
-
23
- # @ secure_wp
24
- #: secure-wordpress.php:393
25
- #: secure-wordpress.php:440
26
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
27
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">افزونه</a>"
28
-
29
- # @ secure_wp
30
- #: secure-wordpress.php:416
31
- msgid "Options update."
32
- msgstr "گزينه‌ها به‌روز شد."
33
-
34
- # @ secure_wp
35
- #: secure-wordpress.php:418
36
- msgid "All entries in the database was cleared. Now deactivate this plugin."
37
- msgstr "تمامي ورودي‌هاي ديتابيس حذف شدند. اكنون افزونه غيرفعال هست."
38
-
39
- # @ secure_wp
40
- #: secure-wordpress.php:432
41
- #: secure-wordpress.php:443
42
- msgid "Secure WP"
43
- msgstr "وردپرس ايمن"
44
-
45
- # @ secure_wp
46
- #: secure-wordpress.php:439
47
- #: secure-wordpress.php:738
48
- msgid "Secure WordPress"
49
- msgstr "وردپرس ايمن"
50
-
51
- #: secure-wordpress.php:463
52
- msgid "Version"
53
- msgstr "نسخه"
54
-
55
- # @ secure_wp
56
- #: secure-wordpress.php:463
57
- msgid "History"
58
- msgstr "تاريخچه"
59
-
60
- #: secure-wordpress.php:463
61
- msgid "Author"
62
- msgstr "تهيه‌كننده"
63
-
64
- # @ secure_wp
65
- #: secure-wordpress.php:664
66
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
67
- msgstr "گزينه‌ها به روز نشد. شما به گزينه‌اي ارجحيت داديد."
68
-
69
- # @ secure_wp
70
- #: secure-wordpress.php:684
71
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
72
- msgstr "ورودي‌ها پاك نشدند. شما داراي مزيتي براي اين هستيد."
73
-
74
- # @ secure_wp
75
- #: secure-wordpress.php:692
76
- msgid "Entries were not deleted - check the checkbox!"
77
- msgstr "ورودي‌ها پاك نشدند- چك‌باكس را چك كنيد."
78
-
79
- # @ secure_wp
80
- #: secure-wordpress.php:712
81
- msgid "All entries in the database were cleared."
82
- msgstr "تمامي ورودي‌هاي ديتابيس حذف شدند."
83
-
84
- # @ secure_wp
85
- #: secure-wordpress.php:716
86
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
87
- msgstr "ورودي‌ها پاك نشدند. چك‌باكس خود را چك كنيد و يا شايد ارجحيتي ايجاد كرده‌ايد."
88
-
89
- #: secure-wordpress.php:743
90
- #: secure-wordpress.php:878
91
- #: secure-wordpress.php:988
92
- #: secure-wordpress.php:1101
93
- #: secure-wordpress.php:1121
94
- msgid "Click to toggle"
95
- msgstr "Click to toggle"
96
-
97
- # @ secure_wp
98
- #: secure-wordpress.php:744
99
- msgid "Configuration"
100
- msgstr "پيكربندي"
101
-
102
- # @ secure_wp
103
- #: secure-wordpress.php:754
104
- msgid "Error-Messages"
105
- msgstr "پيام‌هاي خطا"
106
-
107
- # @ secure_wp
108
- #: secure-wordpress.php:758
109
- msgid "Deactivates tooltip and error message at login of WordPress"
110
- msgstr "غيرفعال كردن پيغام‌هاي خطا در زمان ورود به وردپرس"
111
-
112
- # @ secure_wp
113
- #: secure-wordpress.php:764
114
- msgid "WordPress Version"
115
- msgstr "نسخه‌ي وردپرس"
116
-
117
- # @ secure_wp
118
- #: secure-wordpress.php:768
119
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
120
- msgstr "حذف نسخه‌ وردپرس در تمام قسمت‌ها، كه شامل خوراك نيز مي‌شود، البته غير از مديريت."
121
-
122
- # @ secure_wp
123
- #: secure-wordpress.php:774
124
- msgid "WordPress Version in Backend"
125
- msgstr "عدم‌نمايش نسخه‌ وردپرس"
126
-
127
- # @ secure_wp
128
- #: secure-wordpress.php:778
129
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
130
- msgstr "حذف نسخه‌ي وردپرس در قسمت‌هاي مديريت براي غيرمديرها. نشان دادن نسخه‌ي وردپرس در وبلاگ شما فقط براي كاربران و ويرايش افزونه‌ها."
131
-
132
- # @ secure_wp
133
- #: secure-wordpress.php:784
134
- msgid "index.php"
135
- msgstr "index.php"
136
-
137
- # @ secure_wp
138
- #: secure-wordpress.php:788
139
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
140
- msgstr "ساختن <code>index.php</code> در <code>/plugins/</code> und <code>/themes/</code> براي نگهداشتن آن از نشان دادن فهرست دايركتوري آن. "
141
-
142
- # @ secure_wp
143
- #: secure-wordpress.php:794
144
- msgid "Really Simple Discovery"
145
- msgstr "Really Simple Discovery"
146
-
147
- # @ secure_wp
148
- #: secure-wordpress.php:798
149
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
150
- msgstr "حذف پيوند Really Simple Discovery در <code>wp_head</code>"
151
-
152
- # @ secure_wp
153
- #: secure-wordpress.php:804
154
- msgid "Windows Live Writer"
155
- msgstr "Windows Live Writer"
156
-
157
- # @ secure_wp
158
- #: secure-wordpress.php:808
159
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
160
- msgstr "حذف پيوند Windows Live Writer در <code>wp_head</code>"
161
-
162
- # @ secure_wp
163
- #: secure-wordpress.php:814
164
- msgid "Core Update"
165
- msgstr "به‌روز كردن هسته"
166
-
167
- # @ secure_wp
168
- #: secure-wordpress.php:818
169
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
170
- msgstr "حذف به‌روزكردن هسته‌ي وردپرس براي غير مدير سيستم. نشان دادن پيام نسخه‌ي جديد وردپرس به درستي به روز شد."
171
-
172
- # @ secure_wp
173
- #: secure-wordpress.php:824
174
- msgid "Plugin Update"
175
- msgstr "به روزكردن افزونه"
176
-
177
- # @ secure_wp
178
- #: secure-wordpress.php:828
179
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
180
- msgstr "حذف به روز كردن افزونه‌ها براي غير مديرها. پيام افزونه‌ي جديد بر روي وبلاگ نصب شد براي كاربران نشان داده‌شود."
181
-
182
- # @ secure_wp
183
- #: secure-wordpress.php:835
184
- msgid "Theme Update"
185
- msgstr "به‌روز كردن پوسته"
186
-
187
- # @ secure_wp
188
- #: secure-wordpress.php:839
189
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
190
- msgstr "حذف به‌روز كردن پوسته براي غيرمدير‌يت. پيام نسخه‌ي جديد پوسته بر روي وبلاگ نصب شد براي كاربران نشان داده‌مي َود."
191
-
192
- # @ secure_wp
193
- #: secure-wordpress.php:846
194
- msgid "WP Scanner"
195
- msgstr "اسكنر وردپرس"
196
-
197
- # @ secure_wp
198
- #: secure-wordpress.php:850
199
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
200
- msgstr "اسكنر وردپرس، منبعي آنلاين و رايگان است كه مديريت وبلاگ مي‌تواند امنيت وردپرس خود را محاسبه كند كه در چه سطحي است.. براي برپايي اسكنر وردپرس گزينه‌ها را انتخاب كنيد و اين كد را در <code>&lt;!-- wpscanner --&gt;</code>قالب كنوني وردپرس خود وارد كنيد.. بد از آن به اينجا برويد <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> و سايت خود را اسكن كنيد."
201
-
202
- # @ secure_wp
203
- #: secure-wordpress.php:856
204
- msgid "Block bad queries"
205
- msgstr "بلوكه‌كردن جست‌و‌جوهاي بد"
206
-
207
- # @ secure_wp
208
- #: secure-wordpress.php:860
209
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
210
- msgstr "ايمن كردن وردپرس شما در برابر درخواست‌هاي مخالف، براي اطلاعات بيشتر اينجا را بخوانيد. <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >نوشته‌اي از Jeff Starr</a>"
211
-
212
- # @ secure_wp
213
- #: secure-wordpress.php:868
214
- msgid "Save Changes"
215
- msgstr "دخيره‌ي تنظيمات"
216
-
217
- #: secure-wordpress.php:879
218
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
219
- msgstr "معتبر ساختن تارنماي شما با اسكنر رايگان بدافزار در www.sitesecuritymonitor.com"
220
-
221
- #: secure-wordpress.php:882
222
- msgid "Take us for a Test Drive - Free Scan"
223
- msgstr "درخواست از ما براي آزمايش و اسكن رايگان"
224
-
225
- #: secure-wordpress.php:883
226
- msgid "We understand you may have questions:"
227
- msgstr "ما مي‌دانيم كه شما چند سؤال داريد:"
228
-
229
- #: secure-wordpress.php:884
230
- msgid "What does this do for me?"
231
- msgstr "چه كاري شما براي من انجام مي‌دهيد؟"
232
-
233
- #: secure-wordpress.php:885
234
- msgid "Am I really safe? I need to be sure."
235
- msgstr "آيا من واقعاً در امنيت هستم؟ من نياز دارم كه مطمئن شوم."
236
-
237
- #: secure-wordpress.php:886
238
- msgid "Rest Assured, Site Security Monitor has you covered."
239
- msgstr "در اطمينان باشيد، Site Security Monitor پشتيبان شما خواهد‌بود."
240
-
241
- #: secure-wordpress.php:888
242
- msgid "FREE scan looks for malware"
243
- msgstr "اسكن رايگان براي يافتم بدافزار"
244
-
245
- #: secure-wordpress.php:889
246
- msgid "FREE report of website vulnerabilities found"
247
- msgstr "گزارش رايگان تعداد آسيب‌پذيري تارنما"
248
-
249
- #: secure-wordpress.php:890
250
- msgid "No setup, tuning and installation on your site - scan begins immediately"
251
- msgstr "بدون نياز به نصب، ميزان‌سازي و نصب بر روي تارنماي شما - شروع اسكن سريعاً"
252
-
253
- #: secure-wordpress.php:892
254
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
255
- msgstr "ما گزارش جزئيات بدافزار و آسيب‌پذيري تارنما به شما تخويل مي‌دهيم. به صورات رايگان. شما مجاني گزارش درخواستي خود را دريافت مي كنيد. به رئيس شما نشان مي‌دهيم كه پاك هستيد، و يا به مشتري شما نشان مي‌دهيم كه تارنماي شما در امنيت كامل است. "
256
-
257
- #: secure-wordpress.php:893
258
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
259
- msgstr "** جايزه: شما پس از استفاده از Site Security Monitor و دريافت تضمين امنيت در سايت شما. به همه‌ي دنيا نشان مي‌دهيد كه عاري از هرگونه بدافزار هستيد."
260
-
261
- #: secure-wordpress.php:895
262
- msgid "The form"
263
- msgstr "اين فرم"
264
-
265
- #: secure-wordpress.php:896
266
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
267
- msgstr "استفاده از فرم موجود در <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">وب‌سايت ما</a>."
268
-
269
- #: secure-wordpress.php:928
270
- msgid "Full Name"
271
- msgstr "نام كامل"
272
-
273
- #: secure-wordpress.php:931
274
- #: secure-wordpress.php:939
275
- #: secure-wordpress.php:947
276
- #: secure-wordpress.php:955
277
- #: secure-wordpress.php:971
278
- msgid "*required"
279
- msgstr "*لازم‌است"
280
-
281
- #: secure-wordpress.php:936
282
- msgid "eMail Adress"
283
- msgstr "رايانامه"
284
-
285
- #: secure-wordpress.php:939
286
- msgid ", eMail Address must match domain name"
287
- msgstr "، رايانامه شما بايد با دامنه ي شما مطابقت داشته‌باشد."
288
-
289
- #: secure-wordpress.php:944
290
- msgid "Website"
291
- msgstr "تارنما"
292
-
293
- #: secure-wordpress.php:952
294
- msgid "Phone"
295
- msgstr "تلفن"
296
-
297
- #: secure-wordpress.php:960
298
- msgid "Yes, I need help!"
299
- msgstr "بله، من به راهنمايي نياز دارم!"
300
-
301
- #: secure-wordpress.php:963
302
- msgid "Call me"
303
- msgstr "مرا صدابزن"
304
-
305
- #: secure-wordpress.php:968
306
- msgid "Terms and Conditions"
307
- msgstr "قوانين و مقررات"
308
-
309
- #: secure-wordpress.php:971
310
- msgid ", I accept"
311
- msgstr "، من مي پذيرم."
312
-
313
- #: secure-wordpress.php:978
314
- msgid "Get my Free Web Scan"
315
- msgstr "دريافت رايگان اسكن تارنماي من."
316
-
317
- #: secure-wordpress.php:989
318
- msgid "Safe Seal"
319
- msgstr "تضمين امنيت"
320
-
321
- #: secure-wordpress.php:992
322
- msgid "Thankyou for using our scan. You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
323
- msgstr "براي استفاده از اسكنر ما سپاسگذاريم. شما مي‌تواني اسكنر رايگان ما را در تارنماي خود قرار دهيد (از كد HTML زير رونشت برداريد و در تارنماي خود قرار دهيد).اگر اين سرويس اسكن براي ايمن كردن را نگرفته‌ايد- خيلي راحت وردپرس خود را امنيتي كنيد-اگر مايليد كه در انجمن ما شركت كنيد و از تجربه‌هاي ما استفاده‌كنيد.به صورت مستقيم از سرويس آسيب‌پذيري و اسكن بدافزار ما استفاد كنيد.<a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">از تارنماي ما ديدن كنيد...</a>"
324
-
325
- #: secure-wordpress.php:1020
326
- msgid "Color"
327
- msgstr "رنگ"
328
-
329
- #: secure-wordpress.php:1024
330
- msgid "Green"
331
- msgstr "سبز"
332
-
333
- #: secure-wordpress.php:1025
334
- msgid "Blue"
335
- msgstr "آبي"
336
-
337
- #: secure-wordpress.php:1026
338
- msgid "Red"
339
- msgstr "قرمز"
340
-
341
- #: secure-wordpress.php:1027
342
- msgid "Brown"
343
- msgstr "قهوه‌اي"
344
-
345
- #: secure-wordpress.php:1028
346
- msgid "Gray"
347
- msgstr "خاكستري"
348
-
349
- #: secure-wordpress.php:1037
350
- msgid "Text"
351
- msgstr "متن"
352
-
353
- #: secure-wordpress.php:1041
354
- msgid "Protected"
355
- msgstr "محافظت شد."
356
-
357
- # @ secure_wp
358
- #: secure-wordpress.php:1042
359
- msgid "Secured"
360
- msgstr "ايمن شد."
361
-
362
- # @ secure_wp
363
- #: secure-wordpress.php:1043
364
- msgid "Scanned"
365
- msgstr "اسكن شد."
366
-
367
- #: secure-wordpress.php:1044
368
- msgid "Protected by"
369
- msgstr "محافظت شده توسط"
370
-
371
- #: secure-wordpress.php:1050
372
- msgid "Orientation"
373
- msgstr "آشناسازي"
374
-
375
- #: secure-wordpress.php:1054
376
- msgid "Horizontal"
377
- msgstr "افقي"
378
-
379
- #: secure-wordpress.php:1055
380
- msgid "Vertical"
381
- msgstr "عمودي"
382
-
383
- #: secure-wordpress.php:1061
384
- msgid "Image border"
385
- msgstr "حاشيه تصوير"
386
-
387
- #: secure-wordpress.php:1069
388
- msgid "Language"
389
- msgstr "زبان"
390
-
391
- #: secure-wordpress.php:1073
392
- msgid "English (US)"
393
- msgstr "Englisch (US)"
394
-
395
- #: secure-wordpress.php:1074
396
- msgid "English (UK)"
397
- msgstr "Englisch (UK)"
398
-
399
- #: secure-wordpress.php:1075
400
- msgid "Spanish"
401
- msgstr "Spanisch"
402
-
403
- #: secure-wordpress.php:1076
404
- msgid "German"
405
- msgstr "Deutsch"
406
-
407
- #: secure-wordpress.php:1077
408
- msgid "Italian"
409
- msgstr "Italienisch"
410
-
411
- #: secure-wordpress.php:1078
412
- msgid "Japanese"
413
- msgstr "Japanisch"
414
-
415
- #: secure-wordpress.php:1079
416
- msgid "Chinese (Simplified)"
417
- msgstr "Chinesisch (Einfach)"
418
-
419
- #: secure-wordpress.php:1080
420
- msgid "Chinese (Traditional)"
421
- msgstr "Chinesisch (Traditonell)"
422
-
423
- #: secure-wordpress.php:1089
424
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
425
- msgstr "اين كد براي شما توليد شده‌است. اين كد را در وبسايت خود قرار دهيد تا نشان دهيد كه از وبلاگ شما ايمن هست."
426
-
427
- # @ secure_wp
428
- #: secure-wordpress.php:1102
429
- msgid "Clear Options"
430
- msgstr "پاك‌ كردن گزينه‌ها"
431
-
432
- # @ secure_wp
433
- #: secure-wordpress.php:1105
434
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
435
- msgstr "با كليك كردن بر روي اين دكمه تنظيمات اين افزونه حذف مي‌شود. افزونه‌ي وردپرس ايمن غيرفعال شده و تمامي داده‌هاي ساخته شده حذف مي‌شود."
436
-
437
- # @ secure_wp
438
- #: secure-wordpress.php:1110
439
- msgid "Delete Options"
440
- msgstr "حذف گزينه‌ها"
441
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-fr_FR.mo DELETED
Binary file
languages/secure_wp-fr_FR.po DELETED
@@ -1,246 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-03-10 22:27+0100\n"
6
- "PO-Revision-Date: 2010-03-10 22:28+0100\n"
7
- "Last-Translator: JeoffreyLac <lascarduweb@hotmail.com>\n"
8
- "Language-Team: JeoffreyLac\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-SourceCharset: utf-8\n"
14
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
15
- "X-Poedit-Basepath: ../\n"
16
- "X-Textdomain-Support: yes\n"
17
- "X-Poedit-Language: French\n"
18
- "X-Poedit-Country: FRANCE\n"
19
- "X-Poedit-SearchPath-0: .\n"
20
-
21
- #: secure-wordpress.php:337
22
- msgid "Settings"
23
- msgstr "Réglages"
24
-
25
- # @ secure_wp
26
- #: secure-wordpress.php:366
27
- #: secure-wordpress.php:413
28
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
29
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
30
-
31
- # @ secure_wp
32
- #: secure-wordpress.php:389
33
- msgid "Options update."
34
- msgstr "Mettre à jour les options."
35
-
36
- # @ secure_wp
37
- #: secure-wordpress.php:391
38
- msgid "All entries in the database was cleared. Now deactivate this plugin."
39
- msgstr "Toutes les informations dans la base de données ont été effacées. Vous pouvez désormais désactiver le plugin."
40
-
41
- # @ secure_wp
42
- #: secure-wordpress.php:405
43
- #: secure-wordpress.php:416
44
- msgid "Secure WP"
45
- msgstr "Secure WP"
46
-
47
- # @ secure_wp
48
- #: secure-wordpress.php:412
49
- #: secure-wordpress.php:704
50
- msgid "Secure WordPress"
51
- msgstr "Secure WordPress"
52
-
53
- #: secure-wordpress.php:436
54
- msgid "Version"
55
- msgstr "Version"
56
-
57
- # @ secure_wp
58
- #: secure-wordpress.php:436
59
- msgid "History"
60
- msgstr "Historique"
61
-
62
- #: secure-wordpress.php:436
63
- msgid "Author"
64
- msgstr "Auteur"
65
-
66
- # @ secure_wp
67
- #: secure-wordpress.php:630
68
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
69
- msgstr "Les options n'ont pas été mises à jour - vous n'avez pas les privilèges requis."
70
-
71
- # @ secure_wp
72
- #: secure-wordpress.php:650
73
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
74
- msgstr "Les informations n'ont pas pu être supprimées - vous n'avez pas les privilèges requis."
75
-
76
- # @ secure_wp
77
- #: secure-wordpress.php:658
78
- msgid "Entries was not delleted - check the checkbox!"
79
- msgstr "Les informations n'ont pas pu être supprimées - vérifiez la case à cocher!"
80
-
81
- # @ secure_wp
82
- #: secure-wordpress.php:678
83
- msgid "All entries in the database was cleared."
84
- msgstr "Toutes les informations dans la base de données ont été effacées."
85
-
86
- # @ secure_wp
87
- #: secure-wordpress.php:682
88
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
89
- msgstr "Les informations n'ont pas été effacées - vérifiez la case à cocher et assurez-vous d'avoir les privilèges pour effectuer cette action."
90
-
91
- #: secure-wordpress.php:709
92
- #: secure-wordpress.php:844
93
- #: secure-wordpress.php:864
94
- msgid "Click to toggle"
95
- msgstr "Cliquer pour basculer"
96
-
97
- # @ secure_wp
98
- #: secure-wordpress.php:710
99
- msgid "Configuration"
100
- msgstr "Configuration"
101
-
102
- # @ secure_wp
103
- #: secure-wordpress.php:720
104
- msgid "Error-Messages"
105
- msgstr "Messages d'erreur"
106
-
107
- # @ secure_wp
108
- #: secure-wordpress.php:724
109
- msgid "Deactivates tooltip and error message at login of WordPress"
110
- msgstr "Désactive la suggestion et le message d'erreur à la connection de Wordpress"
111
-
112
- # @ secure_wp
113
- #: secure-wordpress.php:730
114
- msgid "WordPress Version"
115
- msgstr "Version WordPress"
116
-
117
- # @ secure_wp
118
- #: secure-wordpress.php:734
119
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
120
- msgstr "Supprime la version WordPress dans toutes les zones, y compris le flux, mais pas dans la partie admin."
121
-
122
- # @ secure_wp
123
- #: secure-wordpress.php:740
124
- msgid "WordPress Version in Backend"
125
- msgstr "WordPres Version dans Backend"
126
-
127
- # @ secure_wp
128
- #: secure-wordpress.php:744
129
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
130
- msgstr "Supprime la version de WordPress dans la zone d'administration pour les non-administrateurs. Montre la version de Wordpress uniquement aux utilisateurs avec les droits d'édition de vos plugins."
131
-
132
- # @ secure_wp
133
- #: secure-wordpress.php:750
134
- msgid "index.php"
135
- msgstr "index.php"
136
-
137
- # @ secure_wp
138
- #: secure-wordpress.php:754
139
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
140
- msgstr "crée le fichier <code>index.php</code> dans les répertoires <code>/plugins/</code> et<code>/themes/</code> pour éviter de montrer votre liste de répertoire."
141
-
142
- # @ secure_wp
143
- #: secure-wordpress.php:760
144
- msgid "Really Simple Discovery"
145
- msgstr "Really Simple Discovery"
146
-
147
- # @ secure_wp
148
- #: secure-wordpress.php:764
149
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
150
- msgstr "Supprime le lien de Really Simple Discovery dans <code>wp_head</code> du frontend"
151
-
152
- # @ secure_wp
153
- #: secure-wordpress.php:770
154
- msgid "Windows Live Writer"
155
- msgstr "Windows Live Writer"
156
-
157
- # @ secure_wp
158
- #: secure-wordpress.php:774
159
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
160
- msgstr "Supprime le lien de Windows Live Writer dans <code>wp_head</code> du frontend"
161
-
162
- # @ secure_wp
163
- #: secure-wordpress.php:780
164
- msgid "Core Update"
165
- msgstr "Mise à jour du noyau"
166
-
167
- # @ secure_wp
168
- #: secure-wordpress.php:784
169
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
170
- msgstr "Supprime la mise à jour du Noyau WordPress pour tout les utilisateurs sauf l'administrateur. Affiche un message lors de la disponibilité d'une nouvelle version WordPress seulement pour les utilisateurs possédant les droits de mettre à jour."
171
-
172
- # @ secure_wp
173
- #: secure-wordpress.php:790
174
- msgid "Plugin Update"
175
- msgstr "Mise à jour Plugin"
176
-
177
- # @ secure_wp
178
- #: secure-wordpress.php:794
179
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
180
- msgstr "Supprime la mise à jour des plugins pour tout les utilisateurs sauf l'administrateur. Affiche un message lors de la disponibilité d'un plugin dans le panneau d'administration seulement aux utilisateurs possédants les droits d'éditer les plugins."
181
-
182
- # @ secure_wp
183
- #: secure-wordpress.php:801
184
- msgid "Theme Update"
185
- msgstr "Mise à jour du thème."
186
-
187
- # @ secure_wp
188
- #: secure-wordpress.php:805
189
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
190
- msgstr "Supprime la mise à jour du thème à tout les utilisateurs sauf l'administrateur. Affiche un message lors d'une nouvelle version de thème seulement aux utilisateurs avec les droits permettant d'éditer les thèmes."
191
-
192
- # @ secure_wp
193
- #: secure-wordpress.php:812
194
- msgid "WP Scanner"
195
- msgstr "WP Scanner"
196
-
197
- # @ secure_wp
198
- #: secure-wordpress.php:816
199
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
200
- msgstr "Le scanner WordPress est une ressource gratuite en ligne permettant aux administrateurs de blog de mesurer le niveau de sécurité de leurs installations WordPress. Pour lancer wp-scanner, cochez cette option et ajouter <code>&lt;!-- wpscanner --&gt;</code> à votre template WordPress actuellement utilisé. Aller ensuite sur : <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> et scanner votre site."
201
-
202
- # @ secure_wp
203
- #: secure-wordpress.php:822
204
- msgid "Block bad queries"
205
- msgstr "Bloquer les mauvaises requêtes"
206
-
207
- # @ secure_wp
208
- #: secure-wordpress.php:826
209
- msgid "Protect WordPress against malicious URL requests, see more informations on the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
210
- msgstr "Protège WordPress contre les requêtes malicieuses d'URL, jettez un oeil à cet article pour de plus amples informations : <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >Jeff Starr - Malicious url req</a>"
211
-
212
- # @ secure_wp
213
- #: secure-wordpress.php:834
214
- msgid "Save Changes"
215
- msgstr "Sauvegarder les changements"
216
-
217
- # @ secure_wp
218
- #: secure-wordpress.php:845
219
- msgid "Clear Options"
220
- msgstr "Options de suppression"
221
-
222
- # @ secure_wp
223
- #: secure-wordpress.php:848
224
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
225
- msgstr "Cocher et cliquer sur ce bouton pour effacer toutes les configurations de ce plugin. La désactivation du plugin Secure WordPress supprime toutes les données du plugin."
226
-
227
- # @ secure_wp
228
- #: secure-wordpress.php:853
229
- msgid "Delete Options"
230
- msgstr "Options d'effacement"
231
-
232
- # @ secure_wp
233
- #: secure-wordpress.php:865
234
- msgid "About the plugin"
235
- msgstr "A propos du plugin"
236
-
237
- # @ secure_wp
238
- #: secure-wordpress.php:878
239
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
240
- msgstr "Complément d'information : Visitez la : <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\"> page officielle du plugin</a> pour plus d'informations ou pour récupérer la dernière version du plugin."
241
-
242
- # @ secure_wp
243
- #: secure-wordpress.php:878
244
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
245
- msgstr "Vous voulez me dire merci ? Visitez ma <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
246
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-hu_HU.mo DELETED
Binary file
languages/secure_wp-hu_HU.po DELETED
@@ -1,237 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-06-22 12:29+0100\n"
6
- "PO-Revision-Date: 2009-06-22 14:29+0100\n"
7
- "Last-Translator: Körmendi Péter <peter@seo-hungary.com>\n"
8
- "Language-Team: Körmendi Péter <peter@seo-hungary.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: \n"
14
- "X-Poedit-Country: \n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
17
- "X-Poedit-Basepath: ../\n"
18
- "X-Poedit-Bookmarks: \n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Textdomain-Support: yes"
21
-
22
- #: secure-wordpress.php:330
23
- msgid "Settings"
24
- msgstr "Beállítások"
25
-
26
- #: secure-wordpress.php:359
27
- #: secure-wordpress.php:402
28
- #@ secure_wp
29
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
30
- msgstr "<a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">Dokumentációk</a>"
31
-
32
- #: secure-wordpress.php:382
33
- #@ secure_wp
34
- msgid "Options update."
35
- msgstr "Beállítások aktualizálva."
36
-
37
- #: secure-wordpress.php:384
38
- #@ secure_wp
39
- msgid "All entries in the database was cleared. Now deactivate this plugin."
40
- msgstr "Az adatbankban minden bejegyzés törölve. Most deaktiválom a Plugint."
41
-
42
- #: secure-wordpress.php:398
43
- #: secure-wordpress.php:405
44
- #@ secure_wp
45
- msgid "Secure WP"
46
- msgstr "Secure WP"
47
-
48
- #: secure-wordpress.php:401
49
- #: secure-wordpress.php:641
50
- #@ secure_wp
51
- msgid "Secure WordPress"
52
- msgstr "Secure WordPress"
53
-
54
- #: secure-wordpress.php:425
55
- msgid "Version"
56
- msgstr "Verzió"
57
-
58
- #: secure-wordpress.php:425
59
- #@ secure_wp
60
- msgid "History"
61
- msgstr "Előzmények"
62
-
63
- #: secure-wordpress.php:425
64
- msgid "Author"
65
- msgstr "Szerző"
66
-
67
- #: secure-wordpress.php:568
68
- #@ secure_wp
69
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
70
- msgstr "A beállítások nem aktualizálódtak. Nem rendelkezel a megfelelő jogokkal!"
71
-
72
- #: secure-wordpress.php:588
73
- #@ secure_wp
74
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
75
- msgstr "A beállítások nem törlődtek. Nem rendelkezel a megfelelő jogokkal!"
76
-
77
- #: secure-wordpress.php:596
78
- #@ secure_wp
79
- msgid "Entries was not delleted - check the checkbox!"
80
- msgstr "A beállítások nem törlődtek - ellenőrizd a Checkbox-ot! "
81
-
82
- #: secure-wordpress.php:616
83
- #@ secure_wp
84
- msgid "All entries in the database was cleared."
85
- msgstr "Az adatbankban minden bejegyzés törölve."
86
-
87
- #: secure-wordpress.php:620
88
- #@ secure_wp
89
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
90
- msgstr "A beállítások nem törlődtek - ellenőrizd a Checkbox-ot vagy nem rendelkezel a megfelelő jogosultságokkal! "
91
-
92
- #: secure-wordpress.php:646
93
- #: secure-wordpress.php:771
94
- #: secure-wordpress.php:791
95
- msgid "Click to toggle"
96
- msgstr "Kattints az átváltáshoz"
97
-
98
- #: secure-wordpress.php:647
99
- #@ secure_wp
100
- msgid "Configuration"
101
- msgstr "Beállítások"
102
-
103
- #: secure-wordpress.php:657
104
- #@ secure_wp
105
- msgid "Error-Messages"
106
- msgstr "Hibaüzenetek"
107
-
108
- #: secure-wordpress.php:661
109
- #@ secure_wp
110
- msgid "deactivates tooltip and error message at login of WordPress"
111
- msgstr "Deaktiválja az utalásokat és hibaüzeneteket a WordPress bejelentkezés során"
112
-
113
- #: secure-wordpress.php:667
114
- #@ secure_wp
115
- msgid "WordPress Version"
116
- msgstr "WordPress verzió"
117
-
118
- #: secure-wordpress.php:671
119
- #@ secure_wp
120
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
121
- msgstr "WordPress verzió eltávolítása minden területről, beleértve a Feed-et és a nem admin felületet."
122
-
123
- #: secure-wordpress.php:697
124
- #@ secure_wp
125
- msgid "Really Simple Discovery"
126
- msgstr "Really Simple Discovery"
127
-
128
- #: secure-wordpress.php:701
129
- #@ secure_wp
130
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
131
- msgstr "Eltávolítja a Really Simple Discovery linket a Frontend fejlécéből"
132
-
133
- #: secure-wordpress.php:707
134
- #@ secure_wp
135
- msgid "Windows Live Writer"
136
- msgstr "Windows Live Writer"
137
-
138
- #: secure-wordpress.php:711
139
- #@ secure_wp
140
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
141
- msgstr "Eltávolítja a Windows Live Writer linket a Frontend fejlécéből"
142
-
143
- #: secure-wordpress.php:717
144
- #@ secure_wp
145
- msgid "Core Update"
146
- msgstr "Core Update"
147
-
148
- #: secure-wordpress.php:721
149
- #@ secure_wp
150
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
151
- msgstr "Deaktiválja a Core-Update-et a nem adminisztrátorok számára. A WordPress új verziójáról csak azok a felhasználók értesülnek, akik rendelkeznek Plugin szerkesztői jogokkal."
152
-
153
- #: secure-wordpress.php:727
154
- #@ secure_wp
155
- msgid "Plugin Update"
156
- msgstr "Plugin Update"
157
-
158
- #: secure-wordpress.php:731
159
- #@ secure_wp
160
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
161
- msgstr "Deaktiválja a Plugin-Update-et a nem adminisztrátorok számára. A pluginok új verziójáról csak azok a felhasználók értesülnek, akik rendelkeznek Plugin szerkesztői jogokkal."
162
-
163
- #: secure-wordpress.php:738
164
- #@ secure_wp
165
- msgid "Theme Update"
166
- msgstr "Theme Update"
167
-
168
- #: secure-wordpress.php:742
169
- #@ secure_wp
170
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
171
- msgstr "Deaktiválja a Theme-Update-et a nem adminisztrátorok számára. A WordPress sablon új verziójáról csak azok a felhasználók értesülnek, akik rendelkeznek sablon szerkesztői jogokkal."
172
-
173
- #: secure-wordpress.php:749
174
- #@ secure_wp
175
- msgid "WP Scanner"
176
- msgstr "WP Scanner"
177
-
178
- #: secure-wordpress.php:753
179
- #@ secure_wp
180
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
181
- msgstr "A WordPress Scanner egy szabadon alkalmazható online eszköz blog adminisztrátorok számára, a WordPress telepítés Frontend biztonságának ellenőrzéséhez. Ha használni szeretnéd, aktiváld a Checkbox-ot amivel a <code>&lt;!-- wpscanner --&gt;</code> stringet beilleszted az aktuálisan használt sablonba. Ezután keresd fel az online scannert a <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> címen és ellenőrizd le az oldaladat."
182
-
183
- #: secure-wordpress.php:761
184
- #@ secure_wp
185
- msgid "Save Changes"
186
- msgstr "Beállítások aktualizálása"
187
-
188
- #: secure-wordpress.php:772
189
- #@ secure_wp
190
- msgid "Clear Options"
191
- msgstr "Beállítások törlése"
192
-
193
- #: secure-wordpress.php:775
194
- #@ secure_wp
195
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
196
- msgstr "Ezt a lehetőséget akkor használd, ha a plugin összes beállítását törölni szeretnéd az adatbankból. A plugin akkor is törli az összes beállítást, ha deaktiválod, vagy ha azt a Backend-ből távolítod el."
197
-
198
- #: secure-wordpress.php:780
199
- #@ secure_wp
200
- msgid "Delete Options"
201
- msgstr "Beállítások törlése"
202
-
203
- #: secure-wordpress.php:792
204
- #@ secure_wp
205
- msgid "About the plugin"
206
- msgstr "A pluginról"
207
-
208
- #: secure-wordpress.php:805
209
- #@ secure_wp
210
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
211
- msgstr "További információk: Több információkért, illetve a plugin aktuális verziójának letöltéséért látogass el a <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">Plugin weboldalára</a>."
212
-
213
- #: secure-wordpress.php:805
214
- #@ secure_wp
215
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
216
- msgstr "Köszönetet szeretnél mondani? Látogasd meg a <a href=\"http://bueltge.de/wunschliste/\">kívánságlistámat</a>."
217
-
218
- #: secure-wordpress.php:691
219
- #@ secure_wp
220
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
221
- msgstr "létrehoz egy <code>index.php</ code> fájlt <code>/plugins/</code> és <code>/themes/</code>, ha nem akarja jeleníti meg a könyvtárlistában"
222
-
223
- #: secure-wordpress.php:677
224
- #@ secure_wp
225
- msgid "WordPress Version in Backend"
226
- msgstr ""
227
-
228
- #: secure-wordpress.php:687
229
- #@ secure_wp
230
- msgid "index.php"
231
- msgstr ""
232
-
233
- #: secure-wordpress.php:681
234
- #@ secure_wp
235
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
236
- msgstr ""
237
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-it_IT.mo DELETED
Binary file
languages/secure_wp-it_IT.po DELETED
@@ -1,476 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress in italiano\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: 2010-10-16 21:29+0100\n"
7
- "Last-Translator: Gianni Diurno (aka gidibao) <gidibao[at]gmail[dot]com>\n"
8
- "Language-Team: Gianni Diurno | http://gidibao.net/ <gidibao@gmail.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: Italian\n"
14
- "X-Poedit-Country: ITALY\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Textdomain-Support: yes\n"
18
-
19
- #. translators: plugin header field 'Description'
20
- #: secure-wordpress.php:0
21
- msgid "Little basics for secure your WordPress-installation."
22
- msgstr "Info di base per mettere in sicurezza la tua installazione di WordPress."
23
-
24
- #: secure-wordpress.php:365
25
- msgid "Settings"
26
- msgstr "Impostazioni"
27
-
28
- # @ secure_wp
29
- #: secure-wordpress.php:394
30
- #: secure-wordpress.php:441
31
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
32
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentazione</a>"
33
-
34
- # @ secure_wp
35
- #: secure-wordpress.php:417
36
- msgid "Options update."
37
- msgstr "Le opzioni sono state aggiornate."
38
-
39
- # @ secure_wp
40
- #: secure-wordpress.php:419
41
- msgid "All entries in the database was cleared. Now deactivate this plugin."
42
- msgstr "Sono state cancellate tutte le informazioni contenute nel database. Ora puoi disattivare il plugin."
43
-
44
- # @ secure_wp
45
- #: secure-wordpress.php:433
46
- #: secure-wordpress.php:444
47
- msgid "Secure WP"
48
- msgstr "Secure WP"
49
-
50
- # @ secure_wp
51
- #. translators: plugin header field 'Name'
52
- #: secure-wordpress.php:0
53
- #: secure-wordpress.php:440
54
- #: secure-wordpress.php:751
55
- msgid "Secure WordPress"
56
- msgstr "Secure WordPress"
57
-
58
- #: secure-wordpress.php:464
59
- msgid "Version"
60
- msgstr "Versione"
61
-
62
- # @ secure_wp
63
- #: secure-wordpress.php:464
64
- msgid "History"
65
- msgstr "Storico"
66
-
67
- #: secure-wordpress.php:464
68
- msgid "Author"
69
- msgstr "Autore"
70
-
71
- # @ secure_wp
72
- #: secure-wordpress.php:676
73
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
74
- msgstr "Le opzioni non sono state aggiornate - non hai i permessi per poter operare queste modifiche!"
75
-
76
- # @ secure_wp
77
- #: secure-wordpress.php:696
78
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
79
- msgstr "Le informazioni non sono state cancellate - non hai i permessi per poter operare queste modifiche!"
80
-
81
- # @ secure_wp
82
- #: secure-wordpress.php:704
83
- msgid "Entries were not deleted - check the checkbox!"
84
- msgstr "Le informazioni non sono state cancellate - verifica la casella di selezione!"
85
-
86
- # @ secure_wp
87
- #: secure-wordpress.php:724
88
- msgid "All entries in the database were cleared."
89
- msgstr "Sono state cancellate tutte le informazioni contenute nel database."
90
-
91
- # @ secure_wp
92
- #: secure-wordpress.php:728
93
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
94
- msgstr "Le informazioni non sono state cancellate - verifica la casella di selezione oppure potresti non avere i permessi per poter operare queste modifiche!"
95
-
96
- #: secure-wordpress.php:756
97
- #: secure-wordpress.php:892
98
- #: secure-wordpress.php:1005
99
- #: secure-wordpress.php:1119
100
- msgid "Click to toggle"
101
- msgstr "Clicca per commutare"
102
-
103
- # @ secure_wp
104
- #: secure-wordpress.php:757
105
- msgid "Configuration"
106
- msgstr "Configurazione"
107
-
108
- # @ secure_wp
109
- #: secure-wordpress.php:767
110
- msgid "Error-Messages"
111
- msgstr "Messaggi di errore"
112
-
113
- # @ secure_wp
114
- #: secure-wordpress.php:771
115
- msgid "Deactivates tooltip and error message at login of WordPress"
116
- msgstr "disattiva i suggerimenti ed il messaggio di errore durante il login a WordPress"
117
-
118
- # @ secure_wp
119
- #: secure-wordpress.php:777
120
- msgid "WordPress Version"
121
- msgstr "Versione WordPress"
122
-
123
- # @ secure_wp
124
- #: secure-wordpress.php:781
125
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
126
- msgstr "Rimuove da tutte le aree la versione di WordPress in uso, inclusi i feed: non in amministrazione"
127
-
128
- # @ secure_wp
129
- #: secure-wordpress.php:787
130
- msgid "WordPress Version in Backend"
131
- msgstr "Versione WordPres in Backend"
132
-
133
- # @ secure_wp
134
- #: secure-wordpress.php:791
135
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
136
- msgstr "Rimuove dall'area di amministrazione la versione di WordPress per gli utenti non admin. Mostra la versione di WordPress in uso nel tuo blog solamente per quegli utenti che possono modificare i plugin."
137
-
138
- # @ secure_wp
139
- #: secure-wordpress.php:797
140
- msgid "index.php"
141
- msgstr "index.php"
142
-
143
- # @ secure_wp
144
- #: secure-wordpress.php:801
145
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
146
- msgstr "crea un file <code>index.php</code> sotto <code>/plugins/</code> e <code>/themes/</code> per mantenere riservato il contenuto della cartella"
147
-
148
- # @ secure_wp
149
- #: secure-wordpress.php:807
150
- msgid "Really Simple Discovery"
151
- msgstr "Really Simple Discovery"
152
-
153
- # @ secure_wp
154
- #: secure-wordpress.php:811
155
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
156
- msgstr "Rimuovi il link Really Simple Discovery in <code>wp_head</code> nel frontend"
157
-
158
- # @ secure_wp
159
- #: secure-wordpress.php:817
160
- msgid "Windows Live Writer"
161
- msgstr "Windows Live Writer"
162
-
163
- # @ secure_wp
164
- #: secure-wordpress.php:821
165
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
166
- msgstr "Rimuovi il link Windows Live Writer in <code>wp_head</code> nel frontend"
167
-
168
- # @ secure_wp
169
- #: secure-wordpress.php:827
170
- msgid "Core Update"
171
- msgstr "Aggiornamento core"
172
-
173
- # @ secure_wp
174
- #: secure-wordpress.php:831
175
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
176
- msgstr "Rimuovi gli aggiornamenti del core di WordPress per gli utenti che non sono amministratori. Mostra il messaggio di notifica per una nuova versione di WordPress solamente per gli utenti che possono effettuare l'aggiornamento."
177
-
178
- # @ secure_wp
179
- #: secure-wordpress.php:837
180
- msgid "Plugin Update"
181
- msgstr "Aggiornamento plugin"
182
-
183
- # @ secure_wp
184
- #: secure-wordpress.php:841
185
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
186
- msgstr "Rimuovi l'aggiornamento del plugin per gli utenti che non sono amministratori. Mostra il messaggio di notifica per una nuova versione di un plugin solamente per gli utenti che hanno i diritti per poter modificare i plugin."
187
-
188
- # @ secure_wp
189
- #: secure-wordpress.php:848
190
- msgid "Theme Update"
191
- msgstr "Tema Update"
192
-
193
- # @ secure_wp
194
- #: secure-wordpress.php:852
195
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
196
- msgstr "Rimuovere l'aggiornamento a tema per i non amministratori. Mostra messaggio per una nuova versione di un tema di installazione del tuo blog solo per gli utenti con i diritti per modificare temi."
197
-
198
- # @ secure_wp
199
- #: secure-wordpress.php:859
200
- msgid "WP Scanner"
201
- msgstr "WP Scanner"
202
-
203
- # @ secure_wp
204
- #: secure-wordpress.php:863
205
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
206
- msgstr "Scanner WordPress è una risorsa online gratuita che gli amministratori del blog possono utilizzare per fornire una misura della loro livello di sicurezza wordpress. Per eseguire wp-scanner attivare questa opzione ed aggiungere <code>&lt;!-- wpscanner --&gt;</code> al template in uso di WordPress. Infine, vai a questa pagina <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> ed effettua la scansione del tuo sito."
207
-
208
- # @ secure_wp
209
- #: secure-wordpress.php:869
210
- msgid "Block bad queries"
211
- msgstr "Blocco bad queries"
212
-
213
- # @ secure_wp
214
- #: secure-wordpress.php:873
215
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
216
- msgstr "Proteggi WordPress dalle richieste URL maligne: per ulteriori informazioni vai all'articolo di <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >Jeff Starr</a>"
217
-
218
- # @ secure_wp
219
- #: secure-wordpress.php:881
220
- msgid "Save Changes"
221
- msgstr "Salva le modifiche"
222
-
223
- #: secure-wordpress.php:893
224
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
225
- msgstr "Certifica l'assenza di malware dal tuo sito con una analisi via www.sitesecuritymonitor.com"
226
-
227
- #: secure-wordpress.php:896
228
- msgid "Take us for a Test Drive - Free Scan"
229
- msgstr "Contattaci per una prova - Analisi gratuita"
230
-
231
- #: secure-wordpress.php:897
232
- msgid "We understand you may have questions:"
233
- msgstr "E' comprensibile che tu abbia delle domande:"
234
-
235
- #: secure-wordpress.php:898
236
- msgid "What does this do for me?"
237
- msgstr "Quali vantaggi per me?"
238
-
239
- #: secure-wordpress.php:899
240
- msgid "Am I really safe? I need to be sure."
241
- msgstr "Sono veramente al sicuro? Vorrei esserne certo!"
242
-
243
- #: secure-wordpress.php:900
244
- msgid "Rest Assured, Site Security Monitor has you covered."
245
- msgstr "Rest Assured, Site Security Monitor has you covered."
246
-
247
- #: secure-wordpress.php:902
248
- msgid "FREE scan looks for malware"
249
- msgstr "Analisi GRATUITA ricerca malware"
250
-
251
- #: secure-wordpress.php:903
252
- msgid "FREE report of website vulnerabilities found"
253
- msgstr "Rapporto GRATUITO vulerabilità sito web rilevate"
254
-
255
- #: secure-wordpress.php:904
256
- msgid "No setup, tuning and installation on your site - scan begins immediately"
257
- msgstr "Nessuna configurazione, modifica ed installazione nel tuo sito - l'analisi avrà un inizio immediato"
258
-
259
- #: secure-wordpress.php:906
260
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
261
- msgstr "Ti invieremo un rapporto dettagliato sulla vulnerabilità web e malware - GRATUITO. Utilizza liberamente il rapporto per risolvere i problemi, per mostrare ai tuoi clienti che il sito é sicuro, etc."
262
-
263
- #: secure-wordpress.php:907
264
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
265
- msgstr "** Bonus: una volta effettuata l'analisi, avrai la possibilità di utilizzare nel tuo sito il sigillo \"Safe-Seal\" - questi mostrerà a tutti che il tuo sito é esente da malware!"
266
-
267
- #: secure-wordpress.php:909
268
- msgid "The form"
269
- msgstr "Il modulo"
270
-
271
- #: secure-wordpress.php:910
272
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
273
- msgstr "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
274
-
275
- #: secure-wordpress.php:945
276
- msgid "Full Name"
277
- msgstr "Nome completo"
278
-
279
- #: secure-wordpress.php:948
280
- #: secure-wordpress.php:956
281
- #: secure-wordpress.php:964
282
- #: secure-wordpress.php:972
283
- #: secure-wordpress.php:988
284
- msgid "*required"
285
- msgstr "*richiesto"
286
-
287
- #: secure-wordpress.php:953
288
- msgid "eMail Adress"
289
- msgstr "Indirizzo email"
290
-
291
- #: secure-wordpress.php:956
292
- msgid ", eMail Address must match domain name"
293
- msgstr ", l'indirizzo email deve coincidere con il nome del dominio"
294
-
295
- #: secure-wordpress.php:961
296
- msgid "Website"
297
- msgstr "Sito web"
298
-
299
- #: secure-wordpress.php:969
300
- msgid "Phone"
301
- msgstr "Telefono"
302
-
303
- #: secure-wordpress.php:977
304
- msgid "Yes, I need help!"
305
- msgstr "Sì, mi serve aiuto!"
306
-
307
- #: secure-wordpress.php:980
308
- msgid "Call me"
309
- msgstr "Chiama"
310
-
311
- #: secure-wordpress.php:985
312
- msgid "Terms and Conditions"
313
- msgstr "Condizioni e termini"
314
-
315
- #: secure-wordpress.php:988
316
- msgid ", I accept"
317
- msgstr ", accetto"
318
-
319
- #: secure-wordpress.php:995
320
- msgid "Get my Free Web Scan"
321
- msgstr "Analisi web gratuita"
322
-
323
- #: secure-wordpress.php:1006
324
- msgid "Safe Seal"
325
- msgstr "Safe Seal"
326
-
327
- #: secure-wordpress.php:1036
328
- msgid "Color"
329
- msgstr "Colore"
330
-
331
- #: secure-wordpress.php:1040
332
- msgid "Green"
333
- msgstr "Verde"
334
-
335
- #: secure-wordpress.php:1041
336
- msgid "Blue"
337
- msgstr "Blu"
338
-
339
- #: secure-wordpress.php:1042
340
- msgid "Red"
341
- msgstr "Rosso"
342
-
343
- #: secure-wordpress.php:1043
344
- msgid "Brown"
345
- msgstr "Marrone"
346
-
347
- #: secure-wordpress.php:1044
348
- msgid "Gray"
349
- msgstr "Verde"
350
-
351
- #: secure-wordpress.php:1053
352
- msgid "Text"
353
- msgstr "Testo"
354
-
355
- #: secure-wordpress.php:1057
356
- msgid "Protected"
357
- msgstr "Protetto"
358
-
359
- # @ secure_wp
360
- #: secure-wordpress.php:1058
361
- msgid "Secured"
362
- msgstr "In sicurezza"
363
-
364
- # @ secure_wp
365
- #: secure-wordpress.php:1059
366
- msgid "Scanned"
367
- msgstr "Analizzato"
368
-
369
- #: secure-wordpress.php:1060
370
- msgid "Protected by"
371
- msgstr "Protetto da"
372
-
373
- #: secure-wordpress.php:1066
374
- msgid "Orientation"
375
- msgstr "Orientamento"
376
-
377
- #: secure-wordpress.php:1070
378
- msgid "Horizontal"
379
- msgstr "Orizzontale"
380
-
381
- #: secure-wordpress.php:1071
382
- msgid "Vertical"
383
- msgstr "Verticale"
384
-
385
- #: secure-wordpress.php:1077
386
- msgid "Image border"
387
- msgstr "Bordo immagine"
388
-
389
- #: secure-wordpress.php:1085
390
- msgid "Language"
391
- msgstr "Lingua"
392
-
393
- #: secure-wordpress.php:1089
394
- msgid "English (US)"
395
- msgstr "Inglese (US)"
396
-
397
- #: secure-wordpress.php:1090
398
- msgid "English (UK)"
399
- msgstr "Inglese (UK)"
400
-
401
- #: secure-wordpress.php:1091
402
- msgid "Spanish"
403
- msgstr "Spagnolo"
404
-
405
- #: secure-wordpress.php:1092
406
- msgid "German"
407
- msgstr "Tedesco"
408
-
409
- #: secure-wordpress.php:1093
410
- msgid "Italian"
411
- msgstr "Italiano"
412
-
413
- #: secure-wordpress.php:1094
414
- msgid "Japanese"
415
- msgstr "Giapponese"
416
-
417
- #: secure-wordpress.php:1095
418
- msgid "Chinese (Simplified)"
419
- msgstr "Cinese (Semplificato)"
420
-
421
- #: secure-wordpress.php:1096
422
- msgid "Chinese (Traditional)"
423
- msgstr "Cinese (Tradizionale)"
424
-
425
- #: secure-wordpress.php:1105
426
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
427
- msgstr "Ecco il tuo codice personale. Inseriscilo nel tuo sito (copia l'HTML in un widget di testo) per mostrare che é protetto."
428
-
429
- # @ secure_wp
430
- #: secure-wordpress.php:1120
431
- msgid "Clear Options"
432
- msgstr "Rimuovi le opzioni"
433
-
434
- # @ secure_wp
435
- #: secure-wordpress.php:1123
436
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
437
- msgstr "Clicca su questo pulsante per cancellare le impostazioni di questo plugin. La disattivazione Secure WordPress rimuoverà ogni dato che é stato creato."
438
-
439
- # @ secure_wp
440
- #: secure-wordpress.php:1128
441
- msgid "Delete Options"
442
- msgstr "Opzioni rimozione"
443
-
444
- # @ secure_wp
445
- #. translators: plugin header field 'PluginURI'
446
- #: secure-wordpress.php:0
447
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
448
- msgstr "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
449
-
450
- # @ secure_wp
451
- #. translators: plugin header field 'Author'
452
- #: secure-wordpress.php:0
453
- msgid "jremillard"
454
- msgstr "jremillard"
455
-
456
- # @ secure_wp
457
- #. translators: plugin header field 'AuthorURI'
458
- #: secure-wordpress.php:0
459
- msgid "http://www.sitesecuritymonitor.com/"
460
- msgstr "http://www.sitesecuritymonitor.com/"
461
-
462
- # @ secure_wp
463
- #. translators: plugin header field 'Version'
464
- #: secure-wordpress.php:0
465
- msgid "1.0.3"
466
- msgstr "1.0.3"
467
-
468
- #: secure-wordpress.php:1009
469
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
470
- msgstr "Grazie per l'utilizzo del nostro plugin! Puoi usare a tuo piacere nel blog l'analisi qui sotto (copia/incolla il codice HTML). Questo sigillo non ti offrirà i servizi di analisi - compie una funzione di base per la sicurezza di WordPress - come suggerito dalla community e dalla nostra esperienza maturata con i nostri clienti.<br/>Qualora desiderassi ottenere un regolare servizio per l'analisi della vulnerabilità e la scansione dei malware, vai alla <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">pagina principale...</a> del nostro sito."
471
-
472
- # @ secure_wp
473
- #: secure-wordpress.php:1104
474
- msgid "Source"
475
- msgstr "Sorgente"
476
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-ja.mo DELETED
Binary file
languages/secure_wp-ja.po DELETED
@@ -1,526 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: \n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Fumito Mizuno <mizuno@ounziw.com>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-Language: Japanese\n"
13
- "X-Poedit-SourceCharset: utf-8\n"
14
-
15
- # @ secure_wp
16
- #. translators: plugin header field 'Description'
17
- #: secure-wordpress.php:0
18
- msgid "Little basics for secure your WordPress-installation."
19
- msgstr "WordPress を安全にするための基礎"
20
-
21
- # @ default
22
- #: secure-wordpress.php:370
23
- msgid "Settings"
24
- msgstr "設定"
25
-
26
- # @ secure_wp
27
- #: secure-wordpress.php:399
28
- #: secure-wordpress.php:446
29
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
30
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">ドキュメント</a>"
31
-
32
- # @ secure_wp
33
- #: secure-wordpress.php:422
34
- msgid "Options update."
35
- msgstr "オプションを更新しました。"
36
-
37
- # @ secure_wp
38
- #: secure-wordpress.php:424
39
- msgid "All entries in the database was cleared. Now deactivate this plugin."
40
- msgstr "データベースのすべてのエントリを消去しました。プラグインを停止してください。"
41
-
42
- # @ secure_wp
43
- #: secure-wordpress.php:438
44
- #: secure-wordpress.php:449
45
- msgid "Secure WP"
46
- msgstr "Secure WP"
47
-
48
- # @ secure_wp
49
- #. translators: plugin header field 'Name'
50
- #: secure-wordpress.php:0
51
- #: secure-wordpress.php:445
52
- #: secure-wordpress.php:773
53
- msgid "Secure WordPress"
54
- msgstr "Secure WordPress"
55
-
56
- # @ default
57
- #: secure-wordpress.php:469
58
- msgid "Version"
59
- msgstr "バージョン"
60
-
61
- # @ secure_wp
62
- #: secure-wordpress.php:469
63
- msgid "History"
64
- msgstr "履歴"
65
-
66
- # @ default
67
- #: secure-wordpress.php:469
68
- msgid "Author"
69
- msgstr "作成者"
70
-
71
- # @ secure_wp
72
- #: secure-wordpress.php:698
73
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
74
- msgstr "オプションが更新されませんでした。あなたには権限がありません。"
75
-
76
- # @ secure_wp
77
- #: secure-wordpress.php:718
78
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
79
- msgstr "エントリが削除されませんでした。あなたには権限がありません。"
80
-
81
- # @ secure_wp
82
- #: secure-wordpress.php:726
83
- msgid "Entries were not deleted - check the checkbox!"
84
- msgstr "エントリが削除されませんでした。チェックボックスを確かめてください。"
85
-
86
- # @ secure_wp
87
- #: secure-wordpress.php:746
88
- msgid "All entries in the database were cleared."
89
- msgstr "データベースの全エントリが消去されました。"
90
-
91
- # @ secure_wp
92
- #: secure-wordpress.php:750
93
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
94
- msgstr "エントリが削除されませんでした。チェックボックスにチェックしていないか、あるいはあなたには権限がありません。"
95
-
96
- # @ default
97
- #: secure-wordpress.php:778
98
- #: secure-wordpress.php:914
99
- #: secure-wordpress.php:1027
100
- #: secure-wordpress.php:1141
101
- msgid "Click to toggle"
102
- msgstr "クリックして切り替える"
103
-
104
- # @ secure_wp
105
- #: secure-wordpress.php:779
106
- msgid "Configuration"
107
- msgstr "設定"
108
-
109
- # @ secure_wp
110
- #: secure-wordpress.php:789
111
- msgid "Error-Messages"
112
- msgstr "エラーメッセージ"
113
-
114
- # @ secure_wp
115
- #: secure-wordpress.php:793
116
- msgid "Deactivates tooltip and error message at login of WordPress"
117
- msgstr "WordPress ログイン時のツールチープとエラーメッセージを無効にします。"
118
-
119
- # @ secure_wp
120
- #: secure-wordpress.php:799
121
- msgid "WordPress Version"
122
- msgstr "WordPress バージョン"
123
-
124
- # @ secure_wp
125
- #: secure-wordpress.php:803
126
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
127
- msgstr "WordPress バージョンを削除します。(フィードも対象、管理画面を除く)"
128
-
129
- # @ secure_wp
130
- #: secure-wordpress.php:809
131
- msgid "WordPress Version in Backend"
132
- msgstr "バックエンドの WordPress バージョン"
133
-
134
- # @ secure_wp
135
- #: secure-wordpress.php:813
136
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
137
- msgstr "管理者以外のユーザーでは、管理画面での WordPress バージョンを削除します。プラグイン編集権限のあるユーザーにのみバージョンを表示します。"
138
-
139
- # @ secure_wp
140
- #: secure-wordpress.php:819
141
- msgid "index.php"
142
- msgstr "index.php"
143
-
144
- # @ secure_wp
145
- #: secure-wordpress.php:823
146
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
147
- msgstr "<code>/plugins/</code> と <code>/themes/</code> に <code>index.php</code> ファイルを作成し、ディレクトリ一覧を表示しないようにします。"
148
-
149
- # @ secure_wp
150
- #: secure-wordpress.php:829
151
- msgid "Really Simple Discovery"
152
- msgstr "Really Simple Discovery"
153
-
154
- # @ secure_wp
155
- #: secure-wordpress.php:833
156
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
157
- msgstr "フロントエンドの <code>wp_head</code> の Really Simple Discovery リンクを削除します。"
158
-
159
- # @ secure_wp
160
- #: secure-wordpress.php:839
161
- msgid "Windows Live Writer"
162
- msgstr "Windows Live Writer"
163
-
164
- # @ secure_wp
165
- #: secure-wordpress.php:843
166
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
167
- msgstr "フロントエンドの <code>wp_head</code> の Windows Live Writer リンクを削除します。"
168
-
169
- # @ secure_wp
170
- #: secure-wordpress.php:849
171
- msgid "Core Update"
172
- msgstr "コア更新"
173
-
174
- # @ secure_wp
175
- #: secure-wordpress.php:853
176
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
177
- msgstr "管理者以外は WordPress コア更新通知を削除します。更新権限のあるユーザーにのみ新バージョンを通知します。"
178
-
179
- # @ secure_wp
180
- #: secure-wordpress.php:859
181
- msgid "Plugin Update"
182
- msgstr "プラグイン更新"
183
-
184
- # @ secure_wp
185
- #: secure-wordpress.php:863
186
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
187
- msgstr "管理者以外はプラグイン更新通知を削除します。プラグイン編集権限のあるユーザーにのみ、プラグインの新バージョンを通知します。"
188
-
189
- # @ secure_wp
190
- #: secure-wordpress.php:870
191
- msgid "Theme Update"
192
- msgstr "テーマ更新"
193
-
194
- # @ secure_wp
195
- #: secure-wordpress.php:874
196
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
197
- msgstr "管理者以外はテーマ更新通知を削除します。テーマ編集権限のあるユーザーにのみ新バージョンを通知します。"
198
-
199
- # @ secure_wp
200
- #: secure-wordpress.php:891
201
- msgid "Block bad queries"
202
- msgstr "悪意あるクエリをブロックする"
203
-
204
- # @ secure_wp
205
- #: secure-wordpress.php:895
206
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
207
- msgstr "</a>悪意のある URL リクエストから WordPress を保護します。詳細は、<a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a> をごらんください。"
208
-
209
- # @ secure_wp
210
- #: secure-wordpress.php:903
211
- msgid "Save Changes"
212
- msgstr "変更を保存する"
213
-
214
- # @ secure_wp
215
- #: secure-wordpress.php:915
216
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
217
- msgstr "無料マルウェアスキャン www.sitesecuritymonitor.com でサイトをチェックします。"
218
-
219
- # @ secure_wp
220
- #: secure-wordpress.php:918
221
- msgid "Take us for a Test Drive - Free Scan"
222
- msgstr "Take us for a Test Drive - Free Scan"
223
-
224
- # @ secure_wp
225
- #: secure-wordpress.php:919
226
- msgid "We understand you may have questions:"
227
- msgstr "質問がありますか。"
228
-
229
- # @ secure_wp
230
- #: secure-wordpress.php:920
231
- msgid "What does this do for me?"
232
- msgstr "このプラグインは何をしますか?"
233
-
234
- # @ secure_wp
235
- #: secure-wordpress.php:921
236
- msgid "Am I really safe? I need to be sure."
237
- msgstr "本当に安全ですか?確認させてください。"
238
-
239
- # @ secure_wp
240
- #: secure-wordpress.php:922
241
- msgid "Rest Assured, Site Security Monitor has you covered."
242
- msgstr "安心してください。Site Security Monitor がカバーします。"
243
-
244
- # @ secure_wp
245
- #: secure-wordpress.php:924
246
- msgid "FREE scan looks for malware"
247
- msgstr "FREE スキャンがマルウェアを探しています。"
248
-
249
- # @ secure_wp
250
- #: secure-wordpress.php:925
251
- msgid "FREE report of website vulnerabilities found"
252
- msgstr "ウェブサイト脆弱性の FREE レポートが発見されました。"
253
-
254
- # @ secure_wp
255
- #: secure-wordpress.php:926
256
- msgid "No setup, tuning and installation on your site - scan begins immediately"
257
- msgstr "設定、チューニング、またはインストールが行われていません。スキャンをすぐに開始します。"
258
-
259
- # @ secure_wp
260
- #: secure-wordpress.php:928
261
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
262
- msgstr "詳細なマルウェアとウェブ脆弱性レポートを無料でお送りします。自由にレポートを使用して問題を解決し、サイトの安全性を上司にあるいは顧客に示すことができます。"
263
-
264
- # @ secure_wp
265
- #: secure-wordpress.php:929
266
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
267
- msgstr "** ボーナス: スキャンを実行した後、サイトセキュリティモニタ \"Safe-Seal\" を使用することができます。マルウェアから開放されます。"
268
-
269
- # @ secure_wp
270
- #: secure-wordpress.php:931
271
- msgid "The form"
272
- msgstr "フォーム"
273
-
274
- # @ secure_wp
275
- #: secure-wordpress.php:932
276
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
277
- msgstr "下記フォーム、または<a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">我々のサイト</a>のフォームをご利用ください。"
278
-
279
- # @ secure_wp
280
- #: secure-wordpress.php:967
281
- msgid "Full Name"
282
- msgstr "姓名"
283
-
284
- # @ secure_wp
285
- #: secure-wordpress.php:970
286
- #: secure-wordpress.php:978
287
- #: secure-wordpress.php:986
288
- #: secure-wordpress.php:994
289
- #: secure-wordpress.php:1010
290
- msgid "*required"
291
- msgstr "*必須"
292
-
293
- # @ secure_wp
294
- #: secure-wordpress.php:975
295
- msgid "eMail Adress"
296
- msgstr "メールアドレス"
297
-
298
- # @ secure_wp
299
- #: secure-wordpress.php:978
300
- msgid ", eMail Address must match domain name"
301
- msgstr ", メールアドレスはドメイン名に一致する必要があります。"
302
-
303
- # @ secure_wp
304
- #: secure-wordpress.php:983
305
- msgid "Website"
306
- msgstr "ウェブサイト"
307
-
308
- # @ secure_wp
309
- #: secure-wordpress.php:991
310
- msgid "Phone"
311
- msgstr "電話番号"
312
-
313
- # @ secure_wp
314
- #: secure-wordpress.php:999
315
- msgid "Yes, I need help!"
316
- msgstr "はい、助けが必要です。"
317
-
318
- # @ secure_wp
319
- #: secure-wordpress.php:1002
320
- msgid "Call me"
321
- msgstr "電話してください。"
322
-
323
- # @ secure_wp
324
- #: secure-wordpress.php:1007
325
- msgid "Terms and Conditions"
326
- msgstr "利用条件"
327
-
328
- # @ secure_wp
329
- #: secure-wordpress.php:1010
330
- msgid ", I accept"
331
- msgstr ", 同意します。"
332
-
333
- # @ secure_wp
334
- #: secure-wordpress.php:1017
335
- msgid "Get my Free Web Scan"
336
- msgstr "無料ウェブスキャンを取得する"
337
-
338
- # @ secure_wp
339
- #: secure-wordpress.php:1028
340
- msgid "Safe Seal"
341
- msgstr "安全シール"
342
-
343
- # @ secure_wp
344
- #: secure-wordpress.php:1058
345
- msgid "Color"
346
- msgstr "色"
347
-
348
- # @ secure_wp
349
- #: secure-wordpress.php:1062
350
- msgid "Green"
351
- msgstr "緑色"
352
-
353
- # @ secure_wp
354
- #: secure-wordpress.php:1063
355
- msgid "Blue"
356
- msgstr "青色"
357
-
358
- # @ secure_wp
359
- #: secure-wordpress.php:1064
360
- msgid "Red"
361
- msgstr "赤色"
362
-
363
- # @ secure_wp
364
- #: secure-wordpress.php:1065
365
- msgid "Brown"
366
- msgstr "茶色"
367
-
368
- # @ secure_wp
369
- #: secure-wordpress.php:1066
370
- msgid "Gray"
371
- msgstr "灰色"
372
-
373
- # @ secure_wp
374
- #: secure-wordpress.php:1075
375
- msgid "Text"
376
- msgstr "テキスト"
377
-
378
- # @ secure_wp
379
- #: secure-wordpress.php:1079
380
- msgid "Protected"
381
- msgstr "保護された"
382
-
383
- # @ secure_wp
384
- #: secure-wordpress.php:1080
385
- msgid "Secured"
386
- msgstr "安全"
387
-
388
- # @ secure_wp
389
- #: secure-wordpress.php:1081
390
- msgid "Scanned"
391
- msgstr "スキャン済"
392
-
393
- # @ secure_wp
394
- #: secure-wordpress.php:1082
395
- msgid "Protected by"
396
- msgstr "保護:"
397
-
398
- # @ secure_wp
399
- #: secure-wordpress.php:1088
400
- msgid "Orientation"
401
- msgstr "方向"
402
-
403
- # @ secure_wp
404
- #: secure-wordpress.php:1092
405
- msgid "Horizontal"
406
- msgstr "水平"
407
-
408
- # @ secure_wp
409
- #: secure-wordpress.php:1093
410
- msgid "Vertical"
411
- msgstr "垂直"
412
-
413
- # @ secure_wp
414
- #: secure-wordpress.php:1099
415
- msgid "Image border"
416
- msgstr "画像枠線"
417
-
418
- # @ secure_wp
419
- #: secure-wordpress.php:1107
420
- msgid "Language"
421
- msgstr "言語"
422
-
423
- # @ secure_wp
424
- #: secure-wordpress.php:1111
425
- msgid "English (US)"
426
- msgstr "English (US)"
427
-
428
- # @ secure_wp
429
- #: secure-wordpress.php:1112
430
- msgid "English (UK)"
431
- msgstr "English (UK)"
432
-
433
- # @ secure_wp
434
- #: secure-wordpress.php:1113
435
- msgid "Spanish"
436
- msgstr "Spanish"
437
-
438
- # @ secure_wp
439
- #: secure-wordpress.php:1114
440
- msgid "German"
441
- msgstr "German"
442
-
443
- # @ secure_wp
444
- #: secure-wordpress.php:1115
445
- msgid "Italian"
446
- msgstr "Italian"
447
-
448
- # @ secure_wp
449
- #: secure-wordpress.php:1116
450
- msgid "Japanese"
451
- msgstr "日本語"
452
-
453
- # @ secure_wp
454
- #: secure-wordpress.php:1117
455
- msgid "Chinese (Simplified)"
456
- msgstr "Chinese (Simplified)"
457
-
458
- # @ secure_wp
459
- #: secure-wordpress.php:1118
460
- msgid "Chinese (Traditional)"
461
- msgstr "Chinese (Traditional)"
462
-
463
- # @ secure_wp
464
- #: secure-wordpress.php:1127
465
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
466
- msgstr "あなたが生成したコードです。(htmlウィジェットとして)ウェブサイトに掲載し、プロテクトされていることを示してください。"
467
-
468
- # @ secure_wp
469
- #: secure-wordpress.php:1142
470
- msgid "Clear Options"
471
- msgstr "オプションを消去する"
472
-
473
- # @ secure_wp
474
- #: secure-wordpress.php:1145
475
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
476
- msgstr "このボタンをクリックすると、このプラグインの設定を削除します。Secure WordPress プラグインを停止すると、作成した全データを削除します。"
477
-
478
- # @ secure_wp
479
- #: secure-wordpress.php:1150
480
- msgid "Delete Options"
481
- msgstr "オプションを削除する"
482
-
483
- # @ secure_wp
484
- #. translators: plugin header field 'PluginURI'
485
- #: secure-wordpress.php:0
486
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
487
- msgstr "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
488
-
489
- # @ secure_wp
490
- #. translators: plugin header field 'Author'
491
- #: secure-wordpress.php:0
492
- msgid "jremillard"
493
- msgstr "jremillard"
494
-
495
- # @ secure_wp
496
- #. translators: plugin header field 'AuthorURI'
497
- #: secure-wordpress.php:0
498
- msgid "http://www.sitesecuritymonitor.com/"
499
- msgstr "http://www.sitesecuritymonitor.com/"
500
-
501
- # @ secure_wp
502
- #: secure-wordpress.php:1031
503
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
504
- msgstr "プラグインご利用ありがとうございます。ブログでスキャンを実行し、コピーペースト用の HTML を出力します。 このシールはスキャニングサービスをするわけではありません。WordPress セキュリティの基礎を行います。コミュニティおよび我々の経験からお勧めします。<br/>定期的な脆弱性およびマルウェアスキャニングサービスを希望される方は<a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">我々のページ</a>をごらんください。"
505
-
506
- # @ secure_wp
507
- #: secure-wordpress.php:1126
508
- msgid "Source"
509
- msgstr "ソース"
510
-
511
- # @ secure_wp
512
- #. translators: plugin header field 'Version'
513
- #: secure-wordpress.php:0
514
- msgid "1.0.5"
515
- msgstr "1.0.5"
516
-
517
- # @ secure_wp
518
- #: secure-wordpress.php:881
519
- msgid "WP Version on Scripts/Styles"
520
- msgstr "スクリプト/スタイルのバージョン"
521
-
522
- # @ secure_wp
523
- #: secure-wordpress.php:885
524
- msgid "Removes version of WordPress on the url form scripts and stylesheets only on frontend."
525
- msgstr "フロントエンドの url フォームスクリプト/スタイルシートの WordPress バージョンを削除します。"
526
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-nl_NL.mo DELETED
Binary file
languages/secure_wp-nl_NL.po DELETED
@@ -1,246 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress v0.8.2\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-06-22 12:29+0100\n"
6
- "PO-Revision-Date: 2010-03-24 18:51+0100\n"
7
- "Last-Translator: WordPressPluginGuide.com <info@wppg.me>\n"
8
- "Language-Team: WPwebshop.com <info@wppg.me>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-SourceCharset: utf-8\n"
14
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
15
- "X-Poedit-Basepath: ../\n"
16
- "X-Textdomain-Support: yes\n"
17
- "X-Poedit-Language: Dutch\n"
18
- "X-Poedit-Country: NETHERLANDS\n"
19
- "X-Poedit-SearchPath-0: .\n"
20
-
21
- #: secure-wordpress.php:337
22
- msgid "Settings"
23
- msgstr "Instellingen"
24
-
25
- # @ secure_wp
26
- #: secure-wordpress.php:366
27
- #: secure-wordpress.php:413
28
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
29
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentatie (Engels)</a>"
30
-
31
- # @ secure_wp
32
- #: secure-wordpress.php:389
33
- msgid "Options update."
34
- msgstr "Opties bijwerken."
35
-
36
- # @ secure_wp
37
- #: secure-wordpress.php:391
38
- msgid "All entries in the database was cleared. Now deactivate this plugin."
39
- msgstr "Alle vermeldingen in de database werden verwijderd. Deactiveer nu deze plugin."
40
-
41
- # @ secure_wp
42
- #: secure-wordpress.php:405
43
- #: secure-wordpress.php:416
44
- msgid "Secure WP"
45
- msgstr "Secure WP"
46
-
47
- # @ secure_wp
48
- #: secure-wordpress.php:412
49
- #: secure-wordpress.php:703
50
- msgid "Secure WordPress"
51
- msgstr "Secure WordPress"
52
-
53
- #: secure-wordpress.php:436
54
- msgid "Version"
55
- msgstr "Versie"
56
-
57
- # @ secure_wp
58
- #: secure-wordpress.php:436
59
- msgid "History"
60
- msgstr "Historie"
61
-
62
- #: secure-wordpress.php:436
63
- msgid "Author"
64
- msgstr "Auteur"
65
-
66
- # @ secure_wp
67
- #: secure-wordpress.php:629
68
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
69
- msgstr "Opties zijn niet bijgewerkt - je hebt geen rechten om dit te doen !"
70
-
71
- # @ secure_wp
72
- #: secure-wordpress.php:649
73
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
74
- msgstr "Vermeldingen werden niet verwijderd - je hebt geen rechten om dit te doen!"
75
-
76
- # @ secure_wp
77
- #: secure-wordpress.php:657
78
- msgid "Entries was not delleted - check the checkbox!"
79
- msgstr "Vermeldingen werden niet verwijderd - controleer het selectievakje!"
80
-
81
- # @ secure_wp
82
- #: secure-wordpress.php:677
83
- msgid "All entries in the database was cleared."
84
- msgstr "Alle vermeldingen in de database zijn verwijderd."
85
-
86
- # @ secure_wp
87
- #: secure-wordpress.php:681
88
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
89
- msgstr "Vermeldingen werden niet verwijderd - je hebt geen rechten om dit te doen!"
90
-
91
- #: secure-wordpress.php:708
92
- #: secure-wordpress.php:843
93
- #: secure-wordpress.php:863
94
- msgid "Click to toggle"
95
- msgstr "Klik om te wisselen"
96
-
97
- # @ secure_wp
98
- #: secure-wordpress.php:709
99
- msgid "Configuration"
100
- msgstr "Configuratie"
101
-
102
- # @ secure_wp
103
- #: secure-wordpress.php:719
104
- msgid "Error-Messages"
105
- msgstr "Foutmeldingen"
106
-
107
- # @ secure_wp
108
- #: secure-wordpress.php:729
109
- msgid "WordPress Version"
110
- msgstr "WordPress Versie"
111
-
112
- # @ secure_wp
113
- #: secure-wordpress.php:733
114
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
115
- msgstr "Verwijder de WordPress versie van alle pagina's, inclusief feed, niet van de admin interface"
116
-
117
- # @ secure_wp
118
- #: secure-wordpress.php:759
119
- msgid "Really Simple Discovery"
120
- msgstr "Really Simple Discovery"
121
-
122
- # @ secure_wp
123
- #: secure-wordpress.php:763
124
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
125
- msgstr "Verwijder de Really Simple Discovery link in <code>wp_head</code> van de front-end gebruikersomgeving"
126
-
127
- # @ secure_wp
128
- #: secure-wordpress.php:769
129
- msgid "Windows Live Writer"
130
- msgstr "Windows Live Writer"
131
-
132
- # @ secure_wp
133
- #: secure-wordpress.php:773
134
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
135
- msgstr "Verwijder de Windows Live Writer link in <code>wp_head</code> van de front-end gebruikersomgeving"
136
-
137
- # @ secure_wp
138
- #: secure-wordpress.php:779
139
- msgid "Core Update"
140
- msgstr "Kern Update"
141
-
142
- # @ secure_wp
143
- #: secure-wordpress.php:783
144
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
145
- msgstr "Verwijder de WordPress Kern update voor gebruikers die geen admin zijn. Laat alleen een boodschap zien over een nieuwe WordPress versie aan gebruikers met update rechten."
146
-
147
- # @ secure_wp
148
- #: secure-wordpress.php:789
149
- msgid "Plugin Update"
150
- msgstr "Plugin Update"
151
-
152
- # @ secure_wp
153
- #: secure-wordpress.php:793
154
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
155
- msgstr "Verwijder de plugin update voor gebruikers die geen admin zijn. Laat alleen een boodschap zien over een nieuwe versie van een plugin aan gebruikers met rechten om plugins te kunnen bewerken."
156
-
157
- # @ secure_wp
158
- #: secure-wordpress.php:800
159
- msgid "Theme Update"
160
- msgstr "Thema Update"
161
-
162
- # @ secure_wp
163
- #: secure-wordpress.php:804
164
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
165
- msgstr "Verwijder de thema update voor gebruikers die geen admin zijn. Laat alleen een boodschap zien over een nieuwe versie van een thema aan gebruikers met rechten om thema's te kunnen bewerken."
166
-
167
- # @ secure_wp
168
- #: secure-wordpress.php:811
169
- msgid "WP Scanner"
170
- msgstr "WP Scanner"
171
-
172
- # @ secure_wp
173
- #: secure-wordpress.php:815
174
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
175
- msgstr "WordPress scanner is een gratis online informatiebron die blog beheerders kunnen gebruiken om hun WordPress veiligheidsniveau te handhaven. Om wp-scanner te starten selecteer deze optie en voeg de code <code>&lt;!-- wpscanner --&gt;</code> toe aan je huidige WordPress template. Ga hierna naar <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> en scan je website."
176
-
177
- # @ secure_wp
178
- #: secure-wordpress.php:833
179
- msgid "Save Changes"
180
- msgstr "Bewaar Wijzigingen"
181
-
182
- # @ secure_wp
183
- #: secure-wordpress.php:844
184
- msgid "Clear Options"
185
- msgstr "Opties Verwijderen"
186
-
187
- # @ secure_wp
188
- #: secure-wordpress.php:847
189
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
190
- msgstr "Klik op deze knop om de instellingen van deze plugin te wissen. Deactiveren van de Secure WordPress plugin verwijderd alle data die is aangemaakt."
191
-
192
- # @ secure_wp
193
- #: secure-wordpress.php:852
194
- msgid "Delete Options"
195
- msgstr "Verwijder Opties"
196
-
197
- # @ secure_wp
198
- #: secure-wordpress.php:864
199
- msgid "About the plugin"
200
- msgstr "Over de plugin"
201
-
202
- # @ secure_wp
203
- #: secure-wordpress.php:877
204
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
205
- msgstr "Voor meer informatie: Bezoek de <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">homepage van de plugin</a> voor meer informatie of download de laatste versie van deze plugin."
206
-
207
- # @ secure_wp
208
- #: secure-wordpress.php:877
209
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
210
- msgstr "Wil je mij bedanken ? Bezoek mijn <a href=\"http://bueltge.de/wunschliste/\">verlanglijst</a>."
211
-
212
- # @ secure_wp
213
- #: secure-wordpress.php:753
214
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
215
- msgstr "creëert een <code>index.php</code> bestand in <code>/plugins/</code> en <code>/themes/</code> om te zorgen dat het je map inhoud niet laat zien"
216
-
217
- # @ secure_wp
218
- #: secure-wordpress.php:739
219
- msgid "WordPress Version in Backend"
220
- msgstr "WordPress versie in back-end gebruikersinterface"
221
-
222
- # @ secure_wp
223
- #: secure-wordpress.php:749
224
- msgid "index.php"
225
- msgstr "index.php"
226
-
227
- # @ secure_wp
228
- #: secure-wordpress.php:743
229
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
230
- msgstr "Verwijderd de WordPress versie in de admin interface voor gebruikers die geen admin zijn. Laat alleen de WordPress versie van je blog zien aan gebruikers met rechten om plugins te kunnen bewerken."
231
-
232
- # @ secure_wp
233
- #: secure-wordpress.php:723
234
- msgid "Deactivates tooltip and error message at login of WordPress"
235
- msgstr "Deactiveert de tekstballon en foutmelding bij het inloggen van WordPress"
236
-
237
- # @ secure_wp
238
- #: secure-wordpress.php:821
239
- msgid "Block bad queries"
240
- msgstr "Blokkeer verkeerde raadplegingen"
241
-
242
- # @ secure_wp
243
- #: secure-wordpress.php:825
244
- msgid "Protect WordPress against malicious URL requests, see more informations on the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
245
- msgstr "Bescherm WordPress tegen tegen kwaadaardige URL-aanvragen, lees meer informatie hierover in het <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >bericht van Jeff Starr</a> (Engels)"
246
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-pl_PL.mo DELETED
Binary file
languages/secure_wp-pl_PL.po DELETED
@@ -1,530 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: 2011-02-16 00:38+0100\n"
7
- "Last-Translator: RafalDesign <admin@rafaldesign.pl>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-SourceCharset: utf-8\n"
14
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
15
- "X-Poedit-Basepath: ../\n"
16
- "X-Textdomain-Support: yes\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #@ secure_wp
20
- #. translators: plugin header field 'Description'
21
- #: secure-wordpress.php:0
22
- msgid "Little basics for secure your WordPress-installation."
23
- msgstr "Podstawowe zabezpieczenie dla twojej witryny opartej na WordPress"
24
-
25
- #@ default
26
- #: secure-wordpress.php:370
27
- msgid "Settings"
28
- msgstr "Ustawienia"
29
-
30
- #@ secure_wp
31
- #: secure-wordpress.php:399
32
- #: secure-wordpress.php:446
33
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
34
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Dokumentacja</a>"
35
-
36
- #@ secure_wp
37
- #: secure-wordpress.php:422
38
- msgid "Options update."
39
- msgstr "Aktualizacja opcji."
40
-
41
- #@ secure_wp
42
- #: secure-wordpress.php:424
43
- msgid "All entries in the database was cleared. Now deactivate this plugin."
44
- msgstr "Wszystkie wpisy w bazie danych zostały usunięte. Możesz teraz deaktywować wtyczkę."
45
-
46
- #@ secure_wp
47
- #: secure-wordpress.php:438
48
- #: secure-wordpress.php:449
49
- msgid "Secure WP"
50
- msgstr "Secure WP"
51
-
52
- #@ secure_wp
53
- #. translators: plugin header field 'Name'
54
- #: secure-wordpress.php:0
55
- #: secure-wordpress.php:445
56
- #: secure-wordpress.php:773
57
- msgid "Secure WordPress"
58
- msgstr "Zabezpiecz WordPress"
59
-
60
- #@ default
61
- #: secure-wordpress.php:469
62
- msgid "Version"
63
- msgstr "Wersja"
64
-
65
- #@ secure_wp
66
- #: secure-wordpress.php:469
67
- msgid "History"
68
- msgstr "Historia"
69
-
70
- #@ default
71
- #: secure-wordpress.php:469
72
- msgid "Author"
73
- msgstr "Autor"
74
-
75
- #@ secure_wp
76
- #: secure-wordpress.php:698
77
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
78
- msgstr "Opcje nie zostały zaktualizowane. Nie masz wystarczających uprawnień ."
79
-
80
- #@ secure_wp
81
- #: secure-wordpress.php:718
82
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
83
- msgstr "Wpisy nie zostały usunięte. Nie masz wystarczających uprawnień ."
84
-
85
- #@ secure_wp
86
- #: secure-wordpress.php:726
87
- msgid "Entries were not deleted - check the checkbox!"
88
- msgstr "Wpisy nie zostały usunięte - zaznacz checkbox!"
89
-
90
- #@ secure_wp
91
- #: secure-wordpress.php:746
92
- msgid "All entries in the database were cleared."
93
- msgstr "Wszystkie wpisy w bazie danych zostały wyczyszczone."
94
-
95
- #@ secure_wp
96
- #: secure-wordpress.php:750
97
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
98
- msgstr "Wpisy nie zostały skasowane - upewnij się że checkbox jest zaznaczony, bądź też nie masz wystarczających uprawnień."
99
-
100
- #@ default
101
- #: secure-wordpress.php:778
102
- #: secure-wordpress.php:914
103
- #: secure-wordpress.php:1027
104
- #: secure-wordpress.php:1141
105
- msgid "Click to toggle"
106
- msgstr "Kliknij aby przełączyć"
107
-
108
- #@ secure_wp
109
- #: secure-wordpress.php:779
110
- msgid "Configuration"
111
- msgstr "Konfiguracja"
112
-
113
- #@ secure_wp
114
- #: secure-wordpress.php:789
115
- msgid "Error-Messages"
116
- msgstr "Komunikaty błędów"
117
-
118
- #@ secure_wp
119
- #: secure-wordpress.php:793
120
- msgid "Deactivates tooltip and error message at login of WordPress"
121
- msgstr "Deaktywuje podpowiedzi oraz komunikaty błędów podczas logowania do WordPress"
122
-
123
- #@ secure_wp
124
- #: secure-wordpress.php:799
125
- msgid "WordPress Version"
126
- msgstr "Wersja WordPress"
127
-
128
- #@ secure_wp
129
- #: secure-wordpress.php:803
130
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
131
- msgstr "Usuwa informację o wersji WordPressa, łącznie z 'feed'. Nie dotyczy administratorów."
132
-
133
- #@ secure_wp
134
- #: secure-wordpress.php:809
135
- msgid "WordPress Version in Backend"
136
- msgstr "Wersja WordPress na zapleczu"
137
-
138
- #@ secure_wp
139
- #: secure-wordpress.php:813
140
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
141
- msgstr "Usuwa informację o wersji WordPress w panelu administratora dla osób nie będących administratorami. Pokazuje wersję twojego blogu tylko użytkownikom mającym prawa do edycji wtyczek."
142
-
143
- #@ secure_wp
144
- #: secure-wordpress.php:819
145
- msgid "index.php"
146
- msgstr "index.php"
147
-
148
- #@ secure_wp
149
- #: secure-wordpress.php:823
150
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
151
- msgstr "Tworzy plik <code>index.php</code>w<code>/plugins/</code> i<code>/themes/</code> aby uniemożliwić listowanie folderów."
152
-
153
- #@ secure_wp
154
- #: secure-wordpress.php:829
155
- msgid "Really Simple Discovery"
156
- msgstr "Really Simple Discovery"
157
-
158
- #@ secure_wp
159
- #: secure-wordpress.php:833
160
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
161
- msgstr "Usuwa link do Really Simple Discovery w <code>wp_head</code> witryny"
162
-
163
- #@ secure_wp
164
- #: secure-wordpress.php:839
165
- msgid "Windows Live Writer"
166
- msgstr "Windows Live Writer"
167
-
168
- #@ secure_wp
169
- #: secure-wordpress.php:843
170
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
171
- msgstr "Usuwa link do Windows Lice Writer w <code>wp_head</code> witryny"
172
-
173
- #@ secure_wp
174
- #: secure-wordpress.php:849
175
- msgid "Core Update"
176
- msgstr "Aktualizacja WordPress"
177
-
178
- #@ secure_wp
179
- #: secure-wordpress.php:853
180
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
181
- msgstr "Usuwa możliwość aktualizacji WordPress dla osób posiadających uprawnienia niższe niż administrator. Pokazuje komunikat o nowej wersji WordPressa tylko osobom z uprawnieniami do aktualizacji. "
182
-
183
- #@ secure_wp
184
- #: secure-wordpress.php:859
185
- msgid "Plugin Update"
186
- msgstr "Aktualizacja wtyczki"
187
-
188
- #@ secure_wp
189
- #: secure-wordpress.php:863
190
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
191
- msgstr "Usuwa możliwość aktualizacji wtyczek dla osób posiadających uprawnienia niższe niż administrator. Pokazuje komunikat o nowej wersji wtyczke tylko osobom z uprawnieniami do aktualizacji. "
192
-
193
- #@ secure_wp
194
- #: secure-wordpress.php:870
195
- msgid "Theme Update"
196
- msgstr "Aktualizacja motywów"
197
-
198
- #@ secure_wp
199
- #: secure-wordpress.php:874
200
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
201
- msgstr "Usuwa możliwość aktualizacji motywów (themes) dla osób posiadających uprawnienia niższe niż administrator. Pokazuje komunikat o nowej wersji motywu tylko osobom z uprawnieniami do aktualizacji. "
202
-
203
- #@ secure_wp
204
- #: secure-wordpress.php:891
205
- msgid "Block bad queries"
206
- msgstr "Zablokuj błędne zapytania"
207
-
208
- #@ secure_wp
209
- #: secure-wordpress.php:895
210
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
211
- msgstr "Zabezpiecza WordPress przed szkodliwymi żądaniami URL, możesz dowiedzież się więcej <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" > czytając ten wpis Jeffa Starr</a>"
212
-
213
- #@ secure_wp
214
- #: secure-wordpress.php:903
215
- msgid "Save Changes"
216
- msgstr "Zapisz zmiany"
217
-
218
- #@ secure_wp
219
- #: secure-wordpress.php:915
220
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
221
- msgstr "Sprawdź za darmo swoją witrynę pod względem zabezpieczeń na www.sitesecuritymonitor.com"
222
-
223
- #@ secure_wp
224
- #: secure-wordpress.php:918
225
- msgid "Take us for a Test Drive - Free Scan"
226
- msgstr "Wypróbuj nas - DARMOWY SKAN WITRYNY"
227
-
228
- #@ secure_wp
229
- #: secure-wordpress.php:919
230
- msgid "We understand you may have questions:"
231
- msgstr "Rozumiemy że możesz mieć jakieś pytania:"
232
-
233
- #@ secure_wp
234
- #: secure-wordpress.php:920
235
- msgid "What does this do for me?"
236
- msgstr "Co będę z tego miał?"
237
-
238
- #@ secure_wp
239
- #: secure-wordpress.php:921
240
- msgid "Am I really safe? I need to be sure."
241
- msgstr "Czy na pewno witryna jest bezpieczna? Muszę być pewny."
242
-
243
- #@ secure_wp
244
- #: secure-wordpress.php:922
245
- msgid "Rest Assured, Site Security Monitor has you covered."
246
- msgstr "Możesz być pewny, Site Security Monitor gwarantuje bezpieczeństwo witryny."
247
-
248
- #@ secure_wp
249
- #: secure-wordpress.php:924
250
- msgid "FREE scan looks for malware"
251
- msgstr "DARMOWY skan szuka luk w zabezpieczeniach"
252
-
253
- #@ secure_wp
254
- #: secure-wordpress.php:925
255
- msgid "FREE report of website vulnerabilities found"
256
- msgstr "DARMOWY raport znalezionych luk w zabezpieczeniach witryny"
257
-
258
- #@ secure_wp
259
- #: secure-wordpress.php:926
260
- msgid "No setup, tuning and installation on your site - scan begins immediately"
261
- msgstr "Nie potrzeba ustawiać, instalować ani dopasowywać ustawień - skan zaczyna się natychmiast"
262
-
263
- #@ secure_wp
264
- #: secure-wordpress.php:928
265
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
266
- msgstr "Dostarczymy ci dokładny raport wszystkich luk w zabezpieczeniach - całkowicie za DARMO. Możesz użyć tego raportu w celu poprawienia zabezpieczeń, albo aby pokazać swemu szefowi że wszystko robisz jak trzeba chroniąc waszą witrynę, bądź też swoim klientom że strona którą dla nich zrobiłeś jest bezpieczna!."
267
-
268
- #@ secure_wp
269
- #: secure-wordpress.php:929
270
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
271
- msgstr "** BONUS: Będziesz mógł użyć loga \"Safe-Seal\" na swojej witrynie po skanowaniu - pokażesz światu że twoja witryna jest bezpieczna!."
272
-
273
- #@ secure_wp
274
- #: secure-wordpress.php:931
275
- msgid "The form"
276
- msgstr "Formularz"
277
-
278
- #@ secure_wp
279
- #: secure-wordpress.php:932
280
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
281
- msgstr "Użyj poniższego formularza, bądż też wypełnij formularz<a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">na naszej stronie</a>."
282
-
283
- #@ secure_wp
284
- #: secure-wordpress.php:967
285
- msgid "Full Name"
286
- msgstr "Imię i nazwisko"
287
-
288
- #@ secure_wp
289
- #: secure-wordpress.php:970
290
- #: secure-wordpress.php:978
291
- #: secure-wordpress.php:986
292
- #: secure-wordpress.php:994
293
- #: secure-wordpress.php:1010
294
- msgid "*required"
295
- msgstr "*wymagane"
296
-
297
- #@ secure_wp
298
- #: secure-wordpress.php:975
299
- msgid "eMail Adress"
300
- msgstr "adres e-mail"
301
-
302
- #@ secure_wp
303
- #: secure-wordpress.php:978
304
- msgid ", eMail Address must match domain name"
305
- msgstr ", adres e-mail musi być zgodny ze skanowaną witryną"
306
-
307
- #@ secure_wp
308
- #: secure-wordpress.php:983
309
- msgid "Website"
310
- msgstr "Strona internetowa"
311
-
312
- #@ secure_wp
313
- #: secure-wordpress.php:991
314
- msgid "Phone"
315
- msgstr "Telefon"
316
-
317
- #@ secure_wp
318
- #: secure-wordpress.php:999
319
- msgid "Yes, I need help!"
320
- msgstr "Tak, potrzebuję pomocy!"
321
-
322
- #@ secure_wp
323
- #: secure-wordpress.php:1002
324
- msgid "Call me"
325
- msgstr "Zadzwoń do mnie"
326
-
327
- #@ secure_wp
328
- #: secure-wordpress.php:1007
329
- msgid "Terms and Conditions"
330
- msgstr "Warunki umowy"
331
-
332
- #@ secure_wp
333
- #: secure-wordpress.php:1010
334
- msgid ", I accept"
335
- msgstr ", Akceptuję"
336
-
337
- #@ secure_wp
338
- #: secure-wordpress.php:1017
339
- msgid "Get my Free Web Scan"
340
- msgstr "Zacznij skanowanie mojej witryny"
341
-
342
- #@ secure_wp
343
- #: secure-wordpress.php:1028
344
- msgid "Safe Seal"
345
- msgstr "Safe Seal"
346
-
347
- #@ secure_wp
348
- #: secure-wordpress.php:1058
349
- msgid "Color"
350
- msgstr "Kolor"
351
-
352
- #@ secure_wp
353
- #: secure-wordpress.php:1062
354
- msgid "Green"
355
- msgstr "Zielony"
356
-
357
- #@ secure_wp
358
- #: secure-wordpress.php:1063
359
- msgid "Blue"
360
- msgstr "Niebieski"
361
-
362
- #@ secure_wp
363
- #: secure-wordpress.php:1064
364
- msgid "Red"
365
- msgstr "Czerwony"
366
-
367
- #@ secure_wp
368
- #: secure-wordpress.php:1065
369
- msgid "Brown"
370
- msgstr "Brązowy"
371
-
372
- #@ secure_wp
373
- #: secure-wordpress.php:1066
374
- msgid "Gray"
375
- msgstr "Szary"
376
-
377
- #@ secure_wp
378
- #: secure-wordpress.php:1075
379
- msgid "Text"
380
- msgstr "Tekst"
381
-
382
- #@ secure_wp
383
- #: secure-wordpress.php:1079
384
- msgid "Protected"
385
- msgstr "Chroniony"
386
-
387
- #@ secure_wp
388
- #: secure-wordpress.php:1080
389
- msgid "Secured"
390
- msgstr "Zabezpieczony"
391
-
392
- #@ secure_wp
393
- #: secure-wordpress.php:1081
394
- msgid "Scanned"
395
- msgstr "Skanowany"
396
-
397
- #@ secure_wp
398
- #: secure-wordpress.php:1082
399
- msgid "Protected by"
400
- msgstr "Chroniony przez"
401
-
402
- #@ secure_wp
403
- #: secure-wordpress.php:1088
404
- msgid "Orientation"
405
- msgstr "Orientacja"
406
-
407
- #@ secure_wp
408
- #: secure-wordpress.php:1092
409
- msgid "Horizontal"
410
- msgstr "Poziomo"
411
-
412
- #@ secure_wp
413
- #: secure-wordpress.php:1093
414
- msgid "Vertical"
415
- msgstr "Pionowo"
416
-
417
- #@ secure_wp
418
- #: secure-wordpress.php:1099
419
- msgid "Image border"
420
- msgstr "Obramowanie obrazka"
421
-
422
- #@ secure_wp
423
- #: secure-wordpress.php:1107
424
- msgid "Language"
425
- msgstr "Język"
426
-
427
- #@ secure_wp
428
- #: secure-wordpress.php:1111
429
- msgid "English (US)"
430
- msgstr "Angielski (US)"
431
-
432
- #@ secure_wp
433
- #: secure-wordpress.php:1112
434
- msgid "English (UK)"
435
- msgstr "Angielski (UK)"
436
-
437
- #@ secure_wp
438
- #: secure-wordpress.php:1113
439
- msgid "Spanish"
440
- msgstr "Hiszpański"
441
-
442
- #@ secure_wp
443
- #: secure-wordpress.php:1114
444
- msgid "German"
445
- msgstr "Niemiecki"
446
-
447
- #@ secure_wp
448
- #: secure-wordpress.php:1115
449
- msgid "Italian"
450
- msgstr "Włoski"
451
-
452
- #@ secure_wp
453
- #: secure-wordpress.php:1116
454
- msgid "Japanese"
455
- msgstr "Japoński"
456
-
457
- #@ secure_wp
458
- #: secure-wordpress.php:1117
459
- msgid "Chinese (Simplified)"
460
- msgstr "Chiński (uproszczony)"
461
-
462
- #@ secure_wp
463
- #: secure-wordpress.php:1118
464
- msgid "Chinese (Traditional)"
465
- msgstr "Chiński (Tradycyjny)"
466
-
467
- #@ secure_wp
468
- #: secure-wordpress.php:1127
469
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
470
- msgstr "Tutaj jest twój wygenerowany kod. Umieść go na stronie (jako widget HTML) aby pokazać że witryna jest chroniona."
471
-
472
- #@ secure_wp
473
- #: secure-wordpress.php:1142
474
- msgid "Clear Options"
475
- msgstr "Wyczyść opcje"
476
-
477
- #@ secure_wp
478
- #: secure-wordpress.php:1145
479
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
480
- msgstr "Naciśnij przycisk poniżej aby usunąć ustawienia wtyczki. Deaktywacja wtyczki Secure WP usunie wszystkie ustwawienia które stworzyłeś przy jej pomocy."
481
-
482
- #@ secure_wp
483
- #: secure-wordpress.php:1150
484
- msgid "Delete Options"
485
- msgstr "Usuń opcje"
486
-
487
- #@ secure_wp
488
- #. translators: plugin header field 'PluginURI'
489
- #: secure-wordpress.php:0
490
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
491
- msgstr "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
492
-
493
- #@ secure_wp
494
- #. translators: plugin header field 'Author'
495
- #: secure-wordpress.php:0
496
- msgid "jremillard"
497
- msgstr "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
498
-
499
- #@ secure_wp
500
- #. translators: plugin header field 'AuthorURI'
501
- #: secure-wordpress.php:0
502
- msgid "http://www.sitesecuritymonitor.com/"
503
- msgstr "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
504
-
505
- #@ secure_wp
506
- #: secure-wordpress.php:1031
507
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
508
- msgstr "Dziękujęmy za używanie naszej wtyczki! Możesz użyć kodu poniżej (HTML - dla łatwego kopiuj-wklej) i wkleić go na swoim blogu. Wtyczka ta co prawda nie oferuje skanowania twojej witryny w poszukiwaniu luk w zabezpieczeniach, ale dzięki niej możesz zabezpieczyć najbardziej podstawowe obszary WordPress. <br/>Jeżeli chcesz aby twoja domena była skanowana regularnie <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">odwiedź naszą stronę internetową...</a>"
509
-
510
- #@ secure_wp
511
- #: secure-wordpress.php:1126
512
- msgid "Source"
513
- msgstr "Źródło"
514
-
515
- #@ secure_wp
516
- #. translators: plugin header field 'Version'
517
- #: secure-wordpress.php:0
518
- msgid "1.0.5"
519
- msgstr ""
520
-
521
- #@ secure_wp
522
- #: secure-wordpress.php:881
523
- msgid "WP Version on Scripts/Styles"
524
- msgstr "Wersje skryptów/styli WP"
525
-
526
- #@ secure_wp
527
- #: secure-wordpress.php:885
528
- msgid "Removes version of WordPress on the url form scripts and stylesheets only on frontend."
529
- msgstr "Usuwa wersję WordPressa na URL ze skryptów i styli na witrynie (frontend)."
530
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-ro_RO.mo DELETED
Binary file
languages/secure_wp-ro_RO.po DELETED
@@ -1,532 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress 1.0.6\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: 2011-01-31 11:12+0200\n"
7
- "Last-Translator: \n"
8
- "Language-Team: http://www.jibo.ro <contact@jibo.ro>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-SourceCharset: utf-8\n"
14
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
15
- "X-Poedit-Basepath: ../\n"
16
- "X-Textdomain-Support: yes\n"
17
- "X-Poedit-Language: Romanian\n"
18
- "X-Poedit-Country: ROMANIA\n"
19
- "X-Poedit-SearchPath-0: .\n"
20
-
21
- #@ secure_wp
22
- #. translators: plugin header field 'Description'
23
- #: secure-wordpress.php:0
24
- msgid "Little basics for secure your WordPress-installation."
25
- msgstr "Generalitati pentru securizarea instalarii unui blog WordPress."
26
-
27
- #@ default
28
- #: secure-wordpress.php:370
29
- msgid "Settings"
30
- msgstr "Setari"
31
-
32
- #@ secure_wp
33
- #: secure-wordpress.php:399
34
- #: secure-wordpress.php:446
35
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
36
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentatie</a>"
37
-
38
- #@ secure_wp
39
- #: secure-wordpress.php:422
40
- msgid "Options update."
41
- msgstr "Actualizare optiuni."
42
-
43
- #@ secure_wp
44
- #: secure-wordpress.php:424
45
- msgid "All entries in the database was cleared. Now deactivate this plugin."
46
- msgstr "Toate intrarile din baza de date au fost sterse. Acum poti dezactiva acest plugin."
47
-
48
- #@ secure_wp
49
- #: secure-wordpress.php:438
50
- #: secure-wordpress.php:449
51
- msgid "Secure WP"
52
- msgstr "Securizeaza WordPress"
53
-
54
- #@ secure_wp
55
- #. translators: plugin header field 'Name'
56
- #: secure-wordpress.php:0
57
- #: secure-wordpress.php:445
58
- #: secure-wordpress.php:773
59
- msgid "Secure WordPress"
60
- msgstr "Securizeaza WordPress"
61
-
62
- #@ default
63
- #: secure-wordpress.php:469
64
- msgid "Version"
65
- msgstr "Versiune"
66
-
67
- #@ secure_wp
68
- #: secure-wordpress.php:469
69
- msgid "History"
70
- msgstr "Istoric"
71
-
72
- #@ default
73
- #: secure-wordpress.php:469
74
- msgid "Author"
75
- msgstr "Autor"
76
-
77
- #@ secure_wp
78
- #: secure-wordpress.php:698
79
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
80
- msgstr "Optiunile nu au fost actualizate - nu ai permisiune pentru a face acest lucru!"
81
-
82
- #@ secure_wp
83
- #: secure-wordpress.php:718
84
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
85
- msgstr "Intrarile nu au fost sterse - nu ai permisiune pentru a face acest lucru!"
86
-
87
- #@ secure_wp
88
- #: secure-wordpress.php:726
89
- msgid "Entries were not deleted - check the checkbox!"
90
- msgstr "Intrarile nu au fost sterse - bifeaza casuta!"
91
-
92
- #@ secure_wp
93
- #: secure-wordpress.php:746
94
- msgid "All entries in the database were cleared."
95
- msgstr "Toate intrarile din baza de date au fost sterse."
96
-
97
- #@ secure_wp
98
- #: secure-wordpress.php:750
99
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
100
- msgstr "Intrarile nu au fost sterse - bifeaza casuta sau nu ai permisiune pentru a face acest lucru!"
101
-
102
- #@ default
103
- #: secure-wordpress.php:778
104
- #: secure-wordpress.php:914
105
- #: secure-wordpress.php:1027
106
- #: secure-wordpress.php:1141
107
- msgid "Click to toggle"
108
- msgstr "Apasa pentru a muta"
109
-
110
- #@ secure_wp
111
- #: secure-wordpress.php:779
112
- msgid "Configuration"
113
- msgstr "Configuratie"
114
-
115
- #@ secure_wp
116
- #: secure-wordpress.php:789
117
- msgid "Error-Messages"
118
- msgstr "Mesaje de eroare"
119
-
120
- #@ secure_wp
121
- #: secure-wordpress.php:793
122
- msgid "Deactivates tooltip and error message at login of WordPress"
123
- msgstr "Dezactiveaza tooltip si erori la autentificarea in WordPress"
124
-
125
- #@ secure_wp
126
- #: secure-wordpress.php:799
127
- msgid "WordPress Version"
128
- msgstr "Versiune WordPress"
129
-
130
- #@ secure_wp
131
- #: secure-wordpress.php:803
132
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
133
- msgstr "Inlatura versinea WordPress in toate zonele, inclusiv in flux, mai putin in zona de administrare"
134
-
135
- #@ secure_wp
136
- #: secure-wordpress.php:809
137
- msgid "WordPress Version in Backend"
138
- msgstr "Versiunea WordPress din spate"
139
-
140
- #@ secure_wp
141
- #: secure-wordpress.php:813
142
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
143
- msgstr "Inlatura versiunea WordPress din zona de administrare pentru utilizatorii fara drepturi de administrator. Afiseaza versiunea WordPress a blog-ului tau doar pentru utilizatorii care au dreptul sa editeze plugin-uri."
144
-
145
- #@ secure_wp
146
- #: secure-wordpress.php:819
147
- msgid "index.php"
148
- msgstr "index.php"
149
-
150
- #@ secure_wp
151
- #: secure-wordpress.php:823
152
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
153
- msgstr "creaza un fisier <code>index.php</code> in <code>/plugins/</code> si <code>/themes/</code> pentru a preveni afisarea continutului directoarelor."
154
-
155
- #@ secure_wp
156
- #: secure-wordpress.php:829
157
- msgid "Really Simple Discovery"
158
- msgstr "Really Simple Discovery"
159
-
160
- #@ secure_wp
161
- #: secure-wordpress.php:833
162
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
163
- msgstr "Sterge link-ul Really Simple Discovery din <code>wp_head</code> al paginii principale"
164
-
165
- #@ secure_wp
166
- #: secure-wordpress.php:839
167
- msgid "Windows Live Writer"
168
- msgstr "Windows Live Writer"
169
-
170
- #@ secure_wp
171
- #: secure-wordpress.php:843
172
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
173
- msgstr "Sterge link-ul Windows Live Writer din <code>wp_head</code> al paginii principale"
174
-
175
- #@ secure_wp
176
- #: secure-wordpress.php:849
177
- msgid "Core Update"
178
- msgstr "Actualizare nucleu"
179
-
180
- #@ secure_wp
181
- #: secure-wordpress.php:853
182
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
183
- msgstr "Sterge mesajul de actualizare WordPress pentru utilizatorii fara drepturi de administrare. Afiseaza mesajul de actualizare a versiunii WordPress doar utilizatorilor care au acest drept."
184
-
185
- #@ secure_wp
186
- #: secure-wordpress.php:859
187
- msgid "Plugin Update"
188
- msgstr "Actualizare plugin"
189
-
190
- #@ secure_wp
191
- #: secure-wordpress.php:863
192
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
193
- msgstr "Sterge mesajul de actualizare plugin pentru utilizatorii fara drepturi de administrare. Afiseaza mesajul de actualizare a versiunii pluginului doar utilizatorilor care au acest drept."
194
-
195
- #@ secure_wp
196
- #: secure-wordpress.php:870
197
- msgid "Theme Update"
198
- msgstr "Actualizare tema"
199
-
200
- #@ secure_wp
201
- #: secure-wordpress.php:874
202
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
203
- msgstr "Inlatura actualizarea temei pentru utilizatorii fara drepturi de administrare. Afiseaza mesajul de actualizare a versiunii temei doar utilizatorilor care au acest drept."
204
-
205
- #@ secure_wp
206
- #: secure-wordpress.php:891
207
- msgid "Block bad queries"
208
- msgstr "Blocheaza interogarile negative"
209
-
210
- #@ secure_wp
211
- #: secure-wordpress.php:895
212
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
213
- msgstr "Protejeaza WordPress impotriva cererilor URL malitioase, vezi mai multe informatii in <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"citeste acest articol\" >articolul lui Jeff Starr</a>"
214
-
215
- #@ secure_wp
216
- #: secure-wordpress.php:903
217
- msgid "Save Changes"
218
- msgstr "Salveaza modificarile"
219
-
220
- #@ secure_wp
221
- #: secure-wordpress.php:915
222
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
223
- msgstr "Valideaza-ti site-ul cu scanarea gratuita de la www.sitesecuritymonitor.com"
224
-
225
- #@ secure_wp
226
- #: secure-wordpress.php:918
227
- msgid "Take us for a Test Drive - Free Scan"
228
- msgstr "Incearca un drive test - Scanare gratuita"
229
-
230
- #@ secure_wp
231
- #: secure-wordpress.php:919
232
- msgid "We understand you may have questions:"
233
- msgstr "Intelegem ca mai ai intrebari:"
234
-
235
- #@ secure_wp
236
- #: secure-wordpress.php:920
237
- msgid "What does this do for me?"
238
- msgstr "Cu ce ma ajuta asta?"
239
-
240
- #@ secure_wp
241
- #: secure-wordpress.php:921
242
- msgid "Am I really safe? I need to be sure."
243
- msgstr "Sunt cu adevarat in siguranta? Trebuie sa fiu sigur."
244
-
245
- #@ secure_wp
246
- #: secure-wordpress.php:922
247
- msgid "Rest Assured, Site Security Monitor has you covered."
248
- msgstr "Stai linistit, Site Security Monitor te protejeaza."
249
-
250
- #@ secure_wp
251
- #: secure-wordpress.php:924
252
- msgid "FREE scan looks for malware"
253
- msgstr "Scanarea gratuita cauta dupa vulnerabilitati"
254
-
255
- #@ secure_wp
256
- #: secure-wordpress.php:925
257
- msgid "FREE report of website vulnerabilities found"
258
- msgstr "Raport gratuit al vulnerabilitatilor gasite"
259
-
260
- #@ secure_wp
261
- #: secure-wordpress.php:926
262
- msgid "No setup, tuning and installation on your site - scan begins immediately"
263
- msgstr "Fara instalare sau modificare a site-ului tau - scanarea incepe imediat"
264
-
265
- #@ secure_wp
266
- #: secure-wordpress.php:928
267
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
268
- msgstr "Iti vom trimite un raport detaliat cu privire la vulnerabilitatile site-ului - absolut gratuit. Esti liber sa folosesti acest raport pentru a-ti astupa gaurile, sa dovedesti sefilor ca site-ul este sigur, sau sa arati clientilor ca site-ul pe care il construiesti este securizat!"
269
-
270
- #@ secure_wp
271
- #: secure-wordpress.php:929
272
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
273
- msgstr "** Bonus: Vei putea sa folosesti Site Security Monitor \"Safe-Seal\" pe site-ul tau dupa scanare - acesta arata lumii ca ai un site securizat!"
274
-
275
- #@ secure_wp
276
- #: secure-wordpress.php:931
277
- msgid "The form"
278
- msgstr "Formularul"
279
-
280
- #@ secure_wp
281
- #: secure-wordpress.php:932
282
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
283
- msgstr "Foloseste formularul urmator sau foloseste-l pe cel de pe <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">site-ul nostru</a>."
284
-
285
- #@ secure_wp
286
- #: secure-wordpress.php:967
287
- msgid "Full Name"
288
- msgstr "Nume intreg"
289
-
290
- #@ secure_wp
291
- #: secure-wordpress.php:970
292
- #: secure-wordpress.php:978
293
- #: secure-wordpress.php:986
294
- #: secure-wordpress.php:994
295
- #: secure-wordpress.php:1010
296
- msgid "*required"
297
- msgstr "*Obligatoriu"
298
-
299
- #@ secure_wp
300
- #: secure-wordpress.php:975
301
- msgid "eMail Adress"
302
- msgstr "Adresa email"
303
-
304
- #@ secure_wp
305
- #: secure-wordpress.php:978
306
- msgid ", eMail Address must match domain name"
307
- msgstr ", Adresa de email trebuie sa fie in acelasi domeniu cu site-ul"
308
-
309
- #@ secure_wp
310
- #: secure-wordpress.php:983
311
- msgid "Website"
312
- msgstr "Website"
313
-
314
- #@ secure_wp
315
- #: secure-wordpress.php:991
316
- msgid "Phone"
317
- msgstr "Telefon"
318
-
319
- #@ secure_wp
320
- #: secure-wordpress.php:999
321
- msgid "Yes, I need help!"
322
- msgstr "DA, am nevoie de ajutor!"
323
-
324
- #@ secure_wp
325
- #: secure-wordpress.php:1002
326
- msgid "Call me"
327
- msgstr "Suna-ma"
328
-
329
- #@ secure_wp
330
- #: secure-wordpress.php:1007
331
- msgid "Terms and Conditions"
332
- msgstr "Termeni si conditii"
333
-
334
- #@ secure_wp
335
- #: secure-wordpress.php:1010
336
- msgid ", I accept"
337
- msgstr ", Accept"
338
-
339
- #@ secure_wp
340
- #: secure-wordpress.php:1017
341
- msgid "Get my Free Web Scan"
342
- msgstr "Incearca Scanarea Web Gratuita"
343
-
344
- #@ secure_wp
345
- #: secure-wordpress.php:1028
346
- msgid "Safe Seal"
347
- msgstr "Safe Seal"
348
-
349
- #@ secure_wp
350
- #: secure-wordpress.php:1058
351
- msgid "Color"
352
- msgstr "Culoare"
353
-
354
- #@ secure_wp
355
- #: secure-wordpress.php:1062
356
- msgid "Green"
357
- msgstr "Verde"
358
-
359
- #@ secure_wp
360
- #: secure-wordpress.php:1063
361
- msgid "Blue"
362
- msgstr "Albastru"
363
-
364
- #@ secure_wp
365
- #: secure-wordpress.php:1064
366
- msgid "Red"
367
- msgstr "Rosu"
368
-
369
- #@ secure_wp
370
- #: secure-wordpress.php:1065
371
- msgid "Brown"
372
- msgstr "Maro"
373
-
374
- #@ secure_wp
375
- #: secure-wordpress.php:1066
376
- msgid "Gray"
377
- msgstr "Gri"
378
-
379
- #@ secure_wp
380
- #: secure-wordpress.php:1075
381
- msgid "Text"
382
- msgstr "Text"
383
-
384
- #@ secure_wp
385
- #: secure-wordpress.php:1079
386
- msgid "Protected"
387
- msgstr "Protejat"
388
-
389
- #@ secure_wp
390
- #: secure-wordpress.php:1080
391
- msgid "Secured"
392
- msgstr "Securizat"
393
-
394
- #@ secure_wp
395
- #: secure-wordpress.php:1081
396
- msgid "Scanned"
397
- msgstr "Scanat"
398
-
399
- #@ secure_wp
400
- #: secure-wordpress.php:1082
401
- msgid "Protected by"
402
- msgstr "Protejat de"
403
-
404
- #@ secure_wp
405
- #: secure-wordpress.php:1088
406
- msgid "Orientation"
407
- msgstr "Orientare"
408
-
409
- #@ secure_wp
410
- #: secure-wordpress.php:1092
411
- msgid "Horizontal"
412
- msgstr "Orizontal"
413
-
414
- #@ secure_wp
415
- #: secure-wordpress.php:1093
416
- msgid "Vertical"
417
- msgstr "Vertical"
418
-
419
- #@ secure_wp
420
- #: secure-wordpress.php:1099
421
- msgid "Image border"
422
- msgstr "Chenar imagine"
423
-
424
- #@ secure_wp
425
- #: secure-wordpress.php:1107
426
- msgid "Language"
427
- msgstr "Limba"
428
-
429
- #@ secure_wp
430
- #: secure-wordpress.php:1111
431
- msgid "English (US)"
432
- msgstr "Engleza (US)"
433
-
434
- #@ secure_wp
435
- #: secure-wordpress.php:1112
436
- msgid "English (UK)"
437
- msgstr "Engleza (UK)"
438
-
439
- #@ secure_wp
440
- #: secure-wordpress.php:1113
441
- msgid "Spanish"
442
- msgstr "Spaniola"
443
-
444
- #@ secure_wp
445
- #: secure-wordpress.php:1114
446
- msgid "German"
447
- msgstr "Germana"
448
-
449
- #@ secure_wp
450
- #: secure-wordpress.php:1115
451
- msgid "Italian"
452
- msgstr "Italiana"
453
-
454
- #@ secure_wp
455
- #: secure-wordpress.php:1116
456
- msgid "Japanese"
457
- msgstr "Japoneza"
458
-
459
- #@ secure_wp
460
- #: secure-wordpress.php:1117
461
- msgid "Chinese (Simplified)"
462
- msgstr "Chineza (Simpla)"
463
-
464
- #@ secure_wp
465
- #: secure-wordpress.php:1118
466
- msgid "Chinese (Traditional)"
467
- msgstr "Chineza (Traditionala)"
468
-
469
- #@ secure_wp
470
- #: secure-wordpress.php:1127
471
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
472
- msgstr "Acesta este codul generat pentru tine. Plaseaza-l pe site-ul tau (ca widget html) pentru a demonstra ca esti protejat."
473
-
474
- #@ secure_wp
475
- #: secure-wordpress.php:1142
476
- msgid "Clear Options"
477
- msgstr "Curata optiunile"
478
-
479
- #@ secure_wp
480
- #: secure-wordpress.php:1145
481
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
482
- msgstr "Apasa acest buton pentru a sterge optiunile acestui plugin. Dezactivand plugin-ul Secure Wordpress, sterge orice date care au fost create de acesta."
483
-
484
- #@ secure_wp
485
- #: secure-wordpress.php:1150
486
- msgid "Delete Options"
487
- msgstr "Sterge optiunile"
488
-
489
- #@ secure_wp
490
- #. translators: plugin header field 'PluginURI'
491
- #: secure-wordpress.php:0
492
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
493
- msgstr "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
494
-
495
- #@ secure_wp
496
- #. translators: plugin header field 'Author'
497
- #: secure-wordpress.php:0
498
- msgid "jremillard"
499
- msgstr "jremillard"
500
-
501
- #@ secure_wp
502
- #. translators: plugin header field 'AuthorURI'
503
- #: secure-wordpress.php:0
504
- msgid "http://www.sitesecuritymonitor.com/"
505
- msgstr "http://www.sitesecuritymonitor.com/"
506
-
507
- #@ secure_wp
508
- #: secure-wordpress.php:1031
509
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
510
- msgstr "Iti multumim pentru ca folosesti plugin-ul nostru! Esti liber sa folosesti scanarea de mai jos (genereaza format HTML pentru a putea copia sau lipi mai usor) in blog-ul tau. Acest sigiliu nu-ti ofera servicii de scanare, pur si simplu iti ofera securitatea de baza a blog-ului WordPress - recomandata de comunitate si din propria experienta a clientilor nostri.<br/>Daca doriti servicii complete de scanare a vulnerabilitatilor WordPress, viziteaza <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\"> pagina noastra principala aici ...</a>"
511
-
512
- #@ secure_wp
513
- #: secure-wordpress.php:1126
514
- msgid "Source"
515
- msgstr "Sursa"
516
-
517
- #@ secure_wp
518
- #. translators: plugin header field 'Version'
519
- #: secure-wordpress.php:0
520
- msgid "1.0.5"
521
- msgstr "1.0.5"
522
-
523
- #@ secure_wp
524
- #: secure-wordpress.php:881
525
- msgid "WP Version on Scripts/Styles"
526
- msgstr "Versiune WordPress in scripturi/stiluri"
527
-
528
- #@ secure_wp
529
- #: secure-wordpress.php:885
530
- msgid "Removes version of WordPress on the url form scripts and stylesheets only on frontend."
531
- msgstr "Sterge versiunea Wordpress din adresele URL ale scripturilor js si stilurilor css doar de pe prima pagina."
532
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-ru_RU.mo DELETED
Binary file
languages/secure_wp-ru_RU.po DELETED
@@ -1,237 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-06-22 12:29+0100\n"
6
- "PO-Revision-Date: 2009-10-27 15:57+0300\n"
7
- "Last-Translator: Dmitriy Donchenko <dmitriy.donchenko@gmail.com>\n"
8
- "Language-Team: wpp.pp.ua <wordpress.ua@gmail.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: Ukrainian\n"
14
- "X-Poedit-Country: UKRAINE\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
17
- "X-Poedit-Basepath: ../\n"
18
- "X-Poedit-Bookmarks: \n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Textdomain-Support: yes"
21
-
22
- #: secure-wordpress.php:330
23
- msgid "Settings"
24
- msgstr "Настройки"
25
-
26
- #: secure-wordpress.php:359
27
- #: secure-wordpress.php:402
28
- #@ secure_wp
29
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
30
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Документация</a>"
31
-
32
- #: secure-wordpress.php:382
33
- #@ secure_wp
34
- msgid "Options update."
35
- msgstr "Настройки обновлены"
36
-
37
- #: secure-wordpress.php:384
38
- #@ secure_wp
39
- msgid "All entries in the database was cleared. Now deactivate this plugin."
40
- msgstr "Все записи из базы данных удалены. Теперь отключите плагин."
41
-
42
- #: secure-wordpress.php:398
43
- #: secure-wordpress.php:405
44
- #@ secure_wp
45
- msgid "Secure WP"
46
- msgstr "Безопасный WP"
47
-
48
- #: secure-wordpress.php:401
49
- #: secure-wordpress.php:641
50
- #@ secure_wp
51
- msgid "Secure WordPress"
52
- msgstr "Безопасный WP"
53
-
54
- #: secure-wordpress.php:425
55
- msgid "Version"
56
- msgstr "Версия"
57
-
58
- #: secure-wordpress.php:425
59
- #@ secure_wp
60
- msgid "History"
61
- msgstr "История"
62
-
63
- #: secure-wordpress.php:425
64
- msgid "Author"
65
- msgstr "Автор"
66
-
67
- #: secure-wordpress.php:568
68
- #@ secure_wp
69
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
70
- msgstr "Настройки не сохранены, у вас нет доступа для этого!"
71
-
72
- #: secure-wordpress.php:588
73
- #@ secure_wp
74
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
75
- msgstr "Настройки не удалены - у вас нет доступа для этого."
76
-
77
- #: secure-wordpress.php:596
78
- #@ secure_wp
79
- msgid "Entries was not delleted - check the checkbox!"
80
- msgstr "Настройки не удалены - проверьте галочку!"
81
-
82
- #: secure-wordpress.php:616
83
- #@ secure_wp
84
- msgid "All entries in the database was cleared."
85
- msgstr "Все настройки в базе данных удалены."
86
-
87
- #: secure-wordpress.php:620
88
- #@ secure_wp
89
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
90
- msgstr "Настройки не удалены - проверьте галочку или у вас нет привелегий для этого"
91
-
92
- #: secure-wordpress.php:646
93
- #: secure-wordpress.php:771
94
- #: secure-wordpress.php:791
95
- msgid "Click to toggle"
96
- msgstr "Нажмите для переключения"
97
-
98
- #: secure-wordpress.php:647
99
- #@ secure_wp
100
- msgid "Configuration"
101
- msgstr "Настройки"
102
-
103
- #: secure-wordpress.php:657
104
- #@ secure_wp
105
- msgid "Error-Messages"
106
- msgstr "Сообщения о ошибках"
107
-
108
- #: secure-wordpress.php:661
109
- #@ secure_wp
110
- msgid "deactivates tooltip and error message at login of WordPress"
111
- msgstr "отключает подсказки и сообщения о ошибках при входе в Wordpress"
112
-
113
- #: secure-wordpress.php:667
114
- #@ secure_wp
115
- msgid "WordPress Version"
116
- msgstr "Версия Wordpress"
117
-
118
- #: secure-wordpress.php:671
119
- #@ secure_wp
120
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
121
- msgstr "Скрывает версию Wordpress везде, кроме панели администрирования"
122
-
123
- #: secure-wordpress.php:697
124
- #@ secure_wp
125
- msgid "Really Simple Discovery"
126
- msgstr "Really Simple Discovery"
127
-
128
- #: secure-wordpress.php:701
129
- #@ secure_wp
130
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
131
- msgstr "Скрыть ссылку RSD ссылку со страниц блога"
132
-
133
- #: secure-wordpress.php:707
134
- #@ secure_wp
135
- msgid "Windows Live Writer"
136
- msgstr "Windows Live Writer"
137
-
138
- #: secure-wordpress.php:711
139
- #@ secure_wp
140
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
141
- msgstr "Скрыть Windows Live Writer ссылку со страниц блога"
142
-
143
- #: secure-wordpress.php:717
144
- #@ secure_wp
145
- msgid "Core Update"
146
- msgstr "Обновление ядра"
147
-
148
- #: secure-wordpress.php:721
149
- #@ secure_wp
150
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
151
- msgstr "Скрывает сообщение о новой версии Wordpress, от пользователей которые не имеют прав администратора в блоге."
152
-
153
- #: secure-wordpress.php:727
154
- #@ secure_wp
155
- msgid "Plugin Update"
156
- msgstr "Обновление плагинов"
157
-
158
- #: secure-wordpress.php:731
159
- #@ secure_wp
160
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
161
- msgstr "Скрывает сообщение о обновлении плагинов, от пользователей которые не имеют прав администратора в блоге."
162
-
163
- #: secure-wordpress.php:738
164
- #@ secure_wp
165
- msgid "Theme Update"
166
- msgstr "Обновление шаблонов"
167
-
168
- #: secure-wordpress.php:742
169
- #@ secure_wp
170
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
171
- msgstr "Скрывает сообщение о доступном обновлении шаблонов, от пользователей которые не имеют прав администратора блога."
172
-
173
- #: secure-wordpress.php:749
174
- #@ secure_wp
175
- msgid "WP Scanner"
176
- msgstr "Сканер WP"
177
-
178
- #: secure-wordpress.php:753
179
- #@ secure_wp
180
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
181
- msgstr "WordPress scanner бесплатный ресурс для администраторов блогов, который помогает повысить уровень безопасности блога. Для запуска wp-scanner поставьте галочку и добавьте <code>&lt;!-- wpscanner --&gt;</code> в шаблон блога. После этого зайдите на сайт <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> и просканируйте сайт."
182
-
183
- #: secure-wordpress.php:761
184
- #@ secure_wp
185
- msgid "Save Changes"
186
- msgstr "Сохранить изменения"
187
-
188
- #: secure-wordpress.php:772
189
- #@ secure_wp
190
- msgid "Clear Options"
191
- msgstr "Очистить настройки"
192
-
193
- #: secure-wordpress.php:775
194
- #@ secure_wp
195
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
196
- msgstr "Нажмите на кнопку для удаления настроек этого плагина. Отключение плагина Secure WordPress удалит все данные которые были созданы плагином."
197
-
198
- #: secure-wordpress.php:780
199
- #@ secure_wp
200
- msgid "Delete Options"
201
- msgstr "Удалить настройки"
202
-
203
- #: secure-wordpress.php:792
204
- #@ secure_wp
205
- msgid "About the plugin"
206
- msgstr "О плагине"
207
-
208
- #: secure-wordpress.php:805
209
- #@ secure_wp
210
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
211
- msgstr "Полезная информация: Посетите <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">страницу плагина</a> для информации о плагине или для получения обновления плагина. Перевод на русский язык - <a href=\"http://blogproblog.com\">Дмитрий Донченко</a>. "
212
-
213
- #: secure-wordpress.php:805
214
- #@ secure_wp
215
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
216
- msgstr "Хотите поблагодарить? Посмотрите мой <href=\"http://bueltge.de/wunschliste/\">список подарков</a>."
217
-
218
- #: secure-wordpress.php:691
219
- #@ secure_wp
220
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
221
- msgstr "создает <code>index.php</code> файл в <code>/plugins/</code> и <code>/themes/</code>, чтобы скрыть файлы в папках."
222
-
223
- #: secure-wordpress.php:677
224
- #@ secure_wp
225
- msgid "WordPress Version in Backend"
226
- msgstr ""
227
-
228
- #: secure-wordpress.php:687
229
- #@ secure_wp
230
- msgid "index.php"
231
- msgstr ""
232
-
233
- #: secure-wordpress.php:681
234
- #@ secure_wp
235
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
236
- msgstr ""
237
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-tr_TR.mo DELETED
Binary file
languages/secure_wp-tr_TR.po DELETED
@@ -1,530 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: 2011-07-30 23:40+0200\n"
7
- "Last-Translator: \n"
8
- "Language-Team: Nightmare17 <kdrcskn@windowslive.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-SourceCharset: utf-8\n"
14
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
15
- "X-Poedit-Basepath: ../\n"
16
- "X-Textdomain-Support: yes\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- # @ secure_wp
20
- #. translators: plugin header field 'Description'
21
- #: secure-wordpress.php:0
22
- msgid "Little basics for secure your WordPress-installation."
23
- msgstr "Wordpress kurullumu hakkında basit tavsiyeler."
24
-
25
- # @ default
26
- #: secure-wordpress.php:370
27
- msgid "Settings"
28
- msgstr "Ayarlar"
29
-
30
- # @ secure_wp
31
- #: secure-wordpress.php:399
32
- #: secure-wordpress.php:446
33
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
34
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Dökümanlar</a>"
35
-
36
- # @ secure_wp
37
- #: secure-wordpress.php:422
38
- msgid "Options update."
39
- msgstr "Ayarlar güncellendi"
40
-
41
- # @ secure_wp
42
- #: secure-wordpress.php:424
43
- msgid "All entries in the database was cleared. Now deactivate this plugin."
44
- msgstr "Eklentiye ait tüm veriler temizlendi. Şimdi eklentiyi pasifleştirebilirsiniz."
45
-
46
- # @ secure_wp
47
- #: secure-wordpress.php:438
48
- #: secure-wordpress.php:449
49
- msgid "Secure WP"
50
- msgstr "Güvenli WP"
51
-
52
- # @ secure_wp
53
- #. translators: plugin header field 'Name'
54
- #: secure-wordpress.php:0
55
- #: secure-wordpress.php:445
56
- #: secure-wordpress.php:773
57
- msgid "Secure WordPress"
58
- msgstr "Güvenli WordPress"
59
-
60
- # @ default
61
- #: secure-wordpress.php:469
62
- msgid "Version"
63
- msgstr "Sürüm"
64
-
65
- # @ secure_wp
66
- #: secure-wordpress.php:469
67
- msgid "History"
68
- msgstr "Geçmiş"
69
-
70
- # @ default
71
- #: secure-wordpress.php:469
72
- msgid "Author"
73
- msgstr "Yazar"
74
-
75
- # @ secure_wp
76
- #: secure-wordpress.php:698
77
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
78
- msgstr "Ayarlar ggüncelleştirilemedi - bunu yapmak için yetkiniz yok!"
79
-
80
- # @ secure_wp
81
- #: secure-wordpress.php:718
82
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
83
- msgstr "Veriler silinmedi - bunu yapmak için yetkiniz yok!"
84
-
85
- # @ secure_wp
86
- #: secure-wordpress.php:726
87
- msgid "Entries were not deleted - check the checkbox!"
88
- msgstr "Veriler silinmedi - inceleme kutusunu inceleyin!"
89
-
90
- # @ secure_wp
91
- #: secure-wordpress.php:746
92
- msgid "All entries in the database were cleared."
93
- msgstr "Veritabanındaki tüm girdiler temizlendi."
94
-
95
- # @ secure_wp
96
- #: secure-wordpress.php:750
97
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
98
- msgstr "Girdiler temizlenmedi - inceleme kutusunu inceleyin veya bunu yapmak için yetkiniz yok!"
99
-
100
- # @ default
101
- #: secure-wordpress.php:778
102
- #: secure-wordpress.php:914
103
- #: secure-wordpress.php:1027
104
- #: secure-wordpress.php:1141
105
- msgid "Click to toggle"
106
- msgstr "Geçiş için tıklayın"
107
-
108
- # @ secure_wp
109
- #: secure-wordpress.php:779
110
- msgid "Configuration"
111
- msgstr "Yapılalndırma"
112
-
113
- # @ secure_wp
114
- #: secure-wordpress.php:789
115
- msgid "Error-Messages"
116
- msgstr "Hata-Mesajları"
117
-
118
- # @ secure_wp
119
- #: secure-wordpress.php:793
120
- msgid "Deactivates tooltip and error message at login of WordPress"
121
- msgstr "Wordpress giriş ekranındaki hata mesajını pasif hale getirir"
122
-
123
- # @ secure_wp
124
- #: secure-wordpress.php:799
125
- msgid "WordPress Version"
126
- msgstr "WordPress Sürümü"
127
-
128
- # @ secure_wp
129
- #: secure-wordpress.php:803
130
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
131
- msgstr "Wordpress sürüm bilgilerini beslemeler de dahil olmak üzere her yerden siler, yöneticiler için değil"
132
-
133
- # @ secure_wp
134
- #: secure-wordpress.php:809
135
- msgid "WordPress Version in Backend"
136
- msgstr "Yönetim Panelinde WordPress Sürümü"
137
-
138
- # @ secure_wp
139
- #: secure-wordpress.php:813
140
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
141
- msgstr "önetici panelindeki WordPress sürüm bilgilerini yönetici olmayanlar için gizler. WordPress sürüm bilgilerini sadece eklentileri yönetme izni olan kulanıcılar görebilir."
142
-
143
- # @ secure_wp
144
- #: secure-wordpress.php:819
145
- msgid "index.php"
146
- msgstr "index.php"
147
-
148
- # @ secure_wp
149
- #: secure-wordpress.php:823
150
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
151
- msgstr "Dizin listelemeyi engellemek için <code>/plugins/</code> ve <code>/themes/</code> dizinlerinde <code>index.php</code> dosyası oluşturur"
152
-
153
- # @ secure_wp
154
- #: secure-wordpress.php:829
155
- msgid "Really Simple Discovery"
156
- msgstr "Really Simple Discovery"
157
-
158
- # @ secure_wp
159
- #: secure-wordpress.php:833
160
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
161
- msgstr "Really Simple Discovery bağlantısını <code>wp_head</code> böümünden kaldırır"
162
-
163
- # @ secure_wp
164
- #: secure-wordpress.php:839
165
- msgid "Windows Live Writer"
166
- msgstr "Windows Live Yazar"
167
-
168
- # @ secure_wp
169
- #: secure-wordpress.php:843
170
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
171
- msgstr "Windows Live Writer bağlantısını <code>wp_head</code> bölümünden kaldırır"
172
-
173
- # @ secure_wp
174
- #: secure-wordpress.php:849
175
- msgid "Core Update"
176
- msgstr "Çekirdek Güncelleme"
177
-
178
- # @ secure_wp
179
- #: secure-wordpress.php:853
180
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
181
- msgstr "WordPress çekirdek güncellemesini yönetici yetkisi olmayanlar için kaldırır. Uyarıyı sadece gerekli yetkisi olan kulanıcılar görebilir."
182
-
183
- # @ secure_wp
184
- #: secure-wordpress.php:859
185
- msgid "Plugin Update"
186
- msgstr "Eklenti Güncelleme"
187
-
188
- # @ secure_wp
189
- #: secure-wordpress.php:863
190
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
191
- msgstr "Eklenti güncellemesini yönetici yetkisi olmayanlar için kaldırır. Eklentinin yeni versiyonu olduğu uyarısını sadece eklenti düzenleme yetkisi olan kullanıcılar görebilir"
192
-
193
- # @ secure_wp
194
- #: secure-wordpress.php:870
195
- msgid "Theme Update"
196
- msgstr "Tema Güncelleme"
197
-
198
- # @ secure_wp
199
- #: secure-wordpress.php:874
200
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
201
- msgstr "Tema güncellemesini yönetici yetkisi olmayanlar için kaldırır. Temanın yeni versiyonun olduğu uyarısını sadece tema düzenleme yetkisi olan kullanıcılar görebilir"
202
-
203
- # @ secure_wp
204
- #: secure-wordpress.php:891
205
- msgid "Block bad queries"
206
- msgstr "Kötü kodları engelle"
207
-
208
- # @ secure_wp
209
- #: secure-wordpress.php:895
210
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
211
- msgstr "WordPress sitenizi zararlı adres isteklerine karşı koruyun daha fazla bilgi için <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"bu yazıyı oku\" >Jeff Starr'ın yazısını okuyun</a>"
212
-
213
- # @ secure_wp
214
- #: secure-wordpress.php:903
215
- msgid "Save Changes"
216
- msgstr "Değişiklikleri Kaydet"
217
-
218
- # @ secure_wp
219
- #: secure-wordpress.php:915
220
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
221
- msgstr "Sitenizi www.sitesecuritymonitor.com sitesinden zararlı taraması yaparak onaylatın"
222
-
223
- # @ secure_wp
224
- #: secure-wordpress.php:918
225
- msgid "Take us for a Test Drive - Free Scan"
226
- msgstr "Test Sürüşüne çıkın - Bedava Tarama"
227
-
228
- # @ secure_wp
229
- #: secure-wordpress.php:919
230
- msgid "We understand you may have questions:"
231
- msgstr "Sorularınız olabileceğini anlıyoruz:"
232
-
233
- # @ secure_wp
234
- #: secure-wordpress.php:920
235
- msgid "What does this do for me?"
236
- msgstr "Bu benim için ne yapar?"
237
-
238
- # @ secure_wp
239
- #: secure-wordpress.php:921
240
- msgid "Am I really safe? I need to be sure."
241
- msgstr "Gerçekten güvende miyim? Emin olmam gerekiyor."
242
-
243
- # @ secure_wp
244
- #: secure-wordpress.php:922
245
- msgid "Rest Assured, Site Security Monitor has you covered."
246
- msgstr "Arkanıza yaslanın, Site Security Monitoor sizi koruyor."
247
-
248
- # @ secure_wp
249
- #: secure-wordpress.php:924
250
- msgid "FREE scan looks for malware"
251
- msgstr "BEDAVA tarama zararlı yazılım arıyor"
252
-
253
- # @ secure_wp
254
- #: secure-wordpress.php:925
255
- msgid "FREE report of website vulnerabilities found"
256
- msgstr "BEDAVA site raporu site açıkları bulunduğunu belirtiyor."
257
-
258
- # @ secure_wp
259
- #: secure-wordpress.php:926
260
- msgid "No setup, tuning and installation on your site - scan begins immediately"
261
- msgstr "Kurulum yok, ayarlayın ve sitenize kurun - tarama anında başlar"
262
-
263
- # @ secure_wp
264
- #: secure-wordpress.php:928
265
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
266
- msgstr "Biz size detaylı zararlı yazılım ve açık raporunu göndereceğiz - tamamen ÜCRETSİZ. Formu kullaranarak sorunları çözmede, patronunuza temiz olduğunuzu göstermenizde veya müşterilerinize sizin kurduğunuz sitenin güvenli olduğunu göstermede özgürsünüz!"
267
-
268
- # @ secure_wp
269
- #: secure-wordpress.php:929
270
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
271
- msgstr "** Bonus: Taramadan sonra Site Security Monitor \"Safe-Seal\" (Güvenlik Amblemi) sitenizde kullanılabilir - bu dünyaya sizin zararlı yazılım barındırmadığınız gösterir!."
272
-
273
- # @ secure_wp
274
- #: secure-wordpress.php:931
275
- msgid "The form"
276
- msgstr "Form"
277
-
278
- # @ secure_wp
279
- #: secure-wordpress.php:932
280
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
281
- msgstr "Takip eden formu veya <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">bizim sitemizdeki</a> kullanın."
282
-
283
- # @ secure_wp
284
- #: secure-wordpress.php:967
285
- msgid "Full Name"
286
- msgstr "Adınız, soyadınız"
287
-
288
- # @ secure_wp
289
- #: secure-wordpress.php:970
290
- #: secure-wordpress.php:978
291
- #: secure-wordpress.php:986
292
- #: secure-wordpress.php:994
293
- #: secure-wordpress.php:1010
294
- msgid "*required"
295
- msgstr "*gerekli"
296
-
297
- # @ secure_wp
298
- #: secure-wordpress.php:975
299
- msgid "eMail Adress"
300
- msgstr "E-Posta Adresiniz"
301
-
302
- # @ secure_wp
303
- #: secure-wordpress.php:978
304
- msgid ", eMail Address must match domain name"
305
- msgstr ", e-posta adresiniz domain adı ile eşleşmelidir."
306
-
307
- # @ secure_wp
308
- #: secure-wordpress.php:983
309
- msgid "Website"
310
- msgstr "İnternet Siteniz"
311
-
312
- # @ secure_wp
313
- #: secure-wordpress.php:991
314
- msgid "Phone"
315
- msgstr "Telefon"
316
-
317
- # @ secure_wp
318
- #: secure-wordpress.php:999
319
- msgid "Yes, I need help!"
320
- msgstr "Evet, yardıma ihtiyacım var!"
321
-
322
- # @ secure_wp
323
- #: secure-wordpress.php:1002
324
- msgid "Call me"
325
- msgstr "Beni ara"
326
-
327
- # @ secure_wp
328
- #: secure-wordpress.php:1007
329
- msgid "Terms and Conditions"
330
- msgstr "Hizmet Koşulları ve Şartlar"
331
-
332
- # @ secure_wp
333
- #: secure-wordpress.php:1010
334
- msgid ", I accept"
335
- msgstr ", Kabul ediyorum"
336
-
337
- # @ secure_wp
338
- #: secure-wordpress.php:1017
339
- msgid "Get my Free Web Scan"
340
- msgstr "BEdava web taramasını al"
341
-
342
- # @ secure_wp
343
- #: secure-wordpress.php:1028
344
- msgid "Safe Seal"
345
- msgstr "Güvenlik Amblemi"
346
-
347
- # @ secure_wp
348
- #: secure-wordpress.php:1058
349
- msgid "Color"
350
- msgstr "Renk"
351
-
352
- # @ secure_wp
353
- #: secure-wordpress.php:1062
354
- msgid "Green"
355
- msgstr "Yeşil"
356
-
357
- # @ secure_wp
358
- #: secure-wordpress.php:1063
359
- msgid "Blue"
360
- msgstr "Mavi"
361
-
362
- # @ secure_wp
363
- #: secure-wordpress.php:1064
364
- msgid "Red"
365
- msgstr "Kırmızı"
366
-
367
- # @ secure_wp
368
- #: secure-wordpress.php:1065
369
- msgid "Brown"
370
- msgstr "Kahverengi"
371
-
372
- # @ secure_wp
373
- #: secure-wordpress.php:1066
374
- msgid "Gray"
375
- msgstr "Gri"
376
-
377
- # @ secure_wp
378
- #: secure-wordpress.php:1075
379
- msgid "Text"
380
- msgstr "Yazı"
381
-
382
- # @ secure_wp
383
- #: secure-wordpress.php:1079
384
- msgid "Protected"
385
- msgstr "Korundu"
386
-
387
- # @ secure_wp
388
- #: secure-wordpress.php:1080
389
- msgid "Secured"
390
- msgstr "Güvenceye Alındı"
391
-
392
- # @ secure_wp
393
- #: secure-wordpress.php:1081
394
- msgid "Scanned"
395
- msgstr "Tarandı"
396
-
397
- # @ secure_wp
398
- #: secure-wordpress.php:1082
399
- msgid "Protected by"
400
- msgstr "Koruyan"
401
-
402
- # @ secure_wp
403
- #: secure-wordpress.php:1088
404
- msgid "Orientation"
405
- msgstr "Oryantasyon"
406
-
407
- # @ secure_wp
408
- #: secure-wordpress.php:1092
409
- msgid "Horizontal"
410
- msgstr "Yatay"
411
-
412
- # @ secure_wp
413
- #: secure-wordpress.php:1093
414
- msgid "Vertical"
415
- msgstr "Dikey"
416
-
417
- # @ secure_wp
418
- #: secure-wordpress.php:1099
419
- msgid "Image border"
420
- msgstr "Resim Bordurü"
421
-
422
- # @ secure_wp
423
- #: secure-wordpress.php:1107
424
- msgid "Language"
425
- msgstr "Dil"
426
-
427
- # @ secure_wp
428
- #: secure-wordpress.php:1111
429
- msgid "English (US)"
430
- msgstr "İngilizce (US)"
431
-
432
- # @ secure_wp
433
- #: secure-wordpress.php:1112
434
- msgid "English (UK)"
435
- msgstr "İngilizce (UK)"
436
-
437
- # @ secure_wp
438
- #: secure-wordpress.php:1113
439
- msgid "Spanish"
440
- msgstr "İspanyolca"
441
-
442
- # @ secure_wp
443
- #: secure-wordpress.php:1114
444
- msgid "German"
445
- msgstr "Almanca"
446
-
447
- # @ secure_wp
448
- #: secure-wordpress.php:1115
449
- msgid "Italian"
450
- msgstr "İtalyanca"
451
-
452
- # @ secure_wp
453
- #: secure-wordpress.php:1116
454
- msgid "Japanese"
455
- msgstr "Japonca"
456
-
457
- # @ secure_wp
458
- #: secure-wordpress.php:1117
459
- msgid "Chinese (Simplified)"
460
- msgstr "Çince (Basitleştirilmiş)"
461
-
462
- # @ secure_wp
463
- #: secure-wordpress.php:1118
464
- msgid "Chinese (Traditional)"
465
- msgstr "Çince (Geleneksell)"
466
-
467
- # @ secure_wp
468
- #: secure-wordpress.php:1127
469
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
470
- msgstr "Oluşturulan kodunuz burada. Bunu internet sitenize (html bileşeni) olarak yerleştirerek korunduğunuzu gösterebilirsiniz."
471
-
472
- # @ secure_wp
473
- #: secure-wordpress.php:1142
474
- msgid "Clear Options"
475
- msgstr "Ayarları Temizle"
476
-
477
- # @ secure_wp
478
- #: secure-wordpress.php:1145
479
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
480
- msgstr "Bu butona tıklayarak eklenti ayarlarını silebilirsiniz. Güvenli Wordpress eklentisini pasifleştirmek oluşturulmuş hiçbir ayarı silmez."
481
-
482
- # @ secure_wp
483
- #: secure-wordpress.php:1150
484
- msgid "Delete Options"
485
- msgstr "Ayarları Sil"
486
-
487
- # @ secure_wp
488
- #. translators: plugin header field 'PluginURI'
489
- #: secure-wordpress.php:0
490
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
491
- msgstr ""
492
-
493
- # @ secure_wp
494
- #. translators: plugin header field 'Author'
495
- #: secure-wordpress.php:0
496
- msgid "jremillard"
497
- msgstr ""
498
-
499
- # @ secure_wp
500
- #. translators: plugin header field 'AuthorURI'
501
- #: secure-wordpress.php:0
502
- msgid "http://www.sitesecuritymonitor.com/"
503
- msgstr ""
504
-
505
- # @ secure_wp
506
- #: secure-wordpress.php:1031
507
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
508
- msgstr "Eklentimizi kullandığınız için teşekkürler! Aşağıdaki taramayı yapmakta serbestsiniz (HTML kodunu çıkararak kolayca kopyala-yapıştır ) ,le blogunuza ekleyebilirsiniz.. Bu amblem size tarama servisi vermez -wordpress güvenliği için basit şeyleri yapar - toplum ve müşteri tecrübelerimize dayanarak tavsiye ederiz.<br/>Düzenli olarak açık ve zararlı yazılım tarama testi için, lütfen <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">buradan anasayfanıza gözatın...</a>"
509
-
510
- # @ secure_wp
511
- #: secure-wordpress.php:1126
512
- msgid "Source"
513
- msgstr "Kaynak"
514
-
515
- # @ secure_wp
516
- #. translators: plugin header field 'Version'
517
- #: secure-wordpress.php:0
518
- msgid "1.0.5"
519
- msgstr ""
520
-
521
- # @ secure_wp
522
- #: secure-wordpress.php:881
523
- msgid "WP Version on Scripts/Styles"
524
- msgstr "WP Versiyonu Scriptler/Stiller"
525
-
526
- # @ secure_wp
527
- #: secure-wordpress.php:885
528
- msgid "Removes version of WordPress on the url form scripts and stylesheets only on frontend."
529
- msgstr "Sitenin ön kısmındaki Script ve stil dosyalarında WordPress sürüm bilgilerini kaldırır."
530
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-uk.mo DELETED
Binary file
languages/secure_wp-uk.po DELETED
@@ -1,225 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-06-22 12:29+0100\n"
6
- "PO-Revision-Date: 2009-11-02 16:27+0200\n"
7
- "Last-Translator: Дмитрий aka AzzePis <azzepis@gmail.com>\n"
8
- "Language-Team: wordpress.co.ua <blog@blogaboutblog.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-SourceCharset: utf-8\n"
13
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
14
- "X-Poedit-Basepath: ../\n"
15
- "X-Textdomain-Support: yes\n"
16
- "X-Poedit-Language: Ukrainian\n"
17
- "X-Poedit-Country: UKRAINE\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
-
20
- #: secure-wordpress.php:323
21
- msgid "Settings"
22
- msgstr "Налаштування"
23
-
24
- #@ secure_wp
25
- #: secure-wordpress.php:352
26
- #: secure-wordpress.php:389
27
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
28
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Документація</a>"
29
-
30
- #@ secure_wp
31
- #: secure-wordpress.php:369
32
- msgid "Options update."
33
- msgstr "Оновлення налаштувань."
34
-
35
- #@ secure_wp
36
- #: secure-wordpress.php:371
37
- msgid "All entries in the database was cleared. Now deactivate this plugin."
38
- msgstr "Усі записи у базі данних були очищені. Тепер деактивуйте цей плагін."
39
-
40
- #@ secure_wp
41
- #: secure-wordpress.php:385
42
- #: secure-wordpress.php:392
43
- msgid "Secure WP"
44
- msgstr "Secure WP"
45
-
46
- #@ secure_wp
47
- #: secure-wordpress.php:388
48
- #: secure-wordpress.php:614
49
- msgid "Secure WordPress"
50
- msgstr "Secure WordPress"
51
-
52
- #: secure-wordpress.php:412
53
- msgid "Version"
54
- msgstr "Версія"
55
-
56
- #@ secure_wp
57
- #: secure-wordpress.php:412
58
- msgid "History"
59
- msgstr "Історія"
60
-
61
- #: secure-wordpress.php:412
62
- msgid "Author"
63
- msgstr "Автор"
64
-
65
- #@ secure_wp
66
- #: secure-wordpress.php:542
67
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
68
- msgstr "Налаштування не оновлено - ви не маєте привілегій, щоб зробити це!"
69
-
70
- #@ secure_wp
71
- #: secure-wordpress.php:562
72
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
73
- msgstr "Записи не були видалені - ви не маєте привілегій, щоб зробити це!"
74
-
75
- #@ secure_wp
76
- #: secure-wordpress.php:570
77
- msgid "Entries was not delleted - check the checkbox!"
78
- msgstr "Записи не були видалені - відмітьте чекбокс (поставте птичку)!"
79
-
80
- #@ secure_wp
81
- #: secure-wordpress.php:590
82
- msgid "All entries in the database was cleared."
83
- msgstr "Усі записи у базі данних були очищені."
84
-
85
- #@ secure_wp
86
- #: secure-wordpress.php:594
87
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
88
- msgstr "Записи не були видалені - відмітьте чекбокс (поставте птичку) або Ви не маєте привілегій, щоб зробити це!"
89
-
90
- #: secure-wordpress.php:619
91
- #: secure-wordpress.php:734
92
- #: secure-wordpress.php:754
93
- msgid "Click to toggle"
94
- msgstr "Клацніть для перемикання"
95
-
96
- #@ secure_wp
97
- #: secure-wordpress.php:620
98
- msgid "Configuration"
99
- msgstr "Конфігурація"
100
-
101
- #@ secure_wp
102
- #: secure-wordpress.php:630
103
- msgid "Error-Messages"
104
- msgstr "Повідомлення про помилки"
105
-
106
- #@ secure_wp
107
- #: secure-wordpress.php:634
108
- msgid "deactivates tooltip and error message at login of WordPress"
109
- msgstr "деактивує підказку та повідомлення про помилки при логіні у WordPress"
110
-
111
- #@ secure_wp
112
- #: secure-wordpress.php:640
113
- msgid "WordPress Version"
114
- msgstr "Версія WordPress"
115
-
116
- #@ secure_wp
117
- #: secure-wordpress.php:644
118
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
119
- msgstr "Видаляє інформацію про версію WordPress усюди, зокрема у RSS, але не у адмінці."
120
-
121
- #@ secure_wp
122
- #: secure-wordpress.php:650
123
- msgid "index.html"
124
- msgstr "index.html"
125
-
126
- #@ secure_wp
127
- #: secure-wordpress.php:660
128
- msgid "Really Simple Discovery"
129
- msgstr "Really Simple Discovery"
130
-
131
- #@ secure_wp
132
- #: secure-wordpress.php:664
133
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
134
- msgstr "Видалити посилання Really Simple Discovery з <code>wp_head</code> на блозі"
135
-
136
- #@ secure_wp
137
- #: secure-wordpress.php:670
138
- msgid "Windows Live Writer"
139
- msgstr "Windows Live Writer"
140
-
141
- #@ secure_wp
142
- #: secure-wordpress.php:674
143
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
144
- msgstr "Видалити посилання Windows Live Writer з <code>wp_head</code> на блозі"
145
-
146
- #@ secure_wp
147
- #: secure-wordpress.php:680
148
- msgid "Core Update"
149
- msgstr "Оновлення ядра"
150
-
151
- #@ secure_wp
152
- #: secure-wordpress.php:684
153
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
154
- msgstr "Видаляє повідомлення про нові версії Wordpress від користувачів, які не мають прав адміністратора на блозі."
155
-
156
- #@ secure_wp
157
- #: secure-wordpress.php:690
158
- msgid "Plugin Update"
159
- msgstr "Оновлення плагіну"
160
-
161
- #@ secure_wp
162
- #: secure-wordpress.php:694
163
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
164
- msgstr "Видаляє повідомлення про нові версії плагіну від користувачів, які не мають прав адміністратора на блозі. Показує повідомлення про нову версію плагіну тільки при інсталяції користувачам, які мають права на редагування плагінів."
165
-
166
- #@ secure_wp
167
- #: secure-wordpress.php:701
168
- msgid "Theme Update"
169
- msgstr "Оновлення Теми"
170
-
171
- #@ secure_wp
172
- #: secure-wordpress.php:705
173
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
174
- msgstr "Видаляє повідомлення про нові версії теми від користувачів, які не мають прав адміністратора на блозі. Показує повідомлення про нову версію теми тільки при інсталяції користувачам, які мають права на редагування тем."
175
-
176
- #@ secure_wp
177
- #: secure-wordpress.php:712
178
- msgid "WP Scanner"
179
- msgstr "WP Сканер"
180
-
181
- #@ secure_wp
182
- #: secure-wordpress.php:716
183
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
184
- msgstr "WordPress сканер це безкоштовний онлайн ресурс, який адміністратори блогу можуть використовувати, щоб визначити рівень безпечності їх wordpress блогу. Для запуску wp-сканеру відмітьте цю опцію та додайте цей код <code>&lt;!-- wpscanner --&gt;</code> до вашої теми WordPress. Після цього перейдіть за посиланням <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> та проскануйте ваш сайт."
185
-
186
- #@ secure_wp
187
- #: secure-wordpress.php:724
188
- msgid "Save Changes"
189
- msgstr "Збережіть Зміни"
190
-
191
- #@ secure_wp
192
- #: secure-wordpress.php:735
193
- msgid "Clear Options"
194
- msgstr "Очистіть налаштування"
195
-
196
- #@ secure_wp
197
- #: secure-wordpress.php:738
198
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
199
- msgstr "Натисніть на кнопку для видалення налаштувань цього плагіну. Відключення плагіну Secure WordPress видалить усі дані, що були створені плагіном."
200
-
201
- #@ secure_wp
202
- #: secure-wordpress.php:743
203
- msgid "Delete Options"
204
- msgstr "Видаліть налаштування"
205
-
206
- #@ secure_wp
207
- #: secure-wordpress.php:755
208
- msgid "About the plugin"
209
- msgstr "Про плагін"
210
-
211
- #@ secure_wp
212
- #: secure-wordpress.php:768
213
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
214
- msgstr "Корисна інформація: Відвідайте <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">домашню сторінку плагіну</a> для інформації про плагін або для отримання останньої його версії."
215
-
216
- #@ secure_wp
217
- #: secure-wordpress.php:768
218
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
219
- msgstr "Бажаєте віддячити? Подивіться мій <href=\"http://bueltge.de/wunschliste/\">список бажань</a>."
220
-
221
- #@ secure_wp
222
- #: secure-wordpress.php:654
223
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
224
- msgstr "створює <code>index.php</code> файл у папці <code>/plugins/</code> та <code>/themes/</code>, щоб сховати файли цих каталогів від перегляду."
225
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp-zh_CN.mo DELETED
Binary file
languages/secure_wp-zh_CN.po DELETED
@@ -1,236 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress v0.6\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2010-01-22 18:08+0800\n"
7
- "Last-Translator: 老顽童 <tanghaiwei@dd54.net>\n"
8
- "Language-Team: 老顽童 <tanghaiwei@dd54.net>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: Chinese\n"
14
- "X-Poedit-Country: CHINA\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
17
- "X-Poedit-Basepath: ../\n"
18
- "X-Textdomain-Support: yes\n"
19
- "X-Poedit-SearchPath-0: .\n"
20
-
21
- #: secure-wordpress.php:330
22
- msgid "Settings"
23
- msgstr "设置"
24
-
25
- #@ secure_wp
26
- #: secure-wordpress.php:359
27
- #: secure-wordpress.php:406
28
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
29
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">文档</a>,<a href=\"http://dd54.net/\">支持</a>"
30
-
31
- #@ secure_wp
32
- #: secure-wordpress.php:382
33
- msgid "Options update."
34
- msgstr "选项更新。"
35
-
36
- #@ secure_wp
37
- #: secure-wordpress.php:384
38
- msgid "All entries in the database was cleared. Now deactivate this plugin."
39
- msgstr "数据库中的所有项目已清除。现在停用这个插件。"
40
-
41
- #@ secure_wp
42
- #: secure-wordpress.php:398
43
- #: secure-wordpress.php:409
44
- msgid "Secure WP"
45
- msgstr "Secure WP"
46
-
47
- #@ secure_wp
48
- #: secure-wordpress.php:405
49
- #: secure-wordpress.php:652
50
- msgid "Secure WordPress"
51
- msgstr "Secure WordPress"
52
-
53
- #: secure-wordpress.php:429
54
- msgid "Version"
55
- msgstr "版本"
56
-
57
- #@ secure_wp
58
- #: secure-wordpress.php:429
59
- msgid "History"
60
- msgstr "历史"
61
-
62
- #: secure-wordpress.php:429
63
- msgid "Author"
64
- msgstr "作者"
65
-
66
- #@ secure_wp
67
- #: secure-wordpress.php:579
68
- msgid "Options not update - you don&lsquo;t have the privilidges to do this!"
69
- msgstr "选项不更新 - 没有权限"
70
-
71
- #@ secure_wp
72
- #: secure-wordpress.php:599
73
- msgid "Entries was not delleted - you don&lsquo;t have the privilidges to do this!"
74
- msgstr "项目没有删除 - 没有权限"
75
-
76
- #@ secure_wp
77
- #: secure-wordpress.php:607
78
- msgid "Entries was not delleted - check the checkbox!"
79
- msgstr "项目没有删除 - 选中复选框!"
80
-
81
- #@ secure_wp
82
- #: secure-wordpress.php:627
83
- msgid "All entries in the database was cleared."
84
- msgstr "数据库中的所有项目已清除。"
85
-
86
- #@ secure_wp
87
- #: secure-wordpress.php:631
88
- msgid "Entries was not delleted - check the checkbox or you don&lsquo;t have the privilidges to do this!"
89
- msgstr "项目没有删除 - 选中复选框或者没有权限!"
90
-
91
- #: secure-wordpress.php:657
92
- #: secure-wordpress.php:782
93
- #: secure-wordpress.php:802
94
- msgid "Click to toggle"
95
- msgstr "点击切换"
96
-
97
- #@ secure_wp
98
- #: secure-wordpress.php:658
99
- msgid "Configuration"
100
- msgstr "配置"
101
-
102
- #@ secure_wp
103
- #: secure-wordpress.php:668
104
- msgid "Error-Messages"
105
- msgstr "错误信息"
106
-
107
- #@ secure_wp
108
- #: secure-wordpress.php:672
109
- msgid "Deactivates tooltip and error message at login of WordPress"
110
- msgstr "停用在WordPress登录提示和错误信息"
111
-
112
- #@ secure_wp
113
- #: secure-wordpress.php:678
114
- msgid "WordPress Version"
115
- msgstr "WordPress版本"
116
-
117
- #@ secure_wp
118
- #: secure-wordpress.php:682
119
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
120
- msgstr "隐藏WordPress版本号,除了管理页面"
121
-
122
- #@ secure_wp
123
- #: secure-wordpress.php:688
124
- msgid "WordPress Version in Backend"
125
- msgstr "WordPress版本号在后台"
126
-
127
- #@ secure_wp
128
- #: secure-wordpress.php:692
129
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
130
- msgstr "对非管理员隐藏WordPress版本号在管理区域。"
131
-
132
- #@ secure_wp
133
- #: secure-wordpress.php:698
134
- msgid "index.php"
135
- msgstr "index.php"
136
-
137
- #@ secure_wp
138
- #: secure-wordpress.php:702
139
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
140
- msgstr "创建一个 <code>index.php</code> 文件在 <code>/plugins/</code> 和 <code>/themes/</code> 目录"
141
-
142
- #@ secure_wp
143
- #: secure-wordpress.php:708
144
- msgid "Really Simple Discovery"
145
- msgstr "RSD离线编辑接口"
146
-
147
- #@ secure_wp
148
- #: secure-wordpress.php:712
149
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
150
- msgstr "隐藏RSD离线编辑接口在 <code>wp_head</code> 前端"
151
-
152
- #@ secure_wp
153
- #: secure-wordpress.php:718
154
- msgid "Windows Live Writer"
155
- msgstr "Windows Live Writer"
156
-
157
- #@ secure_wp
158
- #: secure-wordpress.php:722
159
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
160
- msgstr "隐藏windows live writer 识别标记在 <code>wp_head</code> 前端"
161
-
162
- #@ secure_wp
163
- #: secure-wordpress.php:728
164
- msgid "Core Update"
165
- msgstr "核心更新"
166
-
167
- #@ secure_wp
168
- #: secure-wordpress.php:732
169
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
170
- msgstr "隐藏WordPress核心更新对非管理员。"
171
-
172
- #@ secure_wp
173
- #: secure-wordpress.php:738
174
- msgid "Plugin Update"
175
- msgstr "插件更新"
176
-
177
- #@ secure_wp
178
- #: secure-wordpress.php:742
179
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
180
- msgstr "隐藏WordPress插件更新对非管理员。"
181
-
182
- #@ secure_wp
183
- #: secure-wordpress.php:749
184
- msgid "Theme Update"
185
- msgstr "主题更新"
186
-
187
- #@ secure_wp
188
- #: secure-wordpress.php:753
189
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
190
- msgstr "隐藏WordPress插件更新对非管理员。"
191
-
192
- #@ secure_wp
193
- #: secure-wordpress.php:760
194
- msgid "WP Scanner"
195
- msgstr "WP 扫描"
196
-
197
- #@ secure_wp
198
- #: secure-wordpress.php:764
199
- msgid "WordPress scanner is a free online resource that blog administrators can use to provide a measure of their wordpress security level. To run wp-scanner check this option and is add <code>&lt;!-- wpscanner --&gt;</code> to your current WordPress template. After this go to <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> and scan your site."
200
- msgstr "WordPress scanner 是一个免费的在线安全扫描服务。为了运行在线安全检测,需要将<!-- wpscanner -->这一行代码加到主题中,然后浏览 <a href=\"http://blogsecurity.net/wpscan\">http://blogsecurity.net/wpscan</a> 扫描你的网站."
201
-
202
- #@ secure_wp
203
- #: secure-wordpress.php:772
204
- msgid "Save Changes"
205
- msgstr "保存更改"
206
-
207
- #@ secure_wp
208
- #: secure-wordpress.php:783
209
- msgid "Clear Options"
210
- msgstr "清除选项"
211
-
212
- #@ secure_wp
213
- #: secure-wordpress.php:786
214
- msgid "Click this button to delete settings of this plugin. Deactivating Secure WordPress plugin remove any data that may have been created."
215
- msgstr "点击此按钮可删除此插件的设置。"
216
-
217
- #@ secure_wp
218
- #: secure-wordpress.php:791
219
- msgid "Delete Options"
220
- msgstr "删除选项"
221
-
222
- #@ secure_wp
223
- #: secure-wordpress.php:803
224
- msgid "About the plugin"
225
- msgstr "关于插件"
226
-
227
- #@ secure_wp
228
- #: secure-wordpress.php:816
229
- msgid "Further information: Visit the <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">plugin homepage</a> for further information or to grab the latest version of this plugin."
230
- msgstr "更多信息:访问 <a href=\"http://bueltge.de/wordpress-login-sicherheit-plugin/652/\">插件页面</a> 和 <a href=\"http://dd54.net/\">汉化者网站</a> 了解进一步的信息或查找这个插件的最新版本。"
231
-
232
- #@ secure_wp
233
- #: secure-wordpress.php:816
234
- msgid "You want to thank me? Visit my <a href=\"http://bueltge.de/wunschliste/\">wishlist</a>."
235
- msgstr "你要感谢我呢?访问我的 <a href=\"http://bueltge.de/wunschliste/\">心愿</a> 和 <a href=\"http://dd54.net/\">汉化者网站</a>."
236
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/secure_wp.pot DELETED
@@ -1,533 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Secure WordPress\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-05-16 12:34+0100\n"
6
- "PO-Revision-Date: 2010-07-09 13:20+0100\n"
7
- "Last-Translator: Frank Bueltge <frank@bueltge.de>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: \n"
14
- "X-Poedit-Country: \n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
17
- "X-Poedit-Basepath: ../\n"
18
- "X-Poedit-Bookmarks: \n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Textdomain-Support: yes"
21
-
22
- #. translators: plugin header field 'Description'
23
- #: secure-wordpress.php:0
24
- #@ secure_wp
25
- msgid "Little basics for secure your WordPress-installation."
26
- msgstr "Kleine Grundlagen für die Sicherheit deiner WordPress Installation"
27
-
28
- #: secure-wordpress.php:370
29
- #@ default
30
- msgid "Settings"
31
- msgstr "Einstellungen"
32
-
33
- #: secure-wordpress.php:399
34
- #: secure-wordpress.php:446
35
- #@ secure_wp
36
- msgid "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Documentation</a>"
37
- msgstr "<a href=\"http://wordpress.org/extend/plugins/secure-wordpress/\">Dokumentation</a>"
38
-
39
- #: secure-wordpress.php:422
40
- #@ secure_wp
41
- msgid "Options update."
42
- msgstr "Einstellungen aktualisiert."
43
-
44
- #: secure-wordpress.php:424
45
- #@ secure_wp
46
- msgid "All entries in the database was cleared. Now deactivate this plugin."
47
- msgstr "Alle Einträge in der Datenbank wurden entfernt. Jetzt deaktiviere das Plugin."
48
-
49
- #: secure-wordpress.php:438
50
- #: secure-wordpress.php:449
51
- #@ secure_wp
52
- msgid "Secure WP"
53
- msgstr "Secure WP"
54
-
55
- #. translators: plugin header field 'Name'
56
- #: secure-wordpress.php:0
57
- #: secure-wordpress.php:445
58
- #: secure-wordpress.php:773
59
- #@ secure_wp
60
- msgid "Secure WordPress"
61
- msgstr "Secure WordPress"
62
-
63
- #: secure-wordpress.php:469
64
- #@ default
65
- msgid "Version"
66
- msgstr "Version"
67
-
68
- #: secure-wordpress.php:469
69
- #@ secure_wp
70
- msgid "History"
71
- msgstr "Historie"
72
-
73
- #: secure-wordpress.php:469
74
- #@ default
75
- msgid "Author"
76
- msgstr "Autor"
77
-
78
- #: secure-wordpress.php:698
79
- #@ secure_wp
80
- msgid "Options not updated - you don&lsquo;t have the privileges to do this!"
81
- msgstr "Einstellungen wurden nicht aktualisiert - du hast nicht genügend Rechte dazu!"
82
-
83
- #: secure-wordpress.php:718
84
- #@ secure_wp
85
- msgid "Entries were not deleted - you don&lsquo;t have the privileges to do this!"
86
- msgstr "Einstellungen wurden nicht entfernt - du hast nicht genügend Rechte dazu!"
87
-
88
- #: secure-wordpress.php:726
89
- #@ secure_wp
90
- msgid "Entries were not deleted - check the checkbox!"
91
- msgstr "Einstellungen wurden nicht entfernt - prüfe dich Checkbox!"
92
-
93
- #: secure-wordpress.php:746
94
- #@ secure_wp
95
- msgid "All entries in the database were cleared."
96
- msgstr "Alle Einträge in der Datenbank wurden entfernt."
97
-
98
- #: secure-wordpress.php:750
99
- #@ secure_wp
100
- msgid "Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!"
101
- msgstr "Einstellungen wurden nicht entfernt - prüfe dich Checkbox oder du hast nicht genügend Rechte dazu!"
102
-
103
- #: secure-wordpress.php:778
104
- #: secure-wordpress.php:914
105
- #: secure-wordpress.php:1027
106
- #: secure-wordpress.php:1141
107
- #@ default
108
- msgid "Click to toggle"
109
- msgstr "Zum umschalten klicken"
110
-
111
- #: secure-wordpress.php:779
112
- #@ secure_wp
113
- msgid "Configuration"
114
- msgstr "Einstellungen"
115
-
116
- #: secure-wordpress.php:789
117
- #@ secure_wp
118
- msgid "Error-Messages"
119
- msgstr "Fehler-Meldungen"
120
-
121
- #: secure-wordpress.php:793
122
- #@ secure_wp
123
- msgid "Deactivates tooltip and error message at login of WordPress"
124
- msgstr "Deaktivert die Hinweis- und Fehlermeldung beim Login von WordPress"
125
-
126
- #: secure-wordpress.php:799
127
- #@ secure_wp
128
- msgid "WordPress Version"
129
- msgstr "WordPress Version"
130
-
131
- #: secure-wordpress.php:803
132
- #@ secure_wp
133
- msgid "Removes version of WordPress in all areas, including feed, not in admin"
134
- msgstr "Entfernen der Version von WordPress in allen Bereichen, inkl. Feed, nicht im Admin-Bereich"
135
-
136
- #: secure-wordpress.php:809
137
- #@ secure_wp
138
- msgid "WordPress Version in Backend"
139
- msgstr "WordPress Version im Administrationsbereich"
140
-
141
- #: secure-wordpress.php:813
142
- #@ secure_wp
143
- msgid "Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins."
144
- msgstr "Entfernen der Version von WordPress im Admin-Bereich für Nicht-Administratoren. Die WordPress Version deines Blogs wird ausschließlich Nutzern dargestellt, die die Rechte zum Editieren von Plugins haben."
145
-
146
- #: secure-wordpress.php:819
147
- #@ secure_wp
148
- msgid "index.php"
149
- msgstr "index.php"
150
-
151
- #: secure-wordpress.php:823
152
- #@ secure_wp
153
- msgid "creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing"
154
- msgstr "hinterlegt eine <code>index.php</code> in <code>/plugins/</code> und <code>/themes/</code> um das Auslesen des Verzeichnis zu vermeiden"
155
-
156
- #: secure-wordpress.php:829
157
- #@ secure_wp
158
- msgid "Really Simple Discovery"
159
- msgstr "Really Simple Discovery"
160
-
161
- #: secure-wordpress.php:833
162
- #@ secure_wp
163
- msgid "Remove Really Simple Discovery link in <code>wp_head</code> of the frontend"
164
- msgstr "Entfernt den link für Really Simple Discovery im head des Frontend"
165
-
166
- #: secure-wordpress.php:839
167
- #@ secure_wp
168
- msgid "Windows Live Writer"
169
- msgstr "Windows Live Writer"
170
-
171
- #: secure-wordpress.php:843
172
- #@ secure_wp
173
- msgid "Remove Windows Live Writer link in <code>wp_head</code> of the frontend"
174
- msgstr "Entfernt den link für Windows Live Writer im head des Frontend"
175
-
176
- #: secure-wordpress.php:849
177
- #@ secure_wp
178
- msgid "Core Update"
179
- msgstr "Core Update"
180
-
181
- #: secure-wordpress.php:853
182
- #@ secure_wp
183
- msgid "Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update."
184
- msgstr "Deaktiviert das Core-Update für Nicht-Admin's. Die Mitteilung einer neuen Version von WordPress wird ausschließlich Nutzern gezeigt, die die Rechte zum Editieren von Plugins haben."
185
-
186
- #: secure-wordpress.php:859
187
- #@ secure_wp
188
- msgid "Plugin Update"
189
- msgstr "Plugin Update"
190
-
191
- #: secure-wordpress.php:863
192
- #@ secure_wp
193
- msgid "Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins."
194
- msgstr "Deaktiviert das Plugin-Update für Nicht-Admin's. Die Mitteilung einer neuen Version von WordPress zu Plugins wird ausschließlich Nutzern gezeigt, die die Rechte zum Editieren von Plugins haben."
195
-
196
- #: secure-wordpress.php:870
197
- #@ secure_wp
198
- msgid "Theme Update"
199
- msgstr "Theme Update"
200
-
201
- #: secure-wordpress.php:874
202
- #@ secure_wp
203
- msgid "Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes."
204
- msgstr "Deaktiviert das Theme-Update für Nicht-Admin's. Die Mitteilung einer neuen Version von WordPress zum Theme wird ausschließlich Nutzern gezeigt, die die Rechte zum Editieren von Themes haben."
205
-
206
- #: secure-wordpress.php:891
207
- #@ secure_wp
208
- msgid "Block bad queries"
209
- msgstr "Blocke negative Abfragen"
210
-
211
- #: secure-wordpress.php:895
212
- #@ secure_wp
213
- msgid "Protect WordPress against malicious URL requests, read more information at the <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >post from Jeff Starr</a>"
214
- msgstr "WordPress gegen bösartige URL-Anforderungen schützen, mehr Informationen gibt es im <a href=\"http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/\" title=\"read this post\" >Beitrag von Jeff Starr</a>"
215
-
216
- #: secure-wordpress.php:903
217
- #@ secure_wp
218
- msgid "Save Changes"
219
- msgstr "Einstellungen aktualisieren"
220
-
221
- #: secure-wordpress.php:915
222
- #@ secure_wp
223
- msgid "Validate your site with a free malware scan from www.sitesecuritymonitor.com"
224
- msgstr "Überprüfe deine Seite mit einem freien Malware-Scan von www.sitesecuritymonitor.com"
225
-
226
- #: secure-wordpress.php:918
227
- #@ secure_wp
228
- msgid "Take us for a Test Drive - Free Scan"
229
- msgstr "Nutze uns für eine Probefahrt - freier Scan"
230
-
231
- #: secure-wordpress.php:919
232
- #@ secure_wp
233
- msgid "We understand you may have questions:"
234
- msgstr "Wie verstehen, dass du Fragen hast:"
235
-
236
- #: secure-wordpress.php:920
237
- #@ secure_wp
238
- msgid "What does this do for me?"
239
- msgstr "Was bedeutet der Scan für mich?"
240
-
241
- #: secure-wordpress.php:921
242
- #@ secure_wp
243
- msgid "Am I really safe? I need to be sure."
244
- msgstr "Bin ich wirklich sicher? Ich muss sicher sein."
245
-
246
- #: secure-wordpress.php:922
247
- #@ secure_wp
248
- msgid "Rest Assured, Site Security Monitor has you covered."
249
- msgstr "Sei dir sicher, Site Security Monitor ist sicher."
250
-
251
- #: secure-wordpress.php:924
252
- #@ secure_wp
253
- msgid "FREE scan looks for malware"
254
- msgstr "FREIER scan um Malware zu finden"
255
-
256
- #: secure-wordpress.php:925
257
- #@ secure_wp
258
- msgid "FREE report of website vulnerabilities found"
259
- msgstr "FREIE Auswertung der gefundenen Schwachstellen auf einer Webseite"
260
-
261
- #: secure-wordpress.php:926
262
- #@ secure_wp
263
- msgid "No setup, tuning and installation on your site - scan begins immediately"
264
- msgstr "Keine Einrichtung, keine Anpassunge und Installationen auf deiner Site - der Scan kann sofort starten"
265
-
266
- #: secure-wordpress.php:928
267
- #@ secure_wp
268
- msgid "We will deliver to you a detailed malware and web vulnerability report - FREE of charge. You are free to use the report to resolve issues, show your boss that you are clean, or show your clients that the site you built is safe!"
269
- msgstr "Wir liefern einen detaillierten Bericht zu Schwachstellen und Malware (Schadprogrammen) - kostenlos. Du kannst entscheiden, wie du den Bericht verwendest um Probleme zu lösen, es werden Hinweise zum Problem gegeben. Zeigen den anderen, dass die Site sauber und sicher ist."
270
-
271
- #: secure-wordpress.php:929
272
- #@ secure_wp
273
- msgid "** Bonus: You will be able to use the Site Security Monitor \"Safe-Seal\" on your site after the scan - this shows the world that you are malware free!"
274
- msgstr "** Bonus: Du kannst das Site Security Monitor \"Safe-Seal\" in deine Site integrieren - zeige der Welt, dass du frei von Malware bist."
275
-
276
- #: secure-wordpress.php:931
277
- #@ secure_wp
278
- msgid "The form"
279
- msgstr "Das Formular"
280
-
281
- #: secure-wordpress.php:932
282
- #@ secure_wp
283
- msgid "Use the follow form or use it on <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">our website</a>."
284
- msgstr "Nutze das Formular oder gehe direkt über <a href=\"http://www.sitesecuritymonitor.com/free-scan-for-secure-wordpress\">unsere Website</a>."
285
-
286
- #: secure-wordpress.php:967
287
- #@ secure_wp
288
- msgid "Full Name"
289
- msgstr "Name, Vorname"
290
-
291
- #: secure-wordpress.php:970
292
- #: secure-wordpress.php:978
293
- #: secure-wordpress.php:986
294
- #: secure-wordpress.php:994
295
- #: secure-wordpress.php:1010
296
- #@ secure_wp
297
- msgid "*required"
298
- msgstr "*Pflichtfeld"
299
-
300
- #: secure-wordpress.php:975
301
- #@ secure_wp
302
- msgid "eMail Adress"
303
- msgstr "E-Mail Adresse"
304
-
305
- #: secure-wordpress.php:978
306
- #@ secure_wp
307
- msgid ", eMail Address must match domain name"
308
- msgstr ", die E-Mail Adresse muss den Domain-Namen enthalten"
309
-
310
- #: secure-wordpress.php:983
311
- #@ secure_wp
312
- msgid "Website"
313
- msgstr "Website"
314
-
315
- #: secure-wordpress.php:991
316
- #@ secure_wp
317
- msgid "Phone"
318
- msgstr "Telefon"
319
-
320
- #: secure-wordpress.php:999
321
- #@ secure_wp
322
- msgid "Yes, I need help!"
323
- msgstr "Ja, ich brauche Hilfe!"
324
-
325
- #: secure-wordpress.php:1002
326
- #@ secure_wp
327
- msgid "Call me"
328
- msgstr "Rufe mich an"
329
-
330
- #: secure-wordpress.php:1007
331
- #@ secure_wp
332
- msgid "Terms and Conditions"
333
- msgstr "Allgemeine Geschäftsbedingungen"
334
-
335
- #: secure-wordpress.php:1010
336
- #@ secure_wp
337
- msgid ", I accept"
338
- msgstr ", ich akzeptiere"
339
-
340
- #: secure-wordpress.php:1017
341
- #@ secure_wp
342
- msgid "Get my Free Web Scan"
343
- msgstr "Starte meinen freien Web-Scan"
344
-
345
- #: secure-wordpress.php:1028
346
- #@ secure_wp
347
- msgid "Safe Seal"
348
- msgstr "Safe Seal"
349
-
350
- #: secure-wordpress.php:1058
351
- #@ secure_wp
352
- msgid "Color"
353
- msgstr "Farbe"
354
-
355
- #: secure-wordpress.php:1062
356
- #@ secure_wp
357
- msgid "Green"
358
- msgstr "Grün"
359
-
360
- #: secure-wordpress.php:1063
361
- #@ secure_wp
362
- msgid "Blue"
363
- msgstr "Blau"
364
-
365
- #: secure-wordpress.php:1064
366
- #@ secure_wp
367
- msgid "Red"
368
- msgstr "Rot"
369
-
370
- #: secure-wordpress.php:1065
371
- #@ secure_wp
372
- msgid "Brown"
373
- msgstr "Braun"
374
-
375
- #: secure-wordpress.php:1066
376
- #@ secure_wp
377
- msgid "Gray"
378
- msgstr "Grau"
379
-
380
- #: secure-wordpress.php:1075
381
- #@ secure_wp
382
- msgid "Text"
383
- msgstr "Text"
384
-
385
- #: secure-wordpress.php:1079
386
- #@ secure_wp
387
- msgid "Protected"
388
- msgstr "Geschützt"
389
-
390
- #: secure-wordpress.php:1080
391
- #@ secure_wp
392
- msgid "Secured"
393
- msgstr "Sicher"
394
-
395
- #: secure-wordpress.php:1081
396
- #@ secure_wp
397
- msgid "Scanned"
398
- msgstr "Gescannt"
399
-
400
- #: secure-wordpress.php:1082
401
- #@ secure_wp
402
- msgid "Protected by"
403
- msgstr "Geschützt durch"
404
-
405
- #: secure-wordpress.php:1088
406
- #@ secure_wp
407
- msgid "Orientation"
408
- msgstr "Orientierung"
409
-
410
- #: secure-wordpress.php:1092
411
- #@ secure_wp
412
- msgid "Horizontal"
413
- msgstr "Horizontal"
414
-
415
- #: secure-wordpress.php:1093
416
- #@ secure_wp
417
- msgid "Vertical"
418
- msgstr "Vertical"
419
-
420
- #: secure-wordpress.php:1099
421
- #@ secure_wp
422
- msgid "Image border"
423
- msgstr "Bilder-Rahmen"
424
-
425
- #: secure-wordpress.php:1107
426
- #@ secure_wp
427
- msgid "Language"
428
- msgstr "Sprache"
429
-
430
- #: secure-wordpress.php:1111
431
- #@ secure_wp
432
- msgid "English (US)"
433
- msgstr "Englisch (US)"
434
-
435
- #: secure-wordpress.php:1112
436
- #@ secure_wp
437
- msgid "English (UK)"
438
- msgstr "Englisch (UK)"
439
-
440
- #: secure-wordpress.php:1113
441
- #@ secure_wp
442
- msgid "Spanish"
443
- msgstr "Spanisch"
444
-
445
- #: secure-wordpress.php:1114
446
- #@ secure_wp
447
- msgid "German"
448
- msgstr "Deutsch"
449
-
450
- #: secure-wordpress.php:1115
451
- #@ secure_wp
452
- msgid "Italian"
453
- msgstr "Italienisch"
454
-
455
- #: secure-wordpress.php:1116
456
- #@ secure_wp
457
- msgid "Japanese"
458
- msgstr "Japanisch"
459
-
460
- #: secure-wordpress.php:1117
461
- #@ secure_wp
462
- msgid "Chinese (Simplified)"
463
- msgstr "Chinesisch (Einfach)"
464
-
465
- #: secure-wordpress.php:1118
466
- #@ secure_wp
467
- msgid "Chinese (Traditional)"
468
- msgstr "Chinesisch (Traditonell)"
469
-
470
- #: secure-wordpress.php:1127
471
- #@ secure_wp
472
- msgid "Here is your generated code. Place it on your website (as html widget) to show that you are protected."
473
- msgstr "Hier ist der erstellte Code, platziere in ihn in deiner Site (als HTML Widget) um zu zeigen, dass du geschützt bist."
474
-
475
- #: secure-wordpress.php:1142
476
- #@ secure_wp
477
- msgid "Clear Options"
478
- msgstr "Einstellungen löschen"
479
-
480
- #: secure-wordpress.php:1145
481
- #@ secure_wp
482
- msgid "Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created."
483
- msgstr "Nutze diese Möglichkeit um alle Einstellungen des Plugins in der Datenbank zu löschen. Das Plugin löscht ebenfalls alle Einstellungen wenn du es deaktivierst oder aus dem Backend heraus entfernst."
484
-
485
- #: secure-wordpress.php:1150
486
- #@ secure_wp
487
- msgid "Delete Options"
488
- msgstr "Einstellungen löschen"
489
-
490
- #. translators: plugin header field 'PluginURI'
491
- #: secure-wordpress.php:0
492
- #@ secure_wp
493
- msgid "http://www.sitesecuritymonitor.com/secure-wordpress-plugin"
494
- msgstr ""
495
-
496
- #. translators: plugin header field 'Author'
497
- #: secure-wordpress.php:0
498
- #@ secure_wp
499
- msgid "jremillard"
500
- msgstr ""
501
-
502
- #. translators: plugin header field 'AuthorURI'
503
- #: secure-wordpress.php:0
504
- #@ secure_wp
505
- msgid "http://www.sitesecuritymonitor.com/"
506
- msgstr ""
507
-
508
- #: secure-wordpress.php:1031
509
- #@ secure_wp
510
- msgid "Thankyou for using our plugin! You are free to use the scan below (outputs HTML for easy copy-pasting) into your blog. This seal does not give you scanning services - it simple does the basics of wordpress security - as recommended by the community and our own experiences with our customers.<br/>Should you wish to get regular vulnerability and malware scanning services, please <a href=\"http://www.sitesecuritymonitor.com/wordpress-secure-plugin/\">see our main page here...</a>"
511
- msgstr ""
512
-
513
- #: secure-wordpress.php:1126
514
- #@ secure_wp
515
- msgid "Source"
516
- msgstr "Quellcode"
517
-
518
- #. translators: plugin header field 'Version'
519
- #: secure-wordpress.php:0
520
- #@ secure_wp
521
- msgid "1.0.5"
522
- msgstr ""
523
-
524
- #: secure-wordpress.php:881
525
- #@ secure_wp
526
- msgid "WP Version on Scripts/Styles"
527
- msgstr "WP Version bei Scripten/Stylesheets"
528
-
529
- #: secure-wordpress.php:885
530
- #@ secure_wp
531
- msgid "Removes version of WordPress on the url form scripts and stylesheets only on frontend."
532
- msgstr "Entfernt die WordPress Version an den URLs von Scripten und Stylesheets, nur im Frontend."
533
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
license.txt DELETED
@@ -1,674 +0,0 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 3, 29 June 2007
3
-
4
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
- Everyone is permitted to copy and distribute verbatim copies
6
- of this license document, but changing it is not allowed.
7
-
8
- Preamble
9
-
10
- The GNU General Public License is a free, copyleft license for
11
- software and other kinds of works.
12
-
13
- The licenses for most software and other practical works are designed
14
- to take away your freedom to share and change the works. By contrast,
15
- the GNU General Public License is intended to guarantee your freedom to
16
- share and change all versions of a program--to make sure it remains free
17
- software for all its users. We, the Free Software Foundation, use the
18
- GNU General Public License for most of our software; it applies also to
19
- any other work released this way by its authors. You can apply it to
20
- your programs, too.
21
-
22
- When we speak of free software, we are referring to freedom, not
23
- price. Our General Public Licenses are designed to make sure that you
24
- have the freedom to distribute copies of free software (and charge for
25
- them if you wish), that you receive source code or can get it if you
26
- want it, that you can change the software or use pieces of it in new
27
- free programs, and that you know you can do these things.
28
-
29
- To protect your rights, we need to prevent others from denying you
30
- these rights or asking you to surrender the rights. Therefore, you have
31
- certain responsibilities if you distribute copies of the software, or if
32
- you modify it: responsibilities to respect the freedom of others.
33
-
34
- For example, if you distribute copies of such a program, whether
35
- gratis or for a fee, you must pass on to the recipients the same
36
- freedoms that you received. You must make sure that they, too, receive
37
- or can get the source code. And you must show them these terms so they
38
- know their rights.
39
-
40
- Developers that use the GNU GPL protect your rights with two steps:
41
- (1) assert copyright on the software, and (2) offer you this License
42
- giving you legal permission to copy, distribute and/or modify it.
43
-
44
- For the developers' and authors' protection, the GPL clearly explains
45
- that there is no warranty for this free software. For both users' and
46
- authors' sake, the GPL requires that modified versions be marked as
47
- changed, so that their problems will not be attributed erroneously to
48
- authors of previous versions.
49
-
50
- Some devices are designed to deny users access to install or run
51
- modified versions of the software inside them, although the manufacturer
52
- can do so. This is fundamentally incompatible with the aim of
53
- protecting users' freedom to change the software. The systematic
54
- pattern of such abuse occurs in the area of products for individuals to
55
- use, which is precisely where it is most unacceptable. Therefore, we
56
- have designed this version of the GPL to prohibit the practice for those
57
- products. If such problems arise substantially in other domains, we
58
- stand ready to extend this provision to those domains in future versions
59
- of the GPL, as needed to protect the freedom of users.
60
-
61
- Finally, every program is threatened constantly by software patents.
62
- States should not allow patents to restrict development and use of
63
- software on general-purpose computers, but in those that do, we wish to
64
- avoid the special danger that patents applied to a free program could
65
- make it effectively proprietary. To prevent this, the GPL assures that
66
- patents cannot be used to render the program non-free.
67
-
68
- The precise terms and conditions for copying, distribution and
69
- modification follow.
70
-
71
- TERMS AND CONDITIONS
72
-
73
- 0. Definitions.
74
-
75
- "This License" refers to version 3 of the GNU General Public License.
76
-
77
- "Copyright" also means copyright-like laws that apply to other kinds of
78
- works, such as semiconductor masks.
79
-
80
- "The Program" refers to any copyrightable work licensed under this
81
- License. Each licensee is addressed as "you". "Licensees" and
82
- "recipients" may be individuals or organizations.
83
-
84
- To "modify" a work means to copy from or adapt all or part of the work
85
- in a fashion requiring copyright permission, other than the making of an
86
- exact copy. The resulting work is called a "modified version" of the
87
- earlier work or a work "based on" the earlier work.
88
-
89
- A "covered work" means either the unmodified Program or a work based
90
- on the Program.
91
-
92
- To "propagate" a work means to do anything with it that, without
93
- permission, would make you directly or secondarily liable for
94
- infringement under applicable copyright law, except executing it on a
95
- computer or modifying a private copy. Propagation includes copying,
96
- distribution (with or without modification), making available to the
97
- public, and in some countries other activities as well.
98
-
99
- To "convey" a work means any kind of propagation that enables other
100
- parties to make or receive copies. Mere interaction with a user through
101
- a computer network, with no transfer of a copy, is not conveying.
102
-
103
- An interactive user interface displays "Appropriate Legal Notices"
104
- to the extent that it includes a convenient and prominently visible
105
- feature that (1) displays an appropriate copyright notice, and (2)
106
- tells the user that there is no warranty for the work (except to the
107
- extent that warranties are provided), that licensees may convey the
108
- work under this License, and how to view a copy of this License. If
109
- the interface presents a list of user commands or options, such as a
110
- menu, a prominent item in the list meets this criterion.
111
-
112
- 1. Source Code.
113
-
114
- The "source code" for a work means the preferred form of the work
115
- for making modifications to it. "Object code" means any non-source
116
- form of a work.
117
-
118
- A "Standard Interface" means an interface that either is an official
119
- standard defined by a recognized standards body, or, in the case of
120
- interfaces specified for a particular programming language, one that
121
- is widely used among developers working in that language.
122
-
123
- The "System Libraries" of an executable work include anything, other
124
- than the work as a whole, that (a) is included in the normal form of
125
- packaging a Major Component, but which is not part of that Major
126
- Component, and (b) serves only to enable use of the work with that
127
- Major Component, or to implement a Standard Interface for which an
128
- implementation is available to the public in source code form. A
129
- "Major Component", in this context, means a major essential component
130
- (kernel, window system, and so on) of the specific operating system
131
- (if any) on which the executable work runs, or a compiler used to
132
- produce the work, or an object code interpreter used to run it.
133
-
134
- The "Corresponding Source" for a work in object code form means all
135
- the source code needed to generate, install, and (for an executable
136
- work) run the object code and to modify the work, including scripts to
137
- control those activities. However, it does not include the work's
138
- System Libraries, or general-purpose tools or generally available free
139
- programs which are used unmodified in performing those activities but
140
- which are not part of the work. For example, Corresponding Source
141
- includes interface definition files associated with source files for
142
- the work, and the source code for shared libraries and dynamically
143
- linked subprograms that the work is specifically designed to require,
144
- such as by intimate data communication or control flow between those
145
- subprograms and other parts of the work.
146
-
147
- The Corresponding Source need not include anything that users
148
- can regenerate automatically from other parts of the Corresponding
149
- Source.
150
-
151
- The Corresponding Source for a work in source code form is that
152
- same work.
153
-
154
- 2. Basic Permissions.
155
-
156
- All rights granted under this License are granted for the term of
157
- copyright on the Program, and are irrevocable provided the stated
158
- conditions are met. This License explicitly affirms your unlimited
159
- permission to run the unmodified Program. The output from running a
160
- covered work is covered by this License only if the output, given its
161
- content, constitutes a covered work. This License acknowledges your
162
- rights of fair use or other equivalent, as provided by copyright law.
163
-
164
- You may make, run and propagate covered works that you do not
165
- convey, without conditions so long as your license otherwise remains
166
- in force. You may convey covered works to others for the sole purpose
167
- of having them make modifications exclusively for you, or provide you
168
- with facilities for running those works, provided that you comply with
169
- the terms of this License in conveying all material for which you do
170
- not control copyright. Those thus making or running the covered works
171
- for you must do so exclusively on your behalf, under your direction
172
- and control, on terms that prohibit them from making any copies of
173
- your copyrighted material outside their relationship with you.
174
-
175
- Conveying under any other circumstances is permitted solely under
176
- the conditions stated below. Sublicensing is not allowed; section 10
177
- makes it unnecessary.
178
-
179
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180
-
181
- No covered work shall be deemed part of an effective technological
182
- measure under any applicable law fulfilling obligations under article
183
- 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184
- similar laws prohibiting or restricting circumvention of such
185
- measures.
186
-
187
- When you convey a covered work, you waive any legal power to forbid
188
- circumvention of technological measures to the extent such circumvention
189
- is effected by exercising rights under this License with respect to
190
- the covered work, and you disclaim any intention to limit operation or
191
- modification of the work as a means of enforcing, against the work's
192
- users, your or third parties' legal rights to forbid circumvention of
193
- technological measures.
194
-
195
- 4. Conveying Verbatim Copies.
196
-
197
- You may convey verbatim copies of the Program's source code as you
198
- receive it, in any medium, provided that you conspicuously and
199
- appropriately publish on each copy an appropriate copyright notice;
200
- keep intact all notices stating that this License and any
201
- non-permissive terms added in accord with section 7 apply to the code;
202
- keep intact all notices of the absence of any warranty; and give all
203
- recipients a copy of this License along with the Program.
204
-
205
- You may charge any price or no price for each copy that you convey,
206
- and you may offer support or warranty protection for a fee.
207
-
208
- 5. Conveying Modified Source Versions.
209
-
210
- You may convey a work based on the Program, or the modifications to
211
- produce it from the Program, in the form of source code under the
212
- terms of section 4, provided that you also meet all of these conditions:
213
-
214
- a) The work must carry prominent notices stating that you modified
215
- it, and giving a relevant date.
216
-
217
- b) The work must carry prominent notices stating that it is
218
- released under this License and any conditions added under section
219
- 7. This requirement modifies the requirement in section 4 to
220
- "keep intact all notices".
221
-
222
- c) You must license the entire work, as a whole, under this
223
- License to anyone who comes into possession of a copy. This
224
- License will therefore apply, along with any applicable section 7
225
- additional terms, to the whole of the work, and all its parts,
226
- regardless of how they are packaged. This License gives no
227
- permission to license the work in any other way, but it does not
228
- invalidate such permission if you have separately received it.
229
-
230
- d) If the work has interactive user interfaces, each must display
231
- Appropriate Legal Notices; however, if the Program has interactive
232
- interfaces that do not display Appropriate Legal Notices, your
233
- work need not make them do so.
234
-
235
- A compilation of a covered work with other separate and independent
236
- works, which are not by their nature extensions of the covered work,
237
- and which are not combined with it such as to form a larger program,
238
- in or on a volume of a storage or distribution medium, is called an
239
- "aggregate" if the compilation and its resulting copyright are not
240
- used to limit the access or legal rights of the compilation's users
241
- beyond what the individual works permit. Inclusion of a covered work
242
- in an aggregate does not cause this License to apply to the other
243
- parts of the aggregate.
244
-
245
- 6. Conveying Non-Source Forms.
246
-
247
- You may convey a covered work in object code form under the terms
248
- of sections 4 and 5, provided that you also convey the
249
- machine-readable Corresponding Source under the terms of this License,
250
- in one of these ways:
251
-
252
- a) Convey the object code in, or embodied in, a physical product
253
- (including a physical distribution medium), accompanied by the
254
- Corresponding Source fixed on a durable physical medium
255
- customarily used for software interchange.
256
-
257
- b) Convey the object code in, or embodied in, a physical product
258
- (including a physical distribution medium), accompanied by a
259
- written offer, valid for at least three years and valid for as
260
- long as you offer spare parts or customer support for that product
261
- model, to give anyone who possesses the object code either (1) a
262
- copy of the Corresponding Source for all the software in the
263
- product that is covered by this License, on a durable physical
264
- medium customarily used for software interchange, for a price no
265
- more than your reasonable cost of physically performing this
266
- conveying of source, or (2) access to copy the
267
- Corresponding Source from a network server at no charge.
268
-
269
- c) Convey individual copies of the object code with a copy of the
270
- written offer to provide the Corresponding Source. This
271
- alternative is allowed only occasionally and noncommercially, and
272
- only if you received the object code with such an offer, in accord
273
- with subsection 6b.
274
-
275
- d) Convey the object code by offering access from a designated
276
- place (gratis or for a charge), and offer equivalent access to the
277
- Corresponding Source in the same way through the same place at no
278
- further charge. You need not require recipients to copy the
279
- Corresponding Source along with the object code. If the place to
280
- copy the object code is a network server, the Corresponding Source
281
- may be on a different server (operated by you or a third party)
282
- that supports equivalent copying facilities, provided you maintain
283
- clear directions next to the object code saying where to find the
284
- Corresponding Source. Regardless of what server hosts the
285
- Corresponding Source, you remain obligated to ensure that it is
286
- available for as long as needed to satisfy these requirements.
287
-
288
- e) Convey the object code using peer-to-peer transmission, provided
289
- you inform other peers where the object code and Corresponding
290
- Source of the work are being offered to the general public at no
291
- charge under subsection 6d.
292
-
293
- A separable portion of the object code, whose source code is excluded
294
- from the Corresponding Source as a System Library, need not be
295
- included in conveying the object code work.
296
-
297
- A "User Product" is either (1) a "consumer product", which means any
298
- tangible personal property which is normally used for personal, family,
299
- or household purposes, or (2) anything designed or sold for incorporation
300
- into a dwelling. In determining whether a product is a consumer product,
301
- doubtful cases shall be resolved in favor of coverage. For a particular
302
- product received by a particular user, "normally used" refers to a
303
- typical or common use of that class of product, regardless of the status
304
- of the particular user or of the way in which the particular user
305
- actually uses, or expects or is expected to use, the product. A product
306
- is a consumer product regardless of whether the product has substantial
307
- commercial, industrial or non-consumer uses, unless such uses represent
308
- the only significant mode of use of the product.
309
-
310
- "Installation Information" for a User Product means any methods,
311
- procedures, authorization keys, or other information required to install
312
- and execute modified versions of a covered work in that User Product from
313
- a modified version of its Corresponding Source. The information must
314
- suffice to ensure that the continued functioning of the modified object
315
- code is in no case prevented or interfered with solely because
316
- modification has been made.
317
-
318
- If you convey an object code work under this section in, or with, or
319
- specifically for use in, a User Product, and the conveying occurs as
320
- part of a transaction in which the right of possession and use of the
321
- User Product is transferred to the recipient in perpetuity or for a
322
- fixed term (regardless of how the transaction is characterized), the
323
- Corresponding Source conveyed under this section must be accompanied
324
- by the Installation Information. But this requirement does not apply
325
- if neither you nor any third party retains the ability to install
326
- modified object code on the User Product (for example, the work has
327
- been installed in ROM).
328
-
329
- The requirement to provide Installation Information does not include a
330
- requirement to continue to provide support service, warranty, or updates
331
- for a work that has been modified or installed by the recipient, or for
332
- the User Product in which it has been modified or installed. Access to a
333
- network may be denied when the modification itself materially and
334
- adversely affects the operation of the network or violates the rules and
335
- protocols for communication across the network.
336
-
337
- Corresponding Source conveyed, and Installation Information provided,
338
- in accord with this section must be in a format that is publicly
339
- documented (and with an implementation available to the public in
340
- source code form), and must require no special password or key for
341
- unpacking, reading or copying.
342
-
343
- 7. Additional Terms.
344
-
345
- "Additional permissions" are terms that supplement the terms of this
346
- License by making exceptions from one or more of its conditions.
347
- Additional permissions that are applicable to the entire Program shall
348
- be treated as though they were included in this License, to the extent
349
- that they are valid under applicable law. If additional permissions
350
- apply only to part of the Program, that part may be used separately
351
- under those permissions, but the entire Program remains governed by
352
- this License without regard to the additional permissions.
353
-
354
- When you convey a copy of a covered work, you may at your option
355
- remove any additional permissions from that copy, or from any part of
356
- it. (Additional permissions may be written to require their own
357
- removal in certain cases when you modify the work.) You may place
358
- additional permissions on material, added by you to a covered work,
359
- for which you have or can give appropriate copyright permission.
360
-
361
- Notwithstanding any other provision of this License, for material you
362
- add to a covered work, you may (if authorized by the copyright holders of
363
- that material) supplement the terms of this License with terms:
364
-
365
- a) Disclaiming warranty or limiting liability differently from the
366
- terms of sections 15 and 16 of this License; or
367
-
368
- b) Requiring preservation of specified reasonable legal notices or
369
- author attributions in that material or in the Appropriate Legal
370
- Notices displayed by works containing it; or
371
-
372
- c) Prohibiting misrepresentation of the origin of that material, or
373
- requiring that modified versions of such material be marked in
374
- reasonable ways as different from the original version; or
375
-
376
- d) Limiting the use for publicity purposes of names of licensors or
377
- authors of the material; or
378
-
379
- e) Declining to grant rights under trademark law for use of some
380
- trade names, trademarks, or service marks; or
381
-
382
- f) Requiring indemnification of licensors and authors of that
383
- material by anyone who conveys the material (or modified versions of
384
- it) with contractual assumptions of liability to the recipient, for
385
- any liability that these contractual assumptions directly impose on
386
- those licensors and authors.
387
-
388
- All other non-permissive additional terms are considered "further
389
- restrictions" within the meaning of section 10. If the Program as you
390
- received it, or any part of it, contains a notice stating that it is
391
- governed by this License along with a term that is a further
392
- restriction, you may remove that term. If a license document contains
393
- a further restriction but permits relicensing or conveying under this
394
- License, you may add to a covered work material governed by the terms
395
- of that license document, provided that the further restriction does
396
- not survive such relicensing or conveying.
397
-
398
- If you add terms to a covered work in accord with this section, you
399
- must place, in the relevant source files, a statement of the
400
- additional terms that apply to those files, or a notice indicating
401
- where to find the applicable terms.
402
-
403
- Additional terms, permissive or non-permissive, may be stated in the
404
- form of a separately written license, or stated as exceptions;
405
- the above requirements apply either way.
406
-
407
- 8. Termination.
408
-
409
- You may not propagate or modify a covered work except as expressly
410
- provided under this License. Any attempt otherwise to propagate or
411
- modify it is void, and will automatically terminate your rights under
412
- this License (including any patent licenses granted under the third
413
- paragraph of section 11).
414
-
415
- However, if you cease all violation of this License, then your
416
- license from a particular copyright holder is reinstated (a)
417
- provisionally, unless and until the copyright holder explicitly and
418
- finally terminates your license, and (b) permanently, if the copyright
419
- holder fails to notify you of the violation by some reasonable means
420
- prior to 60 days after the cessation.
421
-
422
- Moreover, your license from a particular copyright holder is
423
- reinstated permanently if the copyright holder notifies you of the
424
- violation by some reasonable means, this is the first time you have
425
- received notice of violation of this License (for any work) from that
426
- copyright holder, and you cure the violation prior to 30 days after
427
- your receipt of the notice.
428
-
429
- Termination of your rights under this section does not terminate the
430
- licenses of parties who have received copies or rights from you under
431
- this License. If your rights have been terminated and not permanently
432
- reinstated, you do not qualify to receive new licenses for the same
433
- material under section 10.
434
-
435
- 9. Acceptance Not Required for Having Copies.
436
-
437
- You are not required to accept this License in order to receive or
438
- run a copy of the Program. Ancillary propagation of a covered work
439
- occurring solely as a consequence of using peer-to-peer transmission
440
- to receive a copy likewise does not require acceptance. However,
441
- nothing other than this License grants you permission to propagate or
442
- modify any covered work. These actions infringe copyright if you do
443
- not accept this License. Therefore, by modifying or propagating a
444
- covered work, you indicate your acceptance of this License to do so.
445
-
446
- 10. Automatic Licensing of Downstream Recipients.
447
-
448
- Each time you convey a covered work, the recipient automatically
449
- receives a license from the original licensors, to run, modify and
450
- propagate that work, subject to this License. You are not responsible
451
- for enforcing compliance by third parties with this License.
452
-
453
- An "entity transaction" is a transaction transferring control of an
454
- organization, or substantially all assets of one, or subdividing an
455
- organization, or merging organizations. If propagation of a covered
456
- work results from an entity transaction, each party to that
457
- transaction who receives a copy of the work also receives whatever
458
- licenses to the work the party's predecessor in interest had or could
459
- give under the previous paragraph, plus a right to possession of the
460
- Corresponding Source of the work from the predecessor in interest, if
461
- the predecessor has it or can get it with reasonable efforts.
462
-
463
- You may not impose any further restrictions on the exercise of the
464
- rights granted or affirmed under this License. For example, you may
465
- not impose a license fee, royalty, or other charge for exercise of
466
- rights granted under this License, and you may not initiate litigation
467
- (including a cross-claim or counterclaim in a lawsuit) alleging that
468
- any patent claim is infringed by making, using, selling, offering for
469
- sale, or importing the Program or any portion of it.
470
-
471
- 11. Patents.
472
-
473
- A "contributor" is a copyright holder who authorizes use under this
474
- License of the Program or a work on which the Program is based. The
475
- work thus licensed is called the contributor's "contributor version".
476
-
477
- A contributor's "essential patent claims" are all patent claims
478
- owned or controlled by the contributor, whether already acquired or
479
- hereafter acquired, that would be infringed by some manner, permitted
480
- by this License, of making, using, or selling its contributor version,
481
- but do not include claims that would be infringed only as a
482
- consequence of further modification of the contributor version. For
483
- purposes of this definition, "control" includes the right to grant
484
- patent sublicenses in a manner consistent with the requirements of
485
- this License.
486
-
487
- Each contributor grants you a non-exclusive, worldwide, royalty-free
488
- patent license under the contributor's essential patent claims, to
489
- make, use, sell, offer for sale, import and otherwise run, modify and
490
- propagate the contents of its contributor version.
491
-
492
- In the following three paragraphs, a "patent license" is any express
493
- agreement or commitment, however denominated, not to enforce a patent
494
- (such as an express permission to practice a patent or covenant not to
495
- sue for patent infringement). To "grant" such a patent license to a
496
- party means to make such an agreement or commitment not to enforce a
497
- patent against the party.
498
-
499
- If you convey a covered work, knowingly relying on a patent license,
500
- and the Corresponding Source of the work is not available for anyone
501
- to copy, free of charge and under the terms of this License, through a
502
- publicly available network server or other readily accessible means,
503
- then you must either (1) cause the Corresponding Source to be so
504
- available, or (2) arrange to deprive yourself of the benefit of the
505
- patent license for this particular work, or (3) arrange, in a manner
506
- consistent with the requirements of this License, to extend the patent
507
- license to downstream recipients. "Knowingly relying" means you have
508
- actual knowledge that, but for the patent license, your conveying the
509
- covered work in a country, or your recipient's use of the covered work
510
- in a country, would infringe one or more identifiable patents in that
511
- country that you have reason to believe are valid.
512
-
513
- If, pursuant to or in connection with a single transaction or
514
- arrangement, you convey, or propagate by procuring conveyance of, a
515
- covered work, and grant a patent license to some of the parties
516
- receiving the covered work authorizing them to use, propagate, modify
517
- or convey a specific copy of the covered work, then the patent license
518
- you grant is automatically extended to all recipients of the covered
519
- work and works based on it.
520
-
521
- A patent license is "discriminatory" if it does not include within
522
- the scope of its coverage, prohibits the exercise of, or is
523
- conditioned on the non-exercise of one or more of the rights that are
524
- specifically granted under this License. You may not convey a covered
525
- work if you are a party to an arrangement with a third party that is
526
- in the business of distributing software, under which you make payment
527
- to the third party based on the extent of your activity of conveying
528
- the work, and under which the third party grants, to any of the
529
- parties who would receive the covered work from you, a discriminatory
530
- patent license (a) in connection with copies of the covered work
531
- conveyed by you (or copies made from those copies), or (b) primarily
532
- for and in connection with specific products or compilations that
533
- contain the covered work, unless you entered into that arrangement,
534
- or that patent license was granted, prior to 28 March 2007.
535
-
536
- Nothing in this License shall be construed as excluding or limiting
537
- any implied license or other defenses to infringement that may
538
- otherwise be available to you under applicable patent law.
539
-
540
- 12. No Surrender of Others' Freedom.
541
-
542
- If conditions are imposed on you (whether by court order, agreement or
543
- otherwise) that contradict the conditions of this License, they do not
544
- excuse you from the conditions of this License. If you cannot convey a
545
- covered work so as to satisfy simultaneously your obligations under this
546
- License and any other pertinent obligations, then as a consequence you may
547
- not convey it at all. For example, if you agree to terms that obligate you
548
- to collect a royalty for further conveying from those to whom you convey
549
- the Program, the only way you could satisfy both those terms and this
550
- License would be to refrain entirely from conveying the Program.
551
-
552
- 13. Use with the GNU Affero General Public License.
553
-
554
- Notwithstanding any other provision of this License, you have
555
- permission to link or combine any covered work with a work licensed
556
- under version 3 of the GNU Affero General Public License into a single
557
- combined work, and to convey the resulting work. The terms of this
558
- License will continue to apply to the part which is the covered work,
559
- but the special requirements of the GNU Affero General Public License,
560
- section 13, concerning interaction through a network will apply to the
561
- combination as such.
562
-
563
- 14. Revised Versions of this License.
564
-
565
- The Free Software Foundation may publish revised and/or new versions of
566
- the GNU General Public License from time to time. Such new versions will
567
- be similar in spirit to the present version, but may differ in detail to
568
- address new problems or concerns.
569
-
570
- Each version is given a distinguishing version number. If the
571
- Program specifies that a certain numbered version of the GNU General
572
- Public License "or any later version" applies to it, you have the
573
- option of following the terms and conditions either of that numbered
574
- version or of any later version published by the Free Software
575
- Foundation. If the Program does not specify a version number of the
576
- GNU General Public License, you may choose any version ever published
577
- by the Free Software Foundation.
578
-
579
- If the Program specifies that a proxy can decide which future
580
- versions of the GNU General Public License can be used, that proxy's
581
- public statement of acceptance of a version permanently authorizes you
582
- to choose that version for the Program.
583
-
584
- Later license versions may give you additional or different
585
- permissions. However, no additional obligations are imposed on any
586
- author or copyright holder as a result of your choosing to follow a
587
- later version.
588
-
589
- 15. Disclaimer of Warranty.
590
-
591
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592
- APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594
- OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597
- IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598
- ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599
-
600
- 16. Limitation of Liability.
601
-
602
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604
- THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605
- GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606
- USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608
- PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609
- EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610
- SUCH DAMAGES.
611
-
612
- 17. Interpretation of Sections 15 and 16.
613
-
614
- If the disclaimer of warranty and limitation of liability provided
615
- above cannot be given local legal effect according to their terms,
616
- reviewing courts shall apply local law that most closely approximates
617
- an absolute waiver of all civil liability in connection with the
618
- Program, unless a warranty or assumption of liability accompanies a
619
- copy of the Program in return for a fee.
620
-
621
- END OF TERMS AND CONDITIONS
622
-
623
- How to Apply These Terms to Your New Programs
624
-
625
- If you develop a new program, and you want it to be of the greatest
626
- possible use to the public, the best way to achieve this is to make it
627
- free software which everyone can redistribute and change under these terms.
628
-
629
- To do so, attach the following notices to the program. It is safest
630
- to attach them to the start of each source file to most effectively
631
- state the exclusion of warranty; and each file should have at least
632
- the "copyright" line and a pointer to where the full notice is found.
633
-
634
- <one line to give the program's name and a brief idea of what it does.>
635
- Copyright (C) <year> <name of author>
636
-
637
- This program is free software: you can redistribute it and/or modify
638
- it under the terms of the GNU General Public License as published by
639
- the Free Software Foundation, either version 3 of the License, or
640
- (at your option) any later version.
641
-
642
- This program is distributed in the hope that it will be useful,
643
- but WITHOUT ANY WARRANTY; without even the implied warranty of
644
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645
- GNU General Public License for more details.
646
-
647
- You should have received a copy of the GNU General Public License
648
- along with this program. If not, see <http://www.gnu.org/licenses/>.
649
-
650
- Also add information on how to contact you by electronic and paper mail.
651
-
652
- If the program does terminal interaction, make it output a short
653
- notice like this when it starts in an interactive mode:
654
-
655
- <program> Copyright (C) <year> <name of author>
656
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657
- This is free software, and you are welcome to redistribute it
658
- under certain conditions; type `show c' for details.
659
-
660
- The hypothetical commands `show w' and `show c' should show the appropriate
661
- parts of the General Public License. Of course, your program's commands
662
- might be different; for a GUI interface, you would use an "about box".
663
-
664
- You should also get your employer (if you work as a programmer) or school,
665
- if any, to sign a "copyright disclaimer" for the program, if necessary.
666
- For more information on this, and how to apply and follow the GNU GPL, see
667
- <http://www.gnu.org/licenses/>.
668
-
669
- The GNU General Public License does not permit incorporating your program
670
- into proprietary programs. If your program is a subroutine library, you
671
- may consider it more useful to permit linking proprietary applications with
672
- the library. If this is what you want to do, use the GNU Lesser General
673
- Public License instead of this License. But first, please read
674
- <http://www.gnu.org/philosophy/why-not-lgpl.html>.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -1,57 +1,167 @@
1
- === Secure WordPress ===
2
- Contributors: WebsiteDefender
3
- Author: WebsiteDefender
4
- Tags: secure, notice, hack, hacked, protection, version, security
 
5
  Requires at least: 3.0
6
- Tested up to: 3.2.1
7
  Stable tag: trunk
8
 
9
- WordPress Security Plugin
10
 
11
  == Description ==
12
- Secure WordPress beefs up the security of your WordPress installation by removing error information on login pages, adds index.html to plugin directories, hides the WordPress version and much more.
13
-
14
- 1. Removes error-information on login-page
15
- 1. Adds index.php plugin-directory (virtual)
16
- 1. Removes the wp-version, except in admin-area
17
- 1. Removes Really Simple Discovery
18
- 1. Removes Windows Live Writer
19
- 1. Removes core update information for non-admins
20
- 1. Removes plugin-update information for non-admins
21
- 1. Removes theme-update information for non-admins (only WP 2.8 and higher)
22
- 1. Hides wp-version in backend-dashboard for non-admins
23
- 1. Removes version on URLs from scripts and stylesheets only on frontend
24
- 1. Blocks any bad queries that could be harmful to your WordPress website
25
 
26
  = Requirements =
27
- * WordPress version 3.0 and higher (tested at 3.1)
 
28
  * PHP5 (tested with PHP Interpreter >= 5.2.9)
29
 
30
- = Localizations =
31
- Idea, first version and german translation by [Frank B&uuml;ltge](http://bueltge.de "bueltge.de"), Italian translation by [Gianni Diurno](http://gidibao.net/ "gidibao.net"), Polish translation by Michal Maciejewski, Belorussian file by [Fat Cow](http://www.fatcow.com/ "www.fatcow.com"), Ukrainian translation by [AzzePis](http://wordpress.co.ua/plugins/ "wordpress.co.ua/plugins/"), Russian language by [Dmitriy Donchenko](http://blogproblog.com/ "blogproblog.com"), Hungarian language files by [K&ouml;rmendi P&eacute;ter](http://www.seo-hungary.com/ "www.seo-hungary.com"), Danish language files by [GeorgWP](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=175 "S&oslash;g efter downloads")m Spanish language files by [Pablo Jim&eacute;nez](http://www.ministeriosccc.org "www.ministeriosccc.org"), Chinese language (zh_CN) by [tanghaiwei](http://dd54.net), French translation files by [Jez007](http://forum.gmstemple.com/ "forum.gmstemple.com"), Japanese translation by [Fumito Mizuno](http://ounziw.com/ "Standing on the Shoulder of Linus"), Dutch translation by [Rene](http://wpwebshop.com "wpwebshop.com"), Persian language files by [ALiRezaCH](http://alirezach.co.cc), Romanian translation by [ Selco Resita]( http://www.selco-computers.ro "selco-computers.ro") and Arabic language files by [مدونة](http://www.r-sn.com/wp), Turkish translation by [Nightmare17] (http://sanalespri.com). WebsiteDefender would like to thank everyone that worked on making Secure WordPress a success.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  == Installation ==
34
- 1. Make a backup of your current installation
35
- 1. Unpack the download-package
36
- 1. Upload the extracted files to the /wp-content/plugins/ directory
37
- 1. Configure the desired options and activate the plugin from the 'Plugins' menu in WordPress
38
 
39
- If you do encounter any bugs, or have comments or suggestions, please contact the WebsiteDefender team on support@websitedefender.com
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  == Screenshots ==
42
- 1. options-area (WordPress 3.1)
 
 
 
 
43
 
44
 
45
  == Other Notes ==
46
  = License =
47
  Good news, this plugin is free for everyone! Since it's released under the GPL, you can use it free of charge on your personal or commercial blog.
48
 
49
- = Translations =
50
- The plugin comes with various translations, please refer to the [WordPress Codex](http://codex.wordpress.org/Installing_WordPress_in_Your_Language "Installing WordPress in Your Language") for more information about activating the translation. If you want to help to translate the plugin to your language, please have a look at the .pot file which contains all defintions and may be used with a [gettext](http://www.gnu.org/software/gettext/) editor like [Poedit](http://www.poedit.net/) or the very fine plugin [CodeStyling Localization](http://www.code-styling.de/english/development/wordpress-plugin-codestyling-localization-en "Codestyling Localization") for WordPresss.
 
 
 
51
 
52
 
53
  == Changelog ==
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  = v2.0.6 =
56
  * New setting: Option to open / close WebsiteDefender dashboard widget
57
  * Update: Internal code updates
@@ -62,7 +172,7 @@ The plugin comes with various translations, please refer to the [WordPress Codex
62
  * Update: Minor internal updates
63
 
64
  = v2.0.4 =
65
- * Feature: The WebsiteDefender RSS widget added to the admin dashboard
66
  * Update: The plug-in has been made compatible with WP Security Scan and WebsiteDefender WordPress Security
67
  * Feature: Turkish language files added.
68
 
@@ -98,7 +208,7 @@ The plugin comes with various translations, please refer to the [WordPress Codex
98
  = v1.0.3 (10/06/2010) =
99
  * Bugfix: include JS for remove version in backend for Non-Admins
100
  * Bugfix: change for php-warning at update options
101
- * Maintenance: update italien language files
102
  * Maintenance: update german language files
103
  * Maintenance: update pot file
104
 
@@ -111,7 +221,7 @@ The plugin comes with various translations, please refer to the [WordPress Codex
111
  * add more hooks to remove WordPress Version; was change with WP3.0
112
 
113
  = v1.0 (07/09/2010) =
114
- * relese stable version
115
  * small changes on the source
116
  * change owner of the plugin
117
 
@@ -123,7 +233,7 @@ The plugin comes with various translations, please refer to the [WordPress Codex
123
  * add free malware and vulnerabilities scan for test this; the scan has most interested informations and scan all of the server
124
 
125
  = v0.8.4 (05/05/2010) =
126
- * add methode for use the plugin also on ssl-installs
127
  * change uninstall method
128
 
129
  = v0.8.3 (04/14/2010) =
@@ -134,7 +244,7 @@ The plugin comes with various translations, please refer to the [WordPress Codex
134
  * add french language files
135
 
136
  = v0.8.1 (03/08/2010) =
137
- * remove versions-informations on backend with javascript
138
  * small changes
139
 
140
  = v0.8 (03/04/2010) =
@@ -158,4 +268,4 @@ The plugin comes with various translations, please refer to the [WordPress Codex
158
 
159
  = v0.3.8 (06/22/2009) =
160
  * add function to remove theme-update information for non-admins
161
- * rescan language file; edit de_DE
1
+ === Acunetix Secure WordPress ===
2
+ Author: Acunetix
3
+ Contributors: Acunetix
4
+ Tags: security, securityscan, chmod, permissions, admin, administration, authentication, database, dashboard, post, notification, password, plugin, posts,
5
+ plugins, private, protection, tracking, wordpress
6
  Requires at least: 3.0
7
+ Tested up to: 3.6
8
  Stable tag: trunk
9
 
10
+ Scans your WordPress installation for security vulnerabilities.
11
 
12
  == Description ==
13
+ Acunetix Secure WordPress plugin is a free and comprehensive security tool that helps you secure your WordPress
14
+ installation and suggests corrective measures for: securing file permissions, security of the database, version hiding,
15
+ WordPress admin protection and lots more.
16
+
17
+ Acunetix Secure WordPress checks your WordPress website/blog for security vulnerabilities and suggests corrective actions such as:
18
+
19
+ 1. Passwords
20
+ 2. File permissions
21
+ 3. Database security
22
+ 4. Version hiding
23
+ 5. WordPress admin protection/security
24
+ 6. Removes WP Generator META tag from core code
 
25
 
26
  = Requirements =
27
+
28
+ * WordPress version 3.0 and higher
29
  * PHP5 (tested with PHP Interpreter >= 5.2.9)
30
 
31
+ For more information on the Acunetix WP Security plug-in and other WordPress security news, visit the
32
+ <a href="http://www.acunetix.com/blog/" target="_blank">Acunetix Blog</a> and join
33
+ our <a href="http://www.facebook.com/Acunetix" target="_blank">Facebook</a> page. Post any questions or feedback
34
+ on the <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
35
+
36
+
37
+ = Key security features: =
38
+
39
+ * Easy backup of WordPress database for disaster recovery
40
+ * Removal of error-information on login-page
41
+ * Addition of index.php to the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listings
42
+ * Removal of wp-version, except in admin-area
43
+ * Removal of Really Simple Discovery meta tag
44
+ * Removal of Windows Live Writer meta tag
45
+ * Removal of core update information for non-admins
46
+ * Removal of plugin-update information for non-admins
47
+ * Removal of theme-update information for non-admins (only WP 2.8 and higher)
48
+ * Hiding of wp-version in backend-dashboard for non-admins
49
+ * Removal of version in URLs from scripts and stylesheets only on frontend
50
+ * Reporting of security overview after WordPress blog is scanned
51
+ * Reporting of file permissions following security checks
52
+ * Live traffic tool to monitor your website activity in real time
53
+ * Integrated tool to change the database prefix
54
+ * Disabling of database error reporting (if enabled)
55
+ * Disabling of PHP error reporting
56
+
57
+ For more information on the Acunetix Secure WordPress plug-in and other WordPress security news, visit the
58
+ <a href="http://www.acunetix.com/blog/" target="_blank">Acunetix Blog</a> and join
59
+ our <a href="http://www.facebook.com/Acunetix" target="_blank">Facebook</a> page. Post any questions or feedback
60
+ on the <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
61
+
62
+
63
 
64
  == Installation ==
 
 
 
 
65
 
66
+ * Make a backup of your current installation
67
+ * Unpack the downloaded package
68
+ * Upload the extracted files to the /wp-content/plugins/ directory
69
+ * Activate the plugin through the 'Plugins' menu in WordPress
70
+
71
+ If you encounter any bugs, or have comments or suggestions, please post them on the
72
+ <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
73
+
74
+ For more information on the Acunetix Secure WordPress plug-in and other WordPress security news, visit the
75
+ <a href="http://www.acunetix.com/blog/" target="_blank">Acunetix Blog</a> and join
76
+ our <a href="http://www.facebook.com/Acunetix" target="_blank">Facebook</a> page. Post any questions or feedback
77
+ on the <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
78
+
79
+ == WordPress Security ==
80
+
81
+ Security Scanner:
82
+
83
+ 1. Scans Wordpress installation for file/directory permissions vulnerabilites
84
+ 2. Recommends corrective actions
85
+ 3. Scans for general security vulnerabilities
86
+
87
+
88
+ For more information on the Acunetix Secure WordPress plug-in and other WordPress security news, visit the
89
+ <a href="http://www.acunetix.com/blog/" target="_blank">Acunetix Blog</a> and join
90
+ our <a href="http://www.facebook.com/Acunetix" target="_blank">Facebook</a> page. Post any questions or feedback
91
+ on the <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
92
+
93
+
94
+ == Frequently Asked Questions ==
95
+
96
+ = Can I deactivate Acunetix Secure WordPress once I've run it once? =
97
+
98
+ No. Acunetix Secure WordPress needs to be left activated to work. Version hiding,
99
+ turning off DB errors, removing WP ID META tag from HTML output, and other
100
+ functionality will cease if you deactivate the plugin.
101
+
102
+ = How do I change the file permissions on my WordPress installation? =
103
+
104
+ From the Linux command line (for advanced users):
105
+ chmod xxx filename.ext
106
+ (replace xxx with with the permissions settings for the file or folder).
107
+
108
+ From your FTP client:
109
+ Most FTP clients, such as FileZilla, etc, allow for changing file
110
+ permissions. Please consult your client's documentation for your specific
111
+ directions.
112
+
113
+ For more information, please visit http://codex.wordpress.org/Changing_File_Permissions
114
+
115
+ = Why do I need to hide my version of WordPress? =
116
+
117
+ Many attackers and automated tools will try and determine software versions
118
+ before launching exploit code. Removing your WordPress blog version may
119
+ discourage some attackers and certainly will mitigate virus and malware programs
120
+ that rely on software versions.
121
+
122
+ For more information on the Acunetix Secure WordPress plug-in and other WordPress security news, visit the
123
+ <a href="http://www.acunetix.com/blog/" target="_blank">Acunetix Blog</a> and join
124
+ our <a href="http://www.facebook.com/Acunetix" target="_blank">Facebook</a> page. Post any questions or feedback
125
+ on the <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
126
+
127
 
128
  == Screenshots ==
129
+
130
+ 1. The File Scan Report
131
+ 2. The Settings page, displaying all configurable options
132
+ 3. The Live Traffic page
133
+ 4. The new Dashboard page
134
 
135
 
136
  == Other Notes ==
137
  = License =
138
  Good news, this plugin is free for everyone! Since it's released under the GPL, you can use it free of charge on your personal or commercial blog.
139
 
140
+ For more information on the Acunetix Secure WordPress plug-in and other WordPress security news, visit the
141
+ <a href="http://www.acunetix.com/blog/" target="_blank">Acunetix Blog</a> and join
142
+ our <a href="http://www.facebook.com/Acunetix" target="_blank">Facebook</a> page. Post any questions or feedback
143
+ on the <a href="http://wordpress.org/support/plugin/secure-wordpress" target="_blank">Acunetix Secure WordPress plug-in forum</a>.
144
+
145
 
146
 
147
  == Changelog ==
148
 
149
+ = 3.0.0 =
150
+ * Complete core update
151
+ * Added live traffic functionality
152
+ * Added check for the wp-config.php file one level above if not found in the install directory
153
+ * Fixed broken functionalities
154
+ * Security settings are now configurable
155
+ * Removed all languages
156
+
157
+
158
+ = v2.0.8 =
159
+ * Removed the registration requirement
160
+
161
+ = v2.0.7 =
162
+ * Update: Updated the deprecated function call get_bloginfo('siteurl') to get_bloginfo('url')
163
+ * Update: Updated validation for plug-in form fields (email address, user name, target id, etc.)
164
+
165
  = v2.0.6 =
166
  * New setting: Option to open / close WebsiteDefender dashboard widget
167
  * Update: Internal code updates
172
  * Update: Minor internal updates
173
 
174
  = v2.0.4 =
175
+ * Feature: The Acunetix RSS widget added to the admin dashboard
176
  * Update: The plug-in has been made compatible with WP Security Scan and WebsiteDefender WordPress Security
177
  * Feature: Turkish language files added.
178
 
208
  = v1.0.3 (10/06/2010) =
209
  * Bugfix: include JS for remove version in backend for Non-Admins
210
  * Bugfix: change for php-warning at update options
211
+ * Maintenance: update italian language files
212
  * Maintenance: update german language files
213
  * Maintenance: update pot file
214
 
221
  * add more hooks to remove WordPress Version; was change with WP3.0
222
 
223
  = v1.0 (07/09/2010) =
224
+ * release stable version
225
  * small changes on the source
226
  * change owner of the plugin
227
 
233
  * add free malware and vulnerabilities scan for test this; the scan has most interested informations and scan all of the server
234
 
235
  = v0.8.4 (05/05/2010) =
236
+ * add method for use the plugin also on ssl-installs
237
  * change uninstall method
238
 
239
  = v0.8.3 (04/14/2010) =
244
  * add french language files
245
 
246
  = v0.8.1 (03/08/2010) =
247
+ * remove versions-information on backend with javascript
248
  * small changes
249
 
250
  = v0.8 (03/04/2010) =
268
 
269
  = v0.3.8 (06/22/2009) =
270
  * add function to remove theme-update information for non-admins
271
+ * rescan language file; edit de_DE
res/backups/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/css/acx-styles-extra.css ADDED
@@ -0,0 +1 @@
 
1
+ .update-plugins, #login #login_error, #wp-version-message, #footer-upgrade {display: none !important;}
res/css/blog.css ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ #pageblog { margin: 10px 0 10px 16px;}
3
+
4
+ #pageblog #header {
5
+ background: transparent;
6
+ padding: 10px 10px;
7
+ overflow: hidden;
8
+ border-bottom: 1px solid #cccccc;
9
+ background: url("../images/blog/featured-slider-bg.jpg") no-repeat center top;
10
+ }
11
+ #pageblog #header #logo {
12
+ float: left;
13
+ width: 301px;
14
+ margin: 0 13px 0 0;
15
+ }
16
+ #pageblog #header #logo a {
17
+ width: 300px;
18
+ height: 70px;
19
+ float: left;
20
+ text-indent: -9999px;
21
+ background: url("../images/blog/logo.png") no-repeat left top;
22
+ }
23
+ #pageblog #header #main-nav {
24
+ float: right;
25
+ zoom: 1;
26
+ display: block;
27
+ margin: 27px 0 0 0;
28
+ }
29
+ #pageblog #header #main-nav:after {
30
+ content: '\\0020';
31
+ display: block;
32
+ height: 0;
33
+ clear: both;
34
+ visibility: hidden;
35
+ font-size: 0;
36
+ }
37
+
38
+ #pageblog #header #main-nav .facebook, #pageblog #header #main-nav .twitter {
39
+ float: left;
40
+ width: 16px;
41
+ height: 16px;
42
+ margin: 4px 0 0 10px;
43
+ text-indent: -9999px;
44
+ }
45
+ #pageblog #header #main-nav .facebook { background: url("../images/blog/ico-facebook.png") no-repeat left top; }
46
+ #pageblog #header #main-nav .twitter { background: url("../images/blog/ico-twitter.png") no-repeat left top; }
47
+
48
+ #pageblog #content {
49
+ background: none repeat scroll 0 0 #F5F5F5;
50
+ border-top: 1px solid #FFFFFF;
51
+ padding: 10px 0 5px;
52
+ width: 100%;
53
+ }
54
+ #pageblog #content #feed-list{ list-style-position: outside; list-style-type: none; margin: 10px 30px;}
55
+ #pageblog #content #feed-list li {
56
+ padding: 2px 0;
57
+ }
58
+ #pageblog #content #feed-list li h4 {
59
+ background: url('../images/logo-small.png') no-repeat left center;
60
+ padding: 2px 0 2px 25px;
61
+ }
62
+
63
+
64
+
65
+
66
+
res/css/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/css/styles.alerts.css ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * CSS used for alerts page
3
+ *
4
+ **/
5
+
6
+ /** Indicators **/
7
+ .wsdplugin_content td.wsdplugin_alert_indicator
8
+ {
9
+ text-align: center;
10
+ vertical-align: middle;
11
+ width: 14px;
12
+ height: 17px;
13
+ }
14
+ .wsdplugin_content td.wsdplugin_alert_indicator.wsdplugin_alert_indicator_info { background: transparent url('../images/indicator-green.png') no-repeat scroll center center; }
15
+ .wsdplugin_content td.wsdplugin_alert_indicator.wsdplugin_alert_indicator_low { background: transparent url('../images/indicator-blue.png') no-repeat scroll center center; }
16
+ .wsdplugin_content td.wsdplugin_alert_indicator.wsdplugin_alert_indicator_medium { background: transparent url('../images/indicator-yellow.png') no-repeat scroll center center; }
17
+ .wsdplugin_content td.wsdplugin_alert_indicator.wsdplugin_alert_indicator_critical { background: transparent url('../images/indicator-red.png') no-repeat scroll center center; }
18
+
19
+ /** Actions Bar **/
20
+ .wsdplugin_content .wsdplugin_page_alerts_action_bar .wsdplugin_alerts_select_actions select,
21
+ .wsdplugin_content .wsdplugin_page_alerts_action_bar .wsdplugin_alerts_bulk_actions select,
22
+ .wsdplugin_content .wsdplugin_page_alerts_action_bar .wsdplugin_alerts_filter_severity select { width: 130px; }
23
+ .wsdplugin_content .wsdplugin_page_alerts_action_bar .wsdplugin_alerts_sort .wsdplugin_alerts_sort_field { width: 120px; }
24
+ .wsdplugin_content .wsdplugin_page_alerts_action_bar .wsdplugin_alerts_sort .wsdplugin_alerts_sort_dir { width: 110px; }
25
+ .wsdplugin_content .wsdplugin_alerts_show_view select { width: 90px; }
26
+
27
+ /** Alert Page **/
28
+ .wsdplugin_content .wsdplugin_page_alerts { }
29
+ .wsdplugin_content .wsdplugin_alert_section_title
30
+ {
31
+ clear: both;
32
+ padding: 20px 50px 20px 15px;
33
+ font-size: 18px;
34
+ border-radius: 3px;
35
+ margin-bottom: 20px;
36
+ margin-top: 10px;
37
+ }
38
+ .wsdplugin_content .wsdplugin_alert_section_title.wsdplugin_alert_section_title_category { background-color: #F9F9F9; border: 1px solid #DFDFDF; margin-bottom: 10px; box-shadow: 0px 0px 3px #DFDFDF; }
39
+
40
+ .acx-section-box { padding-top: 0 !important; padding-bottom: 0 !important;}
41
+
42
+ /** Checkbox **/
43
+ .wsdplugin-overflow { overflow: hidden; }
44
+ .wsdplugin-overflow .wsdplugin_checkbox { float: left; display: block; text-align: center; vertical-align: middle; width: 13px; margin-top: 1px; }
45
+ .wsdplugin-overflow span { float: left; display: block; margin-left: 7px; margin-top: 0;}
46
+ .wsdplugin-overflow .wsdplugin_checkbox a
47
+ {
48
+ background: transparent url('../images/checkbox.png') no-repeat scroll 0 0;
49
+ display: block;
50
+ width: 13px;
51
+ height: 13px;
52
+ }
53
+ .wsdplugin-overflow .wsdplugin_checkbox-active a { background-position: -13px 0; }
54
+
res/css/styles.base.css ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .status-indicator { display: block; width: 16px; height: 16px;}
3
+ /* == 0 */
4
+ .indicator-green { background: url('../images/indicator-green.png') no-repeat 0 0; }
5
+ /* == 1 */
6
+ .indicator-red { background: url('../images/indicator-red.png') no-repeat 0 0; }
7
+ /* == 2 */
8
+ .indicator-yellow { background: url('../images/indicator-yellow.png') no-repeat 0 0; }
9
+ /* == 3 */
10
+ .indicator-blue { background: url('../images/indicator-blue.png') no-repeat 0 0; }
11
+
12
+ .wsd-content-section { float: left; display: block; }
13
+
14
+ #wsd-banner-rotator {
15
+ display: block; clear: both;
16
+ margin-top: 50px;
17
+ }
18
+
19
+ .entry {}
20
+ .entry-description { display: none; }
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
res/css/styles.general.css ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /** General Styling **/
3
+
4
+ .wsdplugin_content
5
+ {
6
+
7
+ }
8
+
9
+ .wsdplugin_content .wsdplugin_status_page_ico {
10
+ background: url('../images/logo.png') no-repeat scroll center center transparent;
11
+ }
12
+ .wsdplugin_content .wsdplugin_alerts-page-ico {
13
+ background: url('../images/alerts-page-ico.png') no-repeat scroll center center transparent;
14
+ }
15
+
16
+
17
+ /*
18
+ * Error box
19
+ */
20
+ .wsdplugin_content .wsdplugin_error_box { }
21
+ .wsdplugin_content .wsdplugin_error_box p { overflow: hidden; }
22
+ .wsdplugin_content .wsdplugin_error_box p strong { display: block; float: left; }
23
+ .wsdplugin_content .wsdplugin_error_box p a.dismiss { float: right; display: block; }
24
+
25
+
26
+ .wsdplugin_content .wsdplugin_info_box {
27
+ background-color: #E0E9F9;
28
+ border-color: #98BCF9;
29
+ }
30
+ .wsdplugin_content .wsdplugin_info_box p { overflow: hidden; }
31
+ .wsdplugin_content .wsdplugin_info_box p strong { display: block; float: left; }
32
+ .wsdplugin_content .wsdplugin_info_box p a.dismiss { float: right; display: block; }
33
+
34
+
35
+
36
+ /*
37
+ * INFO / ERROR boxes
38
+ */
39
+ .wsdplugin_message
40
+ {
41
+ margin: 5px 0 15px;
42
+ padding: 0 0.6em;
43
+ border-radius: 3px;
44
+ border: 1px solid;
45
+ }
46
+ .wsdplugin_message.wsdplugin_message_warning
47
+ {
48
+ background-color: #FFFFE0;
49
+ border-color: #E6DB55;
50
+ }
51
+ .wsdplugin_message.wsdplugin_message_error
52
+ {
53
+ background-color: #FCC2C2;
54
+ border-color: #CC0000;
55
+ }
56
+ .wsdplugin_message.wsdplugin_message_success
57
+ {
58
+ background-color: #FFFFE0;
59
+ border-color: #E6DB55;
60
+ color: #006600;
61
+ }
62
+ .wsdplugin_message p
63
+ {
64
+ margin: 0.5em 0;
65
+ padding: 2px;
66
+ }
67
+
68
+
69
+
70
+ /*
71
+ * auth menu
72
+ */
73
+ #wsdplugin_advert a, #wsdplugin_advert img { border: none 0; outline: none 0;}
74
+ .wsdplugin_website_detail { overflow: hidden; float: none; clear: both;}
75
+ .wsdplugin_page_title { overflow: hidden; display: block; clear: both; }
76
+
77
+ .wsdplugin_page_title h2 {
78
+ background: url("../images/logo.png") no-repeat scroll 0 50% transparent;
79
+ padding-left: 45px;
80
+ }
81
+ .wsdplugin_page_title #uinfo {
82
+ float: right;
83
+ margin: 10px 10px;
84
+ cursor: pointer;
85
+ padding: 5px 0;
86
+ background-color: transparent;
87
+ border: 1px solid transparent;
88
+ border-radius: 3px;
89
+ /*width: 180px;*/
90
+ overflow: hidden;
91
+ text-align: right;
92
+ }
93
+ .wsdplugin_page_title #uinfo #wsdplugin-current-user-name { display: block; color: #CC0000; padding-right: 7px; padding-left: 7px; }
94
+ .wsdplugin_page_title #uinfo #wsdplugin-current-user-menu{
95
+ width: 180px;
96
+ display: none;
97
+ margin: 5px 0 0 0 !important;
98
+ padding: 5px 0;
99
+ background-color: #F9F9F9;
100
+ border: 1px solid #DFDFDF;
101
+ border-top: none 0;
102
+ border-bottom-right-radius: 3px;
103
+ border-bottom-left-radius: 3px;
104
+ }
105
+ .wsdplugin_page_title #uinfo:hover{
106
+ background-color: #F9F9F9;
107
+ border: 1px solid #DFDFDF;
108
+ border-radius: 3px;
109
+ }
110
+
111
+ .wsdplugin_page_title #uinfo:hover #wsdplugin-current-user-menu{
112
+ position: absolute; z-index: 9888998;
113
+ display: block; clear: both;
114
+ border-top: solid 1px #dadada;
115
+ right: 25px;
116
+ }
117
+ .wsdplugin_page_title #uinfo:hover #wsdplugin-current-user-menu ul,
118
+ .wsdplugin_page_title #uinfo:hover #wsdplugin-current-user-menu ul li { margin: 0 0; padding: 0 0; width: 100%; list-style-type: none; list-style-position: outside;}
119
+ .wsdplugin_page_title #uinfo:hover #wsdplugin-current-user-menu ul li { padding: 7px 5px; text-align: left !important; }
120
+ .wsdplugin_page_title #uinfo:hover #wsdplugin-current-user-menu ul li a { display: block; margin: 3px 5px;}
121
+
122
+
123
+ .wsdplugin_page_title .wsdplugin_error_box { clear: both; }
124
+ .wsdplugin_page_alerts { float: none; clear: both;}
125
+
126
+
127
+ /*
128
+ * Page: database
129
+ */
130
+ .acx-section-box { padding: 0.5em; margin: 0.5em; }
131
+ .acx-common-list {
132
+ list-style-type: none;
133
+ list-style-position: outside;
134
+ list-style-image: none;
135
+ }
136
+ .acx-common-list li {
137
+ background: url('../images/arrow-black-icon.png') no-repeat left center;
138
+ padding-left: 20px;
139
+ }
140
+ .acx-common-list li p span {}
141
+ .acx-common-list li .acx-icon-alert-critical { padding-top: 2px; }
142
+ .acx-common-list li .acx-icon-alert-info { padding-top: 2px; }
143
+
144
+ .acx-info-box {
145
+ margin: 7px 7px; padding: 0.2em 0.2em 0.2em 2.2em;
146
+ font-family: Verdana, Geneva, sans-serif; font-size: 1em; color: #d00000;
147
+ background: #FFC url('../images/icon-info.png') no-repeat 5px 50%; border: solid 1px #FC0;
148
+ }
149
+
150
+ .acx-info-box-noicon { background-image: none; }
151
+
152
+ .acx-notice-info { color: #252525; }
153
+ .acx-notice-success { color: #060; font-weight: 900; }
154
+
155
+ .acx-icon-alert-success { background: url('../images/green-check-icon.png') no-repeat right bottom; padding-right: 25px; line-height: 22px; }
156
+ .acx-icon-alert-critical { background: url('../images/alert-info-critical.png') no-repeat right bottom; padding-right: 25px; line-height: 22px; }
157
+ .acx-icon-alert-info { background: url('../images/alert-info-icon.png') no-repeat right bottom; padding-right: 25px; line-height: 22px; }
158
+
159
+ .acx-table tbody td.td_success { width: 20px; background: url('../images/green-check-icon.png') no-repeat 5px center; }
160
+ .acx-table tbody td.td_error { width: 20px; background: url('../images/alert-info-icon.png') no-repeat 5px center; }
161
+ .acx-table tbody tr:hover { background: #e0e0e0; }
162
+
163
+
164
+
165
+ .wsdplugin-tooltip {
166
+ cursor: pointer;
167
+ /*margin-left: 15px;*/
168
+ color: #21759B;
169
+ background: url('../images/icon-info.png') no-repeat 0 0 ! important;;
170
+ }
171
+
172
+ #tt {
173
+ position:absolute;
174
+ display:block;
175
+ }
176
+ #tttop {
177
+ display:block;
178
+ height:5px;
179
+ margin-left:5px;
180
+ background:url("../images/tooltips/tt_top.gif") top right no-repeat;
181
+ overflow:hidden;
182
+ }
183
+ #ttcont {
184
+ display:block;
185
+ padding:2px 12px 3px 12px;
186
+ margin-left:5px;
187
+ background:#666;
188
+ color:#fff;
189
+ }
190
+ #ttbot {
191
+ display:block;
192
+ height:5px;
193
+ margin-left:5px;
194
+ background:url("../images/tooltips/tt_bottom.gif") top right no-repeat;
195
+ overflow:hidden;
196
+ }
res/css/styles.status.css ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .wsdplugin_page_status {
2
+ display: block;
3
+ border-radius: 3px;
4
+ border: 1px solid #DFDFDF;
5
+ box-shadow: 0 0 1px #DFDFDF;
6
+ background-color: #FFFFFF;
7
+ padding: 10px 4px;
8
+ margin-bottom: 15px;
9
+ margin-top: 5px;
10
+ }
11
+ .wsdplugin_status_box {
12
+ display: inline-block;
13
+ margin-left: 5px;
14
+ line-height: 22px;
15
+ }
16
+ .wsdplugin_status_box span:first-child {
17
+ margin-right: 8px;
18
+ font-weight: bold;
19
+ display: inline;
20
+ }
21
+ .wsdplugin_status_box span.wsdplugin_status_ok {
22
+ color: #006400;
23
+ }
24
+ .wsdplugin_status_box span.wsdplugin_status_bad {
25
+ color: #cc0000;
26
+ }
27
+ .wsdplugin_status_box_spacer {
28
+ display: inline-block;
29
+ width: 2px;
30
+ border-left: 1px solid #BCB8B8;
31
+ border-right: 1px solid #fff;
32
+ margin-left: 10px;
33
+ }
34
+ .wsdplugin_page_status_horizontal .wsdplugin_status_box span:first-child {
35
+ display: inline-block;
36
+ width: 180px;
37
+ }
res/images/ajax-loader.gif ADDED
Binary file
res/images/alert-info-critical.png ADDED
Binary file
res/images/alert-info-icon.png ADDED
Binary file
res/images/alerts-page-ico.png ADDED
Binary file
res/images/arrow-black-icon.png ADDED
Binary file
res/images/blog/featured-slider-bg.jpg ADDED
Binary file
res/images/blog/ico-facebook.png ADDED
Binary file
res/images/blog/ico-twitter.png ADDED
Binary file
res/images/blog/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/images/blog/logo.png ADDED
Binary file
res/images/checkbox.png ADDED
Binary file
{img → res/images}/close-button.png RENAMED
File without changes
res/images/green-check-icon.png ADDED
Binary file
res/images/icon-info.png ADDED
Binary file
res/images/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/images/indicator-blue.png ADDED
Binary file
res/images/indicator-green.png ADDED
Binary file
res/images/indicator-red.png ADDED
Binary file
res/images/indicator-yellow.png ADDED
Binary file
img/wsd-logo-small-list.png → res/images/logo-small.png RENAMED
File without changes
res/images/logo.png ADDED
Binary file
{img → res/images}/rss.png RENAMED
File without changes
res/images/tooltips/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/images/tooltips/tt_bottom.gif ADDED
Binary file
res/images/tooltips/tt_top.gif ADDED
Binary file
res/inc/SwpaCheck.php ADDED
@@ -0,0 +1,286 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+ /**
3
+ * Class SwpaCheck
4
+ * Static class. Provides security checks for Wordpress
5
+ */
6
+ class SwpaCheck extends SwpaPlugin
7
+ {
8
+ // type: stack - cron
9
+ public static function adminUsername()
10
+ {
11
+ global $wpdb, $wsdPluginAlertsArray;
12
+ $actionName = $wsdPluginAlertsArray['check_username_admin']['name'];
13
+ $alertType = $wsdPluginAlertsArray['check_username_admin']['type'];
14
+
15
+ $u = $wpdb->get_var("SELECT `ID` FROM $wpdb->users WHERE user_login='admin';");
16
+ if(empty($u)){
17
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
18
+ sprintf(__('User <strong>"%s"</strong> (with administrative rights) was not found'), 'admin'),
19
+ sprintf(__('<p>One well known and dangerous WordPress security vulnerability is User Enumeration, in which a
20
+ malicious user is able to enumerate a valid WordPress user account to launch a brute force attack against it.
21
+ In order to help deter this type of attack, it is important not to have the default <a href="%s" target="%s">WordPress administrator</a>
22
+ username enabled on your blog.</p>'), 'http://www.acunetix.com/blog/web-security-zone/articles/default-wordpress-administrator-account/', '_blank')
23
+ );
24
+ }
25
+ else {
26
+ // check to see if this user is an administrator
27
+ $userRole = $wpdb->get_var("SELECT meta_value FROM ".$wpdb->usermeta. " WHERE user_id = $u AND meta_key = '".$wpdb->prefix."user_level'");
28
+ if(! empty($userRole)){
29
+ $userRole = intval($userRole);
30
+ if(in_array($userRole, array(8,9,10))){
31
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
32
+ sprintf(__('The default user <strong>"%s"</strong> was found'), 'admin'),
33
+ sprintf(__('<p>One well known and dangerous WordPress security vulnerability is User Enumeration, in which a malicious user is able to enumerate
34
+ a valid WordPress user account to launch a brute force attack against it.</p>
35
+ <p>In order to help deter this type of attack, you should change your default <a href="%s" target="%s">WordPress administrator</a>
36
+ username to something more difficult to guess.</p>'), 'http://www.acunetix.com/blog/web-security-zone/articles/default-wordpress-administrator-account/', '_blank'),
37
+ // solution
38
+ __('<p>Do not make the following change unless you are comfortable working with PHPMyAdmin and MySQL. If not, ask someone who is familiar with WordPress and MySQL to assist you. </p>
39
+ <p>Also, it is of utmost importance to backup your whole blog - including the database - before making any of the changes described below.</p>
40
+ <p>To change your WordPress default admin username, navigate to your web host\'s MySQL administration tool (probably PHPMyAdmin) and browse to your WordPress database.
41
+ Locate the users table, in which you will find a user_login column. One of the rows will contain admin in the field.
42
+ Change this to a complex and hard-to-guess name, which ideally consists of alpha-numeric characters.</p>
43
+ <p><strong>IMPORTANT:</strong> Even if the username is hard to guess, you will still need a very strong password.</p>'));
44
+ return;
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ // type: overwrite
51
+ public static function check_tablePrefix()
52
+ {
53
+ global $wpdb, $wsdPluginAlertsArray;
54
+ $actionName = $wsdPluginAlertsArray['check_table_prefix']['name'];
55
+ $alertType = $wsdPluginAlertsArray['check_table_prefix']['type'];
56
+
57
+ if(strcasecmp('wp_', $wpdb->prefix)==0){
58
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
59
+ sprintf(__('The default WordPress database prefix (<strong>%s</strong>) is used'), $wpdb->prefix),
60
+ __('<p>The majority of reported WordPress database security attacks were performed by exploiting SQL Injection vulnerabilities.
61
+ By renaming the WordPress database table prefixes you are securing your WordPress blog and website from zero day SQL injections attacks.</p>
62
+ <p>Therefore by renaming the WordPress database table prefixes, you are automatically enforcing your WordPress database security against such dangerous attacks
63
+ because the attacker would not be able to guess the table names.</p>
64
+ <p>We recommend to use difficult to guess prefixes, like long random strings which include both letters and numbers.</p>'),
65
+ sprintf(__('<p>This plugin can automatically <a href="%s">do this</a> for you, but if you want to do it manually then please read this <a href="%s" target="%s">article</a> first.</p>'),
66
+ 'admin.php?page=wsd_database',
67
+ 'http://www.websitedefender.com/wordpress-security/change-wordpress-database-prefix/', '_blank')
68
+ );
69
+ }
70
+ else {
71
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
72
+ __('The default WordPress database prefix is not used'),
73
+ __('<p>The majority of reported WordPress database security attacks were performed by exploiting SQL Injection vulnerabilities.
74
+ By renaming the WordPress database table prefixes you are securing your WordPress blog and website from zero day SQL injections attacks.</p>
75
+ <p>Therefore by renaming the WordPress database table prefixes, you are automatically enforcing your WordPress database security against such dangerous attacks because the attacker would not be able to guess the table names.</p>')
76
+ );
77
+ }
78
+ }
79
+
80
+ // type: overwrite
81
+ public static function check_currentVersion()
82
+ {
83
+ global $wsdPluginAlertsArray;
84
+ $actionName = $wsdPluginAlertsArray['check_wp_current_version']['name'];
85
+ $alertType = $wsdPluginAlertsArray['check_wp_current_version']['type'];
86
+
87
+ $c = get_site_transient('update_core');
88
+ if(is_object($c))
89
+ {
90
+ if(empty($c->updates)) {
91
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
92
+ __('You have the latest version of WordPress installed'),
93
+ __('<p>The latest WordPress version is usually more stable and secure, and is only released to include new features or fix technical and WordPress security bugs;
94
+ making it an important part of your website administration to keep up to date since some fixes might resolve security issues.<p>
95
+ <p>Running an older WordPress version could put your blog security at risk, allowing a hacker to exploit known vulnerabilities for your specific version and take full control over your web server.</p>')
96
+ );
97
+ }
98
+ else {
99
+ if (!empty($c->updates[0]))
100
+ {
101
+ $c = $c->updates[0];
102
+ if (!isset($c->response) || 'latest' == $c->response ) {
103
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
104
+ __('You have the latest version of WordPress installed'),
105
+ __('<p>The latest WordPress version is usually more stable and secure, and is only released to include new features or fix technical and WordPress security bugs;
106
+ making it an important part of your website administration to keep up to date since some fixes might resolve security issues.<p>
107
+ <p>Running an older WordPress version could put your blog security at risk, allowing a hacker to exploit known vulnerabilities for your specific version and take full control over your web server.</p>')
108
+ );
109
+ }
110
+ elseif ('upgrade' == $c->response) {
111
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
112
+ sprintf(__('An updated version of WordPress is available: <strong>%s</strong>'), $c->current),
113
+ __('<p>The latest WordPress version is usually more stable and secure, and is only released to include new features or fix technical and WordPress security bugs;
114
+ making it an important part of your website administration to keep up to date since some fixes might resolve security issues.<p>
115
+ <p>Running an older WordPress version could put your blog security at risk, allowing a hacker to exploit known vulnerabilities for your specific version and take full control over your web server.</p>'),
116
+ sprintf(__('<p>It is recommended to update your WordPress installation as soon as possible. More information on updating WordPress manually and automatically
117
+ can be found on the official <a href="%s" target="%s">WordPress site</a>.</p>'), 'http://codex.wordpress.org/Updating_WordPress', '_blank')
118
+ );
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+
125
+ // type: overwrite
126
+ public static function check_files()
127
+ {
128
+ global $wsdPluginAlertsArray;
129
+
130
+ $actionName = $wsdPluginAlertsArray['check_index_wp_content']['name'];
131
+ $alertType = $wsdPluginAlertsArray['check_index_wp_content']['type'];
132
+ $path = WP_CONTENT_DIR.'/index.php';
133
+ if(!is_file($path)) {
134
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
135
+ sprintf(__('The <strong>"%s"</strong> file was not found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content'),
136
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
137
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
138
+ sprintf(__('<p>This plugin can automatically create an empty <strong>"%s"</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
139
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
140
+ 'index.php', 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
141
+ );
142
+ }
143
+ else {
144
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
145
+ sprintf(__('The <strong>"%s"</strong> file was found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content'),
146
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
147
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
148
+ );
149
+ }
150
+
151
+ $actionName = $wsdPluginAlertsArray['check_index_wp_plugins']['name'];
152
+ $alertType = $wsdPluginAlertsArray['check_index_wp_plugins']['type'];
153
+ $path = WP_CONTENT_DIR.'/plugins/index.php';
154
+ if(!is_file($path)) {
155
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
156
+ sprintf(__('The <strong>"%s"</strong> file was not found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content/plugins'),
157
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
158
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
159
+ sprintf(__('<p>This plugin can automatically create an empty <strong>"%s"</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
160
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
161
+ 'index.php', 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
162
+ );
163
+ }
164
+ else {
165
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
166
+ sprintf(__('The <strong>"%s"</strong> file was found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content/plugins'),
167
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
168
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
169
+ );
170
+ }
171
+
172
+ $actionName = $wsdPluginAlertsArray['check_index_wp_themes']['name'];
173
+ $alertType = $wsdPluginAlertsArray['check_index_wp_themes']['type'];
174
+ $path = WP_CONTENT_DIR.'/themes/index.php';
175
+ if(!is_file($path)) {
176
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
177
+ sprintf(__('The <strong>"%s"</strong> file was not found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content/themes'),
178
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
179
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
180
+ sprintf(__('<p>This plugin can automatically create an empty <strong>"%s"</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
181
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
182
+ 'index.php', 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
183
+ );
184
+ }
185
+ else {
186
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
187
+ sprintf(__('The <strong>"%s"</strong> file was found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content/themes'),
188
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
189
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
190
+ );
191
+ }
192
+
193
+ $actionName = $wsdPluginAlertsArray['check_index_wp_uploads']['name'];
194
+ $alertType = $wsdPluginAlertsArray['check_index_wp_uploads']['type'];
195
+ $path = WP_CONTENT_DIR.'/uploads';
196
+ if(is_dir($path))
197
+ {
198
+ if(!is_file(WP_CONTENT_DIR.'/uploads/index.php')) {
199
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
200
+ sprintf(__('The <strong>"%s"</strong> file was not found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content/uploads'),
201
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
202
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
203
+ sprintf(__('<p>This plugin can automatically create an empty <strong>"%s"</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if the
204
+ option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
205
+ 'index.php', 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
206
+ );
207
+ }
208
+ else {
209
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
210
+ sprintf(__('The <strong>"%s"</strong> file was found in the <strong>"%s"</strong> directory'), 'index.php', '/wp-content/uploads'),
211
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.</p>
212
+ <p>Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
213
+ );
214
+ }
215
+ }
216
+
217
+ $actionName = $wsdPluginAlertsArray['check_htaccess_wp_admin']['name'];
218
+ $alertType = $wsdPluginAlertsArray['check_htaccess_wp_admin']['type'];
219
+ $path = ABSPATH.'wp-admin/.htaccess';
220
+ if(!is_file($path)){
221
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
222
+ sprintf(__('The <strong>"%s"</strong> file was not found in the <strong>"%s"</strong> directory'), '.htaccess', 'wp-admin'),
223
+ __('<p>An .htaccess file is a configuration file which provides the ability to specify configuration settings for a specific directory in a website.
224
+ The .htaccess file can include one or more configuration settings which apply only for the directory in which the .htaccess file has been placed.
225
+ So while web servers have their own main configuration settings file, the .htaccess file can be used to override their main configuration settings.</p>'),
226
+ sprintf(__('<p>Please refer to this <a href="%s" target="%s">article</a> for more information on how to create an .htaccess file.</p>'),
227
+ 'http://www.acunetix.com/blog/web-security-zone/articles/what-is-an-htaccess-file/', '_blank')
228
+ );
229
+ }
230
+ else {
231
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
232
+ sprintf(__('The <strong>"%s"</strong> file was found in the <strong>"%s"</strong> directory'), '.htaccess', 'wp-admin'),
233
+ __('<p>An .htaccess file is a configuration file which provides the ability to specify configuration settings for a specific directory in a website.
234
+ The .htaccess file can include one or more configuration settings which apply only for the directory in which the .htaccess file has been placed.
235
+ So while web servers have their own main configuration settings file, the .htaccess file can be used to override their main configuration settings.</p>')
236
+ );
237
+ }
238
+
239
+ $actionName = $wsdPluginAlertsArray['check_readme_wp_root']['name'];
240
+ $alertType = $wsdPluginAlertsArray['check_readme_wp_root']['type'];
241
+ $path = ABSPATH.'readme.html';
242
+ if(is_file($path))
243
+ {
244
+ if(is_readable($path)){
245
+ $fsize = @filesize($path);
246
+ // couldn't retrieve the file's size
247
+ if($fsize > 0){
248
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
249
+ __('The <strong>readme.html</strong> file was found in the root directory'),
250
+ __('<p>A default WordPress installation contains a readme.html file.
251
+ This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
252
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>'),
253
+ sprintf(__('<p>This plugin can automatically delete its content if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.
254
+ You can also delete this file manually by connecting to your website through an FTP connection.</p>'),'Empty the content of the readme.html file from the root directory.')
255
+ );
256
+ }
257
+ else {
258
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
259
+ __('The <strong>readme.html</strong> file is either empty or not accessible.'),
260
+ __('<p>A default WordPress installation contains a readme.html file.
261
+ This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
262
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>')
263
+ );
264
+ }
265
+ }
266
+ else {
267
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
268
+ __('The <strong>readme.html</strong> file is not accessible.'),
269
+ __('<p>A default WordPress installation contains a readme.html file.
270
+ This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
271
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>')
272
+ );
273
+ }
274
+ }
275
+ else{
276
+ // file not found or file is not accessible
277
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
278
+ __('The <strong>readme.html</strong> file was not found in the root directory'),
279
+ __('<p>A default WordPress installation contains a readme.html file.
280
+ This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
281
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>')
282
+ );
283
+ }
284
+ }
285
+
286
+ }
res/inc/SwpaInfo.php ADDED
@@ -0,0 +1,317 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class SwpaInfo
4
+ * Static class. Provides common methods to inspect a WordPress installation settings
5
+ */
6
+ class SwpaInfo
7
+ {
8
+ public static function getCurrentVersionInfo()
9
+ {
10
+ $c = get_site_transient( 'update_core' );
11
+ if ( is_object($c))
12
+ {
13
+ if (empty($c->updates))
14
+ {
15
+ return '<span class="acx-icon-alert-success">'.__('You have the latest version of Wordpress.').'</span>';
16
+ }
17
+
18
+ if (!empty($c->updates[0]))
19
+ {
20
+ $c = $c->updates[0];
21
+
22
+ if ( !isset($c->response) || 'latest' == $c->response ) {
23
+ return '<span class="acx-icon-alert-success">'.__('You have the latest version of Wordpress.').'</span>';
24
+ }
25
+
26
+ if ('upgrade' == $c->response)
27
+ {
28
+ $lv = $c->current;
29
+ $m = '<span class="acx-icon-alert-critical">'.sprintf('A new version of Wordpress <strong>(%s)</strong> is available. You should upgrade to the latest version.', $lv).'</span>';
30
+ return __($m);
31
+ }
32
+ }
33
+ }
34
+
35
+ return '<span class="acx-icon-alert-critical">'.__('An error has occurred while trying to retrieve the status of your Wordpress version.').'</span>';
36
+ }
37
+
38
+ public static function getDatabasePrefixInfo()
39
+ {
40
+ global $table_prefix;
41
+
42
+ if (strcasecmp('wp_', $table_prefix)==0) {
43
+ return '<span class="acx-icon-alert-critical">'
44
+ .__('Your database prefix should not be <code>wp_</code>.')
45
+ .'(<a href="http://www.websitedefender.com/wordpress-security/wordpress-database-tables-prefix/" target="_blank">'.__('read more').'</a>)</span>';
46
+ }
47
+
48
+ return '<span class="acx-icon-alert-success">'.__('Your database prefix is not <code>wp_</code>.').'</span>';
49
+ }
50
+
51
+ public static function getWpVersionStatusInfo()
52
+ {
53
+ if (SwpaSecurity::$isVersionHidden) {
54
+ return '<span class="acx-icon-alert-success">'.__('The Wordpress version <code>is</code> hidden for all users but administrators.').'</span>';
55
+ }
56
+ }
57
+
58
+ public static function getPhpStartupErrorStatusInfo()
59
+ {
60
+ $dse = strtolower(ini_get('display_startup_errors'));
61
+ if ($dse == 0) {
62
+ return '<span class="acx-icon-alert-success">'.__('Startup errors <code>are not</code> displayed.').'</span><br/>';
63
+ }
64
+
65
+ return '<span class="acx-icon-alert-critical">'.__('Startup errors <code>are displayed</code>.').'</span>'.'<br/>';
66
+ }
67
+
68
+ public static function getAdminUsernameInfo()
69
+ {
70
+ global $wpdb;
71
+
72
+ $u = $wpdb->get_var("SELECT `ID` FROM $wpdb->users WHERE user_login='admin';");
73
+
74
+ if (empty($u)) {
75
+ return '<span class="acx-icon-alert-success">'.__('User <code>admin</code> was not found.').'</span>';
76
+ }
77
+
78
+ return '<span class="acx-icon-alert-critical">'.__('User <code>admin</code> was found! You should change it in order to avoid user enumeration attacks.').'</span>';
79
+ }
80
+
81
+ public static function getWpAdminHtaccessInfo()
82
+ {
83
+ $file = trailingslashit(ABSPATH).'wp-admin/.htaccess';
84
+ if (is_file($file)) {
85
+ return '<span class="acx-icon-alert-success">'.__('The <code>.htaccess</code> file was found in the <code>wp-admin</code> directory.').'</span>';
86
+ }
87
+
88
+ return '<span class="acx-icon-alert-info">'
89
+ .__('The <code>.htaccess</code> file was not found in the <code>wp-admin</code> directory.')
90
+ .'(<a href="http://www.websitedefender.com/wordpress-security/htaccess-files-wordpress-security/" target="_blank">'.__('read more').'</a>)</span>';
91
+ }
92
+
93
+ public static function getDatabaseUserAccessRightsInfo()
94
+ {
95
+ $rights = SwpaInfoServer::getDatabaseUserAccessRights();
96
+ $rightsNeeded = $rights['rightsNeeded'];
97
+ $rightsHaving = $rights['rightsHaving'];
98
+ $rightsMissing = array_diff($rightsNeeded, $rightsHaving);
99
+
100
+ if ($rights['rightsTooMuch']) {
101
+ $e = '<code>'.implode('</code>, <code>', $rightsNeeded).'</code>';
102
+ $m = sprintf(__("Your currently used User to access the WordPress Database <code>holds too many rights</code>.
103
+ We suggest that you limit his rights (to only %s) or to use another User with more limited rights instead, to increase your website's Security."),$e);
104
+ return '<span class="acx-icon-alert-info">'.$m.'</span>';
105
+ }
106
+ else
107
+ {
108
+ if($rights['rightsEnough']){
109
+ $m = __("Your currently used User to access the WordPress Database holds the appropriate rights to interact with the database.");
110
+ return '<span class="acx-icon-alert-success">'.$m.'</span>';
111
+ }
112
+ else {
113
+ $missing = '<code>'.implode('</code>, <code>', $rightsMissing).'</code>';
114
+ $m = sprintf(__("Your currently used User to access the WordPress Database is missing the following rights to interact with the database: %s"),$missing);
115
+ return '<span class="acx-icon-alert-info">'.$m.'</span>';
116
+ }
117
+ }
118
+ }
119
+
120
+ public static function getWpContentIndexInfo()
121
+ {
122
+ if (is_file(trailingslashit(WP_CONTENT_DIR).'index.php')) {
123
+ return '<span class="acx-icon-alert-success">'.__('The <code>index.php</code> file <code>was found</code> in the wp-content directory.').'</span>'.'<br/>';
124
+ }
125
+
126
+ return '<span class="acx-icon-alert-info">'.__('The <code>index.php</code> file <code>was not found</code> in the wp-content directory! You should create one in order to prevent directory listings.').'</span>'.'<br/>';
127
+ }
128
+
129
+ public static function getWpContentPluginsIndexInfo()
130
+ {
131
+ $dirPath = trailingslashit(WP_CONTENT_DIR).'plugins/';
132
+ if(!is_dir($dirPath)) { return ''; }
133
+ if (is_file($dirPath.'index.php')) {
134
+ return '<span class="acx-icon-alert-success">'.__('The <code>index.php</code> file <code>was found</code> in the plugins directory.').'</span>'.'<br/>';
135
+ }
136
+
137
+ return '<span class="acx-icon-alert-info">'.acxt_t('The <code>index.php</code> file <code>was not found</code> in the plugins directory! You should create one in order to prevent directory listings.').'</span>'.'<br/>';
138
+ }
139
+
140
+ public static function getWpContentThemesIndexInfo()
141
+ {
142
+ $dirPath = trailingslashit(WP_CONTENT_DIR).'themes/';
143
+ if(!is_dir($dirPath)) { return ''; }
144
+ if (is_file($dirPath.'index.php')) {
145
+ return '<span class="acx-icon-alert-success">'.__('The <code>index.php</code> file <code>was found</code> in the themes directory.').'</span>'.'<br/>';
146
+ }
147
+
148
+ return '<span class="acx-icon-alert-info">'.__('The <code>index.php</code> file <code>was not found</code> in the themes directory! You should create one in order to prevent directory listings.').'</span>'.'<br/>';
149
+ }
150
+
151
+ public static function getWpContentUploadsIndexInfo()
152
+ {
153
+ $dirPath = trailingslashit(WP_CONTENT_DIR).'uploads/';
154
+ if(!is_dir($dirPath)) { return ''; }
155
+ if (is_file($dirPath.'index.php')) {
156
+ return '<span class="acx-icon-alert-success">'.__('The <code>index.php</code> file <code>was found</code> in the uploads directory.').'</span>'.'<br/>';
157
+ }
158
+ return '<span class="acx-icon-alert-info">'.__('The <code>index.php</code> file <code>was not found</code> in the uploads directory! You should create one in order to prevent directory listings.').'</span>'.'<br/>';
159
+ }
160
+
161
+ }
162
+
163
+ class SwpaInfoServer extends SwpaInfo
164
+ {
165
+ public static function getServerInfo()
166
+ {
167
+ global $wpdb;
168
+ $sqlversion = $wpdb->get_var("SELECT VERSION() AS version");
169
+ $mysqlinfo = $wpdb->get_results("SHOW VARIABLES LIKE 'sql_mode'");
170
+ if (is_array($mysqlinfo)) $sql_mode = $mysqlinfo[0]->Value;
171
+ if (empty($sql_mode)) $sql_mode = __('Not set');
172
+ $sm = ini_get('safe_mode');
173
+ if (strcasecmp('On', $sm) == 0) { $safe_mode = __('On'); }
174
+ else { $safe_mode = __('Off'); }
175
+ if(ini_get('allow_url_fopen')) $allow_url_fopen = __('On');
176
+ else $allow_url_fopen = __('Off');
177
+ if(ini_get('upload_max_filesize')) $upload_max = ini_get('upload_max_filesize');
178
+ else $upload_max = __('N/A');
179
+ if(ini_get('post_max_size')) $post_max = ini_get('post_max_size');
180
+ else $post_max = __('N/A');
181
+ if(ini_get('max_execution_time')) $max_execute = ini_get('max_execution_time');
182
+ else $max_execute = __('N/A');
183
+ if(ini_get('memory_limit')) $memory_limit = ini_get('memory_limit');
184
+ else $memory_limit = __('N/A');
185
+ if (function_exists('memory_get_usage')) $memory_usage = round(memory_get_usage() / 1024 / 1024, 2) . __(' MByte');
186
+ else $memory_usage = __('N/A');
187
+ if (is_callable('exif_read_data')) $exif = __('Yes'). " ( V" . substr(phpversion('exif'),0,4) . ")" ;
188
+ else $exif = __('No');
189
+ if (is_callable('iptcparse')) $iptc = __('Yes');
190
+ else $iptc = __('No');
191
+ if (is_callable('xml_parser_create')) $xml = __('Yes');
192
+ else $xml = __('No');
193
+
194
+ $sqlModeText = __('SQL Mode (sql_mode) is a MySQL system variable. By means of this variable the MySQL Server SQL Mode is controlled.
195
+ Many operational characteristics of MySQL Server can be configured by setting the SQL Mode.
196
+ By setting the SQL Mode appropriately, a client program can instruct the server how strict or forgiving to be about accepting input data, enable or disable behaviors relating to standard SQL conformance,
197
+ or provide better compatibility with other database systems. By default, the server uses a sql_mode value of \'\' (the empty string), which enables no restrictions.
198
+ Thus, the server operates in forgiving mode (non-strict mode) by default. In non-strict mode, the MySQL server converts erroneous input values to the closest legal
199
+ values (as determined from column definitions) and continues on its way.');
200
+ $phpSafeModeText = __('The PHP Safe Mode (safe_mode) is an attempt to solve the shared-server security problem.
201
+ It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren\'t
202
+ very realistic, many people, especially ISP\'s, use safe mode for now.');
203
+ $phpAllowFopenText = __('PHP allow_url_fopen option, if enabled (allows PHP\'s file functions - such as \'file_get_contents()\' and the \'include\' and \'require\' statements),
204
+ can retrieve data from remote locations, like an FTP or web site, which may pose a security risk.');
205
+ $phpMemoryLimitText = __('PHP memory_limit option sets the maximum amount of memory in bytes that a script is allowed to allocate.
206
+ By enabling a realistic memory_limit you can protect your applications from certain types of Denial of Service attacks, and also from bugs in
207
+ applications (such as infinite loops, poor use of image based functions, or other memory intensive mistakes).');
208
+ $phpMaxUploadSizeText = __('PHP upload_max_filesize option limits the maximum size of files that PHP will accept through uploads. Attackers may attempt to send grossly oversized files to exhaust your system resources;
209
+ by setting a realistic value here you can mitigate some of the damage by those attacks.');
210
+ $phpMaxPostSizeText = __('PHP post_max_size option limits the maximum size of the POST request that PHP will process. Attackers may attempt to send grossly oversized POST requests to exhaust your system resources;
211
+ by setting a realistic value here you can mitigate some of the damage by those attacks.');
212
+ $phpScriptExecTimeText = __('PHP max_execution_time option sets the maximum time in seconds a script is allowed to run before it is terminated by the parser.
213
+ This helps prevent poorly written scripts from tying up the server.');
214
+ $exifText = __('PHP exif extension enables you to work with image meta data. For example, you may use exif functions to read meta data of pictures taken from digital cameras by working with
215
+ information stored in the headers of the JPEG and TIFF images.');
216
+ $iptcText = __('IPTC data is a method of storing textual information in images defined by the International Press Telecommunications Council.
217
+ It was developed for press photographers who need to attach information to images when they are submitting them electronically but it is useful for all photographers.
218
+ It provides a standard way of storing information such as captions, keywords, location. Because the information is stored in the image in a standard way this information
219
+ can be accessed by other IPTC aware applications.');
220
+ $xmlText = __('XML (eXtensible Markup Language) is a data format for structured document interchange on the Web. It is a standard defined by the World Wide Web Consortium (W3C).');
221
+
222
+ $str = '<script type="text/javascript" src="'. SwpaUtil::jsUrl('wsdplugin_glossary_tooltip.js').'"></script>';
223
+ $str .= '<ul class="acx-common-list">';
224
+ $str .= '<li>'. __('Operating System').' : <strong> '.PHP_OS.'</strong></li>';
225
+ $str .= '<li>'. __('Server').' : <strong>'.$_SERVER["SERVER_SOFTWARE"].'</strong></li>';
226
+ $str .= '<li>'. __('Memory usage').' : <strong>'.$memory_usage.'</strong></li>';
227
+ $str .= '<li>'. __('PHP Version').' : <strong>'. PHP_VERSION.'</strong></li>';
228
+ $str .= '<li>'. __('MYSQL Version').' : <strong>'.$sqlversion.'</strong></li>';
229
+ $str .= '</ul>';
230
+
231
+ $str .= '<p class="clear" style="margin-top: 7px;"></p>';
232
+
233
+ $str .= '<ul class="acx-common-list">';
234
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$sqlModeText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('SQL Mode').' : <strong>'.$sql_mode.'</strong></li>';
235
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$phpSafeModeText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Safe Mode').' : <strong>'. $safe_mode.'</strong></li>';
236
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$phpAllowFopenText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Allow URL fopen').' : <strong>'. $allow_url_fopen.'</strong></li>';
237
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$phpMemoryLimitText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Memory Limit').' : <strong>'. $memory_limit.'</strong></li>';
238
+ $str .= '<li class="wsdplugin-tooltip"onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$phpMaxUploadSizeText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Max Upload Size').' : <strong>'. $upload_max.'</strong></li>';
239
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$phpMaxPostSizeText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Max Post Size').' : <strong>'. $post_max.'</strong></li>';
240
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$phpScriptExecTimeText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Max Script Execute Time').' : <strong>'. $max_execute.'s</strong></li>';
241
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$exifText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP Exif support').' : <strong>'. $exif.'</strong></li>';
242
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$iptcText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP IPTC support').' : <strong>'. $iptc.'</strong></li>';
243
+ $str .= '<li class="wsdplugin-tooltip" onmouseover="wsdplugin_glossary_tooltip.show(this);" data-bind-title="'.$xmlText.'" onmouseout="wsdplugin_glossary_tooltip.hide();">'. __('PHP XML support').' : <strong>'. $xml.'</strong></li>';
244
+ $str .= '</ul>';
245
+ return $str;
246
+ }
247
+
248
+ /**
249
+ * @public
250
+ * @static
251
+ * @global $wpdb, DB_USER, DB_HOST
252
+ *
253
+ * Retrieve the rights the current used user to connect to the database server has.
254
+ *
255
+ * @return array array('rightsEnough' => true|false, 'rightsTooMuch' => true|false, 'rightsMissing' => array, 'rightsNeeded' => array);
256
+ */
257
+ public static function getDatabaseUserAccessRights()
258
+ {
259
+ global $wpdb;
260
+
261
+ $rightsNeeded = array('SELECT','INSERT','UPDATE','DELETE','ALTER');
262
+ $data = array(
263
+ 'rightsEnough' => false,
264
+ 'rightsTooMuch' => false,
265
+ 'rightsHaving' => array(),
266
+ 'rightsNeeded' => $rightsNeeded
267
+ );
268
+
269
+ $rights = $wpdb->get_results("SHOW GRANTS FOR '".DB_USER."'@'".DB_HOST."'", ARRAY_N);
270
+
271
+ if (empty($rights)) {
272
+ //return $data;
273
+ $rights = $wpdb->get_results("SHOW GRANTS FOR current_user()", ARRAY_N);
274
+ if(empty($rights)){
275
+ return $data;
276
+ }
277
+ }
278
+
279
+ foreach($rights as $_right)
280
+ {
281
+ $right = $_right[0];
282
+ //#! no rights
283
+ if(preg_match("/GRANT USAGE ON/", $right)){
284
+ continue;
285
+ }
286
+ //#! way too many. db scope || global scope
287
+ $right = str_replace('\\','',$right);
288
+ $pattern = "/ALL PRIVILEGES ON `?".preg_quote(DB_NAME)."`?/";
289
+ if(preg_match($pattern, $right) || preg_match("/ALL PRIVILEGES ON \*\./", $right)){
290
+ array_push($rightsNeeded, 'CREATE');
291
+ $data = array(
292
+ 'rightsEnough' => true,
293
+ 'rightsTooMuch' => true,
294
+ 'rightsHaving' => $rightsNeeded,
295
+ 'rightsNeeded' => $rightsNeeded
296
+ );
297
+ break;
298
+ }
299
+ //#! more secure. db scope || global scope
300
+ elseif(preg_match_all("/GRANT (.*) ON `?".preg_quote(DB_NAME)."`?/",$right,$matches) || preg_match_all("/GRANT (.*) ON \*\./",$right,$matches)){
301
+ if(! empty($matches[1][0])){
302
+ $foundRights = explode(',', $matches[1][0]);
303
+ $foundRights = array_map("trim", $foundRights);
304
+ $missingRights = array_diff($rightsNeeded, $foundRights);
305
+ $data = array(
306
+ 'rightsEnough' => (empty($missingRights) ? true : false),
307
+ 'rightsTooMuch' => false,
308
+ 'rightsHaving' => $foundRights,
309
+ 'rightsNeeded' => $rightsNeeded
310
+ );
311
+ break;
312
+ }
313
+ }
314
+ }
315
+ return $data;
316
+ }
317
+ }
res/inc/SwpaLiveTraffic.php ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+ /**
3
+ * Class SwpaLiveTraffic
4
+ */
5
+ class SwpaLiveTraffic
6
+ {
7
+ private function __construct(){}
8
+ private function __clone(){}
9
+
10
+ final public static function clearEvents()
11
+ {
12
+ global $wpdb;
13
+ $settings = SwpaPlugin::getSettings();
14
+ $keepMaxEntries = (int)$settings['keepNumEntriesLiveTraffic'];
15
+
16
+ if($keepMaxEntries < 1){
17
+ $query = "TRUNCATE ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME);
18
+ $wpdb->query($query);
19
+ return;
20
+ }
21
+
22
+ $optData = get_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC');
23
+ if(empty($optData)){
24
+ return;
25
+ }
26
+
27
+ $numEntries = $wpdb->get_var("SELECT COUNT(entryId) FROM ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME));
28
+
29
+ if($numEntries <> $keepMaxEntries){
30
+ update_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC', $numEntries);
31
+ }
32
+
33
+ if(intval($optData) <= $keepMaxEntries){
34
+ return;
35
+ }
36
+
37
+ $tableName = SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME);
38
+
39
+ $querySelect = "SELECT min(t.entryTime)
40
+ FROM
41
+ (
42
+ SELECT
43
+ entryTime
44
+ FROM
45
+ ".$tableName."
46
+ ORDER BY
47
+ entryTime DESC
48
+ LIMIT ".$keepMaxEntries."
49
+ ) AS t";
50
+
51
+
52
+ $deleteFromTime = $wpdb->get_var($querySelect);
53
+
54
+ $queryDelete = "DELETE FROM ".$tableName." WHERE entryTime < %s";
55
+ $result = $wpdb->query($wpdb->prepare($queryDelete,$deleteFromTime));
56
+
57
+ if(false === $result){
58
+ return;
59
+ }
60
+ // update option
61
+ $numEntries = $wpdb->get_var("SELECT COUNT(entryId) FROM ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME));
62
+ update_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC', $numEntries);
63
+ }
64
+
65
+ final public static function registerHit()
66
+ {
67
+ if(is_admin()){ return; }
68
+
69
+ global $wpdb;
70
+
71
+ $url = self::getRequestedUrl();
72
+
73
+ if(self::isUrlExcluded($url)){ return; }
74
+
75
+ $ip = self::getIP();
76
+ $referrer = self::getReferrer();
77
+ $ua = self::getUserAgent();
78
+
79
+ $query = $wpdb->prepare("INSERT INTO ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME)." (entryTime, entryIp, entryReferrer, entryUA, entryRequestedUrl)
80
+ VALUES(CURRENT_TIMESTAMP, %s, %s, %s, %s)", $ip, $referrer, $ua, $url);
81
+ if(false === @$wpdb->query($query)){
82
+ return;
83
+ }
84
+
85
+ $numEvents = 0;
86
+ $optData = get_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC');
87
+ if(empty($optData)){
88
+ add_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC', $numEvents);
89
+ }
90
+ else { $numEvents = intval($optData); }
91
+
92
+ update_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC', $numEvents + 1);
93
+ }
94
+
95
+ final public static function getIP()
96
+ {
97
+ $ip = null;
98
+ if ( isset($_SERVER["REMOTE_ADDR"]) ) { $ip = $_SERVER["REMOTE_ADDR"]; }
99
+ else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) { $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }
100
+ else if ( isset($_SERVER["HTTP_CLIENT_IP"]) ) { $ip = $_SERVER["HTTP_CLIENT_IP"]; }
101
+ if(! is_null($ip) && self::isValidIp($ip)){ return $ip; }
102
+ return 'unknown';
103
+ }
104
+
105
+ final public static function getReferrer() { return (empty($_SERVER['HTTP_REFERER']) ? '' : htmlentities($_SERVER['HTTP_REFERER'],ENT_QUOTES)); }
106
+
107
+ final public static function getUserAgent() { return (empty($_SERVER['HTTP_USER_AGENT']) ? '' : htmlentities($_SERVER['HTTP_USER_AGENT'],ENT_QUOTES)); }
108
+
109
+ final public static function isValidIp($ip){
110
+ if(preg_match('/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/', $ip, $m)){
111
+ if(
112
+ $m[0] >= 0 && $m[0] <= 255 &&
113
+ $m[1] >= 0 && $m[1] <= 255 &&
114
+ $m[2] >= 0 && $m[2] <= 255 &&
115
+ $m[3] >= 0 && $m[3] <= 255
116
+ ){
117
+ return true;
118
+ }
119
+ }
120
+ return false;
121
+ }
122
+ final public static function getRequestedUrl(){
123
+ if(isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']){
124
+ $host = $_SERVER['HTTP_HOST']; }
125
+ else {
126
+ $host = $_SERVER['SERVER_NAME'];
127
+ }
128
+ $url = (@$_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $host . $_SERVER['REQUEST_URI'];
129
+ return htmlentities($url,ENT_QUOTES);
130
+ }
131
+
132
+ /**
133
+ * @param int $maxEntries If $maxEntries is 0 it means to load all entries, otherwise it will limit the select to that number
134
+ * @return mixed
135
+ */
136
+ final public static function getTrafficData($maxEntries = 0)
137
+ {
138
+ global $wpdb;
139
+ if(empty($maxEntries)){
140
+ return $wpdb->get_results("SELECT entryId,entryTime,entryIp,entryReferrer,entryUA,entryRequestedUrl FROM ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME)." ORDER BY entryId DESC");
141
+ }
142
+ else { return $wpdb->get_results("SELECT entryId,entryTime,entryIp,entryReferrer,entryUA,entryRequestedUrl FROM ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME)." ORDER BY entryId DESC LIMIT 0, ".$maxEntries);}
143
+ }
144
+
145
+ final public static function getLastID()
146
+ {
147
+ global $wpdb;
148
+ return $wpdb->get_var("SELECT entryId FROM ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME)." ORDER BY entryId DESC");
149
+ }
150
+
151
+ final public static function ajaxGetTrafficData($maxEntries = 0)
152
+ {
153
+ if ( !wp_verify_nonce( $_REQUEST['nonce'], "wsdTrafficScan_nonce")) { exit(__('Invalid request - nonce')); }
154
+
155
+ if ( !isset( $_REQUEST['lastID'])) { exit(__('Invalid request - lastID')); }
156
+
157
+ if ( !isset( $_REQUEST['forceLoad'])) { exit(__('Invalid request - forceload')); }
158
+
159
+ if ( isset( $_REQUEST['maxEntries'])) { $maxEntries = intval($_REQUEST['maxEntries']); }
160
+
161
+ $result = array();
162
+ $forceLoad = (bool)$_REQUEST['forceLoad'];
163
+
164
+ // no changes yet
165
+ if(! $forceLoad)
166
+ {
167
+ if($_REQUEST['lastID'] == self::getLastID())
168
+ {
169
+ $result['type'] = 'success';
170
+ $result['data'] = '';
171
+ $result = json_encode($result);
172
+ exit($result);
173
+ }
174
+ }
175
+
176
+ if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
177
+ $result['type'] = 'success';
178
+ $result['data'] = '';
179
+ $data = self::getTrafficData($maxEntries);
180
+ if(empty($data)){ $result['data'] = '<tr><td><p style="margin: 5px 5px; font-weight: bold; color: #cc0000">No data yet.</p></td></tr>'; }
181
+ else {
182
+ $title= sprintf('title="%s"',__('Opens in a new tab'));
183
+ foreach($data as $entry)
184
+ {
185
+ $result['data'] .= '<tr><td class="wsd-scan-entry">';
186
+ $result['data'] .= '<div>';
187
+ if(empty($entry->entryReferrer)){
188
+ $ref = '';
189
+ }
190
+ else {
191
+ $url = htmlentities(urldecode($entry->entryReferrer),ENT_QUOTES);
192
+ $ref = __('coming from').' <span class="w-entry"><a href="'.$url.'" target="_blank" '.$title.'>'. $url . '</a></span>';
193
+ }
194
+
195
+ //@todo: add geo-location + flag
196
+
197
+ $result['data'] .= '<p><span class="w-ip">'.$entry->entryIp . '</span> ';
198
+ $rurl = urldecode($entry->entryRequestedUrl);
199
+ $result['data'] .= $ref.' '.__('requested').' <span class="w-entry"><a href="'.$rurl.'" target="_blank" '.$title.'>'.htmlentities($rurl,ENT_QUOTES).'</a></span></p>';
200
+ $result['data'] .= '<p><strong>'.__('Date').'</strong>: <span class="w-date">'.$entry->entryTime.'</span></p>';
201
+ $result['data'] .= '<p><strong>'.__('Agent').'</strong>: <span class="w-ua">'.htmlentities($entry->entryUA,ENT_QUOTES).'</span></p>';
202
+ $result['data'] .= '</div>';
203
+ $result['data'] .= '</td></tr>';
204
+ }
205
+ }
206
+ $result = json_encode($result);
207
+ exit($result);
208
+ }
209
+ exit('Invalid request!');
210
+ }
211
+
212
+ /**
213
+ * @param $url
214
+ * @return bool
215
+ * Exclude urls
216
+ */
217
+ private static function isUrlExcluded($url)
218
+ {
219
+ if(false !==(strpos($url, 'wp-cron.php?doing_wp_cron'))) { return true; }
220
+ return false;
221
+ }
222
+ }
res/inc/SwpaPlugin.php ADDED
@@ -0,0 +1,382 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+ /**
3
+ * Class SwpaPlugin
4
+ * Static class
5
+ */
6
+ class SwpaPlugin
7
+ {
8
+ public static function createWpMenu()
9
+ {
10
+ if (current_user_can('administrator') && function_exists('add_menu_page'))
11
+ {
12
+ $reqCap = 'activate_plugins';
13
+ add_menu_page('Secure WP', 'Secure WP', $reqCap, SWPA_PLUGIN_PREFIX, array(get_class(),'pageMain'), SwpaUtil::imageUrl('logo-small.png'));
14
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'Dashboard', __('Dashboard'), $reqCap, SWPA_PLUGIN_PREFIX, array(get_class(),'pageMain'));
15
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'Database', __('Database'), $reqCap, SWPA_PLUGIN_PREFIX.'database', array(get_class(),'pageDatabase'));
16
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'Scanner', __('Scanner'), $reqCap, SWPA_PLUGIN_PREFIX.'scanner', array(get_class(),'pageScanner'));
17
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'Live traffic', __('Live traffic'), $reqCap, SWPA_PLUGIN_PREFIX.'live_traffic', array(get_class(),'pageLiveTraffic'));
18
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'Blog', __('Blog'), $reqCap, SWPA_PLUGIN_PREFIX.'blog', array(get_class(),'pageBlog'));
19
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'Settings', __('Settings'), $reqCap, SWPA_PLUGIN_PREFIX.'settings', array(get_class(),'pageSettings'));
20
+ add_submenu_page(SWPA_PLUGIN_PREFIX, 'About', __('About'), $reqCap, SWPA_PLUGIN_PREFIX.'about', array(get_class(),'pageAbout'));
21
+ }
22
+ }
23
+
24
+ public static function pageMain() { SwpaUtil::includePage('dashboard.php'); }
25
+ public static function pageDatabase() { SwpaUtil::includePage('database.php'); }
26
+ public static function pageScanner() { SwpaUtil::includePage('scanner.php'); }
27
+ public static function pageLiveTraffic() { SwpaUtil::includePage('live_traffic.php'); }
28
+ public static function pageBlog() { SwpaUtil::includePage('blog.php'); }
29
+ public static function pageSettings() { SwpaUtil::includePage('settings.php'); }
30
+ public static function pageAbout() { SwpaUtil::includePage('about.php'); }
31
+
32
+ public static function loadResources()
33
+ {
34
+ if(SwpaUtil::canLoad()){
35
+ wp_enqueue_style('wsd-styles-base', SwpaUtil::cssUrl('styles.base.css'));
36
+ wp_enqueue_style('wsd-styles-alerts', SwpaUtil::cssUrl('styles.alerts.css'));
37
+ wp_enqueue_style('wsd-styles-general', SwpaUtil::cssUrl('styles.general.css'));
38
+ wp_enqueue_style('wsd-styles-status', SwpaUtil::cssUrl('styles.status.css'));
39
+ wp_enqueue_script('wsdplugin-js-util', SwpaUtil::jsUrl('wsd-util.js'), array('jquery'));
40
+ }
41
+ }
42
+
43
+
44
+ /**
45
+ * Common method to add an alert to database.
46
+ * @static
47
+ * @param string $actionName The name of the action of the alert
48
+ * @param int $type Can only be one of the following: SWPA_PLUGIN_ALERT_TYPE_OVERWRITE | SWPA_PLUGIN_ALERT_TYPE_STACK. Defaults to SWPA_PLUGIN_ALERT_TYPE_OVERWRITE
49
+ * @param int $severity Can only have one of the following values: 0 1 2 3. Defaults to 0.
50
+ * @param string $title
51
+ * @param string $description
52
+ * @param string $solution
53
+ * @return bool
54
+ */
55
+ public static function alert($actionName, $type = 0, $severity = 0, $title = '', $description = '', $solution = '') {
56
+ global $wpdb;
57
+
58
+ $table = self::getTableName();
59
+
60
+ if($type == SWPA_PLUGIN_ALERT_TYPE_STACK)
61
+ {
62
+ //#! Check the max number of stacked alerts to keep and remove the exceeding ones
63
+ $afsDate = $wpdb->get_var("SELECT alertFirstSeen FROM $table WHERE alertActionName = '$actionName' ORDER BY `alertDate`;");
64
+ if(empty($afsDate)){ $afsDate = "CURRENT_TIMESTAMP()";}
65
+ else { $afsDate = "'".$afsDate."'"; }
66
+ $result = $wpdb->get_var("SELECT COUNT(alertId) FROM $table WHERE alertActionName = '$actionName';");
67
+ if($result >= SWPA_PLUGIN_ALERT_STACK_MAX_KEEP){
68
+ // remove older entries to make room for the new ones
69
+ $query = "DELETE FROM $table ORDER BY alertDate ASC LIMIT ".($result - (SWPA_PLUGIN_ALERT_STACK_MAX_KEEP - 1));
70
+ $wpdb->query($query);
71
+ }
72
+
73
+ //Add the new entry
74
+ $query = $wpdb->prepare(
75
+ "INSERT INTO $table
76
+ (`alertType`,
77
+ `alertSeverity`,
78
+ `alertActionName`,
79
+ `alertTitle`,
80
+ `alertDescription`,
81
+ `alertSolution`,
82
+ `alertDate`,
83
+ `alertFirstSeen`)
84
+ VALUES
85
+ (%d,
86
+ %d,
87
+ '%s',
88
+ '%s',
89
+ '%s',
90
+ '%s',
91
+ CURRENT_TIMESTAMP(),
92
+ $afsDate
93
+ );"
94
+ ,$type, $severity, $actionName, $title, $description, $solution);
95
+ }
96
+ elseif($type == SWPA_PLUGIN_ALERT_TYPE_OVERWRITE)
97
+ {
98
+ //#! Find the record by actionName and update fields
99
+ $result = $wpdb->get_var("SELECT alertId FROM $table WHERE alertActionName = '".$actionName."'; ");
100
+ //#! found. do update
101
+ if($result > 0){
102
+ $query = $wpdb->prepare("UPDATE $table
103
+ SET
104
+ `alertType` = %d,
105
+ `alertSeverity` = %d,
106
+ `alertActionName` = '%s',
107
+ `alertTitle` = '%s',
108
+ `alertDescription` = '%s',
109
+ `alertSolution` = '%s',
110
+ `alertDate` = CURRENT_TIMESTAMP()
111
+ WHERE alertId = %d;",
112
+ $type, $severity, $actionName, $title, $description, $solution,$result);
113
+ }
114
+ //#! record not found. insert query
115
+ else {
116
+ $query = $wpdb->prepare("INSERT INTO $table
117
+ (`alertType`,
118
+ `alertSeverity`,
119
+ `alertActionName`,
120
+ `alertTitle`,
121
+ `alertDescription`,
122
+ `alertSolution`,
123
+ `alertDate`,
124
+ `alertFirstSeen`)
125
+ VALUES
126
+ (%d,
127
+ %d,
128
+ '%s',
129
+ '%s',
130
+ '%s',
131
+ '%s',
132
+ CURRENT_TIMESTAMP(),
133
+ CURRENT_TIMESTAMP()
134
+ );",
135
+ $type, $severity, $actionName, $title, $description, $solution);
136
+ }
137
+ }
138
+ $result = $wpdb->query($query);
139
+ if($result === false){
140
+ //#! MySQL error
141
+ return false;
142
+ }
143
+ return true;
144
+ }
145
+
146
+ public static function getTableName($tableName = SWPA_PLUGIN_ALERT_TABLE_NAME){
147
+ global $wpdb;
148
+ return $wpdb->prefix.$tableName;
149
+ }
150
+
151
+ /**
152
+ * Get all alerts grouped by alertActionName
153
+ * @return array
154
+ */
155
+ public static function getAlerts()
156
+ {
157
+ global $wpdb;
158
+ $columns = "`alertId`,`alertType`,`alertSeverity`,`alertActionName`,`alertTitle`,`alertDescription`,`alertSolution`,`alertDate`,`alertFirstSeen`";
159
+ return $wpdb->get_results("SELECT $columns FROM ".self::getTableName(SWPA_PLUGIN_ALERT_TABLE_NAME)." GROUP BY `alertActionName`;");
160
+ }
161
+
162
+ // filter alerts by input
163
+ public static function getAlertsBy($alertSeverity)
164
+ {
165
+ global $wpdb;
166
+ $columns = "`alertId`,`alertType`,`alertSeverity`,`alertActionName`,`alertTitle`,`alertDescription`,`alertSolution`,`alertDate`,`alertFirstSeen`";
167
+ return $wpdb->get_results("SELECT $columns FROM ".self::getTableName(SWPA_PLUGIN_ALERT_TABLE_NAME)." WHERE `alertSeverity` = '$alertSeverity' GROUP BY `alertActionName`;");
168
+ }
169
+
170
+ public static function getChildAlerts($alertId, $alertType)
171
+ {
172
+ global $wpdb;
173
+ $columns = "`alertId`,`alertType`,`alertSeverity`,`alertActionName`,`alertTitle`,`alertDescription`,`alertSolution`,`alertDate`,`alertFirstSeen`";
174
+ return $wpdb->get_results("SELECT $columns FROM ".self::getTableName()." WHERE (alertId <> $alertId AND alertType = '$alertType') ORDER BY `alertDate` DESC");
175
+ }
176
+
177
+ /**
178
+ * Retrieve the settings from database. This method will extract all methods found in the SwpaSecurity class and provide them as
179
+ * settings in the settings page. It will also auto update itself in case new methods are added to the class or if
180
+ * some of them were removed.
181
+ * @return array
182
+ */
183
+ public static function getSettings()
184
+ {
185
+ $className = 'SwpaSecurity';
186
+ if(! class_exists($className)){
187
+ return array();
188
+ }
189
+ $settings = get_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME);
190
+ $class = new ReflectionClass($className);
191
+ $methods = $class->getMethods();
192
+
193
+ if(empty($settings))
194
+ {
195
+ $settings = array();
196
+ foreach($methods as $method)
197
+ {
198
+ $mn = $method->name;
199
+ if($className != $method->class){
200
+ continue;
201
+ }
202
+ $comment = $method->getDocComment();
203
+ if(false !== ($pos = strpos($mn,SwpaSecurity::$methodPrefix))){
204
+ $settings[$mn] = array(
205
+ 'name' => $mn,
206
+ 'value' => 0, // 0 or 1 ; whether or not the option will show as selected by default in the plugin's settings page
207
+ 'desc' => trim(str_replace(array('/**','*/'),'', $comment))
208
+ );
209
+ }
210
+ }
211
+ add_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME, $settings);
212
+ }
213
+ else
214
+ {
215
+ $n1 = (isset($settings['keepNumEntriesLiveTraffic']) ? $settings['keepNumEntriesLiveTraffic'] : 500);
216
+ $n2 = (isset($settings['liveTrafficRefreshRateAjax']) ? $settings['liveTrafficRefreshRateAjax'] : 10);
217
+
218
+ // Check to see whether or not new methods were added or subtracted
219
+ $numSettings = count($settings);
220
+ $numMethods = count($methods);
221
+ if($numMethods <> $numSettings)
222
+ {
223
+ // add new methods
224
+ $_temp = array();
225
+ foreach($methods as $method){
226
+ if($className != $method->class){
227
+ continue;
228
+ }
229
+ $comment = $method->getDocComment();
230
+ if(false === ($pos = strpos($method->name,SwpaSecurity::$methodPrefix))){ continue; }
231
+ if(! isset($settings[$method->name])){
232
+ $settings[$method->name] = array(
233
+ 'name' => $method->name,
234
+ 'value' => 0,
235
+ 'desc' => trim(str_replace(array('/**','*/'),'', $comment))
236
+ );
237
+ }
238
+ array_push($_temp, $method->name);
239
+ }
240
+ // remove missing methods
241
+ foreach($settings as $k => &$entry){
242
+ if(! in_array($entry['name'], $_temp)){
243
+ unset($settings[$k]);
244
+ }
245
+ }
246
+
247
+ $settings['keepNumEntriesLiveTraffic'] = $n1;
248
+ $settings['liveTrafficRefreshRateAjax'] = $n2;
249
+ update_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME, $settings);
250
+ }
251
+ }
252
+ return $settings;
253
+ }
254
+
255
+ /**
256
+ * Check to see whether or not the provided setting is enabled (as the settings are configurable the user might chose to turn some of them off)
257
+ * @param string $name The name of the setting to look for in the settings array
258
+ * @return bool
259
+ */
260
+ public static function isSettingEnabled($name)
261
+ {
262
+ $settings = self::getSettings();
263
+ return (isset($settings[$name]) ? $settings[$name]['value'] : false);
264
+ }
265
+
266
+ public static function activate()
267
+ {
268
+ global $wpdb;
269
+ $charset_collate = '';
270
+
271
+ if ( ! empty($wpdb->charset) ){$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";}
272
+ if ( ! empty($wpdb->collate) ){$charset_collate .= " COLLATE $wpdb->collate";}
273
+
274
+ // MUST HAVE "CREATE" RIGHTS if a table is not found and needs to be created
275
+ $rights = SwpaInfoServer::getDatabaseUserAccessRights();
276
+ $hasCreateRight = in_array('CREATE', $rights['rightsHaving']);
277
+ $table1 = self::getTableName(SWPA_PLUGIN_ALERT_TABLE_NAME);
278
+ $table2 = self::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME);
279
+
280
+ if(! SwpaUtil::tableExists($table1)){
281
+ $query1 = "CREATE TABLE IF NOT EXISTS ".$table1." (
282
+ `alertId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
283
+ `alertType` TINYINT NOT NULL DEFAULT 0 ,
284
+ `alertSeverity` INT NOT NULL DEFAULT 0 ,
285
+ `alertActionName` VARCHAR (255) NOT NULL,
286
+ `alertTitle` VARCHAR(255) NOT NULL ,
287
+ `alertDescription` TEXT NOT NULL ,
288
+ `alertSolution` TEXT NOT NULL ,
289
+ `alertDate` DATETIME NOT NULL default '0000-00-00 00:00:00',
290
+ `alertFirstSeen` DATETIME NOT NULL default '0000-00-00 00:00:00',
291
+ PRIMARY KEY (`alertId`) ,
292
+ UNIQUE INDEX `alertId_UNIQUE` (`alertId` ASC) ) $charset_collate;";
293
+ if(! $hasCreateRight){
294
+ $notices= get_option('wsd_plugin_install_error', array());
295
+ $notices[]= '<strong>'.SWPA_PLUGIN_NAME."</strong>: The database user needs the '<strong>CREATE</strong>' right in order to install this plugin.";
296
+ update_option('wsd_plugin_install_error', $notices);
297
+ return;
298
+ }
299
+ $result = @$wpdb->query($query1);
300
+ if($result === false){
301
+ //#! MySQL error
302
+ $GLOBALS['SWPA_PLUGIN_INSTALL_ERROR'] = 'Error running query: '.$query1;
303
+ $notices= get_option('wsd_plugin_install_error', array());
304
+ $notices[]= '<strong>'.SWPA_PLUGIN_NAME."</strong>. Error running query: <strong><pre>$query1</pre></strong>.";
305
+ update_option('wsd_plugin_install_error', $notices);
306
+ return;
307
+ }
308
+ }
309
+
310
+ if(! SwpaUtil::tableExists($table2)){
311
+ $query2 = "CREATE TABLE IF NOT EXISTS ".$table2." (
312
+ `entryId` bigint(20) unsigned NOT NULL auto_increment,
313
+ `entryTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
314
+ `entryIp` text,
315
+ `entryReferrer` text,
316
+ `entryUA` text,
317
+ `entryRequestedUrl` text,
318
+ PRIMARY KEY (entryId)) $charset_collate;";
319
+ if(! $hasCreateRight){
320
+ $notices= get_option('wsd_plugin_install_error', array());
321
+ $notices[]= '<strong>'.SWPA_PLUGIN_NAME."</strong>: The database user needs the '<strong>CREATE</strong>' right in order to install this plugin.";
322
+ update_option('wsd_plugin_install_error', $notices);
323
+ return;
324
+ }
325
+ $result = @$wpdb->query($query2);
326
+ if($result === false){
327
+ //#! MySQL error
328
+ $GLOBALS['SWPA_PLUGIN_INSTALL_ERROR'] = 'Error running query: '.$query2;
329
+ $notices= get_option('wsd_plugin_install_error', array());
330
+ $notices[]= '<strong>'.SWPA_PLUGIN_NAME."</strong>. Error running query: <strong><pre>$query2</pre></strong>.";
331
+ update_option('wsd_plugin_install_error', $notices);
332
+ return;
333
+ }
334
+ }
335
+
336
+ add_option('WSD-PLUGIN-CAN-RUN-TASKS', 1);
337
+ }
338
+ public static function deactivate() {
339
+ if(self::wpssPluginInstalled()){
340
+ return;
341
+ }
342
+ SwpaScheduler::unregisterCronTasks();
343
+ delete_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME);
344
+ delete_option('wsd_plugin_install_error');
345
+ delete_option('WSD-PLUGIN-CAN-RUN-TASKS');
346
+ }
347
+ public static function uninstall(){
348
+ if(self::wpssPluginInstalled()){
349
+ return;
350
+ }
351
+ delete_option('SWPA_PLUGIN_ENTRIES_LIVE_TRAFFIC');
352
+ global $wpdb;
353
+ $wpdb->query("DROP TABLE IF EXISTS ".SwpaPlugin::getTableName(SWPA_PLUGIN_ALERT_TABLE_NAME));
354
+ $wpdb->query("DROP TABLE IF EXISTS ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME));
355
+ }
356
+
357
+ /**
358
+ * Check to see whether or not the Wp Security Scan plugin is installed
359
+ * @return bool
360
+ */
361
+ public static function wpssPluginInstalled()
362
+ {
363
+ $pluginPath = 'wp-security-scan/index.php';
364
+ $pluginFilePath = trailingslashit(ABSPATH).'wp-content/plugins/'.$pluginPath;
365
+ if(function_exists('is_plugin_active')){
366
+ if(is_plugin_active($pluginPath)){
367
+ return true;
368
+ }
369
+ else {
370
+ // check plugins dir
371
+ if(is_file($pluginFilePath)){
372
+ return true;
373
+ }
374
+ }
375
+ }
376
+ // check plugins dir
377
+ if(is_file($pluginFilePath)){
378
+ return true;
379
+ }
380
+ return false;
381
+ }
382
+ }
res/inc/SwpaScheduler.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+ /**
3
+ * Class SwpaScheduler
4
+ * Provides common methods to register action with wp-cron
5
+ */
6
+ class SwpaScheduler
7
+ {
8
+ /**
9
+ * @var array
10
+ * Holds all the registered cron tasks so to provide an easy way to
11
+ * unregister them all upon deactivation of the plugin
12
+ */
13
+ private static $_cronTasks = array();
14
+
15
+ /**
16
+ * Register a cron task
17
+ * @param string $cronActionName The name of the action that will be registered with wp-cron
18
+ * @param string $callback The function to register with wp-cron
19
+ * @param string $interval can only be one of the following: hourly, daily and twicedaily if no other custom intervals are registered. Defaults to daily
20
+ * @return void
21
+ */
22
+ public static function registerCronTask($cronActionName, $callback, $interval = 'daily')
23
+ {
24
+ if(! is_callable($callback)) { return; }
25
+
26
+ // if cron disabled -> run callback
27
+ if(! self::canRegisterCronTask()){
28
+ self::registerTask($callback);
29
+ return;
30
+ }
31
+ $interval = strtolower($interval);
32
+ if(empty($interval)){ $interval = 'daily'; }
33
+ else{
34
+ // check to see if the time interval is valid
35
+ $timeIntervals = wp_get_schedules();
36
+ if(! array_key_exists($interval, $timeIntervals)){
37
+ $interval = 'daily';
38
+ }
39
+ }
40
+ // avoid duplicate crons
41
+ add_action($cronActionName, $callback);
42
+ if ( ! wp_next_scheduled($cronActionName) ) {
43
+ wp_schedule_event( time(), $interval, $cronActionName );
44
+ array_push(self::$_cronTasks, $cronActionName);
45
+ }
46
+ }
47
+
48
+ public static function unregisterCronTask($cronActionName){
49
+ wp_clear_scheduled_hook($cronActionName);
50
+ if(! empty(self::$_cronTasks)){
51
+ if(isset(self::$_cronTasks[$cronActionName])){
52
+ unset(self::$_cronTasks[$cronActionName]);
53
+ }
54
+ }
55
+ }
56
+
57
+ public static function unregisterCronTasks(){
58
+ if(! empty(self::$_cronTasks)){
59
+ foreach (self::$_cronTasks as $task) {
60
+ wp_clear_scheduled_hook($task);
61
+ }
62
+ self::$_cronTasks = array();
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Check to see whether or not cron is enabled in WordPress
68
+ * @return bool
69
+ */
70
+ public static function canRegisterCronTask(){ return ((defined('DISABLE_WP_CRON') && 'DISABLE_WP_CRON') ? false : true); }
71
+
72
+ /**
73
+ * Register a task
74
+ * @param string $callback The callback to register
75
+ * @param string $wpActionName Optional. If provided it must be a valid action name to hook the $callback to. If omitted, then the $callback will just be executed.
76
+ * @return void
77
+ */
78
+ public static function registerTask($callback, $wpActionName = '') {
79
+ if(! empty($wpActionName)){
80
+ add_action($wpActionName, $callback);
81
+ }
82
+ else {
83
+ if(is_callable($callback)){
84
+ call_user_func($callback);
85
+ }
86
+ }
87
+ }
88
+
89
+ /**
90
+ * Execute all methods of a class that are prefixed with $onlyWithPrefix (if provided)
91
+ * @param $className The name of the class
92
+ * @param string $onlyWithPrefix Optional. The prefix to look up in the methods' name
93
+ * @return void
94
+ */
95
+ public static function registerClassTasks($className, $onlyWithPrefix = '')
96
+ {
97
+ $_class = new ReflectionClass($className);
98
+ $methods = $_class->getMethods();
99
+ if(! empty($methods)){
100
+ $pLength = strlen($onlyWithPrefix);
101
+ foreach($methods as $_method){
102
+ $method = $_method->name;
103
+ // only certain methods
104
+ if($pLength > 0){
105
+ $search = substr($method, 0, $pLength);
106
+ if(strcasecmp($search,$onlyWithPrefix) == 0){
107
+ call_user_func(array($className, $method));
108
+ }
109
+ }
110
+ else { call_user_func(array($className, $method)); }
111
+ }
112
+ }
113
+ }
114
+
115
+ }
res/inc/SwpaSecurity.php ADDED
@@ -0,0 +1,726 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+ /**
3
+ * Class SwpaSecurity
4
+ * Static class. Provides security fixes for WordPress
5
+ */
6
+
7
+ class SwpaSecurity extends SwpaPlugin
8
+ {
9
+ /**
10
+ * The prefix each method should have in order to be executed automatically.
11
+ * @var string Defaults to 'fix_'
12
+ */
13
+ public static $methodPrefix = 'fix_';
14
+ public static $isVersionHidden = false;
15
+
16
+ /** Hide WordPress version for all users but administrators */
17
+ public static function fix_hideWpVersion()
18
+ {
19
+ global $wsdPluginAlertsArray;
20
+ $actionName = $wsdPluginAlertsArray['fix_wp_version_hidden']['name'];
21
+ $alertType = $wsdPluginAlertsArray['fix_wp_version_hidden']['type'];
22
+
23
+ /* This check is important so this function will run only if the user enables it. */
24
+ if(! self::isSettingEnabled(__FUNCTION__)){
25
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
26
+ __('WordPress version is displayed for all users'),
27
+ __('<p>Displaying your WordPress version on frontend and in the backend\'s footer to all visitors
28
+ and users of your website is a security risk because if a hacker knows which version of WordPress a website is running, it can make it easier for him to target a known WordPress security issue.</p>'),
29
+ sprintf(__('<p>This plugin can automatically hide your WordPress version from frontend, backend and rss feeds if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
30
+ 'Hide WordPress version for all users but administrators')
31
+ );
32
+ return;
33
+ }
34
+
35
+ $isAdmin = SwpaUtil::isAdministrator();
36
+
37
+ //@@ back-end
38
+ if(is_admin())
39
+ {
40
+ if(! $isAdmin){
41
+ function __hideFooterVersion(){ return ' ';}
42
+ add_filter( 'update_footer', '__hideFooterVersion',800);
43
+ self::$isVersionHidden = true;
44
+ }
45
+ // version hidden
46
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
47
+ __('WordPress version is only displayed to administrator users'),
48
+ __('<p>Displaying your WordPress version on frontend and in the backend\'s footer to all visitors
49
+ and users of your website is a security risk because if a hacker knows which version of WordPress a website is running, it can make it easier for him to target a known WordPress security issue.</p>')
50
+ );
51
+ }
52
+ //@@ front-end
53
+ else {
54
+ if (!$isAdmin)
55
+ {
56
+ global $wp_version, $wp_db_version, $manifest_version, $tinymce_version;
57
+
58
+ // random values
59
+ $v = intval( rand(0, 9999) );
60
+ $d = intval( rand(9999, 99999) );
61
+ $m = intval( rand(99999, 999999) );
62
+ $t = intval( rand(999999, 9999999) );
63
+
64
+ if ( function_exists('the_generator') )
65
+ {
66
+ // eliminate version for wordpress >= 2.4
67
+ remove_filter( 'wp_head', 'wp_generator' );
68
+ $actions = array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' );
69
+ foreach ( $actions as $action ) {
70
+ remove_action( $action, 'the_generator' );
71
+ }
72
+ // for vars
73
+ $wp_version = $v;
74
+ $wp_db_version = $d;
75
+ $manifest_version = $m;
76
+ $tinymce_version = $t;
77
+ }
78
+ else {
79
+ // for wordpress < 2.4
80
+ add_filter( "bloginfo_rss('version')", create_function('$a', "return $v;") );
81
+ // for rdf and rss v0.92
82
+ $wp_version = $v;
83
+ $wp_db_version = $d;
84
+ $manifest_version = $m;
85
+ $tinymce_version = $t;
86
+ }
87
+ self::$isVersionHidden = true;
88
+ }
89
+ // version hidden
90
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
91
+ __('WordPress version is only displayed to administrator users'),
92
+ __('<p>Displaying your WordPress version on frontend and in the backend\'s footer to all visitors
93
+ and users of your website is a security risk because if a hacker knows which version of WordPress a website is running, it can make it easier for him to target a known WordPress security issue.</p>')
94
+ );
95
+ }
96
+ }
97
+
98
+ /** Remove various meta tags generators from the blog's head tag for non-administrators. */
99
+ public static function fix_removeWpMetaGeneratorsFrontend()
100
+ {
101
+ global $wsdPluginAlertsArray;
102
+ $actionName = $wsdPluginAlertsArray['fix_wp_generators_frontend']['name'];
103
+ $alertType = $wsdPluginAlertsArray['fix_wp_generators_frontend']['type'];
104
+
105
+ /* This check is important so this function will run only if the user enables it. */
106
+ if(! self::isSettingEnabled(__FUNCTION__)){
107
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
108
+ __('WordPress meta tags are displayed on frontend to all users'),
109
+ __('<p>By default, WordPress creates a few meta tags, among which is the currently installed version, that give a hacker the knowledge about your WordPress installation. At the moment, these meta tags are available for anyone to see, which is a potentially security risk.</p>'),
110
+ sprintf(__('<p>This plugin can automatically hide your WordPress\'s default meta tags if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove various meta tags generators from the blog\'s head tag for non-administrators')
111
+ );
112
+ return;
113
+ }
114
+
115
+ if (!is_admin())
116
+ {
117
+ if(!SwpaUtil::isAdministrator()){
118
+ //@@ remove various meta tags generators from blog's head tag
119
+ function acx_filter_generator($gen, $type)
120
+ {
121
+ switch ( $type ) {
122
+ case 'html':
123
+ $gen = '<meta name="generator" content="WordPress">';
124
+ break;
125
+ case 'xhtml':
126
+ $gen = '<meta name="generator" content="WordPress" />';
127
+ break;
128
+ case 'atom':
129
+ $gen = '<generator uri="http://wordpress.org/">WordPress</generator>';
130
+ break;
131
+ case 'rss2':
132
+ $gen = '<generator>http://wordpress.org/?v=</generator>';
133
+ break;
134
+ case 'rdf':
135
+ $gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=" />';
136
+ break;
137
+ case 'comment':
138
+ $gen = '<!-- generator="WordPress" -->';
139
+ break;
140
+ }
141
+ return $gen;
142
+ }
143
+ foreach ( array( 'html', 'xhtml', 'atom', 'rss2', 'rdf', 'comment' ) as $type ) {
144
+ add_filter( "get_the_generator_".$type, 'acx_filter_generator', 10, 2 );
145
+ }
146
+ }
147
+ }
148
+ // version hidden
149
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
150
+ __('WordPress meta tags are only displayed on frontend to administrator users'),
151
+ __('<p>By default, WordPress creates a few meta tags, among which is the currently installed version, that give a hacker the knowledge about your WordPress installation.
152
+ At the moment, all WordPress\'s defaults meta tags are hidden for all users but administrators.</p>')
153
+ );
154
+ }
155
+
156
+ /** Remove Really Simple Discovery meta tags from front-end */
157
+ public static function fix_removeReallySimpleDiscovery()
158
+ {
159
+ global $wsdPluginAlertsArray;
160
+ $actionName = $wsdPluginAlertsArray['fix_wp_rsd_frontend']['name'];
161
+ $alertType = $wsdPluginAlertsArray['fix_wp_rsd_frontend']['type'];
162
+
163
+ /* This check is important so this function will run only if the user enables it. */
164
+ if(! self::isSettingEnabled(__FUNCTION__)){
165
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
166
+ __('WordPress Really Simple Discovery tag is displayed on frontend to all users'),
167
+ sprintf(__('<p>By default, WordPress creates the <strong>rsd meta tag</strong> to allow bloggers to consume services like Flickr using the <a href="%s" target="%s">XML-RPC</a> protocol.
168
+ If you don\'t use such services it is recommended to hide this meta tag.</p>'),
169
+ 'http://en.wikipedia.org/wiki/XML-RPC', '_blank'),
170
+ sprintf(__('<p>This plugin can automatically hide the rsd meta tag if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove Really Simple Discovery meta tags from front-end')
171
+ );
172
+ return;
173
+ }
174
+
175
+ if (!is_admin()) {
176
+ if(!SwpaUtil::isAdministrator() && function_exists('rsd_link')) {
177
+ remove_action('wp_head', 'rsd_link');
178
+ }
179
+ }
180
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
181
+ __('WordPress Really Simple Discovery tag is only displayed on frontend to administrator users.'),
182
+ sprintf(__('<p>By default, WordPress creates the <strong>rsd meta tag</strong> to allow bloggers to consume services like Flickr using the <a href="%s" target="%s">XML-RPC</a> protocol.
183
+ If you don\'t use such services it is recommended to hide this meta tag.</p>'),
184
+ 'http://en.wikipedia.org/wiki/XML-RPC', '_blank')
185
+ );
186
+ }
187
+
188
+ /** Remove Windows Live Writer meta tags from front-end */
189
+ public static function fix_removeWindowsLiveWriter()
190
+ {
191
+ global $wsdPluginAlertsArray;
192
+ $actionName = $wsdPluginAlertsArray['fix_wp_wlw_frontend']['name'];
193
+ $alertType = $wsdPluginAlertsArray['fix_wp_wlw_frontend']['type'];
194
+
195
+ /* This check is important so this function will run only if the user enables it. */
196
+ if(! self::isSettingEnabled(__FUNCTION__)){
197
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
198
+ __('WordPress Windows Live Writer tag is displayed on frontend for all users'),
199
+ sprintf(__('<p>By default, WordPress creates the wlw meta tag to allow bloggers to publish their articles using the <strong>"%s"</strong> application.
200
+ It is recommended to hide this meta tag from all visitors. If the option <strong>"%s"</strong> is checked on the plugin\'s settings page, this meta tag
201
+ will still be available for administrator users to use the <strong>"%s"</strong> application to publish their blog posts.</p>'),
202
+ 'Windows Live Writer', 'Remove Windows Live Writer meta tags from front-end', 'Windows Live Writer'),
203
+ sprintf(__('<p>This plugin can automatically hide the wlw meta tag if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove Windows Live Writer meta tags from front-end"')
204
+ );
205
+ return;
206
+ }
207
+
208
+ if (!is_admin() && function_exists('wlwmanifest_link')) {
209
+ if(!SwpaUtil::isAdministrator()) {
210
+ remove_action('wp_head', 'wlwmanifest_link');
211
+ }
212
+ }
213
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
214
+ __('WordPress Windows Live Writer tag is only displayed on frontend for administrator users'),
215
+ sprintf(__('<p>By default, WordPress creates the wlw meta tag to allow bloggers to publish their articles using the <strong>"%s"</strong> application.
216
+ It is recommended to hide this meta tag from all visitors. If the option <strong>"%s"</strong> is checked on the plugin\'s settings page, this meta tag
217
+ will still be available for administrator users to use the <strong>"%s"</strong> application to publish their blog posts.</p>'),
218
+ 'Windows Live Writer', 'Remove Windows Live Writer meta tags from front-end', 'Windows Live Writer')
219
+ );
220
+ }
221
+
222
+ /** Disable error reporting (php + db) for all but administrators */
223
+ public static function fix_disableErrorReporting()
224
+ {
225
+ global $wsdPluginAlertsArray;
226
+ $actionName = $wsdPluginAlertsArray['fix_wp_error_reporting']['name'];
227
+ $alertType = $wsdPluginAlertsArray['fix_wp_error_reporting']['type'];
228
+
229
+ /* This check is important so this function will run only if the user enables it. */
230
+ if(! self::isSettingEnabled(__FUNCTION__)){
231
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
232
+ __('The check for PHP and database error reporting is disabled'),
233
+ sprintf(__('<p>By default, WordPress hides database errors, but there are times when a plugin might enable them thus it is very important to have this type of errors turned off
234
+ so if there is an error during a connection to the database the user will not get access to the error message generated during that request.</p>
235
+ <p>As regarding the PHP errors, with the <strong>display_error</strong> PHP configuration directive enabled, untrusted sources can see detailed web application environment
236
+ error messages which include sensitive information that can be used to craft further attacks.</p>
237
+ <p>Attackers will do anything to collect information in order to design their attack in a more sophisticated way to eventually hack your website or web application, and causing
238
+ errors to display is a common starting point. Website errors can always occur, but they should be suppressed from being displayed back to the public.</p>
239
+ <p>Therefore we highly recommend you to have the <strong>"%s"</strong> option checked on the plugin\'s settings page to ensure PHP and
240
+ database errors will be hidden from all users. For more information, please check the following <a href="%s" target="%s">article</a>.</p>'),
241
+ 'Disable error reporting (php + db) for all but administrators', 'http://www.acunetix.com/blog/web-security-zone/articles/php-security-directive-your-website-is-showing-php-errors/', '_blank'),
242
+ sprintf(__('<p>This plugin can do this automatically if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
243
+ 'Disable error reporting (php + db) for all but administrators')
244
+ );
245
+ return;
246
+ }
247
+ if(! SwpaUtil::isAdministrator())
248
+ {
249
+ @error_reporting(0);
250
+ @ini_set('display_errors','Off');
251
+ @ini_set('display_startup_errors', 0);
252
+ global $wpdb;
253
+ $wpdb->hide_errors();
254
+ $wpdb->suppress_errors();
255
+ }
256
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
257
+ __('Error reporting, PHP and database, is enabled only for administrator users'),
258
+ sprintf(__('<p>By default, WordPress hides database errors, but there are times when a plugin might enable them thus it is very important to have this type of errors turned off
259
+ so if there is an error during a connection to the database the user will not get access to the error message generated during that request.</p>
260
+ <p>As regarding the PHP errors, with the <strong>display_error</strong> PHP configuration directive enabled, untrusted sources can see detailed web application environment
261
+ error messages which include sensitive information that can be used to craft further attacks.</p>
262
+ <p>Attackers will do anything to collect information in order to design their attack in a more sophisticated way to eventually hack your website or web application, and causing
263
+ errors to display is a common starting point. Website errors can always occur, but they should be suppressed from being displayed back to the public.</p>
264
+ <p>Therefore we highly recommend you to have the <strong>"%s"</strong> option checked on the plugin\'s settings page to ensure PHP and
265
+ database errors will be hidden from all users. For more information, please check the following <a href="%s" target="%s">article</a>.</p>'),
266
+ 'Disable error reporting (php + db) for all but administrators', 'http://www.acunetix.com/blog/web-security-zone/articles/php-security-directive-your-website-is-showing-php-errors/', '_blank')
267
+ );
268
+ }
269
+
270
+ /** Remove core update notifications from back-end for all but administrators */
271
+ public static function fix_removeCoreUpdateNotification()
272
+ {
273
+ global $wsdPluginAlertsArray;
274
+ $actionName = $wsdPluginAlertsArray['fix_wp_core_update_notif']['name'];
275
+ $alertType = $wsdPluginAlertsArray['fix_wp_core_update_notif']['type'];
276
+
277
+ /* This check is important so this function will run only if the user enables it. */
278
+ if(! self::isSettingEnabled(__FUNCTION__)){
279
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
280
+ __('Core update notifications are displayed to all users'),
281
+ __('<p>These notifications are displayed at the top of the screen by the WordPress platform whenever the website was updated or needs an update.</p>
282
+ <p>These notifications should only be viewed by the website\'s administrators and not visible to any other users registered with that website.</p>'),
283
+ sprintf(__('<p>This plugin can automatically hide these notifications if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove core update notifications from back-end for all but administrators')
284
+ );
285
+ return;
286
+ }
287
+
288
+ if (!SwpaUtil::isAdministrator())
289
+ {
290
+ add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_notices', 'maintenance_nag' );" ) );
291
+ add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_notices', 'update_nag', 3 );" ) );
292
+ add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', '_maybe_update_core' );" ) );
293
+ add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ) );
294
+ add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
295
+ remove_action( 'wp_version_check', 'wp_version_check' );
296
+ remove_action( 'admin_init', '_maybe_update_core' );
297
+ add_filter( 'pre_transient_update_core', create_function( '$a', "return null;" ) );
298
+ add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
299
+ }
300
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
301
+ __('Core update notifications are only displayed to administrator users.'),
302
+ __('<p>These notifications are displayed at the top of the screen by the WordPress platform whenever the website was updated or needs an update.</p>
303
+ <p>Currently, these notifications are only displayed to administrator users.</p>')
304
+ );
305
+ }
306
+
307
+ /** Remove plug-ins update notifications from back-end */
308
+ public static function fix_removePluginUpdateNotifications()
309
+ {
310
+ global $wsdPluginAlertsArray;
311
+ $actionName = $wsdPluginAlertsArray['fix_wp_plugins_update_notif']['name'];
312
+ $alertType = $wsdPluginAlertsArray['fix_wp_plugins_update_notif']['type'];
313
+
314
+ /* This check is important so this function will run only if the user enables it. */
315
+ if(! self::isSettingEnabled(__FUNCTION__)){
316
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
317
+ __('Plugins update notifications are displayed to all users'),
318
+ __('<p>These notifications are displayed at the top of the screen by the WordPress platform whenever the blog administrator
319
+ needs to be informed about an available update for a plugin.</p>
320
+ <p>These notifications should only be viewed by the website\'s administrators and not visible to any other users registered with that website.</p>'),
321
+ sprintf(__('<p>This plugin can automatically hide these notifications if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove plug-ins update notifications from back-end')
322
+ );
323
+ return;
324
+ }
325
+
326
+ if (!SwpaUtil::isAdministrator())
327
+ {
328
+ add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', 'wp_plugin_update_rows' );" ), 2 );
329
+ add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', '_maybe_update_plugins' );" ), 2 );
330
+ add_action( 'admin_menu', create_function( '$a', "remove_action( 'load-plugins.php', 'wp_update_plugins' );" ) );
331
+ add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', 'wp_update_plugins' );" ), 2 );
332
+ add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_update_plugins' );" ), 2 );
333
+ add_filter( 'pre_option_update_plugins', create_function( '$a', "return null;" ) );
334
+ remove_action( 'load-plugins.php', 'wp_update_plugins' );
335
+ remove_action( 'load-update.php', 'wp_update_plugins' );
336
+ remove_action( 'admin_init', '_maybe_update_plugins' );
337
+ remove_action( 'wp_update_plugins', 'wp_update_plugins' );
338
+ remove_action( 'load-update-core.php', 'wp_update_plugins' );
339
+ add_filter( 'pre_transient_update_plugins', create_function( '$a', "return null;" ) );
340
+ }
341
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
342
+ __('Plugins update notifications are only displayed to administrator users'),
343
+ __('<p>Currently, these notifications are only displayed to administrator users.</p>')
344
+ );
345
+ }
346
+
347
+ /** Remove themes update notifications from back-end */
348
+ public static function fix_removeThemeUpdateNotifications()
349
+ {
350
+ global $wsdPluginAlertsArray;
351
+ $actionName = $wsdPluginAlertsArray['fix_wp_themes_update_notif']['name'];
352
+ $alertType = $wsdPluginAlertsArray['fix_wp_themes_update_notif']['type'];
353
+
354
+ /* This check is important so this function will run only if the user enables it. */
355
+ if(! self::isSettingEnabled(__FUNCTION__)){
356
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
357
+ __('Themes update notifications are displayed to all users.'),
358
+ __('<p>These notifications are displayed at the top of the screen by the WordPress platform whenever the blog administrator
359
+ needs to be informed about an available update for a theme.</p>
360
+ <p>These notifications should only be viewed by the website\'s administrators and not visible to any other users registered with that website.</p>'),
361
+ sprintf(__('<p>This plugin can automatically hide these notifications if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove themes update notifications from back-end')
362
+ );
363
+ return;
364
+ }
365
+
366
+ if (!SwpaUtil::isAdministrator())
367
+ {
368
+ remove_action( 'load-themes.php', 'wp_update_themes' );
369
+ remove_action( 'load-update.php', 'wp_update_themes' );
370
+ remove_action( 'admin_init', '_maybe_update_themes' );
371
+ remove_action( 'wp_update_themes', 'wp_update_themes' );
372
+ remove_action( 'load-update-core.php', 'wp_update_themes' );
373
+ add_filter( 'pre_transient_update_themes', create_function( '$a', "return null;" ) );
374
+ }
375
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
376
+ __('Themes update notifications are only displayed to administrator users'),
377
+ __('<p>Currently, these notifications are only displayed to administrator users.</p>')
378
+ );
379
+ }
380
+
381
+ /** Remove login error notifications from front-end */
382
+ public static function fix_removeLoginErrorNotificationsFrontEnd()
383
+ {
384
+ global $wsdPluginAlertsArray;
385
+ $actionName = $wsdPluginAlertsArray['fix_wp_login_errors']['name'];
386
+ $alertType = $wsdPluginAlertsArray['fix_wp_login_errors']['type'];
387
+
388
+ /* This check is important so this function will run only if the user enables it. */
389
+ if(! self::isSettingEnabled(__FUNCTION__)){
390
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
391
+ __('WordPress login errors are displayed.'),
392
+ __('<p>Every time a failed login is encountered, the WordPress platform generates an error message that is displayed to the user.
393
+ This is a potential security risk because it let\'s the user know of his mistake (be it a wrong user name or password) thus making your
394
+ WordPress website more vulnerable to attacks.</p>
395
+ <p>We strongly recommend you to hide these login error messages from all users to ensure a better security of your blog.</p>'),
396
+ sprintf(__('<p>This plugin can automatically hide these notifications if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove login error notifications from front-end')
397
+ );
398
+ return;
399
+ }
400
+ $str = '<link rel="stylesheet" type="text/css" href="'.SwpaUtil::cssUrl('acx-styles-extra.css').'"/>';
401
+ add_action('login_head', create_function('$a', "echo '{$str}';"));
402
+ add_filter('login_errors', create_function('$a', "return null;"));
403
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
404
+ __('WordPress login errors are not displayed.'),
405
+ __('<p>Currently, these errors are hidden to all users.</p>')
406
+ );
407
+ }
408
+
409
+ /** Hide admin notifications for non admins. */
410
+ public static function fix_hideAdminNotifications()
411
+ {
412
+ global $wsdPluginAlertsArray;
413
+ $actionName = $wsdPluginAlertsArray['fix_wp_admin_notices']['name'];
414
+ $alertType = $wsdPluginAlertsArray['fix_wp_admin_notices']['type'];
415
+
416
+ /* This check is important so this function will run only if the user enables it. */
417
+ if(! self::isSettingEnabled(__FUNCTION__)){
418
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
419
+ __('WordPress admin notifications are displayed to all users.'),
420
+ __('<p>These notifications are displayed at the top of the screen by the WordPress platform whenever the blog administrator
421
+ needs to be informed about an event that has occurred inside WordPress, it could be about an available update for the
422
+ WordPress platform, a plugin or a theme that was updated or needs an update or to be configured, etc.</p>
423
+ <p>These notifications should only be viewed by the website\'s administrators and not visible to any other users registered with that website.</p>'),
424
+ sprintf(__('<p>This plugin can automatically hide these notifications if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Hide admin notifications for non admins')
425
+ );
426
+ return;
427
+ }
428
+
429
+ if (!SwpaUtil::isAdministrator())
430
+ {
431
+ add_action('init', create_function('$a', "remove_action('init', 'wp_version_check');"), 2);
432
+ add_filter('pre_option_update_core', create_function('$a', "return null;"));
433
+ }
434
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
435
+ __('WordPress admin notifications are only displayed to administrator users.'),
436
+ __('<p>These notifications are displayed at the top of the screen by the WordPress platform whenever the blog administrator
437
+ needs to be informed about an event that has occurred inside WordPress, it could be about an available update for the
438
+ WordPress platform, a plugin or a theme that was updated or needs an update or to be configured, etc.</p>
439
+ <p>Currently, these notifications are displayed only to administrator users.</p>'));
440
+ }
441
+
442
+ /** Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing */
443
+ public static function fix_preventDirectoryListing()
444
+ {
445
+ global $wsdPluginAlertsArray;
446
+
447
+ $actionName = $wsdPluginAlertsArray['fix_wp_dir_listing']['name'];
448
+ $alertType = $wsdPluginAlertsArray['fix_wp_dir_listing']['type'];
449
+ /* This check is important so this function will run only if the user enables it. */
450
+ if(! self::isSettingEnabled(__FUNCTION__)){
451
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
452
+ __('Directory listing check is disabled. This option should be enabled.'),
453
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
454
+ The specific risks and consequences vary depending on which files are listed and accessible.
455
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
456
+ sprintf(__('<p>This plugin can automatically create an empty <strong>index.php</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
457
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
458
+ 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
459
+ );
460
+ return;
461
+ }
462
+ else {
463
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
464
+ __('Directory listing check is enabled.'),
465
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
466
+ The specific risks and consequences vary depending on which files are listed and accessible.
467
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
468
+ );
469
+ }
470
+
471
+ $data = '<?php exit;?>';
472
+ $contentDir = trailingslashit(WP_CONTENT_DIR);
473
+ $pluginsDir = $contentDir.'plugins';
474
+ $themesDir = $contentDir.'themes';
475
+ $uploadsDir = $contentDir.'uploads';
476
+
477
+ $actionName = $wsdPluginAlertsArray['fix_wp_index_content']['name'];
478
+ $alertType = $wsdPluginAlertsArray['fix_wp_index_content']['type'];
479
+ $file = $contentDir.'/index.php';
480
+ if(is_dir($contentDir)){
481
+ if(is_file($file)){
482
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
483
+ sprintf(__('<strong>"%s"</strong> directory is secure from directory listing.'),'/wp-content'),
484
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
485
+ The specific risks and consequences vary depending on which files are listed and accessible.
486
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
487
+ );
488
+ }
489
+ else {
490
+ if (is_writable($contentDir))
491
+ {
492
+ SwpaUtil::writeFile($file,$data);
493
+ @chmod($file,'0644');
494
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
495
+ sprintf(__('<strong>"%s"</strong> directory is secure from directory listing.'),'/wp-content'),
496
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
497
+ The specific risks and consequences vary depending on which files are listed and accessible.
498
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
499
+ );
500
+ }
501
+ else {
502
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
503
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content'),
504
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
505
+ The specific risks and consequences vary depending on which files are listed and accessible.
506
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
507
+ sprintf(__('<p>This plugin can automatically create an empty <strong>index.php</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
508
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
509
+ 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
510
+ );
511
+ }
512
+ }
513
+ }
514
+
515
+ $actionName = $wsdPluginAlertsArray['fix_wp_index_plugins']['name'];
516
+ $alertType = $wsdPluginAlertsArray['fix_wp_index_plugins']['type'];
517
+ $file = $pluginsDir.'/index.php';
518
+ if(is_dir($pluginsDir)){
519
+ if(is_file($file)){
520
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
521
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/plugins'),
522
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
523
+ The specific risks and consequences vary depending on which files are listed and accessible.
524
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
525
+ );
526
+ }
527
+ else {
528
+ if (is_writable($pluginsDir))
529
+ {
530
+ SwpaUtil::writeFile($file,$data);
531
+ @chmod($file,'0644');
532
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
533
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/plugins'),
534
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
535
+ The specific risks and consequences vary depending on which files are listed and accessible.
536
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
537
+ );
538
+ }
539
+ else {
540
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
541
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/plugins'),
542
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
543
+ The specific risks and consequences vary depending on which files are listed and accessible.
544
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
545
+ sprintf(__('<p>This plugin can automatically create an empty <strong>index.php</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
546
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
547
+ 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
548
+ );
549
+ }
550
+ }
551
+ }
552
+
553
+ $actionName = $wsdPluginAlertsArray['fix_wp_index_themes']['name'];
554
+ $alertType = $wsdPluginAlertsArray['fix_wp_index_themes']['type'];
555
+ $file = $themesDir.'/index.php';
556
+ if(is_dir($themesDir)){
557
+ if(is_file($file)){
558
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
559
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/themes'),
560
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
561
+ The specific risks and consequences vary depending on which files are listed and accessible.
562
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
563
+ );
564
+ }
565
+ else {
566
+ if (is_writable($themesDir))
567
+ {
568
+ SwpaUtil::writeFile($file,$data);
569
+ @chmod($file,'0644');
570
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
571
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/themes'),
572
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
573
+ The specific risks and consequences vary depending on which files are listed and accessible.
574
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
575
+ );
576
+ }
577
+ else {
578
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
579
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/themes'),
580
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
581
+ The specific risks and consequences vary depending on which files are listed and accessible.
582
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
583
+ sprintf(__('<p>This plugin can automatically create an empty <strong>index.php</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
584
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
585
+ 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
586
+ );
587
+ }
588
+ }
589
+ }
590
+
591
+ $actionName = $wsdPluginAlertsArray['fix_wp_index_uploads']['name'];
592
+ $alertType = $wsdPluginAlertsArray['fix_wp_index_uploads']['type'];
593
+ $file = $uploadsDir.'/index.php';
594
+ if(is_dir($uploadsDir)){
595
+ if(is_file($file)){
596
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
597
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/uploads'),
598
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
599
+ The specific risks and consequences vary depending on which files are listed and accessible.
600
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
601
+ );
602
+ }
603
+ else {
604
+ if (is_writable($uploadsDir))
605
+ {
606
+ SwpaUtil::writeFile($file,$data);
607
+ @chmod($file,'0644');
608
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
609
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/uploads'),
610
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
611
+ The specific risks and consequences vary depending on which files are listed and accessible.
612
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>')
613
+ );
614
+ }
615
+ else {
616
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
617
+ sprintf(__('<strong>"%s"</strong> directory is not secure from directory listing.'),'/wp-content/uploads'),
618
+ __('<p>A directory listing provides an attacker with the complete index of all the resources located inside of the directory.
619
+ The specific risks and consequences vary depending on which files are listed and accessible.
620
+ Therefore, it is important to protect your directories by having an empty index.php or index.htm file inside them.</p>'),
621
+ sprintf(__('<p>This plugin can automatically create an empty <strong>index.php</strong> file in the following directories: wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads if
622
+ the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'),
623
+ 'Try to create the index.php file in the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing')
624
+ );
625
+ }
626
+ }
627
+ }
628
+ }
629
+
630
+ /** Remove the version parameter from urls */
631
+ public static function fix_removeWpVersionFromLinks($src = '')
632
+ {
633
+ global $wsdPluginAlertsArray;
634
+ $actionName = $wsdPluginAlertsArray['fix_remove_wp_version_links']['name'];
635
+ $alertType = $wsdPluginAlertsArray['fix_remove_wp_version_links']['type'];
636
+
637
+ /* This check is important so this function will run only if the user enables it. */
638
+ if(! self::isSettingEnabled(__FUNCTION__)){
639
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_CRITICAL,
640
+ __('WordPress version is displayed in links for all users'),
641
+ __('<p>By default, WordPress will display the current version in links to javascript scripts or stylesheets.
642
+ Therefore, if anyone has access to this information it might be a security risk because if a hacker knows which version of WordPress a website is running,
643
+ it can make it easier for him to target a known WordPress security issue.</p>'),
644
+ sprintf(__('<p>This plugin can automatically hide the WordPress version from links if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.</p>'), 'Remove the version parameter from urls')
645
+ );
646
+ return;
647
+ }
648
+
649
+ if (!SwpaUtil::isAdministrator())
650
+ {
651
+ add_filter('script_loader_src', array('SwpaSecurityHelper', '__removeWpVersionFromLinks'));
652
+ add_filter('style_loader_src', array('SwpaSecurityHelper', '__removeWpVersionFromLinks'));
653
+ }
654
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
655
+ __('WordPress version displayed in links only for administrator users.'),
656
+ __('<p>By default, WordPress will display the current version in links to javascript scripts or stylesheets.
657
+ Therefore, if anyone has access to this information it might be a security risk because if a hacker knows which version of WordPress a website is running,
658
+ it can make it easier for him to target a known WordPress security issue.</p>')
659
+ );
660
+ }
661
+
662
+ /** Empty the content of the readme.html file from the root directory. */
663
+ public static function fix_emptyReadmeFileFromRoot()
664
+ {
665
+ global $wsdPluginAlertsArray;
666
+
667
+ // if the file is 404 or not readable or empty, there is no need to display the alert
668
+ $filePath = trailingslashit(ABSPATH).'readme.html';
669
+ if(! is_file($filePath)){ return; }
670
+ if(! is_readable($filePath)) { return; }
671
+ $fsize = @filesize($filePath);
672
+ if(false !== $fsize && $fsize == 0) { return; }
673
+
674
+ $actionName = $wsdPluginAlertsArray['fix_empty_root_readme_file']['name'];
675
+ $alertType = $wsdPluginAlertsArray['fix_empty_root_readme_file']['type'];
676
+ /* This check is important so this function will run only if the user enables it. */
677
+ if(! self::isSettingEnabled(__FUNCTION__)){
678
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
679
+ sprintf(__('Clearing the content of the <strong>"%s"</strong> file from the <strong>"%s"</strong> directory is disabled.'), 'readme.html', 'root'),
680
+ __('<p>A default WordPress installation contains a readme.html file. This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
681
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>'),
682
+ sprintf(__('<p>This plugin can automatically delete its content (assuming the file exists) if the option <strong>"%s"</strong> is checked on the plugin\'s settings page.
683
+ You can also delete this file manually by connecting to your website through an FTP connection.</p>'), 'Empty the content of the readme.html file from the root directory')
684
+ );
685
+ return;
686
+ }
687
+ else {
688
+ // clear the content of the file
689
+ $result = file_put_contents($filePath,'');
690
+ // failure
691
+ if(false === $result){
692
+ // todo
693
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
694
+ sprintf(__('The content of the <strong>"%s"</strong> file from the <strong>"%s"</strong> directory could not be deleted.'), 'readme.html', 'root'),
695
+ __('<p>A default WordPress installation contains a readme.html file. This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
696
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>'),
697
+ __('<p>We have encountered an error while trying to delete the content of this file, thus you will have to manually delete it or make it inaccessible from your visitors by setting the file permissions to <strong>0440</strong> or lower.</p>')
698
+ );
699
+ return;
700
+ }
701
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_INFO,
702
+ __('The content of the readme.html file from the root directory has been deleted.'),
703
+ __('<p>A default WordPress installation contains a readme.html file. This file is a simple html file that does not contain executable content that can be exploited by hackers or malicious users.
704
+ Still, this file can provide hackers the version of your WordPress installation, therefore it is important to either delete this file or make it inaccessible for your visitors.</p>')
705
+ );
706
+ }
707
+
708
+ }
709
+
710
+ }
711
+
712
+ class SwpaSecurityHelper
713
+ {
714
+ /**
715
+ * @private
716
+ * @param $src
717
+ * @return mixed
718
+ */
719
+ public static function __removeWpVersionFromLinks($src)
720
+ {
721
+ // Just the URI without the query string.
722
+ $src = preg_replace("/\?ver=(.*)/mi", '', $src);
723
+ return $src;
724
+ }
725
+
726
+ }
res/inc/SwpaUtil.php ADDED
@@ -0,0 +1,577 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+
3
+ /**
4
+ * Class SwpaUtil
5
+ * Static class. Provides utility methods for various tasks
6
+ */
7
+ class SwpaUtil
8
+ {
9
+ /**
10
+ * @return bool
11
+ * Convenient method to check whether or not the plugin's resources can be loaded
12
+ */
13
+ public static function canLoad() { return ((false === ($pos = stripos($_SERVER['REQUEST_URI'], SWPA_PLUGIN_PREFIX))) ? false : true); }
14
+ public static function cssUrl($fileName){ return SWPA_PLUGIN_URL.'res/css/'.$fileName; }
15
+ public static function imageUrl($fileName){ return SWPA_PLUGIN_URL.'res/images/'.$fileName; }
16
+ public static function jsUrl($fileName) { return SWPA_PLUGIN_URL.'res/js/'.$fileName; }
17
+ public static function resUrl() { return SWPA_PLUGIN_URL.'res/'; }
18
+ public static function includePage($fileName)
19
+ {
20
+ if(! self::canLoad()) { return; }
21
+ $dirPath = SWPA_PLUGIN_DIR.'res/pages/';
22
+ if(! is_dir($dirPath)) { return; }
23
+ if(! is_readable($dirPath)) { return; }
24
+ $fname = $dirPath.$fileName;
25
+ if(false !== ($pos = strpos($fname, '../')) || false !== ($pos = strpos($fname, './'))){ return; }
26
+ if(! is_file($fname) || ! is_readable($fname)) { return; }
27
+ include($fname);
28
+ }
29
+
30
+ /**
31
+ * @public
32
+ * @static
33
+ * Load the text domain
34
+ * @return void
35
+ */
36
+ public static function loadTextDomain(){ if ( function_exists('load_plugin_textdomain') ) { load_plugin_textdomain(SWPA_PLUGIN_TEXT_DOMAIN, false, SWPA_PLUGIN_DIR.'res/languages/'); } }
37
+
38
+ /**
39
+ * @public
40
+ * @static
41
+ * @uses self::checkFileName()
42
+ *
43
+ * Retrieve the content of the specified template file.
44
+ *
45
+ * @param type $fileName the name of the template file to load.
46
+ * Without the ".php" file extension.
47
+ * @param array $data The data to send to the template file
48
+ * @return string The parsed content of the template file
49
+ */
50
+ public static function loadTemplate($fileName, array $data = array())
51
+ {
52
+ self::checkFileName($fileName);
53
+ $str = '';
54
+ $file = SWPA_PLUGIN_DIR.'res/pages/tpl/'.$fileName.'.php';
55
+ if (is_file($file))
56
+ {
57
+ ob_start();
58
+ if (!empty($data)) {
59
+ extract($data);
60
+ }
61
+ include($file);
62
+ $str = ob_get_contents();
63
+ ob_end_clean();
64
+ }
65
+ return $str;
66
+ }
67
+
68
+ /**
69
+ * @public
70
+ * @static
71
+ * @uses wp_die()
72
+ *
73
+ * Check the specified file name for directory traversal attacks.
74
+ * Exits the script if the "..[/]" is found in the $fileName.
75
+ *
76
+ * @param string $fileName The name of the file to check
77
+ * @return void
78
+ */
79
+ public static function checkFileName($fileName)
80
+ {
81
+ $fileName = trim($fileName);
82
+ //@@ Check for directory traversal attacks
83
+ if (preg_match("/\.\.\//",$fileName)) {
84
+ wp_die('Invalid Request!');
85
+ }
86
+ }
87
+
88
+ /**
89
+ * @public
90
+ * @static
91
+ *
92
+ * Attempts to write the provided $data into the specified $file
93
+ * using either file_put_contents or fopen/fwrite functions (whichever is available).
94
+ *
95
+ * @param string $file The path to the file
96
+ * @param string $data The content to write into the file
97
+ * @param resource $fh The file handle to use if fopen function is available. Optional, defaults to null
98
+ *
99
+ * @return int The number of bytes written to the file, otherwise -1.
100
+ */
101
+ public static function writeFile($file, $data, $fh = null)
102
+ {
103
+ if(! is_null($fh) && is_resource($fh)){
104
+ fwrite($fh,$data);
105
+ return strlen($data);
106
+ }
107
+ else {
108
+ if (function_exists('file_put_contents')) {
109
+ return file_put_contents($file,$data);
110
+ }
111
+ }
112
+ return -1;
113
+ }
114
+
115
+ /**
116
+ * @public
117
+ * @param array $acxFileList
118
+ * Apply the suggested permissions for the list of files
119
+ * provided in the global $acxFileList array.
120
+ * @return array array('success' => integer, 'failed' => integer)
121
+ */
122
+ public static function changeFilePermissions($acxFileList)
123
+ {
124
+ if (empty($acxFileList)) {
125
+ return array();
126
+ }
127
+ // chmod doesn't work on windows... :/
128
+ if (self::isWinOs()) {
129
+ return array();
130
+ }
131
+
132
+ $s = $f = 0;
133
+ foreach($acxFileList as $k => $v)
134
+ {
135
+ $filePath = $v['filePath'];
136
+ $sp = $v['suggestedPermissions'];
137
+ $sp = (is_string($sp) ? octdec($sp) : $sp);
138
+
139
+ //@ include directories too
140
+ if (file_exists($filePath))
141
+ {
142
+ if (false !== @chmod($filePath, $sp)) {
143
+ $s++;
144
+ }
145
+ else { $f++; }
146
+ }
147
+ else {
148
+ // if no path provided
149
+ if(empty($filePath)){
150
+ $f++;
151
+ continue;
152
+ }
153
+ // try to create the missing files
154
+ if(false !== file_put_contents($filePath, '')){
155
+ if (false !== @chmod($filePath, $sp)) {
156
+ $s++;
157
+ }
158
+ else { $f++; }
159
+ }
160
+ else { $f++; }
161
+ }
162
+ }
163
+ return array('success' => $s, 'failed' => $f);
164
+ }
165
+
166
+ public static function getFilePermissions($filePath)
167
+ {
168
+ if (!function_exists('fileperms')) {
169
+ return '-1';
170
+ }
171
+ if (!file_exists($filePath)) {
172
+ return '-1';
173
+ }
174
+ clearstatcache();
175
+ return substr(sprintf("%o", fileperms($filePath)), -4);
176
+ }
177
+
178
+ public static function normalizePath($path) {
179
+ return str_replace('\\', '/', $path);
180
+ }
181
+
182
+ public static function isWinOs(){
183
+ return ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false);
184
+ }
185
+
186
+ /**
187
+ * Check to see whether or not the current user is an administrator
188
+ * @return bool
189
+ */
190
+ public static function isAdministrator(){
191
+ self::loadPluggable();
192
+ return user_can(wp_get_current_user(),'update_core');
193
+ }
194
+
195
+ /**
196
+ * Check to see whether or not the specified table exists in the database
197
+ * @param $tableName The table to check for existence. It requires the full qualified name of the table
198
+ * - which means the prefix must be there as well.
199
+ * @return bool
200
+ */
201
+ public static function tableExists($tableName)
202
+ {
203
+ global $wpdb;
204
+ $result = $wpdb->get_var("SHOW TABLES LIKE '$tableName'");
205
+ return (is_null($result) ? false : true);
206
+ }
207
+
208
+ /**
209
+ * @public
210
+ * @uses wp_die()
211
+ *
212
+ * Backup the database and save the script to the plug-in's backups directory.
213
+ * This directory must be writable!
214
+ *
215
+ * @return string The name of the generated backup file or empty string on failure.
216
+ */
217
+ public static function backupDatabase()
218
+ {
219
+ if (!is_writable(SWPA_PLUGIN_BACKUPS_DIR))
220
+ {
221
+ $s = sprintf(__('The %s directory <strong>MUST</strong> be writable for this feature to work!'), SWPA_PLUGIN_BACKUPS_DIR);
222
+ wp_die($s);
223
+ }
224
+
225
+ $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
226
+ if (!$link) {
227
+ wp_die(__('Error: Cannot connect to database!'));
228
+ }
229
+ if (!mysql_select_db(DB_NAME,$link)) {
230
+ wp_die(__('Error: Could not select the database!'));
231
+ }
232
+
233
+ //get all of the tables
234
+ $tables = array();
235
+ $result = mysql_query('SHOW TABLES');
236
+ while($row = mysql_fetch_row($result))
237
+ {
238
+ if(! empty($row[0])){
239
+ $tables[] = $row[0];
240
+ }
241
+ }
242
+
243
+ if (empty($tables))
244
+ {
245
+ wp_die(__('Could not retrieve the list of tables from the database!'));
246
+ }
247
+
248
+ $h = null;
249
+ $time = gmdate("m-j-Y-h-i-s", time());
250
+ $rand = self::makeSeed()+rand(12131, 9999999);
251
+ $fname = 'bck_'.$time.'_'.$rand.'.sql';
252
+ $filePath = SWPA_PLUGIN_BACKUPS_DIR.$fname;
253
+
254
+ if(function_exists('fopen') && function_exists('fwrite') && function_exists('fclose'))
255
+ {
256
+ $h = fopen($filePath,'a+');
257
+ self::__doBackup($filePath, $tables, $h);
258
+ fclose($h);
259
+ }
260
+ else {
261
+ if(function_exists('file_put_contents')){
262
+ self::__doBackup($filePath, $tables, $h);
263
+ }
264
+ }
265
+ if(! is_file($filePath)){
266
+ return '';
267
+ }
268
+ $fs = @filesize($filePath);
269
+ return (($fs > 0) ? $fname : '');
270
+ }
271
+
272
+ /**
273
+ * @private
274
+ */
275
+ private static function __doBackup($filePath, array $tables = array(), $h = null)
276
+ {
277
+ $data = 'CREATE DATABASE IF NOT EXISTS '.DB_NAME.';'.PHP_EOL;
278
+ $data .= 'USE '.DB_NAME.';'.PHP_EOL;
279
+ self::writeFile($filePath, $data, $h);
280
+
281
+ //cycle through
282
+ foreach($tables as $table)
283
+ {
284
+ $result = mysql_query('SELECT * FROM '.$table);
285
+ $num_fields = mysql_num_fields($result);
286
+
287
+ $data = 'DROP TABLE IF EXISTS '.$table.';';
288
+ $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
289
+ $data .= $row2[1].';'.PHP_EOL;
290
+ self::writeFile($filePath, $data, $h);
291
+
292
+ for ($i = 0; $i < $num_fields; $i++)
293
+ {
294
+ while($row = mysql_fetch_row($result))
295
+ {
296
+ $data = 'INSERT INTO '.$table.' VALUES(';
297
+ for($j=0; $j<$num_fields; $j++)
298
+ {
299
+ $row[$j] = addslashes($row[$j]);
300
+ $row[$j] = @preg_replace("/\n(\s*\n)+/",PHP_EOL,$row[$j]);
301
+ if (isset($row[$j])) { $data .= '"'.$row[$j].'"' ; } else { $data .= '""'; }
302
+ if ($j<($num_fields-1)) { $data .= ','; }
303
+ }
304
+ $data .= ");".PHP_EOL;
305
+ self::writeFile($filePath, $data, $h);
306
+ }
307
+ } //#! end for
308
+ } //#! end foreach
309
+ }
310
+
311
+ /**
312
+ * @public
313
+ * Retrieve the list of all available backup files from the backups directory
314
+ * @return array
315
+ */
316
+ public static function getAvailableBackupFiles()
317
+ {
318
+ $files = glob(SWPA_PLUGIN_BACKUPS_DIR.'*.sql');
319
+ if (empty($files)) { return array();}
320
+ return array_map('basename', $files/*, array('.sql')*/);
321
+ }
322
+
323
+ /**
324
+ * @public
325
+ * Create a number
326
+ * @return double
327
+ */
328
+ public static function makeSeed()
329
+ {
330
+ list($usec, $sec) = explode(' ', microtime());
331
+ return (float)$sec + ((float)$usec * 100000);
332
+ }
333
+
334
+ /**
335
+ * @public
336
+ * @global object $wpdb
337
+ * Get the list of tables to modify
338
+ * @return array
339
+ */
340
+ public static function getTablesToAlter()
341
+ {
342
+ global $wpdb;
343
+ return $wpdb->get_results("SHOW TABLES LIKE '".$GLOBALS['table_prefix']."%'", ARRAY_N);
344
+ }
345
+
346
+ /**
347
+ * @public
348
+ * @global object $wpdb
349
+ * Rename tables from database
350
+ * @param array the list of tables to rename
351
+ * @param string $currentPrefix the current prefix in use
352
+ * @param string $newPrefix the new prefix to use
353
+ * @return array
354
+ */
355
+ public static function renameTables($tables, $currentPrefix, $newPrefix)
356
+ {
357
+ global $wpdb;
358
+ $changedTables = array();
359
+ foreach ($tables as $k=>$table){
360
+ $tableOldName = $table[0];
361
+ // Try to rename the table
362
+ $tableNewName = substr_replace($tableOldName, $newPrefix, 0, strlen($currentPrefix));
363
+ // Try to rename the table
364
+ $wpdb->query("RENAME TABLE `{$tableOldName}` TO `{$tableNewName}`");
365
+ array_push($changedTables, $tableNewName);
366
+ }
367
+ return $changedTables;
368
+ }
369
+
370
+ /**
371
+ * @public
372
+ * @global object $wpdb
373
+ * Rename some fields from options & usermeta tables in order to reflect the prefix change
374
+ * @param string $oldPrefix the existent db prefix
375
+ * @param string $newPrefix the new prefix to use
376
+ * @return string
377
+ */
378
+ public static function renameDbFields($oldPrefix,$newPrefix)
379
+ {
380
+ global $wpdb;
381
+ $str = '';
382
+ if (false === $wpdb->query("UPDATE {$newPrefix}options SET option_name='{$newPrefix}user_roles' WHERE option_name='{$oldPrefix}user_roles';")) {
383
+ $str .= '<br/>'.sprintf(__('Changing value: %suser_roles in table <strong>%soptions</strong>: <span style="color:#ff0000;">Failed</span>'),$newPrefix, $newPrefix);
384
+ }
385
+ $query = 'UPDATE '.$newPrefix.'usermeta
386
+ SET meta_key = CONCAT(replace(left(meta_key, ' . strlen($oldPrefix) . "), '{$oldPrefix}', '{$newPrefix}'), SUBSTR(meta_key, " . (strlen($oldPrefix) + 1) . "))
387
+ WHERE
388
+ meta_key IN ('{$oldPrefix}autosave_draft_ids', '{$oldPrefix}capabilities', '{$oldPrefix}metaboxorder_post', '{$oldPrefix}user_level', '{$oldPrefix}usersettings',
389
+ '{$oldPrefix}usersettingstime', '{$oldPrefix}user-settings', '{$oldPrefix}user-settings-time', '{$oldPrefix}dashboard_quick_press_last_post_id')";
390
+
391
+ if (false === $wpdb->query($query)) {
392
+ $str .= '<br/>'.sprintf(__('Changing values in table <strong>%susermeta</strong>: <span style="color:#ff0000;">Failed</span>'), $newPrefix);
393
+ }
394
+ if (!empty($str)) {
395
+ $str = __('Changing database prefix').': '.$str;
396
+ }
397
+ return $str;
398
+ }
399
+
400
+ /**
401
+ * @public
402
+ * Update the wp-config file to reflect the table prefix change.
403
+ * The wp file must be writable for this operation to work!
404
+ *
405
+ * @param string $wsd_wpConfigFile The path to the wp-config file
406
+ * @param string $newPrefix The new prefix to use instead of the old one
407
+ * @return int the number of bytes written to te file or -1 on error
408
+ */
409
+ public static function updateWpConfigTablePrefix($wsd_wpConfigFile, $newPrefix)
410
+ {
411
+ // If file is not writable...
412
+ if (!is_writable($wsd_wpConfigFile)){
413
+ return -1;
414
+ }
415
+
416
+ // We need the 'file' function...
417
+ if (!function_exists('file')) {
418
+ return -1;
419
+ }
420
+
421
+ // Try to update the wp-config file
422
+ $lines = file($wsd_wpConfigFile);
423
+ $fcontent = '';
424
+ $result = -1;
425
+ foreach($lines as $line)
426
+ {
427
+ $line = ltrim($line);
428
+ if (!empty($line)){
429
+ if (strpos($line, '$table_prefix') !== false){
430
+ $line = preg_replace("/=(.*)\;/", "= '".$newPrefix."';", $line);
431
+ }
432
+ }
433
+ $fcontent .= $line;
434
+ }
435
+ if (!empty($fcontent))
436
+ {
437
+ // Save wp-config file
438
+ $result = self::writeFile($wsd_wpConfigFile, $fcontent);
439
+ }
440
+ return $result;
441
+ }
442
+
443
+ private static $_pluginID = 'acx_plugin_dashboard_widget';
444
+
445
+ /**
446
+ * @public
447
+ * @static
448
+ * @const SWPA_PLUGIN_BLOG_FEED
449
+ * Retrieve and display a list of links for an existing RSS feed, limiting the selection to the 5 most recent items.
450
+ * @return void
451
+ */
452
+ public static function displayDashboardWidget()
453
+ {
454
+ if ($_SERVER['REQUEST_METHOD'] == 'POST')
455
+ {
456
+ $opt = get_option('WSD-RSS-WGT-DISPLAY');
457
+ if (empty($opt) || ($opt == 'no')) {
458
+ update_option('WSD-RSS-WGT-DISPLAY', 'no');
459
+ self::_hideDashboardWidget();
460
+ return;
461
+ }
462
+ }
463
+
464
+ //@ flag
465
+ $run = false;
466
+
467
+ //@ check cache
468
+ $optData = get_option('wsd_feed_data');
469
+ if (! empty($optData))
470
+ {
471
+ if (is_object($optData))
472
+ {
473
+ $lastUpdateTime = @$optData->expires;
474
+ // invalid cache
475
+ if (empty($lastUpdateTime)) { $run = true; }
476
+ else
477
+ {
478
+ $nextUpdateTime = $lastUpdateTime+(24*60*60);
479
+ if ($nextUpdateTime >= $lastUpdateTime)
480
+ {
481
+ $data = @$optData->data;
482
+ if (empty($data)) { $run = true; }
483
+ else {
484
+ // still a valid cache
485
+ echo $data;
486
+ return;
487
+ }
488
+ }
489
+ else { $run = true; }
490
+ }
491
+ }
492
+ else { $run = true; }
493
+ }
494
+ else { $run = true; }
495
+
496
+ if (!$run) { return; }
497
+
498
+ $rss = fetch_feed(SWPA_PLUGIN_BLOG_FEED);
499
+
500
+ $out = '';
501
+ if (is_wp_error( $rss ) )
502
+ {
503
+ $out = '<li>'.__('An error has occurred while trying to load the rss feed!').'</li>';
504
+ echo $out;
505
+ return;
506
+ }
507
+ else
508
+ {
509
+ // Limit to 5 entries.
510
+ $maxitems = $rss->get_item_quantity(5);
511
+
512
+ // Build an array of all the items,
513
+ $rss_items = $rss->get_items(0, $maxitems);
514
+
515
+ $out .= '<ul>';
516
+ if ($maxitems == 0)
517
+ {
518
+ $out.= '<li>'.__('There are no entries for this rss feed!').'</li>';
519
+ }
520
+ else
521
+ {
522
+ foreach ( $rss_items as $item ) :
523
+ $url = esc_url($item->get_permalink());
524
+ $out.= '<li>';
525
+ $out.= '<h4><a href="'.$url.'" target="_blank" title="Posted on '.$item->get_date('F j, Y | g:i a').'">';
526
+ $out.= esc_html( $item->get_title() );
527
+ $out.= '</a></h4>';
528
+ $out.= '<p>';
529
+ $d = utf8_decode( $item->get_description());
530
+ $p = substr($d, 0, 120).' <a href="'.$url.'" target="_blank" title="Read all article">[...]</a>';
531
+ $out.= $p;
532
+ $out.= '</p>';
533
+ $out.= '</li>';
534
+ endforeach;
535
+ }
536
+ $out.= '</ul>';
537
+ $out .= '<div style="border-top: solid 1px #ccc; margin-top: 4px; padding: 2px 0;">';
538
+ $out .= '<p style="margin: 5px 0 0 0; padding: 0 0; line-height: normal; overflow: hidden;">';
539
+ $out .= '<a href="http://feeds.acunetix.com/acunetixwebapplicationsecurityblog"
540
+ style="float: left; display: block; width: 50%; text-align: right; margin-left: 30px;
541
+ padding-right: 22px; background: url('.self::imageUrl('rss.png').') no-repeat right center;"
542
+ target="_blank">'.__('Follow us on RSS').'</a>';
543
+ $out .= '</p>';
544
+ $out .= '</div>';
545
+ }
546
+
547
+ // Update cache
548
+ $obj = new stdClass();
549
+ $obj->expires = time();
550
+ $obj->data = $out;
551
+ update_option('wsd_feed_data', $obj);
552
+
553
+ echo $out;
554
+ }
555
+
556
+ /**
557
+ * @public
558
+ * @static
559
+ * Add the rss widget to dashboard
560
+ * @return void
561
+ */
562
+ public static function addDashboardWidget()
563
+ {
564
+ $rssWidgetData = get_option('WSD-RSS-WGT-DISPLAY');
565
+ if(($rssWidgetData == 'yes')){
566
+ wp_add_dashboard_widget('acx_plugin_dashboard_widget', SWPA_PLUGIN_NAME.' news and updates', array(get_class(),'displayDashboardWidget'));
567
+ }
568
+ }
569
+ /**
570
+ * Hide the dashboard rss widget
571
+ * @static
572
+ * @public
573
+ */
574
+ public static function _hideDashboardWidget() { echo '<script>document.getElementById("'.self::$_pluginID.'").style.display = "none";</script>'; }
575
+
576
+ public static function loadPluggable(){ @include_once(ABSPATH.'wp-includes/pluggable.php'); }
577
+ }
res/inc/SwpaWatch.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+ /**
3
+ * Class SwpaWatch
4
+ * Static class. Provides common methods to be used to monitor website activity.
5
+ */
6
+ class SwpaWatch extends SwpaPlugin
7
+ {
8
+ /*
9
+ * PUBLIC METHODS
10
+ * ==============================================
11
+ */
12
+
13
+ public static function userPasswordUpdate(){
14
+ add_action('edit_user_profile_update', array(get_class(), '_watchUserInfoUpdated'));
15
+ add_action('personal_options_update', array(get_class(), '_watchUserInfoUpdated'));
16
+ }
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+ /*
25
+ * PRIVATE METHODS
26
+ * ==============================================
27
+ */
28
+
29
+ // returns array(userName, userRole)
30
+ public static function _getUserInfo($userID)
31
+ {
32
+ global $wpdb;
33
+
34
+ $t = $wpdb->prefix.'users';
35
+ $username = $wpdb->get_var("SELECT user_login FROM $t WHERE ID=$userID");
36
+ $user = new WP_User( $userID );
37
+ $userRole = (empty($user->roles[0]) ? '' : $user->roles[0]);
38
+ return array(
39
+ 'userName' => $username,
40
+ 'userRole' => $userRole
41
+ );
42
+ }
43
+ /**
44
+ * @internal
45
+ * @param $userID
46
+ */
47
+ public static function _watchUserInfoUpdated($userID)
48
+ {
49
+ // If an admin user's password has been updated
50
+ if(! empty($_POST['pass1'])){
51
+ $userInfo = self::_getUserInfo($userID);
52
+ $userName = $userInfo['userName'];
53
+ $userRole = $userInfo['userRole'];
54
+ if($userRole == 'administrator')
55
+ {
56
+ global $wsdPluginAlertsArray;
57
+ $actionName = $wsdPluginAlertsArray['watch_admin_password_update']['name'];
58
+ $alertType = $wsdPluginAlertsArray['watch_admin_password_update']['type'];
59
+
60
+ self::alert($actionName, $alertType, SWPA_PLUGIN_ALERT_MEDIUM,
61
+ sprintf(__('Administrator (%s) password updated'), $userName),
62
+ __('<p>This alert is generated every time an administrator\'s password is updated.</p>'));
63
+ }
64
+ }
65
+ }
66
+
67
+ }
res/inc/alerts.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /** Alerts & descriptions */
2
+ $wsdPluginAlertsArray = array
3
+ (
4
+ // SwpaCheck::adminUsername
5
+ 'check_username_admin' => array('name' => 'check_username_admin ', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
6
+ // SwpaCheck::tablePrefix
7
+ 'check_table_prefix' => array('name' => 'check_table_prefix', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
8
+ // SwpaCheck::currentVersion
9
+ 'check_wp_current_version' => array('name' => 'check_wp_current_version', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
10
+ // SwpaCheck::files
11
+ 'check_index_wp_content' => array('name' => 'check_index_wp_content', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
12
+ // SwpaCheck::files
13
+ 'check_index_wp_content' => array('name' => 'check_index_wp_content', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
14
+ // SwpaCheck::files
15
+ 'check_index_wp_plugins' => array('name' => 'check_index_wp_plugins', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
16
+ // SwpaCheck::files
17
+ 'check_index_wp_themes' => array('name' => 'check_index_wp_themes', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
18
+ // SwpaCheck::files - alert issued only if the wp-content/uploads directory exists
19
+ 'check_index_wp_uploads' => array('name' => 'check_index_wp_uploads', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
20
+ // SwpaCheck::files
21
+ 'check_htaccess_wp_admin' => array('name' => 'check_htaccess_wp_admin', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
22
+ // SwpaCheck::files
23
+ 'check_readme_wp_root' => array('name' => 'check_readme_wp_root', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
24
+
25
+
26
+ // SwpaSecurity::fix_hideWpVersion
27
+ 'fix_wp_version_hidden' => array('name' => 'fix_wp_version_hidden', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
28
+ // SwpaSecurity::fix_removeWpMetaGeneratorsFrontend
29
+ 'fix_wp_generators_frontend' => array('name' => 'fix_wp_generators_frontend', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
30
+ // SwpaSecurity::fix_removeReallySimpleDiscovery
31
+ 'fix_wp_rsd_frontend' => array('name' => 'fix_wp_rsd_frontend', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
32
+ // SwpaSecurity::fix_removeWindowsLiveWriter
33
+ 'fix_wp_wlw_frontend' => array('name' => 'fix_wp_wlw_frontend', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
34
+ // SwpaSecurity::fix_disableErrorReporting
35
+ 'fix_wp_error_reporting' => array('name' => 'fix_wp_error_reporting', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
36
+ // SwpaSecurity::fix_removeCoreUpdateNotification
37
+ 'fix_wp_core_update_notif' => array('name' => 'fix_wp_core_update_notif', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
38
+ // SwpaSecurity::fix_removePluginUpdateNotifications
39
+ 'fix_wp_plugins_update_notif' => array('name' => 'fix_wp_plugins_update_notif', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
40
+ // SwpaSecurity::fix_removeThemeUpdateNotifications
41
+ 'fix_wp_themes_update_notif' => array('name' => 'fix_wp_themes_update_notif', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
42
+ // SwpaSecurity::fix_removeLoginErrorNotificationsFrontEnd
43
+ 'fix_wp_login_errors' => array('name' => 'fix_wp_login_errors', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
44
+ // SwpaSecurity::fix_hideAdminNotifications
45
+ 'fix_wp_admin_notices' => array('name' => 'fix_wp_admin_notices', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
46
+ // SwpaSecurity::fix_preventDirectoryListing
47
+ 'fix_wp_dir_listing' => array('name' => 'fix_wp_dir_listing', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
48
+ // SwpaSecurity::fix_preventDirectoryListing
49
+ 'fix_wp_index_content' => array('name' => 'fix_wp_index_content', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
50
+ // SwpaSecurity::fix_preventDirectoryListing
51
+ 'fix_wp_index_plugins' => array('name' => 'fix_wp_index_plugins', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
52
+ // SwpaSecurity::fix_preventDirectoryListing
53
+ 'fix_wp_index_themes' => array('name' => 'fix_wp_index_themes', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
54
+ // SwpaSecurity::fix_preventDirectoryListing - alert issued only if the wp-content/uploads directory exists
55
+ 'fix_wp_index_uploads' => array('name' => 'fix_wp_index_uploads', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
56
+ // SwpaSecurity::fix_removeWpVersionFromLinks
57
+ 'fix_remove_wp_version_links' => array('name' => 'fix_remove_wp_version_links', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
58
+ // SwpaSecurity::fix_emptyReadmeFileFromRoot
59
+ 'fix_empty_root_readme_file' => array('name' => 'fix_empty_root_readme_file', 'type' => SWPA_PLUGIN_ALERT_TYPE_OVERWRITE ),
60
+
61
+
62
+ // SwpaWatch::userPasswordUpdate
63
+ 'watch_admin_password_update' => array('name' => 'watch_admin_password_update', 'type' => SWPA_PLUGIN_ALERT_TYPE_STACK ),
64
+ );
res/inc/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/inc/swpa-functions.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+
3
+ /**
4
+ * Common function to add custom time intervals to wp cron.
5
+ * This function should not be called directly.
6
+ *
7
+ * Usage: add_filter( 'cron_schedules', 'wsdplugin_addCronIntervals' );
8
+ *
9
+ * @param $schedules
10
+ * @return mixed
11
+ */
12
+ function swpaplugin_addCronIntervals( $schedules )
13
+ {
14
+ $schedules['8h'] = array( // The name to be used in code
15
+ 'interval' => 28800, // Intervals: in seconds
16
+ 'display' => __('Every 8 hours') // display name
17
+ );
18
+ return $schedules;
19
+ }
20
+ add_filter( 'cron_schedules', 'swpaplugin_addCronIntervals' );
21
+
22
+ if(SwpaUtil::canLoad() && SwpaUtil::isAdministrator())
23
+ {
24
+ //#!++
25
+ add_action('admin_notices','swpaPlugin_AdminNotice');
26
+ function swpaPlugin_AdminNotice()
27
+ {
28
+ $m = sprintf(
29
+ 'We strongly recommend you to use our other plugin <a href="%s" title="%s" target="%s">%s</a> instead, as it will be constantly maintained and updated with new features.',
30
+ 'http://wordpress.org/plugins/wp-security-scan/', 'Acunetix WP Security', '_blank', 'Acunetix WP Security'
31
+ );
32
+ echo '<div class="updated"><p><strong>'.SWPA_PLUGIN_NAME.':</strong> '.$m.'</p></div>';
33
+ }
34
+ //#--
35
+
36
+ //#!++
37
+ add_action('admin_notices', 'swpaPluginInstallErrorNotice');
38
+ function swpaPluginInstallErrorNotice() {
39
+ if ($notices = get_option('wsd_plugin_install_error')) {
40
+ if(! empty($notices)){
41
+ foreach ($notices as $notice) {
42
+ echo "<div class='updated'><p>$notice</p></div>";
43
+ }
44
+ }
45
+ }
46
+ }
47
+ //#--
48
+ }
res/js/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/js/wsd-util.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * This function will bind the click event for entry items in the dashboard
3
+ * that will toggle the entry description row
4
+ */
5
+ function wsdplugin_bindEntryClick($)
6
+ {
7
+ $('.entry-event').each(function(){
8
+ var self = $(this);
9
+ self.click(function(){
10
+ var e = self.next('tr.entry-description');
11
+ e.fadeToggle('fast','linear');
12
+ });
13
+ });
14
+ }
15
+ /**
16
+ * Update the querystring param if found otherwise add it
17
+ * @param uri
18
+ * @param key
19
+ * @param value
20
+ * @returns string The updated uri
21
+ */
22
+ function updateQueryStringParam(uri, key, value) {
23
+ var re = new RegExp("([?|&])" + key + "=.*?(&|$)", "i"),separator = uri.indexOf('?') !== -1 ? "&" : "?";
24
+ if (uri.match(re)) { return uri.replace(re, '$1' + key + "=" + value + '$2'); }else { return uri + separator + key + "=" + value; }
25
+ }
res/js/wsdplugin_glossary_tooltip.js ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * @ glossary tooltips
3
+ */
4
+
5
+ var wsdplugin_glossary_tooltip=function(){
6
+ var id = 'tt';
7
+ var top = 3;
8
+ var left = 3;
9
+ var maxw = 400;
10
+ var speed = 10;
11
+ var timer = 20;
12
+ var endalpha = 95;
13
+ var alpha = 0;
14
+ var tt,t,c,b,h;
15
+ var ie = document.all ? true : false;
16
+ return{
17
+ show:function(self,w){
18
+ if(tt == null){
19
+ tt = document.createElement('div');
20
+ tt.setAttribute('id',id);
21
+ t = document.createElement('div');
22
+ t.setAttribute('id',id + 'top');
23
+ c = document.createElement('div');
24
+ c.setAttribute('id',id + 'cont');
25
+ b = document.createElement('div');
26
+ b.setAttribute('id',id + 'bot');
27
+ tt.appendChild(t);
28
+ tt.appendChild(c);
29
+ tt.appendChild(b);
30
+ document.body.appendChild(tt);
31
+ tt.style.opacity = 0;
32
+ tt.style.filter = 'alpha(opacity=0)';
33
+ document.onmousemove = this.pos;
34
+ }
35
+ tt.style.display = 'block';
36
+ c.innerHTML = self.getAttribute('data-bind-title');
37
+ tt.style.width = w ? w + 'px' : 'auto';
38
+ if(!w && ie){
39
+ t.style.display = 'none';
40
+ b.style.display = 'none';
41
+ tt.style.width = tt.offsetWidth;
42
+ t.style.display = 'block';
43
+ b.style.display = 'block';
44
+ }
45
+ if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
46
+ h = parseInt(tt.offsetHeight) + top;
47
+ clearInterval(tt.timer);
48
+ tt.timer = setInterval(function(){wsdplugin_glossary_tooltip.fade(1)},timer);
49
+ },
50
+ pos:function(e){
51
+ var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
52
+ var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
53
+ tt.style.top = (u - h) + 'px';
54
+ tt.style.left = (l + left) + 'px';
55
+ },
56
+ fade:function(d){
57
+ var a = alpha;
58
+ if((a != endalpha && d == 1) || (a != 0 && d == -1)){
59
+ var i = speed;
60
+ if(endalpha - a < speed && d == 1){
61
+ i = endalpha - a;
62
+ }else if(alpha < speed && d == -1){
63
+ i = a;
64
+ }
65
+ alpha = a + (i * d);
66
+ tt.style.opacity = alpha * .01;
67
+ tt.style.filter = 'alpha(opacity=' + alpha + ')';
68
+ }else{
69
+ clearInterval(tt.timer);
70
+ if(d == -1){tt.style.display = 'none'}
71
+ }
72
+ },
73
+ hide:function(){
74
+ clearInterval(tt.timer);
75
+ tt.timer = setInterval(function(){wsdplugin_glossary_tooltip.fade(-1)},timer);
76
+ }
77
+ };
78
+ }();
res/languages/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/pages/about.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <div class="wrap wsdplugin_content">
3
+ <h2><?php echo SWPA_PLUGIN_NAME.' - '.__('About');?></h2>
4
+
5
+ <div class="metabox-holder">
6
+
7
+ <div style="width:60%; float: left;" class="postbox">
8
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('About'). ' '.SWPA_PLUGIN_NAME .' plugin';?></span></h3>
9
+ <div class="inside acx-section-box">
10
+ <p>
11
+ <?php echo SWPA_PLUGIN_NAME.' plug-in beefs up the security of your WordPress installation by removing error information on login pages, adds index.php to plugin directories, hides the WordPress version and much more.'; ?>
12
+ </p>
13
+ <div class="acx-section-box">
14
+ <ul class="acx-common-list">
15
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes error-information on login-page.');?></span></li>
16
+ <li><span class="acx-icon-alert-success"><?php echo __('Adds index.php to the wp-content, wp-content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listings.');?></span></li>
17
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes the wp-version from everyone but administrators.');?></span></li>
18
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes Really Simple Discovery meta tag.');?></span></li>
19
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes Windows Live Writer meta tag.');?></span></li>
20
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes core update information for non-admins.');?></span></li>
21
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes plugin-update information for non-admins.');?></span></li>
22
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes theme-update information for non-admins (only WP 2.8 and higher).');?></span></li>
23
+ <li><span class="acx-icon-alert-success"><?php echo __('Removes version on URLs from scripts and stylesheets.');?></span></li>
24
+ <li><span class="acx-icon-alert-success"><?php echo __('Provides various information after scanning your WordPress blog.');?></span></li>
25
+ <li><span class="acx-icon-alert-success"><?php echo __('Provides file permissions security checks.');?></span></li>
26
+ <li><span class="acx-icon-alert-success"><?php echo __('Provides a Live Traffic tool to monitor your website activity in real time.');?></span></li>
27
+ <li><span class="acx-icon-alert-success"><?php echo __('Provides a tool for changing the database prefix.');?></span></li>
28
+ <li><span class="acx-icon-alert-success"><?php echo __('Provides a tool to easily backup your WordPress database.');?></span></li>
29
+ <li><span class="acx-icon-alert-success"><?php echo __('Turns off database error reporting (if enabled).');?></span></li>
30
+ <li><span class="acx-icon-alert-success"><?php echo __('Turns off PHP error reporting.');?></span></li>
31
+ </ul>
32
+ </div>
33
+ </div>
34
+ </div>
35
+
36
+ <div style="width:38%; float: right;" class="postbox">
37
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('Get involved');?></span></h3>
38
+ <div class="inside acx-section-box">
39
+ <ul class="acx-common-list">
40
+ <li>
41
+ <span><a href="//www.acunetix.com/blog/" target="_blank"><?php echo __('Acunetix blog');?></a></span>
42
+ </li>
43
+ <li>
44
+ <span><a href="//twitter.com/acunetix" target="_blank"><?php echo __('Acunetix on Twitter');?></a></span>
45
+ </li>
46
+ <li>
47
+ <span><a href="//www.facebook.com/Acunetix" target="_blank"><?php echo __('Acunetix on Facebook');?></a></span>
48
+ </li>
49
+ <li>
50
+ <span><a href="//wordpress.org/support/plugin/secure-wordpress" target="_blank"><?php echo __('Support');?></a></span>
51
+ </li>
52
+ </ul>
53
+ </div>
54
+ </div>
55
+ </div>
56
+
57
+ </div>
res/pages/blog.php ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php wp_enqueue_style('wsdplugin_css_blog', SwpaUtil::cssUrl('blog.css'), array(), '1.0'); ?>
3
+
4
+ <div class="wrap wsdplugin_content">
5
+ <div id="pageblog" class="wrap wsdplugin_content">
6
+
7
+ <div id="header">
8
+ <div class="wrapper">
9
+ <div id="logo"><a href="http://www.acunetix.com" target="_blank">Acunetix</a></div>
10
+ <div id="main-nav">
11
+ <a class="twitter" target="_blank" href="http://twitter.com/acunetix" title="<?php echo __('Follow us on Twitter');?>">Twitter</a>
12
+ <a class="facebook" target="_blank" href="http://www.facebook.com/Acunetix" title="<?php echo __('Follow us on Facebook');?>">Facebook</a>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ <div id="content">
17
+ <ul id="feed-list">
18
+ <?php
19
+ /**
20
+ * @internal
21
+ * @param int $maxItems
22
+ * @return string
23
+ */
24
+ function swpaplugin_GetFeedData($maxItems = 10)
25
+ {
26
+ $rss = fetch_feed(SWPA_PLUGIN_BLOG_FEED);
27
+ $out = '';
28
+ if (is_wp_error( $rss ) ) { return '<li>'.__('An error has occurred while trying to load the rss feed!').'</li>'; }
29
+ else{
30
+ // Limit to $maxItems entries.
31
+ $maxitems = $rss->get_item_quantity($maxItems);
32
+
33
+ // Build an array of all the items,
34
+ $rss_items = $rss->get_items(0, $maxitems);
35
+
36
+ if ($maxitems == 0){ $out.= '<li>'.__('There are no entries for this feed!').'</li>'; }
37
+ else {
38
+ foreach ( $rss_items as $item ) :
39
+ $url = esc_url($item->get_permalink());
40
+ $out.= '<li>';
41
+ $out.= '<h4><a href="'.$url.'" target="_blank" title="'.__('Posted on ').$item->get_date('F j, Y | g:i a').'">';
42
+ $out.= esc_html( $item->get_title() );
43
+ $out.= '</a></h4>';
44
+ $out.= '<div>' . $item->get_description() . '</div>';
45
+ $out.= '</li>';
46
+ endforeach;
47
+ }
48
+ $out .= '<div style="border-top: solid 1px #ccc; margin-top: 4px; padding: 2px 0;">';
49
+ $out .= '<p style="margin: 5px 0 0 0; padding: 0 0; line-height: normal; overflow: hidden;">';
50
+ $out .= '<a href="http://feeds.acunetix.com/acunetixwebapplicationsecurityblog"
51
+ style="float: left; display: block; width: 50%; text-align: right; margin-left: 30px;
52
+ padding-right: 22px; background: url(\'rss.png\') no-repeat right center;"
53
+ target="_blank">'.__('Follow us on RSS').'</a>';
54
+ $out .= '</p>';
55
+ $out .= '</div>';
56
+ }
57
+ return $out;
58
+ }
59
+ /**
60
+ * @internal
61
+ * @param $optName
62
+ * @param $optData
63
+ */
64
+ function swpaplugin_updateRssFeedOption($optName, $optData)
65
+ {
66
+ $obj = new stdClass();
67
+ $obj->expires = time() + (24*60*60);
68
+ $obj->data = $optData;
69
+ update_option($optName, $obj);
70
+ }
71
+ /**
72
+ * @public
73
+ * @param $optName
74
+ * @param $getMaxRssEntries
75
+ */
76
+ function swpaplugin_handleDisplayRssData($optName, $getMaxRssEntries)
77
+ {
78
+ $data = swpaplugin_GetFeedData($getMaxRssEntries);
79
+ swpaplugin_updateRssFeedOption($optName, $data);
80
+ echo str_ireplace("url('rss.png')", "url('".SwpaUtil::imageUrl('rss.png')."')", $data);
81
+ }
82
+
83
+ $optName = 'WSD-FEED-DATA';
84
+ $getMaxRssEntries = 10;
85
+
86
+ //@ check cache
87
+ $optData = get_option($optName);
88
+
89
+ if(empty($optData)) { swpaplugin_handleDisplayRssData($optName, $getMaxRssEntries); }
90
+ else{
91
+ // check cache expiry date
92
+ if (is_object($optData)) {
93
+ $lastUpdateTime = @$optData->expires;
94
+ // invalid cache: UPDATE
95
+ if (empty($lastUpdateTime)) { swpaplugin_handleDisplayRssData($optName, $getMaxRssEntries); }
96
+ else {
97
+ $nextUpdateTime = $lastUpdateTime+(24*60*60);
98
+ if ($nextUpdateTime >= $lastUpdateTime){
99
+ $data = @$optData->data;
100
+ if (empty($data)) { swpaplugin_handleDisplayRssData($optName, $getMaxRssEntries); }
101
+ // still a valid cache: DISPLAY
102
+ else { echo str_ireplace("url('rss.png')", "url('".SwpaUtil::imageUrl('rss.png')."')", $data); }
103
+ }
104
+ else { swpaplugin_handleDisplayRssData($optName, $getMaxRssEntries); }
105
+ }
106
+ }
107
+ else { swpaplugin_handleDisplayRssData($optName, $getMaxRssEntries); }
108
+ }
109
+ ?>
110
+ </ul>
111
+ </div>
112
+ </div>
113
+ </div>
res/pages/dashboard.php ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php if(! SwpaUtil::isAdministrator()) { return; } ?>
3
+ <?php
4
+ if(!isset($_GET['filter']))
5
+ {
6
+ $alertsFilterBy = 'all';
7
+ $alertsSortBy = 's';
8
+ $alerts = SwpaPlugin::getAlerts();
9
+ }
10
+ else {
11
+ $alertsFilterBy = trim($_GET['filter']);
12
+ if($alertsFilterBy == 'all'){ $alerts = SwpaPlugin::getAlerts(); }
13
+ else {
14
+ $alertsFilterBy = intval($alertsFilterBy);
15
+ if(! in_array($alertsFilterBy, array(0,1,2,3))){
16
+ $alertsFilterBy = 'all';
17
+ $alerts = SwpaPlugin::getAlerts();
18
+ }
19
+ else { $alerts = SwpaPlugin::getAlertsBy($alertsFilterBy); }
20
+ }
21
+ }
22
+ ?>
23
+ <div class="wrap wsdplugin_content">
24
+ <h2><?php echo SWPA_PLUGIN_NAME.' - '. __('Dashboard');?></h2>
25
+
26
+ <p class="clear"></p>
27
+ <div style="clear: both; display: block;">
28
+ <!-- Current Alerts -->
29
+ <div class="wsdplugin_page_alert_types_current">
30
+
31
+ <!-- Action Bar -->
32
+ <div class="wsdplugin_page_alerts_action_bar" style="float: left;">
33
+ <div class="tablenav">
34
+ <div class="alignleft actions wsdplugin_alerts_filter_severity">
35
+ <select id="FilterAlertTypeSelect">
36
+ <option value="all"><?php echo __('All Severity Levels');?></option>
37
+ <option value="3"><?php echo __('Critical');?></option>
38
+ <option value="2"><?php echo __('Medium');?></option>
39
+ <option value="1"><?php echo __('Low');?></option>
40
+ <option value="0"><?php echo __('Informational');?></option>
41
+ </select>
42
+ <input type="button" value="Filter" class="button-secondary action" id="FilterAlertTypeButton">
43
+ </div>
44
+ </div>
45
+ </div>
46
+
47
+ <!-- Title -->
48
+ <div class="wsdplugin_alert_section_title wsdplugin_alert_section_title_category"><?php echo __('Current Alerts');?></div>
49
+
50
+ <!-- Body -->
51
+ <div class="wsdplugin_alert_section_body">
52
+ <table class="widefat" cellspacing="0" cellpadding="0">
53
+ <thead>
54
+ <th style="width:60px"><?php echo __('Severity');?></th>
55
+ <th style="width: 150px;"><?php echo __('Date');?></th>
56
+ <th><?php echo __('Title');?></th>
57
+ </thead>
58
+ <tbody>
59
+ <?php
60
+ if(! empty($alerts)){
61
+ foreach($alerts as $entry){
62
+ $alertId = $entry->alertId;
63
+ $alertType = $entry->alertType;
64
+ $severity = $entry->alertSeverity;
65
+ $afsDate = $entry->alertFirstSeen;
66
+ if($severity == SWPA_PLUGIN_ALERT_INFO){ $severity = 'info'; }
67
+ elseif($severity == SWPA_PLUGIN_ALERT_LOW){ $severity = 'low'; }
68
+ elseif($severity == SWPA_PLUGIN_ALERT_MEDIUM){ $severity = 'medium'; }
69
+ elseif($severity == SWPA_PLUGIN_ALERT_CRITICAL){ $severity = 'critical'; }
70
+ else { $severity = 'info'; }
71
+ echo '<tr class="entry-event alt" title="'.__('Click to expand/collapse').'">';
72
+ echo '<td class="wsdplugin_alert_indicator wsdplugin_alert_indicator_'.$severity.'" title="'.ucfirst($severity).'"></td>';
73
+ echo '<td>'.$entry->alertDate.'</td>';
74
+ echo '<td>'.$entry->alertTitle.'</td>';
75
+ echo '</tr>';
76
+ echo '<tr class="entry-description">';
77
+ echo '<td colspan="3">';
78
+ if($alertType == SWPA_PLUGIN_ALERT_TYPE_STACK)
79
+ {
80
+ // get child alerts
81
+ $childAlerts = SwpaPlugin::getChildAlerts($alertId, $alertType);
82
+ if(! empty($childAlerts)){
83
+ echo '<h3>'.__('Previous alerts').'</h3>';
84
+ echo '<table cellspacing="0" cellpadding="0" style="margin: 7px 11px;"><tbody>';
85
+ foreach($childAlerts as $childAlert){
86
+ $afsDate = $childAlert->alertFirstSeen;
87
+ echo '<tr class="alt">';
88
+ echo '<td class="wsdplugin_alert_indicator wsdplugin_alert_indicator_'.$severity.'" title="'.ucfirst($severity).'"></td>';
89
+ echo '<td>'.$childAlert->alertDate.'</td>';
90
+ echo '<td>'.$childAlert->alertTitle.'</td>';
91
+ echo '</tr>';
92
+ }
93
+ echo '</tbody></table>';
94
+ }
95
+ echo '<p>Alert first seen on: <strong>'.$afsDate.'</strong></p>';
96
+ echo '<h3>'.__('Description').'</h3>';
97
+ echo '<div><p>'.$entry->alertDescription.'</p></div>';
98
+ if(! empty($entry->alertSolution)){
99
+ echo '<h3>'.__('Solution').'</h3>';
100
+ echo '<div><p>'.$entry->alertSolution.'</p></div>';
101
+ }
102
+
103
+ }
104
+ else {
105
+ echo '<p>Alert first seen on: <strong>'.$afsDate.'</strong></p>';
106
+ echo '<h3>'.__('Description').'</h3>';
107
+ echo '<div><p>'.$entry->alertDescription.'</p></div>';
108
+ if(! empty($entry->alertSolution)){
109
+ echo '<h3>'.__('Solution').'</h3>';
110
+ echo '<div><p>'.$entry->alertSolution.'</p></div>';
111
+ }
112
+ }
113
+ echo '</td>';
114
+ echo '</tr>';
115
+ }
116
+ }
117
+ else { echo '<tr class="entry-event alt"><td colspan="3"><p style="font-weight:800;padding-top:6px;">'.__('No alerts found.').'</p></td></tr>'; }
118
+ ?>
119
+ </tbody>
120
+ </table>
121
+ </div>
122
+ </div>
123
+ <!-- Current Alerts -->
124
+ </div>
125
+ <script type="text/javascript">
126
+ jQuery(document).ready(function($){
127
+ wsdplugin_bindEntryClick($);
128
+ $("#FilterAlertTypeSelect").val("<?php echo $alertsFilterBy;?>").attr("selected", "selected");
129
+ $('#FilterAlertTypeButton').click(function(){window.location = updateQueryStringParam(document.URL,'filter',$('#FilterAlertTypeSelect').val());});
130
+ });
131
+ </script>
132
+
133
+ <?php echo SwpaUtil::loadTemplate('box-banners');?>
134
+ </div>
res/pages/database.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php if(! SwpaUtil::isAdministrator()) { return; } ?>
3
+ <div class="wrap wsdplugin_content">
4
+ <h2><?php echo SWPA_PLUGIN_NAME.' - '. __('Database Tools');?></h2>
5
+
6
+ <p class="clear"></p>
7
+ <div style="clear: both; display: block;">
8
+ <?php /*[ DATABASE BACKUP ]*/ ?>
9
+ <div class="metabox-holder" style="overflow: hidden;">
10
+
11
+ <?php
12
+ /*
13
+ * DATABASE BACKUP TOOL
14
+ * ================================================================
15
+ */
16
+ ?>
17
+ <div id="bckdb" style="float:left; width:49%;" class="inner-sidebar1 postbox">
18
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('Backup Database');?></span></h3>
19
+ <div class="inside">
20
+ <?php
21
+ echo SwpaUtil::loadTemplate('box-database-backup');
22
+ ?>
23
+ </div>
24
+ </div>
25
+
26
+ <?php
27
+ /*
28
+ * DATABASE BACKUPS
29
+ * ================================================================
30
+ */
31
+ ?>
32
+ <div style="float:right;width:49%;" class="inner-sidebar1 postbox">
33
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('Database Backup Files');?></span></h3>
34
+ <div class="inside">
35
+ <?php
36
+ echo SwpaUtil::loadTemplate('box-available-backups');
37
+ ?>
38
+ </div>
39
+ </div>
40
+ </div>
41
+
42
+ <p class="clear"></p>
43
+ <div class="metabox-holder" style="width:99.8%; padding-top: 0;">
44
+ <?php
45
+ /*
46
+ * CHANGE DATABASE PREFIX TOOL
47
+ * ================================================================
48
+ */
49
+ ?>
50
+ <div id="cdtp" class="postbox">
51
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('Change Database Prefix');?></span></h3>
52
+ <div class="inside">
53
+ <?php
54
+ echo SwpaUtil::loadTemplate('box-database-change-prefix');
55
+ ?>
56
+ </div>
57
+ </div>
58
+ </div>
59
+
60
+ </div>
61
+ </div>
res/pages/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
res/pages/live_traffic.php ADDED
@@ -0,0 +1,271 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php if(! SwpaUtil::isAdministrator()) { return; } ?>
3
+ <?php
4
+ // flag for getting data
5
+ $forceLoad = 1;
6
+ $refreshRates = array(0, 5, 10, 15, 20, 25, 30);
7
+ $settings = SwpaPlugin::getSettings();
8
+ ?>
9
+ <?php
10
+ $rm = strtoupper($_SERVER['REQUEST_METHOD']);
11
+ if('POST' == $rm)
12
+ {
13
+ // check nonce
14
+ if(isset($_POST['wsdplugin_update_settings_field'])){
15
+ if(!wp_verify_nonce($_POST['wsdplugin_update_settings_field'],'wsdplugin_update_settings')){
16
+ exit('Invalid request.');
17
+ }
18
+ }
19
+ else {exit('Invalid request.');}
20
+
21
+ function wsdPluginValidateSettingsForm($settings, $refreshRates)
22
+ {
23
+ if(isset($_POST['max_number_live_traffic']) && isset($_POST['refreshRateOption']))
24
+ {
25
+ // validate input $_POST['max_number_live_traffic']
26
+ $keepNumEntriesLiveTraffic = intval($_POST['max_number_live_traffic']);
27
+ if($keepNumEntriesLiveTraffic == 0){
28
+ $keepNumEntriesLiveTraffic = 0;
29
+ }
30
+ elseif(! preg_match("/[0-9]{1,5}/", $keepNumEntriesLiveTraffic)){
31
+ $keepNumEntriesLiveTraffic = 500;
32
+ }
33
+
34
+ // validate input $_POST['refreshRateOption']
35
+ $liveTrafficRefreshRateAjax = intval($_POST['refreshRateOption']);
36
+ if(! in_array($liveTrafficRefreshRateAjax, $refreshRates)){
37
+ $liveTrafficRefreshRateAjax = 10;
38
+ }
39
+ elseif($_POST['refreshRateOption'] == 0){
40
+ $liveTrafficRefreshRateAjax = 0;
41
+ }
42
+ elseif(! preg_match("/[0-9]{1,2}/", $liveTrafficRefreshRateAjax)){
43
+ $liveTrafficRefreshRateAjax = 10;
44
+ }
45
+
46
+ $settings['keepNumEntriesLiveTraffic'] = $keepNumEntriesLiveTraffic;
47
+ $settings['liveTrafficRefreshRateAjax'] = $liveTrafficRefreshRateAjax;
48
+
49
+ // update settings
50
+ update_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME, $settings);
51
+
52
+ return $settings;
53
+ }
54
+ else { exit('Invalid request.'); }
55
+ }
56
+
57
+
58
+ // check form
59
+ if(isset($_POST['updateSettingsButton']))
60
+ {
61
+ if(isset($_POST['max_number_live_traffic']) && isset($_POST['refreshRateOption']))
62
+ {
63
+ $settings = wsdPluginValidateSettingsForm($settings, $refreshRates);
64
+ }
65
+ else { exit('Invalid request.'); }
66
+ }
67
+ elseif(isset($_POST['deleteEntriesButton'])){
68
+ global $wpdb;
69
+ $query = "TRUNCATE ".SwpaPlugin::getTableName(SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME);
70
+ $wpdb->query($query);
71
+ $settings = wsdPluginValidateSettingsForm($settings, $refreshRates);
72
+ }
73
+ else { exit('Invalid request.'); }
74
+ }
75
+
76
+ $keepNumEntriesLiveTraffic = (isset($settings['keepNumEntriesLiveTraffic']) ? $settings['keepNumEntriesLiveTraffic'] : 500);
77
+ $liveTrafficRefreshRateAjax = (isset($settings['liveTrafficRefreshRateAjax']) ? $settings['liveTrafficRefreshRateAjax'] : 10);
78
+ ?>
79
+ <style type="text/css">
80
+ .wsd-clear { float: none; clear: both; height: 0; width: 100%; margin: 0 0; padding: 0 0;}
81
+ .wsdTrafficScan { }
82
+ .wsd-scan-entry { border-bottom: solid 1px #000; }
83
+ .wsd-scan-entry p { margin: 0 0; padding: 0 0; font-size: 100%; }
84
+ .wsd-scan-entry p .w-entry { color: #21759B; }
85
+ .wsd-scan-entry p .w-ip { color: #d00000; }
86
+ .wsd-scan-entry p .w-ua { color: #808080; }
87
+ .wsd-scan-entry p .w-date { color: #006600; }
88
+ #loaderWrapper {
89
+ float: right;
90
+ margin: 0 5px 0 0;
91
+ padding: 0 0;
92
+ overflow: hidden; min-height: 1px;
93
+ height: 20px;
94
+ }
95
+ #loaderWrapper span img { float: left;display:block; margin-top:4px; }
96
+ #loaderWrapper span span { float: left;display:block;padding-top: 0;margin-left:10px;color:#000000; }
97
+ .wsdPluginFieldsetSettingsExpanded { background: #F9F9F9; border: solid 1px #DFDFDF; padding: 0 0; }
98
+ .wsdPluginFieldsetSettingsCollapsed { background: transparent; border: none; border-top: solid 1px #DFDFDF; padding: 0 0; }
99
+ #settingsLegend {
100
+ background: linear-gradient(to top, #ECECEC, #F9F9F9) repeat scroll 0 0 #F1F1F1;
101
+ border: solid 1px #DFDFDF; padding: 2px 5px; margin-left: 5px; cursor: pointer;
102
+ }
103
+ #settingsContent { padding: 0 0; margin: 2px 0 5px 10px; line-height: normal; }
104
+ #max_number_live_traffic { margin-top: -5px; padding-top: 0; padding-bottom: 0; width: 50px; }
105
+ .btn {
106
+ -moz-box-sizing: border-box;
107
+ border-radius: 3px 3px 3px 3px;
108
+ border-style: solid;
109
+ border-width: 1px;
110
+ cursor: pointer;
111
+ display: inline-block;
112
+ font-size: 12px;
113
+ height: 24px;
114
+ line-height: 23px;
115
+ margin: 0;
116
+ padding: 0 10px 1px;
117
+ text-decoration: none;
118
+ white-space: nowrap;
119
+ }
120
+ .btn-danger {
121
+ color: #ffffff;
122
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
123
+ background-color: #da4f49;
124
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
125
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
126
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
127
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
128
+ background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
129
+ background-repeat: repeat-x;
130
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
131
+ border-color: #bd362f #bd362f #802420;
132
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
133
+ *background-color: #bd362f;
134
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
135
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
136
+ }
137
+ .btn-inverse {
138
+ color: #ffffff;
139
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
140
+ background-color: #363636;
141
+ background-image: -moz-linear-gradient(top, #444444, #222222);
142
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
143
+ background-image: -webkit-linear-gradient(top, #444444, #222222);
144
+ background-image: -o-linear-gradient(top, #444444, #222222);
145
+ background-image: linear-gradient(to bottom, #444444, #222222);
146
+ background-repeat: repeat-x;
147
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
148
+ border-color: #222222 #222222 #000000;
149
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
150
+ *background-color: #222222;
151
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
152
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
153
+ }
154
+ </style>
155
+ <div class="wrap wsdplugin_content">
156
+ <h2><?php echo SWPA_PLUGIN_NAME.' - '. __('Live Traffic');?></h2>
157
+
158
+ <p class="clear"></p>
159
+
160
+ <div style="padding: 0 0;">
161
+ <form method="post">
162
+ <?php wp_nonce_field('wsdplugin_update_settings','wsdplugin_update_settings_field'); ?>
163
+ <fieldset class="wsdPluginFieldsetSettingsExpanded">
164
+ <legend id="settingsLegend">Settings</legend>
165
+ <p id="settingsContent">
166
+ <label for="max_number_live_traffic">Maximum number of entries to store for Live Traffic:</label>
167
+ <input type="text" name="max_number_live_traffic" id="max_number_live_traffic" value="<?php echo $keepNumEntriesLiveTraffic;?>" maxlength="5"/>
168
+
169
+ <label for="refreshRateOption" style="margin-left: 20px;">Refresh rate</label>
170
+ <select name="refreshRateOption" id="refreshRateOption">
171
+ <?php
172
+ foreach($refreshRates as $rate){
173
+ $selected = ($rate == $liveTrafficRefreshRateAjax ? 'selected="selected"' : '');
174
+ if($rate == 0){
175
+ echo '<option value="'.$rate.'" '.$selected.'>Never</option>';
176
+ }
177
+ else { echo '<option value="'.$rate.'" '.$selected.'>'.$rate.' seconds</option>'; }
178
+ }
179
+ ?>
180
+ </select>
181
+ <input type="submit" value="Update settings" class="btn button-primary" name="updateSettingsButton" style="margin-left: 20px;"/>
182
+ <?php if($liveTrafficRefreshRateAjax == 0) :?>
183
+ <input type="button" value="Refresh" class="btn btn-inverse" style="margin-left: 20px;" onclick="javascript: window.location.href=document.URL;"/>
184
+ <?php endif;?>
185
+ <input type="submit" value="Delete all" class="btn btn-danger" name="deleteEntriesButton" style="margin-left: 20px;"/>
186
+ </p>
187
+ </fieldset>
188
+ </form>
189
+ </div>
190
+
191
+
192
+ <p class="clear"></p>
193
+ <table id="wsdTrafficScanTable" cellspacing="0"
194
+ class="wp-list-table widefat wsdTrafficScan"
195
+ data-nonce="<?php echo wp_create_nonce("wsdTrafficScan_nonce");?>"
196
+ data-lastid="<?php echo SwpaLiveTraffic::getLastID();?>">
197
+ <thead style="height: 20px;">
198
+ <tr>
199
+ <th class="manage-column column-cb" scope="col">
200
+ <span style="display: block; float: left; font-weight: 800;">Live activity</span>
201
+ <p id="loaderWrapper"></p>
202
+ </th>
203
+ </tr>
204
+ </thead>
205
+ <tbody id="the-list"></tbody>
206
+ </table>
207
+ </div>
208
+ <script type="text/javascript">
209
+ <?php if($forceLoad) echo 'var wsdAjaxForceLoad = 1;'; else echo 'var wsdAjaxForceLoad = 0;'?>
210
+ (function($){
211
+ $(document).ready( function()
212
+ {
213
+ function _createLoader($){
214
+ var imgPath = "<?php echo SwpaUtil::imageUrl('ajax-loader.gif') ?>";
215
+ var text = "<?php echo __('Loading data...');?>";
216
+ return $('<span id="ajaxLoaderRemove"><img src="'+imgPath+'" title="'+text+'" alt="'+text+'"/><span>'+text+'</span></span>');
217
+ }
218
+ function _showLoader($parentElement, $loader){ $parentElement.append($loader); }
219
+ function _hideLoader(stringId) { $('#'+stringId).remove(); }
220
+
221
+ var loader = _createLoader($);
222
+
223
+ var $table = $("#wsdTrafficScanTable"),
224
+ nonce = $table.attr("data-nonce"),
225
+ $tbody = $('#the-list', $table)
226
+ ,lastID = $table.attr("data-lastid")
227
+ ,loaderWrapper = $('#loaderWrapper');
228
+
229
+ function wsdpluginLoadData()
230
+ {
231
+ _showLoader(loaderWrapper, loader);
232
+ $.ajax({
233
+ type : "post",
234
+ dataType : "json",
235
+ cache: false,
236
+ url : "<?php echo admin_url( 'admin-ajax.php' );?>",
237
+ data : {'action': "ajaxGetTrafficData", 'nonce': nonce, 'lastID' : lastID, 'forceLoad': wsdAjaxForceLoad, 'maxEntries' : <?php echo $keepNumEntriesLiveTraffic;?>},
238
+ success: function(response) {
239
+ _hideLoader('ajaxLoaderRemove');
240
+ if(response.type == "success") {
241
+ if(response.data.length > 20){ $tbody.html(response.data); }
242
+ }
243
+ else { alert("An error occurred while trying to load data. Please try again in a few seconds."); }
244
+ }
245
+ });
246
+ wsdAjaxForceLoad = 0;
247
+ }
248
+
249
+ wsdpluginLoadData();
250
+ <?php //if refresh rate is == 0 -> disable
251
+ if($liveTrafficRefreshRateAjax > 0) :
252
+ ?>
253
+ window.setInterval(function(){wsdpluginLoadData(); }, <?php echo $liveTrafficRefreshRateAjax * 1000 ?>);
254
+ <?php endif; ?>
255
+
256
+ // settings
257
+ var settingsLegend = $('#settingsLegend');
258
+ var settingsContent = $('#settingsContent');
259
+ settingsLegend.toggle(
260
+ function(){
261
+ settingsContent.hide();
262
+ settingsLegend.parent().removeClass('wsdPluginFieldsetSettingsExpanded').addClass('wsdPluginFieldsetSettingsCollapsed');
263
+ },
264
+ function(){
265
+ settingsLegend.parent().removeClass('wsdPluginFieldsetSettingsCollapsed').addClass('wsdPluginFieldsetSettingsExpanded');
266
+ settingsContent.show();
267
+ }
268
+ );
269
+ });
270
+ })(jQuery);
271
+ </script>
res/pages/scanner.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php if(! SwpaUtil::isAdministrator()) { return; } ?>
3
+ <div class="wrap wsdplugin_content">
4
+ <h2><?php echo SWPA_PLUGIN_NAME.' - '. __('WordPress Scanner');?></h2>
5
+
6
+ <p class="clear"></p>
7
+ <p style="margin-left: 15px;">
8
+ <?php echo __("This page displays various information after scanning your WordPress website"); ?>:
9
+ </p>
10
+
11
+ <div class="metabox-holder">
12
+
13
+ <div style="width:49.8%; float: left;" class="postbox">
14
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('Server Report');?></span></h3>
15
+ <div class="inside acx-section-box">
16
+ <?php
17
+ echo SwpaUtil::loadTemplate('box-server-results');
18
+ ?>
19
+ </div>
20
+ </div>
21
+ <div style="width:49.8%; float: right;" class="postbox">
22
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('WordPress Scan Report');?></span></h3>
23
+ <div class="inside acx-section-box">
24
+ <?php
25
+ echo SwpaUtil::loadTemplate('box-scan-results-wp');
26
+ ?>
27
+ </div>
28
+ </div>
29
+
30
+ <div style="width:99.8%; clear: both;" class="inner-sidebar1 postbox">
31
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('File Scan Report');?></span></h3>
32
+ <div class="inside">
33
+ <?php
34
+ echo SwpaUtil::loadTemplate('box-scan-results-file');
35
+ ?>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
res/pages/settings.php ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php if(! SwpaUtil::isAdministrator()) { return; } ?>
3
+ <?php
4
+ $rm = strtoupper($_SERVER['REQUEST_METHOD']);
5
+ //#! get settings
6
+ $settings = SwpaPlugin::getSettings();
7
+
8
+ $rssWidgetData = get_option('WSD-RSS-WGT-DISPLAY');
9
+ $rssWidgetChecked = false;
10
+ if(!empty($rssWidgetData) && ($rssWidgetData == 'yes')){
11
+ $rssWidgetChecked = true;
12
+ }
13
+
14
+ if('POST' == $rm)
15
+ {
16
+ // check nonce
17
+ if(isset($_POST['wsdplugin_update_settings_field'])){
18
+ if(!wp_verify_nonce($_POST['wsdplugin_update_settings_field'],'wsdplugin_update_settings')){
19
+ wp_die(__('Invalid request.'));
20
+ }
21
+ }
22
+ else {wp_die(__('Invalid request.'));}
23
+
24
+ //#! UPDATE SETTINGS
25
+ if(isset($_POST['updateSettingsButton']))
26
+ {
27
+ // validate and save settings
28
+ $postData = $_POST['chk_options'];
29
+ parse_str($postData, $checkboxes);
30
+
31
+ if(empty($checkboxes)){
32
+ foreach($settings as &$entry){
33
+ $entry['value'] = 0;
34
+ }
35
+ }
36
+ else {
37
+ foreach($checkboxes as $method => $value){
38
+ $settings[$method]['value'] = $value;
39
+ }
40
+ }
41
+
42
+ // rss widget
43
+ if(empty($_POST['chk_rss_wgt_display'])){
44
+ // hide
45
+ $rssWidgetChecked = false;
46
+ update_option('WSD-RSS-WGT-DISPLAY', 'no');
47
+ }
48
+ else {
49
+ // show
50
+ $rssWidgetChecked = true;
51
+ update_option('WSD-RSS-WGT-DISPLAY', 'yes');
52
+ }
53
+
54
+ update_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME, $settings);
55
+ $settings = get_option(SWPA_PLUGIN_SETTINGS_OPTION_NAME);
56
+ }
57
+ //#! DELETE OPTIONS
58
+ elseif(isset($_POST['deleteRssDataButton']))
59
+ {
60
+ delete_option('wsd_feed_data');
61
+ }
62
+ }
63
+ ?>
64
+ <div class="wrap wsdplugin_content">
65
+ <h2><?php echo SWPA_PLUGIN_NAME.' - '. __('Settings');?></h2>
66
+
67
+ <p class="clear"></p>
68
+ <div style="clear: both; display: block;">
69
+ <div class="metabox-holder">
70
+ <div class="inner-sidebar1 postbox">
71
+ <h3 class="hndle" style="cursor: default;"><span><?php echo __('Settings');?></span></h3>
72
+ <div class="inside acx-section-box" style="padding-left:0;">
73
+ <form method="post">
74
+ <?php wp_nonce_field('wsdplugin_update_settings','wsdplugin_update_settings_field'); ?>
75
+ <?php
76
+ $i = 0;
77
+ foreach($settings as $k => $entry){
78
+ if(is_array($entry))
79
+ {
80
+ $chkID = "chk-$i";
81
+ echo '<div class="acx-section-box wsdplugin-overflow">';
82
+ echo '<label for="'.$chkID.'" class="wsdplugin-overflow">';
83
+ echo '<span class="chk-settings wsdplugin_checkbox'.($entry['value'] ? ' wsdplugin_checkbox-active' : '').'" id="'.$chkID.'" data-bind="'.$entry['name'].'"><a>&nbsp;</a></span>';
84
+ echo '<span>'.$entry['desc'].'</span>';
85
+ echo '</label>';
86
+ echo '</div>';
87
+ $i++;
88
+ }
89
+ }
90
+ ?>
91
+ <?php
92
+ // the rss dashboard widget
93
+ // all the below settings must have present the chk-extra class
94
+ echo '<div class="acx-section-box wsdplugin-overflow">';
95
+ echo '<label for="wsd_feed_data" class="wsdplugin-overflow">';
96
+ echo '<span class="chk-extra wsdplugin_checkbox'.($rssWidgetChecked ? ' wsdplugin_checkbox-active' : '').'" id="wsd_feed_data"><a>&nbsp;</a></span>';
97
+ echo '<span>'.__('Show the RSS widget in the dashboard').'</span>';
98
+ echo '</label>';
99
+ echo '</div>';
100
+ ?>
101
+
102
+ <input type="hidden" name="chk_options" id="chk_options" />
103
+ <input type="hidden" name="chk_rss_wgt_display" id="chk_rss_wgt_display" />
104
+ <div class="acx-section-box wsdplugin-overflow">
105
+ <input type="button" id="_resetButton" class="button button-secondary" style="width: 70px;"/>
106
+ <input type="submit" value="Update settings" class="button button-primary" name="updateSettingsButton"/>
107
+ <input type="submit" value="Delete rss data" class="button button-primary" name="deleteRssDataButton"/>
108
+ </div>
109
+ </form>
110
+ </div>
111
+ </div>
112
+ </div>
113
+
114
+ </div>
115
+ </div>
116
+ <script type="text/javascript">
117
+ jQuery(document).ready(function($){
118
+ var resetButton = $('#_resetButton');
119
+ var oneChecked = false;
120
+ var checkboxes = $('.wsdplugin_checkbox');
121
+ var entriesLiveTrafficInput = $('#max_number_live_traffic');
122
+
123
+ // update state + bind click listeners
124
+ $.each(checkboxes, function(i,v){
125
+ var self = $(v);
126
+ if(self.hasClass('wsdplugin_checkbox-active')){
127
+ oneChecked = true;
128
+ }
129
+ self.parent('label').on('click', function(){
130
+ if(self.hasClass('wsdplugin_checkbox-active')){
131
+ self.removeClass('wsdplugin_checkbox-active');
132
+ }
133
+ else { self.addClass('wsdplugin_checkbox-active'); }
134
+ });
135
+ });
136
+
137
+ // update reset button
138
+ if(oneChecked){ resetButton.val('Clear all'); }
139
+ else { resetButton.val('Select all'); }
140
+
141
+ resetButton.click(function(){
142
+ $(this).text(function(i, text){
143
+ if($(this).val() == 'Clear all'){
144
+ $.each(checkboxes,function(i,v){
145
+ $(v).removeClass('wsdplugin_checkbox-active');
146
+ });
147
+ $(this).val('Select all');
148
+ }
149
+ else {
150
+ $.each(checkboxes,function(i,v){
151
+ $(v).addClass('wsdplugin_checkbox-active',true);
152
+ });
153
+ $(this).val('Clear all');
154
+ }
155
+ });
156
+ });
157
+
158
+ $('form').submit(function(){
159
+ $('#chk_options').val('');
160
+ var data = $('.chk-settings').map(function(){
161
+ var self = $(this);
162
+ return {name: self.attr('data-bind'), value: self.hasClass('wsdplugin_checkbox-active')?1:0};
163
+ }).get();
164
+ $('#chk_options').val($.param(data));
165
+ $('#chk_rss_wgt_display').val($('.chk-extra').hasClass('wsdplugin_checkbox-active')?1:0);
166
+ });
167
+ });
168
+ </script>
res/pages/tpl/box-available-backups.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php
3
+ /*
4
+ * DISPLAY AVAILABLE DOWNLOADS
5
+ *======================================================
6
+ */
7
+ ?>
8
+ <?php
9
+ $files = SwpaUtil::getAvailableBackupFiles();
10
+
11
+ if (empty($files))
12
+ {
13
+ echo '<p>',__("You don't have any backup files yet!"),'</p>';
14
+ }
15
+ else {
16
+ echo '<div class="acx-section-box">';
17
+ echo '<ul id="bck-list" class="acx-common-list">';
18
+ foreach($files as $fileName) {
19
+ echo '<li>';
20
+ echo '<a href="',SWPA_PLUGIN_URL.'res/backups/',$fileName,'" title="',__('Click to download'),'">',$fileName,'</a>';
21
+ echo '</li>';
22
+ }
23
+ echo '</ul>';
24
+ echo '</div>';
25
+ }
26
+ ?>
res/pages/tpl/box-banners.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php if(! SwpaUtil::isAdministrator()) { return; } ?>
3
+ <div id="wsd-banner-rotator" class="wsdplugin-overflow">
4
+ <div style="width:800px; margin: 0 auto;">
5
+ <a href="//www.acunetix.com/" style="border:none;text-decoration: none;" target="_blank" title="Visit www.acunetix.com (opens in a new window/tab)">
6
+ <img src="//www.acunetix.com/assets/banner.jpg" alt="" title=""/>
7
+ </a> </div>
8
+ </div>
res/pages/tpl/box-database-backup.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+
3
+
4
+ <div class="">
5
+ <blockquote>
6
+ <p><?php echo __('Your WordPress database contains every post, every comment and every link you have on your blog. If your database gets erased or corrupted, you stand to lose everything you have written. There are many reasons why this could happen and not all are things you can control. But what you can do is <strong>back up your data</strong>.'); ?></p>
7
+ <p style="text-align: center;"><?php echo __('<strong>Please backup your database before using this tool!</strong>');?></p>
8
+ <p style="text-align: right;"><cite><a href="http://codex.wordpress.org/WordPress_Backups" target="_blank">Wordpress</a></cite></p>
9
+ </blockquote>
10
+ </div>
11
+
12
+ <?php
13
+ /*
14
+ * Check if the backups directory is writable
15
+ *======================================================
16
+ */
17
+ $wsd_bckDirPath = SWPA_PLUGIN_DIR.'res/backups/';
18
+ if (is_dir($wsd_bckDirPath) && is_writable($wsd_bckDirPath)) :
19
+ ?>
20
+
21
+
22
+ <?php
23
+ if ($_SERVER['REQUEST_METHOD'] == 'POST')
24
+ {
25
+ if (isset($_POST['wsd_db_backup']))
26
+ {
27
+
28
+ if ('' <> ($fname = SwpaUtil::backupDatabase())) {
29
+ echo '<p class="acx-info-box">';
30
+ echo '<span>',__('Database successfully backed up!'),'</span>';
31
+ echo '<br/><span>',__('Download backup file'),': </span>';
32
+ echo '<a href="',SWPA_PLUGIN_URL.'res/backups/',$fname,'" style="color:#000">',$fname,'</a>';
33
+ echo '</p>';
34
+ }
35
+ else {
36
+ echo '<p class="acx-info-box">';
37
+ echo __('The database could not be backed up!');
38
+ echo '<br/>',__("A possible error might be that you didn't set up writing permissions for the backups directory!");
39
+ echo '</p>';
40
+ }
41
+ }
42
+ }
43
+ ?>
44
+ <div class="acx-section-box">
45
+ <form action="#bckdb" method="post">
46
+ <input type="hidden" name="wsd_db_backup"/>
47
+ <input type="submit" class="button-primary" name="backupDatabaseButton" value="<?php echo __('Backup now!');?>"/>
48
+ </form>
49
+ </div>
50
+
51
+ <?php else : //!! The directory is not writable. Display the info message
52
+
53
+ echo '<p class="acx-info-box">';
54
+ printf(__('<strong>Important</strong>: The <code title="%s">backups</code> directory <strong>MUST</strong> be writable in order to use this feature!')
55
+ ,SWPA_PLUGIN_DIR.'res/backups');
56
+ echo '</p>';
57
+ endif; ?>
res/pages/tpl/box-database-change-prefix.php ADDED
@@ -0,0 +1,244 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+
3
+ <?php
4
+ /*
5
+ * =====================================================================================
6
+ * Because this feature is error prone and the blog can go "bye-bye" in a second,
7
+ * ensure we've checked EVERYTHING before displaying the form
8
+ * =====================================================================================
9
+ */
10
+ global $table_prefix;
11
+
12
+ //## Assume FALSE
13
+ $showPage = false; // whether or not to display this page
14
+ $isWPConfigWritable = false; // whether or not the wp-config file is writable
15
+ $cdtpIsPostBack = false; // whether or not the form was posted back.
16
+ $acxInfoMessage = $wsd_Message = ''; // Hold the error/info messages generated on form postback
17
+ $old_prefix = $table_prefix;
18
+ $new_prefix = ''; // leave empty. it will be populated at runtime
19
+ $canAlter = false; // Assume the user doesn't have ALTER rights
20
+
21
+ $wpConfigFile = trailingslashit(ABSPATH).'wp-config.php';
22
+ $acx_dbRights = SwpaInfoServer::getDatabaseUserAccessRights();
23
+
24
+ if (is_writable($wpConfigFile)){
25
+ $isWPConfigWritable = true;
26
+ }
27
+
28
+ if ($acx_dbRights['rightsEnough']) {
29
+ $canAlter = true;
30
+ }
31
+
32
+ //!! Check wp-config.php file and rights first
33
+ if ($isWPConfigWritable && $canAlter){
34
+ $showPage = true;
35
+ }
36
+
37
+ // Check if user has enough rights to alter the Table structure
38
+ if ($acx_dbRights['rightsEnough'])
39
+ {
40
+ $_canAlter = '<span style="color: #060; font-weight: 900;">('.__('Yes').')</span>';
41
+ }
42
+ else { $_canAlter = '<span style="color: #f00; font-weight: 900;">('.__('No').')</span>'; }
43
+
44
+ if ($isWPConfigWritable)
45
+ {
46
+ $wpConfigFileinfo = '<span style="color: #060; font-weight: 900;">('.__('Yes').')</span>';
47
+ }
48
+ else { $wpConfigFileinfo = '<span style="color: #f00; font-weight: 900;">('.__('No').')</span>'; }
49
+ ?>
50
+
51
+ <div class="acx-section-box">
52
+ <p><?php echo __('Change your database table prefix to avoid zero-day SQL Injection attacks.');?></p>
53
+ <h4 style="margin-top: 15px;"><?php echo __('Before running this script');?>:</h4>
54
+ <ul class="acx-common-list" style="margin-top: 20px;">
55
+ <li><?php echo __('The <code>wp-config.php</code> file must be <strong>writable</strong>.').' '.$wpConfigFileinfo;?></li>
56
+ <li><?php echo __("The database user you're using to connect to database must have <strong>ALTER</strong> rights.").' '.$_canAlter;?></li>
57
+ </ul>
58
+ </div>
59
+
60
+ <?php
61
+ /*
62
+ * If the user doesn't have ALTER rights or the wp-config file is not writable
63
+ *============================================================================
64
+ */
65
+ //@ if all good but we cannot use the "file' function, stop here
66
+ if ($showPage && !function_exists('file'))
67
+ {
68
+ echo '<p class="acx-info-box">';
69
+ echo '<span class="acx-icon-alert-info">';
70
+ echo __('In order to alter the <code>wp-config.php</code> file we need the <strong>file</strong> function which seems to be blacklisted by your server administrator!');
71
+ echo '</span>';
72
+ echo '</p>';
73
+
74
+ return;
75
+ }
76
+
77
+ //@ If we cannot load the page
78
+ if ( ! $showPage )
79
+ {
80
+ echo '<p class="acx-info-box">';
81
+ if (!$canAlter) {
82
+ echo '<span class="acx-icon-alert-critical">';
83
+ echo __('The User used to access the database must have <strong>ALTER</strong> rights in order to perform this action!');
84
+ echo '</span><br/>';
85
+ }
86
+ if (!$isWPConfigWritable) {
87
+ echo '<span>';
88
+ echo __('The <strong>wp-config</strong> file <strong>MUST</strong> be writable!');
89
+ echo '</span>';
90
+ }
91
+ echo '</p>';
92
+
93
+ //!! Stop here, no need to load the rest of the page
94
+ return;
95
+ }
96
+ ?>
97
+
98
+ <?php
99
+ /*
100
+ * Issue the file permissions warning ONLY IF wp-config IS WRITABLE,
101
+ * otherwise the form gets confusing displaying so many info messages...
102
+ *======================================================================
103
+ */
104
+ if ($isWPConfigWritable)
105
+ {
106
+ echo '<p class="acx-info-box">';
107
+ echo '<span class="acx-icon-alert-info">';
108
+ echo __('It is a security risk to have your files <strong>writable</strong>!
109
+ Please make sure that <strong>after</strong> running this script, the <code>wp-config.php</code> file\'s permissions are set to 0644 or to a more restrictive one. See: <a href="http://codex.wordpress.org/Changing_File_Permissions" target="_blank">http://codex.wordpress.org/Changing_File_Permissions</a> for more information.');
110
+ echo '</span>';
111
+ echo '</p>';
112
+ }
113
+ //@ If the user has too many rights
114
+ if (!empty($acx_dbRights['rightsTooMuch'])) {
115
+ echo '<p class="acx-info-box">';
116
+ echo '<span class="acx-icon-alert-info">'. __("Your currently used User to access the Wordpress Database <code>holds too many rights</code>. We suggest that you limit his rights or to use another User with more limited rights instead, to increase your website's Security.").'</span>';
117
+ echo '</p>';
118
+ }
119
+ ?>
120
+
121
+ <?php
122
+ /*
123
+ * VALIDATE FORM
124
+ *======================================================
125
+ */
126
+ if ($_SERVER['REQUEST_METHOD'] == 'POST')
127
+ {
128
+ if (!empty($_POST['newPrefixInput']) && isset($_POST['changePrefixButton']))
129
+ {
130
+ $cdtpIsPostBack = true;
131
+
132
+ if (function_exists('wp_nonce_field')) {
133
+ check_admin_referer('prefix-changer-change_prefix');
134
+ }
135
+
136
+ //@@ Double check the request
137
+ if (!$isWPConfigWritable || !$canAlter)
138
+ {
139
+
140
+ $e = __('Please correct the following errors').':<br/>';
141
+ $e .= '<br/>'.__('The User used to access the database must have <strong>ALTER</strong> rights in order to perform this action!');
142
+ $e .= '<br/>'.__('The <strong>wp-config</strong> file <strong>MUST</strong> be writable!');
143
+
144
+ wp_die($e);
145
+ }
146
+
147
+ $wpdb = $GLOBALS['wpdb'];
148
+ if (empty($wpdb))
149
+ {
150
+ wp_die(__('An internal error has occurred (empty $wpdb). Please inform the plug-in author about this error. Thank you!'));
151
+ }
152
+
153
+ $new_prefix = $_POST['newPrefixInput'];
154
+
155
+ // validate prefix
156
+ if(! preg_match('/^[a-zA-Z_][a-zA-Z0-9_]+$/', $new_prefix)){
157
+ $acxInfoMessage .= sprintf('Invalid table name prefix: %s', htmlentities($new_prefix));
158
+ $new_prefix = $old_prefix;
159
+ }
160
+ else
161
+ {
162
+ if (empty($acx_dbRights['rightsEnough']))
163
+ {
164
+ $wsd_Message .= '<span class="acx-icon-alert-critical">'. __('The User which is used to access your Wordpress Database, hasn\'t enough rights (is missing the <code>ALTER</code> right) to alter the Table structure.
165
+ Please visit the <a href="http://www.websitedefender.com/category/faq/" target=_blank">WebsiteDefender WP Security Scan WordPress plugin documentation</a> website for more information.
166
+ If the user <code>has ALTER</code> rights and the tool is still not working, please <a href="http://www.websitedefender.com/support/" target="_blank">contact us</a> for assistance!').'</span>';
167
+ }
168
+
169
+ if (strlen($new_prefix) < strlen($_POST['newPrefixInput'])){
170
+ $acxInfoMessage .= __('You used some characters disallowed in Table names. The sanitized prefix will be used instead').': '.$new_prefix;
171
+ }
172
+ if ($new_prefix == $old_prefix) {
173
+ if (!empty($acxInfoMessage)) { $acxInfoMessage .= '<br/>'; }
174
+ $acxInfoMessage .= __('No change! Please select a different table prefix value.');
175
+ }
176
+ else
177
+ {
178
+ // Get the list of tables to modify
179
+ $tables = SwpaUtil::getTablesToAlter();
180
+ if (empty($tables))
181
+ {
182
+ if (!empty($acxInfoMessage)) { $acxInfoMessage .= '<br/>'; }
183
+ $acxInfoMessage .= __("Internal Error: We couldn't retrieve the list of tables from the database! Please inform the plug-in author about this error! Thank you!");
184
+ }
185
+ else
186
+ {
187
+ $result = SwpaUtil::renameTables($tables, $old_prefix, $new_prefix);
188
+
189
+ // check for errors
190
+ if (!empty($result))
191
+ {
192
+ if (!empty($acxInfoMessage)) { $acxInfoMessage .= '<br/>'; }
193
+ $acxInfoMessage .= '<span class="acx-notice-success acx-icon-alert-success">'.__('All tables have been successfully updated!').'</span>';
194
+
195
+ // try to rename the fields
196
+ $acxInfoMessage .= SwpaUtil::renameDbFields($old_prefix, $new_prefix);
197
+
198
+ if (0 < SwpaUtil::updateWpConfigTablePrefix($wpConfigFile, $new_prefix))
199
+ {
200
+ $acxInfoMessage .= '<br/><span class="acx-notice-success acx-icon-alert-success">'.__('The <strong>wp-config</strong> file has been successfully updated!').'</span>';
201
+ }
202
+ else {
203
+ $acxInfoMessage .= '<br/>'.__('The <strong>wp-config</strong> file could not be updated! You have to manually update the <strong>$table_prefix</strong> variable to the one you have specified').': '.$new_prefix;
204
+ }
205
+ }// End if tables successfully renamed
206
+ else { $acxInfoMessage .= '<br/><strong>'.__('An error has occurred and the tables could not be updated!').'</strong>'; }
207
+ }// End if there are tables to rename
208
+ }// End checks
209
+ }
210
+ }// End if (!empty($_POST['newPrefixInput']))
211
+ }// End if postback
212
+ else { $new_prefix = $old_prefix; }
213
+
214
+ if(empty($new_prefix)){
215
+ $new_prefix = $old_prefix;
216
+ }
217
+ ?>
218
+
219
+ <?php
220
+ /*
221
+ * Dsplay the form
222
+ *=======================================================
223
+ */
224
+ ?>
225
+ <div class="acx-section-box">
226
+ <form action="#cdtp" method="post" name="prefixchanging">
227
+ <?php if (function_exists('wp_nonce_field')) { wp_nonce_field('prefix-changer-change_prefix'); } ?>
228
+ <p><?php echo sprintf(__('Change the current: <input type="text" name="newPrefixInput" value="%s" size="20" maxlength="15"/> table prefix to something different.'), $new_prefix); ?></p>
229
+ <p><?php echo __('Allowed characters: all latin alphanumeric as well as the <strong>_</strong> (underscore).');?></p>
230
+ <input type="submit" class="button-primary" name="changePrefixButton" value="<?php echo __('Start Renaming');?>" />
231
+ </form>
232
+ </div>
233
+ <div id="cdtp">
234
+ <?php
235
+ // Display status information
236
+ if ($cdtpIsPostBack){
237
+ if (!empty($acxInfoMessage)){ echo '<p class="acx-info-box">',$acxInfoMessage,'</p>'; }
238
+ if (!empty($wsd_Message)) { echo '<p class="acx-info-box">',$wsd_Message,'</p>'; }
239
+ }
240
+ else {
241
+ if (!empty($wsd_Message)) { echo '<p class="acx-info-box">',$wsd_Message,'</p>'; }
242
+ }
243
+ ?>
244
+ </div>
res/pages/tpl/box-scan-results-file.php ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; }
2
+ /*
3
+ * Displays the File scan results info
4
+ */
5
+ global $acxFileList;
6
+ ?>
7
+ <?php
8
+ $acx_isPostBack = false;
9
+ $acx_message = '';
10
+
11
+ //@ IF POSTBACK
12
+ if(! SwpaUtil::isWinOs()){
13
+ if ($_SERVER['REQUEST_METHOD'] == 'POST')
14
+ {
15
+ // check nonce
16
+ if(isset($_POST['wsdplugin_update_paths_field'])){
17
+ if(!wp_verify_nonce($_POST['wsdplugin_update_paths_field'],'wsdplugin_update_paths')){
18
+ wp_die(__('Invalid request.'));
19
+ }
20
+ }
21
+ else {wp_die(__('Invalid request.'));}
22
+
23
+ $acx_isPostBack = true;
24
+
25
+ $result = SwpaUtil::changeFilePermissions($acxFileList);
26
+
27
+ if (empty($result)) {
28
+ $acx_message = __('No changes applied. You are running PHP on a Windows server thus chmod cannot be used');
29
+ }
30
+ else { $acx_message = __('Successful changes').': '.$result['success'].', '.__('Failed').': '.$result['failed']; }
31
+ }
32
+ }
33
+ ?>
34
+ <?php
35
+ //@ Check the files
36
+ if (empty($acxFileList)) {
37
+ echo __('There are currently no files set for scanning!');
38
+ }
39
+ else
40
+ {
41
+ echo '<form method="post">';
42
+ wp_nonce_field('wsdplugin_update_paths','wsdplugin_update_paths_field');
43
+ echo '<table class="widefat acx-table" cellpadding="0" cellspacing="0">';
44
+ echo '<thead class="widget-top">';
45
+ echo '<tr>';
46
+ echo '<td></td>';
47
+ echo '<td><strong>',__('Name'),'</strong></td>';
48
+ echo '<td><strong>',__('Path'),'</strong></td>';
49
+ echo '<td><strong>',__('Current permissions'),'</strong></td>';
50
+ echo '<td><strong>',__('Suggested permissions'),'</strong></td>';
51
+ echo '</tr>';
52
+ echo '</thead>';
53
+ echo '<tbody>';
54
+ foreach($acxFileList as $fileName => $v)
55
+ {
56
+ $filePath = $v['filePath'];
57
+ $p = SwpaUtil::getFilePermissions($filePath);
58
+ $sp = $v['suggestedPermissions'];
59
+
60
+ $cssClass = ((octdec($p) == octdec($sp)) ? 'success' : 'error');
61
+
62
+ echo '<tr>';
63
+ echo '<td class="td_'.$cssClass.'"></td>';
64
+ echo '<td>',$fileName,'</td>';
65
+ echo '<td>',(empty($filePath) ? 'Not Found' : SwpaUtil::normalizePath($filePath)),'</td>';
66
+ //@ Current
67
+ if ($p > octdec('0')) {
68
+ echo '<td>',$p,'</td>';
69
+ }
70
+ else { echo '<td>',__('Not Found'),'</td>'; }
71
+
72
+ //@ Suggested
73
+ if (file_exists($filePath))
74
+ {
75
+ echo '<td>',$sp,'</td>';
76
+ }
77
+ else
78
+ {
79
+ if (is_file($filePath)) {
80
+ echo '<td>0644</td>';
81
+ }
82
+ elseif (is_dir($filePath)) { echo '<td class="center">0755</td>'; }
83
+ else {
84
+ echo '<td>',$sp,'</td>';
85
+ }
86
+ }
87
+ echo '</tr>';
88
+ }
89
+ echo '</tbody>';
90
+ echo '</table>';
91
+
92
+ if(! SwpaUtil::isWinOs()){
93
+ echo '<div class="wsdplugin-overflow"><p style="text-align: right; clear: both; margin: 7px 0 0 0;" class="wsdplugin-overflow">';
94
+ //@@ Display action result
95
+ if ($acx_isPostBack && !empty($acx_message)){
96
+ echo '<p class="acx-info-box" style="float: left; width: 70%; margin: 0 0; padding-top: 3px; padding-bottom: 3px;">'.$acx_message.'</p>';
97
+ }
98
+ echo '<input type="submit" value="Apply suggested permissions" class="button-primary" style="float: right;" /></div>';
99
+ }
100
+ echo '</form>';
101
+
102
+ echo '<p class="acx-info-box" style="margin: 7px 0 7px 0;">';
103
+ echo __('Our suggested permissions are still secure but more permissive in order not to break some servers\' setups.
104
+ If your existent file permissions are more restrictive, ex: 0750 instead of the suggested 0755 then you have no reason to
105
+ change it to the suggested 0755 permissions.');
106
+ echo '</p>';
107
+ }
108
+ ?>
res/pages/tpl/box-scan-results-wp.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <ul class="acx-common-list">
3
+ <?php
4
+ // display wp info
5
+ $class = new ReflectionClass('SwpaInfo');
6
+ $methods = $class->getMethods();
7
+ if(! empty($methods)){
8
+ foreach($methods as $method){
9
+ echo '<li><p>'.call_user_func(array($method->class, $method->name)).'</p></li>';
10
+ }
11
+ }
12
+ ?>
13
+ </ul>
res/pages/tpl/box-server-results.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php if(! SwpaUtil::canLoad()) { return; } ?>
2
+ <?php echo SwpaInfoServer::getServerInfo();?>
3
+
res/pages/tpl/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php /* here, only to prevent directory listing */
screenshot-1.jpg ADDED
Binary file
screenshot-1.png DELETED
Binary file
screenshot-2.jpg ADDED
Binary file
screenshot-3.jpg ADDED
Binary file
screenshot-4.jpg ADDED
Binary file
secure-wordpress.php DELETED
@@ -1,1101 +0,0 @@
1
- <?php
2
- /**
3
- * Plugin Name: Secure WordPress
4
- * Plugin URI: http://www.websitedefender.com/secure-wordpress-plugin/
5
- * Text Domain: secure_wp
6
- * Domain Path: /languages
7
- * Description: Basic security checks for securing your WordPress installation
8
- * Author: WebsiteDefender
9
- * Version: 2.0.6
10
- * Author URI: http://www.websitedefender.com/
11
- * License: GPL
12
- */
13
- /*
14
- * rev #1: 07/16/2011 {c}
15
- * rev #2: 07/26/2011 {c}
16
- * rev #3: 08/26/2011 {c}
17
- * rev #4: 09/12/2011 {c}
18
- * rev #5: 09/20/2011 {c}
19
- * rev #6: 09/30/2011 {c}
20
- */
21
-
22
- global $wp_version;
23
- if ( !function_exists ('add_action') || version_compare($wp_version, "2.6alpha", "<") ) {
24
- if (function_exists ('add_action')) {
25
- $exit_msg = 'The plugin <em><a href="http://wordpress.org/extend/plugins/secure-wordpress/" target="_blank">Secure WordPress</a></em> requires WordPress 2.6 or newer. <a href="http://codex.wordpress.org/Upgrading_WordPress" target="_blank">Please update WordPress</a> or delete the plugin.';
26
- }
27
- else {$exit_msg = '';}
28
- if (!headers_sent()) {
29
- header('Status: 403 Forbidden');
30
- header('HTTP/1.1 403 Forbidden');
31
- }
32
- exit($exit_msg);
33
- }
34
- /**
35
- * Displayed for the menu item in te admin menu
36
- * Images/ Icons in base64-encoding
37
- * @uses function wpag_get_resource_url() for display
38
- */
39
- if ( isset($_GET['resource']) && !empty($_GET['resource']) ) {
40
- # base64 encoding performed by base64img.php from http://php.holtsmark.no
41
- $resources = array(
42
- 'secure_wp.gif' =>
43
- 'R0lGODlhCwALAKIHALOzs8PDw9fX16GhoZSUlPz8/Orq6v///yH5BAEAAAcALAAAAAALAAsAAAMveLrMFtCwEoi1oZwCrgeFcA3BcAkdAQgBagEmIZiDSAzxfNtDajy/10PQYEkajQQAOw==',
44
- 'wp.png' =>
45
- 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAFfKj/FAAAAB3RJTUUH1wYQEiwG0'.
46
- '0adjQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAABOUExURZ'.
47
- 'wMDN7n93ut1kKExjFjnHul1tbn75S93jFrnP///1qUxnOl1sbe71KMxjFrpWOUzjl'.
48
- '7tYy13q3G5+fv95y93muczu/39zl7vff3//f//9Se9dEAAAABdFJOUwBA5thmAAAA'.
49
- 's0lEQVR42iWPUZLDIAxDRZFNTMCllJD0/hddktWPRp6x5QcQmyIA1qG1GuBUIArwj'.
50
- 'SRITkiylXNxHjtweqfRFHJ86MIBrBuW0nIIo96+H/SSAb5Zm14KnZTm7cQVc1XSMT'.
51
- 'jr7IdAVPm+G5GS6YZHaUv6M132RBF1PopTXiuPYplcmxzWk2C72CfZTNaU09GCM3T'.
52
- 'Ww9porieUwZt9yP6tHm5K5L2Uun6xsuf/WoTXwo7yQPwBXo8H/8TEoKYAAAAASUVO'.
53
- 'RK5CYII='.
54
- '');
55
-
56
- if (array_key_exists($_GET['resource'], $resources))
57
- {
58
- $content = base64_decode($resources[ $_GET['resource'] ]);
59
- $lastMod = filemtime(__FILE__);
60
- $client = ( isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false );
61
- // Checking if the client is validating his cache and if it is current.
62
- if ( isset($client) && (strtotime($client) == $lastMod) ) {
63
- if (!headers_sent()) {
64
- // Client's cache IS current, so we just respond '304 Not Modified'.
65
- header('Last-Modified: '.gmdate('D, d M Y H:i:s', $lastMod).' GMT', true, 304);
66
- }
67
- exit;
68
- }
69
- else {
70
- if (!headers_sent()) {
71
- // Image not cached or cache outdated, we respond '200 OK' and output the image.
72
- header('Last-Modified: '.gmdate('D, d M Y H:i:s', $lastMod).' GMT', true, 200);
73
- header('Content-Length: '.strlen($content));
74
- header('Content-Type: image/' . substr(strrchr($_GET['resource'], '.'), 1) );
75
- }
76
- echo $content;
77
- exit;
78
- }
79
- }
80
- }
81
-
82
-
83
- /* $rev #1, #2 {c} */
84
- if (!function_exists('json_encode') || !class_exists('Services_JSON'))
85
- {
86
- @require_once('inc/json.php');
87
- }
88
- if (!defined('WSD_RECAPTCHA_API_SERVER'))
89
- {
90
- @require_once('inc/recaptchalib.php');
91
- }
92
- if ( !class_exists('WPlize') ) {
93
- @require_once('inc/WPlize.php');
94
- }
95
-
96
-
97
- // Check to see whether or not we should display the dashboard widget
98
- //@ $rev3
99
- $plugin1 = 'websitedefender-wordpress-security';
100
- $plugin2 = 'wp-security-scan';
101
- if (! in_array($plugin1.'/'.$plugin1.'.php', apply_filters('active_plugins', get_option('active_plugins')))
102
- || ! in_array($plugin2.'/securityscan.php', apply_filters('active_plugins', get_option('active_plugins'))))
103
- {
104
- define('SWP_WSD_BLOG_FEED', 'http://www.websitedefender.com/feed/');
105
- @require_once('inc/swUtil.php');
106
- //@@ Hook into the 'wp_dashboard_setup' action to create the dashboard widget
107
- add_action('wp_dashboard_setup', "swUtil::addDashboardWidget");
108
- }
109
- unset($plugin1,$plugin2);
110
- //@===
111
-
112
-
113
-
114
- /*
115
- * Instantiate the swWSD class
116
- */
117
- @require 'inc/swWSD.php';
118
- $swwsd = new swWSD();
119
-
120
-
121
- if ( !class_exists('SecureWP') ){
122
-
123
- if (function_exists ('add_action'))
124
- {
125
- // Pre-2.6 compatibility
126
- if ( !defined( 'WP_CONTENT_URL' ) ) {
127
- define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' );
128
- }
129
- if ( !defined( 'WP_PLUGIN_URL' ) ) {
130
- define( 'WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins' );
131
- }
132
- if ( !defined( 'WP_PLUGIN_DIR' ) ) {
133
- define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
134
- }
135
-
136
- // plugin definitions
137
- define( 'FB_SWP_BASENAME', plugin_basename(__FILE__) );
138
- define( 'FB_SWP_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
139
- define( 'FB_SWP_FILENAME', str_replace( FB_SWP_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) );
140
- define( 'FB_SWP_TEXTDOMAIN', 'secure_wp' );
141
- }
142
-
143
-
144
- /**
145
- * @package Secure WordPress
146
- * @author WebsiteDefender
147
- * @desc Secure WordPress beefs up the security of your WordPress installation
148
- * by removing error information on login pages, adds index.html to plugin directories,
149
- * hides the WordPress version and much more.
150
- */
151
- class SecureWP
152
- {
153
- var $wpversion;
154
-
155
- /*
156
- * constructor {php 4}
157
- * calls $this->__construct()
158
- */
159
- // public function SecureWP() { return $this->__construct(); }
160
-
161
- // constructor {php5+}
162
- public function __construct()
163
- {
164
- global $wp_version;
165
-
166
- $this->wpversion = $wp_version;
167
-
168
- $this->activate();
169
-
170
- add_action( 'init', array(&$this, 'textdomain') );
171
- /**
172
- * remove WP version
173
- */
174
- if ( $GLOBALS['WPlize']->get_option('secure_wp_version') == '1' ) {
175
- add_action( 'init', array(&$this, 'replace_wp_version'), 1 );
176
- }
177
-
178
- /**
179
- * remove core update for non admins
180
- * @link: rights: http://codex.wordpress.org/Roles_and_Capabilities
181
- */
182
- if ( is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_rcu') == '1') ) {
183
- add_action( 'init', array(&$this, 'remove_core_update'), 1 );
184
- }
185
-
186
- /**
187
- * remove plugin update for non admins
188
- * @link: rights: http://codex.wordpress.org/Roles_and_Capabilities
189
- */
190
- if ( is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_rpu') == '1') ) {
191
- add_action( 'init', array(&$this, 'remove_plugin_update'), 1 );
192
- }
193
-
194
- /**
195
- * remove theme update for non admins
196
- * @link: rights: http://codex.wordpress.org/Roles_and_Capabilities
197
- */
198
- if ( is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_rtu') == '1') && ( version_compare($wp_version, "2.8alpha", ">") ) ) {
199
- add_action( 'init', array(&$this, 'remove_theme_update'), 1 );
200
- }
201
-
202
- /**
203
- * remove WP version on backend
204
- */
205
- if ( $GLOBALS['WPlize']->get_option('secure_wp_admin_version') == '1' ) {
206
- add_action( 'init', array(&$this, 'remove_wp_version_on_admin'), 1 );
207
- }
208
-
209
- add_action( 'init', array(&$this, 'on_init'), 1 );
210
- }
211
-
212
- /**
213
- * active for multilanguage
214
- *
215
- * @package Secure WordPress
216
- */
217
- public function textdomain()
218
- {
219
- if ( function_exists('load_plugin_textdomain') ) {
220
- if ( !defined('WP_PLUGIN_DIR') ) {
221
- load_plugin_textdomain(FB_SWP_TEXTDOMAIN, str_replace( ABSPATH, '', dirname(__FILE__) ) . '/languages');
222
- }
223
- else { load_plugin_textdomain(FB_SWP_TEXTDOMAIN, false, dirname( plugin_basename(__FILE__) ) . '/languages'); }
224
- }
225
- }
226
-
227
- // public function for WP < 2.8
228
- public function get_plugins_url($path = '', $plugin = '')
229
- {
230
- if ( function_exists('plugin_url') ) {
231
- return plugins_url($path, $plugin);
232
- }
233
-
234
- if ( function_exists('is_ssl') ) {
235
- $scheme = ( is_ssl() ? 'https' : 'http' );
236
- }
237
- else {$scheme = 'http';}
238
-
239
- if ( function_exists('plugins_url') )
240
- $url = plugins_url();
241
- else
242
- $url = WP_PLUGIN_URL;
243
- if ( 0 === strpos($url, 'http') ) {
244
- if ( function_exists('is_ssl') && is_ssl() ) {
245
- $url = str_replace( 'http://', "{$scheme}://", $url );
246
- }
247
- }
248
-
249
- if ( !empty($plugin) && is_string($plugin) )
250
- {
251
- $folder = dirname(plugin_basename($plugin));
252
- if ('.' != $folder) {
253
- $url .= '/' . ltrim($folder, '/');
254
- }
255
- }
256
-
257
- if ( !empty($path) && is_string($path) && strpos($path, '..') === false ) {
258
- $url .= '/' . ltrim($path, '/');
259
- }
260
-
261
- return apply_filters('plugins_url', $url, $path, $plugin);
262
- }
263
-
264
- /**
265
- * init functions; check rights and options; load external resources
266
- *
267
- * @package Secure WordPress
268
- */
269
- public function on_init()
270
- {
271
- global $wp_version;
272
-
273
- if ( is_admin() )
274
- {
275
- // update options
276
- add_action('admin_post_swp_update', array(&$this, 'swp_update') );
277
- // deinstall options
278
- add_action('admin_post_swp_uninstall', array(&$this, 'swp_uninstall') );
279
-
280
- // init default options when activate
281
- if ( function_exists('register_activation_hook') ) {
282
- register_activation_hook(__FILE__, array($this, 'activate') );
283
- }
284
- // uninstall options when deactivate
285
- if ( function_exists('register_deactivation_hook') ) {
286
- register_deactivation_hook(__FILE__, array($this, 'deactivate') );
287
- }
288
-
289
- // add options page
290
- add_action( 'admin_menu', array(&$this, 'admin_menu') );
291
- // hint in the footer of the options page
292
- add_action( 'in_admin_footer', array(&$this, 'admin_footer') );
293
-
294
- add_action( 'wp_ajax_set_toggle_status', array($this, 'set_toggle_status') );
295
-
296
- // Only load in the plug-in page
297
- /*$rev #2 07/27/2011 {c}$*/
298
- $url = $_SERVER['REQUEST_URI'];
299
- if (stristr($url, 'secure-wordpress'))
300
- {
301
- /* $rev #1 07/15/2011 {c}$ */
302
- $h1 = 'wsd_sw-styles'; $h2 = 'acx-json'; $h3 = 'acx-md5'; $h4 = 'wsd_sw_wsd'; $h5 = 'wsd_sw_scripts';
303
- wp_register_style($h1, $this->get_plugins_url('css/wsd_sw_styles.css', __FILE__));
304
- wp_register_script($h2, $this->get_plugins_url('js/json.js', __FILE__));
305
- wp_register_script($h3, $this->get_plugins_url('js/md5.js', __FILE__));
306
- wp_register_script($h4, $this->get_plugins_url('js/sw_wsd.js', __FILE__),array('jquery'));
307
- wp_register_script($h5, $this->get_plugins_url('js/sw_wsd_scripts.js', __FILE__),array('jquery'));
308
- wp_enqueue_style($h1);
309
- wp_enqueue_script($h2);
310
- wp_enqueue_script($h3);
311
- wp_enqueue_script($h4);
312
- wp_enqueue_script($h5);
313
- }
314
- /* $rev #2 09/12/2011 {c}$ */
315
- $h6 = 'swp-dashboard';
316
- wp_register_style($h6, $this->get_plugins_url('css/acx-wp-dashboard.css', __FILE__));
317
- wp_enqueue_style($h6);
318
-
319
- }
320
- /* End if admin*/
321
-
322
-
323
- /**
324
- * remove Error-information
325
- */
326
- if ( !is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_error') == '1') ) {
327
- add_action( 'login_head', array(&$this, 'remove_error_div') );
328
- add_filter( 'login_errors', create_function( '$a', "return null;" ) );
329
- }
330
-
331
-
332
- /**
333
- * add index.html in plugin-folder
334
- */
335
- if ( $GLOBALS['WPlize']->get_option('secure_wp_index') == '1' ) {
336
- $this->add_index( WP_PLUGIN_DIR, true );
337
- $this->add_index( WP_CONTENT_URL . '/themes', true );
338
- }
339
-
340
-
341
- /**
342
- * remove rdf
343
- */
344
- if ( function_exists('rsd_link') && !is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_rsd') == '1') ) {
345
- remove_action('wp_head', 'rsd_link');
346
- }
347
-
348
-
349
- /**
350
- * remove wlf
351
- */
352
- if ( function_exists('wlwmanifest_link') && !is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_wlw') == '1') ) {
353
- remove_action('wp_head', 'wlwmanifest_link');
354
- }
355
-
356
- /**
357
- * add wp-scanner
358
- * @link http://blogsecurity.net/wordpress/tools/wp-scanner
359
- */
360
-
361
- if ( !is_admin() && ($GLOBALS['WPlize']->get_option('secure_wp_wps') == '1') ) {
362
- add_filter( 'script_loader_src', array(&$this, 'filter_script_loader') );
363
- add_filter( 'style_loader_src', array(&$this, 'filter_script_loader') );
364
- }
365
-
366
- /**
367
- * block bad queries
368
- * @link http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
369
- */
370
- if ( !is_admin() && $GLOBALS['WPlize']->get_option('secure_wp_amurlr') == '1' ) {
371
- add_action( 'init', array(&$this, 'wp_against_malicious_url_request') );
372
- }
373
- }
374
-
375
- /**
376
- * install options
377
- *
378
- * @package Secure WordPress
379
- */
380
- public function activate()
381
- {
382
- // set default options
383
- $this->options_array = array('secure_wp_error' => '',
384
- 'secure_wp_version' => '1',
385
- 'secure_wp_admin_version' => '1',
386
- 'secure_wp_index' => '1',
387
- 'secure_wp_rsd' => '1',
388
- 'secure_wp_wlw' => '',
389
- 'secure_wp_rcu' => '1',
390
- 'secure_wp_rpu' => '1',
391
- 'secure_wp_rtu' => '1',
392
- 'secure_wp_wps' => '',
393
- 'secure_wp_amurlr' => '1'
394
- );
395
-
396
- // add class WPlize for options in WP
397
- $GLOBALS['WPlize'] = new WPlize('secure-wp',$this->options_array);
398
- }
399
-
400
- /**
401
- * update options
402
- *
403
- * @package Secure WordPress
404
- */
405
- public function update()
406
- {
407
- // init value
408
- $update_options = array();
409
-
410
- // set value
411
- foreach ($this->options_array as $key => $value) {
412
- $update_options[$key] = stripslashes_deep( trim($_POST[$key]) );
413
- }
414
-
415
- // save value
416
- if ($update_options) {
417
- $GLOBALS['WPlize']->update_option($update_options);
418
- }
419
-
420
- // update 10/04/2011
421
- if($_POST['show_rss_widget'] == 'on'){
422
- update_option('WSD-RSS-WGT-DISPLAY', 'yes');
423
- }
424
- else {
425
- update_option('WSD-RSS-WGT-DISPLAY', 'no');
426
- }
427
- }
428
-
429
- /**
430
- * uninstall options
431
- *
432
- * @package Secure WordPress
433
- */
434
- public function deactivate() { $GLOBALS['WPlize']->delete_option(); }
435
-
436
- /**
437
- * Add option for tabboxes via ajax
438
- *
439
- * @package Secure WordPress
440
- */
441
- public function set_toggle_status()
442
- {
443
- if ( current_user_can('manage_options') && $_POST['set_toggle_id'] )
444
- {
445
- $id = $_POST['set_toggle_id'];
446
- $status = $_POST['set_toggle_status'];
447
-
448
- $GLOBALS['WPlize']->update_option($id, $status);
449
- }
450
- }
451
-
452
- /**
453
- * @version WP 2.8
454
- * Add action link(s) to plugins page
455
- *
456
- * @package Secure WordPress
457
- *
458
- * @param $links, $file
459
- * @return $links
460
- */
461
- public function filter_plugin_meta($links, $file)
462
- {
463
- /* create link */
464
- if ( $file == FB_SWP_BASENAME ) {
465
- array_unshift(
466
- $links,
467
- sprintf( '<a href="options-general.php?page=%s">%s</a>', FB_SWP_FILENAME, __('Settings') )
468
- );
469
- }
470
-
471
- return $links;
472
- }
473
-
474
- /**
475
- * Display Images/ Icons in base64-encoding
476
- *
477
- * @package Secure WordPress
478
- *
479
- * @param $resourceID
480
- * @return $resourceID
481
- */
482
- public function get_resource_url($resourceID) { return trailingslashit( get_bloginfo('url') ) . '?resource=' . $resourceID; }
483
-
484
- /**
485
- * content of help
486
- *
487
- * @package Secure WordPress
488
- */
489
- public function contextual_help()
490
- {
491
- $content = __('<a href="http://wordpress.org/extend/plugins/secure-wordpress/" target="_blank">Documentation</a>', FB_SWP_TEXTDOMAIN);
492
- return $content;
493
- }
494
-
495
- /**
496
- * settings in plugin-admin-page
497
- *
498
- * @package Secure WordPress
499
- */
500
- public function admin_menu()
501
- {
502
- global $wp_version;
503
-
504
- if ( function_exists('add_management_page') && current_user_can('manage_options') )
505
- {
506
- if ( !isset($_GET['update']) ) {
507
- $_GET['update'] = 'false';
508
- }
509
-
510
- if ( !isset($_GET['uninstall']) ) {
511
- $_GET['uninstall'] = 'false';
512
- }
513
-
514
- // update, uninstall message
515
- if ( strpos($_SERVER['REQUEST_URI'], 'secure-wordpress.php') && $_GET['update'] == 'true' ) {
516
- $return_message = __('Options updated.', FB_SWP_TEXTDOMAIN);
517
- }
518
- elseif ( $_GET['uninstall'] == 'true' ) {
519
- $return_message = __('All entries from the database have been deleted. You can now deactivate this plugin.', FB_SWP_TEXTDOMAIN);
520
- }
521
- else { $return_message = ''; }
522
-
523
- $message = '<div class="updated fade"><p>' . $return_message . '</p></div>';
524
-
525
- $menutitle = '';
526
- if ( version_compare( $wp_version, '2.7alpha', '>' ) )
527
- {
528
- if ( $return_message !== '' ) {
529
- add_action('admin_notices', create_function( '', "echo '$message';" ) );
530
- }
531
-
532
- $menutitle = '<img src="' . $this->get_resource_url('secure_wp.gif') . '" alt="" />' . ' ';
533
- }
534
- $menutitle .= __('Secure WP', FB_SWP_TEXTDOMAIN);
535
-
536
- // added check for SSL login and to adjust url for logo accordingly
537
- if ( force_ssl_login() || force_ssl_admin() ) {
538
- $menutitle = str_replace( 'http://', 'https://', $menutitle );
539
- }
540
-
541
- if ( version_compare( $wp_version, '2.7alpha', '>' ) && function_exists('add_contextual_help') ) {
542
- $hook = add_submenu_page( 'options-general.php', __('Secure WordPress', FB_SWP_TEXTDOMAIN), $menutitle, 'manage_options', basename(__FILE__), array(&$this, 'display_page') );
543
- add_contextual_help( $hook, __('<a href="http://wordpress.org/extend/plugins/secure-wordpress/" target="_blank">Documentation</a>', FB_SWP_TEXTDOMAIN) );
544
- //add_filter( 'contextual_help', array(&$this, 'contextual_help') );
545
- }
546
- else { add_submenu_page( 'options-general.php', __('Secure WP', FB_SWP_TEXTDOMAIN), $menutitle, 9, basename(__FILE__), array(&$this, 'display_page') ); }
547
-
548
- $plugin = plugin_basename(__FILE__);
549
- add_filter( 'plugin_action_links_' . $plugin, array(&$this, 'filter_plugin_meta'), 10, 2 );
550
- if ( version_compare( $wp_version, '2.8alpha', '>' ) ) {
551
- add_filter( 'plugin_row_meta', array(&$this, 'filter_plugin_meta'), 10, 2 );
552
- }
553
- }
554
- }
555
-
556
- /**
557
- * credit in wp-footer
558
- *
559
- * @package Secure WordPress
560
- */
561
- public function admin_footer()
562
- {
563
- if( basename($_SERVER['QUERY_STRING']) == 'page=secure-wordpress.php') {
564
- $plugin_data = get_plugin_data( __FILE__ );
565
- printf('%1$s plugin | ' . __('Version', FB_SWP_TEXTDOMAIN) . ' <a href="http://wordpress.org/extend/plugins/secure-wordpress/changelog/" target="_blank" title="' . __('History', FB_SWP_TEXTDOMAIN) . '">%2$s</a> | ' . __('Author', FB_SWP_TEXTDOMAIN) . ' %3$s<br />', $plugin_data['Title'], $plugin_data['Version'], $plugin_data['Author']);
566
- }
567
- }
568
-
569
- /**
570
- * add index.php to plugin-derectory
571
- */
572
- public function add_index($path, $enable)
573
- {
574
- $file = trailingslashit($path) . 'index.php';
575
- if ($enable) {
576
- if (!file_exists($file)) {
577
- $fh = @fopen($file, 'w');
578
- if ($fh) {fclose($fh);}
579
- }
580
- }
581
- else {
582
- if (file_exists($file) && filesize($file) === 0) {
583
- @unlink($file);
584
- }
585
- }
586
- }
587
-
588
- /**
589
- * Replace the WP-version with a random string &lt; WP 2.4
590
- * and eliminate WP-version &gt; WP 2.4
591
- * @link http://bueltge.de/wordpress-version-verschleiern-plugin/602/
592
- *
593
- * @package Secure WordPress
594
- */
595
- public function replace_wp_version()
596
- {
597
- if ( !is_admin() )
598
- {
599
- global $wp_version;
600
-
601
- // random values
602
- $v = intval( rand(0, 9999) );
603
- $d = intval( rand(9999, 99999) );
604
- $m = intval( rand(99999, 999999) );
605
- $t = intval( rand(999999, 9999999) );
606
-
607
- if ( function_exists('the_generator') )
608
- {
609
- // eliminate version for wordpress >= 2.4
610
- remove_filter( 'wp_head', 'wp_generator' );
611
- $actions = array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' );
612
- foreach ( $actions as $action ) {
613
- remove_action( $action, 'the_generator' );
614
- }
615
-
616
- // for vars
617
- $wp_version = $v;
618
- $wp_db_version = $d;
619
- $manifest_version = $m;
620
- $tinymce_version = $t;
621
- }
622
- else {
623
- // for wordpress < 2.4
624
- add_filter( "bloginfo_rss('version')", create_function('$a', "return $v;") );
625
-
626
- // for rdf and rss v0.92
627
- $wp_version = $v;
628
- $wp_db_version = $d;
629
- $manifest_version = $m;
630
- $tinymce_version = $t;
631
- }
632
- }
633
- }
634
-
635
- /**
636
- * remove WP Version-Information on Dashboard
637
- *
638
- * @package Secure WordPress
639
- */
640
- public function remove_wp_version_on_admin()
641
- {
642
- if ( !current_user_can('update_plugins') && is_admin() ) {
643
- wp_enqueue_script( 'remove-wp-version', $this->get_plugins_url( 'js/remove_wp_version.js', __FILE__ ), array('jquery') );
644
- remove_action( 'update_footer', 'core_update_footer' );
645
- }
646
- }
647
-
648
- /**
649
- * remove core-Update-Information
650
- *
651
- * @package Secure WordPress
652
- */
653
- public function remove_core_update()
654
- {
655
- if ( !current_user_can('update_plugins') )
656
- {
657
- add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_notices', 'maintenance_nag' );" ) );
658
- add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_notices', 'update_nag', 3 );" ) );
659
- add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', '_maybe_update_core' );" ) );
660
- add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ) );
661
- add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
662
- remove_action( 'wp_version_check', 'wp_version_check' );
663
- remove_action( 'admin_init', '_maybe_update_core' );
664
- add_filter( 'pre_transient_update_core', create_function( '$a', "return null;" ) );
665
- // 3.0
666
- add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
667
- //wp_clear_scheduled_hook( 'wp_version_check' );
668
- }
669
- }
670
-
671
- /**
672
- * remove plugin-Update-Information
673
- *
674
- * @package Secure WordPress
675
- */
676
- public function remove_plugin_update()
677
- {
678
- if ( !current_user_can('update_plugins') )
679
- {
680
- wp_enqueue_style( 'remove-update-plugins', $this->get_plugins_url( 'css/remove_update_plugins.css', __FILE__ ) );
681
- add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', 'wp_plugin_update_rows' );" ), 2 );
682
- add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', '_maybe_update_plugins' );" ), 2 );
683
- add_action( 'admin_menu', create_function( '$a', "remove_action( 'load-plugins.php', 'wp_update_plugins' );" ) );
684
- add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', 'wp_update_plugins' );" ), 2 );
685
- add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_update_plugins' );" ), 2 );
686
- add_filter( 'pre_option_update_plugins', create_function( '$a', "return null;" ) );
687
- remove_action( 'load-plugins.php', 'wp_update_plugins' );
688
- remove_action( 'load-update.php', 'wp_update_plugins' );
689
- remove_action( 'admin_init', '_maybe_update_plugins' );
690
- remove_action( 'wp_update_plugins', 'wp_update_plugins' );
691
- // 3.0
692
- remove_action( 'load-update-core.php', 'wp_update_plugins' );
693
- add_filter( 'pre_transient_update_plugins', create_function( '$a', "return null;" ) );
694
- //wp_clear_scheduled_hook( 'wp_update_plugins' );
695
- }
696
- }
697
-
698
- /**
699
- * remove theme-Update-Information
700
- *
701
- * @package Secure WordPress
702
- */
703
- public function remove_theme_update()
704
- {
705
- if ( !current_user_can('edit_themes') )
706
- {
707
- remove_action( 'load-themes.php', 'wp_update_themes' );
708
- remove_action( 'load-update.php', 'wp_update_themes' );
709
- remove_action( 'admin_init', '_maybe_update_themes' );
710
- remove_action( 'wp_update_themes', 'wp_update_themes' );
711
- // 3.0
712
- remove_action( 'load-update-core.php', 'wp_update_themes' );
713
- //wp_clear_scheduled_hook( 'wp_update_themes' );
714
- add_filter( 'pre_transient_update_themes', create_function( '$a', "return null;" ) );
715
- }
716
- }
717
-
718
- /**
719
- * remove error-div
720
- *
721
- * @package Secure WordPress
722
- */
723
- public function remove_error_div()
724
- {
725
- global $wp_version;
726
-
727
- echo "\n";
728
- echo '<link rel="stylesheet" type="text/css" href="';
729
- echo $this->get_plugins_url( 'css/remove_login.css', __FILE__ );
730
- echo '" />';
731
- echo "\n";
732
- }
733
-
734
- /**
735
- * add string in blog for WP scanner
736
- *
737
- * @package Secure WordPress
738
- */
739
- public function wp_scanner() { echo '<!-- wpscanner -->' . "\n"; }
740
-
741
- /**
742
- * Removes the version parameter from urls
743
- *
744
- * @param string $src Original script URI
745
- * @return string
746
- */
747
- public function filter_script_loader($src)
748
- {
749
- if ( is_admin() ) { return $src; }
750
-
751
- // Separate the version parameter.
752
- $src = explode('?ver=' . $this->wpversion, $src);
753
-
754
- // Just the URI without the query string.
755
- return $src[0];
756
- }
757
-
758
- /**
759
- * block bad queries
760
- *
761
- * @package Secure WordPress
762
- * @see http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
763
- * @author Jeff Starr
764
- */
765
- public function wp_against_malicious_url_request()
766
- {
767
- global $user_ID;
768
-
769
- if ($user_ID)
770
- {
771
- if ( !current_user_can('manage_options') ) {
772
- if (strlen($_SERVER['REQUEST_URI']) > 255 ||
773
- stripos($_SERVER['REQUEST_URI'], "eval(") ||
774
- stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
775
- stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
776
- stripos($_SERVER['REQUEST_URI'], "base64"))
777
- {
778
- if (!headers_sent()) {
779
- header("HTTP/1.1 414 Request-URI Too Long");
780
- header("Status: 414 Request-URI Too Long");
781
- header("Connection: Close");
782
- }
783
- exit;
784
- }
785
- }
786
- }
787
- }
788
-
789
- /**
790
- * update options
791
- *
792
- * @package Secure WordPress
793
- */
794
- public function swp_update()
795
- {
796
- if ( !current_user_can('manage_options') ) {
797
- wp_die( __('Options not updated - you don&lsquo;t have the privileges to do this!', FB_SWP_TEXTDOMAIN) );
798
- }
799
-
800
- //cross check the given referer
801
- check_admin_referer('secure_wp_settings_form');
802
-
803
- $this->update();
804
-
805
- $referer = str_replace('&update=true&update=true', '', $_POST['_wp_http_referer'] );
806
- wp_redirect($referer . '&update=true' );
807
- }
808
-
809
- /**
810
- * uninstall options
811
- *
812
- * @package Secure WordPress
813
- */
814
- public function swp_uninstall()
815
- {
816
- if ( !current_user_can('manage_options') ) {
817
- wp_die( __('Entries were not deleted - you don&lsquo;t have the privileges to do this!', FB_SWP_TEXTDOMAIN) );
818
- }
819
-
820
- //cross check the given referer
821
- check_admin_referer('secure_wp_uninstall_form');
822
-
823
- if ( isset($_POST['deinstall_yes']) ) {
824
- $this->deactivate();
825
- }
826
- else { wp_die( __('Entries were not deleted - check the checkbox!', FB_SWP_TEXTDOMAIN) ); }
827
-
828
- wp_redirect( 'plugins.php' );
829
- }
830
-
831
- /**
832
- * display options page in backende
833
- *
834
- * @package Secure WordPress
835
- */
836
- public function display_page()
837
- {
838
- global $wp_version;
839
-
840
- if ( isset($_POST['action']) && 'deinstall' == $_POST['action'] ) {
841
- check_admin_referer('secure_wp_deinstall_form');
842
- if ( current_user_can('manage_options') && isset($_POST['deinstall_yes']) )
843
- {
844
- $this->deactivate();
845
- ?>
846
- <div id="message" class="updated fade"><p><?php _e('All entries in the database were cleared.', FB_SWP_TEXTDOMAIN); ?></p></div>
847
- <?php
848
- }
849
- else {
850
- ?>
851
- <div id="message" class="error"><p><?php _e('Entries were not deleted - check the checkbox or you don&lsquo;t have the privileges to do this!', FB_SWP_TEXTDOMAIN); ?></p></div>
852
- <?php
853
- }
854
- }
855
-
856
- $secure_wp_error = $GLOBALS['WPlize']->get_option('secure_wp_error');
857
- $secure_wp_version = $GLOBALS['WPlize']->get_option('secure_wp_version');
858
- $secure_wp_admin_version = $GLOBALS['WPlize']->get_option('secure_wp_admin_version');
859
- $secure_wp_index = $GLOBALS['WPlize']->get_option('secure_wp_index');
860
- $secure_wp_rsd = $GLOBALS['WPlize']->get_option('secure_wp_rsd');
861
- $secure_wp_wlw = $GLOBALS['WPlize']->get_option('secure_wp_wlw');
862
- $secure_wp_rcu = $GLOBALS['WPlize']->get_option('secure_wp_rcu');
863
- $secure_wp_rpu = $GLOBALS['WPlize']->get_option('secure_wp_rpu');
864
- $secure_wp_rtu = $GLOBALS['WPlize']->get_option('secure_wp_rtu');
865
- $secure_wp_wps = $GLOBALS['WPlize']->get_option('secure_wp_wps');
866
- $secure_wp_amurlr = $GLOBALS['WPlize']->get_option('secure_wp_amurlr');
867
-
868
- $secure_wp_win_settings = $GLOBALS['WPlize']->get_option('secure_wp_win_settings');
869
- $secure_wp_win_about = $GLOBALS['WPlize']->get_option('secure_wp_win_about');
870
- $secure_wp_win_opt = $GLOBALS['WPlize']->get_option('secure_wp_win_opt');
871
- ?>
872
- <div class="wrap">
873
- <div id="icon-acunetix" class="icon32" style="background: url('<?php echo $this->get_plugins_url( 'img/acunetix.png', __FILE__ ); ?>') no-repeat;"><br /></div>
874
- <h2><?php _e('Secure WordPress by WebsiteDefender', FB_SWP_TEXTDOMAIN); ?></h2>
875
- <br class="clear" />
876
-
877
- <div id="poststuff" class="ui-sortable meta-box-sortables poststuff poststuff_left">
878
- <div id="secure_wp_win_settings" class="postbox <?php echo $secure_wp_win_settings ?>" >
879
- <div class="handlediv" title="<?php _e('Click to toggle'); ?>"><br/></div>
880
- <h3><?php _e('Configuration', FB_SWP_TEXTDOMAIN); ?></h3>
881
- <div class="inside">
882
-
883
- <form name="secure_wp_config-update" method="post" action="admin-post.php">
884
- <?php if (function_exists('wp_nonce_field') === true) {wp_nonce_field('secure_wp_settings_form');} ?>
885
-
886
- <table class="form-table">
887
-
888
- <tr valign="top">
889
- <th scope="row">
890
- <label for="secure_wp_error"><?php _e('Error-Messages', FB_SWP_TEXTDOMAIN); ?></label>
891
- </th>
892
- <td>
893
- <input type="checkbox" name="secure_wp_error" id="secure_wp_error" value="1" <?php if ( $secure_wp_error == '1') { echo "checked='checked'"; } ?> />
894
- <?php _e('Deactivates tooltip and error message at login of WordPress', FB_SWP_TEXTDOMAIN); ?>
895
- </td>
896
- </tr>
897
-
898
- <tr valign="top">
899
- <th scope="row">
900
- <label for="secure_wp_version"><?php _e('WordPress Version', FB_SWP_TEXTDOMAIN); ?></label>
901
- </th>
902
- <td>
903
- <input type="checkbox" name="secure_wp_version" id="secure_wp_version" value="1" <?php if ( $secure_wp_version == '1') { echo "checked='checked'"; } ?> />
904
- <?php _e('Removes version of WordPress in all areas, including feed, not in admin', FB_SWP_TEXTDOMAIN); ?>
905
- </td>
906
- </tr>
907
-
908
- <tr valign="top">
909
- <th scope="row">
910
- <label for="secure_wp_admin_version"><?php _e('WordPress Version in Backend', FB_SWP_TEXTDOMAIN); ?></label>
911
- </th>
912
- <td>
913
- <input type="checkbox" name="secure_wp_admin_version" id="secure_wp_admin_version" value="1" <?php if ( $secure_wp_admin_version == '1') { echo "checked='checked'"; } ?> />
914
- <?php _e('Removes version of WordPress on admin-area for non-admins. Show WordPress version of your blog only to users with the rights to edit plugins.', FB_SWP_TEXTDOMAIN); ?>
915
- </td>
916
- </tr>
917
-
918
- <tr valign="top">
919
- <th scope="row">
920
- <label for="secure_wp_index"><?php _e('index.php', FB_SWP_TEXTDOMAIN); ?></label>
921
- </th>
922
- <td>
923
- <input type="checkbox" name="secure_wp_index" id="secure_wp_index" value="1" <?php if ( $secure_wp_index == '1') { echo "checked='checked'"; } ?> />
924
- <?php _e('creates an <code>index.php</code> file in <code>/plugins/</code> and <code>/themes/</code> to keep it from showing your directory listing', FB_SWP_TEXTDOMAIN); ?>
925
- </td>
926
- </tr>
927
-
928
- <tr valign="top">
929
- <th scope="row">
930
- <label for="secure_wp_rsd"><?php _e('Really Simple Discovery', FB_SWP_TEXTDOMAIN); ?></label>
931
- </th>
932
- <td>
933
- <input type="checkbox" name="secure_wp_rsd" id="secure_wp_rsd" value="1" <?php if ( $secure_wp_rsd == '1') { echo "checked='checked'"; } ?> />
934
- <?php _e('Remove Really Simple Discovery link in <code>wp_head</code> of the frontend', FB_SWP_TEXTDOMAIN); ?>
935
- </td>
936
- </tr>
937
-
938
- <tr valign="top">
939
- <th scope="row">
940
- <label for="secure_wp_wlw"><?php _e('Windows Live Writer', FB_SWP_TEXTDOMAIN); ?></label>
941
- </th>
942
- <td>
943
- <input type="checkbox" name="secure_wp_wlw" id="secure_wp_wlw" value="1" <?php if ( $secure_wp_wlw == '1') { echo "checked='checked'"; } ?> />
944
- <?php _e('Remove Windows Live Writer link in <code>wp_head</code> of the frontend', FB_SWP_TEXTDOMAIN); ?>
945
- </td>
946
- </tr>
947
-
948
- <tr valign="top">
949
- <th scope="row">
950
- <label for="secure_wp_rcu"><?php _e('Core Update', FB_SWP_TEXTDOMAIN); ?></label>
951
- </th>
952
- <td>
953
- <input type="checkbox" name="secure_wp_rcu" id="secure_wp_rcu" value="1" <?php if ( $secure_wp_rcu == '1') { echo "checked='checked'"; } ?> />
954
- <?php _e('Remove WordPress Core update for non-admins. Show message of a new WordPress version only to users with the right to update.', FB_SWP_TEXTDOMAIN); ?>
955
- </td>
956
- </tr>
957
-
958
- <tr valign="top">
959
- <th scope="row">
960
- <label for="secure_wp_rpu"><?php _e('Plugin Update', FB_SWP_TEXTDOMAIN); ?></label>
961
- </th>
962
- <td>
963
- <input type="checkbox" name="secure_wp_rpu" id="secure_wp_rpu" value="1" <?php if ( $secure_wp_rpu == '1') { echo "checked='checked'"; } ?> />
964
- <?php _e('Remove the plugin update for non-admins. Show message for a new version of a plugin in the install of your blog only to users with the rights to edit plugins.', FB_SWP_TEXTDOMAIN); ?>
965
- </td>
966
- </tr>
967
-
968
- <?php if ( version_compare($wp_version, "2.8alpha", ">=") ) { ?>
969
- <tr valign="top">
970
- <th scope="row">
971
- <label for="secure_wp_rtu"><?php _e('Theme Update', FB_SWP_TEXTDOMAIN); ?></label>
972
- </th>
973
- <td>
974
- <input type="checkbox" name="secure_wp_rtu" id="secure_wp_rtu" value="1" <?php if ( $secure_wp_rtu == '1') { echo "checked='checked'"; } ?> />
975
- <?php _e('Remove the theme update for non-admins. Show message for a new version of a theme in the install of your blog only to users with the rights to edit themes.', FB_SWP_TEXTDOMAIN); ?>
976
- </td>
977
- </tr>
978
- <?php } ?>
979
-
980
- <tr valign="top">
981
- <th scope="row">
982
- <label for="secure_wp_wps"><?php _e('WP Version on Scripts/Styles', FB_SWP_TEXTDOMAIN); ?></label>
983
- </th>
984
- <td>
985
- <input type="checkbox" name="secure_wp_wps" id="secure_wp_wps" value="1" <?php if ( $secure_wp_wps == '1') { echo "checked='checked'"; } ?> />
986
- <?php _e('Removes version of WordPress on the url form scripts and stylesheets only on frontend.', FB_SWP_TEXTDOMAIN); ?>
987
- </td>
988
- </tr>
989
-
990
- <tr valign="top">
991
- <th scope="row">
992
- <label for="secure_wp_amurlr"><?php _e('Block bad queries', FB_SWP_TEXTDOMAIN); ?></label>
993
- </th>
994
- <td>
995
- <input type="checkbox" name="secure_wp_amurlr" id="secure_wp_amurlr" value="1" <?php if ( $secure_wp_amurlr == '1') { echo "checked='checked'"; } ?> />
996
- <?php _e('Protect WordPress against malicious URL requests', FB_SWP_TEXTDOMAIN); ?>
997
- </td>
998
- </tr>
999
-
1000
- <?php
1001
- //# 10/04/2011
1002
- $_checked = false;
1003
- $wsdRssWidgetVisible = get_option('WSD-RSS-WGT-DISPLAY');
1004
- if (empty($wsdRssWidgetVisible) || $wsdRssWidgetVisible=='yes') {
1005
- add_option('WSD-RSS-WGT-DISPLAY', 'yes');
1006
- $_checked = true;
1007
- }
1008
- else {
1009
- if (strtolower($wsdRssWidgetVisible) == 'no') {
1010
- $_checked = false;
1011
- }
1012
- }
1013
- ?>
1014
- <tr valign="top">
1015
- <th scope="row">
1016
- <label for="show_rss_widget"><?php _e('Dashboard RSS widget', FB_SWP_TEXTDOMAIN); ?></label>
1017
- </th>
1018
- <td>
1019
- <input type="checkbox" name="show_rss_widget" id="show_rss_widget" <?php echo ($_checked ? 'checked="checked"' : '');?> />
1020
- <label for="show_rss_widget"><?php _e("Show the WebsiteDefender News dashboard widget", FB_SWP_TEXTDOMAIN);?></label>
1021
- </td>
1022
- </tr>
1023
- </table>
1024
-
1025
- <p class="submit">
1026
- <input type="hidden" name="action" value="swp_update" />
1027
- <input type="submit" name="Submit" value="<?php _e('Save Changes', FB_SWP_TEXTDOMAIN); ?> &raquo;" class="button-primary" />
1028
- </p>
1029
- </form>
1030
-
1031
- </div>
1032
- </div>
1033
- </div>
1034
-
1035
- <div id="poststuff" class="ui-sortable meta-box-sortables poststuff">
1036
- <div id="secure_wp_win_opt" class="postbox <?php echo $secure_wp_win_opt ?>" >
1037
- <div class="handlediv" title="<?php _e('Click to toggle', FB_SWP_TEXTDOMAIN); ?>"><br/></div>
1038
- <h3><?php _e("About WebsiteDefender.com", FB_SWP_TEXTDOMAIN);?></h3>
1039
- <div class="inside">
1040
- <?php
1041
- /*
1042
- * $rev #1 07/15/2011 k$
1043
- * >> Display the WSD form
1044
- */
1045
- global $swwsd;
1046
- $swwsd->wsd_render_main();
1047
- ?>
1048
- </div>
1049
- </div>
1050
- </div>
1051
-
1052
- <div id="poststuff" class="ui-sortable meta-box-sortables poststuff poststuff_left poststuff_clear">
1053
- <div id="secure_wp_win_opt" class="postbox <?php echo $secure_wp_win_opt ?>" >
1054
- <div class="handlediv" title="<?php _e('Click to toggle'); ?>"><br/></div>
1055
- <h3 id="uninstall"><?php _e('Clear Options', FB_SWP_TEXTDOMAIN) ?></h3>
1056
- <div class="inside">
1057
-
1058
- <p><?php _e('Click this button to delete the settings of this plugin. Deactivating Secure WordPress plugin removes any data that may have been created.', FB_SWP_TEXTDOMAIN); ?></p>
1059
- <form name="deinstall_options" method="post" action="admin-post.php">
1060
- <?php if (function_exists('wp_nonce_field') === true) wp_nonce_field('secure_wp_uninstall_form'); ?>
1061
- <p id="submitbutton">
1062
- <input type="hidden" name="action" value="swp_uninstall" />
1063
- <input type="submit" value="<?php _e('Delete Options', FB_SWP_TEXTDOMAIN); ?> &raquo;" class="button-secondary" />
1064
- <input type="checkbox" name="deinstall_yes" />
1065
- </p>
1066
- </form>
1067
-
1068
- </div>
1069
- </div>
1070
- </div>
1071
-
1072
- <script type="text/javascript">var wordpress_site_name = "<?php echo htmlentities(get_bloginfo('siteurl'));?>"</script>
1073
- <script type="text/javascript">
1074
- jQuery(document).ready(function($) {
1075
- $('.postbox h3').click(function() { $($(this).parent().get(0)).toggleClass('closed'); } );
1076
- $('.postbox .handlediv').click(function() { $($(this).parent().get(0)).toggleClass('closed'); } );
1077
- $('.postbox.close-me').each(function() {
1078
- $(this).addClass("closed");
1079
- });
1080
- });
1081
- </script>
1082
- <script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
1083
- <script type="text/javascript" src="https://dashboard.websitedefender.com/swpuser.php?FIELDS"></script>
1084
- <script type="text/javascript" src="<?php echo $this->get_plugins_url( 'js/prepare_new_user_form.js', __FILE__ )?>"></script>
1085
- <script type="text/javascript" src="<?php echo $this->get_plugins_url( 'js/verify_form.js', __FILE__ )?>"></script>
1086
-
1087
- </div>
1088
- <?php
1089
- }
1090
- }
1091
- /* End class: SecureWP.php */
1092
-
1093
- }
1094
- /* End if (!class_exists('SecureWP')) */
1095
-
1096
-
1097
- if ( class_exists('WPlize') && function_exists('is_admin') ) {
1098
- $SecureWP = new SecureWP();
1099
- }
1100
-
1101
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
swpa-settings.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(! defined('SWPA_PLUGIN_PREFIX')) return;
2
+
3
+ /**
4
+ * Informational alert. Value: 0
5
+ */
6
+ define('SWPA_PLUGIN_ALERT_INFO', 0);
7
+ /**
8
+ * Low alert. Value: 1
9
+ */
10
+ define('SWPA_PLUGIN_ALERT_LOW', 1);
11
+ /**
12
+ * Medium alert. Value: 2
13
+ */
14
+ define('SWPA_PLUGIN_ALERT_MEDIUM', 2);
15
+ /**
16
+ * Critical alert. Value: 3
17
+ */
18
+ define('SWPA_PLUGIN_ALERT_CRITICAL', 3);
19
+
20
+ define('SWPA_PLUGIN_ALERT_TYPE_OVERWRITE', 0);
21
+ define('SWPA_PLUGIN_ALERT_TYPE_STACK', 1);
22
+
23
+ //#! The max number of stacked alerts to keep
24
+ define('SWPA_PLUGIN_ALERT_STACK_MAX_KEEP', 10);
25
+
26
+ //#! Database settings
27
+ define('SWPA_PLUGIN_ALERT_TABLE_NAME', '_wsd_plugin_alerts');
28
+ //
29
+ define('SWPA_PLUGIN_LIVE_TRAFFIC_TABLE_NAME', '_wsd_plugin_live_traffic');
30
+
31
+ define('SWPA_PLUGIN_BACKUPS_DIR', SWPA_PLUGIN_DIR.'res/backups/');
32
+
33
+ define('SWPA_PLUGIN_TEXT_DOMAIN', 'WSDWP_SECURITY');
34
+
35
+ define('SWPA_PLUGIN_SETTINGS_OPTION_NAME', 'wsdplugin_settings');
36
+
37
+ /**
38
+ * Set the path to the WebsiteDefender.com feed
39
+ */
40
+ define('SWPA_PLUGIN_BLOG_FEED','http://www.acunetix.com/blog/');
41
+
42
+ /**
43
+ * Sets the list of files to check for permissions
44
+ * @type array
45
+ */
46
+ $_wsdplugin_base_path = trailingslashit(ABSPATH);
47
+ $_wsdplugin_wpAdmin = $_wsdplugin_base_path.'wp-admin';
48
+ $_wsdplugin_wpContent = $_wsdplugin_base_path.'wp-content';
49
+ $_wsdplugin_wpIncludes = $_wsdplugin_base_path.'wp-includes';
50
+ $_wsdpluginWpConfigPath ='';
51
+ //$_wsdplugin_base_path.'wp-config.php';
52
+ if(! is_file($_wsdpluginWpConfigPath)){
53
+ // try one level up
54
+ $_tmpPath = realpath($_wsdplugin_base_path.'../wp-config.php');
55
+ if(is_file($_tmpPath)){
56
+ $_wsdpluginWpConfigPath = $_tmpPath;
57
+ }
58
+ // not found
59
+ else { $_wsdpluginWpConfigPath = ''; }
60
+ }
61
+
62
+ $acxFileList = array(
63
+ //@@ Directories
64
+ 'root directory' => array( 'filePath' => $_wsdplugin_base_path, 'suggestedPermissions' => '0755'),
65
+ 'wp-admin' => array( 'filePath' => $_wsdplugin_wpAdmin, 'suggestedPermissions' => '0755'),
66
+ 'wp-content' => array( 'filePath' => $_wsdplugin_wpContent, 'suggestedPermissions' => '0755'),
67
+ 'wp-includes' => array( 'filePath' => $_wsdplugin_wpIncludes, 'suggestedPermissions' => '0755'),
68
+
69
+ //@@ Files
70
+ '.htaccess' => array( 'filePath' => $_wsdplugin_base_path.'.htaccess', 'suggestedPermissions' => '0644'),
71
+ 'readme.html' => array( 'filePath' => $_wsdplugin_base_path.'readme.html', 'suggestedPermissions' => '0400'),
72
+ 'wp-config.php' => array( 'filePath' => $_wsdpluginWpConfigPath, 'suggestedPermissions' => '0644'),
73
+ 'wp-admin/index.php' => array( 'filePath' => $_wsdplugin_wpAdmin.'/index.php', 'suggestedPermissions' => '0644'),
74
+ 'wp-admin/.htaccess' => array( 'filePath' => $_wsdplugin_wpAdmin.'/.htaccess', 'suggestedPermissions' => '0644'),
75
+ );
uninstall.php DELETED
@@ -1,12 +0,0 @@
1
- <?php if( !defined( 'ABSPATH') && !defined('WP_UNINSTALL_PLUGIN') ) { exit(); }
2
- /*
3
- * Delete options
4
- */
5
- delete_option('secure-wp');
6
-
7
- // this is a shared option so if there are
8
- // any other plug-ins installed, then don't
9
- // delete it.
10
- $__1 = ABSPATH.'wp-content/plugins/websitedefender-wordpress-security';
11
- $__2 = ABSPATH.'wp-content/plugins/wp-security-scan';
12
- if (!is_dir($__1) || !is_dir($__2)) { delete_option('wsd_feed_data'); }