가온 위키:기능 구현 불가-누가 해결책을 알려주세요! 편집하기

귀하는 로그인되어 있지 않습니다. 이대로 편집하면 귀하의 IP 주소가 편집 기록에 남게 됩니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
==이 문서는...==
==이 문서는...==
답답한 우리의 [[사용자:Admin|가온 위키 관리자]]가 구현하지 못해, 착한 유저가 해결책을 제시한 경우, 감사의 표시로 이곳과 [[가온 위키 커뮤니티]]에 표시하는 곳입니다.<br/>
# 답답한 우리의 [[사용자:Admin|가온 위키 관리자]]가 구현하지 못해, 착한 유저가 해결책을 제시한 경우, 감사의 표시로 이곳과 [[가온 위키 커뮤니티]]에 표시하는 곳입니다.<br/>


==구현 못한 부분==
==구현 못한 부분==
6번째 줄: 6번째 줄:


==해결됨==
==해결됨==
===니코동 영상 가져오기===
# 어디서는<ref>크흠... 트리위키라 하면 알겠지...?</ref> SSL을 적용해도 잘만 가져오는데, 여기는 못 가져오네...<br/>
# [https://www.mediawiki.org/wiki/Extension:EmbedVideo EmbedVideo 확장 기능]을 수정해 보았지만 어렵네...
# 그래도 수정을 완료했다!(<del>스스로 토닥이는 관리자. 잘했어. 하얗게 불태웠어.</del>)


===리버티 스킨 관련 문제===
====수정 전====
리버티 스킨과 관련된 문제는 [[가온 위키:기능 구현 불가-누가 해결책을 알려주세요!/리버티 스킨]] 문서를 참고하자.
* ./extensions/EmbedVideo/classes/VideoService.php 파일이다.
<syntaxhighlight lang="PHP" highlight="2" start='215' line>
'nico' => [
'embed' => '<iframe srcdoc="&lt;script type=&quot;text/javascript&quot; src=&quot;http://ext.nicovideo.jp/thumb_watch/%1$s?w=%2$d&amp;h=%3$d&quot;&gt;&lt;/script&gt;" width="%2$d" height="%3$d" frameborder="0" allowFullScreen="true"></iframe>',
'default_width' => 640,
'default_ratio' => 1.59609120521173, // (490 / 307)
'https_enabled' => false,
'url_regex' => [
'#nicovideo\.jp/watch/((?:[a-zA-Z]{2})?[\d]+)#is'
],
'id_regex' => [
'#^((?:[a-zA-Z]{2})?[\d]+)$#is'
]
],
</syntaxhighlight><br/>


===영상 가져오기(Embed) 관련 문제===
====수정 후====
외부 서비스들 중에서 가져오지 못하는 것들은 [[가온 위키:기능 구현 불가-누가 해결책을 알려주세요!/영상 가져오기]] 문서를 참고하자!
<syntaxhighlight lang="PHP" highlight="2" start='215' line>
'nico' => [
'embed' => '<iframe src="https://embed.nicovideo.jp/watch/%1s/" width="%2$d" height="%3$d" frameborder="0" allowFullScreen="true"></iframe>',
'default_width' => 640,
'default_ratio' => 1.59609120521173, // (490 / 307)
'https_enabled' => true,
'url_regex' => [
'#nicovideo\.jp/watch/((?:[a-zA-Z]{2})?[\d]+)#is'
],
'id_regex' => [
'#^((?:[a-zA-Z]{2})?[\d]+)$#is'
]
],
</syntaxhighlight><br/>


===이미지 관련 문제===
# '''<nowiki>'embed'=> '<iframe srcdoc="&lt;script type=&quot;text/javascript&quot; src=&quot;http://ext.nicovideo.jp/thumb_watch/%1$s?w=%2$d&amp;h=%3$d&quot;&gt;&lt;/script&gt;</nowiki>"'''를 '''<nowiki>'embed'=> '<iframe src="https://embed.nicovideo.jp/watch/%1s/"</nowiki>'''로 변경한다.
====이미지 크기 설정시 파일 링크만 뜨는 현상====
<nowiki>[[파일:updates.png|100px]]</nowiki> 이렇게 하면 일반 문서처럼 링크로 뜬다. 서버 이전 전에는 이러지 않았는데...


