2019년 10월 7일 월요일

iredmail 사용시 웹 클라이언트가 접속이 잘 안된다면...

iredmail을 기본설치 했더니

nginx를 was로 사용하는데, access로그가 한 가득인 걸 보니..

이 was에 공격이 들어오는 것으로 추정이 된다..

geoip를 사용해 볼까 했는데, 메뉴얼상에는 nginx 컴파일 단계에서

같이 넣어야 하는 것 같아서.. 이래저래 만져보다가 포기하고.

좀더 쉬운 fail2ban을 사용해서 차단하는 것으로 방향을 잡고

이래저래 찾아보다가.. 발견한 내 기준엔 완벽한 가이드!!

설명이 너무 잘되어 있음..

https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04


2019년 9월 25일 수요일

iredmail(postfix) 사용시 메일 포워딩 시 hostname not found 가 나온다면...

본문 출처

https://superuser.com/questions/975337/postfix-error-host-or-domain-name-not-found


수 도없는 구글링 끝에 찾아낸 답..

요약하면 iredmail 안의 postfix의 프로토콜 기본 설정이

ipv4와 ipv6를 같이 사용하게 되어 있음..

이걸 ipv4 전용으로 변경...

끗...

2019년 9월 6일 금요일

Youtube API 활용 팁

기획에서 Youtube 재생을 컨트롤 하는 것을 주문해서..

이것저것 해본거 정리..

요구 사항은..(나랑 의견이 안 맞긴 했지만...)

1. 동영상은 2개

2. 위에 동영상이 끝나면 자동으로 아래것이 재생

3. Youtube는 iframe 형식으로 사용

===============처리 방법=================

참조 문서 : https://developers.google.com/youtube/iframe_api_reference#Playback_controls

일단!!! 제일 중요한 부분!!! iframe에 들어있는 주소에 쿼리스트링으로 enablejsapi=1 을 붙인다!!! 이거 안 붙여서 1시간 날려먹음..

그리고.. api 호출해주고.. :

<script src="https://www.youtube.com/iframe_api">

이하 제어 스크립트.. 나머지는 주석 참고..


<
script >
    var player1, player2; //동영상 2개에 대한 객체 선언...

//onYouTubeIframeAPIReady 함수는 https://www.youtube.com/iframe_api 에서 자동으로 호출한다.. 별도의 호출 선언 없음..
function onYouTubeIframeAPIReady() {
    // iframe id 넣어줌 (player1)
    player1 = new YT.Player('player1', {
        events: {
            'onStateChange': onPlayerStateChange
        }
    });

    // iframe id 넣어줌 (player2)
    player2 = new YT.Player('player2', {
        events: {
            'onStateChange': onPlayerStateChange
        }
    });
}

function onPlayerStateChange(event) {
    //동영상 플레이어의 상태 변경시 호출됨...
    //console.log(event);
    //console.log(event.target.a.id)
    switch (event.data) {
        case 0:
            //재생 멈춤 상태값..
            //record('video ended');
            //플레이어가 1에서 이벤트가 발생했다면..
            if (event.target.a.id == 'player1') {
                //player2의 상태가 시작되지 않았다면
                if (player2.getPlayerState() != "-1") {
                    player1.stopVideo(); //멈추고
                    player2.playVideo(); //시작...
                }
            } else {
                if (player1.getPlayerState() != "-1") {
                    player2.stopVideo();
                    player1.playVideo();
                }
            }
            break;
        case 1:
            //재생 시작 상태값..
            //record('video playing from '+player.getCurrentTime());
            break;
        case 2:
            //재생 일시정지 상태값..
            //record('video paused at '+player.getCurrentTime());
            break;
    }
}

function record(str) {
    console.log(str);
} <
/script>

끗!


2019년 7월 17일 수요일

아주 가끔 필요한 MS-SQL용 달력 쿼리

회사에서

특정 기간 검색에 대한 일자별 통계를 내 주려고 하는데..

달력을 생성해야 해서리..

이래저래 찾은 거 중에 그냥 제일 간단한 거..

  1. SELECT CONVERT(CHAR(10),dateadd(d,NUMBER,'2019-07-01'),120) dt
  2. FROM master..spt_values
  3. WHERE TYPE = 'P' AND NUMBER <= datediff(d,'2019-07-01','2019-07-17')
  4. ORDER BY 1 DESC

가끔 쓰지만.. 요긴하다..

2019년 5월 21일 화요일

회사 메일서버에 해킹시도가 너무 많이 들어옴.

회사 메일서버 환경은..

CentOS 6.6 + nginx + iredmail (postfix)

기업용 회선이 아니라 일반 회선이라 그런지.. 해킹시도가 많으면..

자꾸 웹 UI 서비스가 맛이 감..

결국 geoip 를 적용하려고 했으나..

생각처럼 잘 안됨..

생각을 바꿔서... fail2ban을 사용하여 차단 설정함..

fail2ban 기본 설정이 생각보다 관대하여 600초 후에 ban을 풀어주길래

영구 차단으로 변경..

이하 참조 링크

https://iskra.sarang.net/180

이하 nginx 관련 fail2ban 설정

https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04

2019년 5월 10일 금요일

2019년 3월 21일 목요일

MSXML API 주소

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms764730(v=vs.85)

회사 사이트가 Classic ASP라 어쩔 수 없이 MSXML API를 사용함...

매번 찾기 힘들어서 기록상 남김.

[낯선] 2026.06.20 이태원 MZK MuzikBar 공연

간만의 공연 이태원 비틀즈가 이전하여 MZK MuzikBar 로 새 단장 오픈을 한 뒤로 2번째 공연 새 베이시스트가 합류한 뒤로 첫 공연이기도 함.. 이래저래 틀린 부분도 많지만.. 그래도 간만에 그럭저럭 잘했다.. https://www.youtub...