This commit is contained in:
parent
ddc9b4c179
commit
15404b4bcd
Binary file not shown.
|
@ -211,9 +211,12 @@ void setSignals() {
|
||||||
|
|
||||||
}
|
}
|
||||||
void signal_handler(int sig)
|
void signal_handler(int sig)
|
||||||
{
|
{ int debug=0;
|
||||||
|
|
||||||
switch(sig) {
|
switch(sig) {
|
||||||
case SIGSEGV:
|
case SIGSEGV:
|
||||||
|
debug=1; // for breakpoint
|
||||||
|
theseLogs.logN(0,"Segfault great that you can see this.");
|
||||||
break;
|
break;
|
||||||
case SIGUSR1:
|
case SIGUSR1:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
#include <ncurses.h>
|
#include <ncurses.h>
|
||||||
#include "ausreg-cd.h"
|
#include "ausreg-cd.h"
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
if (!(expr)) { \
|
||||||
|
std::cerr << __FILE__ << ":" << __LINE__ << ":" << #expr << std::endl;}
|
||||||
|
|
||||||
const char *banner = CD_NAME " " CD_VERSION " compiled on " __DATE__ " @ " __TIME__ " (%d)";
|
const char *banner = CD_NAME " " CD_VERSION " compiled on " __DATE__ " @ " __TIME__ " (%d)";
|
||||||
const char *cmdNames[9] = { "check", "info", "poll", "transfer query",
|
const char *cmdNames[9] = { "check", "info", "poll", "transfer query",
|
||||||
"create", "renew", "update", "delete", "transfer" };
|
"create", "renew", "update", "delete", "transfer" };
|
||||||
|
@ -35,14 +39,19 @@ void mdCommander::doHeader() {
|
||||||
}
|
}
|
||||||
void mdCommander::digestibleLines() {
|
void mdCommander::digestibleLines() {
|
||||||
|
|
||||||
char *sp;
|
char buffer[256],*sp;
|
||||||
int nLines=0, wrow=5;
|
int nLines=0, wrow=5;
|
||||||
|
|
||||||
nocbreak();
|
nocbreak();
|
||||||
for (;argsNow[cmdNow] < MAX_CMD_ARGS;argsNow[cmdNow]++)
|
for (;argsNow[cmdNow] < MAX_CMD_ARGS;)
|
||||||
{sp = commandArgs[cmdNow][argsNow[cmdNow]++] = (char *) malloc(256);
|
{memset(buffer,0,sizeof(buffer));
|
||||||
mvgetstr(wrow++,2,sp);
|
mvgetstr(wrow++,2,buffer);
|
||||||
if (!strlen(sp)) break;
|
if (strlen(buffer)) {
|
||||||
|
sp = (char *) malloc(strlen(buffer)+1);
|
||||||
|
commandArgs[cmdNow][argsNow[cmdNow]++] = sp;
|
||||||
|
strcpy(sp,buffer);
|
||||||
|
}
|
||||||
|
else break;
|
||||||
}
|
}
|
||||||
cbreak();
|
cbreak();
|
||||||
prompt(false);
|
prompt(false);
|
||||||
|
@ -53,7 +62,7 @@ void mdCommander::prompt(bool forStrings) {
|
||||||
if (forStrings)
|
if (forStrings)
|
||||||
mvprintw(row-1,1,">>");
|
mvprintw(row-1,1,">>");
|
||||||
else
|
else
|
||||||
mvprintw(row-1,1,"> ");
|
mvprintw(row-1,1,">");
|
||||||
|
|
||||||
}
|
}
|
||||||
void mdCommander::driver() {
|
void mdCommander::driver() {
|
||||||
|
@ -160,6 +169,7 @@ void mdCommander::driver() {
|
||||||
cmdNow = --targetCmd;
|
cmdNow = --targetCmd;
|
||||||
editingCommand(false);
|
editingCommand(false);
|
||||||
doHeader();}
|
doHeader();}
|
||||||
|
help();
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
if (isValidCmd(targetCmd,false)) {
|
if (isValidCmd(targetCmd,false)) {
|
||||||
|
@ -318,6 +328,7 @@ void mdCommander::flushCommand(int which,bool allOfEm){
|
||||||
for (j=0;j<argsNow[i];j++)
|
for (j=0;j<argsNow[i];j++)
|
||||||
free(commandArgs[i][j]);
|
free(commandArgs[i][j]);
|
||||||
}
|
}
|
||||||
|
else deleted[i] = false; // back to start state.
|
||||||
}
|
}
|
||||||
cmdNow = 0;
|
cmdNow = 0;
|
||||||
cmdsNow = 0;
|
cmdsNow = 0;
|
||||||
|
@ -345,17 +356,19 @@ void mdCommander::showCommand(bool allOfEm){
|
||||||
sprintf(wwork,"EPP directive: %s",befehlJetzt);
|
sprintf(wwork,"EPP directive: %s",befehlJetzt);
|
||||||
mvprintw(5,2,wwork);
|
mvprintw(5,2,wwork);
|
||||||
for (nthItem=0;nthItem < argsNow[cmdNow];nthItem++) {
|
for (nthItem=0;nthItem < argsNow[cmdNow];nthItem++) {
|
||||||
mvprintw(7+nthItem,2,(char *)commandArgs[cmdNow][nthItem]);
|
ASSERT(commandArgs[cmdNow][nthItem]);
|
||||||
|
sprintf(wwork,"%d %s",nthItem+1,(commandArgs[cmdNow][nthItem]));
|
||||||
|
mvprintw(7+nthItem,2,wwork);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
mvprintw(5,2,"These commands are pending/active: ");
|
mvprintw(5,2,"These commands are pending/active: ");
|
||||||
|
|
||||||
for (i=0, nthItem=0; nthItem < cmdsNow;nthItem++ ) {
|
for ( i=0, nthItem=0; nthItem < cmdsNow;nthItem++ ) {
|
||||||
|
|
||||||
if (!deleted[0]) {
|
if (!deleted[nthItem]) {
|
||||||
sprintf(wwork,"%d %s %s",i+1,cmdNames[commandsNow[nthItem]],commandArgs[nthItem][0]);
|
sprintf(wwork,"%d %s %s",nthItem+1,cmdNames[commandsNow[nthItem]],commandArgs[nthItem][0]);
|
||||||
mvprintw(7+(i++),2,wwork);
|
mvprintw(7+(i++),2,wwork);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,46 +385,47 @@ void mdCommander::showCommand(bool allOfEm){
|
||||||
bool mdCommander::editingCommand(bool run){
|
bool mdCommander::editingCommand(bool run){
|
||||||
const char *befehlJetzt = cmdNames[commandsNow[cmdNow]];
|
const char *befehlJetzt = cmdNames[commandsNow[cmdNow]];
|
||||||
|
|
||||||
char *sp;
|
char sp[256],*spp;
|
||||||
int editLine;
|
int editLine,length;
|
||||||
bool editing=true;
|
|
||||||
doHeader();
|
doHeader();
|
||||||
mvprintw(3,(col-strlen(befehlJetzt))/2,befehlJetzt);
|
mvprintw(3,(col-strlen(befehlJetzt))/2,befehlJetzt);
|
||||||
|
|
||||||
if (!run) {
|
if (!run) {
|
||||||
if (!argsNow[cmdNow]) {
|
if (!argsNow[cmdNow]) {
|
||||||
say((char *)"Enter strings for command or just enter to end data entry");
|
say((char *)"Enter command arg strings, just enter to end data entry, ? to main menu");
|
||||||
prompt(true);
|
prompt(true);
|
||||||
digestibleLines();
|
digestibleLines();
|
||||||
} else {
|
} else {
|
||||||
while(editing) {
|
nocbreak();
|
||||||
say((char *)"<n> of arg to replace, A to add, -<n> to erase, just enter to finish");
|
while(true) {
|
||||||
prompt(true);
|
showCommand(false);
|
||||||
|
say((char *)"line no to replace, A to add, enter to return");
|
||||||
|
prompt(false);
|
||||||
mvgetstr(row-1,2,sp);
|
mvgetstr(row-1,2,sp);
|
||||||
if (!strlen(sp)) editing = false;
|
if (!strlen(sp)) goto done;
|
||||||
else {
|
if (*sp == 'A' || *sp == 'a') {
|
||||||
if (*sp == 'A' || *sp == 'a') {
|
prompt(true);
|
||||||
if (strlen(sp)) {
|
mvgetstr(row-1,2,sp);
|
||||||
sp = commandArgs[cmdNow][argsNow[cmdNow]++] = (char *) malloc(256);
|
if (length=strlen(sp)) {
|
||||||
mvgetstr(row-1,2,sp);
|
spp = commandArgs[cmdNow][argsNow[cmdNow]++] = (char *) malloc(length+1);
|
||||||
}
|
strcpy(spp,sp);
|
||||||
continue;
|
}
|
||||||
}
|
}
|
||||||
|
if (is_numeric(sp) >= 1) {
|
||||||
editLine = atoi(sp);
|
editLine = atoi(sp);
|
||||||
if (editLine>0) {
|
if (editLine > 1 && editLine < argsNow[cmdNow]) {
|
||||||
mvgetstr(row-1,2,sp);
|
prompt(true);
|
||||||
if (strlen(sp)) {
|
mvgetstr(row-1,2,sp);
|
||||||
free (commandArgs[cmdNow][editLine]);
|
if (length=strlen(sp)) {
|
||||||
commandArgs[cmdNow][editLine] = (char *) malloc(strlen(sp)+1);
|
free (commandArgs[cmdNow][editLine-1]);
|
||||||
strcpy(commandArgs[cmdNow][editLine],sp);
|
spp = commandArgs[cmdNow][editLine-1] = (char *) malloc(strlen(sp)+1);
|
||||||
}
|
strcpy(spp,sp);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else { editLine = editLine * -1 ;
|
|
||||||
memset(commandArgs[cmdNow][editLine],0,strlen(commandArgs[cmdNow][editLine]));
|
|
||||||
}
|
|
||||||
} // editing body
|
|
||||||
} // editing loop
|
} // editing loop
|
||||||
} // new / existing
|
done: cbreak();
|
||||||
|
} // editing block
|
||||||
} // run / execute
|
} // run / execute
|
||||||
else {
|
else {
|
||||||
say((char *)"Press 'Y' to confirm");
|
say((char *)"Press 'Y' to confirm");
|
||||||
|
@ -423,62 +437,62 @@ void mdCommander::check(bool run) {
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 0;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 0;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
}
|
}
|
||||||
void mdCommander::create(bool run){
|
void mdCommander::create(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 4;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 4;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::info(bool run){
|
void mdCommander::info(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 1;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 1;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::renew(bool run){
|
void mdCommander::renew(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 5;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 5;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::queryTransfer(bool run){
|
void mdCommander::queryTransfer(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 3;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 3;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::trash(bool run){
|
void mdCommander::trash(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 7;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 7;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::transfer(bool run){
|
void mdCommander::transfer(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 8;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 8;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::poll(bool run){
|
void mdCommander::poll(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 2;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 2;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
void mdCommander::update(bool run){
|
void mdCommander::update(bool run){
|
||||||
|
|
||||||
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 6;
|
if (!commandsNow[cmdNow]) commandsNow[cmdNow] = 6;
|
||||||
if (!editingCommand(run)) {
|
if (!editingCommand(run)) {
|
||||||
|
|
||||||
}
|
} else help();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ class mdCommander {
|
||||||
bool acceptingInput,deleted[MAX_CMDS];
|
bool acceptingInput,deleted[MAX_CMDS];
|
||||||
bool EPPmode; // RFC 9
|
bool EPPmode; // RFC 9
|
||||||
int activeCommands, argsNow[MAX_CMDS], cmdNow, cmdsNow, mdStdDevIdx;
|
int activeCommands, argsNow[MAX_CMDS], cmdNow, cmdsNow, mdStdDevIdx;
|
||||||
std::string currentDevice;
|
|
||||||
int row,col;
|
int row,col;
|
||||||
int commandsNow[MAX_CMDS]; // type index into cmdNames
|
int commandsNow[MAX_CMDS]; // type index into cmdNames
|
||||||
char *commandArgs[MAX_CMDS][MAX_CMD_ARGS];
|
char *commandArgs[MAX_CMDS][MAX_CMD_ARGS];
|
||||||
|
@ -16,7 +15,9 @@ class mdCommander {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
mdCommander() {mdStdDevIdx=0; cmdsNow=0; cmdNow = 0;}
|
mdCommander() {mdStdDevIdx=0; cmdsNow=0; cmdNow = 0;
|
||||||
|
memset(commandArgs,0,sizeof(commandArgs));
|
||||||
|
}
|
||||||
~mdCommander() {}
|
~mdCommander() {}
|
||||||
|
|
||||||
void say(char *what) ;
|
void say(char *what) ;
|
||||||
|
|
|
@ -32,5 +32,6 @@ class ausRegEPPTK {
|
||||||
}
|
}
|
||||||
bool didInit(const std::string propertiesFilePath);
|
bool didInit(const std::string propertiesFilePath);
|
||||||
void doOTEA();
|
void doOTEA();
|
||||||
|
void doOTEB();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -144,6 +144,9 @@ enum acTKScenario {
|
||||||
ACTK_ALONE = 0,
|
ACTK_ALONE = 0,
|
||||||
ACTK_INSECURE,
|
ACTK_INSECURE,
|
||||||
ACTK_OTEA,
|
ACTK_OTEA,
|
||||||
|
ACTK_OTEB,
|
||||||
|
ACTK_OTEC,
|
||||||
|
ACTK_PROD,
|
||||||
N_ACTK_SCENARIOS
|
N_ACTK_SCENARIOS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -231,20 +231,36 @@ void oteA() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}void oteB() {
|
||||||
|
|
||||||
|
int nthDay;
|
||||||
|
for (nthDay=0;nthDay<30;nthDay++) {
|
||||||
|
|
||||||
|
theseLogs->logNdebug(MAX_DEBUG,1,"PreProd / OTEB day %d",nthDay);
|
||||||
|
thisService->artk->doOTEB();
|
||||||
|
theseLogs->logNdebug(MAX_DEBUG,1,"Preprod/ OTEB day %d",nthDay);
|
||||||
|
thisService->artk->daysRunning = nthDay;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
void masterDaemon::run() {
|
void masterDaemon::run() {
|
||||||
|
|
||||||
deviceFactory = new mdHostFabrik();
|
deviceFactory = new mdHostFabrik();
|
||||||
fg = new mdDGChannel( thisService->io_, 0 );
|
fg = new mdDGChannel( thisService->io_, 0 );
|
||||||
|
|
||||||
if (initAusRegTK()) return;
|
if (initAusRegTK()) return;
|
||||||
else switch(artk->tkScenario) {
|
if (artk->tkScenario == ACTK_OTEA) {
|
||||||
case ACTK_OTEA:
|
|
||||||
boost::thread oteArun(oteA);
|
boost::thread oteArun(oteA);
|
||||||
assert(oteArun.joinable());
|
assert(oteArun.joinable());
|
||||||
oteArun.join();
|
oteArun.join();
|
||||||
theseLogs->logNdebug(MAX_DEBUG,0,"OTE Connectivity Test EOJ.");
|
theseLogs->logNdebug(MAX_DEBUG,0,"OTE Connectivity Test EOJ.");
|
||||||
break;
|
}
|
||||||
|
if (artk->tkScenario == ACTK_OTEB) {
|
||||||
|
boost::thread oteBrun(oteB);
|
||||||
|
assert(oteBrun.joinable());
|
||||||
|
oteBrun.join();
|
||||||
|
theseLogs->logNdebug(MAX_DEBUG,0,"Pre-production Ops / OTEB EOJ.");
|
||||||
}
|
}
|
||||||
listen();
|
listen();
|
||||||
boost::thread work(mdWQ);
|
boost::thread work(mdWQ);
|
||||||
|
|
|
@ -31,7 +31,7 @@ bool ausRegEPPTK::didInit(const std::string propertiesFilePath) {
|
||||||
}
|
}
|
||||||
void ausRegEPPTK::doOTEA()
|
void ausRegEPPTK::doOTEA()
|
||||||
{
|
{
|
||||||
int hours;
|
int hours,hoops;
|
||||||
string op("newInstance");
|
string op("newInstance");
|
||||||
|
|
||||||
if (!daysRunning)
|
if (!daysRunning)
|
||||||
|
@ -45,14 +45,17 @@ void ausRegEPPTK::doOTEA()
|
||||||
manager->startup();
|
manager->startup();
|
||||||
op = "run (keep-alive)";
|
op = "run (keep-alive)";
|
||||||
manager->run();
|
manager->run();
|
||||||
|
sess->open();
|
||||||
|
|
||||||
sess->open();
|
for (hours=0;hours < 24;hours++) {
|
||||||
for (hours=0;hours < 24;hours++) {
|
|
||||||
// Spawn the keep alive thread.
|
// Spawn the keep alive thread.
|
||||||
theseLogs->logN(1,"Send Test SE at start of OTE Test Hour %d.",hours);
|
theseLogs->logN(1,"Send Test SEs on or about start OTE Test Hour %d.",hours);
|
||||||
sess->writeXML(TEST_SE);
|
|
||||||
sess->read();
|
for (hoops=0;hoops<7;hoops++) {
|
||||||
sleep(3630);
|
sess->writeXML(TEST_SE);
|
||||||
|
sess->read();
|
||||||
|
sleep(857);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
sess->close();
|
sess->close();
|
||||||
|
@ -69,5 +72,46 @@ void ausRegEPPTK::doOTEA()
|
||||||
{
|
{
|
||||||
theseLogs->logN(2,"General Exception during OTE A (%s).",op.c_str());
|
theseLogs->logN(2,"General Exception during OTE A (%s).",op.c_str());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
void ausRegEPPTK::doOTEB()
|
||||||
|
{
|
||||||
|
int hours;
|
||||||
|
string op("newInstance");
|
||||||
|
|
||||||
|
if (!daysRunning)
|
||||||
|
scenario(tkScenario);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Timer::setTime("20070101.010101");
|
||||||
|
auto_ptr<SessionManager> manager(SessionManagerFactory::newInstance(&props));
|
||||||
|
auto_ptr<Session> sess(SessionFactory::newInstance(&props));
|
||||||
|
op = "startup";
|
||||||
|
manager->startup();
|
||||||
|
op = "run (keep-alive)";
|
||||||
|
manager->run();
|
||||||
|
|
||||||
|
sess->open();
|
||||||
|
for (hours=0;hours < 24;hours++) {
|
||||||
|
// Spawn the keep alive thread.
|
||||||
|
theseLogs->logN(1,"Send Test SE at start of OTE Test Hour %d.",hours);
|
||||||
|
sess->writeXML(TEST_SE);
|
||||||
|
// sess->read();
|
||||||
|
sleep(3630);
|
||||||
|
|
||||||
|
}
|
||||||
|
sess->close();
|
||||||
|
manager->shutdown();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (EPPException& e)
|
||||||
|
{ const char *eMsg = e.getMessage().c_str();
|
||||||
|
const char *opNow = op.c_str();
|
||||||
|
theseLogs->logN(2,"EPP Exception during OTE A (%s): %s .",opNow,eMsg);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
theseLogs->logN(2,"General Exception during OTE A (%s).",op.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue