Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2010/06/07 ajax 로 자바스크립트 배열 받기
  2. 2010/06/07 $.get 대신 $.post 권장
  3. 2010/06/07 <form 안에 있는 checkbox를 radio 처럼 쓰기
  4. 2010/06/07 Jquery 체크박스 사용법
  5. 2010/06/07 jQuery.each break continue
  6. 2010/06/07 jQuery + 정규표현식( 이메일검증법)
  7. 2010/06/07 jquery 오른쪽 마우스금지
  8. 2010/06/07 iframe내의 id셀렉터
  9. 2010/06/07 ftp passive
  10. 2010/06/07 윈도우 - 네트워크 로드 균형 조정 구성
  11. 2010/06/07 mysql 외부 접속 설정
  12. 2010/06/07 아파치 웹서버에서 한글 파일 사용하기
  13. 2010/06/07 [mysql] 계정 생성/ DB권한부여 / 패스워드 변경/ 삭제
  14. 2010/06/07 mysql 4.0.27 설치시 에러 발생
  15. 2010/06/07 아파치로그 로테이션
  16. 2010/06/07 asp 파일 다운로드 문제
  17. 2010/06/05 가벼운 XP 용 - 비스타 테마 - Setup_Vista_Anthracite_1_20_Lite 2
  18. 2010/06/05 [설치마법사]_Install_Shield_Premier_2008_ver.14-패치포함
  19. 2010/06/05 [시스템 관리] nLite 1.4 ::: 나만의 최적화 윈도우를 만들어보자
  20. 2010/06/05 [시스템 관리] Ram Cleaner v7.0 Full
  21. 2010/06/05 VMware Workstation 7.1.0 Build 261024 Final
  22. 2010/06/05 [느려진컴퓨터]RAM회복,RAM용량되찾기,속도향상,렉없이게임 5
  23. 2010/06/05 다양한 사운드 포맷의 일괄변환 및 보내기 !!! Total Audio Conv 1
  24. 2010/06/04 텍스트를 이미지로 변환하는 간단소스(한글지원) - PHP
  25. 2010/06/04 리눅스 whistl 사용기
  26. 2010/06/04 2010년 제1차 우편번호 2010.02.25자 (최신) DB
  27. 2010/06/04 PHP 성능 벤치마크
  28. 2010/06/04 리룩스 상에서 iptable을 이용한 방화벽 설정입니다.
  29. 2010/06/03 Wget 으로 회원 정보 빼오기
  30. 2010/06/03 리눅스 콘솔에서 파일 지우면 휴지통으로 들어가게 한후 복원까지
// 서버측

[0] = "테스트1";
[1] = "테스트2";
[2] = "테스트3";

// 배열 받기

var bo_category = new Array(); // 전역변수를 배열로 선언

var result = request.responseText.split("\n"); // 엔터 구분자를 잘라서 배열로 만듬

for (var i=0; i<result.length; i++) {
    eval("bo_category"+result[i]); // bo_category 전역변수 배열에 배열 추가
};

// 결과

bo_category[0] = "테스트1";
bo_category[1] = "테스트2";
bo_category[2] = "테스트3";

3 개의 배열 생성
2010/06/07 14:14 2010/06/07 14:14
$.get으로 값을 가져올 경우 새 값이 적용이 안 되는 경우가 있습니다.
익스 도구 > 페이지 확인에서 "자동으로"가 체크된 경우에 그렇더군요.

$.post나 $.ajax({type:'post'})로 사용하면 말끔히 해결됩니다.

익스8에서 확인된 내용입니다.
2010/06/07 14:13 2010/06/07 14:13
<form id="fwishlist" ...
loop....
<input type=hidden name=it_id[$i] >
...end loop

        $("#fwishlist input:checkbox[name^=it_id]").click( function(){
                $("#fwishlist input:checkbox:checked[name^=it_id]").attr('checked',false);
                $(this).attr('checked',true);
        });
2010/06/07 14:12 2010/06/07 14:12
 

jquery를 이용한 체크박스 부분에 관련된 내용이 없어서 간단하게 한번 만들어보았습니다.

저보다 더 좋은 내용이 있으면 코멘트 달아주세요

<html>
<head>
<title></title>
<script  type="text/javascript" src="./script/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#selectall").click(selectAll);
 $("#save").click(save);
});
function selectAll()
{
 var checked = $("#selectall").attr("checked");
  $(".box").each(function(){
  var subChecked = $(this).attr("checked");
    if (subChecked != checked)
   $(this).click();
  });
}

function save()
{
 var result = "";
 $(".box:checked").each(function() {
 $("#"+$(this).val()).remove();  
  result += $(this).val();
  //AJAX로 넘겨줄때는  
  //.get('XXX.php',{SelType:$(this).val()});

  });
 alert(result);
}
</script>
</head>
<body>
<table>
<tr><td><input type="checkbox" id=selectall></td><td>1전체선택</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="1" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="2" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="3" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="4" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="5" class="box"></td><td>1</td></tr>
<tr><td><input type="button" value="저장" id="save"></td></tr>
</table>
</body>
</html>

2010/06/07 14:11 2010/06/07 14:11
each 메소드를 하는 하는 경우 for문과 같은 제어 문에서 사용되는 break , continue 의 쓰임이 필요 하다.
each에서는 return true(continue) 와 return false(break) 를 이용해서 break, continue와 같은 동작을 일으킬수 있다.

$('#loop').each(function(i){
    if( i == 0 ) return true; //continue;
    return false;//break;
});
2010/06/07 14:11 2010/06/07 14:11
 

function ajax_email_ch() {
 var email1 = $("#email1").val();
 var email2 = $("#email2").val();

 var email_ch = email1 + "@" + email2;
   if(email_ch.match(/\w+[/\w.]*@[/\w.]+\.\w+/)) {
     이메일이 맞을경우...
   }
 }

찾아봐도 없어서 간단히 만들어봤습니다.
제가 사용하려고 만든거라 정리되지 않았는데...
쉬운 소스이니 변형하셔서 사용하셔여~.~

2010/06/07 14:10 2010/06/07 14:10
$(document).bind("contextmenu", function(e){
    alert("오른쪽마우스금지입니다.");
    return false;
 });
2010/06/07 14:09 2010/06/07 14:09
$('#iframeID').contents().find('#someID').html();

전 이걸 몰라서 헤멨는데 다른분은 다 아시고 계신건가요? -0-;;
2010/06/07 14:08 2010/06/07 14:08

ftp passive 설정법입니다

#모듈을 내리고
rmmod ip_conntrack_ftp
#설정값을 넣어서 다시 올림
/sbin/modprobe ip_conntrack_ftp ports=포트번호,포트번호...

#재부팅시 올라오게 brigefirewall에 수정
vi /etc/rc.d/init.d/bridgefirewall
/sbin/modprobe ip_conntrack_ftp ports=포트번호,포트번호... #라인 수정

포트 볼려면 /sys/modules/ip_conntrack_ftp/parametter/ports

2010/06/07 14:07 2010/06/07 14:07
Windows 2000 Advanced Server 또는 Datacenter Server에서 NLB(네트워크 로드 균형 조정)를 구성하고 사용 가능하도록 설정하는 방법


NLB가 설치되어 있지 않으면 아래 단계를 수행하여 설치할 수 있습니다.

1. 시작을 누르고 설정을 가리키고 제어판을 누른 다음 네트워크 및 전화 접속 연결을 두 번 누릅니다.

2. NLB를 설치할 인터페이스를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.

3. 설치를 누르고 서비스를 누른 다음 추가를 누릅니다.

4. 네트워크 로드 균형 조정을 누른 다음 확인을 누릅니다.

Microsoft Windows NT 4.0 WLBS(Windows 로드 균형 조정 서비스)에서 Windows 2000 Advanced Server 또는 Windows 2000 Datacenter Server로 업그레이드하면 NLB가 자동으로 설치되고 WLBS 구성 설정이 NLB로 전송됩니다. Windows 2000 NLB와 Windows NT 4.0 WLBS가 상호 운용되기 때문에 WLBS 클러스터 호스트는 한 번에 하나씩 업그레이드할 수 있습니다.



Windows 2000에서 NLB를 구성하는 방법

1. NLB가 사용 가능하도록 설정되어 있으면 2단계로 건너뜁니다. 그렇지 않으면 아래 작업을 수행합니다.

a. 시작을 누르고 설정을 가리킨 다음 네트워크 및 전화 접속 연결을 누릅니다.
b. 가상 어댑터 역할을 해야 할 인터페이스를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.
c.네트워크 로드 균형 조정 확인란을 눌러 선택합니다.

2. 네트워크 로드 균형 조정 구성 요소를 누른 다음 등록 정보를 누릅니다.

3. 클러스터 매개 변수, 호스트 매개 변수 및 포트 규칙 탭에서 클러스터 전용 데이터를 입력합니다. 예를 들어, 주 IP 주소 상자에 클러스터가 균형 조정을 로드할 IP 주소(가상 IP 주소 또는 VIP라고도 함)를 입력합니다. 상자에 입력해야 할 데이터에 대한 설명을 보려면 창 오른쪽 상단에 있는 물음표 단추를 누른 다음 해당 필드를 누릅니다. 모든 작업을 마쳤으면 확인을 누릅니다.

4. 인터넷 프로토콜(TCP/IP)을 누른 다음 등록 정보를 누릅니다. 다음 IP 주소 사용을 누른 다음 IP 주소 상자에 가상 IP 주소를 입력합니다. 가상 IP 주소와 다른 IP 주소가 인터페이스에 지정되어 있으면 고급을 누른 다음 IP 설정 탭의 IP 주소 상자에 가상 IP 주소를 추가합니다.

일반적인 로드 균형 조정 설정의 구성에 대해 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

http://support.microsoft.com/default.aspx?scid=kb;KO;198496 WLBS 포트 규칙을 설정하는 방법

http://support.microsoft.com/default.aspx?scid=kb;KO;219277 WLBS를 사용하여 HTTP 로드 균형 조정
2010/06/07 14:06 2010/06/07 14:06

보통 기본설치만 한 상태면 localhost로만 접속이 가능하도록 설정이 되어있는데, 외부에서 접속이 가능하도록 설정을 바꿔보자.

여기서는 root계정을 예로 들어 설명한다.

1. mysql 접속 후 mysql database 선택
mysql> use mysql;
2. user 테이블 살펴보기
mysql> select host, user, password from user;
root 의 host 값들은 localhost, 127.0.0.1 등으로 기본 등록되어 있지만, 외부접속을 나타내는 값이 없다. 특정 아이피로 지정할 수도 있지만 여기선 % 기호로 어디서든 접속 가능하게 만든다.
3. 권한 설정
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root의 패스워드';
Query OK, 0 rows affected (0.03 sec)
4. 등록확인하기
mysql> select host, user, password from user;
root 계정의 host 필드에 % 가 등록되었는지 확인한다.
5. refrash
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

여기까지 간단한 과정을 통해서 mysql외부접속이 가능해진다.

2010/06/07 14:05 2010/06/07 14:05
1. DSO 방식으로 설치된 APACHE

[root@soma]# /usr/local/apache/bin/httpd -l

Compiled-in modules:
 
http_core.c
mod_so.c -> ( DSO 방식으로 설치된 것을 확인할 수 있는 모듈 )

위의 mod_so.c 모듈이 올라와있다면 간단하게 추가가 가능하게 됩니다. 방법은 아래와
같습니다.

mod_url.c 파일은 홈페지지 
DownLoad에서 다운 받으시길 바랍니다.

1-1. 설치

[root@soma]# /usr/local/apache/bin/apxs -i -a -c mod_url.c ( 만약 apxs 가 설치되어있지 않다면 아래 설치방법 참조 )

