Exemple #1
0
static	Bool
SendTerminal(
	NETFILE		*fp,
	SessionData	*data)
{
	unsigned char	c;
	char			wname[SIZE_LONGNAME+1];
	LargeByteString	*scrdata;
	int 			i;

ENTER_FUNC;
	SendPacketClass(fp,WFC_HEADER);		ON_IO_ERROR(fp,badio);
	dbgmsg("send DATA");
	SendString(fp,data->hdr->user);		ON_IO_ERROR(fp,badio);
	SendString(fp,data->hdr->window);	ON_IO_ERROR(fp,badio);
	SendString(fp,data->hdr->widget);	ON_IO_ERROR(fp,badio);
	SendChar  (fp,data->hdr->puttype);	ON_IO_ERROR(fp,badio);
	dbgprintf("window    = [%s]",data->hdr->window);
	SendInt(fp,data->w.sp);				ON_IO_ERROR(fp,badio);
	for (i=0;i<data->w.sp;i++) {
		SendChar(fp,data->w.s[i].puttype);ON_IO_ERROR(fp,badio);
		SendString(fp,data->w.s[i].window);ON_IO_ERROR(fp,badio);
	}
	while (1) {
		c = RecvPacketClass(fp);		ON_IO_ERROR(fp,badio);
		switch (c) {
		case WFC_DATA:
			dbgmsg(">DATA");
			RecvnString(fp,SIZE_LONGNAME,wname);ON_IO_ERROR(fp,badio);
			if ((scrdata = GetScreenData(data,wname)) != NULL) {
				dbgmsg("send OK");
				SendPacketClass(fp,WFC_OK);	ON_IO_ERROR(fp,badio);
				SendLBS(fp,scrdata);		ON_IO_ERROR(fp,badio);
			} else {
				dbgmsg("send NODATA");
				SendPacketClass(fp,WFC_NODATA);	ON_IO_ERROR(fp,badio);
			}
			dbgmsg("<DATA");
			break;
		case WFC_DONE:
			dbgmsg("DONE");
			return TRUE;
		case WFC_END:
			dbgmsg("END");
			return FALSE;
		default:
			Warning("[%s] session failure packet [%X]",data->hdr->uuid,c);
			dbgprintf("c = [%X]\n",c);
			return FALSE;
		}
	}
	Warning("does not reach");
LEAVE_FUNC;
	return FALSE;
badio:
	Warning("[%s] session recv failure",data->hdr->uuid);
LEAVE_FUNC;
	return FALSE;
}
Exemple #2
0
static Bool
SendVeryfyData_Redirect(
	DBG_Struct	*dbg)
{
	Bool rc = FALSE;
	if	( (dbg->fpLog  !=  NULL)
		  && ( dbg->redirectData !=  NULL)
		  && ( LBS_Size(dbg->redirectData) > 0 ) ) {
		LBS_EmitEnd(dbg->checkData);
		LBS_EmitEnd(dbg->redirectData);
		SendPacketClass(dbg->fpLog,RED_DATA);	ON_IO_ERROR(dbg->fpLog,badio);
		SendInt(dbg->fpLog, dbg->ticket_id);	ON_IO_ERROR(dbg->fpLog,badio);
		SendLBS(dbg->fpLog,dbg->checkData);	ON_IO_ERROR(dbg->fpLog,badio);
		SendLBS(dbg->fpLog,dbg->redirectData);	ON_IO_ERROR(dbg->fpLog,badio);
	}
	rc = SendCommit_Redirect(dbg);
badio:
	return rc;
}
Exemple #3
0
extern	void
PutDB_AuditLog(
	DBG_Struct	*dbg,
	LargeByteString	*lbs)
{
ENTER_FUNC;
	if		(  dbg->fpLog  !=  NULL  ) {
		SendPacketClass(dbg->fpLog,RED_AUDIT);	ON_IO_ERROR(dbg->fpLog,badio);
		SendLBS(dbg->fpLog,lbs);				ON_IO_ERROR(dbg->fpLog,badio);
	}
badio:
LEAVE_FUNC;
}
Exemple #4
0
static	void
APISession(
	TermNode	*term)
{
	SessionData *data;
	APIData *api;
	char ld[SIZE_NAME+1];
	char window[SIZE_NAME+1];
	char user[SIZE_USER+1];
	char host[SIZE_HOST+1];

	data = NULL;
	RecvnString(term->fp, sizeof(ld), ld);			
		ON_IO_ERROR(term->fp,badio);
	RecvnString(term->fp, sizeof(window), window);			
		ON_IO_ERROR(term->fp,badio);
	RecvnString(term->fp, sizeof(user), user);		
		ON_IO_ERROR(term->fp,badio);
	RecvnString(term->fp, sizeof(host), host);	
		ON_IO_ERROR(term->fp,badio);

	data = InitAPISession(user,ld,window,host);
	if (data != NULL) {
		data->term = term;
		data->retry = 0;
		api = data->apidata;
		RecvLBS(term->fp, api->rec);

		data = Process(data);
		api = data->apidata;

		SendPacketClass(term->fp, api->status);
			ON_IO_ERROR(term->fp,badio2);
		if (api->status == WFC_API_OK) {
			SendLBS(term->fp, api->rec);
				ON_IO_ERROR(term->fp,badio2);
		}
		CloseNet(term->fp);
	badio2:
		FreeSessionData(data);
	} else {
		SendPacketClass(term->fp,WFC_API_NOT_FOUND);
			ON_IO_ERROR(term->fp,badio2);
		CloseNet(term->fp);
	}
	badio:
		;
}
Exemple #5
0
static PacketClass SYSDB_RequestCommon(NETFILE *fp, PacketClass pc,
                                       ValueStruct *val) {
  PacketClass rc;
  LargeByteString *buf;
  rc = SESSION_CONTROL_NG;
  buf = NewLBS();
  LBS_ReserveSize(buf, NativeSizeValue(NULL, val), FALSE);
  NativePackValue(NULL, LBS_Body(buf), val);
  SendPacketClass(fp, SYSDATA_SYSDB);
  ON_IO_ERROR(fp, badio);
  SendPacketClass(fp, pc);
  ON_IO_ERROR(fp, badio);
  SendLBS(fp, buf);
  ON_IO_ERROR(fp, badio);
  rc = RecvPacketClass(fp);
  RecvLBS(fp, buf);
  NativeUnPackValue(NULL, LBS_Body(buf), val);
badio:
  FreeLBS(buf);
  return rc;
}