Asterisk 수신거부 코드 – DB연동

asterisk 11 버전에서 특정번호를 수신거부하는 코드입니다.

수신거부하는 번호를 DB테이블에 저장하고 관리합니다.

 

테이블스키마

CREATE TABLE `ban` (
`phone` VARCHAR(32) NOT NULL COMMENT '전화번호',
`reg_date` DATETIME NOT NULL COMMENT '등록일',
INDEX `phone` (`phone`)
)
COMMENT='수신거부 전화번호'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

 

extensions.conf

[inbound]
exten => 07010002000,1,Answer
exten => 07010002000,n,NoOp("caller id: ${CALLERID(number)}")
exten => 07010002000,n,MYSQL(Connect connid 호스트 유저 비밀번호 데이터베이스명)
exten => 07010002000,n,MYSQL(Query resultid ${connid} SELECT COUNT(*) AS cnt_blockcaller FROM ban WHERE phone='${CALLERID(number)}')
exten => 07010002000,n,MYSQL(Fetch fetchid ${resultid} cnt_blockcaller)
exten => 07010002000,n,MYSQL(Clear ${resultid})
exten => 07010002000,n,MYSQL(Disconnect ${connid});

exten => 07010002000,n,GotoIf($["${cnt_blockcaller}" != "0"]?inbound,07010002000,blockcaller)

.
.
.

exten => 07010002000,n(blockcaller),NoOp("blockcaller!!!")
exten => 07010002000,n,Hangup()

 

 

교토 첫째날 1/2

오사카 여행 두번째날 오전일찍
도톤보리에서 후시미이나리 신사로 이동한다.

도톤보리 숙소에서 후시미이나리까지 이동은
지하철이 가장 편하고 그렇게 안내를 한다.

신사이바시나 난바에서 요도야바시역으로 간다.
일본은 환승개념이 없기에 일단 역에서 나간 다음
게이한본선을 타기위해 붉은 라인을 따라간다.

자판기에서 400엔을 넣고 내려가보면
게이한 본선(붉은색)이 있다.
특급, 완행이 있는데 결국 같은 곳을 간다.
(우리나라 지하철 직통같은 개념인 듯?)

주의할 것이 있다면 특급의 경우 단바바시에서 완행으로 갈아타야 하고
완행을 탔다면 그냥 후시미이나리역까지 쭉 가면 된다.

오전 9시에 도착했는데도 사람이 꽤나 많았다.
7시까지 오라고 했는데 후회가..
정상까지 찍고 내려오면 두시간 소요되니 참고하자

후시미이나리신사는 다른말로 ‘여우신사’라고 불린다.

오사카 단풍여행

11월중순부터 12월초의 오사카-교토는 단풍이 절경이라하여 여행을 가보았다.

오전 8시 비행기여서 새벽에 출발

인천공항 사진은 건너뛰고 바로 간사이 국제공항 도착

라피트 왕복권을 한국에서 미리 구매해서 왔기에

HIS를 찾아 교환권을 구해야 한다.

터미널을 나오자마자 왼쪽에는 스타벅스가 있고,

오른쪽으로 30미터쯤 가면 HIS의 파란부스가 보이니 여기서 QR코드를 보여주고 교환하자.

교환권은 아래

교환권을 받아서 2층으로 올라가서 기차.. 트래인으로 표기되어 있던가??

가보면 승차권을 구매하는 곳이 있는데

오른쪽은 바로 승차권을 구매하는 곳 왼쪽은 교환권으로 승차권을 받는 곳이니

왼쪽에 보여주면 된다.

라피트 특급은 30분마다 있고 시간표를 직원이 확인해 준다.

이렇게 생긴놈을 타면 된다

좌석은 지정좌석이다

난카이 난바역은 금방이다

오늘은 도착해보니 교통을 통제하고 마라톤 대회가 있었다.

도톤보리에 있는 돈키호테

그 옆에 있는 이치란 라멘..

줄이 어마어마 하다. 생각보다 맛있는지는 모르겠더라

대충 둘러보고 오사카성으로 이동

