Ignore:
Timestamp:
Apr 16, 2013 7:59:40 AM (12 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.1-release, 9.2-release, releng/10.0, releng/10.0.1
Children:
470af24a
Parents:
17235d6
Message:

Update edit IP dialog to understand many of the new options in warden
backend

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/warden-gui/dialogEditIP.cpp

    r0cfe72f r8901c47  
    1414#include <QProcess> 
    1515#include <QString> 
     16#include <QFile> 
    1617#include <QFileDialog> 
    1718#include <QMessageBox> 
     
    2223#include "dialogEditIP.h" 
    2324 
    24 void dialogEditIP::programInit(QString jIP, QStringList IPs) 
    25 { 
    26   wardenIP = jIP; 
    27   listIP->clear(); 
    28   for ( int i=0; i<IPs.count() ; i++) 
    29      if ( ! IPs.at(i).isEmpty() ) 
    30         listIP->addItem(IPs.at(i)); 
     25void dialogEditIP::programInit(QString name) 
     26{ 
     27  JailDir = pcbsd::Utils::getValFromPCConf("/usr/local/etc/warden.conf", "JDIR"); 
     28  jailName = name; 
     29  QString tmp; 
     30 
     31  // Lets start loading IP addresses 
     32  QFile file( JailDir + "/." + jailName + ".meta/ipv4" ); 
     33  if ( file.exists() && file.open( QIODevice::ReadOnly ) ) { 
     34     QTextStream stream( &file ); tmp=""; tmp = stream.readLine(); 
     35     lineIP->setText(tmp); 
     36     if ( ! tmp.isEmpty() ) 
     37        checkIPv4->setChecked(true); 
     38     file.close(); 
     39  } 
     40 
     41  file.setFileName( JailDir + "/." + jailName + ".meta/bridge-ipv4" ); 
     42  if ( file.exists() && file.open( QIODevice::ReadOnly ) ) { 
     43     QTextStream stream( &file ); tmp=""; tmp = stream.readLine(); 
     44     lineIPBridge->setText(tmp); 
     45     if ( ! tmp.isEmpty() ) 
     46        checkIPv4Bridge->setChecked(true); 
     47     file.close(); 
     48  } 
     49 
     50  file.setFileName( JailDir + "/." + jailName + ".meta/defaultrouter-ipv4" ); 
     51  if ( file.exists() && file.open( QIODevice::ReadOnly ) ) { 
     52     QTextStream stream( &file ); tmp=""; tmp = stream.readLine(); 
     53     lineIPRouter->setText(tmp); 
     54     if ( ! tmp.isEmpty() ) 
     55        checkIPv4Router->setChecked(true); 
     56     file.close(); 
     57  } 
     58 
     59  file.setFileName( JailDir + "/." + jailName + ".meta/ipv6" ); 
     60  if ( file.exists() && file.open( QIODevice::ReadOnly ) ) { 
     61     QTextStream stream( &file ); tmp=""; tmp = stream.readLine(); 
     62     lineIP6->setText(tmp); 
     63     if ( ! tmp.isEmpty() ) 
     64        checkIPv6->setChecked(true); 
     65     file.close(); 
     66  } 
     67 
     68  file.setFileName( JailDir + "/." + jailName + ".meta/bridge-ipv6" ); 
     69  if ( file.exists() && file.open( QIODevice::ReadOnly ) ) { 
     70     QTextStream stream( &file ); tmp=""; tmp = stream.readLine(); 
     71     lineIP6Bridge->setText(tmp); 
     72     if ( ! tmp.isEmpty() ) 
     73        checkIPv6Bridge->setChecked(true); 
     74     file.close(); 
     75  } 
     76 
     77  file.setFileName( JailDir + "/." + jailName + ".meta/defaultrouter-ipv6" ); 
     78  if ( file.exists() && file.open( QIODevice::ReadOnly ) ) { 
     79     QTextStream stream( &file ); tmp=""; tmp = stream.readLine(); 
     80     lineIP6Router->setText(tmp); 
     81     if ( ! tmp.isEmpty() ) 
     82        checkIPv6Router->setChecked(true); 
     83     file.close(); 
     84  } 
    3185 
    3286  // Our buttons / slots 
     87  connect( checkIPv4, SIGNAL( clicked() ), this, SLOT( slotCheckChecks() ) ); 
     88  connect( checkIPv4Bridge, SIGNAL( clicked() ), this, SLOT( slotCheckChecks() ) ); 
     89  connect( checkIPv4Router, SIGNAL( clicked() ), this, SLOT( slotCheckChecks() ) ); 
     90  connect( checkIPv6, SIGNAL( clicked() ), this, SLOT( slotCheckChecks() ) ); 
     91  connect( checkIPv6Bridge, SIGNAL( clicked() ), this, SLOT( slotCheckChecks() ) ); 
     92  connect( checkIPv6Router, SIGNAL( clicked() ), this, SLOT( slotCheckChecks() ) ); 
     93 
    3394  connect( pushSave, SIGNAL( clicked() ), this, SLOT( slotSaveClicked() ) ); 
    3495  connect( pushCancel, SIGNAL( clicked() ), this, SLOT( slotCancelClicked() ) ); 
    3596  connect( pushAdd, SIGNAL( clicked() ), this, SLOT( slotAddClicked() ) ); 
    3697  connect( pushRemove, SIGNAL( clicked() ), this, SLOT( slotRemClicked() ) ); 
     98 
     99  slotCheckChecks(); 
     100} 
     101 
     102void dialogEditIP::slotCheckChecks() 
     103{ 
     104  lineIP->setEnabled(checkIPv4->isChecked()); 
     105  lineIPBridge->setEnabled(checkIPv4Bridge->isChecked()); 
     106  lineIPRouter->setEnabled(checkIPv4Router->isChecked()); 
     107  lineIP6->setEnabled(checkIPv6->isChecked()); 
     108  lineIP6Bridge->setEnabled(checkIPv6Bridge->isChecked()); 
     109  lineIP6Router->setEnabled(checkIPv6Router->isChecked()); 
     110 
    37111} 
    38112 
     
    44118bool dialogEditIP::sanityCheckSettings() 
    45119{ 
     120  if ( checkIPv4->isChecked() && ! checkValidBlock(lineIP->text(), QString("IPv4")) ) { 
     121        QMessageBox::critical(this, tr("Warden"), tr("Invalid IPv4 address!"), QMessageBox::Ok, QMessageBox::Ok); 
     122        return false; 
     123  } 
     124  if ( checkIPv4Bridge->isChecked() && ! checkValidBlock(lineIPBridge->text(), QString("IPv4")) ) { 
     125        QMessageBox::critical(this, tr("Warden"), tr("Invalid IPv4 bridge address!"), QMessageBox::Ok, QMessageBox::Ok); 
     126        return false; 
     127  } 
     128  if ( checkIPv4Router->isChecked() && ! checkValidBlock(lineIPRouter->text(), QString("IPv4")) ) { 
     129        QMessageBox::critical(this, tr("Warden"), tr("Invalid IPv4 router address!"), QMessageBox::Ok, QMessageBox::Ok); 
     130        return false; 
     131  } 
     132  if ( checkIPv6->isChecked() && ! checkValidBlock(lineIP6->text(), QString("IPv6")) ) { 
     133        QMessageBox::critical(this, tr("Warden"), tr("Invalid IPv6 address!"), QMessageBox::Ok, QMessageBox::Ok); 
     134        return false; 
     135  } 
     136  if ( checkIPv6Bridge->isChecked() && ! checkValidBlock(lineIP6Bridge->text(), QString("IPv6")) ) { 
     137        QMessageBox::critical(this, tr("Warden"), tr("Invalid IPv6 bridge address!"), QMessageBox::Ok, QMessageBox::Ok); 
     138        return false; 
     139  } 
     140  if ( checkIPv6Router->isChecked() && ! checkValidBlock(lineIP6Router->text(), QString("IPv6")) ) { 
     141        QMessageBox::critical(this, tr("Warden"), tr("Invalid IPv6 router address!"), QMessageBox::Ok, QMessageBox::Ok); 
     142        return false; 
     143  } 
     144 
    46145  return true; 
    47146} 
     
    59158void dialogEditIP::saveSettings() 
    60159{ 
     160  QString tmp; 
     161  QFile file; 
     162 
     163  // Start saving settings 
     164  file.setFileName( JailDir + "/." + jailName + ".meta/ipv4" ); 
     165  if ( checkIPv4->isChecked() ) { 
     166    if ( file.open( QIODevice::WriteOnly ) ) { 
     167       QTextStream stream( &file ); tmp = lineIP->text(); 
     168       if (tmp.indexOf("/") == -1) 
     169         tmp = tmp + "/24";  
     170       stream << tmp; 
     171       file.close(); 
     172    } 
     173  } else { 
     174    file.remove(); 
     175  } 
     176 
     177  file.setFileName( JailDir + "/." + jailName + ".meta/bridge-ipv4" ); 
     178  if ( checkIPv4Bridge->isChecked() ) { 
     179    if ( file.open( QIODevice::WriteOnly ) ) { 
     180       QTextStream stream( &file ); tmp = lineIPBridge->text(); 
     181       if (tmp.indexOf("/") == -1) 
     182         tmp = tmp + "/24";  
     183       stream << tmp; 
     184       file.close(); 
     185    } 
     186  } else { 
     187    file.remove(); 
     188  } 
     189 
     190  file.setFileName( JailDir + "/." + jailName + ".meta/defaultrouter-ipv4" ); 
     191  if ( checkIPv4Router->isChecked() ) { 
     192    if ( file.open( QIODevice::WriteOnly ) ) { 
     193       QTextStream stream( &file ); tmp = lineIPRouter->text(); 
     194       if (tmp.indexOf("/") == -1) 
     195         tmp = tmp + "/24";  
     196       stream << tmp; 
     197       file.close(); 
     198    } 
     199  } else { 
     200    file.remove(); 
     201  } 
     202 
     203  file.setFileName( JailDir + "/." + jailName + ".meta/ipv6" ); 
     204  if ( checkIPv6->isChecked() ) { 
     205    if ( file.open( QIODevice::WriteOnly ) ) { 
     206       QTextStream stream( &file ); tmp = lineIP6->text(); 
     207       if (tmp.indexOf("/") == -1) 
     208         tmp = tmp + "/64";  
     209       stream << tmp; 
     210       file.close(); 
     211    } 
     212  } else { 
     213    file.remove(); 
     214  } 
     215 
     216  file.setFileName( JailDir + "/." + jailName + ".meta/bridge-ipv6" ); 
     217  if ( checkIPv6Bridge->isChecked() ) { 
     218    if ( file.open( QIODevice::WriteOnly ) ) { 
     219       QTextStream stream( &file ); tmp = lineIP6Bridge->text(); 
     220       if (tmp.indexOf("/") == -1) 
     221         tmp = tmp + "/64";  
     222       stream << tmp; 
     223       file.close(); 
     224    } 
     225  } else { 
     226    file.remove(); 
     227  } 
     228 
     229  file.setFileName( JailDir + "/." + jailName + ".meta/defaultrouter-ipv6" ); 
     230  if ( checkIPv6Router->isChecked() ) { 
     231    if ( file.open( QIODevice::WriteOnly ) ) { 
     232       QTextStream stream( &file ); tmp = lineIP6Router->text(); 
     233       if (tmp.indexOf("/") == -1) 
     234         tmp = tmp + "/64";  
     235       stream << tmp; 
     236       file.close(); 
     237    } 
     238  } else { 
     239    file.remove(); 
     240  } 
     241 
     242        /* 
    61243        QStringList IPs; 
    62244        for ( int i=0; i<listIP->count() ; i++) 
     
    76258                QCoreApplication::processEvents(); 
    77259        } 
     260        */ 
    78261         
    79262} 
     
    96279} 
    97280 
     281bool dialogEditIP::checkValidBlock(QString block, QString type) 
     282{ 
     283   QString url = block; 
     284 
     285   // Strip off the /24 part 
     286   if ( url.indexOf("/") != -1 ) 
     287      url.truncate(url.indexOf("/")); 
     288 
     289   if ( type == "IPv4" ) { 
     290      if ( ! pcbsd::Utils::validateIPV4(url) ) 
     291        return false; 
     292 
     293   } else { 
     294      if ( ! pcbsd::Utils::validateIPV6(url) ) 
     295        return false; 
     296 
     297   } 
     298 
     299   return true; 
     300} 
     301 
    98302void dialogEditIP::slotRemClicked() 
    99303{ 
Note: See TracChangeset for help on using the changeset viewer.