func.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. "use strict";
  2. function opennamu_do_id_check(data) {
  3. if(data.match(/\.|\:/)) {
  4. return 0;
  5. } else {
  6. return 1;
  7. }
  8. }
  9. function opennamu_do_ip_render() {
  10. let temp = {};
  11. for(let for_a = 0; for_a < document.getElementsByClassName('opennamu_render_ip').length; for_a++) {
  12. let ip = document.getElementsByClassName('opennamu_render_ip')[for_a].innerHTML.replace(/&amp;/g, '&');
  13. if(temp[ip]) {
  14. document.getElementsByClassName('opennamu_render_ip')[for_a].innerHTML = temp[ip];
  15. } else {
  16. fetch('/api/ip/' + opennamu_do_url_encode(ip)).then(function(res) {
  17. return res.json();
  18. }).then(function(data) {
  19. document.getElementsByClassName('opennamu_render_ip')[for_a].innerHTML = data["data"];
  20. temp[ip] = data["data"];
  21. });
  22. }
  23. }
  24. }
  25. function opennamu_do_url_encode(data) {
  26. return encodeURIComponent(data);
  27. }
  28. function opennamu_cookie_split_regex(data) {
  29. return new RegExp('(?:^|; )' + data + '=([^;]*)');
  30. }
  31. function opennamu_get_main_skin_set(set_name) {
  32. return fetch("/api/setting/" + opennamu_do_url_encode(set_name)).then(function(res) {
  33. return res.json();
  34. }).then(function(text) {
  35. if(
  36. document.cookie.match(opennamu_cookie_split_regex(set_name)) &&
  37. document.cookie.match(opennamu_cookie_split_regex(set_name))[1] !== '' &&
  38. document.cookie.match(opennamu_cookie_split_regex(set_name))[1] !== 'default'
  39. ) {
  40. return document.cookie.match(opennamu_cookie_split_regex(set_name))[1];
  41. } else {
  42. if(text[set_name]) {
  43. return text[set_name][0][0];
  44. } else {
  45. return '';
  46. }
  47. }
  48. });
  49. }
  50. function opennamu_insert_v(name, data) {
  51. document.getElementById(name).value = data;
  52. }
  53. function opennamu_do_trace_spread() {
  54. if(document.getElementsByClassName('opennamu_trace')) {
  55. document.getElementsByClassName('opennamu_trace')[0].innerHTML = '' +
  56. '<style>.opennamu_trace_button { display: none; } .opennamu_trace { white-space: pre-wrap; overflow-x: unset; text-overflow: unset; }</style>' +
  57. '' + document.getElementsByClassName('opennamu_trace')[0].innerHTML
  58. }
  59. }
  60. function opennamu_do_render(to_obj, data, name = '', do_type = '', option = '') {
  61. let url;
  62. if(do_type === '') {
  63. url = "/api/render";
  64. } else {
  65. url = "/api/render/" + do_type;
  66. }
  67. fetch(url, {
  68. method : 'POST',
  69. headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
  70. body : new URLSearchParams({
  71. 'name' : name,
  72. 'data': data,
  73. 'option' : option
  74. })
  75. }).then(function(res) {
  76. return res.json();
  77. }).then(function(text) {
  78. if(document.getElementById(to_obj)) {
  79. if(text["data"]) {
  80. document.getElementById(to_obj).innerHTML = text.data;
  81. eval(text.js_data);
  82. } else {
  83. document.getElementById(to_obj).innerHTML = '';
  84. }
  85. }
  86. });
  87. }
  88. function opennamu_xss_filter(str) {
  89. return str.replace(/[&<>"'\/]/g, function(match) {
  90. switch(match) {
  91. case '&':
  92. return '&amp;';
  93. case '<':
  94. return '&lt;';
  95. case '>':
  96. return '&gt;';
  97. case "'":
  98. return '&#x27;';
  99. case '"':
  100. return '&quot;';
  101. case '/':
  102. return '&#x2F;';
  103. }
  104. });
  105. }