윈도우 클리너 2.2 업데이트

KCleaner

 

오랜만에 업데이트를 하여 배포합니다.

이번 버전의 핵심(?) 은 IE 에 연결되어 사용되는 툴바와 같은 플러그인을 제외하면서 웹서핑을 보다 빠르고 안전하게 하실 수 있습니다.

(Clean IE 를 체크하신 후, 반드시 사용할 플러그인만 체크하고 “초기화하기” 를 클릭하세요!!)

 

기능을 추가하게 된 동기를 간단히 적었습니다

  • 윈도우클리너에서 초기화를 통해 악성프로그램(??) 들이 종료를 시키는데, 이때 브라우저가 실행되면서 특정 플러그인 프로그램들(툴바 등)은 종료된 프로그램을 다시 실행시킴
  • 해당 플러그인들이 실력있는 프로그래머가 만든게 아닌게 대부분이라 웹서핑시 속도 저하 및 충돌이 나서 창이 닫히는 경우도 많음
  • 툴바를 정리해주는 유틸리티들을 사용시에 사용자가 툴바 관련 레지스터리를 지워도 실시간으로 해당 레지스터리를 다시 셋팅하는 프로그램들이 많음

스팸 게시물들이 사라졌다

게시판 등록기들은 게시판 솔류션에 맞춰서 제작 되는 것이 대부분이라, 그누보드 등록기 중 회원가입 후 글을 자동으로 등록 시킨다던가 하는데 현재 길호넷은 워드프레스의 회원가입을 통해 그누보드에 글을 작성할 수 있게 되어 있어, 기존 게시판 등록기로는 스팸글을 작성 할 수가 없다.

리뉴얼 전에는 수시로 스팸글을 지워야 했는데, 간만에 게시판을 확인해도 스팸글이 올라오지 않는다^^

그누보드에서 티스토리 스킨을 사용한다면?!

길호넷을 그누보드에서 워드프레스로 바꾼 제일 큰 이유는 디자인 때문이다.

워드프레스는 “테마”를 통해 레이아웃 디자인은 손쉽게 바꿀 수 있도록 되어 있다.

또한, 많은 사용자들을 확보하고 있어 “테마”를 만드는 개인, 회사 등 엄청 많아 테마 고르는 것 또한 하나의 즐거움이 될 수 있다.

쓸만한 테마는 대부분 유료지만 가격이 상대적으로 저렴하다.
(대부분, 50$ 미만)

예전에도 수시로 생각했던 거지만, 티스토리 스킨을 활용하여 그누보드 레이아웃을 바꾸면 어떨까 하고 생각을 해 본 적이 있다.

티스토리 스킨의 레이아웃 파일에서 컨텐츠가 출력되는 영역을 기준으로 상하로 분리하고, 기본적인 변수, 옵션 등을 처리해 준 후, head.php, tail.php 에서 각각 출력하게끔 하면 손쉽게 티스토리 스킨을 이용하여 그누보드에 적용 하여 사용할 수 있다.

(다만, 티스토리 스킨의 저작권에 대해 생각해 봐야 될 문제라서 계속 보류 중이였지만….)

워드프레스, 그누보드 연동

현재 길호넷에서 워드프레스와 그누보드를 연동한 방식입니다.

사이트를 좀 더 안정화를 시킨 후 소스를 공개하려고 하였는데, 그누보드 사용자분의 요청(?)으로 급조하여 만든걸 올립니다. (http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=741180)

추후, 그누보드의 head.php, tail.php 에서 워드프레스에서 생성된 페이지를 직접 불러들이고, 캐쉬 처리 및 컨텐츠 영역을 상하로 나눈 후 출력하는것을 생각하고 있습니다.

– 워드프레스 회원 DB 를 기반으로 그누보드와 연동되어, 게시판 글 작성시 워드프레스의 로그인에 따라 액션을 취합니다.
– 그누보드를 gnu.kilho.net 로 사용하고 있습니다. 따라서 워드프레스에서 서브도메인과 쿠키를 공유할 수 있게 하여야 합니다.
(길호넷에서는 “root Cookie” 라는 플러그인을 사용하였습니다)
– 워드프레스와 그누보드가 각각의 서버로 운영되고 있습니다. 소스 내용 중 자신의 워드프레스가 설치된 서버IP, 워드프레스가 설치된 도메인 정보를 각각 수정하세요.
– 워드프레스가 설치된 서버에 아래 소스를 “wp-sso.php” 로 저장합니다.

<?
	/********************************************************
	 * WordPress SSO(Single Site On) Helper Object 
	 * by Oh Kilho (http://www.kilho.net)
	 *******************************************************/

	include 'wp-load.php';
	
	$wp_cookie = $_COOKIE&#91;'wordpress_logged_in_'.md5(get_site_option('siteurl'))&#93;;
	$wp_user = $_POST&#91;'user'&#93;;
	$wp_pass = $_POST&#91;'pass'&#93;;

	if($wp_user&&$wp_pass)
	{
		if(user_pass_ok($wp_user, $wp_pass))
			$user = get_user_by('login', $wp_user);
	}else{
		if($wp_cookie)
		{
			wp_set_current_user(wp_validate_auth_cookie($wp_cookie, 'logged_in'));
			$user = wp_get_current_user();
		}
	}

	if($user)
	{
		echo '<id>'.$user->user_login.'</id>';
		echo '<nick>'.$user->display_name.'</nick>';
		echo '<email>'.$user->user_email.'</email>';
		echo '<url>'.$user->user_url.'</url>';
	}
