Пример #1
0
//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;
}
Пример #2
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 ();
}
Пример #3
0
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);
}