서버 점검 안내

dsclub은 서비스의 안정성과 성능 향상을 위해
매일 04시 30분에 정기 점검이 진행됩니다.

점검 시간: 오전 4시 30분 ~ 4시 35분

해당 시간 동안 일시적으로 서비스에 접속이 불가능하오니, 양해 부탁드립니다.

그누보드 세이프 서치 플러그인+스킨 > 자료실 (zip)

그누보드 세이프 서치 플러그인+스킨

페이지 정보

작성자 profile_image tak2 (192.♡.0.1) 작성일 23-11-02 07:39 조회 6,409 댓글 3

본문

d85bd4b200376bde7d030651d74177ad_1698880126_2107.png
 


아래의 코드를 원하는 곳에 삽입하세요.


---------------------------------23.11.04 이전 코드--------------------------------------

<script>

function getTextNodes(node){

    let all = [];

    for (node=node.firstChild;node;node=node.nextSibling){

        if (node.nodeType==3) all.push(node); // Node.TEXT_NODE

        else all = all.concat(getTextNodes(node));

    }

    return all;

}

let currentDomain = window.location.hostname;

let targetTextsUrl = `https://${currentDomain}/data.txt`;

fetch(targetTextsUrl)

  .then(response => response.text())

  .then(data => {

    let targetTexts = data.split('\n');

    let textNodes = getTextNodes(document.body);

    for(let node of textNodes) {

      let containsTargetText = targetTexts.some(target => node.nodeValue.includes(target));

      if(containsTargetText) {

        node.parentNode.style.filter = 'blur(10px)';

      }

   }

});            

</script>

 

 

===================================23.11.04에 수정된 코드, 이 코드를 사용해주세요.===============================

<?php
function loadTargetTexts() {
  $currentDomain = $_SERVER['HTTP_HOST'];
  $targetTextsUrl = "https://{$currentDomain}/data.txt";

  try {
    $data = file_get_contents($targetTextsUrl);
    $targetTexts = preg_split('/\r
|\r|
/', $data);
    $targetTexts = array_filter($targetTexts, 'trim');
    return $targetTexts;
  } catch (Exception $error) {
    echo "텍스트 파일을 불러오는 중 오류가 발생했습니다: ", $error->getMessage(), "
";
    return [];
  }
}
$targetTexts = loadTargetTexts();
echo "<script>var targetTexts = " . json_encode($targetTexts) . ";</script>";
?>

<script>
  function blurMatchingTexts(targetTexts) {
    let textNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false); 
    let currentNode;
    while (currentNode = textNodes.nextNode()) {
      let nodeValue = currentNode.nodeValue.trim();
      if (targetTexts.includes(nodeValue)) {
        currentNode.parentElement.style.filter = "blur(5px)";
      }
    }
  }
  function initialize() {
    blurMatchingTexts(targetTexts);
    const observer = new MutationObserver(mutations => {
      blurMatchingTexts(targetTexts);
    }); 
    observer.observe(document.body, { subtree: true, childList: true, characterData: true });
  }
  window.addEventListener("load", initialize);
</script>


=============코드 끝=================


search.skin.php에 삽입한다면 검색 시에만 검열을 하고, 

head.skin.php에 삽입하면

사이트 전체에서 세이프 서치 - 특정 키워드가 블러처리되도록 할 수 있습니다.

board.skin.php에 삽입하면 게시물에서 바로 검열이 가능합니다.


설치방법은 

https://dsclub.kr/bbs/board.php?bo_table=code&wr_id=561 참고하세요.


기본 제공 데이터에는 강도 높은 비하발언과 성희롱적인 말, 정치적인 발언이 담겨있습니다. 주의해주세요.

제작자의 동의 없는 무단 수정 및 배포를 금지합니다.

좋아요50 이 글을 좋아요하셨습니다
url 복사 카카오톡 공유 라인 공유 페이스북 공유 트위터 공유

첨부파일

2kat님의 댓글

no_profile 2kat 아이피 (222.♡.250.95) 작성일

최고!

2kat님의 댓글

no_profile 2kat 아이피 (222.♡.250.95) 작성일

좋은 자료 감사합니다.

bot님의 댓글

bot 아이피 (222.♡.250.95) 작성일

하드웨어 (Hardware)

전체 41건
게시물 검색

접속자집계

오늘
1,336
어제
779
최대
4,271
전체
290,801