void AddDialog::accept() { mFr.base.proto = get_proto(ui->cbProto->currentText().toStdString().c_str()); mFr.base.src_port = ui->leSourcePort->text().toUInt(); bool any = ui->rbAnyone->isChecked(); QHostAddress hostaddr(any?"0.0.0.0":ui->leSourceHostIP->text()); if( hostaddr.isNull() ) { /*QMessageBox::StandardButton reply =*/ QMessageBox::critical(this, tr("Data error") , tr("Wrong ip address") , QMessageBox::Ok ); } else if( mFr.base.src_port==0 ) { /*QMessageBox::StandardButton reply =*/ QMessageBox::critical(this, tr("Data error") , tr("Wrong port number") , QMessageBox::Ok ); } else { mFr.base.s_addr.addr = static_cast<quint32>(htonl(hostaddr.toIPv4Address())); emit accept_rule(mFr); QDialog::accept(); } }
int tcp_connect(char *host, char *serv) { struct sockaddr_in sin; int sock; if (!hostport(serv, &sin)) { fprintf(stderr, "Can't resolve Empire port %s\n", serv); exit(1); } if (!hostaddr(host, &sin)) { fprintf(stderr, "Can't resolve Empire host %s\n", host); exit(1); } if ((sock = hostconnect(&sin)) < 0) { fprintf(stderr, "Can't connect to %s:%s: %s\n", serv, host, strerror(errno)); exit(1); } return sock; }
static int ConfigOnToken(ServerConfig *config, LineParser *lp) { QString token = QString(lp->gettoken_str(0)).toLower(); if (token == QString("Port").toLower()) { if (lp->getnumtokens() != 2) return -1; int p=lp->gettoken_int(1); if (!p) return -2; config->port=p; } else if (token == QString("StatusUserPass").toLower()) { if (lp->getnumtokens() != 3) return -1; config->statusUser.Set(lp->gettoken_str(1)); config->statusPass.Set(lp->gettoken_str(2)); } else if (token == QString("MaxUsers").toLower()) { if (lp->getnumtokens() != 2) return -1; int p=lp->gettoken_int(1); config->maxUsers=p; } else if (token == QString("PIDFile").toLower()) { if (lp->getnumtokens() != 2) return -1; config->pidFilename.Set(lp->gettoken_str(1)); } else if (token == QString("LogFile").toLower()) { if (lp->getnumtokens() != 2) return -1; config->logFilename.Set(lp->gettoken_str(1)); } else if (token == QString("SessionArchive").toLower()) { if (lp->getnumtokens() != 3) return -1; config->logPath.Set(lp->gettoken_str(1)); config->logSessionLen = lp->gettoken_int(2); } else if (token == QString("SetUID").toLower()) { if (lp->getnumtokens() != 2) return -1; config->setuid = lp->gettoken_int(1); } else if (token == QString("DefaultBPI").toLower()) { if (lp->getnumtokens() != 2) return -1; int p = lp->gettoken_int(1); if (p < MIN_BPI) { p = MIN_BPI; } else if (p > MAX_BPI) { p = MAX_BPI; } config->defaultBPI=lp->gettoken_int(1); } else if (token == QString("DefaultBPM").toLower()) { if (lp->getnumtokens() != 2) return -1; int p = lp->gettoken_int(1); if (p < MIN_BPM) { p = MIN_BPM; } else if (p > MAX_BPM) { p = MAX_BPM; } config->defaultBPM = p; } else if (token == QString("DefaultTopic").toLower()) { if (lp->getnumtokens() != 2) return -1; config->defaultTopic.Set(lp->gettoken_str(1)); } else if (token == QString("MaxChannels").toLower()) { if (lp->getnumtokens() != 2 && lp->getnumtokens() != 3) return -1; config->maxchUser=lp->gettoken_int(1); config->maxchAnon=lp->gettoken_int(lp->getnumtokens()>2?2:1); } else if (token == QString("SetKeepAlive").toLower()) { if (lp->getnumtokens() != 2) return -1; int p = lp->gettoken_int(1); if (p < 0 || p > 255) { p = 0; } config->keepAlive = p; } else if (token == QString("SetVotingThreshold").toLower()) { if (lp->getnumtokens() != 2) return -1; config->votingThreshold = lp->gettoken_int(1); } else if (token == QString("SetVotingVoteTimeout").toLower()) { if (lp->getnumtokens() != 2) return -1; config->votingTimeout = lp->gettoken_int(1); } else if (token == QString("ServerLicense").toLower()) { if (lp->getnumtokens() != 2) return -1; FILE *fp=fopen(lp->gettoken_str(1),"rt"); if (!fp) { printf("Error opening license file %s\n",lp->gettoken_str(1)); if (g_logfp) logText("Error opening license file %s\n",lp->gettoken_str(1)); return -2; } config->license.Set(""); for (;;) { char buf[1024]; buf[0]=0; fgets(buf,sizeof(buf),fp); if (!buf[0]) break; config->license.Append(buf); } fclose(fp); } else if (token == QString("ACL").toLower()) { if (lp->getnumtokens() != 3) return -1; int suc=0; char *v=lp->gettoken_str(1); char *t=strstr(v,"/"); if (t) { *t++=0; QHostAddress hostaddr(v); if (hostaddr != QHostAddress::Null) { int maskbits=atoi(t); if (maskbits >= 0 && maskbits <= 32) { int flag=lp->gettoken_enum(2,"allow\0deny\0reserve\0"); if (flag >= 0) { suc=1; unsigned long mask = 0xffffffff << maskbits; config->acl.add(hostaddr.toIPv4Address(), mask, flag); } } } } if (!suc) { if (g_logfp) logText("Usage: ACL xx.xx.xx.xx/X [ban|allow|reserve]\n"); printf("Usage: ACL xx.xx.xx.xx/X [ban|allow|reserve]\n"); return -2; } } else if (token == QString("User").toLower()) { if (lp->getnumtokens() != 3 && lp->getnumtokens() != 4) return -1; UserPassEntry *p=new UserPassEntry; p->name.Set(lp->gettoken_str(1)); p->pass.Set(lp->gettoken_str(2)); if (lp->getnumtokens()>3) { char *ptr=lp->gettoken_str(3); while (*ptr) { if (*ptr == '*') p->priv_flag|=~PRIV_HIDDEN; // everything but hidden if * used else if (*ptr == 'T' || *ptr == 't') p->priv_flag |= PRIV_TOPIC; else if (*ptr == 'B' || *ptr == 'b') p->priv_flag |= PRIV_BPM; else if (*ptr == 'C' || *ptr == 'c') p->priv_flag |= PRIV_CHATSEND; else if (*ptr == 'K' || *ptr == 'k') p->priv_flag |= PRIV_KICK; else if (*ptr == 'R' || *ptr == 'r') p->priv_flag |= PRIV_RESERVE; else if (*ptr == 'M' || *ptr == 'm') p->priv_flag |= PRIV_ALLOWMULTI; else if (*ptr == 'H' || *ptr == 'h') p->priv_flag |= PRIV_HIDDEN; else if (*ptr == 'V' || *ptr == 'v') p->priv_flag |= PRIV_VOTE; else { if (g_logfp) logText("Warning: Unknown user priviledge flag '%c'\n",*ptr); printf("Warning: Unknown user priviledge flag '%c'\n",*ptr); } ptr++; } } else p->priv_flag=PRIV_CHATSEND|PRIV_VOTE;// default privs config->userlist.Add(p); } else if (token == QString("AllowHiddenUsers").toLower()) { if (lp->getnumtokens() != 2) return -1; int x=lp->gettoken_enum(1,"no\0yes\0"); if (x <0) { return -2; } config->allowHiddenUsers = x; } else if (token == QString("AnonymousUsers").toLower()) { if (lp->getnumtokens() != 2) return -1; int x=lp->gettoken_enum(1,"no\0yes\0multi\0"); if (x <0) { return -2; } config->allowAnonymous = x; config->allowAnonymousMulti = x == 2; } else if (token == QString("AnonymousMaskIP").toLower()) { if (lp->getnumtokens() != 2) return -1; int x=lp->gettoken_enum(1,"no\0yes\0"); if (x <0) { return -2; } config->anonymousMaskIP = x; } else if (token == QString("AnonymousUsers").toLower()) { if (lp->getnumtokens() != 2) return -1; int x=lp->gettoken_enum(1,"no\0yes\0"); if (x <0) { return -2; } config->allowAnonymous = x; } else if (token == QString("AnonymousUsersCanChat").toLower()) { if (lp->getnumtokens() != 2) return -1; int x=lp->gettoken_enum(1,"no\0yes\0"); if (x <0) { return -2; } config->allowAnonChat = x; } else return -3; return 0; }