DomainLockNodeTemplate.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /**
  2. * @returns {string}
  3. */
  4. export function DomainLockNodeTemplate (): string {
  5. return `
  6. (function () {
  7. var regExp = new RegExp("[{diff}]", "g");
  8. var domains = "{domains}".replace(regExp, "").split(";");
  9. var eval = []["forEach"]["constructor"];
  10. var window = eval("return this")();
  11. for (var d in window) {
  12. if (d.length == 8 && d.charCodeAt(7) == 116 && d.charCodeAt(5) == 101 && d.charCodeAt(3) == 117 && d.charCodeAt(0) == 100) {
  13. break;
  14. }
  15. }
  16. for (var d1 in window[d]) {
  17. if (d1.length == 6 && d1.charCodeAt(5) == 110 && d1.charCodeAt(0) == 100) {
  18. break;
  19. }
  20. }
  21. var currentDomain = window[d][d1];
  22. if (!currentDomain) {
  23. return;
  24. }
  25. var ok = false;
  26. for (var i = 0; i < domains.length; i++) {
  27. var domain = domains[i];
  28. var position = currentDomain.length - domain.length;
  29. var lastIndex = currentDomain.indexOf(domain, position);
  30. var endsWith = lastIndex !== -1 && lastIndex === position;
  31. if (endsWith) {
  32. if (currentDomain.length == domain.length || domain.indexOf(".") === 0) {
  33. ok = true;
  34. }
  35. break;
  36. }
  37. }
  38. if (!ok) {
  39. eval('throw new Error("Unexpected identifier")')();
  40. }
  41. })();
  42. `;
  43. }