diff --git a/AusRegCliever/Makefile b/AusRegCliever/Makefile index 95cdfcd..f2d3b98 100644 --- a/AusRegCliever/Makefile +++ b/AusRegCliever/Makefile @@ -60,7 +60,7 @@ XERCES_LIB = xerces-c XERCES_INC_DIR = /opt/local/include/xercesc/ endif -SLIBS= -L/usr/lib $(BOSTLIB) $(LOG4LIB) $(ARTKLIB) -l boost_system -l boost_thread -l log4cpp -l ACTK1_0 +SLIBS= -L/usr/lib $(BOSTLIB) $(LOG4LIB) $(ARTKLIB) -l boost_system -l boost_thread -l log4cpp -l ACTK1_0 -l jsoncpp DLIBS= -L/usr/lib $(BOSTLIB) $(LOG4LIB) $(ARTKLIB) -l boost_system -l boost_thread -l log4cpp SINCL= -I include -I /usr/include/log4cpp -I /usr/include/jsoncpp $(BOSINCL) @@ -77,7 +77,7 @@ CLFLAGS= -Wall -Wundef -Wpointer-arith -Wshadow \ -Wstrict-prototypes -Waggregate-return -Wno-implicit ACOBJS= build/cliever.o build/mdLogger.o build/masterDaemonConfig.o build/masterDaemon.o \ - build/mdHost.o build/mdState.o build/mdAusReg.o + build/mdHost.o build/mdState.o build/mdJSON.o build/mdAusReg.o MDOBJS= build/md.o build/mdLogger.o build/masterDaemonConfig.o build/masterDaemon.o \ build/mdHost.o build/mdState.o @@ -121,8 +121,11 @@ build/mdState.o: server/mdState.cpp include/*.h build/masterDaemon.o: server/masterDaemon.cpp include/*.h $(CC) $(CFLAGS) server/masterDaemon.cpp -c -o build/masterDaemon.o $(SINCL) $(ARTKINCL) +build/mdJSON.o: server/mdJSON.cpp include/mdJSON.hpp + $(CC) $(CFLAGS) server/mdJSON.cpp -c -o build/mdJSON.o $(SINCL) $(ARTKINCL) + build/mdAusReg.o: server/mdAusReg.cpp include/*.h - $(CC) $(CFLAGS) server/mdAusReg.cpp -c -o build/mdAusReg.o $(SINCL) $(ARTKINCL) $(ARTKLIB) -l libACTK1_0.so + $(CC) $(CFLAGS) server/mdAusReg.cpp -c -o build/mdAusReg.o $(SINCL) $(ARTKINCL) $(ARTKLIB) -l libACTK1_0.so build/ausreg-md: $(MDOBJS) $(CC) $(CFLAGS) -o build/ausreg-md $(SINCL) $(LIBS) $(MDOBJS) $(DLIBS) diff --git a/AusRegCliever/include/donutsOTEB.h b/AusRegCliever/include/donutsOTEB.h new file mode 100644 index 0000000..08f7f4c --- /dev/null +++ b/AusRegCliever/include/donutsOTEB.h @@ -0,0 +1,313 @@ +/* + * donutsOTEB.h + * + * Created on: Jan 28, 2014 + * Author: jdaugherty + */ + +#ifndef DONUTSOTEB_H_ +#define DONUTSOTEB_H_ + +void ausRegEPPTK::doOTEB() + { + bool addDomains = false, debug=true, contactCreated = true, doTransfers = false, + transferGainer = false, doDPML=false; + int cmd=0; + const char *thatAccount="secura2-ote2", *thisAccount="secura1-ote"; + + string op("newInstance"); + const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise"); + + LPCrtCmdExtension crtE1( &claims ), crtE2( &dpml ); + + Transaction thisTest; + + scenario(thisConfig->tkScenario,thisConfig->cfg_path); + + while(debug) { debug=false; // debugger needs this + try { + Timer::setTime("20140101.010101"); + auto_ptr manager(SessionManagerFactory::newInstance(&props)); + auto_ptr sess(SessionFactory::newInstance(&props)); + op = "startup"; + manager->startup(); + op = "run (keep-alive)"; + manager->run(); + + sess->open(); + + theseLogs->logN(2,"OTE %s [Hello] (%d).",thisAccount,cmd++); + sess->writeXML(TEST_SE); + sess->read(); + + theseLogs->logN(1,"OTE Basic Access Setup (%d).",cmd++); + + const std::string rrj("renjuan"); + const std::string rrjPW("Ab9dW@rd"); + const std::string rrjEmail("juan@acm.org"); + const std::string rrjName("Ren Ren-Juan"); + const std::string rrjCity("Niagara Falls"); + const std::vector + rrjCrib(1,"2926 2nd Strt"); + const std::string rrjProv("NY"); + const std::string rrjPC("14305"); + const std::string rrjGuo("US"); + const std::string rrjOrg("American Kybernetik"); + + const IntPostalInfo rrjPO(rrjName,rrjOrg, + rrjCrib,rrjCity,rrjProv,rrjPC,rrjGuo); + + ContactCreateCommand oteCommand_0(rrj,rrjPW,&rrjPO,rrjEmail); + ContactCreateResponse oteResponse_0; + + theseLogs->logN(1,"(skip) Create Contact(s)."); + + if (!contactCreated) try { + thisTest = Transaction(&oteCommand_0, &oteResponse_0); + manager->execute(thisTest); + } + catch(const std::exception e) + { + theseLogs->logN(1,"Case %d: %s.",cmd++,e.what()); + } + catch(...) + { + theseLogs->logN(1,"Case %d Failed, harness catch.",cmd++); + } + + theseLogs->logN(1,"Continue OTE Transactions."); + sleep(2); + theseLogs->logN(2,"(%d) Non-LPE check of %s",cmd++,name1); + + DomainCheckCommand oteCommand_1(name1); + DomainCheckResponse oteResponse_1; + + try { + thisTest = Transaction(&oteCommand_1, &oteResponse_1); + manager->execute(thisTest); + } + catch(...) + { + theseLogs->logN(0,"Case %d Failed, harness catch.",cmd++); + } + + theseLogs->logN(2,"(%d) Perform Claims type Check of %s",cmd++,name3); + + DomainCheckCommand oteCommand_2(name3); + LPChkCmdExtension chkE(&claims); + oteCommand_2.appendExtension(chkE); + DomainCheckResponse oteResponse_2; + LPChkRespExtension chkRspE; + oteResponse_2.registerExtension(&chkRspE); + + try { + thisTest = Transaction(&oteCommand_2, &oteResponse_2); + manager->execute(thisTest); + theseLogs->logN(3,"(%d) Claims %s exist for %s.", + cmd,(chkRspE.doClaimsExist() ? "do" : " do not "),name3); + if (chkRspE.doClaimsExist()) + theseLogs->logN(3,"(%d) claim: %s .",cmd,chkRspE.getClaimsKey()); + } + catch (EPPException& e) + { const char *eMsg = e.getMessage().c_str(); + const char *opNow = op.c_str(); + theseLogs->logN(2,"EPP Exception during OTE B (%s): %s .",opNow,eMsg); + throw e; + } + catch (...) + { + theseLogs->logN(1,"General Exception OTE B (%s).",op.c_str()); + } + + // Used in all of below + + const std::string pw("Ab9dW@rd"); + const std::string RID("renjuan"); + std::vector tech(1,std::string("renjuan") ); + std::vector admin(1,std::string("renjuan") ); + std::vector billing(1,std::string("renjuan") ); + std::vector ns(1,std::string("ns1.google.com") );; + + + if (addDomains) { + + try { + + if (1) { + + theseLogs->logN(3," (%d) normal create %s in OTE %s.",cmd++, name5, thisAccount); + DomainCreateCommand + oteCommand_3(name5,pw,&RID, &tech, &ns, &admin, &billing); + DomainCreateResponse oteResponse_3; + thisTest = Transaction(&oteCommand_3, &oteResponse_3); + manager->execute(thisTest); + + } if (1) { + + theseLogs->logN(3," (%d) normal create %s in OTE %s.",cmd++, name4, thisAccount); + DomainCreateCommand + oteCommand_3a(name4,pw,&RID, &tech, &ns, &admin, &billing); + DomainCreateResponse oteResponse_3a; + thisTest = Transaction(&oteCommand_3a, &oteResponse_3a); + manager->execute(thisTest); + + } if (0) { + theseLogs->logN(3," (%d) LPE create %s in OTE %s.",cmd++, name5, thisAccount); + DomainCreateCommand + oteCommand_3b(name5,pw,&RID, &tech, &ns, &admin, &billing); + oteCommand_3b.appendExtension(crtE1); + DomainCreateResponse oteResponse_3b; + + thisTest = Transaction(&oteCommand_3b, &oteResponse_3b); + manager->execute(thisTest); + } + } + catch (EPPException& e) + { const char *eMsg = e.getMessage().c_str(); + const char *opNow = op.c_str(); + theseLogs->logN(2,"EPP Exception during OTE B (%s): %s .",opNow,eMsg); + throw e; + } + catch (...) + { + theseLogs->logN(1,"General Exception OTE B (%s).",op.c_str()); + } + } + + + if (doTransfers) { + + DomainTransferRequestCommand + oteCommand_4a(name1,rrjPW); + DomainTransferApproveCommand + oteCommand_4b(name1,rrjPW); + DomainTransferResponse oteResponse_4; + + DomainTransferRequestCommand + oteCommand_4c(name2,rrjPW); + DomainTransferApproveCommand + oteCommand_4d(name2,rrjPW); + DomainTransferResponse oteResponse_4a; + + try { + + theseLogs->logN(4," %s (%d) %s -> %s.", (transferGainer ? "Request" : "Approve") ,cmd++, name1,thatAccount); + + thisTest = transferGainer ? Transaction(&oteCommand_4a, &oteResponse_4) : + Transaction(&oteCommand_4b, &oteResponse_4) ; + manager->execute(thisTest); + + theseLogs->logN(4," %s (%d) %s -> %s.", (transferGainer ? "Request" : "Approve") ,cmd++, name2,thatAccount); + + thisTest = transferGainer ? Transaction(&oteCommand_4c, &oteResponse_4a) : + Transaction(&oteCommand_4d, &oteResponse_4) ; + + manager->execute(thisTest); + + } + catch(...) + { + theseLogs->logN(0,"Case %d Failed, harness catch.",cmd++); + } + + } + + if (0) { + + theseLogs->logN(2,"(%d) Sunrise create %s with ICANN SMD test data.",++cmd,name1); + + DomainCreateCommand oteCommand_5(name1,pw,&RID, &tech, &ns, &admin, &billing); + oteCommand_5.appendExtension(crtE1); + DomainCreateResponse oteResponse_5; + + try { + thisTest = Transaction(&oteCommand_5, &oteResponse_5); + manager->execute(thisTest); + } + catch (EPPException& e) + { const char *eMsg = e.getMessage().c_str(); + const char *opNow = op.c_str(); + theseLogs->logN(2,"EPP Exception during OTE B (%s): %s .",opNow,eMsg); + throw e; + } + catch (...) + { + theseLogs->logN(1,"General Exception OTE B (%s).",op.c_str()); + } + + } + + theseLogs->logN(2,"(%d) Create %s w Notice ID test data (TCN).",++cmd,name3); + + string noticeID("d85159710000000000000008692"), + notAfter("2015-01-01T12:00:00Z"), acceptedDate("2014-01-27T19:00:00Z"); + + DomainCreateCommand oteCommand_6(name3,pw,&RID, &tech, &ns, &admin, &billing); + crtE1.setNoticeID(noticeID, notAfter, acceptedDate); + oteCommand_6.appendExtension(crtE1); + DomainCreateResponse oteResponse_6; + + try { + thisTest = Transaction(&oteCommand_6, &oteResponse_6); + manager->execute(thisTest); + } + catch (EPPException& e) + { const char *eMsg = e.getMessage().c_str(); + const char *opNow = op.c_str(); + theseLogs->logN(2,"EPP Exception during OTE B (%s): %s .",opNow,eMsg); + throw e; + } + catch (...) + { + theseLogs->logN(1,"General Exception OTE B (%s).",op.c_str()); + } + + if (doDPML) { std::string dpmlName("face.dpml.zone"); + + theseLogs->logN(2,"(%d) Create %s w ICANN SMD file.",++cmd,dpmlName.c_str()); + + DomainCreateCommand oteCommand_7(dpmlName,pw,&RID, &tech, &ns, &admin, &billing); + crtE2.setSMD(); + oteCommand_7.appendExtension(crtE2); + DomainCreateResponse oteResponse_7; + + try { + thisTest = Transaction(&oteCommand_7, &oteResponse_7); + manager->execute(thisTest); + } + catch (EPPException& e) + { const char *eMsg = e.getMessage().c_str(); + const char *opNow = op.c_str(); + theseLogs->logN(2,"EPP Exception during OTE B (%s): %s .",opNow,eMsg); + throw e; + } + catch (...) + { + theseLogs->logN(1,"General Exception OTE B (%s).",op.c_str()); + } + + } + + theseLogs->logN(0,"End OTE Session."); + + sess->close(); + manager->shutdown(); + + } + catch (EPPException& e) + { const char *eMsg = e.getMessage().c_str(); + const char *opNow = op.c_str(); + theseLogs->logN(2,"Outer EPP Exception during OTE (%s): %s .",opNow,eMsg); + throw e; + } + catch (...) + { + theseLogs->logN(2,"Outer General Exception in OTE (%s).",op.c_str()); + } + + }// debug while +} + + + +#endif /* DONUTSOTEB_H_ */ diff --git a/AusRegCliever/include/mdJSON.hpp b/AusRegCliever/include/mdJSON.hpp index 32d464a..5826c5a 100644 --- a/AusRegCliever/include/mdJSON.hpp +++ b/AusRegCliever/include/mdJSON.hpp @@ -11,14 +11,13 @@ class mdJSON { private: - static bool parsedOK; - std::string script; + std::string path; public: - mdJSON(char *fileName); - ~mdJSON(); - bool run(); - bool didParseOK(); + mdJSON(char *fileName); + ~mdJSON(); + bool run(bool parseOnly); + }; #endif /* MDJSON_HPP_ */ diff --git a/AusRegCliever/server/mdAusReg.cpp b/AusRegCliever/server/mdAusReg.cpp index 1d956c0..9ff5ff5 100644 --- a/AusRegCliever/server/mdAusReg.cpp +++ b/AusRegCliever/server/mdAusReg.cpp @@ -168,8 +168,8 @@ void ausRegEPPTK::doOTEC() { } i += EVENT_SIZE + event->len; if (actionableFileEvent) { mdJSON scriptor(event->name); - if (scriptor.didParseOK()) { - if (!scriptor.run()) { monitoring = false; + if (scriptor.run(false)) { + if (!scriptor.run(true)) { monitoring = false; theseLogs->logN(1, "Run of %s failed. ,/json monitoring stops.\n", event->name ); } } diff --git a/AusRegCliever/server/mdJSON.cpp b/AusRegCliever/server/mdJSON.cpp index ca6096f..5cc3124 100644 --- a/AusRegCliever/server/mdJSON.cpp +++ b/AusRegCliever/server/mdJSON.cpp @@ -29,27 +29,90 @@ #include "se/DomainTransferResponse.hpp" #include "mdJSON.hpp" +#include // sort +#include +#include + using namespace std; +static std::string +readInputTestFile( const char *path ) +{ + FILE *file = fopen( path, "rb" ); + if ( !file ) + return std::string(""); + fseek( file, 0, SEEK_END ); + long size = ftell( file ); + fseek( file, 0, SEEK_SET ); + std::string text; + char *buffer = new char[size+1]; + buffer[size] = 0; + if ( fread( buffer, 1, size, file ) == (unsigned long)size ) + text = buffer; + fclose( file ); + delete[] buffer; + return text; +} + + + +static bool +parseValueTree( const std::string &input, const std::string &kind, Json::Value &root, const Json::Features &features, + bool parseOnly ) +{ + Json::Reader reader( features ); + bool parsingSuccessful = reader.parse( input, root ); + if ( !parsingSuccessful ) + { + theseLogs->logN(2, "Failed to parse %s file: \n%s\n", + kind.c_str(), + reader.getFormattedErrorMessages().c_str() ); + return true; + } + + if ( !parseOnly ) + { + } + return false; +} + + +bool mdJSON::run(bool parseOnly) +{ + bool value = false; + Json::Features features; + + try + { + std::string input = readInputTestFile( path.c_str() ); + if ( input.empty() ) + { + theseLogs->logN(1, "Failed to read input or empty input: %s\n", path.c_str() ); + return 3; + } + + Json::Value root; + value = parseValueTree( input, "input", root, features, parseOnly ); + + } + catch ( const std::exception &e ) + { + theseLogs->logN(1, "Unhandled exception:\n%s\n", e.what() ); + value = true; + } + + return value; +} + + mdJSON::mdJSON(char *fileName) { - script = string(fileName); + path = string(fileName); } mdJSON::~mdJSON() { - // TODO Auto-generated destructor stub } -mdJSON::mdJSON(char *script) { - -} -bool mdJSON::run() { - -} -bool mdJSON::didParseOK() { - done: return true; -} -