Source Code (Use browser search to find items of interest.)

Class Index

kwuftpd'Security (./kdeadmin/kwuftpd/Security.h:12)

class Security : public QWidget {
	Q_OBJECT
public:
	Security(QWidget *parent=0, const char *name=0);
	~Security();
public slots:
	void ftpaccessLoaded(ftpaccess *xs);
	void update();
	void addNoRetPressed();
	void delNoRetPressed();
	void noRetAdded(char const * const filename);
private:
	void		redrawNoRetrieves();
	ftpaccess *	ftpxs;
	QListBox *	noretrieves;
	QPushButton *	addNoRet;
	QPushButton *	delNoRet;
	QSpinBox *	loginfails;
	QCheckBox *	priv;
	QCheckBox *	chmodAnon;
	QCheckBox *	chmodGuest;
	QCheckBox *	chmodReal;
	QCheckBox *	deleteAnon;
	QCheckBox *	deleteGuest;
	QCheckBox *	deleteReal;
	QCheckBox *	overwriteAnon;
	QCheckBox *	overwriteGuest;
	QCheckBox *	overwriteReal;
	QCheckBox *	renameAnon;
	QCheckBox *	renameGuest;
	QCheckBox *	renameReal;
	QCheckBox *	umaskAnon;
	QCheckBox *	umaskGuest;
	QCheckBox *	umaskReal;
	QRadioButton *	PasswdNone;
	QRadioButton *	PasswdTrivial;
	QRadioButton *	PasswdRFC;
	QCheckBox *	PasswdEnforce;
};

kwuftpd'Security::Security() (./kdeadmin/kwuftpd/Security.cpp:9)

