5.2.7 버전변경
This commit is contained in:
@ -35,6 +35,14 @@ if ($file = $_POST['bo_include_tail']) {
|
|||||||
$_POST['bo_include_tail'] = $file;
|
$_POST['bo_include_tail'] = $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!is_include_path_check($_POST['bo_include_head'])) {
|
||||||
|
alert('/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_include_path_check($_POST['bo_include_tail'])) {
|
||||||
|
alert('/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.');
|
||||||
|
}
|
||||||
|
|
||||||
$board_path = G5_DATA_PATH.'/file/'.$bo_table;
|
$board_path = G5_DATA_PATH.'/file/'.$bo_table;
|
||||||
|
|
||||||
// 게시판 디렉토리 생성
|
// 게시판 디렉토리 생성
|
||||||
|
|||||||
@ -63,7 +63,7 @@ $colspan = 15;
|
|||||||
|
|
||||||
<label for="sfl" class="sound_only">검색대상</label>
|
<label for="sfl" class="sound_only">검색대상</label>
|
||||||
<select name="sfl" id="sfl">
|
<select name="sfl" id="sfl">
|
||||||
<option value="bo_table"<?php echo get_selected($_GET['sfl'], "bo_subject", true); ?>>TABLE</option>
|
<option value="bo_table"<?php echo get_selected($_GET['sfl'], "bo_table", true); ?>>TABLE</option>
|
||||||
<option value="bo_subject"<?php echo get_selected($_GET['sfl'], "bo_subject"); ?>>제목</option>
|
<option value="bo_subject"<?php echo get_selected($_GET['sfl'], "bo_subject"); ?>>제목</option>
|
||||||
<option value="a.gr_id"<?php echo get_selected($_GET['sfl'], "a.gr_id"); ?>>그룹ID</option>
|
<option value="a.gr_id"<?php echo get_selected($_GET['sfl'], "a.gr_id"); ?>>그룹ID</option>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@ -18,6 +18,18 @@ check_admin_token();
|
|||||||
if ($co_himg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_h");
|
if ($co_himg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_h");
|
||||||
if ($co_timg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_t");
|
if ($co_timg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_t");
|
||||||
|
|
||||||
|
$error_msg = '';
|
||||||
|
|
||||||
|
if( $co_include_head && ! is_include_path_check($co_include_head) ){
|
||||||
|
$co_include_head = '';
|
||||||
|
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.';
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $co_include_tail && ! is_include_path_check($co_include_tail) ){
|
||||||
|
$co_include_tail = '';
|
||||||
|
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
|
||||||
|
}
|
||||||
|
|
||||||
$sql_common = " co_include_head = '$co_include_head',
|
$sql_common = " co_include_head = '$co_include_head',
|
||||||
co_include_tail = '$co_include_tail',
|
co_include_tail = '$co_include_tail',
|
||||||
co_html = '$co_html',
|
co_html = '$co_html',
|
||||||
@ -74,7 +86,11 @@ if ($w == "" || $w == "u")
|
|||||||
@chmod($dest_path, G5_FILE_PERMISSION);
|
@chmod($dest_path, G5_FILE_PERMISSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
goto_url("./contentform.php?w=u&co_id=$co_id");
|
if( $error_msg ){
|
||||||
|
alert($error_msg, "./contentform.php?w=u&co_id=$co_id");
|
||||||
|
} else {
|
||||||
|
goto_url("./contentform.php?w=u&co_id=$co_id");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -8,6 +8,18 @@ auth_check($auth[$sub_menu], 'w');
|
|||||||
|
|
||||||
check_admin_token();
|
check_admin_token();
|
||||||
|
|
||||||
|
$error_msg = '';
|
||||||
|
|
||||||
|
if( $qa_include_head && ! is_include_path_check($qa_include_head) ){
|
||||||
|
$qa_include_head = '';
|
||||||
|
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.';
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $qa_include_tail && ! is_include_path_check($qa_include_tail) ){
|
||||||
|
$qa_include_tail = '';
|
||||||
|
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
|
||||||
|
}
|
||||||
|
|
||||||
$sql = " update {$g5['qa_config_table']}
|
$sql = " update {$g5['qa_config_table']}
|
||||||
set qa_title = '{$_POST['qa_title']}',
|
set qa_title = '{$_POST['qa_title']}',
|
||||||
qa_category = '{$_POST['qa_category']}',
|
qa_category = '{$_POST['qa_category']}',
|
||||||
@ -29,8 +41,8 @@ $sql = " update {$g5['qa_config_table']}
|
|||||||
qa_image_width = '{$_POST['qa_image_width']}',
|
qa_image_width = '{$_POST['qa_image_width']}',
|
||||||
qa_upload_size = '{$_POST['qa_upload_size']}',
|
qa_upload_size = '{$_POST['qa_upload_size']}',
|
||||||
qa_insert_content = '{$_POST['qa_insert_content']}',
|
qa_insert_content = '{$_POST['qa_insert_content']}',
|
||||||
qa_include_head = '{$_POST['qa_include_head']}',
|
qa_include_head = '{$qa_include_head}',
|
||||||
qa_include_tail = '{$_POST['qa_include_tail']}',
|
qa_include_tail = '{$qa_include_tail}',
|
||||||
qa_content_head = '{$_POST['qa_content_head']}',
|
qa_content_head = '{$_POST['qa_content_head']}',
|
||||||
qa_content_tail = '{$_POST['qa_content_tail']}',
|
qa_content_tail = '{$_POST['qa_content_tail']}',
|
||||||
qa_mobile_content_head = '{$_POST['qa_mobile_content_head']}',
|
qa_mobile_content_head = '{$_POST['qa_mobile_content_head']}',
|
||||||
@ -47,5 +59,9 @@ $sql = " update {$g5['qa_config_table']}
|
|||||||
qa_5 = '{$_POST['qa_5']}' ";
|
qa_5 = '{$_POST['qa_5']}' ";
|
||||||
sql_query($sql);
|
sql_query($sql);
|
||||||
|
|
||||||
goto_url('./qa_config.php');
|
if($error_msg){
|
||||||
|
alert($error_msg, './qa_config.php');
|
||||||
|
} else {
|
||||||
|
goto_url('./qa_config.php');
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
@ -12,5 +12,7 @@ if (!strstr($_SERVER['SCRIPT_NAME'], 'install.php')) {
|
|||||||
//$sms5 = sql_fetch("select * from ".$g5['sms5_config_table'] );
|
//$sms5 = sql_fetch("select * from ".$g5['sms5_config_table'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sv = isset($_REQUEST['sv']) ? get_search_string($_REQUEST['sv']) : '';
|
||||||
|
|
||||||
add_stylesheet('<link rel="stylesheet" href="'.G5_SMS5_ADMIN_URL.'/css/sms5.css">', 0);
|
add_stylesheet('<link rel="stylesheet" href="'.G5_SMS5_ADMIN_URL.'/css/sms5.css">', 0);
|
||||||
?>
|
?>
|
||||||
@ -71,6 +71,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
echo '<tr><td colspan="'.$colspan.'" class="empty_table">자료가 없습니다.</td></tr>';
|
echo '<tr><td colspan="'.$colspan.'" class="empty_table">자료가 없습니다.</td></tr>';
|
||||||
|
|||||||
@ -72,6 +72,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ $listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처
|
|||||||
<?php
|
<?php
|
||||||
$sql_common = " from {$g5['visit_table']} ";
|
$sql_common = " from {$g5['visit_table']} ";
|
||||||
if ($sfl) {
|
if ($sfl) {
|
||||||
if($sst=='vi_ip' || $sst=='vi_date'){
|
if($sfl=='vi_ip' || $sfl=='vi_date'){
|
||||||
$sql_search = " where $sfl like '$stx%' ";
|
$sql_search = " where $sfl like '$stx%' ";
|
||||||
}else{
|
}else{
|
||||||
$sql_search = " where $sfl like '%$stx%' ";
|
$sql_search = " where $sfl like '%$stx%' ";
|
||||||
|
|||||||
@ -7,7 +7,11 @@ if (G5_IS_MOBILE) {
|
|||||||
include_once(G5_BBS_PATH.'/_head.php');
|
include_once(G5_BBS_PATH.'/_head.php');
|
||||||
echo stripslashes($board['bo_mobile_content_head']);
|
echo stripslashes($board['bo_mobile_content_head']);
|
||||||
} else {
|
} else {
|
||||||
@include ($board['bo_include_head']);
|
if(is_include_path_check($board['bo_include_head'])) { //파일경로 체크
|
||||||
|
@include ($board['bo_include_head']);
|
||||||
|
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
|
||||||
|
include_once(G5_BBS_PATH.'/_head.php');
|
||||||
|
}
|
||||||
echo stripslashes($board['bo_content_head']);
|
echo stripslashes($board['bo_content_head']);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@ -8,6 +8,10 @@ if (G5_IS_MOBILE) {
|
|||||||
include_once(G5_BBS_PATH.'/_tail.php');
|
include_once(G5_BBS_PATH.'/_tail.php');
|
||||||
} else {
|
} else {
|
||||||
echo stripslashes($board['bo_content_tail']);
|
echo stripslashes($board['bo_content_tail']);
|
||||||
@include ($board['bo_include_tail']);
|
if(is_include_path_check($board['bo_include_tail'])) { //파일경로 체크
|
||||||
|
@include ($board['bo_include_tail']);
|
||||||
|
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
|
||||||
|
include_once(G5_BBS_PATH.'/_tail.php');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@ -19,7 +19,7 @@ if (!$co['co_id'])
|
|||||||
|
|
||||||
$g5['title'] = $co['co_subject'];
|
$g5['title'] = $co['co_subject'];
|
||||||
|
|
||||||
if ($co['co_include_head'])
|
if (is_include_path_check($co['co_include_head']))
|
||||||
@include_once($co['co_include_head']);
|
@include_once($co['co_include_head']);
|
||||||
else
|
else
|
||||||
include_once('./_head.php');
|
include_once('./_head.php');
|
||||||
@ -85,7 +85,7 @@ if(is_file($skin_file)) {
|
|||||||
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
|
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($co['co_include_tail'])
|
if (is_include_path_check($co['co_include_tail']))
|
||||||
@include_once($co['co_include_tail']);
|
@include_once($co['co_include_tail']);
|
||||||
else
|
else
|
||||||
include_once('./_tail.php');
|
include_once('./_tail.php');
|
||||||
|
|||||||
@ -9,7 +9,7 @@ if (G5_IS_MOBILE) {
|
|||||||
include_once('./_head.php');
|
include_once('./_head.php');
|
||||||
echo conv_content($qaconfig['qa_mobile_content_head'], 1);
|
echo conv_content($qaconfig['qa_mobile_content_head'], 1);
|
||||||
} else {
|
} else {
|
||||||
if($qaconfig['qa_include_head'])
|
if(is_include_path_check($qaconfig['qa_include_head']))
|
||||||
@include ($qaconfig['qa_include_head']);
|
@include ($qaconfig['qa_include_head']);
|
||||||
else
|
else
|
||||||
include ('./_head.php');
|
include ('./_head.php');
|
||||||
|
|||||||
@ -7,7 +7,7 @@ if (G5_IS_MOBILE) {
|
|||||||
include_once('./_tail.php');
|
include_once('./_tail.php');
|
||||||
} else {
|
} else {
|
||||||
echo conv_content($qaconfig['qa_content_tail'], 1);
|
echo conv_content($qaconfig['qa_content_tail'], 1);
|
||||||
if($qaconfig['qa_include_tail'])
|
if(is_include_path_check($qaconfig['qa_include_tail']))
|
||||||
@include ($qaconfig['qa_include_tail']);
|
@include ($qaconfig['qa_include_tail']);
|
||||||
else
|
else
|
||||||
include ('./_tail.php');
|
include ('./_tail.php');
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
********************/
|
********************/
|
||||||
|
|
||||||
define('G5_VERSION', '그누보드5');
|
define('G5_VERSION', '그누보드5');
|
||||||
define('G5_GNUBOARD_VER', '5.2.6');
|
define('G5_GNUBOARD_VER', '5.2.7');
|
||||||
define('G5_YOUNGCART_VER', '5.2.6');
|
define('G5_YOUNGCART_VER', '5.2.7');
|
||||||
|
|
||||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||||
define('_GNUBOARD_', true);
|
define('_GNUBOARD_', true);
|
||||||
|
|||||||
@ -45,7 +45,7 @@ if (G5_IS_MOBILE) {
|
|||||||
echo '<meta name="format-detection" content="telephone=no">'.PHP_EOL;
|
echo '<meta name="format-detection" content="telephone=no">'.PHP_EOL;
|
||||||
} else {
|
} else {
|
||||||
echo '<meta http-equiv="imagetoolbar" content="no">'.PHP_EOL;
|
echo '<meta http-equiv="imagetoolbar" content="no">'.PHP_EOL;
|
||||||
echo '<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1">'.PHP_EOL;
|
echo '<meta http-equiv="X-UA-Compatible" content="IE=Edge">'.PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($config['cf_add_meta'])
|
if($config['cf_add_meta'])
|
||||||
|
|||||||
@ -3274,4 +3274,13 @@ function check_write_token($bo_table)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// include 하는 경로에 data file 경로가 포함되어 있는지 체크합니다.
|
||||||
|
function is_include_path_check($path='')
|
||||||
|
{
|
||||||
|
if( !$path || preg_match('/\/data\/(file|editor)\/[A-Za-z0-9_]{1,20}\//', $path) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
@ -4,7 +4,7 @@ if (!defined('_GNUBOARD_')) exit;
|
|||||||
@ini_set('memory_limit', '-1');
|
@ini_set('memory_limit', '-1');
|
||||||
|
|
||||||
// 게시글리스트 썸네일 생성
|
// 게시글리스트 썸네일 생성
|
||||||
function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=true, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')
|
function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=false, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')
|
||||||
{
|
{
|
||||||
global $g5, $config;
|
global $g5, $config;
|
||||||
$filename = $alt = "";
|
$filename = $alt = "";
|
||||||
@ -238,10 +238,10 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
|||||||
$degree = 0;
|
$degree = 0;
|
||||||
|
|
||||||
if ($size[2] == 1) {
|
if ($size[2] == 1) {
|
||||||
$src = imagecreatefromgif($source_file);
|
$src = @imagecreatefromgif($source_file);
|
||||||
$src_transparency = imagecolortransparent($src);
|
$src_transparency = @imagecolortransparent($src);
|
||||||
} else if ($size[2] == 2) {
|
} else if ($size[2] == 2) {
|
||||||
$src = imagecreatefromjpeg($source_file);
|
$src = @imagecreatefromjpeg($source_file);
|
||||||
|
|
||||||
if(function_exists('exif_read_data')) {
|
if(function_exists('exif_read_data')) {
|
||||||
// exif 정보를 기준으로 회전각도 구함
|
// exif 정보를 기준으로 회전각도 구함
|
||||||
@ -273,8 +273,8 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ($size[2] == 3) {
|
} else if ($size[2] == 3) {
|
||||||
$src = imagecreatefrompng($source_file);
|
$src = @imagecreatefrompng($source_file);
|
||||||
imagealphablending($src, true);
|
@imagealphablending($src, true);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -330,20 +330,52 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$dst = imagecreatetruecolor($dst_w, $dst_h);
|
$dst = imagecreatetruecolor($dst_w, $dst_h);
|
||||||
|
|
||||||
if($size[2] == 3) {
|
if($size[2] == 3) {
|
||||||
imagealphablending($dst, false);
|
imagealphablending($dst, false);
|
||||||
imagesavealpha($dst, true);
|
imagesavealpha($dst, true);
|
||||||
} else if($size[2] == 1) {
|
} else if($size[2] == 1) {
|
||||||
$palletsize = imagecolorstotal($src);
|
$palletsize = imagecolorstotal($src);
|
||||||
if($src_transparency >= 0 && $src_transparency < $palletsize) {
|
if($src_transparency >= 0 && $src_transparency < $palletsize) {
|
||||||
$transparent_color = imagecolorsforindex($src, $src_transparency);
|
$transparent_color = imagecolorsforindex($src, $src_transparency);
|
||||||
$current_transparent = imagecolorallocate($dst, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
|
$current_transparent = imagecolorallocate($dst, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
|
||||||
imagefill($dst, 0, 0, $current_transparent);
|
imagefill($dst, 0, 0, $current_transparent);
|
||||||
imagecolortransparent($dst, $current_transparent);
|
imagecolortransparent($dst, $current_transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { // 비율에 맞게 생성
|
||||||
|
$dst = imagecreatetruecolor($dst_w, $dst_h);
|
||||||
|
$bgcolor = imagecolorallocate($dst, 255, 255, 255); // 배경색
|
||||||
|
|
||||||
|
if($src_w > $src_h) {
|
||||||
|
$tmp_h = round(($dst_w * $src_h) / $src_w);
|
||||||
|
$dst_y = round(($dst_h - $tmp_h) / 2);
|
||||||
|
$dst_h = $tmp_h;
|
||||||
|
} else {
|
||||||
|
$tmp_w = round(($dst_h * $src_w) / $src_h);
|
||||||
|
$dst_x = round(($dst_w - $tmp_w) / 2);
|
||||||
|
$dst_w = $tmp_w;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($size[2] == 3) {
|
||||||
|
$bgcolor = imagecolorallocatealpha($dst, 0, 0, 0, 127);
|
||||||
|
imagefill($dst, 0, 0, $bgcolor);
|
||||||
|
imagealphablending($dst, false);
|
||||||
|
imagesavealpha($dst, true);
|
||||||
|
} else if($size[2] == 1) {
|
||||||
|
$palletsize = imagecolorstotal($src);
|
||||||
|
if($src_transparency >= 0 && $src_transparency < $palletsize) {
|
||||||
|
$transparent_color = imagecolorsforindex($src, $src_transparency);
|
||||||
|
$current_transparent = imagecolorallocate($dst, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
|
||||||
|
imagefill($dst, 0, 0, $current_transparent);
|
||||||
|
imagecolortransparent($dst, $current_transparent);
|
||||||
|
} else {
|
||||||
|
imagefill($dst, 0, 0, $bgcolor);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imagefill($dst, 0, 0, $bgcolor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1064,7 +1064,11 @@ DoUpload.prototype = {
|
|||||||
|
|
||||||
if (evt.target.readyState === FileReader.DONE) {
|
if (evt.target.readyState === FileReader.DONE) {
|
||||||
blob = new self.MyBlob(self.NewBlob(evt.target.result, filetype));
|
blob = new self.MyBlob(self.NewBlob(evt.target.result, filetype));
|
||||||
orientation = self.getOrientation(evt.target.result.slice(0, 64 * 1024));
|
try {
|
||||||
|
orientation = self.getOrientation(evt.target.result.slice(0, 64 * 1024));
|
||||||
|
} catch(err) {
|
||||||
|
|
||||||
|
}
|
||||||
image = new Image();
|
image = new Image();
|
||||||
|
|
||||||
image.onload = function () {
|
image.onload = function () {
|
||||||
|
|||||||
@ -4,3 +4,9 @@ www.youtube(?:-nocookie)?.com/
|
|||||||
serviceapi.rmcnmv.naver.com/
|
serviceapi.rmcnmv.naver.com/
|
||||||
videofarm.daum.net/
|
videofarm.daum.net/
|
||||||
player.vimeo.com/
|
player.vimeo.com/
|
||||||
|
maps.google.com/
|
||||||
|
play.afreeca.com/
|
||||||
|
v.nate.com/
|
||||||
|
www.microsoft.com/showcase/video.aspx/
|
||||||
|
w.soundcloud.com/
|
||||||
|
www.facebook.com/
|
||||||
Reference in New Issue
Block a user