Merge branch 'master' of github.com:gnuboard/g5 into g5

This commit is contained in:
chicpro
2014-12-02 10:14:50 +09:00
26 changed files with 186 additions and 79 deletions

View File

@ -1282,7 +1282,10 @@ if($config['cf_cert_use']) {
// kcp일 때
if($config['cf_cert_hp'] == 'kcp') {
$exe = G5_KCPCERT_PATH.'/bin/ct_cli';
if(PHP_INT_MAX == 2147483647) // 32-bit
$exe = G5_KCPCERT_PATH . '/bin/ct_cli';
else
$exe = G5_KCPCERT_PATH . '/bin/ct_cli_x64';
echo module_exec_check($exe, 'ct_cli');
}

View File

@ -19,6 +19,20 @@ if(!sql_query(" select co_tag_filter_use from {$g5['content_table']} limit 1 ",
sql_query(" update {$g5['content_table']} set co_tag_filter_use = '1' ");
}
// 모바일 내용 추가
if(!sql_query(" select co_mobile_content from {$g5['content_table']} limit 1", false)) {
sql_query(" ALTER TABLE `{$g5['content_table']}`
ADD `co_mobile_content` longtext NOT NULL AFTER `co_content` ", true);
}
// 스킨 설정 추가
if(!sql_query(" select co_skin from {$g5['content_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['content_table']}`
ADD `co_skin` varchar(255) NOT NULL DEFAULT '' AFTER `co_mobile_content`,
ADD `co_mobile_skin` varchar(255) NOT NULL DEFAULT '' AFTER `co_skin` ", true);
sql_query(" update {$g5['content_table']} set co_skin = 'basic', co_mobile_skin = 'basic' ");
}
$html_title = "내용";
$g5['title'] = $html_title.' 관리';
@ -36,6 +50,8 @@ else
{
$html_title .= ' 입력';
$co['co_html'] = 2;
$co['co_skin'] = 'basic';
$co['co_mobile_skin'] = 'basic';
}
include_once (G5_ADMIN_PATH.'/admin.head.php');
@ -69,6 +85,22 @@ include_once (G5_ADMIN_PATH.'/admin.head.php');
<th scope="row">내용</th>
<td><?php echo editor_html('co_content', get_text($co['co_content'], 0)); ?></td>
</tr>
<tr>
<th scope="row">모바일 내용</th>
<td><?php echo editor_html('co_mobile_content', get_text($co['co_mobile_content'], 0)); ?></td>
</tr>
<tr>
<th scope="row"><label for="co_skin">스킨 디렉토리<strong class="sound_only">필수</strong></label></th>
<td>
<?php echo get_skin_select('content', 'co_skin', 'co_skin', $co['co_skin'], 'required'); ?>
</td>
</tr>
<tr>
<th scope="row"><label for="co_mobile_skin">모바일스킨 디렉토리<strong class="sound_only">필수</strong></label></th>
<td>
<?php echo get_mobile_skin_select('content', 'co_mobile_skin', 'co_mobile_skin', $co['co_mobile_skin'], 'required'); ?>
</td>
</tr>
<tr>
<th scope="row"><label for="co_tag_filter_use">태그 필터링 사용</label></th>
<td>
@ -160,6 +192,7 @@ function frmcontentform_check(f)
<?php echo get_editor_js('co_content'); ?>
<?php echo chk_editor_js('co_content'); ?>
<?php echo get_editor_js('co_mobile_content'); ?>
check_field(f.co_id, "ID를 입력하세요.");
check_field(f.co_subject, "제목을 입력하세요.");

View File

@ -21,7 +21,10 @@ $sql_common = " co_include_head = '$co_include_head',
co_html = '$co_html',
co_tag_filter_use = '$co_tag_filter_use',
co_subject = '$co_subject',
co_content = '$co_content' ";
co_content = '$co_content',
co_mobile_content = '$co_mobile_content',
co_skin = '$co_skin',
co_mobile_skin = '$co_mobile_skin' ";
if ($w == "")
{

View File

@ -16,7 +16,7 @@ for ($i=0; $i<count($chk); $i++)
$mb = get_member($_POST['mb_id'][$k]);
if (!$mb[mb_id]) {
if (!$mb['mb_id']) {
$msg .= "{$mb['mb_id']} : 회원자료가 존재하지 않습니다.\\n";
} else if ($member['mb_id'] == $mb['mb_id']) {
$msg .= "{$mb['mb_id']} : 로그인 중인 관리자는 삭제 할 수 없습니다.\\n";

View File

@ -236,7 +236,7 @@ if ($member['mb_level'] >= $board['bo_list_level'] && $board['bo_use_list_view']
include_once('./board_tail.php');
echo "\n<!-- 사용스킨 : ".(G5_IS_MOBEILE ? $board['bo_mobile_skin'] : $board['bo_skin'])." -->\n";
echo "\n<!-- 사용스킨 : ".(G5_IS_MOBILE ? $board['bo_mobile_skin'] : $board['bo_skin'])." -->\n";
include_once(G5_PATH.'/tail.sub.php');
?>

View File

@ -30,7 +30,6 @@ $str = conv_content($co['co_content'], $co['co_html'], $co['co_tag_filter_use'])
unset($src);
unset($dst);
$src[] = "/{{쇼핑몰명}}|{{홈페이지제목}}/";
//$dst[] = $default[de_subject];
$dst[] = $config['cf_title'];
$src[] = "/{{회사명}}|{{상호}}/";
$dst[] = $default['de_admin_company_name'];
@ -59,39 +58,33 @@ $dst[] = $default['de_admin_info_email'];
$str = preg_replace($src, $dst, $str);
if ($is_admin)
echo '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&amp;co_id='.$co_id.'" class="btn_admin">내용 수정</a></div>';
?>
// 스킨경로
if(trim($co['co_skin']) == '')
$co['co_skin'] = 'basic';
<!-- 등록내용 시작 { -->
<?php
$himg = G5_DATA_PATH.'/content/'.$co_id.'_h';
if (file_exists($himg)) // 상단 이미지
echo '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>';
?>
<article id="ctt" class="ctt_<?php echo $co_id; ?>">
<header>
<h1><?php echo $g5['title']; ?></h1>
</header>
<div id="ctt_con">
<?php echo $str; ?>
</div>
</article>
<?php
$timg = G5_DATA_PATH.'/content/'.$co_id.'_t';
if (file_exists($timg)) // 하단 이미지
echo '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>';
$content_skin_path = G5_SKIN_PATH.'/content/'.$co['co_skin'];
$content_skin_url = G5_SKIN_URL.'/content/'.$co['co_skin'];
$skin_file = $content_skin_path.'/content.skin.php';
if ($is_admin)
echo '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&amp;co_id='.$co_id.'" class="btn_admin">내용 수정</a></div>';
?>
<!-- } 등록내용 끝 -->
<?php
if(is_file($skin_file)) {
$himg = G5_DATA_PATH.'/content/'.$co_id.'_h';
if (file_exists($himg)) // 상단 이미지
echo '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>';
include($skin_file);
$timg = G5_DATA_PATH.'/content/'.$co_id.'_t';
if (file_exists($timg)) // 하단 이미지
echo '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>';
} else {
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
}
if ($co['co_include_tail'])
@include_once($co['co_include_tail']);
else

View File

@ -50,6 +50,13 @@ if($config['cf_leave_day'] > 0) {
}
}
// 음성 캡챠 파일 삭제
foreach (glob(G5_PATH.'/data/cache/kcaptcha-*.mp3') as $file) {
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
@unlink($file);
}
}
// 실행일 기록
if(isset($config['cf_optimize_date'])) {
sql_query(" update {$g5['config_table']} set cf_optimize_date = '".G5_TIME_YMD."' ");

View File

@ -252,13 +252,6 @@ a.btn_admin:focus, a.btn_admin:hover {text-decoration:none}
.new_win .win_btn a {display:inline-block;padding:0 10px;height:30px;background:#4b545e;color:#fff;vertical-align:middle;line-height:2.4em}
.new_win .win_btn a:focus, .new_win .win_btn a:hover {text-decoration:none}
/* 내용관리 */
#ctt {margin:10px 0;padding:10px;border:1px solid #e9e9e9}
.ctt_admin {text-align:right}
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ctt_con {padding:10px 0}
.ctt_img {text-align:center}
/* 검색결과 색상 */
.sch_word {color:#ff3061}

View File

@ -225,13 +225,6 @@ a.btn_admin:focus, a.btn_admin:hover {text-decoration:none}
.new_win .win_btn button {display:inline-block;padding:0 10px;height:2.5em;border:0;background:#666;color:#fff;text-decoration:none;line-height:2.5em}
.new_win .win_btn input {padding:0 10px;height:2.5em;line-height:2.5em}
/* 내용관리 */
#ctt {margin:10px 0;padding:10px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9}
.ctt_admin {margin:0 5px;text-align:right}
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ctt_con {padding:10px 0}
.ctt_img {text-align:center}
/* 검색결과 색상 */
.sch_word {color:#ff3061}

View File

@ -781,6 +781,9 @@ CREATE TABLE IF NOT EXISTS `g5_content` (
`co_html` tinyint(4) NOT NULL DEFAULT '0',
`co_subject` varchar(255) NOT NULL DEFAULT '',
`co_content` longtext NOT NULL,
`co_mobile_content` longtext NOT NULL,
`co_skin` varchar(255) NOT NULL DEFAULT '',
`co_mobile_skin` varchar(255) NOT NULL DEFAULT '',
`co_tag_filter_use` tinyint(4) NOT NULL DEFAULT '0',
`co_hit` int(11) NOT NULL DEFAULT '0',
`co_include_head` varchar(255) NOT NULL,

View File

@ -141,7 +141,7 @@ function get_cookie($cookie_name)
{
$cookie = md5($cookie_name);
if (array_key_exists($cookie, $_COOKIE))
return base64_decode($_COOKIE[md5($cookie_name)]);
return base64_decode($_COOKIE[$cookie]);
else
return "";
}
@ -214,11 +214,12 @@ function url_auto_link($str)
// 140326 유창화님 제안코드로 수정
// http://sir.co.kr/bbs/board.php?bo_table=pg_lecture&wr_id=461
// http://sir.co.kr/bbs/board.php?bo_table=pg_lecture&wr_id=463
$str = str_replace(array("&lt;", "&gt;", "&amp;", "&quot;", "&nbsp;"), array("\t_lt_\t", "\t_gt_\t", "&", "\"", "\t_nbsp_\t"), $str);
$str = preg_replace("`(?:(?:(?:href|src)\s*=\s*(?:\"|'|)){0})((http|https|ftp|telnet|news|mms)://[^\"'\s()]+)`", "<A HREF=\"\\1\" TARGET='{$config['cf_link_target']}'>\\1</A>", $str);
$str = preg_replace("/(^|[\"'\s(])(www\.[^\"'\s()]+)/i", "\\1<A HREF=\"http://\\2\" TARGET='{$config['cf_link_target']}'>\\2</A>", $str);
$str = preg_replace("/[0-9a-z_-]+@[a-z0-9._-]{4,}/i", "<a href='mailto:\\0'>\\0</a>", $str);
$str = str_replace(array("\t_nbsp_\t", "\t_lt_\t", "\t_gt_\t"), array("&nbsp;", "&lt;", "&gt;"), $str);
$str = str_replace(array("&lt;", "&gt;", "&amp;", "&quot;", "&nbsp;", "&#039;"), array("\t_lt_\t", "\t_gt_\t", "&", "\"", "\t_nbsp_\t", "'"), $str);
//$str = preg_replace("`(?:(?:(?:href|src)\s*=\s*(?:\"|'|)){0})((http|https|ftp|telnet|news|mms)://[^\"'\s()]+)`", "<A HREF=\"\\1\" TARGET='{$config['cf_link_target']}'>\\1</A>", $str);
$str = preg_replace("/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
$str = preg_replace("/(^|[\"'\s(])(www\.[^\"'\s()]+)/i", "\\1<A HREF=\"http://\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
$str = preg_replace("/[0-9a-z_-]+@[a-z0-9._-]{4,}/i", "<a href=\"mailto:\\0\">\\0</a>", $str);
$str = str_replace(array("\t_nbsp_\t", "\t_lt_\t", "\t_gt_\t", "'"), array("&nbsp;", "&lt;", "&gt;", "&#039;"), $str);
/*
// 속도 향상 031011
@ -483,7 +484,7 @@ function search_font($stx, $str)
// 제목을 변환
function conv_subject($subject, $len, $suffix='')
{
return cut_str(get_text($subject), $len, $suffix);
return get_text(cut_str($subject, $len, $suffix));
}
// 내용을 변환
@ -528,7 +529,6 @@ function conv_content($content, $html, $filter=true)
$content = str_replace("\n ", "\n&nbsp;", $content);
$content = get_text($content, 1);
$content = url_auto_link($content);
}

View File

@ -10,13 +10,13 @@ if (!$co['co_id'])
$g5['title'] = $co['co_subject'];
include_once('./_head.php');
$str = conv_content($co['co_content'], $co['co_html'], $co['co_tag_filter_use']);
$co_content = $co['co_mobile_content'] ? $co['co_mobile_content'] : $co['co_content'];
$str = conv_content($co_content, $co['co_html'], $co['co_tag_filter_use']);
// $src 를 $dst 로 변환
unset($src);
unset($dst);
$src[] = "/{{쇼핑몰명}}|{{홈페이지제목}}/";
//$dst[] = $default[de_subject];
$dst[] = $config['cf_title'];
$src[] = "/{{회사명}}|{{상호}}/";
$dst[] = $default['de_admin_company_name'];
@ -44,21 +44,20 @@ $src[] = "/{{정보관리책임자e-mail}}|{{정보책임자e-mail}}/i";
$dst[] = $default['de_admin_info_email'];
$str = preg_replace($src, $dst, $str);
?>
<!-- 등록내용 시작 { -->
<article id="ctt" class="ctt_<?php echo $co_id; ?>">
<header>
<h1><?php echo $g5['title']; ?></h1>
</header>
// 스킨경로
if(trim($co['co_mobile_skin']) == '')
$co['co_mobile_skin'] = 'basic';
<div id="ctt_con">
<?php echo $str; ?>
</div>
$content_skin_path = G5_MOBILE_PATH .'/'.G5_SKIN_DIR.'/content/'.$co['co_mobile_skin'];
$content_skin_url = G5_MOBILE_URL .'/'.G5_SKIN_DIR.'/content/'.$co['co_mobile_skin'];
$skin_file = $content_skin_path.'/content.skin.php';
</article>
<!-- } 등록내용 끝 -->
if(is_file($skin_file)) {
include($skin_file);
} else {
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
}
<?php
include_once('./_tail.php');
?>

View File

@ -0,0 +1,18 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$content_skin_url.'/style.css">', 0);
?>
<article id="ctt" class="ctt_<?php echo $co_id; ?>">
<header>
<h1><?php echo $g5['title']; ?></h1>
</header>
<div id="ctt_con">
<?php echo $str; ?>
</div>
</article>

View File

@ -0,0 +1,8 @@
@charset "utf-8";
/* 내용관리 */
#ctt {margin:10px 0;padding:10px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9}
.ctt_admin {margin:0 5px;text-align:right}
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ctt_con {padding:10px 0}
.ctt_img {text-align:center}

View File

@ -6,7 +6,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">',
?>
<div class="lt">
<a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $bo_table ?>" class="lt_title" onclick="return false"><strong><?php echo $bo_subject ?></strong></a>
<a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $bo_table ?>" class="lt_title"><strong><?php echo $bo_subject ?></strong></a>
<ul>
<?php for ($i=0; $i<count($list); $i++) { ?>
<li>

View File

@ -52,6 +52,15 @@ if(G5_DEVICE_BUTTON_DISPLAY && G5_IS_MOBILE) {
if ($config['cf_analytics']) {
echo $config['cf_analytics'];
}
?>
<script>
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php
include_once(G5_PATH."/tail.sub.php");
?>

View File

@ -2,6 +2,7 @@
# kcp 본인확인 실행 파일
chmod 755 plugin/kcpcert/bin/ct_cli
chmod 755 plugin/kcpcert/bin/ct_cli_x64
# okname 본인확인 실행 파일
chmod 755 plugin/okname/bin/okname

View File

@ -15,7 +15,7 @@
<script type="text/javascript" src="./js/SE2B_Configuration_General.js" charset="utf-8"></script> <!-- 설정 파일 -->
<script type="text/javascript" src="./js/SE2BasicCreator.js?v3" charset="utf-8"></script>
<script src='js/smarteditor2.min.js' charset='utf-8'></script>
<script src='js/smarteditor2.min.js?v2' charset='utf-8'></script>
<script src='photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js' charset='utf-8'></script>
</head>
<body>

View File

@ -12138,9 +12138,19 @@ nhn.husky.SE2M_Hyperlink = jindo.$Class({
var sResult;
if (sWWWURL){
sResult = '<a href="http://'+sWWWURL+'">'+sURL+'</a>';
var exp = /([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)/gi;
if( sWWWURL.match(exp) ){
sResult = sWWWURL.replace(exp, '<a href="http://$1" >$1</a>');
} else {
sResult = '<a href="http://'+sWWWURL+'">'+sURL+'</a>';
}
} else {
sResult = '<a href="'+sHTTPURL+'">'+sURL+'</a>';
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
if( sHTTPURL.match(exp) ){
sResult = sHTTPURL.replace(exp,"<a href='$1'>$1</a>");
} else {
sResult = '<a href="'+sHTTPURL+'">'+sURL+'</a>';
}
}
return sBreaker+sResult;

File diff suppressed because one or more lines are too long

View File

@ -26,11 +26,11 @@ function make_mp3()
file_put_contents(G5_PATH.'/'.$mp3_file, $contents);
// 지난 캡챠 파일 삭제 (100번중에 한번만 실행)
// 지난 캡챠 파일 삭제
if (rand(0,99) == 0) {
foreach (glob(G5_PATH.'/data/cache/kcaptcha-*.mp3') as $file) {
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
unset($file);
@unlink($file);
}
}
}

BIN
plugin/kcpcert/bin/ct_cli_x64 Executable file

Binary file not shown.

View File

@ -101,8 +101,12 @@ if( $cert_enc_use == "Y" )
if ( $ct_cert->check_valid_hash ( $home_dir , $dn_hash , $veri_str ) != "1" )
{
// 검증 실패시 처리 영역
if(PHP_INT_MAX == 2147483647) // 32-bit
$bin_exe = '/bin/ct_cli';
else
$bin_exe = '/bin/ct_cli_x64';
echo "dn_hash 변조 위험있음 (".G5_KCPCERT_PATH."/bin/ct_cli 파일에 실행권한이 있는지 확인하세요.)";
echo "dn_hash 변조 위험있음 (".G5_KCPCERT_PATH.$bin_exe." 파일에 실행권한이 있는지 확인하세요.)";
exit;
// 오류 처리 ( dn_hash 변조 위험있음)
}

View File

@ -16,19 +16,19 @@ class C_CT_CLI
// 변수 초기화 영역
function mf_clear()
{
$this->m_dec_data="";
$this->m_dec_data="";
}
// hash 처리 영역
function make_hash_data( $home_dir , $str )
{
$hash_data = $this -> mf_exec( $home_dir . "/bin/ct_cli" ,
$hash_data = $this -> mf_exec( $home_dir . "/bin/ct_cli" ,
"lf_CT_CLI__make_hash_data",
$str
);
if ( $hash_data == "" ) { $hash_data = "HS01"; }
return $hash_data;
}
@ -49,7 +49,12 @@ class C_CT_CLI
// 암호화 인증데이터 복호화
function decrypt_enc_cert ( $home_dir, $site_cd , $cert_no , $enc_cert_data , $opt)
{
$dec_data = $this -> mf_exec( $home_dir . "/bin/ct_cli" ,
if(PHP_INT_MAX == 2147483647) // 32-bit
$bin_exe = $home_dir . '/bin/ct_cli';
else
$bin_exe = $home_dir . '/bin/ct_cli_x64';
$dec_data = $this -> mf_exec( $bin_exe ,
"lf_CT_CLI__decrypt_enc_cert" ,
$site_cd ,
$cert_no ,

View File

@ -0,0 +1,17 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$content_skin_url.'/style.css">', 0);
?>
<article id="ctt" class="ctt_<?php echo $co_id; ?>">
<header>
<h1><?php echo $g5['title']; ?></h1>
</header>
<div id="ctt_con">
<?php echo $str; ?>
</div>
</article>

View File

@ -0,0 +1,8 @@
@charset "utf-8";
/* 내용관리 */
#ctt {margin:10px 0;padding:10px;border:1px solid #e9e9e9}
.ctt_admin {text-align:right}
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ctt_con {padding:10px 0}
.ctt_img {text-align:center}