[https://m.mediawiki.org/w/index.php?title=Topic:Rnjccxoqss9wfedy&topic_showPostId=rnq05rzcc6o7z4hc#flow-post-rnq05rzcc6o7z4hc 미디어위키 헬프 데스크]에서 찾았다.
===최근바뀜에서 문서명에 / 가 포함되어 있으면, 오류 뜨는 경우===
# 같은 스킨을 쓰는 [[리브레 위키]]에서는 잘 되던데... 서버 설정 오류인가?<br/>
# [https://quiple.mcsv.io/w/퀴플위키 퀴플위키]에서 해결책을 찾았다. 감사합니다. 퀴플위키!<ref>최신 버전 기준이다.</ref>
====수정 전====
* 리버티 스킨/js 폴더에 있는 live-recent.js를 수정한다.


=====수정 전=====
<syntaxhighlight lang="JavaScript" highlight="5" start='55' line>
[[미디어위키]]의 루트 폴더에 있는 [[미디어위키/LocalSettings.php|LocalSettings.php]]를 수정한다.
var recentChanges, html, time, line, text;
recentChanges = data.query.recentchanges;
html = recentChanges.map( function ( item ) {
time = new Date( item.timestamp );
line = '<li><a class="recent-item" href = "' + ( mw.config.get( 'wgArticlePath' ) ).replace( '$1', encodeURIComponent( item.title ) ) + '" title="' + item.title + '">[' + timeFormat( time ) + '] ';
text = '';
if ( item.type === 'new' ) {
text += '[New]';
}
text += item.title;
if ( text.length > 13 ) {
text = text.substr( 0, 13 );
text += '...';
}
</syntaxhighlight><br/>


=====수정 후=====
====수정 후====
[[LocalSettings.php]]의 하단 부분에 추가하자.
<syntaxhighlight lang="JavaScript" highlight="5" start='55' line>
<syntaxhighlight lang='php'>
var recentChanges, html, time, line, text;
$wgGenerateThumbnailOnParse = true;
recentChanges = data.query.recentchanges;
</syntaxhighlight>
html = recentChanges.map( function ( item ) {
time = new Date( item.timestamp );
line = '<li><a class="recent-item" href = "' + ( mw.config.get( 'wgArticlePath' ) ).replace( '$1', encodeURI( item.title ) ) + '" title="' + item.title + '">[' + timeFormat( time ) + '] ';
text = '';
if ( item.type === 'new' ) {
text += '[New]';
}
text += item.title;
if ( text.length > 13 ) {
text = text.substr( 0, 13 );
text += '...';
}
</syntaxhighlight><br/>
# 59번째 줄의 encodeURIComponent( item.title ) )에서 encodeURIComponent를 encodeURI로 변경


그리고 [[미디어위키]] 버전이 1.30 이상인 경우, 썸네일을 재생성하자. [[미디어위키]]의 루트 폴더에서 '''maintenance''' 폴더로 이동한 뒤, 아래의 명령어를 입력하자.
===이미지 크기 설정시 파일 링크만 뜨는 현상===
# <nowiki>[[파일:updates.png|100px]]</nowiki> 이렇게 하면 일반 문서처럼 링크로 뜬다.
# 서버 이전 전에는 이러지 않았는데...
# [https://m.mediawiki.org/w/index.php?title=Topic:Rnjccxoqss9wfedy&topic_showPostId=rnq05rzcc6o7z4hc#flow-post-rnq05rzcc6o7z4hc 미디어위키 헬프 데스크]에서 찾았다.


<syntaxhighlight lang='console'>
====수정 전====
root@gaon:/var/www/html/w/maintenance# php rebuildImages.php
# [[미디어위키]]의 루트 폴더에 있는 [[LocalSettings.php]]를 수정한다.
</syntaxhighlight>
# 아직 수정 전이므로 아래 내용은 없을 것이다.


=====하고 싶은말=====
<syntaxhighlight lang="PHP">
이 오류는 [[미디어위키]] 1.27 버전에서는 없던 오류이므로 1.30 이상 버전의 오류같다. 물론 썸네일은 [[Imagemagick]]가 미리 설치 및 [[미디어위키]]에서 미리 설정 되어 있어야 한다.


====SVG 파일 업로드시 썸네일의 흑백화====
</syntaxhighlight>
SVG 파일을 업로드하면 원래 가지고 있던 색상값은 표시되지 않고 흑백으로만 표시가 된다. 이는 SVG를 png로 변환하는 프로그램인 ImageMagick의 특정 버전에서 나타난 오류이다. [https://bbs.gaonwiki.com/free/3877 zlzleking님]이 보고해 주셨다.


=====수정 전=====
====수정 ====
먼저 Inkscape를 설치한다. 우분투 기준으로 아래의 명령어를 입력하면 된다.
# [[LocalSettings.php]]의 하단 부분에 추가하자.
<syntaxhighlight lang='console'>
<syntaxhighlight lang="PHP">
root@gaon:/# apt update
$wgGenerateThumbnailOnParse = true;
root@gaon:/# apt install inkscape
</syntaxhighlight>
</syntaxhighlight>
 
# 그리고 [[미디어위키]] 버전이 1.30 이상인 경우, 썸네일을 재생성하자.
이후 [[미디어위키]]의 루트 폴더에 있는 [[미디어위키/LocalSettings.php|LocalSettings.php]]를 수정한다.
# [[미디어위키]]의 루트 폴더에서 '''maintenance''' 폴더로 이동한 뒤, 아래의 명령어를 입력하자.
 
<syntaxhighlight lang="Sh">
<syntaxhighlight lang='php'>
php rebuildImages.php
$wgSVGConverter = 'ImageMagick';
</syntaxhighlight>
</syntaxhighlight>
====하고 싶은말====
# 이 오류는 [[미디어위키]] 1.27 버전에서는 없던 오류이므로 1.30 이상 버전의 오류같다.
# 물론 썸네일은 [[Imagemagick]]가 미리 설치 및 [[미디어위키]]에서 미리 설정 되어 있어야 한다


=====수정 후=====
===로그인시 '이러한 명령이 없습니다' 라는 오류 뜸===
[[LocalSettings.php]]의 하단 부분에 추가하자. Inkscape의 경로는 자신의 환경에 맞춰 수정하자.
# 로그인시, 특히 [[가온 위키:대문]] 문서가 아닌 다른 문서를 보다가 상단의 로그인 아이콘을 눌러 로그인 시도시 심심치 않게 '이러한 명령이 없습니다'라는 오류가 발생한다.
<syntaxhighlight lang='php'>
# 오류 내용을 자세히 보면, 'URL에 지정한 명령이 올바르지 않습니다. URL을 잘못 입력했거나, 올바르지 않은 링크를 따라갔을 수 있습니다. 가온 위키에 사용하는 소프트웨어의 버그일 수도 있습니다.' 라고 나타나 있다.
$wgSVGConverterPath = '/usr/bin/inkscape';
# 오류 해결은 [https://issue.librewiki.net/T515 리브레 위키 이슈 트래커]에서 찾았다.
$wgSVGConverters = [
        'Inkscape' => '/usr/bin/inkscape -w $width -z -w $width -f $input -e $output',
];
$wgSVGConverter = 'Inkscape';


#$wgSVGConverter = 'ImageMagick';
====수정 전====
</syntaxhighlight>
* 리버티 스킨에 있는 '''LibertyTemplate.php''' 파일을 수정한다.


여기서
<syntaxhighlight lang="PHP" highlight="4-5" start='343' line>
<syntaxhighlight lang='php'>
<div class="modal-body">
$wgSVGConverter = 'ImageMagick';
<div id="modal-login-alert" class="alert alert-hidden alert-danger" role="alert">
</syntaxhighlight>
</div>
부분은 반드시 주석처리 한다.
<form id="modal-loginform" name="userlogin" class="modal-loginform"
  method="post">
<input class="loginText form-control" id="wpName1" tabindex="1"
  placeholder="<?php echo $skin->msg( 'userlogin-yourname-ph' )->plain() ?>" value="" name="lgname">
</syntaxhighlight><br/>


그리고 [[미디어위키]] 버전이 1.30 이상인 경우, 썸네일을 재생성하자. [[미디어위키]]의 루트 폴더에서 '''maintenance''' 폴더로 이동한 뒤, 아래의 명령어를 입력하자.
====수정 후====
 
<syntaxhighlight lang="PHP" highlight="4-5" start='343' line>
<syntaxhighlight lang='console'>
<div class="modal-body">
root@gaon:/var/www/html/w/maintenance# php rebuildImages.php
<div id="modal-login-alert" class="alert alert-hidden alert-danger" role="alert">
</syntaxhighlight>
</div>
<form id="modal-loginform" name="userlogin" class="modal-loginform"
  method="post" onsubmit="return LoginManage();">
<input class="loginText form-control" id="wpName1" tabindex="1"
  placeholder="<?php echo $skin->msg( 'userlogin-yourname-ph' )->plain() ?>" value="" name="lgname">
</syntaxhighlight><br/>


===신택스 강조(Syntax Highlight) 사용시 사용된 문서가 '''구문 강조에 오류가 있는 문서'''로 분류되는 현상===
===신택스 강조(Syntax Highlight) 사용시 사용된 문서가 '''구문 강조에 오류가 있는 문서'''로 분류되는 현상===
93번째 줄: 160번째 줄:
이후 미디어위키 1.34 코어에 포함된 버전은 해당 문제가 발생하지 않는다. 1.33.1에 포함된 버전만 문제인 것 같다.
이후 미디어위키 1.34 코어에 포함된 버전은 해당 문제가 발생하지 않는다. 1.33.1에 포함된 버전만 문제인 것 같다.


====파이썬3 설치====
===어두운 모드 사용시 표가 있는 부분의 배경색이 검정색이 되지 않는 버그===
1.35.1 기준, 서버에 파이썬3를 설치하면 해당 문제는 발생하지 않는다.
[[사용자:hunhee|hunhee님]]이 알려주셨어요!
 
설치방법은 쉘에
 
<syntaxhighlight lang='console'>
root@gaon:/# apt update && apt -y install python3
</syntaxhighlight>
 
이라고 입력한다. 설치가 되었는지 확인하려면,
<syntaxhighlight lang='console'>
root@gaon:/# python3 --version
Python 3.8.5
</syntaxhighlight>
이라고 입력한다. 이때 버전은 위의 버전과 다를 수 있다.
 
===TitleKey 확장기능 설치===
대소문자 구분 없이 문서를 검색 할 수 있는 [[미디어위키/확장기능/TitleKey|TitleKey]] 설정 중, <code>php extensions/TitleKey/maintenance/rebuildTitleKeys.php</code> 명령어를 입력할 때, 경로를 찾지 못하는 문제가 있다.
 
문제는 환경변수 <code><nowiki>$IP</nowiki></code>가 경로를 제대로 반환하지 않아 생기는 문제이다.
 
여기서는 환경변수 <code><nowiki>$IP</nowiki></code>를 수정하지 않고, 9번째 줄을 절대경로로 바꾸어 사용했다. 사용 환경에 맞추어 수정하길 바란다.


리버티 스킨 루트 폴더에 있는 '''"SkinLiberty.php"''' 파일을 열어서 수정합니다.
====수정 전====
====수정 전====
<syntaxhighlight lang='php' start='5' highlight='5'>
<syntaxhighlight lang="PHP" highlight="1-2" start='138' line>
$IP = getenv( 'MW_INSTALL_PATH' );
$LibertyDarkCss = "body, .Liberty, .dropdown-menu, .dropdown-item, .Liberty .nav-wrapper .navbar .form-inline .btn, .Liberty .content-wrapper .liberty-sidebar .liberty-right-fixed .live-recent .live-recent-header .nav .nav-item .nav-link.active, .Liberty .content-wrapper .liberty-content .liberty-content-main table.wikitable tr > th, .Liberty .content-wrapper .liberty-content .liberty-content-main table.wikitable tr > td, table.mw_metadata th, .Liberty .content-wrapper .liberty-content .liberty-content-main table.infobox th, #preferences fieldset:not(.prefsection), #preferences div.mw-prefs-buttons, .navbox, .navbox-subgroup, .navbox > tbody > tr:nth-child(even) > .navbox-list{
if ( $IP === false ) {
background-color:#000;
$IP = __DIR__ . '/../..';
color: #DDD;
}
}
require_once "$IP/maintenance/Maintenance.php";
 
// In case we want to do offline initialization...
if ( !class_exists( 'TitleKey' ) ) {
require __DIR__ . '/../includes/TitleKey.php';
}
</syntaxhighlight>
</syntaxhighlight>


====수정 후====
====수정 후====
<syntaxhighlight lang='php' start='5' highlight='5'>
<syntaxhighlight lang="PHP" highlight="1-2" start='138' line>
$IP = getenv( 'MW_INSTALL_PATH' );
$LibertyDarkCss = "body, .Liberty, .dropdown-menu, .dropdown-item, .Liberty .nav-wrapper .navbar .form-inline .btn, .Liberty .content-wrapper .liberty-sidebar .liberty-right-fixed .live-recent .live-recent-header .nav .nav-item .nav-link.active, .Liberty .content-wrapper .liberty-content .liberty-content-main table.wikitable tr > th, .Liberty .content-wrapper .liberty-content .liberty-content-main table.wikitable tr > td, table.mw_metadata th, .Liberty .content-wrapper .liberty-content .liberty-content-main table.infobox th, #preferences fieldset:not(.prefsection), #preferences div.mw-prefs-buttons, .navbox, .navbox-subgroup, .navbox > tbody > tr:nth-child(even) > .navbox-list, table.wikitable{
if ( $IP === false ) {
background-color:#000!important;
$IP = __DIR__ . '/../..';
color: #DDD;
}
}
require_once "/var/www/html/w/maintenance/Maintenance.php";
 
// In case we want to do offline initialization...
if ( !class_exists( 'TitleKey' ) ) {
require __DIR__ . '/../includes/TitleKey.php';
}
</syntaxhighlight>
 
또는 상대경로로 지정해도 된다. 이 경우에는 미디어위키 설치 경로에 구애받지 않는다는 장점이 있다.
 
<syntaxhighlight lang='php' start='5' highlight='5'>
$IP = getenv( 'MW_INSTALL_PATH' );
if ( $IP === false ) {
$IP = __DIR__ . '/../..';
}
require_once "../../../maintenance/Maintenance.php";
 
// In case we want to do offline initialization...
if ( !class_exists( 'TitleKey' ) ) {
require __DIR__ . '/../includes/TitleKey.php';
}
</syntaxhighlight>
 
==비주얼 에디터 설치==
비주얼 에디터를 설치하고, 사용할 수 있다. 다만 짧은 주소 설정시 오류가 발생할 수 있으므로 본 코드를 사용하자.
 
===짧은 주소 설정(선택, 권장)===
짧은 주소를 설정하자. .htaccess를 사용하므로 아파치 이용자만 할 수 있다.(짧은 주소 자체는 nginx도 할 수 있지만, 서술하지 않음).
 
먼저 [[미디어위키/LocalSettings.php|LocalSettings.php]]가 있는 루트 폴더로 이동하여 .htaccess를 열자. 없으면 생성하자.
 
이후 아래와 같이 입력한다.
 
<syntaxhighlight>
RewriteEngine On
RewriteBase /w/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /w/index.php [L]
 
RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]
 
RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2 [L,QSA,B]
 
RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2&archived=1 [L,QSA,B]
</syntaxhighlight>
 
여기서 2번째 줄과 6번째 줄에 있는 <code>/w/</code> 부분에 원하는 줄임(<nowiki>https://example.com/w/문서명</nowiki>) 단어를 입력한다.
 
[https://wnw1005.tistory.com/168 출처 : 씨실과 날실님 티스토리 블로그], [https://www.mediawiki.org/wiki/Topic:W2ahzg3yi27mvp9y 미디어위키 토론 중 Rogerhc님의 답변]
 
이후 LocalSettings.php 하단에 다음과 같이 입력한다.
<syntaxhighlight lang='php'>
$wgScriptExtension = ".php";
$wgArticlePath = "{$wgScriptPath}/$1";
$wgUsePathInfo = true;
</syntaxhighlight>
</syntaxhighlight>


===비주얼 에디터 설치===
* 138번째 줄의 '''"<nowiki>{</nowiki>"''' 바로 앞에 '''"<nowiki>, table.wikitable</nowiki>"'''을 붙히고, 139번째 줄에서 '''"#000"''' 다음에 '''"<nowiki>!important</nowiki>"'''을 붙힌다.
1.37버전은 이미 extensions 폴더에 있다. 코어에 포함되어 있으나, 삭제한 사람은 [https://www.mediawiki.org/wiki/Extension:VisualEditor 미디어위키 비주얼 에디터 페이지]에서 자신의 버전에 맞게 다운로드 받은 뒤 extensions 폴더 안에 넣는다.
 
이후 LocalSettings.php 하단에 다음과 같이 입력한다.
<syntaxhighlight lang='php'>
wfLoadExtension( 'VisualEditor' );
</syntaxhighlight>
 
이러면 끝이다.
 
== 미디어위키 1.39 버전 업그레이드 이후 분류값 앞에 점이 표시되고 세로로 정렬되는 문제 ==
미디어위키 1.39 rc버전에서는 이런 문제가 없었지만, 1.39 정식버전에서는 분류값 앞에 점이 표시되고, 세로로 정렬되는 문제가 있다. 또한 분류값이 '''분류:'''밑에 줄에 표시되는 문제가 있다.
[[파일:미디어위키1_39_분류_문제.png]]
 
이는 [[미디어위키:Common.css]] 문서를 수정하면 된다.
 
=== 수정 전 ===
<syntaxhighlight lang='css'>
/* 이 CSS 설정은 모든 스킨에 적용됩니다 */
.mw-highlight pre {
font-size: 90%;
}
</syntaxhighlight>
 
=== 수정 후 ===
<syntaxhighlight lang='css'>
/* 이 CSS 설정은 모든 스킨에 적용됩니다 */
.mw-highlight pre {
font-size: 90%;
}
 
/* 1.39 버전에서 분류 표시가 li로 표시돠는 문제 해결 */
#mw-normal-catlinks > ul {
list-style: none;
}
 
#mw-normal-catlinks > ul > li {
float: left;
margin-right: 15px;
}
 
/* 분류: 밑부분에 분류값이 표시되는 문제 해결 */
#mw-normal-catlinks {
display: flex;
align-items: center;
}
</syntaxhighlight>


==구현한 기능==
==구현한 기능==
=== 인디케이터 표시 ===
* 아직 존재하지 않습니다.<br/>
[https://github.com/merlinwarage/simple-scroll-progress simple-scroll-progress]를 이용하여 스크롤한 범위를 표시하는 기능입니다.
 
[[파일:리버티 스킨-스크롤 범위.gif]]<ref>초기의 타 라이브러리를 사용한 모습. 현재 버전은 본 위키에 적용되어 있다.</ref>
 
혹시 사용하고 싶다면, [https://github.com/gaon12/Liberty Liberty 깃허브 저장소]를 다운로드 받아 사용하면 된다. 라이브러리는 외부에서 불러오니 참고하자.
 
=== 클라우드플레어 원본 IP 주소 표시 ===
클라우드플레어 사용 시, 비로그인 유저가 문서를 편집하는 경우, ip주소가 클라우드플레어의 ip로 기록됩니다. 이를 수정해주는 확장기능을 개발하여 배포합니다.
 
{{깃허브/저장소|gaon12|mw_CloudflareRealIP}} 확장기능을 설치하면, 원본 IP 주소가 표시됩니다.
 
==== 설치 ====
# 먼저 GitHub 저장소에서 확장기능을 다운로드하세요.
# 다운로드 받은 확장기능을 미디어위키의 "extensions" 폴더에 업로드합니다.
# 미디어위키의 "LocalSettings.php" 파일을 찾아 아래 코드를 추가하세요
 
<br>
<syntaxhighlight lang='php'>
wfLoadExtension( 'CloudflareRealIP' );
</syntaxhighlight>
 
==== 사용법 ====
이 확장기능을 설치하고 나면 아무런 추가 설정 없이 자동으로 작동합니다. CloudflareRealIP 확장기능은 미디어위키에서 로그인하지 않고 편집할 때 Cloudflare의 IP 주소 대신 원래 사용자의 IP 주소를 저장합니다.
 
==== 참고 사항 ====
이 확장기능은 미디어위키 1.25 이상과 호환됩니다. 또한 Cloudflare 서비스를 사용하는 경우에만 필요하며, Cloudflare를 사용하지 않거나 단순히 DNS만 사용하는 경우 설치할 필요가 없습니다.
 
==== 원리 ====
Cloudflare Real IP 확장 기능의 작동 원리는 다음과 같습니다:
 
# 사용자가 미디어위키에서 로그인하지 않고 편집을 진행합니다.
# Cloudflare는 사용자의 원래 IP 주소를 "CF-Connecting-IP"라는 HTTP 헤더를 통해 전달합니다.
# 미디어위키에서는 로그인하지 않은 사용자의 IP 주소를 기록하려 할 때 UserGetIP 이벤트가 발생합니다.
# Cloudflare Real IP 확장 기능은 이 이벤트를 통해 사용자의 IP 주소를 가져옵니다.
# 확장 기능은 $_SERVER['HTTP_CF_CONNECTING_IP'] 변수를 확인하여 Cloudflare가 전달한 원래 사용자의 IP 주소가 있는지 확인합니다.
# 원래 사용자의 IP 주소가 있다면, 확장 기능은 이 IP 주소로 미디어위키에 저장되는 IP 주소를 변경합니다.
# 결과적으로, 미디어위키에서 로그인하지 않은 사용자의 편집 기록에 원래 사용자의 IP 주소가 저장됩니다.
 
이 확장 기능을 사용하면 Cloudflare를 사용하는 경우에도 미디어위키에서 로그인하지 않은 사용자의 원래 IP 주소를 정확하게 기록할 수 있습니다. 이로 인해 IP 주소를 기반으로 한 사용자 관리 및 안전 조치가 훨씬 간편해집니다.
 
==== 라이선스 ====
[[MIT 라이선스]]로 배포됩니다.
 
=== 단축 URL 생성 ===
긴 문서의 URL, 특히 문서명이 한글로 이루어져 있는 경우, URL이 길어져 공유할 때 불편합니다. 그래서 단축 URL을 생성하고, 복사할 수 있는 기능을 추가했습니다.
 
==== 사용 방법 ====
문서 최하단에 CCL 표기 부분과 '''개인정보처리방침 가온 위키 소개 면책 조항''' 링크 부분 사이에 '''• 현재 페이지 URL 줄이기''' 메뉴를 누르면, 팝업창이 뜨면서 현재 문서의 단축된 URL이 생성이 됩니다.
 
==== 원리 ====
[[미디어위키]]에는 문서를 편집할 때마다, 문서의 역사에 고유한 번호를 부여합니다. 이 번호는 <code>oldid</code>로, 1부터 편집할 때마다 1씩 증가합니다. 자세한 내용은 [[미디어위키/oldid]] 문서를 참고하세요!
 
<code>oldid</code> 값을 62진법<ref>숫자(0-9) + 알파벳 대문자(A-Z) + 알파벳 소문자(a-z)</ref>으로 변환하여 단축된 URL을 제공합니다. 일반 문서와 혼동이 생기지 않도록, <code>/a/</code> 경로로 제공됩니다.
 
==== 주의사항 ====
* <code>oldid</code> 값은 문서가 편집되면 새롭게 바뀌므로, 예전에 생성된 URL 값과 현재의 URL 값에는 차이가 있을 수 있습니다. 하지만 둘 다 원래의 문서로 자동으로 이동하므로 걱정하지 않아도 됩니다.
* 특수 문서, 편집 페이지 등 <code>oldid</code> 값이 존재하지 않는 페이지에는 본 메뉴가 생성되지 않습니다.


==각주==
==각주==
가온 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 가온 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)

이 문서에서 사용한 틀: