명령줄에 추가로 -noide 옵션을 주어야 작동

고스트2003 윈도용일 경우는 그냥 업데이트 한번 하고 하면 문제 없음.
2007/09/01 23:46 2007/09/01 23:46
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Name]
@="\"C:\\Program Files\\EditPlus 2\\editplus.exe\""



위 내용을 레지스트리에 병합
2007/09/01 23:45 2007/09/01 23:45
커맨드 라인에서 아래 명령을 실행한 후에 제어판의 사용자 계정에 가보면 암호 변경 메뉴가 생긴다.

net user guest password
2007/09/01 23:39 2007/09/01 23:39
TAG , ,
[서버운영] .htaccess와 워터마킹을 이용한 이미지 링크 방지

[원문]http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=39686&sca=&sfl=wr_subject%7C%7Cwr_content&stx=RewriteRule&sop=and




개인 계정에서 블로그등의 사이트를 운영하시는 분들 중 가끔 외부에서의 컨텐츠 직링크로 인해 트래픽 초과에 걸리시는 분들이 많습니다. 트래픽 문제가 아니더라도, 무단 링크로 인해 저작권을 침해받는 경우도 있겠죠.
이를 해결하기 위해 레퍼러비교 같은 방법도 쓰곤 하는데, 아마 .htaccess 파일을 이용한 것도 많이들 아실 겁니다.

간단히, .htaccess와 워터마킹 기술을 이용해 이미지 링크 제어를 하는 법을 소개합니다.

일단, 이미지들이 저장되는 디렉토리에 .htaccess파일을 만듭니다. (이미 존재한다면 아래의 소스를 마지막에 추가하시면 됩니다.)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !explug\.com [NC]
RewriteCond %{HTTP_REFERER} !eouia0\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteRule (.*) image.php?image=$1

...........
잠깐 설명을 하자면,

RewriteCond %{HTTP_REFERER} !explug\.com [NC]
RewriteCond %{HTTP_REFERER} !eouia0\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]

이 부분에 링크를 허용할 URL들을 기재합니다. 정규식 패턴이므로 잘 알아서.. :)
위의 예의 경우 explug.com, eouia0가 포함되는 사이트, google 등에 링크를 허용한 경우입니다. 이 경우에는 원본 이미지를 마음대로 가져다 쓸 수 있습니다.
그외의 URL에서 링크가 걸릴 경우에는

RewriteRule (.*) image.php?image=$1

에 따라, image.php?image=파일이름 으로 리다이렉트됩니다. 만약 그냥 링크 자체를 끊고 싶으시다면 여기에 아무거나 써주셔도 되지요.

이제 워터마킹 처리를 위해 image.php를 작성합니다. GD라이브러리를 사용했으므로 GD가 사용가능한 계정이어야 합니다.

<?
define ("WATERMARK", "watermark.jpg");

header("Content-type: image/jpeg");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$pic = strip_tags( $_GET['image'] );

$image_url = urldecode($pic);

if (!@fopen($image_url, "r")) {
    $dst_img = imagecreatefromjpeg(WATERMARK);
    $res = imagejpeg($dst_img, "", 100);
    die();
}

$file = pathinfo($image_url);
switch(strtoupper($file["extension"])) {
    case "JPG":
        $src_img = imagecreatefromjpeg($image_url);
        break;
    case "GIF":
        $src_img = imagecreatefromgif($image_url);
        break;
    case "PNG":
        $src_img = imagecreatefrompng($image_url);
        break;
}

$src_w = imagesx($src_img);
$src_h = imagesy($src_img);

$portion = $src_h / $src_w;
$dest_w = 300;
$dest_h = round($dest_w * $portion);

$dst_img = imagecreatetruecolor($dest_w, $dest_h);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);

$watermark = imagecreatefromjpeg(WATERMARK);

$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);

$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
imagecopy($overlay_img, $watermark, 0,0,0,0, $watermark_w, $watermark_h);
imagedestroy($watermark);

$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
imagecolortransparent($overlay_img, $white);

$offsetX = $dest_w - $watermark_w - 3;
$offsetY = $dest_h - $watermark_h - 3;

imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 100);
imagedestroy($overlay_img);

$res = imagejpeg($dst_img, "", 100);
imagedestroy($dst_img);
?>

실행예는 링크를 보시면 이해하실 수 있을 겁니다. 링크를 허용한 사이트에서는 원본이, 링크를 허용하지 않은 사이트에서는 image.php에 의해 워터마크처리된 이미지로 링크가 걸리게 됩니다. 여기에서는 예를 위해 워터마킹 처리된 이미지의 사이즈를 가로 300으로 고정시켰지만 이 부분은 적당히 소스를 고치시면 원하는 대로 적용시키실 수 있으실 겁니다.
2007/09/01 23:38 2007/09/01 23:38
[서버운영] 무한대 2차도메인 생성 (apache + mysql 이용)  
[원문] http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=13544&sca=&sfl=wr_subject%7C%7Cwr_content&stx=RewriteRule&sop=and 
글쓴이   신재국  날 짜 02-11-25 21:44  조 회 5527


Link1   http://terran.co.kr/ (7)


무한대 2차도메인 생성 (apache + mysql 이용)



안녕하세요.
프로그래머 생활이 재밌기를 바라며 한가지 tip 이라 생각되어 이렇게
글을 올립니다.


개인적으로, 한대의 서버에 여러 도메인과
각 도메인에 대한 2차 도메인을 회원들에게 서비스하고 있습니다.


허나, 회원들의 요청이 많아지게되자,
named 에 계속 추가하여 named restart 시켜주는 방법, 회원 관리가
적절치 못하다고 생각하였습니다.


이곳저곳 문서를 찾다가
우연히 apache 에서 세팅이 가능하며,
name 서버에 일일이 추가하지 않아도 되기에
저의 성공사례를 올립니다.


저의 경우 1대의 서버에
XXX.co.kr
YYY.co.kr
ZZZ.co.kr 도메인을 운영하고,
각각의 도메인에 2차도메인을 부여하여 운영하고 있습니다.

회원이 많아짐에 따라 mysql을 이용하여 2차도메인 정보를 저장하고 있습니다.



서버설정은 아래와 같습니다.


1. 아파치 세팅

1-1.
아파치는 mod_rewrite 모듈이 탑재되어 있어야 합니다.
아파치의 모듈들이 설치된 디렉토리에 mod_rewrite.so 가 없는 경우.

apache 를 다시 컴파일 합니다.

env CFLAGS="-DEAPI" \
./configure \
--prefix=/etc/httpd \
--enable-module=so \
--enable-shared=max \
--enable-module=rewrite \
--enable-shared=rewrite

make
make install



1-2.

httpd.conf 에서 다음을 확인하고 없으면 추가합니다.

LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c


1-3.
최 하단에 버&#52664;호스트를 다음과 같이 작성합니다.
저의 경우는 3개의 도메인을 사용하는 관계로
아래와 같이 3번을 작성하였습니다.

NameVirtualHost xxx.xxx.xxx.xxx

<VirtualHost xxx.xxx.xxx>
ServerName XXX.co.kr
ServerAlias *.XXX.co.kr
SetEnv force-no-vary
RewriteEngine on
RedirectMatch permanent ^/~([^/]+)(.*)$ http://$1.XXX.co.kr$2
RewriteCond %{HTTP_HOST} !^www\.XXX\.co\.kr$
RewriteCond %{HTTP_HOST} !^XXX\.co\.kr$
RewriteCond %{REQUEST_URI} !^/~(.+)$
RewriteCond %{HTTP_HOST} ^([^.]+)\.XXX\.co\.kr$
RewriteRule ^(.+) /home/XXX/htdocs/virtual/index.html
CustomLog logs/rewrite_access_log "%{VHOST}e %h %l %u %t \"%r\" %>s %b"
</VirtualHost>


<VirtualHost xxx.xxx.xxx.xxx>
ServerName YYY.co.kr
ServerAlias *.YYY.co.kr
RewriteEngine on
RedirectMatch permanent ^/~([^/]+)(.*)$ http://$1.YYY.co.kr$2
RewriteCond %{HTTP_HOST} !^www\.YYY\.co\.kr$
RewriteCond %{HTTP_HOST} !^YYY\.co\.kr$
RewriteCond %{REQUEST_URI} !^/~(.+)$
RewriteCond %{HTTP_HOST} ^([^.]+)\.YYY\.co\.kr$
RewriteRule ^(.+) /home/XXX/htdocs/virtual/index.html
CustomLog logs/rewrite_access_log "%{VHOST}e %h %l %u %t \"%r\" %>s %b"
</VirtualHost>