오사카 주유패스 1일권을 이용한다

천수각이 보이는군..

아래 보이는 다리가 유명한 다리인데, “고구라구바시” 라고 구글맵이 알려줬다.

주유패스로 저 금빛나는 배를 탈 수 있는 것 같았는데

시간이 없어서 패스

천수각 입장은 주유패스로 해결이 가능하다

해질무렵 우메다역으로 이동

다시 걸어서 공중정원에 들어갔다.

역시나 이곳도 주유패스로 입장

크리스마스 전이라서 그런지 엄청 큰 트리가..

도톤보리 야경을 구경하러 이동

도톤보리에서 제일 유명한 아저씨..

5월 오키나와 여행

여름이 오기전 5월

일본 오키나와로 가족여행을 떠났다.

출발은 인천공항, 일요일 출발이어서 그런지

공항에 사람은 많이 없어서 편했네

비행시간은 약 2시간 30분이니 적당히 지겹지 않고 갈만하다.

5월에 중국발 황사, 미세먼지가

오키나와에 도착한 순간 싹 사라지는 마법이..

아래 사진속에 저 멀리 보이는 산이 구글맵으로 보면

20km가 넘는 거리이다

3박 4일간 숙소는 오키나와  온나에 있는

리젠시 파크(Rizzan Sea Park Hotel Tancha Bay)

바로앞이 해변이고

온나가 오키나와 중간에 있어서

츄라우미와 아메리칸 빌리지까지 이동하기

좋을 듯 하여 이곳으로 정했다

만좌모 입구

만좌모에 주차는 무료이니 적당히 주차하고 들어가면 된다.

유명한 곳이라서 오전일찍 도착했음에도 사람이 꽤나 있었다.

만좌모에서 츄라우미 가는 길목에

블루씰 아이스크림

맛있다..

츄라우미 수족관

주차는 북쪽 주차장에 하는게 이동하기 가장 좋다.

돌고래쇼 시간에 맞춰서 도착했다.

수족관 들어가기 전에 보고 가는게 좋을 듯 하다.

시작하기 전에 도착해야 그늘이 있는 곳에 자리를 잡을 수 있다.

세계 3대 수족관이라고 하나??

츄라우미 수족관을 들어가면 볼거리가 참 많다.

그중에 고래상어는 최고~

파인애플파크 근처 우후야 (맵코드 206 745 056*25)

오키나와 도착해서 가장 입맛에 맞은 음식을 찾았다

아메리칸 빌리지

관람차 1층에 있는 100엔샵이 국제거리나 메가돈키호테보다 가격이 저렴했다.

역시나 이곳에도 있는 고래상어 인형

이곳에 오면 관람차를 꼭 타야한다

야경이 참 이쁘다

슈리성은 너무 더운 시간에 도착해서

대충 휙~ 둘러보기

국제거리도 사람이 너무 많아서

그냥 구경만 하다 말았다.

날씨가 덥기는 했지만

운이 좋았던건지 비는 한번도 내리지 않아서 돌아다니기는

참 좋았던 것 같다.

스노클링을 하지 못한게 참 아쉬웠던 오키나와 여행..

다시 간다면 일정 알차게 짤 수 있을 것 같네 😉

도로명주소 API 서비스

도로명 주소 API 서비스

행정자치부에서 제공하는 OPEN API 서비스

 

API 신청페이지

https://www.juso.go.kr/addrlink/devAddrLinkRequestWrite.do?returnFn=write&cntcMenu=URL

 

PHP + Snoopy로 주소찾기 예제

코드


<?php
require_once 'Snoopy.class.php';

$params = array(
    'currentPage' => 1,
    'countPerPage' => 5,
    'resultType' => 'json',
    'confmKey' => '{발급받은 키문자열}',
    'keyword' => '서울시 마포구 합정동 10'
);

$snoopy = new Snoopy();
$snoopy->httpmethod = "POST";
$snoopy->submit("http://www.juso.go.kr/addrlink/addrLinkApiJsonp.do", $params);
$response = $snoopy->results;

