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