Sinject

Upload code into sites >:)

  1. // ==UserScript==
  2. // @name Sinject
  3. // @version 1.0
  4. // @namespace https://ironswordx-dev.repl.co
  5. // @license MIT
  6. // @description Upload code into sites >:)
  7. // @author ironswordX
  8. // @match *://*/*
  9. // @icon data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIGZpbGw9IiMwMDAwMDAiIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgDQoJIHdpZHRoPSI4MDBweCIgaGVpZ2h0PSI4MDBweCIgdmlld0JveD0iMCAwIDkyLjE3OSA5Mi4xOCINCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBkPSJNNzMuNDM3LDM2LjU0di05LjE5MkM3My40MzcsMTIuMjY4LDYxLjE2OSwwLDQ2LjA5LDBTMTguNzQ0LDEyLjI2OCwxOC43NDQsMjcuMzQ4aDExLjM1NQ0KCQljMC04LjgxOCw3LjE3My0xNS45OTIsMTUuOTkxLTE1Ljk5MmM4LjgxNywwLDE1Ljk5MSw3LjE3NCwxNS45OTEsMTUuOTkydjkuMTkySDkuODg0djU1LjY0aDcyLjQxMVYzNi41NEg3My40Mzd6IE01MC42MDksNzEuMTE1DQoJCVY4My4zM2gtOS4wMzdWNzEuMTE1Yy0yLjEwMi0xLjQ0MS0zLjQ4Mi0zLjg1OC0zLjQ4Mi02LjZjMC00LjQxOCwzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOA0KCQlDNTQuMDksNjcuMjU3LDUyLjcxLDY5LjY3NCw1MC42MDksNzEuMTE1eiIvPg0KPC9nPg0KPC9zdmc+
  10. // @grant GM_info
  11. // ==/UserScript==
  12.  
  13. 'use strict';
  14. const Meta = GM_info.script
  15. const disabled_urls = ['about:blank', 'about:blank#blocked']
  16. const css = "body {\nbackground-color:#A9A9A9\n}\nh1 {\nfont-family: Verdana, Tahoma, sans-serif;\n}"
  17. if (disabled_urls.includes(window.location.href)) return;
  18. function openNewWin() {
  19. let win = window.open('', '', 'height=400,width=200');
  20. return win;
  21. }
  22. function createElm(doc, headOrBody = "body", type, args=[]) {
  23. let el = doc.createElement(type);
  24. if (args.length > 0) {
  25. for (let i = 0; i < args.length; i++) {
  26. let inf = args[i]
  27. el.setAttribute(inf.key, inf.value)
  28. }
  29. }
  30. if (headOrBody === "head") {
  31. doc.head.appendChild(el)
  32. } else if (headOrBody === "body") {
  33. doc.body.appendChild(el)
  34. }
  35. void 0;
  36. }
  37. function setInner(doc, id, type, string) {
  38. let element = doc.getElementById(id);
  39. if (type === 'text') {
  40. element.innerText = string;
  41. } else if (type === 'html') {
  42. element.innerHTML = string;
  43. } else {
  44. element.innerText = string;
  45. }
  46. void 0;
  47. }
  48. function createBreak(docu) {
  49. createElm(docu, "body", "br")
  50. createElm(docu, "body", "hr")
  51. createElm(docu, "body", "br")
  52. }
  53. function erudaLoaderFunc() {
  54. let script = document.createElement('script');
  55. script.src="https://cdn.jsdelivr.net/npm/eruda";
  56. document.body.append(script);
  57. script.onload = function () {
  58. eruda.init();
  59. }
  60. void 0;
  61. }
  62.  
  63.  
  64. let sinjectWinOn = false
  65. document.addEventListener('keyup', function(event) {
  66. if (sinjectWinOn) return;
  67. if (event.key.toLowerCase() === 'alt') {
  68. let sinjectWinOn = true;
  69. const editor = openNewWin();
  70. const editDoc = editor.document;
  71.  
  72. editDoc.writeln(`<head><title>${Meta.name}</title></head><body><h1>${Meta.name} v${Meta.version}</h1></body>`);
  73. createElm(editDoc, "head", 'style', [{key: 'id', value: 'cssLoader'}]);
  74. setInner(editDoc, 'cssLoader', 'text', css)
  75. createBreak(editDoc)
  76.  
  77. createElm(editDoc, "body", 'textarea', [{key:'id',value:'textInput'}, {key: 'style', value:'resize:vertical;min-height:60px'}]);
  78. createElm(editDoc, "body", 'button', [{key: 'id', value:'submitButton'}, {key: 'style', value: 'data-inline=true'}]);
  79. createElm(editDoc, "body", 'button', [{key: 'id', value:'erudaBtn'}, {key: 'style', value: 'data-inline=true'}]);
  80.  
  81. setInner(editDoc, 'submitButton', 'text', 'Inject!')
  82. editDoc.getElementById('submitButton').onclick = function() {
  83. let code = editDoc.getElementById('textInput').value;
  84. createElm(document, "body", 'script', [{key: 'id', value: 'scriptInjector'}]);
  85. document.getElementById('scriptInjector').innerText = code;
  86. sinjectWinOn = false;
  87. editor.window.close();
  88. }
  89.  
  90. setInner(editDoc, 'erudaBtn', 'text', 'Eruda console');
  91. editDoc.getElementById('erudaBtn').onclick = function() {
  92. erudaLoaderFunc();
  93. sinjectWinOn = false;
  94. editor.window.close();
  95. };
  96. }
  97. }, false)