18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_gui - UserDataRequest class
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "userdatarequest.h"
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wpagui.h"
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "common/wpa_ctrl.h"
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry ShmidtUserDataRequest::UserDataRequest(QWidget *parent, const char *, bool,
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				 Qt::WFlags)
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	: QDialog(parent)
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	setupUi(this);
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	connect(buttonOk, SIGNAL(clicked()), this, SLOT(sendReply()));
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	connect(queryEdit, SIGNAL(returnPressed()), this, SLOT(sendReply()));
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry ShmidtUserDataRequest::~UserDataRequest()
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid UserDataRequest::languageChange()
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	retranslateUi(this);
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint UserDataRequest::setParams(WpaGui *_wpagui, const char *reqMsg)
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	char *tmp, *pos, *pos2;
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	wpagui = _wpagui;
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	tmp = strdup(reqMsg);
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	if (tmp == NULL)
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		return -1;
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	pos = strchr(tmp, '-');
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	if (pos == NULL) {
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		free(tmp);
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		return -1;
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	}
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	*pos++ = '\0';
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	field = tmp;
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	pos2 = strchr(pos, ':');
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	if (pos2 == NULL) {
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		free(tmp);
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		return -1;
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	}
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	*pos2++ = '\0';
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	networkid = atoi(pos);
598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	queryInfo->setText(pos2);
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	if (strcmp(tmp, "PASSWORD") == 0) {
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryField->setText(tr("Password: "));
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryEdit->setEchoMode(QLineEdit::Password);
638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	} else if (strcmp(tmp, "NEW_PASSWORD") == 0) {
648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryField->setText(tr("New password: "));
658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryEdit->setEchoMode(QLineEdit::Password);
668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	} else if (strcmp(tmp, "IDENTITY") == 0)
678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryField->setText(tr("Identity: "));
688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	else if (strcmp(tmp, "PASSPHRASE") == 0) {
698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryField->setText(tr("Private key passphrase: "));
708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryEdit->setEchoMode(QLineEdit::Password);
718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	} else
728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryField->setText(field + ":");
738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	free(tmp);
748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid UserDataRequest::sendReply()
808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	char reply[10];
828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t reply_len = sizeof(reply);
838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	if (wpagui == NULL) {
858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		reject();
868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		return;
878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	}
888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QString cmd = QString(WPA_CTRL_RSP) + field + '-' +
908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		QString::number(networkid) + ':' +
918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		queryEdit->text();
928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	wpagui->ctrlRequest(cmd.toAscii().constData(), reply, &reply_len);
938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	accept();
948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
95