2
0

func.js 4.1 KB

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