Changeset 1495e28


Ignore:
Timestamp:
02/20/15 11:26:32 (3 months ago)
Author:
Ken Moore <ken@…>
Branches:
master, enter/10, releng/10.1.2
Children:
5382a43a
Parents:
f3e7668 (diff), 60afce5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of github.com:pcbsd/pcbsd

Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • src-sh/libsh/functions.sh

    r5fe164d r49868ee  
    753753 
    754754     # Now get the root of the disk 
    755      disk=`echo $disk | sed 's|p[1-9]$||g' | sed "s|s[1-9][a-z]||g"` 
     755     disk=`echo $disk | sed 's|p[1-9]$||g' | sed 's|p[1-9][0-9]$||g' | sed "s|s[1-9][a-z]$||g" | sed "s|s[1-9]]$||g"` 
    756756     if [ ! -e "/dev/${disk}" ] ; then continue; fi 
    757757 
  • src-sh/pcbsd-utils/pc-extractoverlay/pc-extractoverlay

    rb80f78d r95f29bb  
    173173    # If the default firewall rules are missing, create them now 
    174174    if [ ! -e "/etc/ipfw.rules" ] ; then 
    175        /local/share/pcbsd/scripts/reset-firewall 
     175       /usr/local/share/pcbsd/scripts/reset-firewall 
     176    fi 
     177 
     178    # Make sure freebsd-update ignores rc.conf.pcbsd 
     179    grep -q "rc.conf.pcbsd" /etc/freebsd-update.conf 
     180    if [ $? -ne 0 ] ; then 
     181      cp /usr/local/share/pcbsd/conf/freebsd-update.conf /etc/freebsd-update.conf 
    176182    fi 
    177183 
  • src-sh/pcbsd-utils/pc-updatemanager/pc-updatemanager

    rb487d03 ra1eac71  
    10741074  echo_log "Verifying / fetching packages for ${SYSBASE} - $SYSBASEFILENAME" 
    10751075  echo "Verifying / fetching packages for ${SYSBASE} - $SYSBASEFILENAME" >> ${PKGUPGRADELOG} 
    1076   ${PKG_CMD} ${PKG_CFLAG} ${PKG_FLAG} fetch -U -d -y ${SYSBASE} > 2>&1 | tee /tmp/.pkgOut.$$ 
     1076  ${PKG_CMD} ${PKG_CFLAG} ${PKG_FLAG} fetch -U -d -y ${SYSBASE} 2>&1 | tee /tmp/.pkgOut.$$ 
    10771077  if [ $? -ne 0 ] ; then 
    10781078     cat /tmp/.pkgOut.$$ >> $LOGOUT 
  • src-sh/pcbsd-utils/personacrypt/personacrypt

    rde72bf1 r041f3d2  
    8484   if [ $? -eq 0 ] ; then continue; fi 
    8585   # Make sure this isn't already a PersonaCrypt device 
    86    glabel status | grep 'label/p_' | grep -qw "${disk}" 
     86   glabel status | grep 'gpt/p_' | grep -qw "${disk}" 
    8787   if [ $? -eq 0 ] ; then continue; fi 
    8888 
     
    9494 
    9595list_available() { 
    96  glabel status | grep -v "Name" | grep "label/p_" | while read line 
     96 glabel status | grep -v "Name" | grep "gpt/p_" | while read line 
    9797 do 
    9898   # See if this is a personacrypt label 
    99    user=`echo $line | sed 's|label/p_||g' | awk '{print $1}'` 
     99   user=`echo $line | sed 's|gpt/p_||g' | awk '{print $1}'` 
    100100   if [ ! -e "${PCDBDIR}/${user}.key" ] ; then continue; fi 
    101101   disk="`echo $line | awk '{print $3}'`" 
     
    140140 # Create the new partition scheme on the disk 
    141141 rc_halt "gpart create -s gpt ${DISK}" 
    142  rc_halt "gpart add -a 4k -t freebsd-zfs ${DISK}" 
     142 rc_halt "gpart add -a 4k -t freebsd-zfs -l ${LABEL} ${DISK}" 
    143143   
    144  # Label the disk 
    145  rc_halt "glabel label ${LABEL} ${DISK}" 
    146  
    147144 # Create the 2nd part of the crypto key 
    148145 echo "Creating disk-key..." 
     
    204201 
    205202 # Get the disk name for the alias 
    206  DISK="`glabel status | grep -w label/p_${UNAME} | awk '{print $3}'`" 
     203 DISK="`glabel status | grep -w gpt/p_${UNAME} | awk '{print $3}'`" 
    207204 if [ -z "$DISK" ] ; then rm ${PASSFILE} ; exit_err "No PersonaCrypt device for user: $UNAME" ; fi 
    208205 if [ ! -e "${PCDBDIR}/${UNAME}.key" ] ; then rm ${PASSFILE} ; exit_err "No saved key for ${UNAME}" ; fi 
    209206 
    210  geli attach -k ${PCDBDIR}/${UNAME}.key -j ${PASSFILE} ${DISK}p1 
     207 geli attach -k ${PCDBDIR}/${UNAME}.key -j ${PASSFILE} ${DISK} 
    211208 if [ $? -ne 0 ] ; then 
    212209   rm ${PASSFILE} 
  • src-sh/pcbsd-utils/port-files/pkg-plist

    r2042a72 r5ac3237  
    9999share/pc-sysinstall/doc/help-start-autoinstall 
    100100share/pcbsd/bin/pkg 
     101share/pcbsd/conf/freebsd-update.conf 
    101102share/pcbsd/conf/pcbsd-mirrors 
    102103share/pcbsd/conf/pbi-mirror 
  • src-webui/appweb/dispatcher

    rdc59eb6 r60afce5  
    5454 
    5555  # Create the random string we will pass to authenticated clients 
    56   # This changes after each restart of the appcafe daemon 
     56  # This changes after a login, and used to invalidate a previous login 
    5757  touch ${QDISID} 
    5858  chmod 600 ${QDISID} 
    59   dd if=/dev/urandom count=1024 bs=1k | env LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 > ${QDISID} 
     59  dd if=/dev/urandom count=1024 bs=1k | env LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 128 | head -n 1 > ${QDISID} 
    6060 
    6161} 
     
    372372  if [ $? -ne 0 ] ; then exit 1; fi 
    373373 
     374  dd if=/dev/urandom count=1024 bs=1k | env LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1 > ${QDISID} 
     375  chmod 600 ${QDISID} 
    374376  cat $QDISID >&1 
    375377  exit 0 
  • src-webui/appweb/dispatcher-localauth

    rd51a185 r60afce5  
    1313  if [ "`id -u`" != "0" ] ; then exit 1; fi 
    1414 
     15  dd if=/dev/urandom count=1024 bs=1k | env LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1 > ${QDISID} 
     16  chmod 600 ${QDISID} 
    1517  cat $QDISID >&1 
    1618  exit 0 
  • src-qt5/pc-pfmanager/main.cpp

    r517d390 rf3e7668  
    3333    PFManagerDlg wnd; 
    3434 
    35     wnd.load(); 
     35    //wnd.load(); 
    3636 
    3737    //app.setMainWidget(&wnd); 
  • src-qt5/pc-pfmanager/mainwindow.ui

    r3667cdb rf3e7668  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>407</width> 
    10     <height>302</height> 
     9    <width>329</width> 
     10    <height>289</height> 
    1111   </rect> 
    1212  </property> 
     
    1818    <widget class="QTabWidget" name="tabWidget4"> 
    1919     <property name="currentIndex"> 
    20       <number>1</number> 
     20      <number>0</number> 
    2121     </property> 
    2222     <widget class="QWidget" name="tab"> 
     
    4141        </spacer> 
    4242       </item> 
     43       <item row="1" column="0"> 
     44        <widget class="QGroupBox" name="groupBox_2"> 
     45         <property name="title"> 
     46          <string>Firewall</string> 
     47         </property> 
     48         <layout class="QGridLayout" name="gridLayout_2"> 
     49          <item row="0" column="0"> 
     50           <widget class="QPushButton" name="pbStart"> 
     51            <property name="text"> 
     52             <string>&amp;Start</string> 
     53            </property> 
     54           </widget> 
     55          </item> 
     56          <item row="0" column="1"> 
     57           <widget class="QPushButton" name="pbStop"> 
     58            <property name="text"> 
     59             <string>Sto&amp;p</string> 
     60            </property> 
     61           </widget> 
     62          </item> 
     63          <item row="0" column="2"> 
     64           <widget class="QPushButton" name="pbRestart"> 
     65            <property name="text"> 
     66             <string>Re&amp;start</string> 
     67            </property> 
     68           </widget> 
     69          </item> 
     70          <item row="0" column="3"> 
     71           <spacer name="spacer7"> 
     72            <property name="orientation"> 
     73             <enum>Qt::Horizontal</enum> 
     74            </property> 
     75            <property name="sizeType"> 
     76             <enum>QSizePolicy::Expanding</enum> 
     77            </property> 
     78            <property name="sizeHint" stdset="0"> 
     79             <size> 
     80              <width>102</width> 
     81              <height>21</height> 
     82             </size> 
     83            </property> 
     84           </spacer> 
     85          </item> 
     86         </layout> 
     87        </widget> 
     88       </item> 
     89       <item row="0" column="0"> 
     90        <widget class="QGroupBox" name="groupBox_3"> 
     91         <property name="title"> 
     92          <string>General settings</string> 
     93         </property> 
     94         <layout class="QGridLayout" name="gridLayout_3"> 
     95          <item row="0" column="1"> 
     96           <spacer name="spacer8"> 
     97            <property name="orientation"> 
     98             <enum>Qt::Horizontal</enum> 
     99            </property> 
     100            <property name="sizeType"> 
     101             <enum>QSizePolicy::Expanding</enum> 
     102            </property> 
     103            <property name="sizeHint" stdset="0"> 
     104             <size> 
     105              <width>156</width> 
     106              <height>21</height> 
     107             </size> 
     108            </property> 
     109           </spacer> 
     110          </item> 
     111          <item row="0" column="0"> 
     112           <widget class="QCheckBox" name="cbEnable"> 
     113            <property name="text"> 
     114             <string>Enable Firewall on startup</string> 
     115            </property> 
     116           </widget> 
     117          </item> 
     118         </layout> 
     119        </widget> 
     120       </item> 
    43121       <item row="2" column="0"> 
    44122        <widget class="QGroupBox" name="groupBox_1"> 
     
    73151        </widget> 
    74152       </item> 
    75        <item row="1" column="0"> 
    76         <widget class="QGroupBox" name="groupBox_2"> 
    77          <property name="title"> 
    78           <string>Firewall</string> 
    79          </property> 
    80          <layout class="QGridLayout" name="gridLayout_2"> 
    81           <item row="0" column="0"> 
    82            <widget class="QPushButton" name="pbStart"> 
    83             <property name="text"> 
    84              <string>&amp;Start</string> 
    85             </property> 
    86            </widget> 
    87           </item> 
    88           <item row="0" column="1"> 
    89            <widget class="QPushButton" name="pbStop"> 
    90             <property name="text"> 
    91              <string>Sto&amp;p</string> 
    92             </property> 
    93            </widget> 
    94           </item> 
    95           <item row="0" column="2"> 
    96            <widget class="QPushButton" name="pbRestart"> 
    97             <property name="text"> 
    98              <string>Re&amp;start</string> 
    99             </property> 
    100            </widget> 
    101           </item> 
    102           <item row="0" column="3"> 
    103            <spacer name="spacer7"> 
    104             <property name="orientation"> 
    105              <enum>Qt::Horizontal</enum> 
    106             </property> 
    107             <property name="sizeType"> 
    108              <enum>QSizePolicy::Expanding</enum> 
    109             </property> 
    110             <property name="sizeHint" stdset="0"> 
    111              <size> 
    112               <width>102</width> 
    113               <height>21</height> 
    114              </size> 
    115             </property> 
    116            </spacer> 
    117           </item> 
    118          </layout> 
    119         </widget> 
    120        </item> 
    121        <item row="0" column="0"> 
    122         <widget class="QGroupBox" name="groupBox_3"> 
    123          <property name="title"> 
    124           <string>General settings</string> 
    125          </property> 
    126          <layout class="QGridLayout" name="gridLayout_3"> 
    127           <item row="0" column="1"> 
    128            <spacer name="spacer8"> 
    129             <property name="orientation"> 
    130              <enum>Qt::Horizontal</enum> 
    131             </property> 
    132             <property name="sizeType"> 
    133              <enum>QSizePolicy::Expanding</enum> 
    134             </property> 
    135             <property name="sizeHint" stdset="0"> 
    136              <size> 
    137               <width>156</width> 
    138               <height>21</height> 
    139              </size> 
    140             </property> 
    141            </spacer> 
    142           </item> 
    143           <item row="0" column="0"> 
    144            <widget class="QCheckBox" name="cbEnable"> 
    145             <property name="text"> 
    146              <string>Enable Firewall on startup</string> 
    147             </property> 
    148            </widget> 
    149           </item> 
    150          </layout> 
    151         </widget> 
    152        </item> 
    153153      </layout> 
    154154     </widget> 
    155155     <widget class="QWidget" name="tab_2"> 
    156156      <attribute name="title"> 
    157        <string>Exceptions</string> 
     157       <string>Open Ports</string> 
    158158      </attribute> 
    159       <layout class="QGridLayout"> 
    160        <item row="2" column="0"> 
    161         <widget class="QPushButton" name="pbAdd"> 
    162          <property name="text"> 
    163           <string>&amp;Add entry</string> 
    164          </property> 
    165         </widget> 
    166        </item> 
    167        <item row="2" column="1"> 
    168         <widget class="QPushButton" name="pbEdit"> 
    169          <property name="text"> 
    170           <string>&amp;Edit entry</string> 
    171          </property> 
    172         </widget> 
    173        </item> 
    174        <item row="2" column="2"> 
    175         <spacer name="spacer6_2"> 
    176          <property name="orientation"> 
    177           <enum>Qt::Horizontal</enum> 
    178          </property> 
    179          <property name="sizeType"> 
    180           <enum>QSizePolicy::Fixed</enum> 
    181          </property> 
    182          <property name="sizeHint" stdset="0"> 
    183           <size> 
    184            <width>5</width> 
    185            <height>21</height> 
    186           </size> 
    187          </property> 
    188         </spacer> 
    189        </item> 
    190        <item row="2" column="3"> 
    191         <widget class="QPushButton" name="pbDelete"> 
    192          <property name="text"> 
    193           <string>&amp;Delete entry</string> 
    194          </property> 
    195         </widget> 
    196        </item> 
    197        <item row="2" column="4"> 
    198         <spacer name="spacer5"> 
    199          <property name="orientation"> 
    200           <enum>Qt::Horizontal</enum> 
    201          </property> 
    202          <property name="sizeType"> 
    203           <enum>QSizePolicy::Expanding</enum> 
    204          </property> 
    205          <property name="sizeHint" stdset="0"> 
    206           <size> 
    207            <width>100</width> 
    208            <height>21</height> 
    209           </size> 
    210          </property> 
    211         </spacer> 
    212        </item> 
    213        <item row="1" column="0" colspan="5"> 
    214         <widget class="QTreeWidget" name="lvExceptions"> 
     159      <layout class="QVBoxLayout" name="verticalLayout"> 
     160       <item> 
     161        <widget class="QTreeWidget" name="tree_openports"> 
     162         <property name="selectionMode"> 
     163          <enum>QAbstractItemView::MultiSelection</enum> 
     164         </property> 
     165         <property name="sortingEnabled"> 
     166          <bool>true</bool> 
     167         </property> 
    215168         <property name="allColumnsShowFocus"> 
    216169          <bool>true</bool> 
     
    220173         </attribute> 
    221174         <attribute name="headerDefaultSectionSize"> 
    222           <number>65</number> 
     175          <number>100</number> 
    223176         </attribute> 
    224177         <attribute name="headerHighlightSections"> 
     
    226179         </attribute> 
    227180         <attribute name="headerShowSortIndicator" stdset="0"> 
    228           <bool>false</bool> 
     181          <bool>true</bool> 
    229182         </attribute> 
    230183         <attribute name="headerStretchLastSection"> 
    231184          <bool>true</bool> 
    232185         </attribute> 
    233          <column> 
    234           <property name="text"> 
    235            <string>Service</string> 
    236           </property> 
    237          </column> 
    238186         <column> 
    239187          <property name="text"> 
     
    243191         <column> 
    244192          <property name="text"> 
    245            <string>Policy</string> 
     193           <string>Type</string> 
    246194          </property> 
    247195         </column> 
    248          <column> 
    249           <property name="text"> 
    250            <string>Interface</string> 
    251           </property> 
    252          </column> 
    253         </widget> 
     196        </widget> 
     197       </item> 
     198       <item> 
     199        <layout class="QHBoxLayout" name="horizontalLayout_2"> 
     200         <item> 
     201          <widget class="QPushButton" name="pbDelete"> 
     202           <property name="text"> 
     203            <string>Close Selected Ports</string> 
     204           </property> 
     205          </widget> 
     206         </item> 
     207         <item> 
     208          <spacer name="spacer5"> 
     209           <property name="orientation"> 
     210            <enum>Qt::Horizontal</enum> 
     211           </property> 
     212           <property name="sizeType"> 
     213            <enum>QSizePolicy::Expanding</enum> 
     214           </property> 
     215           <property name="sizeHint" stdset="0"> 
     216            <size> 
     217             <width>100</width> 
     218             <height>21</height> 
     219            </size> 
     220           </property> 
     221          </spacer> 
     222         </item> 
     223        </layout> 
     224       </item> 
     225       <item> 
     226        <layout class="QHBoxLayout" name="horizontalLayout"> 
     227         <item> 
     228          <widget class="QPushButton" name="pbAdd"> 
     229           <property name="text"> 
     230            <string>Open Port</string> 
     231           </property> 
     232          </widget> 
     233         </item> 
     234         <item> 
     235          <widget class="QComboBox" name="combo_porttype"> 
     236           <item> 
     237            <property name="text"> 
     238             <string notr="true">tcp</string> 
     239            </property> 
     240           </item> 
     241           <item> 
     242            <property name="text"> 
     243             <string notr="true">udp</string> 
     244            </property> 
     245           </item> 
     246          </widget> 
     247         </item> 
     248         <item> 
     249          <widget class="QSpinBox" name="spin_portnum"> 
     250           <property name="minimum"> 
     251            <number>1</number> 
     252           </property> 
     253           <property name="maximum"> 
     254            <number>65535</number> 
     255           </property> 
     256          </widget> 
     257         </item> 
     258         <item> 
     259          <spacer name="horizontalSpacer"> 
     260           <property name="orientation"> 
     261            <enum>Qt::Horizontal</enum> 
     262           </property> 
     263           <property name="sizeHint" stdset="0"> 
     264            <size> 
     265             <width>40</width> 
     266             <height>20</height> 
     267            </size> 
     268           </property> 
     269          </spacer> 
     270         </item> 
     271        </layout> 
    254272       </item> 
    255273      </layout> 
  • src-qt5/pc-pfmanager/pc-pfmanager.pro

    r673f7cf rf3e7668  
    66INCLUDEPATH     += . config ../libpcbsd/utils/ 
    77 
    8 HEADERS += config/packetfilter.hpp \ 
    9         config/rcconfig.hpp \ 
    10         pfmanagerdlg.hpp \ 
    11         config/rule.hpp \ 
    12         config/services.hpp \ 
    13         config/interfaces.hpp \ 
    14         pfaddlg.hpp \ 
    15         taggedlistviewitem.hpp 
     8HEADERS += pfmanagerdlg.hpp 
    169 
    17 SOURCES += config/packetfilter.cpp \ 
    18         config/rcconfig.cpp \ 
    19         pfmanagerdlg.cpp \ 
    20         config/rule.cpp \ 
    21         config/services.cpp \ 
    22         config/interfaces.cpp \ 
    23         pfaddlg.cpp \ 
    24         taggedlistviewitem.cpp \ 
     10SOURCES += pfmanagerdlg.cpp \ 
    2511        main.cpp 
    2612 
    27 FORMS   = mainwindow.ui \ 
    28         adddlg.ui 
     13FORMS   = mainwindow.ui 
    2914 
    3015RESOURCES += pfmanager.qrc 
  • src-qt5/pc-pfmanager/pfmanagerdlg.cpp

    r3667cdb rf3e7668  
    11 
    22#include "pfmanagerdlg.hpp" 
    3 #include "rule.hpp" 
    4 #include "packetfilter.hpp" 
    5 #include "interfaces.hpp" 
    6 #include "pfaddlg.hpp" 
    7 #include "taggedlistviewitem.hpp" 
     3//#include "rule.hpp" 
     4//#include "packetfilter.hpp" 
     5//#include "interfaces.hpp" 
     6//#include "pfaddlg.hpp" 
     7//#include "taggedlistviewitem.hpp" 
    88#include <qcheckbox.h> 
    99#include <qmessagebox.h> 
     
    1111#include <QTreeWidgetItem> 
    1212#include <pcbsd-utils.h> 
     13#include <QProcess> 
     14#include <QFile> 
     15#include <QTextStream> 
    1316 
    1417PFManagerDlg::~PFManagerDlg(void) 
     
    2124    bool checked = cbEnable->isChecked(); 
    2225 
    23     if (checked != _firewall.isEnabled()) 
     26    if (firewallRunning) 
    2427    { 
    2528        // Just modify something, if our state has changed 
    2629        if ( checked ) 
    2730        { 
    28             _firewall.enable(); 
    29             pcbsd::Utils::setConfFileValue( "/etc/rc.conf", "pf_enable", "pf_enable=\"YES\"", -1); 
    30             system("/etc/rc.d/pf start"); 
     31            //_firewall.enable(); 
     32            pcbsd::Utils::setConfFileValue( "/etc/rc.conf", "ipfw_enable", "ipfw_enable=\"YES\"", -1); 
     33            system("/etc/rc.d/ipfw start"); 
    3134        } 
    3235        else 
     
    3942                                       QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 
    4043            { 
    41                 system("/etc/rc.d/pf stop"); 
    42                 pcbsd::Utils::setConfFileValue( "/etc/rc.conf", "pf_enable", "pf_enable=\"NO\"", -1); 
     44                system("/etc/rc.d/ipfw stop"); 
     45                pcbsd::Utils::setConfFileValue( "/etc/rc.conf", "ipfw_enable", "ipfw_enable=\"NO\"", -1); 
    4346            } else { 
    4447                cbEnable->setChecked(true); 
     
    5053void PFManagerDlg::startClicked ( void ) 
    5154{ 
    52     _firewall.start(); 
     55    system("/etc/rc.d/ipfw start"); 
    5356    refreshStatus(); 
    5457} 
     
    5659void PFManagerDlg::stopClicked ( void ) 
    5760{ 
    58     _firewall.stop(); 
     61    system("/etc/rc.d/ipfw stop"); 
    5962    refreshStatus(); 
    6063} 
     
    6265void PFManagerDlg::restartClicked ( void ) 
    6366{ 
    64     _firewall.restart(); 
     67    system("/etc/rc.d/ipfw restart"); 
    6568    refreshStatus(); 
    66     if (_firewall.isRunning()) 
     69    if (firewallRunning) 
    6770      QMessageBox::information(this, tr("Success"), tr("Restarted successfuly!")); 
    6871    else 
     
    7073} 
    7174 
    72 // WARNING: Make sure you only store TaggedListViewItem 
    73 // 
    74 void PFManagerDlg::refreshList ( void ) 
     75void PFManagerDlg::addClicked ( void ) 
    7576{ 
    76     lvExceptions->clear(); 
    77         
    78     for ( size_t i = 0; i < _firewall.rules().size(); i++ ) 
    79     { 
    80         TaggedListViewItem *item = 0; 
    81         const rule& srv = _firewall.rules()[i]; 
    82          
    83         item = new TaggedListViewItem(lvExceptions); 
    84          
    85         item->setText(0, srv.name()); 
    86         item->setText(1, srv.port()); 
    87         item->setText(2, srv.policy()); 
    88         item->setText(3, srv.device()); 
    89         // Save the item we had, so we can savely 
    90         // return it later 
    91         item->tag(i); 
    92     } 
     77  //Get the options listed and save them into the file/data 
     78  QString type = combo_porttype->currentText(); 
     79  QString port = spin_portnum->cleanText(); 
     80  openports << port+"::::"+type; 
     81  tree_openports->addTopLevelItem( new QTreeWidgetItem(QStringList() << port << type) ); 
     82  SaveOpenPorts(); 
    9383} 
    9484 
    95 void PFManagerDlg::addClicked ( void ) 
    96 { 
    97     PFAddDlg *dlg = new PFAddDlg(); 
    98     dlg->init(); 
    99      
    100     if ( dlg->exec() == QDialog::Accepted ) 
    101     { 
    102         _firewall.add_rule(* dlg->rules()); 
    103         // Save content 
    104         _firewall.save(); 
    105         // Refresh the list 
    106         refreshList(); 
    107     } 
    108 } 
    109  
    110 void PFManagerDlg::editClicked ( void ) 
    111 { 
    112     QTreeWidgetItem *cur = 0; 
    113      
    114     cur = lvExceptions->currentItem(); 
    115     if (cur != 0) 
    116     { 
    117         PFAddDlg *dlg = new PFAddDlg(); 
    118         dlg->init(); 
    119         size_t tag = 0; 
    120         rule *rule = 0; 
    121          
    122         // A little bit hackerish though 
    123         // But way more efficient than searching the list of the proper 
    124         // item. 
    125         tag = reinterpret_cast<TaggedListViewItem*>(cur)->tag(); 
    126         rule = &_firewall.rules()[tag]; 
    127         // Show 
    128         dlg->rules(rule); 
    129         if ( dlg->exec() == QDialog::Accepted ) 
    130         { // Refresh the list 
    131             _firewall.save(); 
    132             refreshList(); 
    133         } 
    134     } 
    135 } 
    13685 
    13786void PFManagerDlg::deleteClicked ( void ) 
    13887{ 
    139     QTreeWidgetItem *cur = 0; 
    140      
    141     cur = lvExceptions->currentItem(); 
    142     if (cur != 0) 
    143     { 
    144         size_t tag = 0; 
    145          
    146         tag = reinterpret_cast<TaggedListViewItem*>(cur)->tag(); 
    147         // Delete this item  
    148         _firewall.rules().erase(_firewall.rules().begin()+tag);    
    149         // And repaint the list 
    150         refreshList(); 
    151         // Save the file 
    152         _firewall.save(); 
     88    QList<QTreeWidgetItem*> sel = tree_openports->selectedItems(); 
     89    for(int i=0; i<sel.length(); i++){ 
     90      openports.removeAll( sel[i]->text(0)+"::::"+sel[i]->text(1) ); 
    15391    } 
     92    //Now update the UI list (need to be careful about multiple TreeWidgetItems per row - safer this way 
     93    tree_openports->clear(); 
     94    for(int i=0; i<openports.length(); i++){ 
     95      tree_openports->addTopLevelItem( new QTreeWidgetItem( openports[i].split("::::") ) ); 
     96    } 
     97    //Now save the list to file 
     98    SaveOpenPorts(); 
    15499} 
    155100 
    156101void PFManagerDlg::restoreClicked ( void ) 
    157102{ 
    158     _firewall.restore(); 
     103    //move the files out of the way 
     104    system("mv /etc/ipfw.rules /etc/ipfw.rules.previous"); 
     105    system("mv /etc/ipfw.openports /etc/ipfw.openports.previous"); 
     106    //refresh the rules files 
     107    system("sh /usr/local/share/pcbsd/scripts/reset-firewall"); 
     108    //Restart the firewall rules 
     109    if(firewallRunning){ system("sh /etc/ipfw.rules"); } 
     110 
    159111    QMessageBox::information(this, tr("Restored."), tr("Config file successfuly restored.")); 
    160 } 
    161  
    162 void PFManagerDlg::save ( void ) 
    163 { 
    164 } 
    165  
    166 void PFManagerDlg::load ( void ) 
    167 { 
    168     // Make a backup 
    169     _firewall.backup(); 
    170     (void)interfaces::getInstance(); 
    171     // load config file 
    172     _firewall.init(); 
    173     // Check if it is enabled 
    174     cbEnable->setChecked(_firewall.isEnabled()); 
    175     // Fill list with services 
    176     refreshList(); 
    177 }            
     112}     
    178113 
    179114void PFManagerDlg::refreshStatus(void) 
    180115{ 
    181     if (_firewall.isRunning()) 
     116    //First check if the firewall is running 
     117    firewallRunning = false; 
     118    QProcess proc; 
     119    proc.start("sysctl net.inet.ip.fw.enable"); 
     120    if(proc.waitForFinished() || proc.canReadLine()){ 
     121        if (proc.canReadLine()){ 
     122            QString line = proc.readLine(); 
     123            if(line.section(":",1,1).simplified().toInt() ==1) { firewallRunning = true; } 
     124        } 
     125    } 
     126    //Enable/disable the UI elements 
     127    if (firewallRunning) 
    182128    { 
    183129        pbStart->setEnabled(false); 
     
    191137        pbRestart->setEnabled(false); 
    192138    } 
     139    UpdatePortButtons(); 
    193140} 
     141 
     142void PFManagerDlg::UpdatePortButtons(){ 
     143  pbDelete->setEnabled( !tree_openports->selectedItems().isEmpty() ); 
     144  pbAdd->setEnabled( !openports.contains( combo_porttype->currentText()+"::::"+spin_portnum->cleanText() ) );    
     145} 
     146 
     147void PFManagerDlg::LoadOpenPorts(){ 
     148  openports.clear(); 
     149  tree_openports->clear(); 
     150  QFile file("/etc/ipfw.openports"); 
     151  if( file.open(QIODevice::ReadOnly) ){ 
     152    QTextStream in(&file); 
     153    while( !in.atEnd() ){ 
     154      QString line = in.readLine(); 
     155      if(line.startsWith("#") || line.simplified().isEmpty()){ continue; } 
     156      //File format: "<type> <port>" (nice and simple) 
     157      openports << line.section(" ",1,1)+"::::"+line.section(" ",0,0); 
     158    } 
     159    file.close(); 
     160  } 
     161  openports.sort(); //order them in ascending port order 
     162  //Now update the UI list 
     163  for(int i=0; i<openports.length(); i++){ 
     164    tree_openports->addTopLevelItem( new QTreeWidgetItem( openports[i].split("::::") ) ); 
     165  } 
     166} 
     167 
     168void PFManagerDlg::SaveOpenPorts(){ 
     169  //Convert to file format 
     170  openports.sort(); //make sure they are still sorted by port 
     171  QStringList fileout; 
     172  for(int i=0; i<openports.length(); i++){ 
     173    fileout << openports[i].section("::::",1,1)+" "+openports[i].section("::::",0,0); 
     174  } 
     175  //Save to file 
     176  QFile file("/etc/ipfw.openports"); 
     177  if( file.open(QIODevice::WriteOnly | QIODevice::Truncate) ){ 
     178    QTextStream out(&file); 
     179    out << fileout.join("\n"); 
     180    file.close(); 
     181  } 
     182  //Load new rules immediately 
     183  if(firewallRunning){ system("sh /etc/ipfw.rules"); } 
     184} 
  • src-qt5/pc-pfmanager/pfmanagerdlg.hpp

    r3667cdb rf3e7668  
    66#include "ui_mainwindow.h" 
    77#include <qdialog.h> 
    8 #include "packetfilter.hpp" 
     8#include <pcbsd-utils.h> 
     9//#include "packetfilter.hpp" 
    910 
    1011class PFManagerDlg : public QDialog, private Ui::MainDialog 
     
    1314 
    1415public: 
    15  
    1616    PFManagerDlg () : QDialog() 
    1717    { 
    1818       setupUi(this); 
     19    cbEnable->setChecked( "YES" == pcbsd::Utils::getConfFileValue( "/etc/rc.conf", "ipfw_enable")); 
    1920    // Enabled 
    2021    connect(cbEnable, SIGNAL(clicked()), 
     
    3334                         this, SLOT(addClicked())); 
    3435    // Edit a current one 
    35     QPushButton::connect(pbEdit, SIGNAL(clicked()), 
    36                          this, SLOT(editClicked())); 
     36    /*QPushButton::connect(pbEdit, SIGNAL(clicked()), 
     37                         this, SLOT(editClicked()));*/ 
    3738    // Delete an entry 
    3839    QPushButton::connect(pbDelete, SIGNAL(clicked()), 
     
    4243                         this, SLOT(restoreClicked())); 
    4344 
     45    connect(tree_openports, SIGNAL(itemSelectionChanged()), this, SLOT(UpdatePortButtons()) ); 
     46    connect(spin_portnum, SIGNAL(valueChanged(int)), this, SLOT(UpdatePortButtons()) ); 
     47    connect(combo_porttype, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdatePortButtons()) ); 
     48     
    4449    //Show if pf is running or not 
     50    LoadOpenPorts(); 
    4551    refreshStatus(); 
    46  
    4752    } 
    48  
    49     // Create the _firewall object 
    50     PacketFilter _firewall; 
    5153 
    5254    ~PFManagerDlg ( void ); 
    5355 
     56    bool firewallRunning; 
     57     
    5458public slots: 
    5559 
     
    5963    void restartClicked ( void ); 
    6064    void addClicked ( void ); 
    61     void editClicked ( void ); 
     65    //void editClicked ( void ); 
    6266    void deleteClicked ( void ); 
    6367    void restoreClicked ( void ); 
    6468 
    65     void save ( void ); 
    66     void load ( void ); 
     69    void UpdatePortButtons(); 
     70    //void save ( void ); 
     71    //void load ( void ); 
    6772     
    68     void refreshList ( void ); 
     73    //void refreshList ( void ); 
    6974    void refreshStatus(void); 
     75 
     76private: 
     77    QStringList openports; 
     78 
     79    void LoadOpenPorts(); 
     80    void SaveOpenPorts(); 
     81 
    7082}; 
    7183 
Note: See TracChangeset for help on using the changeset viewer.