Security::Security(QWidget * parent, const char *name):QWidget(parent, name)
{
  int x = 5, y = 0;
  int w = 640, h = 380;		// see UserClasses constructor in UserClasses.cpp

  ftpxs = 0;
  QLabel *lbl1=new QLabel(i18n("&Noretrieves:"), this);
  lbl1->move(x, 0);
  y += lbl1->height();
  QWhatsThis::add(lbl1, i18n("Noretrieves are files and directories that can't be retrieved (downloaded) by remote users. Use the <b>Add</b> and <b>Remove</b> buttons below to control noretrieves."));
  addNoRet=new QPushButton(i18n("&Add"), this);
  delNoRet=new QPushButton(i18n("&Remove"), this);
  noretrieves=new QListBox(this);
  lbl1->setBuddy(noretrieves);
  noretrieves->setGeometry(x, y, 120, h - y - 2 * height() - 10 - addNoRet->height() - delNoRet->height());
  noretrieves->setAutoUpdate(true);
  noretrieves->setAutoScroll(true);
  QWhatsThis::add(noretrieves, i18n("Noretrieves are files and directories that can't be retrieved (downloaded) by remote users. Use the <b>Add</b> and <b>Remove</b> buttons below to control noretrieves."));
  y += noretrieves->height() + 5;
  addNoRet->setGeometry(x, y, 120, addNoRet->height());
  delNoRet->setGeometry(x, addNoRet->y() + addNoRet->height(), 120, delNoRet->height());
  connect(addNoRet, SIGNAL(clicked()), SLOT(addNoRetPressed()));
  connect(delNoRet, SIGNAL(clicked()), SLOT(delNoRetPressed()));
  QWhatsThis::add(addNoRet, i18n("Noretrieves are files and directories that can't be retrieved (downloaded) by remote users. Use the <b>Add</b> and <b>Remove</b> buttons below to control noretrieves."));
  QWhatsThis::add(delNoRet, i18n("Noretrieves are files and directories that can't be retrieved (downloaded) by remote users. Use the <b>Add</b> and <b>Remove</b> buttons below to control noretrieves."));
  QLabel *lbl2 = new QLabel(i18n("Number of allo&wed failed logins:"), this);
  lbl2->resize(lbl2->sizeHint());
  QWhatsThis::add(lbl2, i18n("A user may attempt to login with a wrong password this many times before the connection is closed."));
  loginfails=new QSpinBox(this);
  loginfails->resize(loginfails->sizeHint());
  QWhatsThis::add(loginfails, i18n("A user may attempt to login with a wrong password this many times before the connection is closed."));
  lbl2->setBuddy(loginfails);
  if(ftpxs != 0)
    loginfails->setValue(ftpxs->getLoginFails());
  x += noretrieves->width() + 5;
  y = 5;
  lbl2->move(x, y);
  y += loginfails->height();
  loginfails->move(x + lbl2->width(), 5);
  priv = new QCheckBox(i18n("Permit SITE &GROUP"), this);
  QWhatsThis::add(priv, i18n("Permit users to change their group membership using the ftp SITE GROUP command"));
  priv->resize(priv->sizeHint());
  if(ftpxs != 0)
    priv->setChecked(ftpxs->getPrivate());
  priv->move(x, y);
  y += priv->height();
  QLabel *lbl3 = new QLabel(i18n("Permit the following commands to users:"), this);
  lbl3->setGeometry(x, y, lbl3->sizeHint().width(), lbl3->height());
  y += lbl3->height();

  int tY = y, Lw = (w - x - 10) / 4;
  QLabel *lbl4 = new QLabel(i18n("Anonymous"), this);
  lbl4->setAlignment(AlignCenter);
  lbl4->setGeometry(x + Lw, y, Lw, lbl4->height());
  QLabel *lbl5 = new QLabel(i18n("Guest"), this);
  lbl5->setAlignment(AlignCenter);
  lbl5->setGeometry(x + 2 * Lw, y, Lw, lbl5->height());
  QLabel *lbl6 = new QLabel(i18n("Real"), this);
  lbl6->setAlignment(AlignCenter);
  lbl6->setGeometry(x + 3 * Lw, y, Lw, lbl6->height());
  y += lbl6->height();
  QLabel *lbl7 = new QLabel("chmod", this);
  lbl7->setGeometry(x + 5, y, Lw, lbl7->height());
  chmodAnon = new QCheckBox(this);
  chmodAnon->resize(chmodAnon->sizeHint().width(), lbl7->height());
  chmodAnon->move(x + Lw + Lw / 2, y);
  chmodGuest = new QCheckBox(this);
  chmodGuest->resize(chmodGuest->sizeHint().width(), lbl7->height());
  chmodGuest->move(x + 2 * Lw + Lw / 2, y);
  chmodReal = new QCheckBox(this);
  chmodReal->resize(chmodGuest->sizeHint().width(), lbl7->height());
  chmodReal->move(x + 3 * Lw + Lw / 2, y);
  y += lbl7->height();
  QLabel *lbl8 = new QLabel("delete", this);
  lbl8->setGeometry(x + 5, y, Lw, lbl8->height());
  deleteAnon = new QCheckBox(this);
  deleteAnon->resize(deleteAnon->sizeHint().width(), lbl8->height());
  deleteAnon->move(x + Lw + Lw / 2, y);
  deleteGuest = new QCheckBox(this);
  deleteGuest->resize(deleteGuest->sizeHint().width(), lbl8->height());
  deleteGuest->move(x + 2 * Lw + Lw / 2, y);
  deleteReal = new QCheckBox(this);
  deleteReal->resize(deleteGuest->sizeHint().width(), lbl8->height());
  deleteReal->move(x + 3 * Lw + Lw / 2, y);
  y += lbl8->height();
  QLabel *lbl9 = new QLabel("overwrite", this);
  lbl9->setGeometry(x + 5, y, Lw, lbl9->height());
  overwriteAnon = new QCheckBox(this);
  overwriteAnon->resize(overwriteAnon->sizeHint().width(), lbl9->height());
  overwriteAnon->move(x + Lw + Lw / 2, y);
  overwriteGuest = new QCheckBox(this);
  overwriteGuest->resize(overwriteGuest->sizeHint().width(), lbl9->height());
  overwriteGuest->move(x + 2 * Lw + Lw / 2, y);
  overwriteReal = new QCheckBox(this);
  overwriteReal->resize(overwriteGuest->sizeHint().width(), lbl9->height());
  overwriteReal->move(x + 3 * Lw + Lw / 2, y);
  y += lbl9->height();
  QLabel *lbl10 = new QLabel("rename", this);
  lbl10->setGeometry(x + 5, y, Lw, lbl10->height());
  renameAnon = new QCheckBox(this);
  renameAnon->resize(renameAnon->sizeHint().width(), lbl10->height());
  renameAnon->move(x + Lw + Lw / 2, y);
  renameGuest = new QCheckBox(this);
  renameGuest->resize(renameGuest->sizeHint().width(), lbl10->height());
  renameGuest->move(x + 2 * Lw + Lw / 2, y);
  renameReal = new QCheckBox(this);
  renameReal->resize(renameGuest->sizeHint().width(), lbl10->height());
  renameReal->move(x + 3 * Lw + Lw / 2, y);
  y += lbl10->height();
  QLabel *lbl11 = new QLabel("umask", this);
  lbl11->setGeometry(x + 5, y, Lw, lbl11->height());
  umaskAnon = new QCheckBox(this);
  umaskAnon->resize(umaskAnon->sizeHint().width(), lbl11->height());
  umaskAnon->move(x + Lw + Lw / 2, y);
  umaskGuest = new QCheckBox(this);
  umaskGuest->resize(umaskGuest->sizeHint().width(), lbl11->height());
  umaskGuest->move(x + 2 * Lw + Lw / 2, y);
  umaskReal = new QCheckBox(this);
  umaskReal->resize(umaskGuest->sizeHint().width(), lbl11->height());
  umaskReal->move(x + 3 * Lw + Lw / 2, y);
  y += lbl11->height();
  for(int i = 0; i < 5; i++)
    {				// draw table frames

      QFrame *Frame = new QFrame(this);
      Frame->setFrameStyle(QFrame::VLine | QFrame::Sunken);
      Frame->setGeometry(x + i * Lw, tY, 2, y - tY);
    }
  for(int i = 0; i < 7; i++)
    {
      QFrame *Frame = new QFrame(this);
      Frame->setFrameStyle(QFrame::HLine | QFrame::Sunken);
      Frame->setGeometry(x, tY + i * lbl7->height(), 4 * Lw, 2);
    }
  y += 10;
  QLabel *lbl12 = new QLabel(i18n("Check password for anonymous:"), this);
  lbl12->move(x, y);
  lbl12->resize(lbl12->sizeHint());
  QButtonGroup *pwc = new QButtonGroup();
  PasswdNone = new QRadioButton(i18n("&No"), this);
  QWhatsThis::add(PasswdNone, i18n("Don't check password given for anonymous/ftp at all"));
  PasswdNone->move(x + lbl12->width() + 5, y);
  PasswdNone->resize(PasswdNone->sizeHint());
  pwc->insert(PasswdNone);
  PasswdTrivial = new QRadioButton(i18n("&trivial"), this);
  QWhatsThis::add(PasswdTrivial, i18n("Password for anonymous/ftp must contain an @ character"));
  PasswdTrivial->move(PasswdNone->x() + PasswdNone->width() + 5, y);
  PasswdTrivial->resize(PasswdTrivial->sizeHint());
  pwc->insert(PasswdTrivial);
  PasswdRFC = new QRadioButton(i18n("&RFC822"), this);
  QWhatsThis::add(PasswdRFC, i18n("Make sure password for anonymous/ftp is a valid e-mail address\naccording to RFC822"));
  PasswdRFC->move(PasswdTrivial->x() + PasswdTrivial->width() + 5, y);
  PasswdRFC->resize(PasswdRFC->sizeHint());
  pwc->insert(PasswdRFC);
  PasswdEnforce = new QCheckBox(i18n("Enf&orce"), this);
  QWhatsThis::add(PasswdEnforce, i18n("If this is checked, people using something other than an e-mail address\nas anonymous password will not be allowed to log in.\n\nIf this is not checked, they will just be warned and told to use their\ne-mail address as password next time."));
  PasswdEnforce->move(PasswdRFC->x() + PasswdRFC->width() + 10, y);
  PasswdEnforce->resize(PasswdEnforce->sizeHint());
}

