__dead void irr_main(u_int32_t AS, int flags, char *outdir) { char *query; int r; if (pledge("stdio rpath wpath cpath inet dns", NULL) == -1) err(1, "pledge"); fprintf(stderr, "irrfilter for: %u, writing to %s\n", AS, outdir); irrflags = flags; irrverbose = 0; TAILQ_INIT(&router_head); /* send query for own AS, parse policy */ if (asprintf(&query, "AS%u", AS) == -1) err(1, "parse_policy asprintf"); if ((r = whois(query, QTYPE_OWNAS)) == -1) exit(1); if (r == 0) errx(1, "aut-num object %s not found", query); free(query); write_filters(outdir); exit(0); }
static int trains_tid(void) { static int ts_tid = -1; if (ts_tid < 0) { ts_tid = whois("trains"); } return ts_tid; }
/* // Name: make_action // In: tag, the tag of the message. // command, the command that was send. // message, the trailing message (arguments). // c, the client that sent the message. // msg_is_quoted, wheater or no teh message contains quotes. // clients, all connected clients. // curr_topic, the current topic. // Out: The action that the client want to do in it's connection. // Purpose: Parses the command and does the proper action. */ int make_action(char* tag, char* command, char* message, clientconn_t *c, char msg_is_quoted, hash *clients, char *curr_topic) { if(strlen(tag)==0) { return 0; } if(strcmp(tag, "\r\n")==0) { client_write(c, "BAD No tag.\r\n", 13); return 0; } if(strlen(command)==0) { client_write(c, tag, strlen(tag)); client_write(c, " BAD No command.\r\n", 18); return 0; } if(msg_is_quoted && !msg_is_correctly_quoted(message, msg_is_quoted) && strcmp(command, "PRIVATE")) { return badly_formed(c, tag); } if(strcmp(command, "CAPABILITY")==0) { return capability(c, tag); } if(strcmp(command, "JOIN")==0) { return join(c, tag, clients); } if(strcmp(command, "NICK")==0) { return nick(c, tag, message, msg_is_quoted, clients); } if(strcmp(command,"QUIT")==0) { return quit(c, tag, clients); } if(!c->joined) { return not_joined(c, tag); } if(strcmp(command, "LEAVE")==0) { return leave(c, tag, clients); } if(strcmp(command, "TALK")==0) { return talk(c, tag, message, clients); } if(strcmp(command, "NAMES")==0) { return names(c, tag, clients); } if(strcmp(command, "TOPIC")==0) { return topic(c, tag, message, clients, curr_topic); } if(strcmp(command, "PRIVATE")==0) { return private(c, tag, message, clients); } if(strcmp(command, "WHOIS")==0) { return whois(c, tag, message, clients); } client_write(c, tag, strlen(tag)); client_write(c, " BAD Unkown command.\r\n", 22); return 0; }
int affinity(void*var) { static int n; hbuild(); for(n=1;n<c_hnames;n++) { whois(hnames[n]); patience(); } printf("[1D"); return(TRUE); }
/* * Given a filename, walk the process tree querying all open files in the * system, and display an indication of the file, which processes have it * open, what they're doing with it, and who the user is (the typical use * of this utility is prior to unmounting a filesystem). */ int showopen(const char *filename, int mode, int username, int (*print)(FILE *, const char *, ...)) { DIR *dir; struct dirent *dp; const struct passwd *pw; match_t match; pid_t pid, usage; uid_t uid; int busy, error; busy = -1; (*print)(stderr, "%s: ", filename); if ((error = buildmatch(filename, mode, &match)) != EOK) { (*print)(stderr, "%s", strerror(error)); } else if ((dir = opendir("/proc")) != NULL) { busy = 0; while ((dp = readdir(dir)) != NULL) { if ((pid = atoi(dp->d_name)) != 0) { if ((usage = howused(pid, &match)) != 0) { (*print)(stdout, "%8d", pid); if (usage & USED_CWD) (*print)(stderr, "c"); if (usage & USED_OPEN) (*print)(stderr, "o"); if (usage & USED_ROOT) (*print)(stderr, "r"); if (usage & USED_CTTY) (*print)(stderr, "y"); if (username && (uid = whois(pid)) != (uid_t)-1) { if ((pw = getpwuid(uid)) != NULL) (*print)(stderr, "(%s)", pw->pw_name); else (*print)(stderr, "(%d)", uid); } ++busy; } } } closedir(dir); } (*print)(stderr, "\n"); return(busy); }
void MainWindow::on_pushButton_clicked() //scan ip { ui->textBrowser->clear(); ui->textEdit_2->clear(); ui->textEdit_3->clear(); ui->label_8->clear(); ui->tableWidget->setRowCount(0); ui->textBrowser->insertPlainText("The boot directory " + QApplication::applicationDirPath() + "/nmap/"); QString ip = ui->lineEdit->text(); if(ip.isEmpty()) { QMessageBox::critical(this,"Error", "Please enter a valid IP Address or Domain!"); }else{ if(!ip.contains("192.168")){ reverseIP(ip); whois(ip); } QString nmapdir = QApplication::applicationDirPath() + "/nmap/"; QString arguments = "nmap --open -sS -A -T4 -sV -O -vv -Pn -oX "+nmapdir+"scan.xml " + ip; scanprocess = new QProcess(this); connect(scanprocess, SIGNAL(readyReadStandardOutput()), this, SLOT(scanoutput())); connect(scanprocess, SIGNAL(finished(int , QProcess::ExitStatus )), this, SLOT(scanfinished())); //process->setReadChannel(QProcess::StandardOutput); scanprocess->start(nmapdir+arguments); } }
static void whois(const char *query, const char *hostname, int flags) { FILE *sfi, *sfo; struct addrinfo *hostres, *res; char *buf, *host, *nhost, *p; int i, s; size_t c, len; hostres = gethostinfo(hostname, 1); for (res = hostres; res; res = res->ai_next) { s = socket(res->ai_family, res->ai_socktype, res->ai_protocol); if (s < 0) continue; if (connect(s, res->ai_addr, res->ai_addrlen) == 0) break; close(s); } freeaddrinfo(hostres); if (res == NULL) err(EX_OSERR, "connect()"); sfi = fdopen(s, "r"); sfo = fdopen(s, "w"); if (sfi == NULL || sfo == NULL) err(EX_OSERR, "fdopen()"); if (strcmp(hostname, GERMNICHOST) == 0) { #ifdef __APPLE__ /* radar:18958875 radar:21503897 */ fprintf(sfo, "-T dn -C UTF-8 %s\r\n", query); #else fprintf(sfo, "-T dn,ace -C US-ASCII %s\r\n", query); #endif } else { fprintf(sfo, "%s\r\n", query); } fflush(sfo); nhost = NULL; while ((buf = fgetln(sfi, &len)) != NULL) { while (len > 0 && isspace((unsigned char)buf[len - 1])) buf[--len] = '\0'; printf("%.*s\n", (int)len, buf); if ((flags & WHOIS_RECURSE) && nhost == NULL) { host = strnstr(buf, WHOIS_SERVER_ID, len); if (host != NULL) { host += sizeof(WHOIS_SERVER_ID) - 1; for (p = host; p < buf + len; p++) { if (!ishost(*p)) { *p = '\0'; break; } } s_asprintf(&nhost, "%.*s", (int)(buf + len - host), host); } else if ((host = strnstr(buf, WHOIS_ORG_SERVER_ID, len)) != NULL) { host += sizeof(WHOIS_ORG_SERVER_ID) - 1; for (p = host; p < buf + len; p++) { if (!ishost(*p)) { *p = '\0'; break; } } s_asprintf(&nhost, "%.*s", (int)(buf + len - host), host); } else if (strcmp(hostname, ANICHOST) == 0) { for (c = 0; c <= len; c++) buf[c] = tolower((int)buf[c]); for (i = 0; ip_whois[i] != NULL; i++) { if (strnstr(buf, ip_whois[i], len) != NULL) { s_asprintf(&nhost, "%s", ip_whois[i]); break; } } } } } if (nhost != NULL) { whois(query, nhost, 0); free(nhost); } }
int whois_main(int argc, char *argv[]) { const char *country, *host; char *qnichost; int ch, flags, use_qnichost; #ifdef SOCKS SOCKSinit(argv[0]); #endif country = host = qnichost = NULL; flags = use_qnichost = 0; optind = 1; // initialize for getopt while ((ch = getopt(argc, argv, "aAbc:dgh:iIlmp:QrR6")) != -1) { switch (ch) { case 'a': host = ANICHOST; break; case 'A': host = PNICHOST; break; case 'b': host = ABUSEHOST; break; case 'c': country = optarg; break; case 'd': host = DNICHOST; break; case 'g': host = GNICHOST; break; case 'h': host = optarg; break; case 'i': host = INICHOST; break; case 'I': host = IANAHOST; break; case 'l': host = LNICHOST; break; case 'm': host = MNICHOST; break; case 'p': port = optarg; break; case 'Q': flags |= WHOIS_QUICK; break; case 'r': host = RNICHOST; break; case 'R': warnx("-R is deprecated; use '-c ru' instead"); country = "ru"; break; case '6': host = SNICHOST; break; case '?': default: usage(); /* NOTREACHED */ } } argc -= optind; argv += optind; if (!argc || (country != NULL && host != NULL)) usage(); /* * If no host or country is specified determine the top level domain * from the query. If the TLD is a number, query ARIN. Otherwise, use * TLD.whois-server.net. If the domain does not contain '.', fall * back to NICHOST. */ if (host == NULL && country == NULL) { use_qnichost = 1; host = NICHOST; if (!(flags & WHOIS_QUICK)) flags |= WHOIS_RECURSE; } while (argc-- > 0) { if (country != NULL) { s_asprintf(&qnichost, "%s%s", country, QNICHOST_TAIL); whois(*argv, qnichost, flags); } else if (use_qnichost) if ((qnichost = choose_server(*argv)) != NULL) whois(*argv, qnichost, flags); if (qnichost == NULL) whois(*argv, host, flags); free(qnichost); qnichost = NULL; argv++; } exit(0); return 0; }
// Play one game, it uses an ordered map of string games statuses // in order to detect an infinite loop game. void play_game_1( CardDeck& A, CardDeck& B, CardDeck& table, CardDeck* starter, CardDeck* answerer, CardDeck* battle_starter, StatusStringMap& statuses, GameID& cnt ) { bool battle = false; int pay = 0; size_t n = 0; bool stop = false; while ( !stop && !A.empty() && !B.empty() ) { std::ostringstream oss; oss << "A" << to_string(A) << "B" << to_string(B) << "T" << to_string(table) << whois(starter) << whois(answerer) << battle << whois(battle_starter) << pay; std::string status = oss.str(); if ( statuses.count( status ) ) { if ( statuses[status]==cnt ) { std::cout << "infinite:" << cnt << "\n"; } else { std::cout << cnt << "->" << statuses[status] << "\n"; } stop = true; } else { statuses.insert( std::make_pair( status, cnt ) ); } if ( !stop ) { std::cout<< "A:" << to_string(A) << "\n"; std::cout<< "B:" << to_string(B) << "\n"; std::cout<< "T:" << to_string(table) << "\n\n"; table.push_front( starter->front() ); starter->pop_front(); n++; if ( 0 != table.front() ) { battle = true; battle_starter = starter; pay = table.front(); std::swap( starter, answerer ); } else { if ( battle ) { pay--; if ( pay==0 ) { battle = false; std::reverse( table.begin(), table.end() ); std::copy( table.begin(), table.end(), std::back_inserter(*battle_starter) ); table.clear(); std::cout<< "A:" << to_string(A) << "\n"; std::cout<< "B:" << to_string(B) << "\n"; std::cout<< "T:" << to_string(table) << "\n\n"; std::swap( starter, answerer ); } } else { std::swap( starter, answerer ); } } } } std::cout << cnt << "," << n << "\n"; table.clear(); statuses.clear(); cnt++; }
int Irc::Session::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: connected(); break; case 1: welcomed(); break; case 2: reconnecting(); break; case 3: disconnected(); break; case 4: bufferAdded((*reinterpret_cast< Irc::Buffer*(*)>(_a[1]))); break; case 5: bufferRemoved((*reinterpret_cast< Irc::Buffer*(*)>(_a[1]))); break; case 6: capabilitiesListed((*reinterpret_cast< const QStringList(*)>(_a[1]))); break; case 7: capabilitiesAcked((*reinterpret_cast< const QStringList(*)>(_a[1]))); break; case 8: capabilitiesNotAcked((*reinterpret_cast< const QStringList(*)>(_a[1]))); break; case 9: msgJoined((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 10: msgParted((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 11: msgQuit((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 12: msgNickChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 13: msgModeChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4]))); break; case 14: msgTopicChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 15: msgInvited((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 16: msgKicked((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4]))); break; case 17: msgMessageReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 18: msgNoticeReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 19: msgCtcpRequestReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 20: msgCtcpReplyReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 21: msgCtcpActionReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 22: msgNumericMessageReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< uint(*)>(_a[2])),(*reinterpret_cast< const QStringList(*)>(_a[3]))); break; case 23: msgUnknownMessageReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QStringList(*)>(_a[2]))); break; case 24: connectToServer((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< quint16(*)>(_a[2]))); break; case 25: connectToServer((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 26: connectToServer(); break; case 27: reconnectToServer(); break; case 28: disconnectFromServer(); break; case 29: { bool _r = raw((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 30: { bool _r = motd(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 31: { bool _r = join((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 32: { bool _r = join((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 33: { bool _r = part((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 34: { bool _r = part((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 35: { bool _r = quit((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 36: { bool _r = quit(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 37: { bool _r = names((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 38: { bool _r = list((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 39: { bool _r = list(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 40: { bool _r = whois((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 41: { bool _r = whowas((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 42: { bool _r = mode((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 43: { bool _r = mode((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 44: { bool _r = topic((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 45: { bool _r = topic((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 46: { bool _r = invite((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 47: { bool _r = kick((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 48: { bool _r = kick((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 49: { bool _r = message((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 50: { bool _r = notice((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 51: { bool _r = ctcpAction((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 52: { bool _r = ctcpRequest((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 53: { bool _r = ctcpReply((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 54: requestCapabilities((*reinterpret_cast< const QStringList(*)>(_a[1]))); break; case 55: clearCapabilities(); break; case 56: { bool _r = sendRaw((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 57: { bool _r = cmdJoin((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 58: { bool _r = cmdJoin((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 59: { bool _r = cmdPart((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 60: { bool _r = cmdPart((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 61: { bool _r = cmdQuit((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 62: { bool _r = cmdQuit(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 63: { bool _r = cmdNames((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 64: { bool _r = cmdList((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 65: { bool _r = cmdList(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 66: { bool _r = cmdWhois((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 67: { bool _r = cmdMode((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 68: { bool _r = cmdMode((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 69: { bool _r = cmdTopic((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 70: { bool _r = cmdTopic((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 71: { bool _r = cmdInvite((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 72: { bool _r = cmdKick((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 73: { bool _r = cmdKick((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 74: { bool _r = cmdMessage((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 75: { bool _r = cmdNotice((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 76: { bool _r = cmdCtcpAction((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 77: { bool _r = cmdCtcpRequest((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 78: { bool _r = cmdCtcpReply((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 79: d_func()->_q_connected(); break; case 80: d_func()->_q_disconnected(); break; case 81: d_func()->_q_reconnect(); break; case 82: d_func()->_q_error(); break; case 83: d_func()->_q_state((*reinterpret_cast< QAbstractSocket::SocketState(*)>(_a[1]))); break; case 84: d_func()->_q_readData(); break; case 85: d_func()->_q_joined((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 86: d_func()->_q_parted((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 87: d_func()->_q_quit((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 88: d_func()->_q_nickChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 89: d_func()->_q_modeChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 90: d_func()->_q_topicChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 91: d_func()->_q_invited((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 92: d_func()->_q_kicked((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; case 93: d_func()->_q_messageReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 94: d_func()->_q_noticeReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 95: d_func()->_q_ctcpRequestReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 96: d_func()->_q_ctcpReplyReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 97: d_func()->_q_ctcpActionReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 98: d_func()->_q_numericMessageReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< uint(*)>(_a[2])),(*reinterpret_cast< const QStringList(*)>(_a[3]))); break; case 99: d_func()->_q_unknownMessageReceived((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QStringList(*)>(_a[2]))); break; default: ; } _id -= 100; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QStringList*>(_v) = autoJoinChannels(); break; case 1: *reinterpret_cast< int*>(_v) = autoReconnectDelay(); break; case 2: *reinterpret_cast< QByteArray*>(_v) = encoding(); break; case 3: *reinterpret_cast< QString*>(_v) = host(); break; case 4: *reinterpret_cast< QString*>(_v) = ident(); break; case 5: *reinterpret_cast< QString*>(_v) = nick(); break; case 6: *reinterpret_cast<int*>(_v) = QFlag(options()); break; case 7: *reinterpret_cast< QString*>(_v) = password(); break; case 8: *reinterpret_cast< quint16*>(_v) = port(); break; case 9: *reinterpret_cast< QString*>(_v) = realName(); break; case 10: *reinterpret_cast< QStringList*>(_v) = supportedCapabilities(); break; case 11: *reinterpret_cast< QStringList*>(_v) = enabledCapabilities(); break; } _id -= 12; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setAutoJoinChannels(*reinterpret_cast< QStringList*>(_v)); break; case 1: setAutoReconnectDelay(*reinterpret_cast< int*>(_v)); break; case 2: setEncoding(*reinterpret_cast< QByteArray*>(_v)); break; case 3: setHost(*reinterpret_cast< QString*>(_v)); break; case 4: setIdent(*reinterpret_cast< QString*>(_v)); break; case 5: setNick(*reinterpret_cast< QString*>(_v)); break; case 6: setOptions(QFlag(*reinterpret_cast<int*>(_v))); break; case 7: setPassword(*reinterpret_cast< QString*>(_v)); break; case 8: setPort(*reinterpret_cast< quint16*>(_v)); break; case 9: setRealName(*reinterpret_cast< QString*>(_v)); break; } _id -= 12; } else if (_c == QMetaObject::ResetProperty) { _id -= 12; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 12; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 12; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 12; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 12; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 12; } #endif // QT_NO_PROPERTIES return _id; }
int main(int argc, char *argv[]) { int ch, flags, rval; char *host, *name, *country; country = host = NULL; flags = rval = 0; while ((ch = getopt(argc, argv, "aAc:dgh:ilmp:PqQrR")) != -1) switch (ch) { case 'a': host = ANICHOST; break; case 'A': host = PNICHOST; break; case 'c': country = optarg; break; case 'd': host = DNICHOST; break; case 'g': host = GNICHOST; break; case 'h': host = optarg; break; case 'i': host = INICHOST; break; case 'l': host = LNICHOST; break; case 'm': host = MNICHOST; break; case 'p': port_whois = optarg; break; case 'P': host = PDBHOST; break; case 'q': /* deprecated, now the default */ break; case 'Q': flags |= WHOIS_QUICK; break; case 'r': host = RNICHOST; break; case 'R': host = RUNICHOST; break; default: usage(); } argc -= optind; argv += optind; if (!argc || (country != NULL && host != NULL)) usage(); if (host == NULL && country == NULL && !(flags & WHOIS_QUICK)) flags |= WHOIS_RECURSE; for (name = *argv; (name = *argv) != NULL; argv++) rval += whois(name, host ? host : choose_server(name, country), port_whois, flags); exit(rval); }
int whois(const char *query, const char *server, const char *port, int flags) { FILE *sfi, *sfo; char *buf, *p, *nhost, *nbuf = NULL; size_t len; int i, s, error; const char *reason = NULL, *fmt; struct addrinfo hints, *res, *ai; memset(&hints, 0, sizeof(hints)); hints.ai_flags = 0; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; error = getaddrinfo(server, port, &hints, &res); if (error) { if (error == EAI_SERVICE) warnx("%s: bad port", port); else warnx("%s: %s", server, gai_strerror(error)); return (1); } for (s = -1, ai = res; ai != NULL; ai = ai->ai_next) { s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (s == -1) { error = errno; reason = "socket"; continue; } if (connect(s, ai->ai_addr, ai->ai_addrlen) == -1) { error = errno; reason = "connect"; close(s); s = -1; continue; } break; /*okay*/ } if (s == -1) { if (reason) { errno = error; warn("%s: %s", server, reason); } else warn("unknown error in connection attempt"); freeaddrinfo(res); return (1); } if (strcmp(server, "whois.denic.de") == 0 || strcmp(server, "de" QNICHOST_TAIL) == 0) fmt = "-T dn,ace -C ISO-8859-1 %s\r\n"; else if (strcmp(server, "whois.dk-hostmaster.dk") == 0 || strcmp(server, "dk" QNICHOST_TAIL) == 0) fmt = "--show-handles %s\r\n"; else fmt = "%s\r\n"; sfi = fdopen(s, "r"); sfo = fdopen(s, "w"); if (sfi == NULL || sfo == NULL) err(1, "fdopen"); fprintf(sfo, fmt, query); fflush(sfo); nhost = NULL; while ((buf = fgetln(sfi, &len)) != NULL) { p = buf + len - 1; if (isspace((unsigned char)*p)) { do *p = '\0'; while (p > buf && isspace((unsigned char)*--p)); } else { if ((nbuf = malloc(len + 1)) == NULL) err(1, "malloc"); memcpy(nbuf, buf, len); nbuf[len] = '\0'; buf = nbuf; } puts(buf); if (nhost != NULL || !(flags & WHOIS_RECURSE)) continue; if ((p = strstr(buf, WHOIS_SERVER_ID))) { p += sizeof(WHOIS_SERVER_ID) - 1; while (isblank(*p)) p++; if ((len = strcspn(p, " \t\n\r"))) { if ((nhost = malloc(len + 1)) == NULL) err(1, "malloc"); memcpy(nhost, p, len); nhost[len] = '\0'; } } else if (strcmp(server, ANICHOST) == 0) { for (p = buf; *p != '\0'; p++) *p = tolower((unsigned char)*p); for (i = 0; ip_whois[i] != NULL; i++) { if (strstr(buf, ip_whois[i]) != NULL) { nhost = strdup(ip_whois[i]); if (nhost == NULL) err(1, "strdup"); break; } } } } if (nbuf != NULL) free(nbuf); if (nhost != NULL) { error = whois(query, nhost, port, 0); free(nhost); } freeaddrinfo(res); return (error); }
static void whois(const char *query, const char *hostname, int flags) { FILE *sfi, *sfo; struct addrinfo *hostres, *res; char *buf, *host, *nhost, *p; int s = -1, f; nfds_t i, j; size_t c, len, count; struct pollfd *fds; int timeout = 180; hostres = gethostinfo(hostname, 1); for (res = hostres, count = 0; res; res = res->ai_next) count++; fds = calloc(count, sizeof(*fds)); if (fds == NULL) err(EX_OSERR, "calloc()"); /* * Traverse the result list elements and make non-block * connection attempts. */ count = i = 0; for (res = hostres; res != NULL; res = res->ai_next) { s = socket(res->ai_family, res->ai_socktype | SOCK_NONBLOCK, res->ai_protocol); if (s < 0) continue; if (connect(s, res->ai_addr, res->ai_addrlen) < 0) { if (errno == EINPROGRESS) { /* Add the socket to poll list */ fds[i].fd = s; fds[i].events = POLLERR | POLLHUP | POLLIN | POLLOUT; count++; i++; } else { close(s); s = -1; /* * Poll only if we have something to poll, * otherwise just go ahead and try next * address */ if (count == 0) continue; } } else goto done; /* * If we are at the last address, poll until a connection is * established or we failed all connection attempts. */ if (res->ai_next == NULL) timeout = INFTIM; /* * Poll the watched descriptors for successful connections: * if we still have more untried resolved addresses, poll only * once; otherwise, poll until all descriptors have errors, * which will be considered as ETIMEDOUT later. */ do { int n; n = poll(fds, i, timeout); if (n == 0) { /* * No event reported in time. Try with a * smaller timeout (but cap at 2-3ms) * after a new host have been added. */ if (timeout >= 3) timeout <<= 1; break; } else if (n < 0) { /* * errno here can only be EINTR which we would want * to clean up and bail out. */ s = -1; goto done; } /* * Check for the event(s) we have seen. */ for (j = 0; j < i; j++) { if (fds[j].fd == -1 || fds[j].events == 0 || fds[j].revents == 0) continue; if (fds[j].revents & ~(POLLIN | POLLOUT)) { close(s); fds[j].fd = -1; fds[j].events = 0; count--; continue; } else if (fds[j].revents & (POLLIN | POLLOUT)) { /* Connect succeeded. */ s = fds[j].fd; goto done; } } } while (timeout == INFTIM && count != 0); } /* All attempts were failed */ s = -1; if (count == 0) errno = ETIMEDOUT; done: /* Close all watched fds except the succeeded one */ for (j = 0; j < i; j++) if (fds[j].fd != s && fds[j].fd != -1) close(fds[j].fd); if (s != -1) { /* Restore default blocking behavior. */ if ((f = fcntl(s, F_GETFL)) != -1) { f &= ~O_NONBLOCK; if (fcntl(s, F_SETFL, f) == -1) err(EX_OSERR, "fcntl()"); } else err(EX_OSERR, "fcntl()"); } free(fds); freeaddrinfo(hostres); if (s == -1) err(EX_OSERR, "connect()"); sfi = fdopen(s, "r"); sfo = fdopen(s, "w"); if (sfi == NULL || sfo == NULL) err(EX_OSERR, "fdopen()"); if (strcmp(hostname, GERMNICHOST) == 0) { fprintf(sfo, "-T dn,ace -C US-ASCII %s\r\n", query); } else if (strcmp(hostname, "dk" QNICHOST_TAIL) == 0) { fprintf(sfo, "--show-handles %s\r\n", query); } else { fprintf(sfo, "%s\r\n", query); } fflush(sfo); nhost = NULL; while ((buf = fgetln(sfi, &len)) != NULL) { while (len > 0 && isspace((unsigned char)buf[len - 1])) buf[--len] = '\0'; printf("%.*s\n", (int)len, buf); if ((flags & WHOIS_RECURSE) && nhost == NULL) { host = strnstr(buf, WHOIS_SERVER_ID, len); if (host != NULL) { host += sizeof(WHOIS_SERVER_ID) - 1; for (p = host; p < buf + len; p++) { if (!ishost(*p)) { *p = '\0'; break; } } s_asprintf(&nhost, "%.*s", (int)(buf + len - host), host); } else if ((host = strnstr(buf, WHOIS_ORG_SERVER_ID, len)) != NULL) { host += sizeof(WHOIS_ORG_SERVER_ID) - 1; for (p = host; p < buf + len; p++) { if (!ishost(*p)) { *p = '\0'; break; } } s_asprintf(&nhost, "%.*s", (int)(buf + len - host), host); } else if (strcmp(hostname, ANICHOST) == 0) { for (c = 0; c <= len; c++) buf[c] = tolower((unsigned char)buf[c]); for (i = 0; ip_whois[i] != NULL; i++) { if (strnstr(buf, ip_whois[i], len) != NULL) { s_asprintf(&nhost, "%s", ip_whois[i]); break; } } } } } if (nhost != NULL) { whois(query, nhost, 0); free(nhost); } }
static void whois(const char *query, const char *hostname, int flags) { FILE *fp; struct addrinfo *hostres, *res; char *buf, *host, *nhost, *p; int s = -1, f; nfds_t i, j; size_t len, count; struct pollfd *fds; int timeout = 180; hostres = gethostinfo(hostname, 1); for (res = hostres, count = 0; res; res = res->ai_next) count++; fds = calloc(count, sizeof(*fds)); if (fds == NULL) err(EX_OSERR, "calloc()"); /* * Traverse the result list elements and make non-block * connection attempts. */ count = i = 0; for (res = hostres; res != NULL; res = res->ai_next) { s = socket(res->ai_family, res->ai_socktype | SOCK_NONBLOCK, res->ai_protocol); if (s < 0) continue; if (connect(s, res->ai_addr, res->ai_addrlen) < 0) { if (errno == EINPROGRESS) { /* Add the socket to poll list */ fds[i].fd = s; fds[i].events = POLLERR | POLLHUP | POLLIN | POLLOUT; count++; i++; } else { close(s); s = -1; /* * Poll only if we have something to poll, * otherwise just go ahead and try next * address */ if (count == 0) continue; } } else goto done; /* * If we are at the last address, poll until a connection is * established or we failed all connection attempts. */ if (res->ai_next == NULL) timeout = INFTIM; /* * Poll the watched descriptors for successful connections: * if we still have more untried resolved addresses, poll only * once; otherwise, poll until all descriptors have errors, * which will be considered as ETIMEDOUT later. */ do { int n; n = poll(fds, i, timeout); if (n == 0) { /* * No event reported in time. Try with a * smaller timeout (but cap at 2-3ms) * after a new host have been added. */ if (timeout >= 3) timeout <<= 1; break; } else if (n < 0) { /* * errno here can only be EINTR which we would * want to clean up and bail out. */ s = -1; goto done; } /* * Check for the event(s) we have seen. */ for (j = 0; j < i; j++) { if (fds[j].fd == -1 || fds[j].events == 0 || fds[j].revents == 0) continue; if (fds[j].revents & ~(POLLIN | POLLOUT)) { close(s); fds[j].fd = -1; fds[j].events = 0; count--; continue; } else if (fds[j].revents & (POLLIN | POLLOUT)) { /* Connect succeeded. */ s = fds[j].fd; goto done; } } } while (timeout == INFTIM && count != 0); } /* All attempts were failed */ s = -1; if (count == 0) errno = ETIMEDOUT; done: if (s == -1) err(EX_OSERR, "connect()"); /* Close all watched fds except the succeeded one */ for (j = 0; j < i; j++) if (fds[j].fd != s && fds[j].fd != -1) close(fds[j].fd); free(fds); /* Restore default blocking behavior. */ if ((f = fcntl(s, F_GETFL)) == -1) err(EX_OSERR, "fcntl()"); f &= ~O_NONBLOCK; if (fcntl(s, F_SETFL, f) == -1) err(EX_OSERR, "fcntl()"); fp = fdopen(s, "r+"); if (fp == NULL) err(EX_OSERR, "fdopen()"); if (!(flags & WHOIS_SPAM_ME) && (strcasecmp(hostname, DENICHOST) == 0 || strcasecmp(hostname, "de" QNICHOST_TAIL) == 0)) { const char *q; int idn = 0; for (q = query; *q != '\0'; q++) if (!isascii(*q)) idn = 1; fprintf(fp, "-T dn%s %s\r\n", idn ? "" : ",ace", query); } else if (!(flags & WHOIS_SPAM_ME) && (strcasecmp(hostname, DKNICHOST) == 0 || strcasecmp(hostname, "dk" QNICHOST_TAIL) == 0)) fprintf(fp, "--show-handles %s\r\n", query); else if ((flags & WHOIS_SPAM_ME) || strchr(query, ' ') != NULL) fprintf(fp, "%s\r\n", query); else if (strcasecmp(hostname, ANICHOST) == 0) { if (strncasecmp(query, "AS", 2) == 0 && strspn(query+2, "0123456789") == strlen(query+2)) fprintf(fp, "+ a %s\r\n", query+2); else fprintf(fp, "+ %s\r\n", query); } else if (strcasecmp(hostres->ai_canonname, VNICHOST) == 0) fprintf(fp, "domain %s\r\n", query); else fprintf(fp, "%s\r\n", query); fflush(fp); nhost = NULL; while ((buf = fgetln(fp, &len)) != NULL) { /* Nominet */ if (!(flags & WHOIS_SPAM_ME) && len == 5 && strncmp(buf, "-- \r\n", 5) == 0) break; printf("%.*s", (int)len, buf); if ((flags & WHOIS_RECURSE) && nhost == NULL) { for (i = 0; whois_referral[i].prefix != NULL; i++) { p = buf; SCAN(p, buf+len, *p == ' '); if (strncasecmp(p, whois_referral[i].prefix, whois_referral[i].len) != 0) continue; p += whois_referral[i].len; SCAN(p, buf+len, *p == ' '); host = p; SCAN(p, buf+len, ishost(*p)); /* avoid loops */ if (strncmp(hostname, host, p - host) != 0) s_asprintf(&nhost, "%.*s", (int)(p - host), host); break; } for (i = 0; actually_arin[i] != NULL; i++) { if (strncmp(buf, actually_arin[i], len) == 0) { s_asprintf(&nhost, "%s", ANICHOST); break; } } } /* Verisign etc. */ if (!(flags & WHOIS_SPAM_ME) && len >= sizeof(CHOPSPAM)-1 && (strncasecmp(buf, CHOPSPAM, sizeof(CHOPSPAM)-1) == 0 || strncasecmp(buf, CHOPSPAM+4, sizeof(CHOPSPAM)-5) == 0)) { printf("\n"); break; } } fclose(fp); freeaddrinfo(hostres); if (nhost != NULL) { whois(query, nhost, flags); free(nhost); } }
int main(int argc, char *argv[]) { const char *country, *host; int ch, flags; #ifdef SOCKS SOCKSinit(argv[0]); #endif country = host = NULL; flags = 0; while ((ch = getopt(argc, argv, "aAbc:fgh:iIklmp:PQrRS")) != -1) { switch (ch) { case 'a': host = ANICHOST; break; case 'A': host = PNICHOST; break; case 'b': host = ABUSEHOST; break; case 'c': country = optarg; break; case 'f': host = FNICHOST; break; case 'g': host = GNICHOST; break; case 'h': host = optarg; break; case 'i': host = INICHOST; break; case 'I': host = IANAHOST; break; case 'k': host = KNICHOST; break; case 'l': host = LNICHOST; break; case 'm': host = MNICHOST; break; case 'p': port = optarg; break; case 'P': host = PDBHOST; break; case 'Q': flags |= WHOIS_QUICK; break; case 'r': host = RNICHOST; break; case 'R': flags |= WHOIS_RECURSE; break; case 'S': flags |= WHOIS_SPAM_ME; break; case '?': default: usage(); /* NOTREACHED */ } } argc -= optind; argv += optind; if (!argc || (country != NULL && host != NULL)) usage(); /* * If no host or country is specified, rely on referrals from IANA. */ if (host == NULL && country == NULL) { if ((host = getenv("WHOIS_SERVER")) == NULL && (host = getenv("RA_SERVER")) == NULL) { if (!(flags & WHOIS_QUICK)) flags |= WHOIS_RECURSE; } } while (argc-- > 0) { if (country != NULL) { char *qnichost; s_asprintf(&qnichost, "%s%s", country, QNICHOST_TAIL); whois(*argv, qnichost, flags); free(qnichost); } else whois(*argv, host != NULL ? host : choose_server(*argv), flags); argv++; } exit(0); }