예제 #1
0
파일: adddialog.cpp 프로젝트: tailored/bf
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();
    }

}
예제 #2
0
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;
}
예제 #3
0
파일: ninjamsrv.cpp 프로젝트: tzhuan/wahjam
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;
}