error_t ftpSetPort(FtpClientContext *context, const IpAddr *ipAddr, uint16_t port) { error_t error; uint_t replyCode; char_t *p; //Invalid context? if(context == NULL) return ERROR_INVALID_PARAMETER; #if (IPV4_SUPPORT == ENABLED) //IPv4 FTP client? if(ipAddr->length == sizeof(Ipv4Addr)) { //Format the PORT command strcpy(context->buffer, "PORT "); //Append host address ipv4AddrToString(ipAddr->ipv4Addr, context->buffer + 5); //Parse the resulting string for(p = context->buffer; *p != '\0'; p++) { //Change dots to commas if(*p == '.') *p = ','; } //Append port number sprintf(p, ",%" PRIu8 ",%" PRIu8 "\r\n", MSB(port), LSB(port)); } else #endif #if (IPV6_SUPPORT == ENABLED) //IPv6 FTP client? if(ipAddr->length == sizeof(Ipv6Addr)) { //Format the EPRT command strcpy(context->buffer, "EPRT |2|"); //Append host address ipv6AddrToString(&ipAddr->ipv6Addr, context->buffer + 8); //Point to the end of the resulting string p = context->buffer + strlen(context->buffer); //Append port number sprintf(p, "|%" PRIu16 "|\r\n", port); } else #endif //Invalid IP address? { //Report an error return ERROR_INVALID_ADDRESS; } //Send the command to the server error = ftpSendCommand(context, context->buffer, &replyCode); //Any error to report? if(error) return error; //Check FTP response code if(!FTP_REPLY_CODE_2YZ(replyCode)) return ERROR_UNEXPECTED_RESPONSE; //Successful processing return NO_ERROR; }
error_t httpServerCgiCallback(HttpConnection *connection, const char_t *param) { static uint_t pageCounter = 0; uint_t length; //Underlying network interface NetInterface *interface = connection->socket->interface; //Check parameter name if(!strcasecmp(param, "PAGE_COUNTER")) { pageCounter++; sprintf(connection->buffer, "%u time%s", pageCounter, (pageCounter >= 2) ? "s" : ""); } else if(!strcasecmp(param, "BOARD_NAME")) { strcpy(connection->buffer, "TMDXCNCDH52C1"); } else if(!strcasecmp(param, "SYSTEM_TIME")) { systime_t time = osGetSystemTime(); formatSystemTime(time, connection->buffer); } else if(!strcasecmp(param, "MAC_ADDR")) { macAddrToString(&interface->macAddr, connection->buffer); } else if(!strcasecmp(param, "IPV4_ADDR")) { ipv4AddrToString(interface->ipv4Config.addr, connection->buffer); } else if(!strcasecmp(param, "SUBNET_MASK")) { ipv4AddrToString(interface->ipv4Config.subnetMask, connection->buffer); } else if(!strcasecmp(param, "DEFAULT_GATEWAY")) { ipv4AddrToString(interface->ipv4Config.defaultGateway, connection->buffer); } else if(!strcasecmp(param, "IPV4_PRIMARY_DNS")) { ipv4AddrToString(interface->ipv4Config.dnsServer[0], connection->buffer); } else if(!strcasecmp(param, "IPV4_SECONDARY_DNS")) { ipv4AddrToString(interface->ipv4Config.dnsServer[1], connection->buffer); } #if (IPV6_SUPPORT == ENABLED) else if(!strcasecmp(param, "LINK_LOCAL_ADDR")) { ipv6AddrToString(&interface->ipv6Config.linkLocalAddr, connection->buffer); } else if(!strcasecmp(param, "GLOBAL_ADDR")) { ipv6AddrToString(&interface->ipv6Config.globalAddr, connection->buffer); } else if(!strcasecmp(param, "IPV6_PREFIX")) { ipv6AddrToString(&interface->ipv6Config.prefix, connection->buffer); length = strlen(connection->buffer); sprintf(connection->buffer + length, "/%u", interface->ipv6Config.prefixLength); } else if(!strcasecmp(param, "ROUTER")) { ipv6AddrToString(&interface->ipv6Config.router, connection->buffer); } else if(!strcasecmp(param, "IPV6_PRIMARY_DNS")) { ipv6AddrToString(&interface->ipv6Config.dnsServer[0], connection->buffer); } else if(!strcasecmp(param, "IPV6_SECONDARY_DNS")) { ipv6AddrToString(&interface->ipv6Config.dnsServer[1], connection->buffer); } #endif else { return ERROR_INVALID_TAG; } //Get the length of the resulting string length = strlen(connection->buffer); //Send the contents of the specified environment variable return httpWriteStream(connection, connection->buffer, length); }