-rw-r--r-- | noncore/net/wellenreiter/gui/main.cpp | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/noncore/net/wellenreiter/gui/main.cpp b/noncore/net/wellenreiter/gui/main.cpp index 702a7cc..d32b362 100644 --- a/noncore/net/wellenreiter/gui/main.cpp +++ b/noncore/net/wellenreiter/gui/main.cpp | |||
@@ -1,130 +1,106 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | 2 | ** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Opie Environment. | 4 | ** This file is part of Opie Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | **********************************************************************/ | 14 | **********************************************************************/ |
15 | 15 | ||
16 | #include "mainwindow.h" | 16 | #include "mainwindow.h" |
17 | #ifdef QWS | 17 | #ifdef QWS |
18 | #include <opie2/oapplication.h> | 18 | #include <opie2/oapplication.h> |
19 | #include <opie2/oprocess.h> | ||
19 | #else | 20 | #else |
20 | #include <qapplication.h> | 21 | #include <qapplication.h> |
21 | #endif | 22 | #endif |
22 | 23 | ||
23 | #include <qmessagebox.h> | 24 | #include <qmessagebox.h> |
24 | #include <qstringlist.h> | 25 | #include <qstringlist.h> |
25 | 26 | ||
26 | // ==> OProcess | ||
27 | #include <qdir.h> | ||
28 | #include <qfileinfo.h> | ||
29 | #include <qregexp.h> | ||
30 | #include <qtextstream.h> | ||
31 | |||
32 | #include <errno.h> | 27 | #include <errno.h> |
33 | #include <signal.h> | 28 | #include <signal.h> |
34 | #include <string.h> | 29 | #include <string.h> |
35 | #include <unistd.h> | 30 | #include <unistd.h> |
36 | 31 | ||
37 | int main( int argc, char **argv ) | 32 | int main( int argc, char **argv ) |
38 | { | 33 | { |
39 | #ifdef QWS | 34 | #ifdef QWS |
40 | OApplication a( argc, argv, "Wellenreiter II" ); | 35 | OApplication a( argc, argv, "Wellenreiter II" ); |
41 | #else | 36 | #else |
42 | QApplication a( argc, argv ); | 37 | QApplication a( argc, argv ); |
43 | #endif | 38 | #endif |
44 | WellenreiterMainWindow* w = new WellenreiterMainWindow(); | 39 | WellenreiterMainWindow* w = new WellenreiterMainWindow(); |
45 | #ifdef QWS | 40 | #ifdef QWS |
46 | a.showMainWidget( w ); | 41 | a.showMainWidget( w ); |
47 | #else | 42 | #else |
48 | a.setMainWidget( w ); | 43 | a.setMainWidget( w ); |
49 | w->setCaption( "Wellenreiter II" ); | 44 | w->setCaption( "Wellenreiter II" ); |
50 | w->show(); | 45 | w->show(); |
51 | #endif | 46 | #endif |
52 | 47 | ||
53 | a.processEvents(); // show the window before doing the safety checks | 48 | a.processEvents(); // show the window before doing the safety checks |
54 | int result = -1; | 49 | int result = -1; |
55 | static int killed = false; | 50 | static int killed = false; |
56 | 51 | ||
57 | bool check = true; | 52 | bool check = true; |
58 | for ( int i = 1; i < argc; ++i ) | 53 | for ( int i = 1; i < argc; ++i ) |
59 | { | 54 | { |
60 | if ( !strcmp( "-nocheck", argv[i] ) ) | 55 | if ( !strcmp( "-nocheck", argv[i] ) ) |
61 | { | 56 | { |
62 | qDebug( "-nocheck found" ); | 57 | qDebug( "-nocheck found" ); |
63 | check = false; | 58 | check = false; |
64 | break; | 59 | break; |
65 | } | 60 | } |
66 | } | 61 | } |
67 | 62 | ||
68 | if ( check ) | 63 | if ( check ) |
69 | { | 64 | { |
70 | // root check | 65 | // root check |
71 | if ( getuid() ) | 66 | if ( getuid() ) |
72 | { | 67 | { |
73 | qWarning( QObject::tr( "Wellenreiter: trying to run as non-root!" ) ); | 68 | qWarning( QObject::tr( "Wellenreiter: trying to run as non-root!" ) ); |
74 | result = QMessageBox::warning( w, " - Wellenreiter II - (non-root)", QObject::tr( "You have started Wellenreiter II\n" | 69 | result = QMessageBox::warning( w, " - Wellenreiter II - (non-root)", QObject::tr( "You have started Wellenreiter II\n" |
75 | "as non-root. You will have\nonly limited functionality.\nProceed anyway?" ), | 70 | "as non-root. You will have\nonly limited functionality.\nProceed anyway?" ), |
76 | QMessageBox::Yes, QMessageBox::No ); | 71 | QMessageBox::Yes, QMessageBox::No ); |
77 | if ( result == QMessageBox::No ) return -1; | 72 | if ( result == QMessageBox::No ) return -1; |
78 | } | 73 | } |
79 | 74 | ||
80 | // dhcp check - NOT HERE! This really belongs as a static member to OProcess | 75 | if ( OProcess::processPID( "dhcpc" ) ) |
81 | // and I want to call it like that: if ( OProcess::isRunning( QString& ) ) ... | ||
82 | |||
83 | QString line; | ||
84 | QDir d = QDir( "/proc" ); | ||
85 | QStringList dirs = d.entryList( QDir::Dirs ); | ||
86 | QStringList::Iterator it; | ||
87 | for ( it = dirs.begin(); it != dirs.end(); ++it ) | ||
88 | { | ||
89 | //qDebug( "next entry: %s", (const char*) *it ); | ||
90 | QFile file( "/proc/"+*it+"/cmdline" ); | ||
91 | file.open( IO_ReadOnly ); | ||
92 | if ( !file.isOpen() ) continue; | ||
93 | QTextStream t( &file ); | ||
94 | line = t.readLine(); | ||
95 | //qDebug( "cmdline = %s", (const char*) line ); | ||
96 | if ( line.contains( "dhcp" ) ) break; | ||
97 | } | ||
98 | if ( line.contains( "dhcp" ) ) | ||
99 | { | 76 | { |
100 | qWarning( "Wellenreiter: found dhcp process #%d", (*it).toInt() ); | ||
101 | result = QMessageBox::warning( w, " - Wellenreiter II - (dhcp)", QObject::tr( "You have a dhcp client running.\n" | 77 | result = QMessageBox::warning( w, " - Wellenreiter II - (dhcp)", QObject::tr( "You have a dhcp client running.\n" |
102 | "This can severly limit scanning!\nShould I kill it for you?" ), | 78 | "This can severly limit scanning!\nShould I kill it for you?" ), |
103 | QMessageBox::Yes, QMessageBox::No ); | 79 | QMessageBox::Yes, QMessageBox::No ); |
104 | if ( result == QMessageBox::Yes ) | 80 | if ( result == QMessageBox::Yes ) |
105 | { | 81 | { |
106 | if ( -1 == ::kill( (*it).toInt(), SIGTERM ) ) | 82 | if ( -1 == ::kill( OProcess::processPID( "dhcpc" ), SIGTERM ) ) |
107 | qWarning( "Wellenreiter: can't kill process #%d (%s)", result, strerror( errno ) ); | 83 | qWarning( "Wellenreiter: can't kill process #%d (%s)", result, strerror( errno ) ); |
108 | else | 84 | else |
109 | killed = true; | 85 | killed = true; |
110 | } | 86 | } |
111 | } | 87 | } |
112 | } | 88 | } |
113 | 89 | ||
114 | a.exec(); | 90 | a.exec(); |
115 | 91 | ||
116 | if ( check ) | 92 | if ( check ) |
117 | { | 93 | { |
118 | 94 | ||
119 | if ( killed ) | 95 | if ( killed ) |
120 | { | 96 | { |
121 | result = QMessageBox::warning( w, " - Wellenreiter II - (dhcp)", QObject::tr( "Restart your dhcp client?" ), QMessageBox::Yes, QMessageBox::No ); | 97 | result = QMessageBox::warning( w, " - Wellenreiter II - (dhcp)", QObject::tr( "Restart your dhcp client?" ), QMessageBox::Yes, QMessageBox::No ); |
122 | if ( result == QMessageBox::Yes ) | 98 | if ( result == QMessageBox::Yes ) |
123 | { | 99 | { |
124 | ::system( QString().sprintf( "dhclient &; udhcpcd &; dhcpcd &" ) ); | 100 | ::system( QString().sprintf( "dhclient &; udhcpcd &; dhcpcd &" ) ); |
125 | } | 101 | } |
126 | } | 102 | } |
127 | 103 | ||
128 | delete w; | 104 | delete w; |
129 | } | 105 | } |
130 | return 0; | 106 | return 0; |