[HTML Purifier] 게시글 본문 작성후 magnet 링크가 사라지는 현상
본문
magnet 링크가 사라지는 현상을 다시 정리했습니다.
아직 문제 해결이 안된 상태이므로 여러분의 주옥같은 의견 부탁드립니다.
<a href="magnet:?xt=urn:btih:test1234">magnet:?xt=urn:btih:test1234</a> 를 본문에 입력후 저장하면
<a rel="noreferrer">magnet:?xt=urn:btih:test1234</a> 이렇게 결과가 표시됩니다.
SafeIframe 으로는 처리가 안됩니다.
주소가 http 가 아닌 magnet 으로 시작하기때문에 추가적인 purifier 예외규칙이 필요합니다.
마그넷은 아래와 같은 규칙으로 링크를 생성합니다.
magnet:?xt=urn:tree:tiger:hash_links
magnet:?xt=urn:sha1:hash_links
magnet:?xt=urn:bitprint:hash_links
magnet:?xt=urn:ed2k:hash_links
magnet:?xt=urn:aich:hash_links
magnet:?xt=urn:kzhash:hash_links
magnet:?xt=urn:btih:hash_links
magnet:?xt=urn:md5:hash_links
1. 그누보드5 / plugin / htmlpurifier / magnet.php 추가
<?php
/**
Validates magnet (BitTorrent hash links)
@todo require xt= GET parameter
출처 : https://github.com/foocorp/gnu-social/commit/90045d66ea8dd098cb57b5844f05050a528bf037
*/
class HTMLPurifier_URIScheme_magnet extends HTMLPurifier_URIScheme
{
/**
* @type bool
*/
public $browsable = false;
/**
* @type bool
*/
public $may_omit_host = true;
/**
* @param HTMLPurifier_URI $uri
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool
*/
public function doValidate(&$uri, $config, $context)
{
$uri->userinfo = null;
$uri->host = null;
$uri->port = null;
return true;
}
}
2. 그누보드5 / lib / common.lib.php 에 mgnet.php 를 include
include_once(G5_PLUGIN_PATH.'/htmlpurifier/HTMLPurifier.standalone.php');
를 아래와 같이 변경
include_once(G5_PLUGIN_PATH.'/htmlpurifier/HTMLPurifier.standalone.php');
include_once(G5_PLUGIN_PATH.'/htmlpurifier/magnet.php');
3. 그누보드5 / lib / common.lib.php 에 magnet 예외 규칙 추가
$config->set('Attr.AllowedFrameTargets', array('_blank'));
아래에 내용 추가
$config->set(여기에_무언가를_꾸며야하는데_방법을_찾는중입니다);
관련자료
https://github.com/foocorp/gnu-social/commit/90045d66ea8dd098cb57b5844f05050a528bf037