/* * * Usage: php_native_download_file_cmd($file_hash, "command", $optional_arg) * */ void php_native_download_file_cmd(PHP_VALUE_NODE *) { PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 1"); return; } char *str_hash = si->var->value.str_val; si = get_scope_item(g_current_scope, "__param_1"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 2"); return; } char *cmd_name = si->var->value.str_val; si = get_scope_item(g_current_scope, "__param_2"); PHP_VAR_NODE *opt_param = si ? si->var : 0; if ( (!strcmp(cmd_name, "prio") || !strcmp(cmd_name, "setcat")) && !opt_param ) { php_report_error(PHP_ERROR, "Commands 'prio' and 'setcat' needs 3-rd argument"); return; } CPhPLibContext::g_curr_context->WebServer()->Send_DownloadFile_Cmd(wxString(char2unicode(str_hash)), wxString(char2unicode(cmd_name)), opt_param ? opt_param->value.int_val : 0); }
/* * Usage amule_add_server_cmd($server_addr, $server_port, $server_name); */ void php_native_add_server_cmd(PHP_VALUE_NODE *) { PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( !si || (si->var->value.type != PHP_VAL_STRING) ) { php_report_error(PHP_ERROR, "Missing or bad argument 1: $server_addr"); return; } char *addr = si->var->value.str_val; si = get_scope_item(g_current_scope, "__param_1"); if ( !si ) { php_report_error(PHP_ERROR, "Missing argument 2: $server_port"); return; } cast_value_dnum(&si->var->value); int port = si->var->value.int_val; si = get_scope_item(g_current_scope, "__param_2"); if ( !si || (si->var->value.type != PHP_VAL_STRING) ) { php_report_error(PHP_ERROR, "Invalid or missing argument 3: $server_name"); return; } char *name = si->var->value.str_val; CPhPLibContext::g_curr_context->WebServer()->Send_AddServer_Cmd(wxString(char2unicode(addr)), wxString::Format(wxT("%d"), port), wxString(char2unicode(name))); }
/* * Download ed2k link. Params: link, category (default=0) */ void php_native_ed2k_download_cmd(PHP_VALUE_NODE *result) { PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 1 (file link)"); return; } char *str_link = si->var->value.str_val; si = get_scope_item(g_current_scope, "__param_1"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 2 (category)"); return; } cast_value_dnum(&si->var->value); int cat = si->var->value.int_val; bool cmd_result = CPhPLibContext::g_curr_context->WebServer()->Send_DownloadEd2k_Cmd( wxString(char2unicode(str_link)), cat); if ( result ) { cast_value_bool(result); result->int_val = cmd_result; } }
/* * Usage amule_server_cmd($server_ip, $server_port, "command"); */ void php_native_server_cmd(PHP_VALUE_NODE *) { PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( !si ) { php_report_error(PHP_ERROR, "Missing argument 1: $server_ip"); return; } cast_value_dnum(&si->var->value); uint32_t ip = si->var->value.int_val; si = get_scope_item(g_current_scope, "__param_1"); if ( !si ) { php_report_error(PHP_ERROR, "Missing argument 2: $server_port"); return; } cast_value_dnum(&si->var->value); int port = si->var->value.int_val; si = get_scope_item(g_current_scope, "__param_2"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 3: $command"); return; } char *cmd = si->var->value.str_val; CPhPLibContext::g_curr_context->WebServer()->Send_Server_Cmd(ip, port, wxString(char2unicode(cmd))); }
const CountryData& CIP2Country::GetCountryData(const wxString &ip) { // Should prevent the crash if the GeoIP database does not exists if (m_geoip == NULL) { CountryDataMap::iterator it = m_CountryDataMap.find(wxString(wxT("unknown"))); it->second.Name = wxT("?"); return it->second; } const wxString CCode = wxString(char2unicode(GeoIP_country_code_by_addr(m_geoip, unicode2char(ip)))).MakeLower(); CountryDataMap::iterator it = m_CountryDataMap.find(CCode); if (it == m_CountryDataMap.end()) { // Show the code and ?? flag it = m_CountryDataMap.find(wxString(wxT("unknown"))); wxASSERT(it != m_CountryDataMap.end()); if (CCode.IsEmpty()) { it->second.Name = wxT("?"); } else{ it->second.Name = CCode; } } return it->second; }
void CSocks5StateMachine::process_process_command_reply(bool entry) { if (entry) { m_lastReply = m_buffer[1]; unsigned char addressType = m_buffer[3]; // Process the server's reply m_ok = m_ok && m_buffer[0] == SOCKS5_VERSION && m_buffer[1] == SOCKS5_REPLY_SUCCEED; if (m_ok) { // Read BND.ADDR unsigned int portOffset = 0; switch(addressType) { case SOCKS5_ATYP_IPV4_ADDRESS: { const unsigned int addrOffset = 4; portOffset = 8; m_proxyBoundAddressIPV4.Hostname( PeekUInt32( m_buffer+addrOffset) ); m_proxyBoundAddress = &m_proxyBoundAddressIPV4; break; } case SOCKS5_ATYP_DOMAINNAME: { // Read the domain name const unsigned int addrOffset = 5; portOffset = 10 + m_buffer[4]; char c = m_buffer[portOffset]; m_buffer[portOffset] = 0; m_proxyBoundAddressIPV4.Hostname( char2unicode(m_buffer+addrOffset)); m_proxyBoundAddress = &m_proxyBoundAddressIPV4; m_buffer[portOffset] = c; break; } case SOCKS5_ATYP_IPV6_ADDRESS: { portOffset = 20; // TODO // IPV6 not yet implemented in wx //m_proxyBoundAddress.Hostname(Uint128toStringIP( // *((uint128 *)(m_buffer+addrOffset)) )); //m_proxyBoundAddress = &m_proxyBoundAddressIPV6; m_ok = false; break; } } // Set the packet length at last m_packetLenght = portOffset + 2; // Read BND.PORT m_proxyBoundAddress->Service( ENDIAN_NTOHS( RawPeekUInt16( m_buffer+portOffset) ) ); } } AddDummyEvent(); }
void CaMuleExternalConnector::TextShell(const wxString &prompt) { char buffer[256]; wxString buf; bool The_End = false; do { GetCommand(prompt, buffer, 256); buf = char2unicode(buffer); The_End = Parse_Command(buf); } while ((!The_End) && (m_ECClient->IsSocketConnected())); }
void CaMuleExternalConnector::ConnectAndRun(const wxString &ProgName, const wxString& ProgVersion) { if (m_NeedsConfigSave) { SaveConfigFile(); return; } #ifdef SVNDATE Show(CFormat(_("This is %s %s %s\n")) % wxString::FromAscii(m_appname) % wxT(VERSION) % wxT(SVNDATE)); #else Show(CFormat(_("This is %s %s\n")) % wxString::FromAscii(m_appname) % wxT(VERSION)); #endif // HostName, Port and Password if ( m_password.IsEmpty() ) { wxString pass_plain; #ifndef __WXMSW__ pass_plain = char2unicode(getpass("Enter password for mule connection: ")); #else //#warning This way, pass enter is not hidden on windows. Bad thing. char temp_str[512]; fflush(stdin); printf("Enter password for mule connection: \n"); fflush(stdout); fgets(temp_str, 512, stdin); temp_str[strlen(temp_str)-1] = '\0'; pass_plain = char2unicode(temp_str); #endif wxCHECK2(m_password.Decode(MD5Sum(pass_plain).GetHash()), /* Do nothing. */ ); // MD5 hash for an empty string, according to rfc1321. if (m_password.Encode() == wxT("D41D8CD98F00B204E9800998ECF8427E")) { m_password.Clear(); } // Clear plain-text password pass_plain = wxT("01234567890123456789"); }
void CLogger::AddLogLine( const wxString &file, int line, bool critical, DebugType type, const std::ostringstream &msg) { int index = (int)type; if ( index >= 0 && index < categoryCount ) { const CDebugCategory& cat = g_debugcats[ index ]; wxASSERT(type == cat.GetType()); AddLogLine(file, line, critical, logStandard, cat.GetName() + wxT(": ") + char2unicode(msg.str().c_str())); } }
void CIP2Country::LoadFlags() { // Load data from xpm files for (int i = 0; i < flags::FLAGS_XPM_SIZE; ++i) { CountryData countrydata; countrydata.Name = char2unicode(flags::flagXPMCodeVector[i].code); countrydata.Flag = wxImage(flags::flagXPMCodeVector[i].xpm); if (countrydata.Flag.IsOk()) { m_CountryDataMap[countrydata.Name] = countrydata; } else { AddLogLineC(CFormat(_("Failed to load country data for '%s'.")) % countrydata.Name); continue; } } AddDebugLogLineN(logGeneral, CFormat(wxT("Loaded %d flag bitmaps.")) % m_CountryDataMap.size()); // there's never just one - no plural needed }
/* * Download 1 of search results. Params: hash, category (default=0) */ void php_native_search_download_cmd(PHP_VALUE_NODE *) { PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 1 (file hash)"); return; } char *str_hash = si->var->value.str_val; si = get_scope_item(g_current_scope, "__param_1"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 2 (category)"); return; } cast_value_dnum(&si->var->value); int cat = si->var->value.int_val; CPhPLibContext::g_curr_context->WebServer()->Send_DownloadSearchFile_Cmd( wxString(char2unicode(str_hash)), cat); }
static jobject java_resource(JNIEnv *ee, RDF_Resource resource) { jobject jresource = NULL; jclass cls = (*ee)->FindClass(ee, "netscape.rdf.Resource"); if (cls) { jmethodID mid = (*ee)->GetStaticMethodID(ee, cls, "getResource", "(Ljava/lang/String;)Lnetscape/rdf/Resource;"); if (mid != NULL) { jchar *ustring; int32 len = strlen(resource->id); if (ustring = char2unicode(resource->id, len)) { jstring jid = (*ee)->NewString(ee, ustring, len); if (jid != NULL) { jresource = (*ee)->CallStaticObjectMethod(ee, cls, mid, jid); } } } } return jresource; }
void php_native_search_start_cmd(PHP_VALUE_NODE *) { PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( !si || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 1 (search term)"); return; } char *search = si->var->value.str_val; if ( !(si = get_scope_item(g_current_scope, "__param_1")) || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 2 (file extension)"); return; } char *ext = si->var->value.str_val; if ( !(si = get_scope_item(g_current_scope, "__param_2")) || (si->var->value.type != PHP_VAL_STRING)) { php_report_error(PHP_ERROR, "Invalid or missing argument 3 (file type)"); return; } char *type = si->var->value.str_val; if ( !(si = get_scope_item(g_current_scope, "__param_3")) ) { php_report_error(PHP_ERROR, "Invalid or missing argument 4 (search type)"); return; } cast_value_dnum(&si->var->value); EC_SEARCH_TYPE search_type; switch(si->var->value.int_val) { case 0: search_type = EC_SEARCH_LOCAL; break; case 1: search_type = EC_SEARCH_GLOBAL; break; case 2: search_type = EC_SEARCH_KAD; break; default: php_report_error(PHP_ERROR, "Invalid search type %"PRIu64, si->var->value.int_val); return; } if ( !(si = get_scope_item(g_current_scope, "__param_4")) ) { php_report_error(PHP_ERROR, "Invalid or missing argument 5 (availability)"); return; } cast_value_dnum(&si->var->value); int avail = si->var->value.int_val; if ( !(si = get_scope_item(g_current_scope, "__param_5")) ) { php_report_error(PHP_ERROR, "Invalid or missing argument 6 (min size)"); return; } cast_value_dnum(&si->var->value); int min_size = si->var->value.int_val; if ( !(si = get_scope_item(g_current_scope, "__param_6")) ) { php_report_error(PHP_ERROR, "Invalid or missing argument 7 (max size)"); return; } cast_value_dnum(&si->var->value); int max_size = si->var->value.int_val; CPhPLibContext::g_curr_context->WebServer()->Send_Search_Cmd( wxString(char2unicode(search)), wxString(char2unicode(ext)), wxString(char2unicode(type)), search_type, avail, min_size, max_size); }
void php_native_split(PHP_VALUE_NODE *result) { if ( result ) { cast_value_array(result); } else { return; } PHP_VALUE_NODE *pattern, *string_to_split, *split_limit; PHP_SCOPE_ITEM *si = get_scope_item(g_current_scope, "__param_0"); if ( si ) { pattern = &si->var->value; cast_value_str(pattern); } else { php_report_error(PHP_ERROR, "Invalid or missing argument: pattern"); return; } si = get_scope_item(g_current_scope, "__param_1"); if ( si ) { string_to_split = &si->var->value; cast_value_str(string_to_split); } else { php_report_error(PHP_ERROR, "Invalid or missing argument: string"); return; } si = get_scope_item(g_current_scope, "__param_2"); if ( si ) { split_limit = &si->var->value; cast_value_dnum(split_limit); } else { php_report_error(PHP_ERROR, "Invalid or missing argument: string"); return; } #ifdef PHP_STANDALONE_EN regex_t preg; char error_buff[256]; int reg_result = regcomp(&preg, pattern->str_val, REG_EXTENDED); if ( reg_result ) { regerror(reg_result, &preg, error_buff, sizeof(error_buff)); php_report_error(PHP_ERROR, "Failed in regcomp: %s", error_buff); #else wxRegEx preg; if (!preg.Compile(wxString(char2unicode(pattern->str_val)), wxRE_EXTENDED)) { php_report_error(PHP_ERROR, "Failed in Compile of: %s", pattern->str_val); #endif return; } #ifdef PHP_STANDALONE_EN size_t nmatch = strlen(string_to_split->str_val); regmatch_t *pmatch = new regmatch_t[nmatch]; #endif char *str_2_match = string_to_split->str_val; char *tmp_buff = new char[strlen(string_to_split->str_val)+1]; while ( 1 ) { // printf("matching: %s\n", str_2_match); #ifdef PHP_STANDALONE_EN reg_result = regexec(&preg, str_2_match, nmatch, pmatch, 0); if ( reg_result ) { #else if (!preg.Matches(wxString(char2unicode(str_2_match)))) { #endif // no match break; } #ifndef PHP_STANDALONE_EN // get matching position size_t start, len; if (!preg.GetMatch(&start, &len)) { break; // shouldn't happen } #endif /* * I will use only first match, since I don't see any sense to have more * then 1 match in split() call */ #ifdef PHP_STANDALONE_EN for(int i = 0; i < pmatch[0].rm_so; i++) { #else for(size_t i = 0; i < start; i++) { #endif tmp_buff[i] = str_2_match[i]; } #ifdef PHP_STANDALONE_EN tmp_buff[pmatch[0].rm_so] = 0; #else tmp_buff[start] = 0; #endif // printf("Match added [%s]\n", tmp_buff); PHP_VAR_NODE *match_val = array_push_back(result); match_val->value.type = PHP_VAL_STRING; match_val->value.str_val = strdup(tmp_buff); #ifdef PHP_STANDALONE_EN str_2_match += pmatch[0].rm_eo; #else str_2_match += start + len; #endif } PHP_VAR_NODE *match_val = array_push_back(result); match_val->value.type = PHP_VAL_STRING; match_val->value.str_val = strdup(str_2_match); delete [] tmp_buff; #ifdef PHP_STANDALONE_EN delete [] pmatch; regfree(&preg); #endif } #ifdef ENABLE_NLS void php_native_gettext(PHP_VALUE_NODE *result) { PHP_SCOPE_ITEM *si_str = get_scope_item(g_current_scope, "__param_0"); PHP_VALUE_NODE *str = &si_str->var->value; if ( si_str ) { cast_value_str(str); } else { php_report_error(PHP_ERROR, "Invalid or missing argument 'msgid' for 'gettext'"); return; } if ( result ) { cast_value_dnum(result); result->type = PHP_VAL_STRING; result->str_val = strdup(gettext(str->str_val)); } } void php_native_gettext_noop(PHP_VALUE_NODE *result) { PHP_SCOPE_ITEM *si_str = get_scope_item(g_current_scope, "__param_0"); PHP_VALUE_NODE *str = &si_str->var->value; if ( si_str ) { cast_value_str(str); } else { php_report_error(PHP_ERROR, "Invalid or missing argument 'msgid' for 'gettext_noop'"); return; } if ( result ) { cast_value_dnum(result); result->type = PHP_VAL_STRING; result->str_val = strdup(str->str_val); } } void php_native_ngettext(PHP_VALUE_NODE *result) { PHP_SCOPE_ITEM *si_msgid = get_scope_item(g_current_scope, "__param_0"); PHP_VALUE_NODE *msgid = &si_msgid->var->value; if ( si_msgid ) { cast_value_str(msgid); } else { php_report_error(PHP_ERROR, "Invalid or missing argument 'msgid' for 'ngettext'"); return; } PHP_SCOPE_ITEM *si_msgid_plural = get_scope_item(g_current_scope, "__param_1"); PHP_VALUE_NODE *msgid_plural = &si_msgid_plural->var->value; if ( si_msgid_plural ) { cast_value_str(msgid_plural); } else { php_report_error(PHP_ERROR, "Invalid or missing argument 'msgid_plural' for 'ngettext'"); return; } PHP_SCOPE_ITEM *si_count = get_scope_item(g_current_scope, "__param_2"); PHP_VALUE_NODE *count = &si_count->var->value; if ( si_count ) { cast_value_dnum(count); } else { php_report_error(PHP_ERROR, "Invalid or missing argument 'count' for 'ngettext'"); return; } if ( result ) { cast_value_dnum(result); result->type = PHP_VAL_STRING; result->str_val = strdup(ngettext(msgid->str_val, msgid_plural->str_val, count->int_val)); } }