kwuftpd'Security::~Security() (./kdeadmin/kwuftpd/Security.cpp:168)

Security::~Security()
{
}

kwuftpd'Security::ftpaccessLoaded() (./kdeadmin/kwuftpd/Security.cpp:171)

void Security::ftpaccessLoaded(ftpaccess * xs)
{
  ftpxs = xs;
  loginfails->setValue(ftpxs->getLoginFails());
  priv->setChecked(ftpxs->getPrivate());
  chmodAnon->setChecked(ftpxs->getChmod() & ANONYMOUS);
  chmodGuest->setChecked(ftpxs->getChmod() & GUEST);
  chmodReal->setChecked(ftpxs->getChmod() & REAL);
  deleteAnon->setChecked(ftpxs->getDelete() & ANONYMOUS);
  deleteGuest->setChecked(ftpxs->getDelete() & GUEST);
  deleteReal->setChecked(ftpxs->getDelete() & REAL);
  overwriteAnon->setChecked(ftpxs->getOverwrite() & ANONYMOUS);
  overwriteGuest->setChecked(ftpxs->getOverwrite() & GUEST);
  overwriteReal->setChecked(ftpxs->getOverwrite() & REAL);
  renameAnon->setChecked(ftpxs->getRename() & ANONYMOUS);
  renameGuest->setChecked(ftpxs->getRename() & GUEST);
  renameReal->setChecked(ftpxs->getRename() & REAL);
  umaskAnon->setChecked(ftpxs->getUmask() & ANONYMOUS);
  umaskGuest->setChecked(ftpxs->getUmask() & GUEST);
  umaskReal->setChecked(ftpxs->getUmask() & REAL);
  if(ftpxs->getPwCheck() & TRIVIAL)
    PasswdTrivial->setChecked(true);
  else if(ftpxs->getPwCheck() & RFC822)
    PasswdRFC->setChecked(true);
  else
    PasswdNone->setChecked(true);
  PasswdEnforce->setChecked((ftpxs->getPwCheck() &((int) ENFORCE)) != 0);
  redrawNoRetrieves();
}

