?? setmacdhcp.cpp
字號:
/****************************************************************************** Form implementation generated from reading ui file 'setmacdhcp.ui'**** Created: Mon May 29 14:38:28 2006** by: The User Interface Compiler (uic)**** WARNING! All changes made in this file will be lost!****************************************************************************/#include "setmacdhcp.h"#include <qcombobox.h>#include <qlabel.h>#include <qlineedit.h>#include <qpushbutton.h>#include <qlayout.h>#include <qvariant.h>#include <qtooltip.h>#include <qwhatsthis.h>//#include <unistd.h> for sleep()#include <qmessagebox.h>class QMessageBox;/* * Constructs a setMac which is a child of 'parent', with the * name 'name' and widget flags set to 'f' */setMac::setMac( QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ){ if ( !name ) setName( "setMac" ); resize( 308, 220 ); setMaximumSize( QSize( 320, 220 ) ); setCaption( tr( "setMAC" ) ); interfaceNumCombo = new QComboBox( FALSE, this, "interfaceNumCombo" ); interfaceNumCombo->setGeometry( QRect( 130, 10, 70, 25 ) ); dhcpPushButton = new QPushButton( this, "dhcpPushButton" ); dhcpPushButton->setGeometry( QRect( 50, 180, 90, 25 ) ); dhcpPushButton->setText( tr( "DHCP" ) ); setupPushButton = new QPushButton( this, "setupPushButton" ); setupPushButton->setGeometry( QRect( 182, 180, 90, 25 ) ); setupPushButton->setText( tr( "Setup" ) ); QWidget* privateLayoutWidget = new QWidget( this, "Layout1" ); privateLayoutWidget->setGeometry( QRect( 130, 40, 155, 131 ) ); Layout1 = new QVBoxLayout( privateLayoutWidget ); Layout1->setSpacing( 6 ); Layout1->setMargin( 0 ); IPAddressLineEdit = new QLineEdit( privateLayoutWidget, "IPAddressLineEdit" ); IPAddressLineEdit->setText( tr( "" ) ); IPAddressLineEdit->setFrame( FALSE ); Layout1->addWidget( IPAddressLineEdit ); netMaskLineEdit = new QLineEdit( privateLayoutWidget, "netMaskLineEdit" ); netMaskLineEdit->setText( tr( "" ) ); netMaskLineEdit->setFrame( FALSE ); Layout1->addWidget( netMaskLineEdit ); MACAddressLineEdit = new QLineEdit( privateLayoutWidget, "MACAddressLineEdit" ); MACAddressLineEdit->setFrame( FALSE ); Layout1->addWidget( MACAddressLineEdit ); gatewayLineEdit = new QLineEdit( privateLayoutWidget, "gatewayLineEdit" ); gatewayLineEdit->setFrame( FALSE ); Layout1->addWidget( gatewayLineEdit ); DNSLineEdit = new QLineEdit( privateLayoutWidget, "DNSLineEdit" ); DNSLineEdit->setFrame( FALSE ); Layout1->addWidget( DNSLineEdit ); QWidget* privateLayoutWidget_2 = new QWidget( this, "Layout3" ); privateLayoutWidget_2->setGeometry( QRect( 15, 40, 110, 130 ) ); Layout3 = new QVBoxLayout( privateLayoutWidget_2 ); Layout3->setSpacing( 6 ); Layout3->setMargin( 0 ); IPAddressLabel = new QLabel( privateLayoutWidget_2, "IPAddressLabel" ); IPAddressLabel->setText( tr( "IP Address:" ) ); Layout3->addWidget( IPAddressLabel ); netMask = new QLabel( privateLayoutWidget_2, "netMask" ); netMask->setText( tr( "NetMask" ) ); Layout3->addWidget( netMask ); MACAddressLabel = new QLabel( privateLayoutWidget_2, "MACAddressLabel" ); MACAddressLabel->setText( tr( "MACAddress:" ) ); Layout3->addWidget( MACAddressLabel ); gatewayLabel = new QLabel( privateLayoutWidget_2, "gatewayLabel" ); gatewayLabel->setText( tr( "GetwayLabel" ) ); Layout3->addWidget( gatewayLabel ); DNSLabel = new QLabel( privateLayoutWidget_2, "DNSLabel" ); DNSLabel->setText( tr( "DNS:" ) ); Layout3->addWidget( DNSLabel ); interfaceNumLabel = new QLabel( this, "interfaceNumLabel" ); interfaceNumLabel->setGeometry( QRect( 15, 15, 110, 21 ) ); interfaceNumLabel->setText( tr( "Interface Num:" ) ); modifyEnable=TRUE; dirty=FALSE; MACDhcp = new macdhcp; ifnum = MACDhcp->getIfNum(); int eth0Index=-1; for( int i=ifnum-1; i>=0; i-- ){ tempString = MACDhcp->getIfName( i ); interfaceNumCombo->insertItem( tempString, -1 ); if(tempString.find("eth0")!=-1&&tempString.find("eth0:1")==-1)eth0Index=i; if(tempString.find("ppp",0,FALSE)!=-1)modifyEnable=FALSE; } MACAddressLineEdit->setText( MACDhcp->getMacAddress(ifnum-1) ); IPAddressLineEdit->setText( MACDhcp->getIPAddress(ifnum-1) ); gatewayLineEdit->setText( MACDhcp->getGateway() ); DNSLineEdit->setText( MACDhcp->getDNS() ); netMaskLineEdit->setText(MACDhcp->getNetMask(ifnum-1) ); if(eth0Index==-1||!modifyEnable) { dhcpPushButton->setDisabled( TRUE ); setupPushButton->setDisabled( TRUE ); } // signals and slots connections connect( interfaceNumCombo, SIGNAL( activated(int) ), this, SLOT( comboTextChange(int) ) ); connect( dhcpPushButton, SIGNAL( clicked() ), this, SLOT( dhcpClicked() ) ); connect( setupPushButton, SIGNAL( clicked() ), this, SLOT( setupClicked() ) );}/* * Destroys the object and frees any allocated resources */setMac::~setMac(){ // no need to delete child widgets, Qt does it all for us qWarning("exit"); if(dirty)resetEthernet(); delete MACDhcp;}void setMac::resetEthernet(){ FILE *fp; int i=0,eth0=0; QString mac("01:02:03:04:05:06"); QString ip("192.168.0.120"); QString netmask("255.255.255.0"); QString dns("192.168.0.1"); QString gateway("192.168.0.1"); QString network("192.168.0.0"); QString broadcast("192.168.0.255"); while(eth0<interfaceNumCombo->count()) { tempString=interfaceNumCombo->text(eth0); qWarning(tempString); if(tempString.find("eth0",0,FALSE)!=-1) { mac=MACDhcp->getMacAddress(ifnum-1-eth0); ip=MACDhcp->getIPAddress(ifnum-1-eth0); netmask=MACDhcp->getNetMask(ifnum-1-eth0); dns=MACDhcp->getDNS(); gateway=MACDhcp->getGateway(); network=MACDhcp->getNetwork(); broadcast=MACDhcp->getBroadcast(); break; } eth0++; } mac.replace( QRegExp("-"), ":" ); QString line[10]; line[0]="HOSTNAME=\"lq\"\n"; line[1]="DOMAIN=\"linux\"\n"; line[2]="IPADDR=\""+ip+"\"\n"; line[3]="NETMASK=\""+netmask+"\"\n"; line[4]="GATEWAY=\""+gateway+"\"\n"; line[5]="DNS_1=\""+dns+"\"\n"; line[6]="DNS_2=\"61.139.2.69\"\n"; line[7]="NETWORK=\""+network+"\"\n"; line[8]="BROADCAST=\""+broadcast+"\"\n"; line[9]="MAC=\""+mac+"\"\n"; fp=fopen("/usr/etc/pcmcia/network.opts-static","w"); for(i=0;i<10;i++) fputs(line[i].ascii(),fp); fclose(fp); system("/usr/etc/pcmcia/network start eth0");}void setMac::comboTextChange( int item ){ int curItem; curItem = ifnum - 1 - item; MACAddressLineEdit->setText( MACDhcp->getMacAddress(curItem) ); IPAddressLineEdit->setText( MACDhcp->getIPAddress(curItem) ); netMaskLineEdit->setText(MACDhcp->getNetMask(curItem)); DNSLineEdit->setText( MACDhcp->getDNS() ); gatewayLineEdit->setText( MACDhcp->getGateway() ); if(MACDhcp->getIfName(curItem).stripWhiteSpace ()==QString("eth0")&&modifyEnable) { dhcpPushButton->setDisabled( FALSE ); setupPushButton->setDisabled( FALSE ); } else { dhcpPushButton->setDisabled( TRUE ); setupPushButton->setDisabled( TRUE ); } }void setMac::dhcpClicked(){ int curItem, item;// FILE *fp; int pumpCount=0; QString srhStr; if(!modifyEnable) { dhcpPushButton->setDisabled( TRUE ); setupPushButton->setDisabled( TRUE ); QMessageBox::information( this, tr( "Setup" ), tr( "Can't exec.this will broken PPPoE link" ) ); return; } dhcpPushButton->setDisabled( TRUE ); setupPushButton->setDisabled( TRUE ); dhcpPushButton->setText( tr( "DHCP..." ) ); item = interfaceNumCombo->currentItem(); curItem = ifnum - 1 - item; QMessageBox::information( this, tr( "DHCP" ), tr( "please keep waiting 3's~2m!" ) );// system("killall pump"); system("ps | grep sbin/pump > /etc/tmp/pump"); fp=fopen("/etc/tmp/pump","r"); while(!feof(fp)) { fgets(tmpStr,128,fp); srhStr.sprintf("%s",tmpStr); if(srhStr.findRev("grep sbin/pump",-15,FALSE)==-1) pumpCount++; } fclose(fp);// qWarning("%i %i",pumpCount,pMB->result()); if(pumpCount<2)system( "sbin/pump&" ); pMB=new QMessageBox(tr("DHCP"),tr("PSUH cancel TO exit"),QMessageBox::Warning,QMessageBox::Cancel,QMessageBox::NoButton,QMessageBox::NoButton,this,0,FALSE); pMB->exec(); timeCounter=0; tid=startTimer(500);}void setMac::setupClicked(){ QString tempString; int curItem; curItem = interfaceNumCombo->currentItem(); curItem = ifnum - 1 - curItem; if(MACDhcp->getIfName(curItem).stripWhiteSpace ()!=QString("eth0")||!modifyEnable) { dhcpPushButton->setDisabled( TRUE ); setupPushButton->setDisabled( TRUE ); QMessageBox::information( this, tr( "Setup" ), tr( "Only can modify eth0!" ) ); return; } tempString = MACAddressLineEdit->text(); MACDhcp->setMacAddress( curItem, tempString ); tempString = IPAddressLineEdit->text(); IPAddressLineEdit->setText( MACDhcp->setIPAddress( curItem, tempString ) ); tempString = netMaskLineEdit->text(); netMaskLineEdit->setText( MACDhcp->setNetMask( curItem, tempString ) ); tempString = gatewayLineEdit->text(); gatewayLineEdit->setText( MACDhcp->setGateway( tempString ) ); tempString = DNSLineEdit->text(); DNSLineEdit->setText( MACDhcp->setDNS( tempString ) ); QMessageBox::information( this, tr( "modify" ), tr( "modify finished!" ) ); dirty=TRUE;}void setMac::timerEvent( QTimerEvent *e ){ int curItem, item,pumpCount=0; item = interfaceNumCombo->currentItem(); curItem = ifnum - 1 - item; timeCounter++; pMB->setActiveWindow(); pMB->raise(); if(timeCounter<=30) { system("ps | grep sbin/pump > /etc/tmp/pump"); fp=fopen("/etc/tmp/pump","r"); while(!feof(fp)) { fgets(tmpStr,128,fp); srhStr.sprintf("%s",tmpStr); if(srhStr.findRev("grep sbin/pump",-15,FALSE)==-1) pumpCount++; } fclose(fp); qWarning("%i %i",pumpCount,pMB->result()); if(pumpCount<2||pMB->result()==QMessageBox::Cancel) { killTimer(tid); if(pMB->result()==QMessageBox::Cancel) system("killall pump"); MACAddressLineEdit->setText( MACDhcp->getMacAddress(curItem) ); IPAddressLineEdit->setText( MACDhcp->getIPAddress(curItem) ); netMaskLineEdit->setText( MACDhcp->getNetMask(curItem) ); gatewayLineEdit->setText( MACDhcp->getGateway() ); DNSLineEdit->setText( MACDhcp->getDNS() ); dhcpPushButton->setDisabled( FALSE ); setupPushButton->setDisabled( FALSE ); dhcpPushButton->setText( tr( "DHCP")); if(pMB->result()==QMessageBox::Cancel) QMessageBox::warning( this, tr( "DHCP" ), tr( "User cancel!!" ) ); else QMessageBox::warning( this, tr( "DHCP" ), tr( "DHCP successed!!" ) ); delete pMB; return; } if(timeCounter%4==0) dhcpPushButton->setText( tr( "\\" )); if(timeCounter%4==1) dhcpPushButton->setText( tr( "|" )); if(timeCounter%4==2) dhcpPushButton->setText( tr( "/" )); if(timeCounter%4==3) dhcpPushButton->setText( tr( "-" )); } else { system("killall pump"); delete pMB; killTimer(tid); QMessageBox::warning( this, tr( "DHCP" ), tr( "DHCP failure!!" ) ); system("ifconfig eth0 192.168.0.120 up"); MACAddressLineEdit->setText( MACDhcp->getMacAddress(curItem) ); IPAddressLineEdit->setText( MACDhcp->getIPAddress(curItem) ); netMaskLineEdit->setText( MACDhcp->getNetMask(curItem) ); gatewayLineEdit->setText( MACDhcp->getGateway() ); DNSLineEdit->setText( MACDhcp->getDNS() ); dhcpPushButton->setDisabled( FALSE ); setupPushButton->setDisabled( FALSE ); dhcpPushButton->setText( tr( "DHCP" ) ); } return;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -