void safecats(const char *s) { char ch; int i; for (i = 0;i < 100;++i) { ch = s[i]; if (!ch) return; if (ch < 33) ch = '?'; if (ch > 126) ch = '?'; if (ch == '%') ch = '?'; /* logger stupidity */ if (ch == ':') ch = '?'; append(&ch); } cats("..."); }
/*! Creates a QtopiaVpnManager instance with the given \a parent. */ QtopiaVpnManager::QtopiaVpnManager( QObject* parent ) : QtopiaIpcAdaptor( QLatin1String("QPE/VPNManager"), parent ) { publishAll( QtopiaIpcAdaptor::Slots ); QString certificateString=QLatin1String("Certificate"), securityKeyString=QLatin1String("Security Key"); // Ensure these system categories exist QCategoryManager cats("Documents"); // For new code a more unique id should be used instead of using the untranslated text // eg. ensureSystemCategory("com.mycompany.myapp.mycategory", "My Category"); cats.ensureSystemCategory(certificateString, certificateString); cats.ensureSystemCategory(securityKeyString, securityKeyString); vpnFactory = new QVPNFactory(); vpnFactory->setServerMode( true ); qLog(VPN) << "Starting VPN Manager"; }
QStringList ReferenceBookUI::prompt() { int idx(0); bool ok; QString str; BookUI book; QStringList retval(book.prompt()); QStringList cats(ReferenceBook::getRefCategories()); while(1) { cout << "Enter the index of the correct Reference Category: "; for(int i = 0; i < cats.size(); ++i) cout << "\n\t(" << i << ") " << cats.at(i); cout << "\n\t(-1)None of these\t:::" << flush; idx = cin.readLine().toInt(&ok); if(ok) { retval << str.setNum(idx); break; } } return retval; }
TEST(TestSequence, Construction) { Sequence empty; EXPECT_EQ(empty.size(), 0); Sequence voidSequence((Object())); // most vexing parse EXPECT_EQ(voidSequence.size(), 0); Sequence single(id(L"ginny")); EXPECT_EQ(single.size(), 1); Sequence cats(boolean(L"ginny"), boolean(L"max")); EXPECT_EQ(cats.size(), 2); Sequence array(array(id(L"ginny"), id(L"max"))); EXPECT_EQ(array.size(), 2); Knowledge k; k.Know(sequence(id(L"table"), id(L"moon"), id(L"hope"))); EXPECT_EQ(k.Clauses(), 1); }
int GoogleSession::updateGroups() { setState(UpdatingGroups); QCategoryManager cats("Address Book"); QHashIterator<QString, QString> it(groups); while (it.hasNext()) { it.next(); QString googleGroupId = it.key(); QString googleGroupName = it.value(); QString googleGroupQId = "category." + googleGroupName; if (!cats.exists( googleGroupQId ) ) { cats.ensureSystemCategory(googleGroupQId, googleGroupName); } } setState(Authenticated); }
void doit(int t) { int fakev4=0; int j; SSL *ssl; int wstat; uint32 scope_id; int sslctl[2]; char *s; unsigned long tmp_long; char sslctl_cmd; stralloc ssl_env = { 0 }; buffer ssl_env_buf; if (pipe(pi) == -1) strerr_die2sys(111,DROP,"unable to create pipe: "); if (pipe(po) == -1) strerr_die2sys(111,DROP,"unable to create pipe: "); if (socketpair(AF_UNIX, SOCK_STREAM, 0, sslctl) == -1) strerr_die2sys(111,DROP,"unable to create socketpair: "); switch(fork()) { case -1: strerr_die2sys(111,DROP,"unable to fork: "); case 0: /* Child */ break; default: /* Parent */ close(pi[0]); close(po[1]); close(sslctl[1]); if ((s=env_get("SSL_CHROOT"))) if (chroot(s) == -1) strerr_die2x(111,DROPSSL,"unable to chroot"); if ((s=env_get("SSL_GID"))) { scan_ulong(s,&tmp_long); gid = tmp_long; } if (gid) if (prot_gid(gid) == -1) strerr_die2sys(111,DROPSSL,"unable to set gid: "); if ((s=env_get("SSL_UID"))) { scan_ulong(s,&tmp_long); uid = tmp_long; } if (uid) if (prot_uid(uid) == -1) strerr_die2sys(111,DROPSSL,"unable to set uid: "); /* This will exit on a fatal error or if the client quits * without activating SSL */ sslctl_cmd = ucspitls_master_wait_for_activation(sslctl[0]); /* If we got here, SSL must have been activated */ ssl = ssl_new(ctx,t); if (!ssl) strerr_die2x(111,DROP,"unable to create SSL instance"); if (ndelay_on(t) == -1) strerr_die2sys(111,DROP,"unable to set socket options: "); if (ssl_timeoutaccept(ssl,ssltimeout) == -1) strerr_die3x(111,DROP,"unable to accept SSL: ",ssl_error_str(ssl_errno)); if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; strerr_warn3("sslserver: ssl ",strnum," accept ",0); } if (flagclientcert) { switch(ssl_verify(ssl,verifyhost)) { case -1: strerr_die2x(111,DROP,"unable to verify client certificate"); case -2: strerr_die2x(111,DROP,"no client certificate"); case -3: strerr_die2x(111,DROP,"client name does not match certificate"); default: break; } } if (sslctl_cmd == 'Y') { ssl_server_env(ssl, &ssl_env); stralloc_0(&ssl_env); /* Add another NUL */ buffer_init(&ssl_env_buf,buffer_unixwrite,sslctl[0],NULL,0); if (buffer_putflush(&ssl_env_buf, ssl_env.s, ssl_env.len) == -1) { strerr_die2sys(111, FATAL, "unable to write SSL environment: "); } } else if (sslctl_cmd != 'y') { strerr_die2x(111,DROP,"Protocol error on SSL control descriptor: invalid command character read"); } if (close(sslctl[0]) != 0) { strerr_die2sys(111, DROP, "Error closing SSL control socket: "); } if (ssl_io(ssl,pi[1],po[0],io_opt) != 0) strerr_die3x(111,DROP,"unable to speak SSL: ",ssl_error_str(ssl_errno)); if (wait_nohang(&wstat) > 0) _exit(wait_exitcode(wstat)); ssl_close(ssl); _exit(0); } /* Child-only below this point */ if (close(sslctl[0]) != 0) { strerr_die2sys(111, DROP, "Error closing SSL control socket: "); } if (!forcev6 && ip6_isv4mapped(remoteip)) fakev4=1; if (fakev4) remoteipstr[ip4_fmt(remoteipstr,remoteip+12)] = 0; else remoteipstr[ip6_fmt(remoteipstr,remoteip)] = 0; if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; strerr_warn4("sslserver: pid ",strnum," from ",remoteipstr,0); } if (socket_local6(t,localip,&localport,&scope_id) == -1) strerr_die2sys(111,DROP,"unable to get local address: "); if (fakev4) localipstr[ip4_fmt(localipstr,localip+12)] = 0; else localipstr[ip6_fmt(localipstr,localip)] = 0; remoteportstr[fmt_ulong(remoteportstr,remoteport)] = 0; if (!localhost) if (dns_name6(&localhostsa,localip) == 0) if (localhostsa.len) { if (!stralloc_0(&localhostsa)) drop_nomem(); localhost = localhostsa.s; } env("PROTO",fakev4?"SSL":"SSL6"); env("SSLLOCALIP",localipstr); env("SSL6LOCALIP",localipstr); env("SSLLOCALPORT",localportstr); env("SSL6LOCALPORT",localportstr); env("SSLLOCALHOST",localhost); env("SSL6LOCALHOST",localhost); if (!fakev4 && scope_id) env("SSL6INTERFACE",socket_getifname(scope_id)); if (flagtcpenv) { env("TCPLOCALIP",localipstr); env("TCP6LOCALIP",localipstr); env("TCPLOCALPORT",localportstr); env("TCP6LOCALPORT",localportstr); env("TCPLOCALHOST",localhost); env("TCP6LOCALHOST",localhost); if (!fakev4 && scope_id) env("TCP6INTERFACE",socket_getifname(scope_id)); } if (flagremotehost) if (dns_name6(&remotehostsa,remoteip) == 0) if (remotehostsa.len) { if (flagparanoid) { verifyhost = remoteipstr; if (dns_ip6(&tmp,&remotehostsa) == 0) for (j = 0;j + 16 <= tmp.len;j += 16) if (byte_equal(remoteip,16,tmp.s + j)) { flagparanoid = 0; break; } } if (!flagparanoid) { if (!stralloc_0(&remotehostsa)) drop_nomem(); remotehost = remotehostsa.s; verifyhost = remotehostsa.s; } } env("SSLREMOTEIP",remoteipstr); env("SSL6REMOTEIP",remoteipstr); remoteipstr[ip6_fmt(remoteipstr,remoteip)]=0; env("SSLREMOTEPORT",remoteportstr); env("SSL6REMOTEPORT",remoteportstr); env("SSLREMOTEHOST",remotehost); env("SSL6REMOTEHOST",remotehost); if (flagtcpenv) { env("TCPREMOTEIP",remoteipstr); env("TCP6REMOTEIP",remoteipstr); env("TCPREMOTEPORT",remoteportstr); env("TCP6REMOTEPORT",remoteportstr); env("TCPREMOTEHOST",remotehost); env("TCP6REMOTEHOST",remotehost); } if (flagremoteinfo) { if (remoteinfo6(&tcpremoteinfo,remoteip,remoteport,localip,localport,timeout,netif) == -1) flagremoteinfo = 0; if (!stralloc_0(&tcpremoteinfo)) drop_nomem(); } env("SSLREMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); env("SSL6REMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); if (flagtcpenv) { env("TCPREMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); env("TCP6REMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); } if (fnrules) { int fdrules; fdrules = open_read(fnrules); if (fdrules == -1) { if (errno != error_noent) drop_rules(); if (!flagallownorules) drop_rules(); } else { int fakev4=0; char* temp; if (!forcev6 && ip6_isv4mapped(remoteip)) fakev4=1; if (fakev4) temp=remoteipstr+7; else temp=remoteipstr; if (rules(found,fdrules,temp,remotehost,flagremoteinfo ? tcpremoteinfo.s : 0) == -1) drop_rules(); close(fdrules); } } if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; if (!stralloc_copys(&tmp,"sslserver: ")) drop_nomem(); safecats(flagdeny ? "deny" : "ok"); cats(" "); safecats(strnum); cats(" "); if (localhost) safecats(localhost); cats(":"); safecats(localipstr); cats(":"); safecats(localportstr); cats(" "); if (remotehost) safecats(remotehost); cats(":"); safecats(remoteipstr); cats(":"); if (flagremoteinfo) safecats(tcpremoteinfo.s); cats(":"); safecats(remoteportstr); cats("\n"); buffer_putflush(buffer_2,tmp.s,tmp.len); } if (flagdeny) _exit(100); if (gid) if (prot_gid(gid) == -1) strerr_die2sys(111,FATAL,"unable to set gid: "); if (uid) if (prot_uid(uid) == -1) strerr_die2sys(111,FATAL,"unable to set uid: "); close(pi[1]); close(po[0]); sig_uncatch(sig_child); sig_unblock(sig_child); sig_uncatch(sig_term); sig_uncatch(sig_pipe); if (fcntl(sslctl[1],F_SETFD,0) == -1) strerr_die2sys(111,FATAL,"unable to clear close-on-exec flag"); strnum[fmt_ulong(strnum,sslctl[1])]=0; setenv("SSLCTLFD",strnum,1); if (fcntl(pi[0],F_SETFD,0) == -1) strerr_die2sys(111,FATAL,"unable to clear close-on-exec flag"); strnum[fmt_ulong(strnum,pi[0])]=0; setenv("SSLREADFD",strnum,1); if (fcntl(po[1],F_SETFD,0) == -1) strerr_die2sys(111,FATAL,"unable to clear close-on-exec flag"); strnum[fmt_ulong(strnum,po[1])]=0; setenv("SSLWRITEFD",strnum,1); if (flagsslwait) { if (fd_copy(0,t) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 0: "); if (fd_copy(1,t) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 1: "); } else { if (fd_move(0,pi[0]) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 0: "); if (fd_move(1,po[1]) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 1: "); } if (flagkillopts) socket_ipoptionskill(t); if (!flagdelay) socket_tcpnodelay(t); if (*banner) { buffer_init(&b,buffer_unixwrite,1,bspace,sizeof bspace); if (buffer_putsflush(&b,banner) == -1) strerr_die2sys(111,DROP,"unable to print banner: "); } if (!flagsslwait) { strnum[fmt_ulong(strnum,flagsslenv)] = 0; strerr_warn2("flagsslenv: ", strnum, 0); ucspitls(flagsslenv,0,1); } pathexec(prog); strerr_die4sys(111,DROP,"unable to run ",*prog,": "); }
void doit(int t) { int j; SSL *ssl; int wstat; int sslctl[2]; char *s; unsigned long tmp_long; char ssl_cmd; stralloc ssl_env = { 0 }; int bytesleft; char envbuf[8192]; int childpid; if (pipe(pi) == -1) strerr_die2sys(111,DROP,"unable to create pipe: "); if (pipe(po) == -1) strerr_die2sys(111,DROP,"unable to create pipe: "); if (socketpair(AF_UNIX, SOCK_STREAM, 0, sslctl) == -1) strerr_die2sys(111,DROP,"unable to create socketpair: "); if ((j = ip_fmt(&remoteipsa,&remoteaddr))) strerr_die3x(111,DROP,"unable to print remote ip",gai_strerror(j)); if (flagremotehost) { if (dns_name(&remotehostsa,&remoteaddr) == 0) if (remotehostsa.len) { if (flagparanoid) { struct addrinfo *reverse, hints = {0}; verifyhost = remoteipsa.s; hints.ai_family = remoteaddr.sa4.sin_family; if (remoteaddr.sa6.sin6_family == AF_INET6) { hints.ai_flags = AI_V4MAPPED | AI_ALL; } if (getaddrinfo(remotehostsa.s, NULL, &hints, &reverse) == 0) { hints.ai_next = reverse; while (hints.ai_next) { if (hints.ai_next->ai_family == AF_INET && remoteaddr.sa4.sin_family == AF_INET && byte_equal(&remoteaddr.sa4.sin_addr, 4, &((struct sockaddr_in*) hints.ai_next->ai_addr)->sin_addr) || hints.ai_next->ai_family == AF_INET6 && remoteaddr.sa6.sin6_family == AF_INET6 && byte_equal(remoteaddr.sa6.sin6_addr.s6_addr, 16, &((struct sockaddr_in6*) hints.ai_next->ai_addr)->sin6_addr.s6_addr)) { flagparanoid = 0; break; } hints.ai_next = hints.ai_next->ai_next; } freeaddrinfo(reverse); } } if (!flagparanoid) { remotehost = remotehostsa.s; verifyhost = remotehostsa.s; } } } switch(childpid=fork()) { case -1: strerr_die2sys(111,DROP,"unable to fork: "); case 0: /* Child */ close(sslctl[0]); break; default: /* Parent */ close(pi[0]); close(po[1]); close(sslctl[1]); if ((s=env_get("SSL_CHROOT"))) if (chroot(s) == -1) { kill(childpid, SIGTERM); strerr_die2x(111,DROP,"unable to chroot"); } if ((s=env_get("SSL_GID"))) { scan_ulong(s,&tmp_long); gid = tmp_long; } if (gid) if (prot_gid(gid) == -1) { kill(childpid, SIGTERM); strerr_die2sys(111,FATAL,"unable to set gid: "); } if ((s=env_get("SSL_UID"))) { scan_ulong(s,&tmp_long); uid = tmp_long; } if (uid) if (prot_uid(uid) == -1) { kill(childpid, SIGTERM); strerr_die2sys(111,FATAL,"unable to set uid: "); } /* Read the TLS command socket. This will block until/unless * TLS is requested. */ if (read(sslctl[0],&ssl_cmd,1) == 1) { ssl = ssl_new(ctx,t); if (!ssl) { kill(childpid, SIGTERM); strerr_die2x(111,DROP,"unable to create SSL instance"); } if (ndelay_on(t) == -1) { kill(childpid, SIGTERM); strerr_die2sys(111,DROP,"unable to set socket options: "); } if (ssl_timeoutaccept(ssl,ssltimeout) == -1) { kill(childpid, SIGTERM); strerr_die3x(111,DROP,"unable to accept SSL: ",ssl_error_str(ssl_errno)); } } if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; strerr_warn3("sslserver: ssl ",strnum," accept ",0); } if (flagclientcert) { switch(ssl_verify(ssl,verifyhost)) { case -1: kill(childpid, SIGTERM); strerr_die2x(111,DROP,"unable to verify client certificate"); case -2: kill(childpid, SIGTERM); strerr_die2x(111,DROP,"no client certificate"); case -3: kill(childpid, SIGTERM); strerr_die3x(111,DROP,"certificate name does not match client fqdn: ",verifyhost); default: break; } } if (ssl_cmd == 'Y') { ssl_server_env(ssl, &ssl_env); if(!stralloc_0(&ssl_env)) drop_nomem(); /* Add another NUL */ env("SSLCTL",ssl_env.s); for(bytesleft = ssl_env.len; bytesleft>0; bytesleft-=j) if ( (j=write(sslctl[0], ssl_env.s, bytesleft)) < 0) { kill(childpid, SIGTERM); strerr_die2sys(111, FATAL, "unable to write SSL environment: "); } } if (ssl_cmd == 'Y' || ssl_cmd == 'y') { if (ssl_io(ssl,pi[1],po[0],progtimeout) != 0) { kill(childpid, SIGTERM); strerr_die3x(111,DROP,"unable to speak SSL: ",ssl_error_str(ssl_errno)); } if (wait_nohang(&wstat) > 0) _exit(wait_exitcode(wstat)); ssl_close(ssl); } kill(childpid, SIGTERM); _exit(0); } /* Child-only below this point */ if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; strerr_warn4("sslserver: pid ",strnum," from ",remoteipsa.s,0); } if (socket_local(t,&localaddr,&localport) == -1) strerr_die2sys(111,DROP,"unable to get local address: "); if ((j = ip_fmt(&localipsa,&localaddr))) strerr_die3x(111,DROP,"unable to print local address: ",gai_strerror(j)); remoteportstr[fmt_ulong(remoteportstr,remoteport)] = 0; if (!localhost) if (dns_name(&localhostsa,&localaddr) == 0) if (localhostsa.len) { if (!stralloc_0(&localhostsa)) drop_nomem(); localhost = localhostsa.s; } /* If remoteipsa.s contain ':' colon character will assume it is IPv6 */ if (byte_chr(remoteipsa.s, remoteipsa.len, ':') < remoteipsa.len) env("PROTO","SSL6"); else env("PROTO","SSL"); env("SSLLOCALIP",localipsa.s); env("SSLLOCALPORT",localportstr); env("SSLLOCALHOST",localhost); if (flagtcpenv) { env("TCPLOCALIP",localipsa.s); env("TCPLOCALPORT",localportstr); env("TCPLOCALHOST",localhost); } env("SSLREMOTEIP",remoteipsa.s); env("SSLREMOTEPORT",remoteportstr); env("SSLREMOTEHOST",remotehost); if (flagtcpenv) { env("TCPREMOTEIP",remoteipsa.s); env("TCPREMOTEPORT",remoteportstr); env("TCPREMOTEHOST",remotehost); } if (flagremoteinfo) { if (remoteinfo(&tcpremoteinfo,&remoteaddr,&localaddr,timeout) == -1) flagremoteinfo = 0; if (!stralloc_0(&tcpremoteinfo)) drop_nomem(); } env("SSLREMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); if (flagtcpenv) env("TCPREMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); if (fnrules) { int fdrules; fdrules = open_read(fnrules); if (fdrules == -1) { if (errno != error_noent) drop_rules(); if (!flagallownorules) drop_rules(); } else { if (rules(found,fdrules,&remoteaddr,remotehost,flagremoteinfo ? tcpremoteinfo.s : 0) == -1) drop_rules(); close(fdrules); } } if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; if (!stralloc_copys(&tmp,"sslserver: ")) drop_nomem(); safecats(flagdeny ? "deny" : "ok"); cats(" "); safecats(strnum); cats(" "); if (localhost) safecats(localhost); cats(":"); safecats(localipsa.s); cats(":"); safecats(localportstr); cats(" "); if (remotehost) safecats(remotehost); cats(":"); safecats(remoteipsa.s); cats(":"); if (flagremoteinfo) safecats(tcpremoteinfo.s); cats(":"); safecats(remoteportstr); cats("\n"); buffer_putflush(buffer_2,tmp.s,tmp.len); } if (flagdeny) _exit(100); if (gid) if (prot_gid(gid) == -1) strerr_die2sys(111,FATAL,"unable to set gid: "); if (uid) if (prot_uid(uid) == -1) strerr_die2sys(111,FATAL,"unable to set uid: "); close(pi[1]); close(po[0]); close(sslctl[0]); sig_uncatch(sig_child); sig_unblock(sig_child); sig_uncatch(sig_term); sig_uncatch(sig_pipe); if (fcntl(sslctl[1],F_SETFD,0) == -1) strerr_die2sys(111,FATAL,"unable to clear close-on-exec flag"); strnum[fmt_ulong(strnum,sslctl[1])]=0; env("SSLCTLFD",strnum); if (fcntl(pi[0],F_SETFD,0) == -1) strerr_die2sys(111,FATAL,"unable to clear close-on-exec flag"); strnum[fmt_ulong(strnum,pi[0])]=0; env("SSLREADFD",strnum); if (fcntl(po[1],F_SETFD,0) == -1) strerr_die2sys(111,FATAL,"unable to clear close-on-exec flag"); strnum[fmt_ulong(strnum,po[1])]=0; env("SSLWRITEFD",strnum); if (flagsslwait) { if (fd_copy(0,t) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 0: "); if (fd_copy(1,t) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 1: "); } else { if (fd_move(0,pi[0]) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 0: "); if (fd_move(1,po[1]) == -1) strerr_die2sys(111,DROP,"unable to set up descriptor 1: "); } if (flagkillopts) socket_ipoptionskill(t); if (!flagdelay) socket_tcpnodelay(t); if (*banner) { buffer_init(&b,buffer_unixwrite,1,bspace,sizeof bspace); if (buffer_putsflush(&b,banner) == -1) strerr_die2sys(111,DROP,"unable to print banner: "); } if (!flagsslwait) { ssl_cmd = flagsslenv ? 'Y' : 'y'; if (write(sslctl[1], &ssl_cmd, 1) < 1) strerr_die2sys(111,DROP,"unable to start SSL: "); if (flagsslenv) { while ((j=read(sslctl[1],envbuf,8192)) > 0) { stralloc_catb(&ssl_env,envbuf,j); if (ssl_env.len >= 2 && ssl_env.s[ssl_env.len-2]==0 && ssl_env.s[ssl_env.len-1]==0) break; } if (j < 0) strerr_die2sys(111,DROP,"unable to read SSL environment: "); pathexec_multienv(&ssl_env); } } pathexec(prog); strerr_die4sys(111,DROP,"unable to run ",*prog,": "); }
ibis::table* ibis::jRange::select(const ibis::table::stringArray& colnames) const { ibis::table *res = 0; if (nrows < 0) { int64_t ierr = count(); if (ierr < 0) { LOGGER(ibis::gVerbose > 0) << "Warning -- jRange::count failed with error code" << ierr; return res; } } if (valr_ == 0 || orderr_ == 0 || vals_ == 0 || orders_ == 0 || orderr_->size() != maskr_.cnt() || orders_->size() != masks_.cnt()) { LOGGER(ibis::gVerbose > 0) << "Warning -- jRange::select failed to evaluate the join"; return res; } if (colnames.empty() || nrows == 0) { std::string nm = ibis::util::shortName(desc_); res = new ibis::tabula(nm.c_str(), desc_.c_str(), nrows); return res; } const uint32_t ncols = colnames.size(); std::string evt; evt = "select "; evt += colnames[0]; for (uint32_t j = 1; j < ncols; ++ j) { evt += ", "; evt += colnames[j]; } if ((desc_[0] != 'F' && desc_[0] != 'f') || (desc_[1] != 'R' && desc_[1] != 'r') || (desc_[2] != 'O' && desc_[2] != 'o') || (desc_[3] != 'M' && desc_[3] != 'm')) evt += " for "; else evt += ' '; evt += desc_; ibis::util::timer mytimer(evt.c_str()); std::map<const char*, uint32_t, ibis::lessi> namesToPos; std::vector<uint32_t> ipToPos(colnames.size()); std::vector<const ibis::column*> ircol, iscol; std::vector<const ibis::dictionary*> cats(colnames.size(), 0); // identify the names from the two data partitions for (uint32_t j = 0; j < ncols; ++ j) { ipToPos[j] = ncols+1; const char* cn = colnames[j]; std::string tname; while (*cn != 0 && *cn != '.') { tname += *cn; ++ cn; } if (*cn == '.') { ++ cn; } else { // did not find '.' tname.erase(); cn = colnames[j]; } int match = -1; // 0 ==> partr_, 1 ==> parts_ if (! tname.empty()) { match = frm_->position(tname.c_str()); if (match >= static_cast<long>(frm_->size())) { if (stricmp(tname.c_str(), partr_.name()) == 0) { match = 0; } else if (stricmp(tname.c_str(), parts_.name()) == 0) { match = 1; } } } if (match == 0) { const ibis::column *col = partr_.getColumn(cn); if (col != 0) { namesToPos[colnames[j]] = j; ipToPos[j] = ircol.size(); ircol.push_back(col); if (col->type() == ibis::CATEGORY) { const ibis::category *cat = static_cast<const ibis::category*>(col); cats[j] = cat->getDictionary(); } else if (col->type() == ibis::UINT) { const ibis::bord::column *bc = dynamic_cast<const ibis::bord::column*>(col); if (bc != 0) { cats[j] = bc->getDictionary(); } } } else { LOGGER(ibis::gVerbose > 0) << "Warning -- " << evt << " can not find column named \"" << colnames[j] << "\" in data partition \"" << partr_.name() << "\""; return res; } } else if (match == 1) { const ibis::column *col = parts_.getColumn(cn); if (col != 0) { namesToPos[colnames[j]] = j; ipToPos[j] = ncols - iscol.size(); iscol.push_back(col); if (col->type() == ibis::CATEGORY) { const ibis::category *cat = static_cast<const ibis::category*>(col); cats[j] = cat->getDictionary(); } else if (col->type() == ibis::UINT) { const ibis::bord::column *bc = dynamic_cast<const ibis::bord::column*>(col); if (bc != 0) { cats[j] = bc->getDictionary(); } } } else { LOGGER(ibis::gVerbose > 0) << "Warning -- " << evt << " can not find column named \"" << colnames[j] << "\" in data partition \"" << parts_.name() << "\""; return res; } } else { // not prefixed with a data partition name cn = colnames[j]; const ibis::column* col = partr_.getColumn(cn); if (col != 0) { ipToPos[j] = ircol.size(); ircol.push_back(col); if (col->type() == ibis::CATEGORY) { const ibis::category *cat = static_cast<const ibis::category*>(col); cats[j] = cat->getDictionary(); } else if (col->type() == ibis::UINT) { const ibis::bord::column *bc = dynamic_cast<const ibis::bord::column*>(col); if (bc != 0) { cats[j] = bc->getDictionary(); } } LOGGER(ibis::gVerbose > 3) << evt << " encountered a column name (" << colnames[j] << ") that does not start with a data " "partition name, assume it is for \"" << partr_.name() << "\""; } else { col = parts_.getColumn(cn); if (col != 0) { ipToPos[j] = ncols - iscol.size(); iscol.push_back(col); if (col->type() == ibis::CATEGORY) { const ibis::category *cat = static_cast<const ibis::category*>(col); cats[j] = cat->getDictionary(); } else if (col->type() == ibis::UINT) { const ibis::bord::column *bc = dynamic_cast<const ibis::bord::column*>(col); if (bc != 0) { cats[j] = bc->getDictionary(); } } LOGGER(ibis::gVerbose > 1) << evt << " encountered a column name (" << colnames[j] << ") that does not start with a data partition name, " "assume it is for \"" << parts_.name() << "\""; } else { LOGGER(ibis::gVerbose > 0) << "Warning -- " << evt << " encountered a name (" << colnames[j] << ") that does not start with a data " "partition name"; return res; } } } } // for (uint32_t j = 0; j < ncols; LOGGER(ibis::gVerbose > 3) << evt << " -- found " << ircol.size() << " column" << (ircol.size() > 1 ? "s" : "") << " from " << partr_.name() << " and " << iscol.size() << " column" << (iscol.size() > 1 ? "s" : "") << " from " << parts_.name(); // change Pos values for columns in S to have offset ircol.size() for (uint32_t j = 0; j < ncols; ++j) { if (ipToPos[j] <= ncols && ipToPos[j] >= ircol.size()) ipToPos[j] = (ncols - ipToPos[j]) + ircol.size(); } ibis::table::typeArray rtypes(ircol.size(), ibis::UNKNOWN_TYPE); ibis::table::bufferArray rbuff(ircol.size(), 0); IBIS_BLOCK_GUARD(ibis::table::freeBuffers, ibis::util::ref(rbuff), ibis::util::ref(rtypes)); ibis::table::typeArray stypes(iscol.size(), ibis::UNKNOWN_TYPE); ibis::table::bufferArray sbuff(iscol.size(), 0); IBIS_BLOCK_GUARD(ibis::table::freeBuffers, ibis::util::ref(sbuff), ibis::util::ref(stypes)); bool sane = true; // retrieve values from r_ for (uint32_t j = 0; sane && j < ircol.size(); ++ j) { rtypes[j] = ircol[j]->type(); switch (ircol[j]->type()) { case ibis::BYTE: rbuff[j] = ircol[j]->selectBytes(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<signed char>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::UBYTE: rbuff[j] = ircol[j]->selectUBytes(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<unsigned char>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::SHORT: rbuff[j] = ircol[j]->selectShorts(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<int16_t>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::USHORT: rbuff[j] = ircol[j]->selectUShorts(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<uint16_t>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::INT: rbuff[j] = ircol[j]->selectInts(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<int32_t>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::UINT: rbuff[j] = ircol[j]->selectUInts(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<uint32_t>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::LONG: rbuff[j] = ircol[j]->selectLongs(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<int64_t>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::ULONG: rbuff[j] = ircol[j]->selectULongs(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<uint64_t>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::FLOAT: rbuff[j] = ircol[j]->selectFloats(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<float>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::DOUBLE: rbuff[j] = ircol[j]->selectDoubles(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<double>*>(rbuff[j]), *orderr_); else sane = false; break; case ibis::TEXT: case ibis::CATEGORY: rbuff[j] = ircol[j]->selectStrings(maskr_); if (rbuff[j] != 0) ibis::util::reorder (*static_cast<std::vector<std::string>*>(rbuff[j]), *orderr_); else sane = false; break; default: sane = false; rbuff[j] = 0; LOGGER(ibis::gVerbose > 1) << "Warning -- jRange::select does not support column " "type " << ibis::TYPESTRING[(int)ircol[j]->type()] << " (name = " << partr_.name() << "." << ircol[j]->name() << ")"; break; } } if (! sane) { return res; } // retrieve values from parts_ for (uint32_t j = 0; sane && j < iscol.size(); ++ j) { stypes[j] = iscol[j]->type(); switch (iscol[j]->type()) { case ibis::BYTE: sbuff[j] = iscol[j]->selectBytes(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<signed char>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::UBYTE: sbuff[j] = iscol[j]->selectUBytes(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<unsigned char>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::SHORT: sbuff[j] = iscol[j]->selectShorts(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<int16_t>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::USHORT: sbuff[j] = iscol[j]->selectUShorts(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<uint16_t>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::INT: sbuff[j] = iscol[j]->selectInts(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<int32_t>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::UINT: sbuff[j] = iscol[j]->selectUInts(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<uint32_t>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::LONG: sbuff[j] = iscol[j]->selectLongs(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<int64_t>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::ULONG: sbuff[j] = iscol[j]->selectULongs(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<uint64_t>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::FLOAT: sbuff[j] = iscol[j]->selectFloats(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<float>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::DOUBLE: sbuff[j] = iscol[j]->selectDoubles(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<array_t<double>*>(sbuff[j]), *orders_); else sane = false; break; case ibis::TEXT: case ibis::CATEGORY: sbuff[j] = iscol[j]->selectStrings(masks_); if (sbuff[j] != 0) ibis::util::reorder (*static_cast<std::vector<std::string>*>(sbuff[j]), *orders_); else sane = false; break; default: sane = false; sbuff[j] = 0; LOGGER(ibis::gVerbose > 1) << "Warning -- jRange::select does not support column " "type " << ibis::TYPESTRING[(int)iscol[j]->type()] << " (name = " << parts_.name() << "." << iscol[j]->name() << ")"; break; } } if (! sane) { return res; } /// fill the in-memory buffer switch (colr_.type()) { case ibis::BYTE: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<signed char>*>(valr_), rtypes, rbuff, *static_cast<array_t<signed char>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::UBYTE: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<unsigned char>*>(valr_), rtypes, rbuff, *static_cast<array_t<unsigned char>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::SHORT: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<int16_t>*>(valr_), rtypes, rbuff, *static_cast<array_t<int16_t>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::USHORT: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<uint16_t>*>(valr_), rtypes, rbuff, *static_cast<array_t<uint16_t>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::INT: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<int32_t>*>(valr_), rtypes, rbuff, *static_cast<array_t<int32_t>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::UINT: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<uint32_t>*>(valr_), rtypes, rbuff, *static_cast<array_t<uint32_t>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::LONG: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<int64_t>*>(valr_), rtypes, rbuff, *static_cast<array_t<int64_t>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::ULONG: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<uint64_t>*>(valr_), rtypes, rbuff, *static_cast<array_t<uint64_t>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::FLOAT: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<float>*>(valr_), rtypes, rbuff, *static_cast<array_t<float>*>(vals_), stypes, sbuff, colnames, ipToPos); break; case ibis::DOUBLE: res = fillResult (nrows, delta1_, delta2_, evt, *static_cast<array_t<double>*>(valr_), rtypes, rbuff, *static_cast<array_t<double>*>(vals_), stypes, sbuff, colnames, ipToPos); break; default: LOGGER(ibis::gVerbose > 0) << "Warning -- " << evt << " can not handle join column of type " << ibis::TYPESTRING[(int)colr_.type()]; } for (unsigned j = 0; j < cats.size(); ++ j) { if (cats[j] != 0) { ibis::bord::column *bc = dynamic_cast<ibis::bord::column*> (static_cast<ibis::bord*>(res)->getColumn(j)); if (bc != 0) bc->setDictionary(cats[j]); } } return res; } // ibis::jRange::select
void doit(int t) { int j; uint32 scope_id; if (ip6_isv4mapped(remoteip)) remoteipstr[ip4_fmt(remoteipstr,remoteip+12)] = 0; else remoteipstr[ip6_fmt(remoteipstr,remoteip)] = 0; if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; log(B("pid ",strnum," from ",remoteipstr,0)); } if (flagkillopts) socket_ipoptionskill(t); if (!flagdelay) socket_tcpnodelay(t); if (*banner) { buffer_init(&b,write,t,bspace,sizeof bspace); if (buffer_putsflush(&b,banner) == -1) errint(EHARD,"unable to print banner: "); } if (socket_local(t,localip,&localport,&scope_id) == -1) errint(EHARD,"unable to get local address: "); if (ip6_isv4mapped(localip)) localipstr[ip4_fmt(localipstr,localip+12)] = 0; else localipstr[ip6_fmt(localipstr,localip)] = 0; remoteportstr[fmt_ulong(remoteportstr,remoteport)] = 0; if (!localhost) if (dns_name(&localhostsa,localip) == 0) if (localhostsa.len) { if (!stralloc_0(&localhostsa)) errmem; localhost = localhostsa.s; } env("PROTO","TCP"); env("TCPLOCALIP",localipstr); env("TCPLOCALPORT",localportstr); env("TCPLOCALHOST",localhost); if (flagremotehost) if (dns_name(&remotehostsa,remoteip) == 0) if (remotehostsa.len) { if (flagparanoid) if (dns_ip6(&tmp,&remotehostsa) == 0) for (j = 0;j + 16 <= tmp.len;j += 16) if (byte_equal(remoteip,16,tmp.s + j)) { flagparanoid = 0; break; } if (!flagparanoid) { if (!stralloc_0(&remotehostsa)) errmem; remotehost = remotehostsa.s; } } env("TCPREMOTEIP",remoteipstr); env("TCPREMOTEPORT",remoteportstr); env("TCPREMOTEHOST",remotehost); if (flagremoteinfo) { if (remoteinfo6(&tcpremoteinfo,remoteip,remoteport,localip,localport,timeout,netif) == -1) flagremoteinfo = 0; if (!stralloc_0(&tcpremoteinfo)) errmem; } env("TCPREMOTEINFO",flagremoteinfo ? tcpremoteinfo.s : 0); if (fnrules) { int fdrules; fdrules = open_read(fnrules); if (fdrules == -1) { if (errno != error_noent) drop_rules(); if (!flagallownorules) drop_rules(); } else { char* temp; if (ip6_isv4mapped(remoteip)) temp=remoteipstr+7; else temp=remoteipstr; if (rules(found,fdrules,temp,remotehost,flagremoteinfo ? tcpremoteinfo.s : 0) == -1) drop_rules(); close(fdrules); // log(B("checking tcp rules for ",remotehost,": pass")); } } if (verbosity >= 2) { strnum[fmt_ulong(strnum,getpid())] = 0; if (!stralloc_copys(&tmp,"qmail-tcpsrv: ")) errmem; safecats(flagdeny ? "deny" : "ok"); cats(" "); safecats(strnum); cats(" "); if (localhost) safecats(localhost); cats(":"); safecats(localipstr); cats(":"); safecats(localportstr); cats(" "); if (remotehost) safecats(remotehost); cats(":"); safecats(remoteipstr); // cats(":<remote info>"); if (flagremoteinfo) safecats(tcpremoteinfo.s); cats(":"); if (flagremoteinfo) safecats(tcpremoteinfo.s); cats(":"); safecats(remoteportstr); cats("\n"); buffer_putflush(buffer_2,tmp.s,tmp.len); } if (flagdeny) _exit(100); }
int main(int argc, char *argv[]) { int i = 0, key_len = 0, icon_len = 0, err = 0, option, retval = 0; char *sz = NULL; char *script = NULL; char *script_e = NULL; char *src = NULL; char *tmp = NULL, *tmp2 = NULL, *tmp3 = NULL; char *key = NULL, *icon = NULL, *key_e = NULL; while ((option = getopt(argc, argv, "k:i:")) != -1) { switch (option) { case 'k': key_e = optarg; break; case 'i': icon = optarg; break; case '?': err = 1; if (optopt == 'k' || optopt == 'i') { printf("Option -%c requires an argument\n", optopt); } else { printf("Option -%c unrecognized\n", optopt); } break; } } if (err || argc > 6 || optind >= argc) { printf("%s", USAGE); return -1; } if (key == NULL) { // Use default key, recommended, since it's random + variable length srand( time(NULL) ); key_len = (unsigned int)rand() % ( ( (DEFAULT_KEY_LEN * 3) - DEFAULT_KEY_LEN ) + 1 ) + DEFAULT_KEY_LEN; key = rand_array(32, 254, key_len); } else { // User specified key key = calloc(strlen(key_e)+1, sizeof(char)); strncpy(key, key_e, strlen(key_e)); key_len = strlen(key_e)+1; } // Load up the script file i = load_script(argv[optind++], &script); if (i == -1) { goto done; } // Get the script array size in a string formatted number sz = calloc( 10, sizeof(char) ); if (sz == NULL) { goto done; } sprintf(sz, "%d", i); // Encrypt the script with the given key script_e = xor_enc(script, i+1, key, key_len-1); if (script_e == NULL) { goto done; } tmp = src_hex_array(script_e, i); if (tmp == NULL) { goto done; } // Create code from template tmp2 = replace(C_TEMPLATE, "___BASH_SCR___", tmp); if (cats(&tmp, NULL) == -1) { goto done; } tmp3 = src_hex_array(key, key_len); if (tmp3 == NULL) { goto done; } tmp = replace(tmp2, "___KEY___", tmp3); cats(&tmp2, NULL); cats(&tmp3, NULL); if (tmp == NULL) { goto done; } tmp2 = replace(tmp, "___BASH_SCR_SIZE___", sz); cats(&tmp, NULL); if (tmp2 == NULL) { goto done; } sprintf(sz, "%d", key_len); src = replace(tmp2, "___KEY_LEN___", sz); cats(&tmp2, NULL); if (src == NULL) { goto done; } // Write the .c source file if (cats(&tmp, argv[optind]) == -1) { goto done; } if (cats(&tmp, ".c") == -1) { goto done; } retval = write_file(tmp, src); cats(&tmp, NULL); if (retval == -1) { goto done; } // Create and run our 'make' batch script tmp = replace(MAKE_APP, "___APPNAME___", argv[optind]); if (tmp == NULL) { goto done; } i = system(tmp); cats(&tmp, NULL); // Add the icon if necessary if (icon != NULL) { tmp = replace(MAKE_ICON, "___ICONFILE___", icon); if (tmp == NULL) { goto done; } tmp2 = replace(tmp, "___APPNAME___", argv[optind]); if (tmp2 == NULL) { goto done; } } i = system(tmp2); cats(&tmp2, NULL); // Delete .c source file if (cats(&tmp2, argv[optind]) == -1) { goto done; } if (cats(&tmp2, ".c") == -1) { goto done; } remove(tmp2); done: if (script != NULL) { cats(&script, NULL); } if (sz != NULL) { cats(&sz, NULL); } if (script_e != NULL) { cats(&script_e, NULL); } if (key != NULL) { cats(&key, NULL); } if (tmp != NULL) { cats(&tmp, NULL); } if (tmp2 != NULL) { cats(&tmp2, NULL); } if (src != NULL) { cats(&src, NULL); } return 0; }
CEC_Prefs_Packet::CEC_Prefs_Packet(uint32 selection, EC_DETAIL_LEVEL pref_details, EC_DETAIL_LEVEL cat_details) : CECPacket(EC_OP_SET_PREFERENCES, pref_details) { if (selection & EC_PREFS_CATEGORIES) { if (theApp->glob_prefs->GetCatCount() > 1) { CECEmptyTag cats(EC_TAG_PREFS_CATEGORIES); for (unsigned int i = 0; i < theApp->glob_prefs->GetCatCount(); ++i) { CEC_Category_Tag catTag(i, cat_details); cats.AddTag(catTag); } AddTag(cats); } } if (selection & EC_PREFS_GENERAL) { CECEmptyTag user_prefs(EC_TAG_PREFS_GENERAL); user_prefs.AddTag(CECTag(EC_TAG_USER_NICK, thePrefs::GetUserNick())); user_prefs.AddTag(CECTag(EC_TAG_USER_HASH, thePrefs::GetUserHash())); user_prefs.AddTag(CECTag(EC_TAG_USER_HOST, thePrefs::GetYourHostname())); user_prefs.AddTag(CECTag(EC_TAG_GENERAL_CHECK_NEW_VERSION, thePrefs::GetCheckNewVersion())); AddTag(user_prefs); } if (selection & EC_PREFS_CONNECTIONS) { CECEmptyTag connPrefs(EC_TAG_PREFS_CONNECTIONS); connPrefs.AddTag(CECTag(EC_TAG_CONN_UL_CAP, thePrefs::GetMaxGraphUploadRate())); connPrefs.AddTag(CECTag(EC_TAG_CONN_DL_CAP, thePrefs::GetMaxGraphDownloadRate())); connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_UL, thePrefs::GetMaxUpload())); connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_DL, thePrefs::GetMaxDownload())); connPrefs.AddTag(CECTag(EC_TAG_CONN_SLOT_ALLOCATION, thePrefs::GetSlotAllocation())); connPrefs.AddTag(CECTag(EC_TAG_CONN_TCP_PORT, thePrefs::GetPort())); connPrefs.AddTag(CECTag(EC_TAG_CONN_UDP_PORT, thePrefs::GetUDPPort())); if (thePrefs::IsUDPDisabled()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_CONN_UDP_DISABLE)); } connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_FILE_SOURCES, thePrefs::GetMaxSourcePerFile())); connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_CONN, thePrefs::GetMaxConnections())); if (thePrefs::DoAutoConnect()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_CONN_AUTOCONNECT)); } if (thePrefs::Reconnect()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_CONN_RECONNECT)); } if (thePrefs::GetNetworkED2K()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_NETWORK_ED2K)); } if (thePrefs::GetNetworkKademlia()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_NETWORK_KADEMLIA)); } AddTag(connPrefs); } if (selection & EC_PREFS_MESSAGEFILTER) { CECEmptyTag msg_prefs(EC_TAG_PREFS_MESSAGEFILTER); if (thePrefs::MustFilterMessages()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_ENABLED)); } if (thePrefs::IsFilterAllMessages()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_ALL)); } if (thePrefs::MsgOnlyFriends()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_FRIENDS)); } if (thePrefs::MsgOnlySecure()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_SECURE)); } if (thePrefs::IsFilterByKeywords()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_BY_KEYWORD)); } msg_prefs.AddTag(CECTag(EC_TAG_MSGFILTER_KEYWORDS, thePrefs::GetMessageFilterString())); AddTag(msg_prefs); } if (selection & EC_PREFS_REMOTECONTROLS) { CECEmptyTag rc_prefs(EC_TAG_PREFS_REMOTECTRL); rc_prefs.AddTag(CECTag(EC_TAG_WEBSERVER_PORT, thePrefs::GetWSPort())); if (thePrefs::GetWSIsEnabled()) { rc_prefs.AddTag(CECEmptyTag(EC_TAG_WEBSERVER_AUTORUN)); } if (!thePrefs::GetWSPass().IsEmpty()) { CMD4Hash passhash; wxCHECK2(passhash.Decode(thePrefs::GetWSPass()), /* Do nothing. */); rc_prefs.AddTag(CECTag(EC_TAG_PASSWD_HASH, passhash)); }