kwuftpd'Security::update() (./kdeadmin/kwuftpd/Security.cpp:200)

void Security::update()
{
  ftpxs->setLoginFails(loginfails->value());
  ftpxs->setPrivate(priv->isChecked());
  unsigned short tmp = 0;
  if (chmodAnon->isChecked())
    tmp |= ANONYMOUS;
  if (chmodGuest->isChecked())
    tmp |= GUEST;
  if (chmodReal->isChecked())
    tmp |= REAL;
  ftpxs->setChmod(tmp);
  tmp = 0;
  if (deleteAnon->isChecked())
    tmp |= ANONYMOUS;
  if (deleteGuest->isChecked())
    tmp |= GUEST;
  if (deleteReal->isChecked())
    tmp |= REAL;
  ftpxs->setDelete(tmp);
  tmp = 0;
  if (overwriteAnon->isChecked())
    tmp |= ANONYMOUS;
  if (overwriteGuest->isChecked())
    tmp |= GUEST;
  if (overwriteReal->isChecked())
    tmp |= REAL;
  ftpxs->setOverwrite(tmp);
  tmp = 0;
  if (renameAnon->isChecked())
    tmp |= ANONYMOUS;
  if (renameGuest->isChecked())
    tmp |= GUEST;
  if (renameReal->isChecked())
    tmp |= REAL;
  ftpxs->setRename(tmp);
  tmp = 0;
  if (umaskAnon->isChecked())
    tmp |= ANONYMOUS;
  if (umaskGuest->isChecked())
    tmp |= GUEST;
  if (umaskReal->isChecked())
    tmp |= REAL;
  ftpxs->setUmask(tmp);
  unsigned short pwVal = 0;
  if (PasswdNone->isChecked())
    pwVal |= NONE;
  else if (PasswdTrivial->isChecked())
    pwVal |= TRIVIAL;
  else
    pwVal |= RFC822;
  if (PasswdEnforce->isChecked())
    pwVal |= ENFORCE;
  ftpxs->setPwCheck(pwVal);
}

kwuftpd'Security::redrawNoRetrieves() (./kdeadmin/kwuftpd/Security.cpp:255)

void Security::redrawNoRetrieves()
{
  noretrieves->setAutoUpdate(false);
  noretrieves->clear();
  QStrList *l = ftpxs->getNoRetrieves();
  char *n = l->first();
  while(n)
    {
      noretrieves->insertItem(n);
      n = l->next();
    }
  noretrieves->setAutoUpdate(true);
  noretrieves->update();
}

kwuftpd'Security::addNoRetPressed() (./kdeadmin/kwuftpd/Security.cpp:269)

void Security::addNoRetPressed()
{
  AddNoRet *anr = new AddNoRet;
  connect (anr, SIGNAL(noRetAdded(char const *const)), SLOT(noRetAdded(char const *const)));
}

kwuftpd'Security::delNoRetPressed() (./kdeadmin/kwuftpd/Security.cpp:274)

void Security::delNoRetPressed()
{
  for (unsigned int i=0; i<noretrieves->count(); i++)
    if (noretrieves->isSelected(i))
      ftpxs->getNoRetrieves()->remove(i);
  redrawNoRetrieves();
}

kwuftpd'Security::noRetAdded() (./kdeadmin/kwuftpd/Security.cpp:281)

void Security::noRetAdded(char const *const filename)
{
  ftpxs->getNoRetrieves()->append(filename);
  redrawNoRetrieves();
}