$ apxs -i -a -c mod_url.c    gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_url.c 
ld -Bshareable -o mod_url.so mod_url.o 
cp mod_url.so /path_to/apache/libexec/mod_url.so 
chmod 755 /path_to/apache/libexec/mod_url.so 
[activating module `redurl' in  /path_to/apache/etc/httpd.conf] 
 
1-2. 확인

[root@soma]# vi /usr/local/apache/conf/httpd.conf

LoadModule redurl_module      libexec/mod_url.so 
AddModule mod_url.c


위의 2 가지 파일이 추가되었다면 정상적으로 설치되었다고 판단할 수 있습니다.

1-3. 활성화

[root@soma]# vi /usr/local/apache/conf/httpd.conf

<IfModule mod_url.c> 
    CheckURL On 
</IfModule>


conf 파일에 위의 문장을 아무곳에나 추가한다.

1-4. 데몬재시작

[root@soma]# /usr/local/apache/bin/apachectl restart


apxs 가 설치되어 있지 않은 경우는 아래처럼 설치하시면 됩니다.

2-1. 설치
[root@soma]# cp mod_url.c /usr/local/apache/include
[root@soma]# cd /usr/local/apache/include
[root@soma include]# gcc -fpic -DSHARED_MODULE -I/usr/include/apache -DEAPI -c mod_url.c
[root@soma include]# ls -al mod_url.o
[root@soma include]# gcc -shared -o mod_url.so mod_url.o
[root@soma include]# ls -al mod_url.so
[root@soma include]# cp mod_url.so /usr/local/apache/libexec
[root@soma include]# chmod 755 /usr/local/apache/libexec/mod_url.so

2-2. 추가


[root@soma]# vi /usr/local/apache/conf/httpd.conf

LoadModule redurl_module      libexec/mod_url.so 
AddModule mod_url.c


위의 2 가지 파일을 추가하시면 됩니다.

2-3. 활성화

[root@soma]# vi /usr/local/apache/conf/httpd.conf

<IfModule mod_url.c> 
    CheckURL On 
</IfModule>


conf 파일에 위의 문장을 아무곳에나 추가한다.

2-4. 데몬재시작

[root@soma]# /usr/local/apache/bin/apachectl restart

2010/06/07 14:04 2010/06/07 14:04
1. GRANT 명령어를 사용하여 계정생성 및 DB 권한 주기
mysql> GRANT ALL PRIVILEGES ON *.* to mk@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
// 모든 DB 접속권한 부여 및 root 권한 부여, mk라는 유저는 localhost 에서만 접속가능 (내부접속)
mysql> flush privileges; //권한로드
: 모든곳(외부)에서 접속가능하게 하려면 mk@localhost 부분을 mk@'%' 로 바꿔주면 됨
: mk계정이 특정한 곳에서만 접속 가능하게 하려면 mk@localhost 부분을 mk@'ip주소' 로 바꿔주면 됨
: mk계정이 특정 DB에 접속을 하며(보이며) 해당 DB에'만' root 권한(모든 명령어) 을 줄때는 *.* 부분을 DB명.* 로바꿔주면 됨
: mk계정에 특정 명령어(권한)만 사용하게 할때는 ALL PRIVILEGES 부분을 바꿔주면 됨
ex) GRANT select, insert, delete, update ~~.... (select, insert, delete, update 만 실행 할 수 있음)

* GRANT 명령어가 아닌 mysql DB의 user테이블과 db 테이블을 이용하는 방법도 있지만 번거로우므로 패스..

2. 계정 패스워드 변경
root 권한으로 mysql 접속
mysql> show databases; //모든 db 목록 출력
mysql> use mysql; //mysql 이라는 db를 사용
mysql> show tables; // mysql DB의 모든 table 목록을 출력
mysql> show columns from user; // user 테이블의 구조를 살펴본다. desc user 로 해도 됨
mysql> UPDATE user SET password = password('변경패스워드') WHERE user = '계정';
// 매치된 row 가 있는지, 변경된게 몇개인지에 대한 결과가 나온다. 모든 결과가 0이라면 제대로 적용되지 않은것. 특정 계정만 바꾸려고 했으니 당연히 1이라는 결과값이 나와야 한다.
/* Result Example
 Query OK, 1 row affected (0.02 sec)
 일치하는 Rows : 1개 변경됨 : 1개 경고 : 0개
*/
mysql> flush privileges;

// mysql DB 선택후 바로 UPDATE 명령어를 내리면 된다. 여타 명령어는 DB를 확인하며 찾아가는 과정임..

3. 계정 삭제
root 계정 접속후
mysql> use mysql;
mysql> drop user 계정명;
// 관련 DB 정보 삭제

2010/06/07 14:04 2010/06/07 14:04
mysql 4.0.27 설치시 에러 발생

checking "LinuxThreads"... "Not found"
configure: error: This is a linux system and Linuxthreads was not
found.On linux Linuxthreads should be used.  Please install Linuxthreads
(or a new glibc) and try again.  See the Installation chapter in the


echo '/* Linuxthreads */' >> /usr/include/pthread.h
2010/06/07 14:02 2010/06/07 14:02
1시간 동안 로그가 많이 쌓일 때도 있지만,
로그가 많이 쌓이지 않을 때도 있을 수 있습니다.
logrotate 를 사용하세요.

logrotate 를 사용하면 지정한 용량보다 로그 화일의 크기가 커질 경우에만
새로운 로그 파일을 생성하고 지정한 용량까지 찬 화일은 따로 보관 합니다.

아래 내용을 /etc/logrotate.conf 에 넣어두면
 /usr/local/apache/logs/access_log  이 100MB 가 넘을 때마다
access_log.0
access_log.1
순서로 로그 화일을 백업하도록  설정할 수 있습니다.
아래에 rotate 가 3으로 지정되어 있기 때문에
로그 파일이 3개가 넘으면 가장 오래된 파일은 새로운 로그 화일이 생성될 때마다 자동으로 지워집니다.

 /usr/local/apache/logs/access_log  {
           rotate 3
           size=100M
           sharedscripts
           postrotate
                /bin/kill -hup `cat /usr/local/apache/logs/httpd.pid`
           endscript
}

/etc/logrotate.conf 에 설정된 내용을 실행하는 명령은
/usr/sbin/logroate /etc/logrotate.conf 입니다.
위 내용은 /etc/cron.daily  , /etc/cron.monthly 등등의 디렉토리 속에있는
logrotate 파일 속에 들어있습니다. 확인해 보세요.
위 /etc/cron.daily/logrotate  를 /etc/cron.hourly/ 에 넣어두면
한 시간 마다  /usr/local/apache/logs/access_log 가 100MB 가 넘었는지 체크해서 넘었을 경우에 로그화일을 rotate시킵니다.

conf 화일의 내용 중
/bin/kill -hup httpd프로세스아이디 부분은 로그 화일이 변경될 때 꼭 해 주어야 합니다.
만약 위 부분이 없을 경우 아파치 서버에 이상이 생길 수 있습니다.
2010/06/07 14:01 2010/06/07 14:01

웹서버에 c:\windows\system32\inetsrv\MetaBase.xml 에서 보시면 되고

시작 -> 제어판 -> 관리도구 -> 서비스에서

IIS Admin 을 중지하셔야 정상적으로 metabase.xml 파일을 수정하실 수 있습니다.


수정후에 IIS Admin 관련 하위 항목들을 재시작

'---------------------------------------------------------------------------

그리고 2번째 이야기


.xls 엑셀파일은 다운이돼도

.gul . hwp<-- 뭐이런 확장자 파일은 또 오류가 나네요??;;


office파일은 a href로 다운이 됩니다.

즉 MS사것은 모두..

그리고,gif나 jpg는 바로 웹브라우저로 뜹니다.

그러나 기타 GUI나 머 이런것들은 반드시 다운받을 수 있는 소스가 있어야만 가능합니다.

즉, 기타의 첨부파일은 다운로드 소스없이 다운 받으실 수 없습니다.


[해결방법]

1. IIS 6(인터넷 서비스 관리자)를 중지시킨다.

   (컴퓨터 선택 후 오른쪽 마우스 클릭 -> 모든작업 -> IIS 다시 시작을 클릭 후 중지 선택)

2. c:\windows\system32\inetsrv\MetaBase.xml 파일을 메모장 등으로 연다.

   AspMaxRequestEntityAllowed="204800000" <- 업로드 용량제한을 200MB로 설정한 예

   AspBufferingLimit="204800000" <- 다운로드 용량제한을 200MB로 설정한 예

   byte로 입력하기 때문에 1024 는 1KB이므로 알아서 잘 계산하세요 ^^

3. MetaBase.xml을 저장하고 그 다음 IIS 6를 시작한다. (IIS 다시 시작을 클릭 후 시작 선택)

2010/06/07 13:59 2010/06/07 13:59
 Setup_Vista_Anthracite_1_20_Lite 입니다.

많은 xp용 비스타 테마 가 있지만 많이 무겁고 시스템이 느려지는데
 
이것은  가벼워서 시스템에 무리가 없습니다.
 
그리고 xp의 작업표시줄을 이쁘게 만들어 주네요.
2010/06/05 16:29 2010/06/05 16:29
사용자 삽입 이미지
Install_Shield_Premier_2008_ver.14-패치포함
 
 
설치방법
 
1. 압축을 해제하신후 생성된 폴더를 보시면 installshield2008파일과 크랙패치가 있습니다.
 
2. installshield2008실행후 시리얼번호를 입력하는 화면에서 그냥 입력하지 않고 다음버튼.
 
3. 설치완료화면에서 Lunch..... 체크가 되어 있는것을 해제하시고 완료버튼.
 
4. 폴더에 있는 크랙패치파일을 더블클릭하시고 이제 사용하시면 됩니다.
 
테스트가 완료된 파일입니다.
2010/06/05 16:27 2010/06/05 16:27
nLite 1.4 입니다
 
순수 원본 윈도우을 nLite 로 이용하여 자신만의 최적화된 윈도우를 만들수 있습니다.
XP만 가능 합니다.
그냥 설치하시면 됩니다.
 
적용 예)
시디키 입력 -> 무인설치
필요없는 어플리케이션 지우기 -> 최적화
자동설치 프로그램 설치 -> 통합설치
핫픽스 통합
서비스팩 통합
 
 
나만의 윈도우를 만들어 씁시다.
2010/06/05 16:20 2010/06/05 16:20
사용자 삽입 이미지사용자 삽입 이미지
사용자 삽입 이미지사용자 삽입 이미지
압축풀고 ramcleaner_trial.exe  설치하신후
설치된폴더에  RamCleaner.exe  파일 덮어씌우세요.
2010/06/05 16:16 2010/06/05 16:16

http://www.vmware.com/products/workstation/overview.html
 
VMware Workstation 은 데스크탑을 위한 강력한 가상머신 소프트웨어 입니다.
 
파워 유저들에게 최적화된 VMware Workstation 은 하나의 PC 상에서 완벽한 네트워크를 지원하며,

가상 머신을 통해 Microsoft Windows, Linux, Novell NetWare 등을 포함한 여러개의 운영체제들을

동시에 사용할수 있게 해줍니다.

2010/06/05 16:14 2010/06/05 16:14

사용자 삽입 이미지
컴퓨터를 사용하는데 꼭 필요한 프로그램!

메모리관리의 최강자

왠만한 컴퓨터에 깔아놓으면

게임에 렉도 없고 새것같은 컴퓨터에 놀래실거에요

RAM용량 회복이 늦어지면 프로그램을 돌려서 쓸데 없는데에

RAM사용량을 회복시키는 아주 좋은 프로그램입니다.

한글 패치법은 안에 설명서 있습니다 보고 하세요

처음설치하시면 영문으로 나오는데 한글패치하시고 사용하세요

2010/06/05 15:44 2010/06/05 15:44

무설치버전으로 바로 사용하시면 됩니다 !!!
프로그램을 실행하시면
언어설정창이 나타납니다.
참고로 최신버전은 v3입니다.
 
 


Total Audio Converter는

WAV, WMA, MP3, CDA, OGG, MPC, AAC, APE, FLAC 사운드 파일간에 상호 포맷 변환 및 오디오 시디 립핑, 오디오 시디 제작, 보내기등 다양한 기능을 제공해주는 프로그램입니다.
 
직관적이고 사용하기 편리한 탐색기 스타일의 인터페이스로 구성이 되어 있어서 손쉽게 사용이 가능합니다.
 
좌측의 탐색기 창을 통해서 사운드 파일이 들어있는 폴더를 선택하시면 우측의 리스트창에 좌측에서 선택한 폴더에 들어있는 사운드 파일의 리스트가 나타납니다. 이중 변환을 원하는 파일에 체크 표시를 하거나 선택을 하시면 하단에 타이틀명, 아티스트, 코멘트, 앨범명, 년도, 쟝르, 정보등이 나타납니다.
 
변환 방법은 상단에 있는 Convert to : WAV, MP3, WMA, OGG, MPC, AAC, MP4, APE, FLAC, Rip CD, YouTube, Write CD 메뉴를 클릭하면 단계별 마법사 방식의 창이 나타나고 이 창을 통해 세부적인 설정을 조절한 후 변환하면 됩니다.


2010/06/05 15:39 2010/06/05 15:39

function textToImage($text, $fname, $fsize) {
    $text = iconv("EUC-KR", "UTF-8", $text); // 한글지원
    $padding = 10; // 이미지여백
    $ttf  ="폰트가 있는 서버경로";
    $size = imagettfbbox($fsize, 0, $ttf, $text);
    $xsize = abs($size[0]) + abs($size[2])+($padding*2);
    $ysize = abs($size[5]) + abs($size[1])+($padding*2);
    $image = imagecreate($xsize, $ysize);
    $bcolor = imagecolorallocate ($image, 255, 255, 255);
    $fcolor = imagecolorallocate ($image, 255, 0, 0);
    imagefilledrectangle($image, 0, 0, $xsize, $ysize, $bcolor);
    imagettftext($image, $fsize, 0, $padding, $fsize+$padding, $fcolor, $ttf, $text);
    imagejpeg($image,$fname, 85);
    imagepng($image);
    imagedestroy($image);
}

textToImage("한글 English 특수문자 ♥","title1.jpg","25");
2010/06/04 06:09 2010/06/04 06:09
서버에 이상한움직임이 있어서.... 공격 들어오는듯....
방화벽 보수적으로 잡고 로그 분석해서 불안해 보이는 페이지들 막거나 수정하고,
침입 탐지용 스크립트 만들어서 크론에 1분에 한번씩 돌렸죠... 침입탐지 되면 SMS 쏘게..

그래도 안심 안돼서.. KRCert 가 보니 whistl 이라는 웹쉘 탐지 프로그램이랑
castle 이라는 일종의 필터링 프로그램을 발견하고 테스트 해보았습니다.

둘다 ASP 용 PHP 용 다 나와 있습니다.

우선castle 이라는 프로그램은 설치법 간단합니다.
작으만한 사이트에 붙여 봤는데.. 작아서 그런지 부하는 모르겠네요...
castle 관리자에서 대충 필터링 되는것들 들여다 봤는데..
그냥 단순한 정도인듯 하네요..
없는거보단 나으니 그냥 하나 셋팅해두는거도 괜찮을듯 합니다..


그다음 whistl 이놈은  바로 다운로드가 안되고 요청을 하면 보내주네요...
2-3일 내로 보내준다고 돼 있습니다.

아이디 패스워드랑 같이 프로그램을 보내주네요..
리눅스는 커널 2.4 랑 2.6 버전 2종류가 있고 서버에 맞게 실행권한 죠서 실행시키면 됩니다.



whistl_kernel_2.6    이게 2.6 커널용입니다.  실행권한 죠서 실행시키죠
validate.bin            이건 아이디 패스가 암호화 돼 있는 파일인듯 합니다. 반드시  필요하죠.
pattern.bin            이건 환경설정을 저장하는 파일인듯 합니다.




whistl -c  하면  환경설정 화면으로 들어가고요..

whistl Configuration
        [1] Checking Directory : /home/www
        [2] Inspection Center directory : /home/whistl/tmp
        [3] Extension of php    : inc,php,htm,html
        [4] Extension of jsp    : jsp,js
        [s] save
        [q] quit
Choose Menu:

메뉴에서 수정할줄을 선택해서 값을 입력하면 됩니다.
값이 여러개일때는 , 로 나열 합니다.

만일 값을 주었는데 수정이 안된다면  pattern 파일에 대한 쓰기 권한이 있는지 확인해봐야 될듯 합니다.



실제 검사는 아래처럼...
검사시 디렉토리 추가는 -d 옵션으로 디렉을 지정해주면 된다고 하네요.
-u -p 안해주면 실행시키고 로그인 하게 돼 있습니다.

[root@localhost whistl]# ./whistl -u 아이디 -p 암호
Checking the configration
        [Config] Checking directory : /home/www
        [Config] Inspection Center directory : /home/whistl/tmp

Checking the update status
        [INFO] Pattern Update Finished

Checking /home/www directory
        [1 Found] /home/www/intra/board/imgskin/green/icon_re.php

Check Result
        [INFO] 5978 Files checked
        [INFO] 1 Suspected WebShell
        [INFO] Time cost : 00:28:50
        [INFO] Finish sending the checking result

[Press <ENTER> to continue]

        [1] [1 Found] /home/www/intra/board/imgskin/green/icon_re.php

[ view result(v), select (hit num), quit(q) ] :


파일 하나가 숨어 있네요... 이론.... X...

사이트 하나 체크에 30분 정도 걸리는거 같고요... 위에 파일수 6000개 정도...
4 cpu 인데  cpu 하나가 100% 나오는데...
load average  가  1 조금더 상승하네요..

큰 부하안걸려서 사이트 돌리는 중에 체크하셔도 될듯 하긴한데....
한번씩들 체크해보세요...
2010/06/04 00:20 2010/06/04 00:20
http://www.zipfinder.co.kr/ 다운 받아서 MY-SQL 백업 용으로 변경 했습니다.

MY-SQL 쿼리브라우저 에서 데이터 복원 하시면 편하게 쓸수 있습니다.

최신 우편본호 원본 파일은  http://www.zipfinder.co.kr/  곳에서 다운받아서 사용하십시오.

현  2010 최신 자료 입니다


2010/06/04 00:17 2010/06/04 00:17
유용한 링크 소개하는거라 딱히 팁이랄 것도 없습니다. ^^;

http://www.phpbench.com/

위 사이트에 들어가보시면 PHP 개발자들이 궁금해할만한 이슈에 대한 벤치마크 결과가 있습니다.

- for가 빠를까, while이 빠를까?
- echo가 빠를까, print가 빠를까?
- foreach, for, while 중 뭐가 빠를까?
- == 가 빠를까, ===가 빠를까?

등에 대한 성능 벤치마크 자료가 있습니다.

개발하실 때 참고하세요~
2010/06/04 00:10 2010/06/04 00:10
리룩스 상에서 iptable을 이용한 방화벽 설정입니다.
별로 쓸일이 많지는 않겠지만.
짬짬이 책보고 만든건데 기본적인건 해봤는데 몇가지는 테스트 못했습니다.
SSL 지원되는 IMAP이나 SECONDARY NAMESERVER 같은거 말이죠.
기본룰은 모든걸을 막고 필요한 것만을 통과시키는 규칙입니다.
윈도우용 편집기를 이용해서 작성하면 정상적인 작동이 안됩니다.
-------------------------------------------------------------------
#!/bin/sh
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
#네트워크가 활성화상태인지체크
if [ ${NETWORKING} = "no" ]; then
    exit 0
fi
#iptable설치확인
if [ ! -x /sbin/iptables ]; then
    exit 0
fi
#변수선언
IPADDR=`ifconfig eth0 | fgrep -i inet | cut -d : -f 2 | cut -d " " -f 1`    #ip주소
EXTERNAL_INTERFACE="eth0"            #외부인터넷연결인터페이스
LOOPBACK_INTERFACE="lo"            #루프백인터페이스
PRIMARY_NAMESERVER="111.111.111.111"        #1차내임서버
SECONDARY_NAMESERVER="222.222.222.222"    #2차내임서버
SMTP_SERVER="333.333.333.333"            #메일서버
LOOPBACK="127.0.0.0/8"            #예약된루프백주소범위
CLASS_A="10.0.0.0/8"                #A클래스사설ip범위
CLASS_B="172.16.0.0/12"            #B클래스사설ip범위
CLASS_C="192.168.0.1/16"            #C클래스사설ip범위
CLASS_D_MULTICAST="224.0.0.0/4"        #D클래스멀티캐스트주소
CLASS_E_RESERVED_NET="240.0.0.0/5"        #E클래스의예약된주소
BROADCAST_SRC="0.0.0.0"            #브로드캐스트소스주소
BROADCAST_DEST="255.255.255.224"        #브로드캐스트목적지주소
PRIVPORTS="0:1023"                #특권(privilege)을 준 포트범위
UNPRIVPORTS="1024:"                #특권을 주지않은(unprivilege)포트범위
SSH_LOCAL_PORTS="1022:65535"            #로컬클라이언트를 위한 포트범위
SSH_REMOTE_PORTS="513:65535"        #원격클라이언트를 위한 포트범위
TRACEROUTE_SRC_PORTS="32769:65535"
TRACEROUTE_DEST_PORTS="33434:33523"
#모든규칙삭제
iptables -F
#사용자정의 체인삭제
iptables -X
#기본정책을 DROP으로 한다
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#루트백인터페이스에 대해 무제한의 트래픽을 허용
iptables -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT
iptables -A OUTPUT -o $LOOPBACK_INTERFACE -j ACCEPT
#./rc.firewall.blocked 파일에 있는 주소를 거부한다
if [ -f ./rc.firewall.blocked ]; then
    deny_file="./rc.firewall.blocked"
    while read ip_addy
    do
        case $ip_addy in
            *)echo "$ip_addy DROP"
            iptables -A INPUT -i $EXTERNAL_INTERFACE -s $ip_addy -j DROP
            iptables -A INPUT -i $EXTERNAL_INTERFACE -d $ip_addy -j DROP
            iptables -A OUTPUT -o $EXTERNAL_INTERFACE -s $ip_addy -j REJECT
            iptables -A OUTPUT -o $EXTERNAL_INTERFACE -d $ip_addy -j REJECT
        ;;
        esac
    done < $deny_file
    unset deny_file
fi
unset ip_addy
#./rc.firewall.accepted 파일에 있는 주소를 허락
if [ -f ./rc.firewall.accepted ]; then
    allow_file="./rc.firewall.accepted"
    while read ip_addy
    do
        case $ip_addy in
            *)echo "$ip_addy ACCEPT"
            iptables -A INPUT -i $EXTERNAL_INTERFACE -s $ip_addy -j ACCEPT
            iptables -A OUTPUT -o $EXTERNAL_INTERFACE -d $ip_addy -j ACCEPT
        ;;
        esac
    done < $allow_file
    unset allow_file
fi
unset ipaddr
#소스주소가 자신의 IP인 것처럼 위장해서 들어오는 패킷을 drop
iptables -A INPUT -s $IPADDR -j DROP
#소스주소가 A,B,C클래스의 사설IP인 패킷을거부
iptables -A INPUT -s $CLASS_A -j DROP
iptables -A INPUT -s $CLASS_B -j DROP
iptables -A INPUT -s $CLASS_C -j DROP
#브로드캐스트주소를 소스로하는 패킷을 차단
iptables -A INPUT -s $BROADCAST_DEST -j DROP
iptables -A INPUT -d $BROADCAST_SRC -j DROP
#D클래스 멀티캐스트 주소를 거부한다
iptables -A INPUT -s $CLASS_D_MULTICAST -j DROP
#예약된 E클래스 주소는 거부한다
iptables -A INPUT -s $CLASS_E_RESERVED_NET -j DROP
#IANA에 의해 예약된 특정주소거부(2001.01.04 기준)
iptables -A INPUT -s 0.0.0.0/8 -j DROP
iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A INPUT -s 169.0.2.0/24 -j DROP
iptables -A INPUT -s 192.0.2.0/24 -j DROP
iptables -A INPUT -s 224.0.0.9/3 -j DROP
#UDP TRACEROUTE(네임서버에 필요)
iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp --source-port $TRACEROUTE_SRC_PORTS -d $IPADDR --destination-port $TRACEROUTE_DEST_PORTS -j DROP
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $TRACEROUTE_SRC_PORTS --destination-port $TRACEROUTE_DEST_PORTS -j ACCEPT
#포위드전용 DNS 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $PRIMARY_NAMESERVER --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $UNPRIVPORTS -d $PRIMARY_NAMESERVER --destination-port 53 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn -s $PRIMARY_NAMESERVER --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $PRIMARY_NAMESERVER --destination-port 53 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $SECONDARY_NAMESERVER --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $UNPRIVPORTS -d $SECONDARY_NAMESERVER --destination-port 53 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn -s $SECONDARY_NAMESERVER --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $SECONDARY_NAMESERVER --destination-port 53 -j ACCEPT
#SSH 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $SSH_REMOTE_PORTS -d $IPADDR --destination-port 22 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 22 --destination-port $SSH_REMOTE_PORTS -j ACCEPT
#SSH 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $SSH_LOCAL_PORTS --destination-port 22 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 22 -d $IPADDR --destination-port $SSH_LOCAL_PORTS -j ACCEPT
#HTTP 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 80 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 80 --destination-port $UNPRIVPORTS -j ACCEPT
#HTTPS 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 443 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 443 --destination-port $UNPRIVPORTS -j ACCEPT
#MYSQL 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 3306 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 3306 --destination-port $UNPRIVPORTS -j ACCEPT
#MYSQL 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 3306 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 3306 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#FTP 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 21 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 21 --destination-port $UNPRIVPORTS -j ACCEPT
#FTP 포트모드서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port $UNPRIVPORTS -d $IPADDR --destination-port 20 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 20 --destination-port $UNPRIVPORTS -j ACCEPT
#FTP 패시브모드서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port $UNPRIVPORTS --destination-port $UNPRIVPORTS -j ACCEPT
#POP 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 110 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 110 --destination-port $UNPRIVPORTS -j ACCEPT
#POP 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 110 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 110 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#IMAP 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 143 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 143 --destination-port $UNPRIVPORTS -j ACCEPT
#IMAP 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 143 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 143 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#SSL 지원되는 IMAP서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 993 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 993 --destination-port $UNPRIVPORTS -j ACCEPT
#SSL 지원되는 IMAP 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 993 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 993 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#SMTP 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 25 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 25 --destination-port $UNPRIVPORTS -j ACCEPT
#SMTP 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 25 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 25 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#DNS 서버
#서버와 서버간 또는 클라이언트와의 질의 반응
iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 53 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port 53 --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp --source-port 53 -d $IPADDR --destination-port 53 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port 53 --destination-port 53 -j ACCEPT
#DNS 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 53 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 53 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#DNS Zone 전송
#PRIMARY NAMESERVER
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $SECONDARY_NAMESERVER --source-port $UNPRIVPORTS -d $IPADDR --destination-port 53 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 53 -d $SECONDARY_NAMESERVER --destination-port $UNPRIVPORTS -j ACCEPT
#SECONDARY NAMESERVER
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $PRIMARY_NAMESERVER --source-port $UNPRIVPORTS -d $IPADDR --destination-port 53 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 53 -d $PRIMARY_NAMESERVER --destination-port $UNPRIVPORTS -j ACCEPT
#ICMP
iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type echo-reply -d $IPADDR -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type destination-unreachable -d $IPADDR -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type source-quench -d $IPADDR -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type time-exceeded -d $IPADDR -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type parameter-problem -d $IPADDR -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp -s $IPADDR --icmp-type fragmentation-needed -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp -s $IPADDR --icmp-type source-quench -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp -s $IPADDR --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp -s $IPADDR --icmp-type parameter-problem -j ACCEPT
#rsync 서버
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp --source-port $UNPRIVPORTS -d $IPADDR --destination-port 873 -j ACCEPT
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port 873 --destination-port $UNPRIVPORTS -j ACCEPT
#rsync 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 873 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 873 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
#time 클라이언트
iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS --destination-port 37 -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn --source-port 37 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT
echo "FIREWALL START"
2010/06/04 00:06 2010/06/04 00:06
오늘도 wget 여러 옵션들을 테스트해봤습니다.
그동안 제일 궁금했던 것이
--user-agent=agent-string
등으로 user-agent를 속이는데 서버에서는 어떻게 인식하는지가 제일 궁금해서
http://browsers.garykeith.com/tools/your-browser.asp
에 접속해봤습니다.

 wget  --user-agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"  http://browsers.garykeith.com/tools/your-browser.asp
했더니 튕기더군요.
----------------------------------
Access Denied
You do not appear to be using this form in accordance with my Terms of Use.
Continued abuse will eventually result in you losing access to this server!
It's also possible you are using security software that modifies the HTTP_REFERER header.
If I can't confirm the referrer is valid then you can't have access to my forms.
--------------------------------

그래서 이번에는 --referer 옵션까지 설정을 해서 다시 시도해봤습니다.
wget  --user-agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"  --referer="http://browsers.garykeith.com/tools/property-docs.asp" http://browsers.garykeith.com/tools/your-browser.asp
이번에는 성공!!!
-------------------------------
Your Browser
User Agent
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
.... 이하 생략
--------------------------------

어찌보면 당연한 결론이지만  --user-agent, --referer 두가지다 제대로 작동합니다.

더 무서운것은 --save-cookie, --load-cookies,  --post-data=string, --post-file=file 입니다.

--save-cookie "cookie.txt" --post-data "user_id=myid&password=mypassword"
옵션을 주니까 멋있게 로그인까지 하고 쿠키를 저장해두더군요.

다시
 --load-cookies "cookie.txt" 하니까 회원만 가능한 곳 어디든지 정상접속됩니다.

post.dat라는 화일에 게시판에 필요한 변수를 입력해두고
 --load-cookies "cookie.txt"  --post-file "post.dat" 하니까 게시판에 글도 씁니다.

잘만 활용하면 좋겠는데
까딱하면 스팸로봇이 따로 필요없습니다.
2010/06/03 23:59 2010/06/03 23:59
서버 작업하면 가끔 콘솔 2개 열고 작업하다 엉뚱한데 날리는 경우가 있습니다.
특히나 꾸벅 꾸벅 졸면서 새벽작업할때.. 캄캄합니다. IDC까지 그새벽에 가야하고..

쉘스크립트 입니다.

cat newrm.sh
#!/bin/sh

# newrm - a replacement for the existing rm command that allows a
#  rudimentary unremove capability through utilizing a newly created
#  directory in the user's home directory. It can handle directories
#  of content as well as individual files, and if the user specifies
#  the -f flag, files are NOT archived, but removed.
#  rewrm 에서 -f를 붙이면 휴지통으로 버리지않고 완전 제거한다는...
 
# Big Important Warning: you'll want a cron job or similar to keep the
#  individual trash directories tamed, otherwise nothing will ever
#  actually be deleted on the system and you'll run out of disk space!

mydir="$HOME/.deleted-files"  # 지워진 파일이 저장되는 곳
realrm="/bin/rm "                  # rm파일위치
copy="/bin/cp -R"                  # 복사(휴지통으로 넣기)위한 cp 명령 경로

if [ $# -eq 0 ] ; then  # let 'rm' ouptut the usage error
  exec $realrm  # our shell dies and is replaced by /bin/rm
fi

# parse all options looking for '-f'

flags=""

while getopts "dfiPRrvW" opt
do
  case $opt in
    f ) exec $realrm "$@"    ;;  # exec lets us exit this script directly.
    * ) flags="$flags -$opt"  ;;  # other flags are for 'rm', not us
  esac
done
shift $(( $OPTIND - 1 ))

# make sure that the $mydir exists

if [ ! -d $mydir ] ; then
  if [ ! -w $HOME ] ; then
    echo "$0 failed: can't create $mydir in $HOME" >&2
    exit 1
  fi
  mkdir $mydir
  chmod 700 $mydir      # a little bit of privacy, please
fi

for arg
do
  newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"
  if [ -f "$arg" ] ; then
    $copy "$arg" "$newname"
  elif [ -d "$arg" ] ; then
    $copy "$arg" "$newname"
  fi
done

exec $realrm $flags "$@"        # our shell is replaced by realrm


----------------------------------------------------------------------------------------------------------

본인계정의
.profile에 alias rm='/root/newrm.sh' 추가후

source .profile  리로드

사용 rm 파일명하면 다짜고짜 지워버립니다.
단 본인 HomeDir/.deleted-files 에 보면 지워진 파일이 들어있습니다....
수동으로 꺼내서 이름을 변경하셔도 되구요..

아래의 파을을 이용하면 됩니다. 윈도그로 따지면 휴지통에서 복원정도 명령이겠네요.

cat unrm.sh
#!/bin/sh

# unrm - search the deleted files archive for the specified file. If
#  there is more than one match, show a list ordered by timestamp, and
#  let the user specify which they want restored.

# Big Important Warning: you'll want a cron job or similar to keep the
#  individual trash directories tamed, otherwise nothing will ever
#  actually be deleted on the system and you'll run out of disk space!

mydir="$HOME/.deleted-files"
realrm="/bin/rm"
move="/bin/mv"

dest=$(pwd)

if [ ! -d $mydir ] ; then
  echo "$0: No deleted files directory: nothing to unrm" >&2 ; exit 1
fi

cd $mydir

if [ $# -eq 0 ] ; then # no args, just show listing
  echo "Contents of your deleted files archive (sorted by date):"
#  ls -FC | sed -e 's/[[:digit:]][[:digit:]]\.//g' -e 's/^/  /'
  ls -FC | sed -e 's/\([[:digit:]][[:digit:]]\.\)\{5\}//g' \
    -e 's/^/  /'
  exit 0
fi

# Otherwise we must have a pattern to work with. Let's see if the
# user-specified pattern matches more than one file or directory
# in the archive.

matches="$(ls *"$1" 2> /dev/null | wc -l)"

if [ $matches -eq 0 ] ; then
  echo "No match for \"$1\" in the deleted file archive." >&2
  exit 1
fi

if [ $matches -gt 1 ] ; then
  echo "More than one file or directory match in the archive:"
  index=1
  for name in $(ls -td *"$1")
  do
    datetime="$(echo $name | cut -c1-14| \
      awk -F. '{ print $5"/"$4" at "$3":"$2":"$1 }')"
    if [ -d $name ] ; then
      size="$(ls $name | wc -l | sed 's/[^0-9]//g')"
      echo " $index)  $1  (contents = ${size} items, deleted = $datetime)"
    else
      size="$(ls -sdk1 $name | awk '{print $1}')"
      echo " $index)  $1  (size = ${size}Kb, deleted = $datetime)"
    fi
    index=$(( $index + 1))
  done
 
  echo ""
  echo -n "Which version of $1 do you want to restore ('0' to quit)? [1] : "
  read desired

  if [ ${desired:=1} -ge $index ] ; then
    echo "$0: Restore cancelled by user: index value too big." >&2
    exit 1
  fi

  if [ $desired -lt 1 ] ; then
    echo "$0: restore cancelled by user." >&2 ; exit 1
  fi

  restore="$(ls -td1 *"$1" | sed -n "${desired}p")"
 
  if [ -e "$dest/$1" ] ; then
    echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
    exit 1
  fi

  echo -n "Restoring file \"$1\" ..."
  $move "$restore" "$dest/$1"
  echo "done."

  echo -n "Delete the additional copies of this file? [y] "
  read answer
 
  if [ ${answer:=y} = "y" ] ; then
    $realrm -rf *"$1"
    echo "deleted."
  else
    echo "additional copies retained."
  fi
else
  if [ -e "$dest/$1" ] ; then
    echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
    exit 1
  fi

  restore="$(ls -d *"$1")"

  echo -n "Restoring file \"$1\" ... "
  $move "$restore" "$dest/$1"
  echo "done."
fi

exit 0


휴지통에서 복구하기..

unrm.sh 복구할 파일명하면 됩니다.

꼭 필요하던건데.. 이번에 책을 보면서 알게되어 저자의 사이트에서 퍼와서 테스트후
작성합니다.

책명 : 셸 스크립트  101가지 예제로 정복하는 - 에이콘출판사 
광고라고 혹시 하실분 계실까 몰라서 인데 제가 22,500원주고 모 사이트에서 사서 본책입니다.
원저자는 외국인 인듯합니다.

그럼 머리가 캄캄해 지지 않도록 노력해 봅시다.
2010/06/03 23:48 2010/06/03 23:48