// 앞뒤에 '(', ')' 문자를 제거한 뒤 json_decode()를 이용해 변환
$json = substr($response, 1, -1);
$obj = json_decode($json);

 

출력결과


stdClass Object
(
    [results] => stdClass Object
        (
            [common] => stdClass Object
                (
                    [errorMessage] => 정상
                    [countPerPage] => 5
                    [totalCount] => 73
                    [errorCode] => 0
                    [currentPage] => 1
                )

            [juso] => Array
                (
                    [0] => stdClass Object
                        (
                            [detBdNmList] => 
                            [engAddr] => 56, Tojeong-ro, Mapo-gu, Seoul
                            [rn] => 토정로
                            [emdNm] => 합정동
                            [zipNo] => 04082
                            [roadAddrPart2] =>  (합정동)
                            [sggNm] => 마포구
                            [jibunAddr] => 서울특별시 마포구 합정동  55-1
                            [siNm] => 서울특별시
                            [roadAddrPart1] => 서울특별시 마포구 토정로 56
                            [bdNm] => 
                            [admCd] => 1144012200
                            [udrtYn] => 0
                            [lnbrMnnm] => 55
                            [roadAddr] => 서울특별시 마포구 토정로 56 (합정동)
                            [lnbrSlno] => 1
                            [buldMnnm] => 56
                            [bdKdcd] => 0
                            [liNm] => 
                            [rnMgtSn] => 114403113023
                            [mtYn] => 0
                            [bdMgtSn] => 1144011800100010000009632
                            [buldSlno] => 0
                        )

                    [1] => stdClass Object
                        (
                            [detBdNmList] => 
                            [engAddr] => 35, Tojeong-ro 4-gil, Mapo-gu, Seoul
                            [rn] => 토정로4길
                            [emdNm] => 합정동
                            [zipNo] => 04085
                            [roadAddrPart2] =>  (합정동, 신성빌라)
                            [sggNm] => 마포구
                            [jibunAddr] => 서울특별시 마포구 합정동  75-10 신성빌라
                            [siNm] => 서울특별시
                            [roadAddrPart1] => 서울특별시 마포구 토정로4길 35
                            [bdNm] => 신성빌라
                            [admCd] => 1144012200
                            [udrtYn] => 0
                            [lnbrMnnm] => 75
                            [roadAddr] => 서울특별시 마포구 토정로4길 35 (합정동, 신성빌라)
                            [lnbrSlno] => 10
                            [buldMnnm] => 35
                            [bdKdcd] => 1
                            [liNm] => 
                            [rnMgtSn] => 114404139606
                            [mtYn] => 0
                            [bdMgtSn] => 1144012200100750010024923
                            [buldSlno] => 0
                        )

                    [2] => stdClass Object
                        (
                            [detBdNmList] => 
                            [engAddr] => 13-5, Tojeong-ro 4an-gil, Mapo-gu, Seoul
                            [rn] => 토정로4안길
                            [emdNm] => 합정동
                            [zipNo] => 04085
                            [roadAddrPart2] =>  (합정동)
                            [sggNm] => 마포구
                            [jibunAddr] => 서울특별시 마포구 합정동  82-10
                            [siNm] => 서울특별시
                            [roadAddrPart1] => 서울특별시 마포구 토정로4안길 13-5
                            [bdNm] => 
                            [admCd] => 1144012200
                            [udrtYn] => 0
                            [lnbrMnnm] => 82
                            [roadAddr] => 서울특별시 마포구 토정로4안길 13-5 (합정동)
                            [lnbrSlno] => 10
                            [buldMnnm] => 13
                            [bdKdcd] => 0
                            [liNm] => 
                            [rnMgtSn] => 114404139607
                            [mtYn] => 0
                            [bdMgtSn] => 1144012200100820010012210
                            [buldSlno] => 5
                        )

                    [3] => stdClass Object
                        (
                            [detBdNmList] => 
                            [engAddr] => 19, Tojeong-ro 4an-gil, Mapo-gu, Seoul
                            [rn] => 토정로4안길
                            [emdNm] => 합정동
                            [zipNo] => 04085
                            [roadAddrPart2] =>  (합정동)
                            [sggNm] => 마포구
                            [jibunAddr] => 서울특별시 마포구 합정동  82-10
                            [siNm] => 서울특별시
                            [roadAddrPart1] => 서울특별시 마포구 토정로4안길 19
                            [bdNm] => 
                            [admCd] => 1144012200
                            [udrtYn] => 0
                            [lnbrMnnm] => 82
                            [roadAddr] => 서울특별시 마포구 토정로4안길 19 (합정동)
                            [lnbrSlno] => 10
                            [buldMnnm] => 19
                            [bdKdcd] => 0
                            [liNm] => 
                            [rnMgtSn] => 114404139607
                            [mtYn] => 0
                            [bdMgtSn] => 1144012200100820010024925
                            [buldSlno] => 0
                        )

                    [4] => stdClass Object
                        (
                            [detBdNmList] => 
                            [engAddr] => 13-4, Tojeong-ro 4an-gil, Mapo-gu, Seoul
                            [rn] => 토정로4안길
                            [emdNm] => 합정동
                            [zipNo] => 04085
                            [roadAddrPart2] =>  (합정동)
                            [sggNm] => 마포구
                            [jibunAddr] => 서울특별시 마포구 합정동  82-10
                            [siNm] => 서울특별시
                            [roadAddrPart1] => 서울특별시 마포구 토정로4안길 13-4
                            [bdNm] => 
                            [admCd] => 1144012200
                            [udrtYn] => 0
                            [lnbrMnnm] => 82
                            [roadAddr] => 서울특별시 마포구 토정로4안길 13-4 (합정동)
                            [lnbrSlno] => 10
                            [buldMnnm] => 13
                            [bdKdcd] => 0
                            [liNm] => 
                            [rnMgtSn] => 114404139607
                            [mtYn] => 0
                            [bdMgtSn] => 1144012200100820010012213
                            [buldSlno] => 4
                        )

                )

        )

)

