테스트 사이트 - 개발 중인 베타 버전입니다

[HTML Purifier] 게시글 본문 작성후 magnet 링크가 사라지는 현상 채택완료

해피정 8년 전 조회 3,234

magnet 링크가 사라지는 현상을 다시 정리했습니다.

아직 문제 해결이 안된 상태이므로 여러분의 주옥같은 의견 부탁드립니다.

magnet:?xt=urn:btih:test1234  를 본문에 입력후 저장하면

magnet:?xt=urn:btih:test1234  이렇게 결과가 표시됩니다.

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 추가

/**

Validates magnet (BitTorrent hash links)

@todo require xt= GET parameter

출처 : https://github.com/foocorp/gnu-social/commit/90045d66ea8dd098cb57b5844f05050a528bf037">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" target="_self" style="font-size: 11pt;">https://github.com/foocorp/gnu-social/commit/90045d66ea8dd098cb57b5844f05050a528bf037 

http://htmlpurifier.org/docs/enduser-uri-filter.html" target="_self">http://htmlpurifier.org/docs/enduser-uri-filter.html

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

답변에 대한 댓글 1개

해피정
8년 전
와우 ... 어떻게 한것인지 공유부탁드려도 될까요?

댓글을 작성하려면 로그인이 필요합니다.

오우..어려운거당

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

해피정
8년 전
정규식으로 처리하면 된듯한데... 지식이 부족하여 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인