?>

– 그누보드가 설치된 서버의 “/extend/” 디렉토리에 아래 소스를 “wp-sso.php”로 저장합니다.

<?
/*
 그누보드 확장 모듈 : 워드프레스 SSO 처리
 */
$wp_server_domain = '워드프레스 설치된 도메인'; // xxx.com
$wp_server_addr = '워드프레스 설치된 서버 IP'; // xxx.xxx.xxx.xxx
$wp_server_path = '워드프레스 설치된 경로'; // 루트일 땐 '/' 로 작성

$wp_cookie_name = 'wordpress_logged_in_'.md5('http://'.$wp_server_domain);
$wp_cookie_value = $_COOKIE&#91;$wp_cookie_name&#93;;

if ($_SESSION&#91;'ss_mb_id'&#93;)
{
	// 총 관리자인 경우 열외 - 그누보드를 자체적으로 살펴볼 권한을 줘야징
	if(!$wp_cookie_value&&$is_admin != 'super')
	{
		// 이호경님 제안 코드
		session_unset(); // 모든 세션변수를 언레지스터 시켜줌 
		session_destroy(); // 세션해제함 

		// 페이지를 재실행
		echo "<script type='text/javascript'> window.location.reload(); </script>";
		exit;
	}
}else{
	if($wp_cookie_value)
	{
		// 메인 서버에서 정보 취득
		$fp = fsockopen($wp_server_addr,80,$errno,$errstr,3);

		if($fp)
		{
			fputs($fp, "GET {$wp_server_path}wp-sso.php HTTP/1.1\r\n");
			fputs($fp, "Accept: */*\r\n");
			fputs($fp, "Accept-Language: ko\r\n");
			fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)\r\n");
			fputs($fp, "Host: $wp_server_domain\r\n");
			fputs($fp, "Connection: Close\r\n");
			fputs($fp, "Cookie: $wp_cookie_name=$wp_cookie_value\r\n");
			fputs($fp, "\r\n");

			$data = '';
			while(!feof($fp))
			{
				$data .= fgets($fp,1024);
			}

			fclose($fp);

			if($data)
			{
				foreach(array('id', 'nick', 'email', 'url', 'password') as $value)
				{
					preg_match('@<'.$value.'>(.*?)</'.$value.'>@',$data,$matches); 
					$wp_user[$value] = $matches[1];
				}
				$wp_user[pass] = substr(str_shuffle('abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'), 0, 12);

				$sql = " select mb_id from $g4[member_table] where mb_id='$wp_user[id]' ";
				$row = sql_fetch($sql);
				if($row[mb_id]!=$wp_user[id])
				{
					$sql = " insert into $g4[member_table]
									set mb_id = '$wp_user[id]',
										mb_password = password('$wp_user[pass]'),
										mb_name = '$wp_user[nick]',
										mb_nick = '$wp_user[nick]',
										mb_email = '$wp_user[email]',
										mb_homepage = '$wp_user[url]',
										mb_datetime = '$g4[time_ymdhis]',
										mb_ip = '$_SERVER[REMOTE_ADDR]',
										mb_level = '$config[cf_register_level]' ";
					sql_query($sql);
				}else{
					$sql = " update $g4[member_table]
									set mb_nick = '$wp_user[nick]',
										mb_email = '$wp_user[email]',
										mb_homepage = '$wp_user[url]'
									where mb_id = '$wp_user[id]' ";
					sql_query($sql);
				}
				unset($row);

				$mb = get_member($wp_user[id]);


				// 회원아이디 세션 생성
				set_session('ss_mb_id', $mb[mb_id]);
				// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
				set_session('ss_mb_key', md5($mb[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));

				// 페이지를 재실행
				echo "<script type='text/javascript'> window.location.reload(); </script>";
				exit;
			}
		}else{
			echo 'Connection failed';
			exit;
		}

	}
}
?>

구글에서 jquery 가져다 쓰기

트래픽 때문에 이미지, 플래쉬 파일들은 다른 서버로 옮겨놓고 연결해놨음

jquery 는 서핑중 아래와 같은 소스를 발견 후 구글에 연결

수정한 파일 : 테마/functions.php

//Making jQuery Google API
function modify_jquery() 
{
  if (!is_admin())
  {
    // comment out the next two lines to load the local copy of jQuery
    wp_deregister_script('jquery');
    wp_register_script('jquery', 
    'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', false, 
    '1.4.4');
    wp_enqueue_script('jquery');
  }
}
add_action('init', 'modify_jquery');