//CPU卡直通指令 int CNTReader::Apdu4Hex(const char *sSendData, byte nSendDatalen,int* nRespCode,byte *sRespData,byte &nRespDatalen) { *nRespCode=0; if(!IsOpen()) return PORT_NOTOPEN_ERROR; short slen=0; short rlen=0; unsigned char sbuff[256]= {0}; unsigned char rbuff[256]= {0}; memcpy(sbuff,"\xA2\x33",2); memcpy(sbuff+2,sSendData,nSendDatalen); Hex2Ascii(sSendData,nSendDatalen,sbuff+2,slen); slen+=2; int ret=SendCommand(sbuff,slen,rbuff,&rlen); if(ret) return ret; nRespDatalen=(unsigned char)rlen; memcpy(sRespData,rbuff,nRespDatalen); if( (sRespData[nRespDatalen-2]*256+sRespData[nRespDatalen-1])!=0x9000 ) { *nRespCode= (sRespData[nRespDatalen-2]*256+sRespData[nRespDatalen-1]); } return 0; }
void Params_Get (void) { PARAM_LINE ascii_args_str; LINE and_or_value; LINE msg; char *plen; char *passed_parameter; unsigned short args_str_length=0; int i; int rc; int n_temp; long l_temp; #ifndef TEST_VERSION args_str[0]='\0'; ascii_args_str[0]='\0'; plen = getenv ("CONTENT_LENGTH"); if (plen != NULL) { if (sscanf (plen, "%u", &args_str_length) != 1) Error ("CONTENT_LENGTH environment variable is not defined<br>", 1); else fgets (args_str, args_str_length+1, stdin); } else { plen = getenv("QUERY_STRING"); if (plen!=NULL) strcpy (args_str, plen); else args_str[0]='\0'; } Hex2Ascii (args_str, ascii_args_str); //printf ("parameters: '%s'=='%s'<br>\n", args_str, ascii_args_str); //return; passed_parameter = strtok (ascii_args_str, "&"); if (passed_parameter==NULL) return; do { if (Found_Substring (passed_parameter, "a=")) { if (!strncmp(passed_parameter+2, ANSWER_YES, strlen(ANSWER_YES))) Flags_Set_Answer (1); else if (!strncmp(passed_parameter+2, ANSWER_NO, strlen(ANSWER_NO))) Flags_Set_Answer (2); else { Error ("Invalid Answer parameter", 0); Flags_Set_Answer (0); } } else if (Found_Substring (passed_parameter, "b=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid inverse parameter", 0); if (n_temp) n_temp=1; Colors_Set_Black (n_temp); } else if (Found_Substring (passed_parameter, "c=")) { strcpy (and_or_value, passed_parameter+2); if (! strcmp (and_or_value, "AND") || ! strcmp (and_or_value, "and")) Flags_Set_And_Or_Flag (1); else if (! strcmp (and_or_value, "OR") || ! strcmp (and_or_value, "or")) Flags_Set_And_Or_Flag (0); else { sprintf (msg, "Unexpected value %s", passed_parameter); Error (msg, 0); } } else if (Found_Substring (passed_parameter, "e=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid language parameter", 0); if (n_temp) n_temp=1; Flags_Set_Language (n_temp); } else if (Found_Substring (passed_parameter, "h")) { Error (USAGE, 0); } else if (Found_Substring (passed_parameter, "i=")) { switch (passed_parameter[2]) { case 0: Flags_Set_Ignore_Case(CASE_SENSITIVE); break; case 1: Flags_Set_Ignore_Case(IGNORE); break; default: printf("Unexpected Ignore parameter value"); } } else if (Found_Substring (passed_parameter, "k=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid keyword_type parameter", 0); Flags_Set_Keyword_Type (n_temp); } else if (Found_Substring (passed_parameter, "l=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid highlight parameter", 0); Flags_Set_Highlight (n_temp); } else if (Found_Substring (passed_parameter, "n=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid repeats_number parameter", 0); if (n_temp<1u || n_temp>10u) { Error("User, не выпендривайся<br>", 0); Flags_Set_Repeats_Number(3u); } else Flags_Set_Repeats_Number(n_temp); } else if (Found_Substring (passed_parameter, "p=")) { Keywords_Extract (passed_parameter+2, MAX_PARAM_LINE_LEN-2); } else if (Found_Substring (passed_parameter, "r=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid random_choosing parameter", 0); else Flags_Set_Random_Choosing (n_temp); } else if (Found_Substring (passed_parameter, "s=")) { if (sscanf (passed_parameter+2, "%ld", &l_temp) != 1) Error ("Invalid start_number parameter", 0); else Flags_Set_Start_Number (l_temp); } else if (Found_Substring (passed_parameter, "t=")) { rc = sscanf (passed_parameter+2, "%d", &n_temp); if (rc!=1) Error("Theme parameter expected", 0); else Flags_Set_Theme (n_temp); } else if (Found_Substring (passed_parameter, "v=")) { if (sscanf (passed_parameter+2, "%d", &n_temp) != 1) Error ("Invalid advanced_version parameter", 0); Flags_Set_Advanced_Version (n_temp); if (Flags_Get_Advanced_Version()) Flags_Set_Advanced_Version(1u); } else if (Found_Substring (passed_parameter, "w=")) { rc = sscanf (passed_parameter+2, "%d", &n_temp); if (rc!=1) Error("MustDie parameter expected", 0); else Flags_Set_MustDie (n_temp); } else if (Found_Substring (passed_parameter, "y=")) { rc = sscanf (passed_parameter+2, "%d", &n_temp); if (rc!=1) Error("Bonus parameter expected", 0); else Flags_Set_Bonus (n_temp); } else if (Found_Substring (passed_parameter, "z=")) { // heh, try to guess what is it for } else Error("Invalid parameters passed to An.cgi", 0); passed_parameter=strtok (NULL, "&"); } while (passed_parameter!=NULL); #else Keywords_Add("Вася"); Keywords_Add("USA"); Keywords_Add("дАть"); Flags_Set_Ignore_Case (IGNORE); Flags_Set_And_Or_Flag(OR_FLAG); //Flags_Set_Keyword_Type(USER_DEFINED_KEYWORD); if (Flags_Get_Ignore_Case()==IGNORE) for (i=0; i<Keywords_Get_Size(); i++) Tolower_String (Keywords_Get(i), Keywords_Get(i)); #endif Params_Print (); }
static void get_parameters (void) { char *plen; char *passed_parameter; unsigned short args_str_length=0; args_str[0]='\0'; ascii_args_str[0]='\0'; plen = getenv ("CONTENT_LENGTH"); if (plen != NULL) { if (sscanf (plen, "%u", &args_str_length) != 1) Error ("CONTENT_LENGTH environment variable is badly defined<br>", 0); else fgets (args_str, args_str_length+1, stdin); } else { plen = getenv("QUERY_STRING"); if (plen!=NULL) strcpy (args_str, plen); else args_str[0]='\0'; } Hex2Ascii (args_str, ascii_args_str); passed_parameter = strtok (ascii_args_str, "&"); if (passed_parameter==NULL) return; do { if (passed_parameter[0] == 'n' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%ld", &start_number) != 1) Error ("Invalid start_number parameter", 0); } else if (passed_parameter[0] == 'l' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%d", &link_only) != 1) Error ("Invalid Link parameter", 0); Check_Is_Bool (link_only); } else if (passed_parameter[0] == 'm' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%d", &mini_version) != 1) Error ("Invalid Version parameter", 0); Check_Is_Bool (mini_version); } else if (passed_parameter[0] == 'e' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%d", &error_report) != 1) Error ("Invalid ErrorReport parameter", 0); Check_Is_Bool (error_report); } else if (passed_parameter[0] == 'a' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%d", &language) != 1) Error ("Invalid language parameter", 0); Check_Is_Bool (language); } else if (passed_parameter[0] == 'p' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%d", &program_error) != 1) Error ("Invalid ProgramError parameter", 0); Check_Is_Bool (program_error); } else if (passed_parameter[0] == 'x' && passed_parameter[1] == '=') { if (sscanf (passed_parameter+2, "%d", &x_text) != 1) Error ("Invalid X_text parameter", 0); Check_Is_Bool (x_text); } else if (passed_parameter[0] == 's' && passed_parameter[1] == '=') { strcpy (str_error, passed_parameter+2); } else Error ("Unexpected parameter", 0); passed_parameter=strtok (NULL, "&"); } while (passed_parameter!=NULL); }