· 4 years ago · Apr 30, 2021, 08:08 AM
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <title>Captcha</title>
6 <link rel="stylesheet"
7 href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
8 integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
9 crossorigin="anonymous">
10 <link href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII="
11 rel="icon" type="image/x-icon"/>
12 <link href="https://fonts.googleapis.com/css?family=Noto+Sans"
13 rel="stylesheet">
14 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
15 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
16
17 <script src="https://www.google.com/recaptcha/api.js?hl=en"
18 async defer>
19 </script>
20
21
22 <style>
23 html, body {
24 height: 100%;
25 }
26
27 .wraper {
28 padding-bottom: 56px;
29 position: relative;
30 min-height: 100%;
31 }
32 .invisible_mode .wraper {
33 display: none;
34 }
35
36 .header {
37 height: 63px;
38 background-color: white;
39 }
40
41 .middle {
42 height: 186px;
43 background-color: rgba(55, 171, 99, 0.75);
44 }
45
46 .bottom {
47 background-color: #f2f2f2;
48 position: absolute;
49 bottom: 0px;
50 top: 249px;
51 width: 100%;
52 }
53
54 .captcha_absolute {
55 margin-top: -153px;
56 }
57
58 .captcha_div {
59 width: 485px;
60 margin: 0 auto;
61 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.18), 0 0 8px 0 rgba(0, 0, 0, 0.12);
62 background-color: white;
63 padding: 47px 48px 18px 48px;
64 position: relative;
65 }
66
67 .cap_head {
68 border-bottom: 1px solid #d8d8d8;
69 padding-bottom: 17px;
70 margin: 0 10px 20px 10px;
71 }
72
73 .logo_shield {
74 display: inline-block;
75 }
76
77 .logo_shield img {
78 width: 54px;
79 height: 72px;
80 }
81
82 .cap_side {
83 width: 295px;
84 }
85
86 h4#text {
87 font-size: 20px;
88 line-height: 1.38;
89 color: #000000;
90 font-weight: bold;
91 font-family: Noto Sans, sans-serif;
92 margin: 6px 0 0 0;
93 }
94
95 .cap_text {
96 font-family: Noto Sans, sans-serif;
97 font-weight: normal;
98 font-style: normal;
99 font-stretch: normal;
100 line-height: 1.65;
101 color: #000000;
102 }
103
104 p.cap_note {
105 font-size: 20px;
106 margin: 0;
107 }
108
109 .captcha_passed h4#text, .captcha_passed p.cap_note { font-size: 18px }
110
111 .cap_mess {
112 font-size: 13px;
113 }
114
115 .powered_span {
116 position: absolute;
117 bottom: 15px;
118 width: 100%;
119 text-align: center;
120 height: 18px;
121 opacity: 0.45;
122 font-family: Noto Sans;
123 font-size: 13px;
124 font-weight: normal;
125 font-style: normal;
126 font-stretch: normal;
127 color: #1d1d1d;
128 }
129
130 /* A few hacks for re-captcha */
131
132 .invisible_mode .re-captcha-wrapper { /* shift reCAPTCHA below our text */
133 top: 350px !important;
134 }
135 .invisible_mode .re-captcha-wrapper > div:first-child { /* hide reCAPTCHA mask */
136 display: none !important;
137 }
138 .visible_mode #re-captcha { /* align to center */
139 width: 305px;
140 margin: 0 auto;
141 }
142
143 /* Imunify360 preloader */
144
145 .big_loader {
146 position: absolute;
147 left: 0;
148 right: 0;
149 top: 50%;
150 width: 90px;
151 height: 90px;
152 margin: -45px auto 0 auto;
153 opacity: 0.55;
154 }
155 .visible_mode .big_loader {
156 display: none;
157 }
158
159 .rot {
160 -webkit-animation: spin 2s ease-in-out infinite;
161 animation: spin 2s ease-in-out infinite
162 }
163
164 @keyframes spin {
165 0% {
166 -webkit-transform: rotate(0deg);
167 -moz-transform: rotate(0deg);
168 -ms-transform: rotate(0deg);
169 -o-transform: rotate(0deg);
170 transform: rotate(0deg);
171 }
172 100% {
173 -webkit-transform: rotate(360deg);
174 -moz-transform: rotate(360deg);
175 -ms-transform: rotate(360deg);
176 -o-transform: rotate(360deg);
177 transform: rotate(360deg);
178 }
179 }
180 </style>
181
182<!--
183This whole tempalte goes to inside <head></head> tags
184Modify this file to add javascript or css files for your page from customize/static folder
185Jinja2 (which is index.html template engine) is not allowed to use here.
186
187Please, restart captcha server after your changes.
188service imunify360-captcha restart
189service imunify360-captchaserver-nginx restart
190
191Example:
192<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
193Add your custom css from customize/static/ folder
194<link type="text/css" rel="stylesheet" href="static/my.css">
195-->
196</head>
197<body class="invisible_mode">
198<div class="wraper">
199
200<!--
201You can add your css, javascript, images and other static files in /customize/static/ folder
202And add css, javascript into the end of `head` section of this template
203Please, restart webshield after your changes
204systemctl restart imunify360-webshield
205-->
206<div class="header">
207 <!-- Header of the index page -->
208</div>
209
210<div class="middle">
211 <!-- Body of the index page -->
212</div>
213
214<div class="bottom">
215 <!-- Footer of the index page -->
216 <span class="powered_span">Powered by Imunify360</span>
217</div>
218
219 <div class="captcha_absolute">
220 <div class="captcha_div">
221 <style>
222 .dropdown {
223 position: absolute;
224 top: 10px;
225 right: 0;
226 }
227
228 .dropdown .dropdown-toggle {
229 background-color: #fff;
230 border: none;
231 outline: none;
232 color: #858585;
233 font-size: 13px;
234 height: 32px;
235 line-height: 1;
236 transition: all 0.4s;
237 font-family: 'Noto Sans', sans-serif;
238 margin-right: 22px;
239 }
240
241 .dropdown .dropdown-toggle:hover {
242 background-color: #e7e7e7;
243 }
244
245 .dropdown .dropdown-menu-content {
246 background-color: #ffffff;
247 box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.24);
248 border-width: 0px;
249 border-radius: 0;
250 padding: 11px 0 0;
251 overflow-y: scroll;
252 max-height: 365px;
253 margin: 0;
254 }
255
256 .dropdown .glyphicon {
257 margin-left: 6px;
258 top: 2px;
259 transition: 0.3s all;
260 }
261
262 .dropdown li {
263 height: 35px;
264 text-align: left;
265 padding-left: 24px;
266 font-size: 13px;
267 color: #4d4d4e;
268 line-height: 2.85;
269 font-family: 'Noto Sans', sans-serif;
270 }
271 .dropdown li:last-child {
272 margin-bottom: 14px;
273 }
274
275 .dropdown li.active {
276 font-weight: bold;
277 }
278
279 .dropdown li:focus, .dropdown li:hover {
280 color: #4d4d4e;
281 background-color: rgba(56, 171, 99, 0.11);
282 }
283
284 .dropdown .dropdown-menu-content > li:hover {
285 cursor: pointer;
286 }
287
288 .dropdown .dropdown-menu-container {
289 max-height: 365px;
290 overflow: hidden;
291 width: 164px;
292 padding: 0;
293 border: 0;
294 border-radius: 0;
295 box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.24);
296 z-index: 5000000000;
297 }
298
299 .dropdown.open .glyphicon {
300 transform: rotate(180deg);
301 }
302</style>
303
304
305<div class="dropdown">
306 <button type="button" class="dropdown-toggle" data-toggle="dropdown"
307 aria-haspopup="true" aria-expanded="false">
308 <span class="dropdown-title">English</span>
309 <span class="glyphicon glyphicon-menu-down" aria-hidden="true"></span>
310 </button>
311 <div class="dropdown-menu dropdown-menu-container">
312 <ul class="dropdown-menu-content"></ul>
313 </div>
314</div>
315
316<script>
317 (function () {
318 var items = {
319 English: 'en',
320 Dutch: 'nl',
321 Ukrainian: 'uk',
322 Arabic: 'ar',
323 Italian: 'it',
324 Chinese: 'zh',
325 Polish: 'pl',
326 Danish: 'da',
327 Hungarian: 'hu',
328 Russian: 'ru',
329 French: 'fr',
330 Spanish: 'es',
331 Romanian: 'ro',
332 Greek: 'el',
333 Swedish: 'sv',
334 Turkish: 'tr',
335 Indonesian: 'id',
336 Portuguese: 'pt',
337 Hebrew: 'he',
338 German: 'de',
339 Malay: 'ms',
340 Norwegian: 'no',
341 Farsi: 'fa',
342 };
343 var currentLocale = $('html').attr('lang');
344
345 var currentLocaleName = Object.keys(items).find(function (key) {
346 return items[key] === currentLocale;
347 });
348
349 $('.dropdown-title').text(currentLocaleName);
350
351 $('.dropdown-menu-content')
352 .append(Object.keys(items).sort().map(function (item) {
353 return $('<li>').text(item);
354 }))
355 .click(function (e) {
356 var nextLocaleName = e.target.innerText;
357 if (nextLocaleName === currentLocaleName) {
358 e.stopPropagation();
359 } else {
360 document.cookie = 'locale=' + items[nextLocaleName] + ';path=/';
361 location.reload(true);
362 }
363
364 });
365
366 $([].find.call($('.dropdown-menu li'), function (item) {
367 return item.innerText === currentLocaleName;
368 })).addClass('active');
369
370 function insertParam(key, value) {
371 key = encodeURIComponent(key);
372 value = encodeURIComponent(value);
373
374 var kvp = document.location.search.substr(1).split('&');
375 if (kvp == '') {
376 document.location.search = '?' + key + '=' + value;
377 }
378 else {
379
380 var i = kvp.length;
381 var x;
382 while (i--) {
383 x = kvp[i].split('=');
384
385 if (x[0] === key) {
386 x[1] = value;
387 kvp[i] = x.join('=');
388 break;
389 }
390 }
391
392 if (i < 0) {
393 kvp[kvp.length] = [key, value].join('=');
394 }
395
396 //this will reload the page, it's likely better to store this until finished
397 document.location.search = kvp.join('&');
398 }
399 }
400 })();
401</script>
402
403 <div class="cap_head clearfix">
404 <div class="logo_shield">
405 <img src="/a9bc224bd710f56d27affffddc764239b58c3faa0/shield.png">
406 </div>
407 <div class="cap_side pull-right">
408 <h4 id="text">speedtechms.com</h4>
409 <p class="cap_note cap_text count_down">
410 is protected by Imunify360
411 </p>
412 </div>
413 </div>
414
415 <p class="cap_mess cap_text text-center">
416 We have noticed an unusual activity from your <b>IP 107.189.31.102</b> and blocked access to this website.
417 </p>
418
419 <p class="cap_mess cap_text text-center">
420 <b>Please confirm that you are not a robot</b>
421 </p>
422
423 </div>
424 </div>
425</div>
426
427<form class="form-group form-captcha">
428 <div id="re-captcha"
429 class="g-recaptcha"
430 data-sitekey="6LfsZ_wUAAAAAHoeRpleA1IY4j62iofQtA_0jJhB"
431 data-size="invisible"
432 data-callback="check"
433 ></div>
434</form>
435
436<!-- imunify360 preloader -->
437<div class="big_loader">
438 <svg class="rot" width="90px" height="90px" viewBox="0 0 47 47"
439 version="1.1"
440 xmlns="http://www.w3.org/2000/svg"
441 xmlns:xlink="http://www.w3.org/1999/xlink">
442 <title>Loader</title>
443 <defs>
444 <polygon id="path-1"
445 points="0 0.375484146 0 15.7255695 15.7013244 15.7255695 15.7013244 0.375484146 0 0.375484146"></polygon>
446 </defs>
447 <g id="Page-1" stroke="none" stroke-width="1" fill="none"
448 fill-rule="evenodd">
449 <g id="Logo" transform="translate(-5.000000, -2.000000)">
450 <g id="Group-2" transform="translate(5.000000, 2.000000)">
451 <path d="M22.6150244,4.52988293 C23.1538049,3.06256585 23.6031707,1.59582195 24.231939,0.158882927 C25.1902805,2.22459024 25.8190488,4.43989512 26.7768171,6.47579756 C29.1417195,7.40376098 31.7164024,7.7929439 34.1116829,8.69110244 C28.9623171,11.2663585 23.7229634,13.7510537 18.4836098,16.176139 C19.7709512,12.2545049 21.2382683,8.4217122 22.6150244,4.52988293 L22.6150244,4.52988293 Z"
452 id="Fill-1" fill="#467C45"></path>
453 <path d="M13.7718598,8.94461585 C16.1424939,7.68077439 18.4500793,6.28968902 20.8207134,5.02527439 C18.9240915,10.8412378 16.7747012,16.5614817 14.8465549,22.3774451 C12.7292622,18.3950549 10.895689,14.2544695 8.9044939,10.2090305 C8.27228659,8.85004268 7.5455061,7.55353049 7.00844512,6.16359146 C9.31545732,6.95342073 11.4648476,8.24935976 13.7718598,8.94461585"
454 id="Fill-3" fill="#467C45"></path>
455 <path d="M24.2134256,15.0745049 C29.4602305,12.4969561 34.7379866,9.91940732 40.0157427,7.4031878 C39.1565598,9.61276098 38.1747183,11.7300537 37.2232549,13.9086756 C38.4504134,16.2099561 39.9544134,18.388578 41.0898646,20.7511878 C35.4435598,18.9405415 29.8287793,17.0381878 24.2134256,15.0745049"
456 id="Fill-5" fill="#467C45"></path>
457 <g id="Group-9"
458 transform="translate(0.000000, 11.919659)">
459 <mask id="mask-2" fill="white">
460 <use xlink:href="#path-1"></use>
461 </mask>
462 <g id="Clip-8"></g>
463 <path d="M8.34869024,0.375484146 C9.93064146,3.33419146 11.2781659,6.43963049 12.7426171,9.45622805 C13.7387878,11.5362646 14.793422,13.5876427 15.7013244,15.7255695 C10.4579585,13.9091915 5.21401951,12.03435 -0.000114634146,10.0718134 C2.05069024,9.1341061 4.21842195,8.4898622 6.29845854,7.61119146 C6.97193415,5.17980122 7.67521463,2.77706951 8.34869024,0.375484146"
464 id="Fill-7" fill="#467C45"
465 mask="url(#mask-2)"></path>
466 </g>
467 <path d="M29.1793195,18.0496049 C33.5600634,19.4670561 37.9081366,21.0776659 42.2888805,22.5593122 C43.6742341,23.0745927 45.1558805,23.4609098 46.5085634,24.1372512 C44.2216122,25.039422 41.9025634,25.9100683 39.6477098,26.8110927 C38.8103073,29.4195927 38.2302585,32.1261049 37.3607585,34.7346049 C35.5890878,31.4497634 34.0432463,28.0353854 32.3684415,24.6852024 C31.3052098,22.4945439 30.1456854,20.3044585 29.1793195,18.0496049"
468 id="Fill-10" fill="#467C45"></path>
469 <path d="M28.9972232,29.3489207 C29.5789915,27.69475 30.0684793,26.0113476 30.7419549,24.3887012 C31.538089,25.7660305 32.1811866,27.2356402 32.9154183,28.6444939 C34.7220524,32.4709817 36.68115,36.205189 38.4568329,40.0316768 C36.2827963,39.1449817 34.1402841,38.1654329 31.9364427,37.2460671 C29.6403207,38.4709329 27.4662841,39.9405427 25.1094061,41.1035061 C26.3033207,37.1549329 27.7419793,33.2671159 28.9972232,29.3489207"
470 id="Fill-12" fill="#467C45"></path>
471 <path d="M4.97133902,25.64555 C9.93385122,27.1873793 14.7737049,29.036428 19.6748878,30.6705378 C20.4148512,30.9170012 21.1542415,31.1944159 21.8328756,31.5337329 C16.5304732,33.9685622 11.3214976,36.6498549 5.95776585,38.99355 C6.82096098,36.8355622 7.89966829,34.7698549 8.7319122,32.581489 C7.68358293,30.1764646 6.11194878,28.01905 4.97133902,25.64555"
472 id="Fill-14" fill="#467C45"></path>
473 <path d="M15.4549183,35.8770488 C19.4671134,33.9317073 23.4483573,31.8952317 27.4915037,30.0433171 C26.4110768,33.6542927 25.0222841,37.203939 23.8186256,40.8143415 C23.1090402,42.7275854 22.5530646,44.7033049 21.7511988,46.5855976 C20.7630524,44.4866463 20.0534671,42.2650366 19.1277963,40.1351341 C16.6276256,39.2094634 14.0042232,38.684439 11.4736744,37.9748537 C12.6773329,37.0801341 14.1584061,36.586061 15.4549183,35.8770488"
474 id="Fill-16" fill="#467C45"></path>
475 </g>
476 </g>
477 </g>
478 </svg>
479</div>
480
481<script>
482 $(document).ready(function () {
483 var visibleByDefault = false;
484 var captchaIsPassed = false;
485 var captchaIsVisible = visibleByDefault;
486 var reCaptchaWrapper;
487
488 function do_reload() {
489 $.ajax({
490 type: 'POST',
491 url: '/ungraylistcheck'
492 }).done(function(data){
493 if (data.ungraylisted && data.redirect == 'pending') {
494 setTimeout(do_reload, 1000);
495 }
496 else {
497 location.reload(true);
498 }
499 }).fail(function(){
500 location.reload(true);
501 });
502 }
503
504 window.check = function (value) {
505 $.ajax({
506 type: 'POST',
507 url: '/captchacheck',
508 data: {
509 'captcha_value': value
510 }
511 }).done(function (data) {
512 if (data['success']) {
513 captchaIsPassed = true;
514 $("#text").text(
515 "IP 107.189.31.102 has been unblocked"
516 );
517 setTimeout(do_reload, 1000);
518 } else {
519 grecaptcha.reset();
520 }
521 }).fail(function () {
522 grecaptcha.reset();
523 });
524 };
525
526 function updateUI() {
527 // change the size of our block to fit the captcha block
528 var blockWithText = $('.captcha_div');
529 var captchaBlock = reCaptchaWrapper.find('> div:last-child');
530 var currentPadding;
531 (function update () {
532 var space = captchaBlock.offset().top + captchaBlock.height() - blockWithText.height() - 100;
533 var padding = captchaIsPassed ? '' : space + 'px';
534 if (currentPadding !== padding) {
535 blockWithText.css({'padding-bottom': padding});
536 }
537 setTimeout(update, 500);
538 })();
539 }
540
541 function makeVisible() {
542 $('.big_loader').hide(); // hide our preloader
543 $('.wraper').show(); // show our text and stuff
544 // add class to reCAPTCHA wrapper so our css would apply to it
545 reCaptchaWrapper.addClass('re-captcha-wrapper');
546 captchaIsVisible = true;
547 }
548
549 function executeCaptcha() {
550 try {
551 grecaptcha.execute();
552 } catch (e) {
553 setTimeout(executeCaptcha, 2000); // retry
554 }
555 }
556
557 if (!visibleByDefault) {
558 /**
559 * Detecting captcha when css is changed to visible.
560 * Invisible reCaptcha has no API calls when captcha will be visible,
561 * (captcha is shown to user).
562 * When captcha changed css "visibility" to the "visible", we should:
563 * 1. hide the loader and captcha mask
564 * 2. display some additional text
565 * 3. display a dropdown so user can switch to a different language
566 */
567 (function checkVisibility () {
568 reCaptchaWrapper = reCaptchaWrapper && reCaptchaWrapper.length
569 ? reCaptchaWrapper
570 : $('body > div:has(> div > iframe[src^="https://www.google.com/recaptcha"])');
571 if (reCaptchaWrapper.css('visibility') === 'visible') {
572 makeVisible(reCaptchaWrapper);
573 updateUI(reCaptchaWrapper);
574 } else {
575 setTimeout(checkVisibility, 100);
576 }
577 })();
578
579 // start captcha challenge after loads all scripts
580 setTimeout(executeCaptcha, 2000);
581 }
582
583 });
584
585</script>
586
587</body>
588