www.gusucode.com > 一些VC++加密算法+实例源码源码程序 > 一些VC++加密算法+实例源码/优化后的加密注册模块/优化后的加密注册模块/Inv(optimized)/Policy.cpp
//Policy.cpp #include "stdafx.h" #include <fstream.h> #include <stdlib.h> #include <stdio.h> #include "AccessDB.h" #include "general.h" #include "INV_struct.h" #include "Encry.h" #include "PublicKey.h" #include "SQLSERVICE_i.c" #include "am_lv1.h" char CNF[260]; char IP_str[16]; int RecordNum[10]; //************************************************************************* void Transform_IP(char *IP) { char newIP[16]; int i,j=15,k=0; i=strlen(IP); while(i>=0) { if(IP[i]=='.') { while(k<4) { newIP[j]='0'; j--; k++; } k=0; } newIP[j]=IP[i]; k++; i--; j--; } if(j>=0) { while(k<4) { newIP[j]='0'; j--; k++; } } strcpy(IP,newIP); } //*************************************************************************** void Tranvers_IP(char *IP) { char newIP[16]; int i,j=0,head=0; for(i=0;i<(int)strlen(IP);i++) { if(IP[i]=='.') { if(head==0) { newIP[j]='0'; j++; } else head=0; newIP[j]='.'; j++; } else if(head!=0 || IP[i]!='0') { newIP[j]=IP[i]; j++; head=1; } } if(head==0) { newIP[j]='0'; j++; } newIP[j]=0; strcpy(IP,newIP); } //*********************************************************************** HRESULT Connect_To_DB(dbptr *pDBobj) { CoInitialize(NULL); dbptr pIobject_mm=NULL; const char subkey[]="SOFTWARE\\ARKO\\ARKOMASTER\\CONSOLE"; const char valuename[]="Confpath"; unsigned int cbsize=260; if(am_LocaConfFile(subkey, valuename, CNF, &cbsize)) //get the path of ARKODB.INI return S_FALSE; strcat(CNF, "\\ARKODB.INI"); unsigned int size=IP_LEN; am_GetConfIp(CNF, IP_str, &size); //get the sqlservice's ipaddress from ARKODB.INI COSERVERINFO ServerInfo; memset(&ServerInfo, 0, sizeof(ServerInfo)); char temp[20]; strcpy(temp,IP_str); ServerInfo.pwszName=new wchar_t[IP_LEN]; mbstowcs(ServerInfo.pwszName, temp, IP_LEN); MULTI_QI mqi[]={ {&IID_IDBObject,NULL,0}}; HRESULT hRes=CoCreateInstanceEx(CLSID_DBObject, NULL, CLSCTX_ALL, &ServerInfo, sizeof(mqi)/sizeof(mqi[0]), mqi); if(hRes!=S_OK ) return S_FALSE; if(hRes==0 && SUCCEEDED(mqi[0].hr)) pIobject_mm=(IDBObject*)mqi[0].pItf; *pDBobj = pIobject_mm; return S_OK; } //*************************************************************************** int SetMask(int index1 = 0,int index2 = 0,int index3 = 0,int index4 = 0) { int mask=0; int e[16] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768}; // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 if(index1) { mask = mask | e[index1-1]; } if(index2) { mask = mask|e[index2-1]; } if(index3) { mask = mask|e[index3-1]; } if(index4) { mask = mask|e[index4-1]; } return mask; } //****************************************************************************** HRESULT WINAPI SendPol(char *name,long andor1,long andor2,long andor3,long andor4,long andor5,long andor6,long andor7,char *CPUMin,char *CPUMax,char *MemMin,char *MemMax,char *DskMin,char *DskMax,long OSIndex, char *Equ,char *IPMin,char *IPMax,char *Mac) { dbptr m_pIobject_mm=NULL; char pKey[8]; //the public key MAPdb *SendMap; CPUdb *SendCpu; MEMORYdb *SendMem; FILESYSTEMdb *SendFs; OSdb *SendOs; DEVICEdb *SendDevice; NETWORKdb *SendNetwork; STATISTICSdb *SendStat; NETSTATdb *SendNetstat; //the firth step: delete all records in Access dele(TABLE_INV_MAP); dele(TABLE_INV_CPU); dele(TABLE_INV_MEM); dele(TABLE_INV_FS); dele(TABLE_INV_OS); dele(TABLE_INV_DEV); dele(TABLE_INV_NET); dele(TABLE_INV_STAT); dele(TABLE_INV_NETSTAT); int i; HRESULT hRes=Connect_To_DB(&m_pIobject_mm); //connect to sqlservice if(hRes!=S_OK) { for(i=0;i<8;i++) RecordNum[i]=0; return 501; } int pk = GetPublicKey(pKey); //get public key if(pk!=0) return 999; int rec_number=-1; db_table in_table; tab_record records; tables_union *ret_records; int start = 0; int offset=0; in_table.db_table_id = DB_INV | VIEW_INV_ENDSYSTEM; in_table.db_operation = SELECT; in_table.encrypt_id = 0; char temp[10],temp2[10]; char sel_str[4096],sql_str[800]; char IPMinstr[16]; int first=1; strcpy((char *)sql_str,""); //if the pointer of name is null, query all records. //the pointer of name isn't null, so build the policy. if (strcmp(name, "")!=0) { if(strcmp((char *)IPMin,"")!=0) Transform_IP(IPMin); if(strcmp((char *)IPMax,"")!=0) Transform_IP(IPMax); strcpy((char *)sel_str,"select * from EndSystemView"); //build SQL sentence strcpy((char *)sql_str,""); //CPU speed: "or" if(andor1==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } //have both max and min value if(strcmp((char *)CPUMin,"")!=0 && strcmp((char *)CPUMax,"")!=0) { strcat((char *)sql_str,"CPUSpeed >= "); strcat((char *)sql_str,CPUMin); strcat((char *)sql_str," and CPUSpeed <="); strcat((char *)sql_str,CPUMax); } //only have min value else if(strcmp((char *)CPUMin,"")!=0) { strcat((char *)sql_str,"CPUSpeed >= "); strcat((char *)sql_str,CPUMin); } //only have max value else if(strcmp((char *)CPUMax,"")!=0) { strcat((char *)sql_str,"CPUSpeed <="); strcat((char *)sql_str,CPUMax); } } //memory size: "or" if(andor2==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } if(strcmp((char *)MemMin,"")!=0 && strcmp((char *)MemMax,"")!=0) { strcat((char *)sql_str,"MemorySize >= "); strcat((char *)sql_str,MemMin); strcat((char *)sql_str," and MemorySize <="); strcat((char *)sql_str,MemMax); } else if(strcmp((char *)MemMin,"")!=0) { strcat((char *)sql_str,"MemorySize >= "); strcat((char *)sql_str,MemMin); } else if(strcmp((char *)MemMax,"")!=0) { strcat((char *)sql_str,"MemorySize <="); strcat((char *)sql_str,MemMax); } } //harddisk size: "or" if(andor3==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } if(strcmp((char *)DskMin,"")!=0 && strcmp((char *)DskMax,"")!=0) { strcat((char *)sql_str,"HardDiskSize >= "); strcat((char *)sql_str,DskMin); strcat((char *)sql_str," and HardDiskSize <="); strcat((char *)sql_str,DskMax); } else if(strcmp((char *)DskMin,"")!=0) { strcat((char *)sql_str,"HardDiskSize >= "); strcat((char *)sql_str,DskMin); } else if(strcmp((char *)DskMax,"")!=0) { strcat((char *)sql_str,"HardDiskSize <="); strcat((char *)sql_str,DskMax); } } //os type: "or" if(andor4==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } switch (OSIndex) { case 0: strcat((char *)sql_str,"OSType = \"Windows 95\""); break; case 1: strcat((char *)sql_str,"OSType = \"Windows 98\""); break; case 2: strcat((char *)sql_str,"OSType = \"Windows NT\""); break; case 3: strcat((char *)sql_str,"OSType = \"Solaris\""); break; } } //equipment: "or" if(andor5==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } strcat((char *)sql_str,"DeviceName = \""); strcat((char *)sql_str,Equ); strcat((char *)sql_str,"\""); } //ipaddress: "or" if(andor6==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } if(strcmp((char *)IPMin,"")!=0 && strcmp((char *)IPMax,"")!=0) { strcat((char *)sql_str,"IPAddress >= \""); strcat((char *)sql_str,IPMin); strcat((char *)sql_str,"\" and IPAddress <= \""); strcat((char *)sql_str,IPMax); strcat((char *)sql_str,"\""); } else if(strcmp((char *)IPMin,"")!=0) { strcat((char *)sql_str,"IPAddress >= \""); strcat((char *)sql_str,IPMin); strcat((char *)sql_str,"\""); } else if(strcmp((char *)IPMax,"")!=0) { strcat((char *)sql_str,"IPAddress <= \""); strcat((char *)sql_str,IPMax); strcat((char *)sql_str,"\""); } } //MAC address: "or" if(andor7==1) { if (first==0) strcat((char *)sql_str," or "); else { strcat((char *)sql_str," ( "); first = 0; } strcat((char *)sql_str,"MACAddress = \""); strcat((char *)sql_str,Mac); strcat((char *)sql_str,"\""); } if(first==0) strcat((char *)sql_str," ) "); //CPU speed: "and" if(andor1==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; if(strcmp((char *)CPUMin,"")!=0 && strcmp((char *)CPUMax,"")!=0) { strcat((char *)sql_str,"CPUSpeed >= "); strcat((char *)sql_str,CPUMin); strcat((char *)sql_str," and CPUSpeed <="); strcat((char *)sql_str,CPUMax); } else if(strcmp((char *)CPUMin,"")!=0) { strcat((char *)sql_str,"CPUSpeed >= "); strcat((char *)sql_str,CPUMin); } else if(strcmp((char *)CPUMax,"")!=0) { strcat((char *)sql_str,"CPUSpeed <="); strcat((char *)sql_str,CPUMax); } } //memory size: "and" if(andor2==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; if(strcmp((char *)MemMin,"")!=0 && strcmp((char *)MemMax,"")!=0) { strcat((char *)sql_str,"MemorySize >= "); strcat((char *)sql_str,MemMin); strcat((char *)sql_str," and MemorySize <="); strcat((char *)sql_str,MemMax); } else if(strcmp((char *)MemMin,"")!=0) { strcat((char *)sql_str,"MemorySize >= "); strcat((char *)sql_str,MemMin); } else if(strcmp((char *)MemMax,"")!=0) { strcat((char *)sql_str,"MemorySize <="); strcat((char *)sql_str,MemMax); } } //harddisk: "and" if(andor3==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; if(strcmp((char *)DskMin,"")!=0 && strcmp((char *)DskMax,"")!=0) { strcat((char *)sql_str,"HardDiskSize >= "); strcat((char *)sql_str,DskMin); strcat((char *)sql_str," and HardDiskSize <="); strcat((char *)sql_str,DskMax); } else if(strcmp((char *)DskMin,"")!=0) { strcat((char *)sql_str,"HardDiskSize >= "); strcat((char *)sql_str,DskMin); } else if(strcmp((char *)DskMax,"")!=0) { strcat((char *)sql_str,"HardDiskSize <="); strcat((char *)sql_str,DskMax); } } //os type: "and" if(andor4==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; switch (OSIndex) { case 0: strcat((char *)sql_str,"OSType = \"Windows 95\""); break; case 1: strcat((char *)sql_str,"OSType = \"Windows 98\""); break; case 2: strcat((char *)sql_str,"OSType = \"Windows NT\""); break; case 3: strcat((char *)sql_str,"OSType = \"Solaris\""); break; } } //equipment name: "and" if(andor5==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; strcat((char *)sql_str,"DeviceName = \""); strcat((char *)sql_str,Equ); strcat((char *)sql_str,"\""); } //IP address: "and" if(andor6==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; if(strcmp((char *)IPMin,"")!=0 && strcmp((char *)IPMax,"")!=0) { strcat((char *)sql_str,"IPAddress >= \""); strcat((char *)sql_str,IPMin); strcat((char *)sql_str,"\" and IPAddress <= \""); strcat((char *)sql_str,IPMax); strcat((char *)sql_str,"\""); } else if(strcmp((char *)IPMin,"")!=0) { strcat((char *)sql_str,"IPAddress >= \""); strcat((char *)sql_str,IPMin); strcat((char *)sql_str,"\""); } else if(strcmp((char *)IPMax,"")!=0) { strcat((char *)sql_str,"IPAddress <= \""); strcat((char *)sql_str,IPMax); strcat((char *)sql_str,"\""); } } //MAC address: "and" if(andor7==2) { if (first==0) strcat((char *)sql_str," and "); else first = 0; strcat((char *)sql_str,"MACAddress = \""); strcat((char *)sql_str,Mac); strcat((char *)sql_str,"\""); } if(strcmp((char *)sql_str,"")!=0) { strcat((char *)sel_str," where "); strcat((char *)sel_str,sql_str); } //encrypt SQL sentence DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); //set mask in sql sentence int index=0; if(andor6==1) { if(andor4==1) index++; else if(andor5==1) index++; else if(strcmp((char *)IPMin,"")!=0 && strcmp((char *)IPMax,"")!=0) index=index+2; else if(strcmp((char *)IPMin,"")!=0) index++; else if(strcmp((char *)IPMax,"")!=0) index++; } else if(andor6==2) { if(andor7==1) index++; else if(andor4==1 || andor4==2) index++; else if(andor5==1 || andor5==2) index++; else if(strcmp((char *)IPMin,"")!=0 && strcmp((char *)IPMax,"")!=0) index=index+2; else if(strcmp((char *)IPMin,"")!=0) index++; else if(strcmp((char *)IPMax,"")!=0) index++; } if( index>0 ) { if(strcmp((char *)IPMin,"")!=0 && strcmp((char *)IPMax,"")!=0) in_table.encrypt_id=SetMask(index-1, index,0,0); else if(strcmp((char *)IPMin,"")!=0 || strcmp((char *)IPMax,"")!=0) in_table.encrypt_id=SetMask(index,0,0,0); } first=0; //build "where" sentence basis on endsystem id strcpy((char *)sel_str,""); do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); ret_records = (tables_union *)records.records_buf; if (hRes != S_OK || rec_number==0){ for(i=0;i<7;i++) RecordNum[i]=0; m_pIobject_mm->Release(); return 2005; } if(offset > 0){ for(i=0;i<offset;i++) { if(first!=0) { _ltoa((ret_records+i)->view_inv_endsystem.endsystem_id,temp2,10); int n=strcmp(temp, temp2); if(n==0) { continue; } else { strcpy(temp, temp2); strcat((char *)sel_str," or "); strcat((char *)sel_str, "EndSystemID="); strcat((char *)sel_str, temp2); } } else { first=1; _ltoa((ret_records+i)->view_inv_endsystem.endsystem_id,temp,10); strcat(sel_str,"EndSystemID="); strcat(sel_str,temp); } } } } while(start+offset<rec_number); if(first>0) { strcpy((char *)sql_str, " where ( "); strcat((char *)sql_str,sel_str); strcat((char *)sql_str, " ) "); } else strcpy((char *)sql_str,""); } //build SQL sentence(add "where" condition), select each table //encrypt/decrypt each records in_table.db_operation = SELECT; in_table.encrypt_id = 0; char tempstr[STR256]; start = 0; offset = 0; rec_number = -1; in_table.db_table_id = DB_INV | TABLE_INV_MAP; strcpy((char *)sel_str,"Select * from INV_MAPTAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[0]=0; m_pIobject_mm->Release(); if(hRes==1001) return S_OK; return 2005; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[0] = rec_number; first = 1; } //insert the queried MAP records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendMap = new MAPdb; SendMap->ID = (ret_records+i)->table_inv_map.endsystem_id; SendMap->AvailableTag = (ret_records+i)->table_inv_map.map_available_flag; strcpy((char *)IPMinstr, (char *)(ret_records+i)->table_inv_map.map_ip_addr); Tranvers_IP(IPMinstr); strcpy((char *)SendMap->IPAddress, (char *)IPMinstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_map.map_hostname, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendMap->HostName, (char *)tempstr); insert(TABLE_INV_MAP, SendMap); delete SendMap; } } } while(start+offset<RecordNum[0]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_CPU; strcpy((char *)sel_str,"Select * from INV_CPUTAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[1]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[1] = rec_number; first = 1; } //insert the queried CPU records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendCpu = new CPUdb; SendCpu->ID = (ret_records+i)->table_inv_cpu.endsystem_id; SendCpu->CPUSpeed = (ret_records+i)->table_inv_cpu.cpu_speed; SendCpu->CPUMMXFlag = (ret_records+i)->table_inv_cpu.cpu_mmx_flag; DesStrDe((unsigned char *)(ret_records+i)->table_inv_cpu.cpu_manufacture, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendCpu->CPUManufacture, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_cpu.cpu_type, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendCpu->CPUType, (char *)tempstr); insert(TABLE_INV_CPU, SendCpu); delete SendCpu; } } } while(start+offset<RecordNum[1]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_MEM; strcpy((char *)sel_str,"Select * from INV_MEMORYTAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[2]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[2] = rec_number; first = 1; } //insert the queried MEMORY records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendMem = new MEMORYdb; SendMem->ID = (ret_records+i)->table_inv_mem.endsystem_id; SendMem->PageSize = (ret_records+i)->table_inv_mem.mem_page_size; SendMem->PhysicalSize = (ret_records+i)->table_inv_mem.mem_physical_size; SendMem->VirtualSize = (ret_records+i)->table_inv_mem.mem_virtual_size; insert(TABLE_INV_MEM, SendMem); delete SendMem; } } } while(start+offset<RecordNum[2]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_FS; strcpy((char *)sel_str,"Select * from INV_FILETAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[3]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[3] = rec_number; first = 1; } //insert the queried FILE records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendFs = new FILESYSTEMdb; SendFs->ID = (ret_records+i)->table_inv_fs.endsystem_id; SendFs->FileSystemSize = (ret_records+i)->table_inv_fs.fs_size; SendFs->FileSystemSurplus = (ret_records+i)->table_inv_fs.fs_surplus; DesStrDe((unsigned char *)(ret_records+i)->table_inv_fs.fs_type, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendFs->FileSystemType, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_fs.fs_dev_name, (unsigned char*)tempstr, (unsigned char *)pKey); strcpy((char *)SendFs->FileSystemDeviceName, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_fs.fs_desc, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendFs->FileSystemDescription, (char *)tempstr); insert(TABLE_INV_FS, SendFs); delete SendFs; } } } while(start+offset<RecordNum[3]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_OS; strcpy((char *)sel_str,"Select * from INV_OSTAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[4]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[4] = rec_number; first = 1; } //insert the queried OS records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendOs = new OSdb; SendOs->ID = (ret_records+i)->table_inv_os.endsystem_id; DesStrDe((unsigned char *)(ret_records+i)->table_inv_os.os_type, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendOs->OSType, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_os.os_ver, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendOs->OSVersion, (char *)tempstr); strcpy((char *)SendOs->OSInstallTime, (char *)(ret_records+i)->table_inv_os.os_install_time); DesStrDe((unsigned char *)(ret_records+i)->table_inv_os.os_desc, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendOs->OSDescription, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_os.os_install_path, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendOs->OSInstallPath, (char *)tempstr); insert(TABLE_INV_OS, SendOs); delete SendOs; } } } while(start+offset<RecordNum[4]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_DEV; strcpy((char *)sel_str,"Select * from INV_DEVICETAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[5]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[5] = rec_number; first = 1; } //insert the queried DEVICE records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendDevice = new DEVICEdb; SendDevice->ID = (ret_records+i)->table_inv_dev.endsystem_id; SendDevice->DeviceWorkStatus = (ret_records+i)->table_inv_dev.dev_status; SendDevice->DevicePNPFlag = (ret_records+i)->table_inv_dev.dev_pnp_flag; SendDevice->DeviceIRQNO = (ret_records+i)->table_inv_dev.dev_irq_no; DesStrDe((unsigned char *)(ret_records+i)->table_inv_dev.dev_name, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendDevice->DeviceName, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_dev.dev_manufacture, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendDevice->DeviceManufacture, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_dev.dev_model, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendDevice->DeviceModel, (char *)tempstr); strcpy((char *)SendDevice->DeviceInstallTime, (char *)(ret_records+i)->table_inv_dev.dev_install_time); insert(TABLE_INV_DEV, SendDevice); delete SendDevice; } } } while(start+offset<RecordNum[5]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_NET; strcpy((char *)sel_str,"Select * from INV_NETWORKTAB "); strcat((char *)sel_str,sql_str); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED) { RecordNum[6]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[6] = rec_number; first = 1; } //insert the queried NETWORK records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendNetwork = new NETWORKdb; SendNetwork->ID = (ret_records+i)->table_inv_dev.endsystem_id; DesStrDe((unsigned char *)(ret_records+i)->table_inv_net.net_hostname, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetwork->HostName, (char *)tempstr); strcpy((char *)IPMinstr,(char *)(ret_records+i)->table_inv_net.net_ip_addr); Tranvers_IP(IPMinstr); strcpy((char *)SendNetwork->IPAddress, (char *)IPMinstr); strcpy((char *)IPMinstr,(char *)(ret_records+i)->table_inv_net.net_mask); Tranvers_IP(IPMinstr); strcpy((char *)SendNetwork->NetMask, (char *)IPMinstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_net.net_cur_user, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetwork->Currentuser, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_net.net_work_grp, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetwork->WorkGroup, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_net.net_domain, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetwork->LoginDomain, (char *)tempstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_net.net_mac_addr, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetwork->AdapterMAC, (char *)tempstr); insert(TABLE_INV_NET, SendNetwork); delete SendNetwork; } } }while(start+offset<RecordNum[6]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_STAT; strcpy((char *)sel_str, "Select * from INV_STATISTICSTAB"); if(strcmp((char *)sql_str, "")!=0) { strcat((char *)sel_str, (char *)sql_str); strcat((char *)sel_str, " and newtag=1 "); } else strcat((char *)sel_str, " where newtag=1 "); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[7]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[7] = rec_number; first = 1; } //insert the queried STATISTICS records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendStat = new STATISTICSdb; SendStat->ID = (ret_records+i)->table_inv_stat.endsystem_id; SendStat->ProcessNum = (ret_records+i)->table_inv_stat.stat_proc_num; SendStat->CPUUseRate = (ret_records+i)->table_inv_stat.stat_cpu_rate; SendStat->FileSystemUseRate = (ret_records+i)->table_inv_stat.stat_fs_rate; SendStat->MemoryUseRate = (ret_records+i)->table_inv_stat.stat_mem_rate; strcpy((char *)SendStat->StatisticsTime, (char *)(ret_records+i)->table_inv_stat.stat_time); insert(TABLE_INV_STAT, SendStat); delete SendStat; } } } while(start+offset<RecordNum[7]); rec_number = -1; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_NETSTAT; strcpy((char *)sel_str, "Select * from INV_NETSTATAB"); if(strcmp((char *)sql_str, "")!=0) { strcat((char *)sel_str, (char *)sql_str); strcat((char *)sel_str, " and newtag=1 "); } else strcat((char *)sel_str, " where newtag=1 "); DesStrEn((unsigned char *)sel_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[8]=0; first=1; offset=0; rec_number=0; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[8] = rec_number; first = 1; } //insert the queried NETSTA records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendNetstat = new NETSTATdb; SendNetstat->ID = (ret_records+i)->table_inv_netstat.endsystem_id; SendNetstat->ReceiveByte = (ret_records+i)->table_inv_netstat.netstat_rcv_byte; SendNetstat->ReceivePacket = (ret_records+i)->table_inv_netstat.netstat_rcv_packet; SendNetstat->SendByte = (ret_records+i)->table_inv_netstat.netstat_send_byte; SendNetstat->SendPacket = (ret_records+i)->table_inv_netstat.netstat_send_packet; SendNetstat->DiscardPacket = (ret_records+i)->table_inv_netstat.netstat_discard_packet; SendNetstat->UnknownProtocols = (ret_records+i)->table_inv_netstat.netstat_unknown_protocol; SendNetstat->ErrorPacket = (ret_records+i)->table_inv_netstat.netstat_error_packet; strcpy((char *)SendNetstat->StatisticsTime, (char *)(ret_records+i)->table_inv_netstat.netstat_time); strcpy((char *)IPMinstr,(char *)(ret_records+i)->table_inv_netstat.netstat_ip_addr); Tranvers_IP(IPMinstr); strcpy((char *)SendNetstat->IPAddress, IPMinstr); strcpy((char *)IPMinstr,(char *)(ret_records+i)->table_inv_netstat.netstat_mask); Tranvers_IP(IPMinstr); strcpy((char *)SendNetstat->NetMask, IPMinstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_netstat.netstat_mac_addr, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetstat->AdapterMAC, (char *)tempstr); insert(TABLE_INV_NETSTAT, SendNetstat); delete SendNetstat; } } } while(start+offset<RecordNum[8]); m_pIobject_mm->Release(); return S_OK; } //******************************************************************************* HRESULT WINAPI Sel_StaChart(char *EndSystemID, char *FromTime,char *ToTime) { dbptr m_pIobject_mm=NULL; char pKey[8]; //the public key STATISTICSdb *SendStat; //first: delete pristine records in Access dele(TABLE_INV_STAT); int i; HRESULT hRes=Connect_To_DB(&m_pIobject_mm); //connect to sqlservice if(hRes!=S_OK) { RecordNum[7]=0; m_pIobject_mm->Release(); return 501; } int pk=GetPublicKey(pKey); //get the public key if(pk!=0) return 999; int rec_number = -1; db_table in_table; tab_record records; tables_union *ret_records; int start,offset,first; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_STAT; //encrypt SQL sentence char sql_str[128]; sprintf((char *)sql_str,"Select * from INV_STATISTICSTAB where EndSystemID=%s and StatisticsTime > '%s' and StatisticsTime<='%s'",EndSystemID,FromTime,ToTime); DesStrEn((unsigned char *)sql_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); in_table.encrypt_id=SetMask(2,3,0,0); first=0; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[7]=0; m_pIobject_mm->Release(); return 2012; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[7] = rec_number; first = 1; } //insert the queried STATISTICS records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendStat = new STATISTICSdb; SendStat->ID = (ret_records+i)->table_inv_stat.endsystem_id; SendStat->ProcessNum = (ret_records+i)->table_inv_stat.stat_proc_num; SendStat->CPUUseRate = (float)(ret_records+i)->table_inv_stat.stat_cpu_rate; SendStat->FileSystemUseRate = (float)(ret_records+i)->table_inv_stat.stat_fs_rate; SendStat->MemoryUseRate = (float)(ret_records+i)->table_inv_stat.stat_mem_rate; strcpy((char *)SendStat->StatisticsTime, (char *)(ret_records+i)->table_inv_stat.stat_time); insert(TABLE_INV_STAT, SendStat); delete SendStat; } } } while(start+offset<RecordNum[7]); m_pIobject_mm->Release(); return S_OK; } //****************************************************************************** HRESULT WINAPI Sel_NetChart(char *EndSystemID, char *FromTime,char *ToTime) { dbptr m_pIobject_mm=NULL; char pKey[8]; //the public key NETSTATdb *SendNetstat; //first: delete the pristine records in Access dele(TABLE_INV_NETSTAT); int i; HRESULT hRes=Connect_To_DB(&m_pIobject_mm); //connect to sqlservice if(hRes!=S_OK) { RecordNum[8]=0; m_pIobject_mm->Release(); return 501; } int pk=GetPublicKey(pKey); //get public key if(pk!=0) return 999; int rec_number=-1; db_table in_table; tab_record records; tables_union *ret_records; int start,offset,first; char IPMinstr[16]; start = 0; offset = 0; in_table.db_table_id = DB_INV | TABLE_INV_NETSTAT; //encrypt SQL sentence char sql_str[128]; sprintf((char *)in_table.sql_statement,"Select * from INV_NETSTATAB where EndSystemID=%s and StatisticsTime > '%s' and StatisticsTime<='%s'",EndSystemID,FromTime,ToTime); DesStrEn((unsigned char *)sql_str, (unsigned char *)in_table.sql_statement, (unsigned char *)pKey); in_table.encrypt_id=SetMask(2,3,0,0); first=0; char tempstr[STR256]; do { start+=offset; hRes = m_pIobject_mm->av_dbsql(&in_table,&records,&rec_number,&offset,start); if (hRes != DB_SUCCEED){ RecordNum[8]=0; m_pIobject_mm->Release(); return 2013; } ret_records = (tables_union *)records.records_buf; if(first==0) { RecordNum[8] = rec_number; first = 1; } //insert the queried NETSTA records to Access if(offset > 0) { for(i=0; i<offset; i++) { SendNetstat = new NETSTATdb; SendNetstat->ID = (ret_records+i)->table_inv_netstat.endsystem_id; SendNetstat->ReceiveByte = (ret_records+i)->table_inv_netstat.netstat_rcv_byte; SendNetstat->ReceivePacket = (ret_records+i)->table_inv_netstat.netstat_rcv_packet; SendNetstat->SendByte = (ret_records+i)->table_inv_netstat.netstat_send_packet; SendNetstat->SendPacket = (ret_records+i)->table_inv_netstat.netstat_send_packet; SendNetstat->DiscardPacket = (ret_records+i)->table_inv_netstat.netstat_discard_packet; SendNetstat->UnknownProtocols = (ret_records+i)->table_inv_netstat.netstat_unknown_protocol; SendNetstat->ErrorPacket = (ret_records+i)->table_inv_netstat.netstat_error_packet; strcpy((char *)SendNetstat->StatisticsTime, (char *)(ret_records+i)->table_inv_netstat.netstat_time); strcpy((char *)IPMinstr,(char *)(ret_records+i)->table_inv_netstat.netstat_ip_addr); Tranvers_IP(IPMinstr); strcpy((char *)SendNetstat->IPAddress, IPMinstr); strcpy((char *)IPMinstr,(char *)(ret_records+i)->table_inv_netstat.netstat_mask); Tranvers_IP(IPMinstr); strcpy((char *)SendNetstat->NetMask, IPMinstr); DesStrDe((unsigned char *)(ret_records+i)->table_inv_netstat.netstat_mac_addr, (unsigned char *)tempstr, (unsigned char *)pKey); strcpy((char *)SendNetstat->AdapterMAC, (char *)tempstr); insert(TABLE_INV_NETSTAT, SendNetstat); delete SendNetstat; } } } while(start+offset<RecordNum[8]); m_pIobject_mm->Release(); return S_OK; }