<VirtualHost xxx.xxx.xxx.xxx>
ServerName ZZZ.co.kr
ServerAlias *.ZZZ.co.kr
RewriteEngine on
RedirectMatch permanent ^/~([^/]+)(.*)$ http://$1.ZZZ.co.kr$2
RewriteCond %{HTTP_HOST} !^www\.ZZZ\.or\.kr$
RewriteCond %{HTTP_HOST} !^ZZZ\.or\.kr$
RewriteCond %{REQUEST_URI} !^/~(.+)$
RewriteCond %{HTTP_HOST} ^([^.]+)\.ZZZ\.or\.kr$
RewriteRule ^(.+) /home/XXX/htdocs/virtual/index.html
CustomLog logs/rewrite_access_log "%{VHOST}e %h %l %u %t \"%r\" %>s %b"
</VirtualHost>




2-1. named 설정

해당하는 zone 파일에서 호스트 이름에 "*" 문자를 사용합니다. (제일 하단부분에 추가)
*         IN         A         xxx.xxx.xxx.xxx



3-1. mysql table 생성 - 회원이 2차 도메인을 신청시 DB 저장

CREATE TABLE forward (
num int(11) NOT NULL auto_increment,                // 순번
u_id varchar(20) NOT NULL default '',                // 사용자 ID
f_id varchar(20) NOT NULL default '',                // 2차 도메인(아이디)
f_domain varchar(20) NOT NULL default '',        // 2차 도메인(순수 도메인)
title varchar(200) NOT NULL default '홈페이지에 오신걸 환영합니다',
home varchar(200) NOT NULL default '',        // 포워딩 처리될 개인 홈페이지 주소
comment varchar(200) default NULL,
reg_date timestamp(14) NOT NULL,
PRIMARY KEY (num),
KEY IDX_UID (u_id),
KEY IDX_FORW (f_id,f_domain)
) TYPE=MyISAM COMMENT='2차도메인 포워딩 서비스 테이블';





P.S

1)
웹 요청이 있을시에 해당 도메인은 모두
/home/XXX/htdocs/virtual/index.html 페이지를 열게 됩니다.
(아파치 설정 참고)


/home/XXX/htdocs/virtual/index.html 화일은 아래와 같습니다.

<html>
<head>
<title>::XXX.co.kr:: <?=$id?>.<?=$domain?> :: <?= $title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<frameset rows="100%,*" border=0>
<frame src=http://<?=$home?> name=_MAIN_><frame name=NARAE></frameset></head></html>
</body>
</html>



2) /home/XXX/htdocs/virtual/index.html 페이지에서는 다음과 같은 일을 해주어야 합니다.

우선,
test.XXX.co.kr 접속이 요청되면 test 와 XXX.co.kr 를 분리시키고,

회원이 신청한 2차 도메인을 mysql 에서 찾습니다.
정보에 맞는 내용을 mysql 에서
뽑아와서 아래의 index.html 에 적당히 뿌려주면 됩니다.



이상으로 허접 tip 을 올립니다.
기존 문서를 참고한것이며,

이곳에도 필요할것 같아..^^*


버그 또는 문제점은 리플 부탁합니다.
그럼 즐플 하세요.

적용사이트 http://terran.co.kr/



=======================
 
   샘플러    02-11-26 00:18  
좋은 정보 고맙구요. 조금만 응용하면 많은 활용가능하겠네요^^  

좋은 정보 고맙구요. 조금만 응용하면 많은 활용가능하겠네요^^
 
   와키    02-11-26 04:27  
호홋~! 좋네요. 감사합니다.  

호홋~! 좋네요. 감사합니다.
 
   달팽이    02-11-26 07:32  
아이디가 test일때
http://test.terran.co.kr/ 이렇게 말구요
http://terran.co.kr/test 이렇게두 가능한가요?  

아이디가 test일때
http://test.terran.co.kr/ 이렇게 말구요
http://terran.co.kr/test 이렇게두 가능한가요?
 
   첩현    02-11-26 08:11  
가능합니다.....
---------------
mod_rewrite 는 약간의 문제가 좀 있어서..
전 mod_rewrite하고 mod_vhost_alias 를 같이 쓰는데요...
mod_rewrite만 쓸때의 문제는 어느정도 해결이 됐네요.....  

가능합니다.....
---------------
mod_rewrite 는 약간의 문제가 좀 있어서..
전 mod_rewrite하고 mod_vhost_alias 를 같이 쓰는데요...
mod_rewrite만 쓸때의 문제는 어느정도 해결이 됐네요.....
 
   첩현    02-11-26 08:13  
근데.. 디비에서 뽑아서 한곳으로 연결후 저렇게 연결해 줄꺼면..
왜 mod_rewrite 를 쓰는지요? mod_rewrite 없이 단순 설정으로 저 부분은 가능합니다.  

근데.. 디비에서 뽑아서 한곳으로 연결후 저렇게 연결해 줄꺼면..
왜 mod_rewrite 를 쓰는지요? mod_rewrite 없이 단순 설정으로 저 부분은 가능합니다.
 
   신재국    02-11-26 10:34  
흐미,,, 계정없이 사용된다면,
궂이 rewite 를 쓸 필요가 없겠네요....

제가 뭔가 착각을 한것 같네요.

암튼 위의 내용은 계정.xxx.co.kr  을 적용할때,
사용되면 좋겠네요...참고하세요.  

흐미,,, 계정없이 사용된다면,
궂이 rewite 를 쓸 필요가 없겠네요....

제가 뭔가 착각을 한것 같네요.

암튼 위의 내용은 계정.xxx.co.kr  을 적용할때,
사용되면 좋겠네요...참고하세요.
 
   WOWpc    02-11-26 17:41  
rewrite 까지 쓸 필요 없는 내용인데요 괜히 복잡하게 하신듯...  

rewrite 까지 쓸 필요 없는 내용인데요 괜히 복잡하게 하신듯...
 
   JNJ    02-11-26 21:06  
mod_rewrite에 관한 정보만으로도 훌륭합니다.
좋은 팁이네요.  

mod_rewrite에 관한 정보만으로도 훌륭합니다.
좋은 팁이네요.
 
   난이    02-11-27 16:37  
저도 예전에 비슷한 방법으로 해보았습니다.
잘되긴 하는데 경우에 따라서는 안된다고 하는 클라이언트도 있었습니다.
대부분은 잘되는데 한두명이 안된다고 하더라고요.
제가 직접 확인한 적이 없어서 잘 모르겠습니다만, 혹시 그런 경험 해보신분 있으시면 올려주세요  

저도 예전에 비슷한 방법으로 해보았습니다.
잘되긴 하는데 경우에 따라서는 안된다고 하는 클라이언트도 있었습니다.
대부분은 잘되는데 한두명이 안된다고 하더라고요.
제가 직접 확인한 적이 없어서 잘 모르겠습니다만, 혹시 그런 경험 해보신분 있으시면 올려주세요
 
   ㅋㅋㅋ    03-02-11 02:28  
ㅡㅡ 잘못 쓰면 서버 부하 장난 아님니다.. 아파치 폭주~~
이거 말구 다른 방법 쓰세요..  

ㅡㅡ 잘못 쓰면 서버 부하 장난 아님니다.. 아파치 폭주~~
이거 말구 다른 방법 쓰세요..
 
   스리빠    03-08-12 21:30  
헐..2000년부터 난 2차도메인 * <--요걸루만 사용하는데..
DB같은거 필요 없음--; 걍 zone 화일에 * 만 추가하십시여  

헐..2000년부터 난 2차도메인 * <--요걸루만 사용하는데..
DB같은거 필요 없음--; 걍 zone 화일에 * 만 추가하십시여
 
   김성진    04-05-25 03:49  
리눅스 개발구룹에서 zone 파일과 httpd.conf 파일에
\" * \" 사용하는것이 DOS 공격과 보안에 대하여 취약하다는
발표가 있었습니다..
참고하세요..  

리눅스 개발구룹에서 zone 파일과 httpd.conf 파일에
\" * \" 사용하는것이 DOS 공격과 보안에 대하여 취약하다는
발표가 있었습니다..
참고하세요..
 
   아웅    05-07-13 20:05  
음..좋은정보 감사. 참고해서 셋팅해보겠습니다.  

음..좋은정보 감사. 참고해서 셋팅해보겠습니다.
 
   헐랭이   06-01-17 11:49  
ServerAlias *.XXX.co.kr  요것만 있어도 되는것 같은데요.
2007/09/01 23:37 2007/09/01 23:37