5. EPP 활용

이제 원하는 각 기능 별로 프로그램을 만듭니다. 도메인이 등록가능한 지 여부를 검사하는 DomainCheck 기능을 구현한다고 할 때, 등록에 필요한 기본적인 샘플 루틴은 epp-rtk 소스 디렉토리 하위의 src 디렉토리에 main_domaincheck.cc를 참고합니다.

도메인 가능 여부를 요청하는 부분입니다.
      epp_DomainCheckReq_ref l_req(new epp_DomainCheckReq());

      l_req->m_cmd.ref(new epp_Command(NULL,
                       NULL,
                       epp_trid("ABC-12345")));

      epp_string_seq_ref names(new epp_string_seq());

      names->push_back("example1.com");
      names->push_back("example2.com");
      names->push_back("example3.com");

      l_req->m_names = names;

      epp_DomainCheck_ref l_obj(new epp_DomainCheck());

      l_obj->setRequestData(*l_req);

      test.processAction(l_obj);

      epp_DomainCheckRsp_ref l_rsp = l_obj->getResponseData();
  

컴파일 시에는 이와 관련된 라이브러리를 지정해 주어야 합니다. DomainCheck의 경우 EPP-RTK를 설치할 경우 생기는 라이브러리가 필요하기 때문에 컴파일시에 옵션을 적절하게 지정할 필요가 있습니다.

-L./lib -lepprtk -ldata -ltransport -lnpssl

-L./lib를 지정하여 libepprtk.a 파일등이 있는 곳의 위치를 지정해야 합니다.

-DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_DOM_DOM_HPP=1 -DHAVE_PARSERS_DOMPARSER_HPP=1 -DHAVE_UT IL_PLATFORMUTILS_HPP=1 -DHAVE_UTIL_XMLSTRING_HPP=1 -DHAVE_UTIL_XMLUNIDEFS_HPP=1 -DHAVE_UNISTD_H=1 -DHAV E_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_MKDIR=1 -DHAVE_SELECT=1 -DHAVE_STRSTR=1

using namespace eppobject::domain;

using namespace eppobject::epp;

다음은 간단한 Makefile의 예제입니다.

	CXX = c++
	CFLAGS = --ansi -Wall -g -O2

	USER_LIB = -lepprtk -ldata -ltransport -lnpssl -lnameaddon -lnamedata
		-ldomtools
	SYS_LIB = -ldomtools /usr/local/xerces/lib/libxerces.so -lpthread -lssl
		-lcrypt -lcrypto -ldata
	LIB_DIR = -L./lib -L/usr/local/lib -L/usr/local/lib/domtools
	INCL = -I/usr/include -I/usr/local/include/
		-I/home/dotName/xerces-c1_7_0-linux7.2/include -I/home/dotN
		ame/xerces-c1_7_0-linux7.2/include/xercesc -I/usr/local/include/epprtk
		-I/usr/local/include/name-rtk-addon

	DEFS = -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_DOM_DOM_HPP=1
		-DHAVE_PARSERS_DOMPARSER_HPP=1 -DHAVE_UT
		IL_PLATFORMUTILS_HPP=1 -DHAVE_UTIL_XMLSTRING_HPP=1
		-DHAVE_UTIL_XMLUNIDEFS_HPP=1 -DHAVE_UNISTD_H=1 -DHAV
		E_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_MKDIR=1 -DHAVE_SELECT=1 -DHAVE_STRSTR=1

	CXXCOMPILE = $(CXX) $(DEFS) $(INCL)
	OBJECTS = main.o

	all: epp_test

	epp_test: $(OBJECTS)
    	$(CXX) $(CFLAGS) -o epp_test $(OBJECTS) $(LIB_DIR) $(USER_LIB)
	$(SYS_LIB)

	.cc.o:
    	$(CXXCOMPILE) -c $<

	clean:
    	rm -rf epp_test *.o