게이트웨이 핑체크

Gateway ping 확인하는 스크립트

eth0 – 192.168.100.1
eth1 – 192.168.200.1

default gateway는  192.168.100.1 로 등록되어 있는 상태에서 192.168.100.1로 핑을 계속 보내면서 네트워크를 확인한다.

최대 실패횟수가 초과하면 현재 default gateway를 제거하고 eth1의 게이트웨이를 등록하고 관리자에게 이메일을 발송한다.

 


#!/bin/sh

#####################################################################
# edit config
GW1="192.168.100.1"
GW2="192.168.200.1"
MAX_FAIL_COUNT=5
ERROR_MAILTO="me@jongwan.com"

#####################################################################
# path exec
EXEC_PING="/bin/ping"
EXEC_ROUTE="/sbin/route"
EXEC_MAIL="/usr/bin/mail"

#####################################################################
# prevent duplicate run
ME=`basename "$0"`
CHK_RUN=`pgrep -o $ME`
if [ $CHK_RUN -ne $$ ]; then
    exit
fi

#####################################################################
# checking
FAIL_COUNT=0
while(true) do
    # check ping
    CHK=`$EXEC_PING -c1 $GW1 > /dev/null; echo $?`

    # 0 is reachable, 2 is unreachable
    if [ $CHK -ne "0" ]; then
        FAIL_COUNT=$(($FAIL_COUNT+1))
    else
        FAIL_COUNT=0 # init fail_count if success ping
    fi

    # check fail count
    if [ $FAIL_COUNT -ge $MAX_FAIL_COUNT ]; then
        # add/del gateway
        echo "Gateway connection failed : $GW1"
        CMD1=`$EXEC_ROUTE del default gw $GW1`
        CMD2=`$EXEC_ROUTE add default gw $GW2`

        # send email
        CMD3=`echo "Gateway connection failed : $GW1" | $EXEC_MAIL -s "Gateway connection failed : $GW1" $ERROR_MAILTO`

        # exit shell
        break
    fi

    sleep 1
done