author | zecke <zecke> | 2004-04-06 08:00:49 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-04-06 08:00:49 (UTC) |
commit | 1b7592f11a2499c3e7d6652dde1ee15fb661fce2 (patch) (unidiff) | |
tree | fc9998d8037473f7bfb27274f60fbcdb26cc9d50 | |
parent | 9aeac7cefc3c8baf32944e7275b57e0a0cde1515 (diff) | |
download | opie-1b7592f11a2499c3e7d6652dde1ee15fb661fce2.zip opie-1b7592f11a2499c3e7d6652dde1ee15fb661fce2.tar.gz opie-1b7592f11a2499c3e7d6652dde1ee15fb661fce2.tar.bz2 |
one include of odebug.h a day keeps my anger away... :}
Add odebug.h so that it compiles
4 files changed, 7 insertions, 0 deletions
diff --git a/noncore/settings/networksettings/interfaces/interface.cpp b/noncore/settings/networksettings/interfaces/interface.cpp index d2b106a..46f3e19 100644 --- a/noncore/settings/networksettings/interfaces/interface.cpp +++ b/noncore/settings/networksettings/interfaces/interface.cpp | |||
@@ -1,198 +1,201 @@ | |||
1 | /** | 1 | /** |
2 | * $Author$ | 2 | * $Author$ |
3 | * $Date$ | 3 | * $Date$ |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include "interface.h" | 6 | #include "interface.h" |
7 | |||
8 | #include <opie2/odebug.h> | ||
9 | |||
7 | #include <qdatetime.h> | 10 | #include <qdatetime.h> |
8 | #include <qfile.h> | 11 | #include <qfile.h> |
9 | #include <qdir.h> | 12 | #include <qdir.h> |
10 | #include <qfileinfo.h> | 13 | #include <qfileinfo.h> |
11 | #include <qtextstream.h> | 14 | #include <qtextstream.h> |
12 | 15 | ||
13 | #define IFCONFIG "/sbin/ifconfig" | 16 | #define IFCONFIG "/sbin/ifconfig" |
14 | #define DHCP_INFO_DIR "/etc/dhcpc" | 17 | #define DHCP_INFO_DIR "/etc/dhcpc" |
15 | 18 | ||
16 | #include <stdio.h> | 19 | #include <stdio.h> |
17 | #include <stdlib.h> | 20 | #include <stdlib.h> |
18 | 21 | ||
19 | Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){ | 22 | Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){ |
20 | refresh(); | 23 | refresh(); |
21 | } | 24 | } |
22 | 25 | ||
23 | /** | 26 | /** |
24 | * Set status | 27 | * Set status |
25 | * @param newStatus - the new status | 28 | * @param newStatus - the new status |
26 | * emit updateInterface | 29 | * emit updateInterface |
27 | */ | 30 | */ |
28 | void Interface::setStatus(bool newStatus){ | 31 | void Interface::setStatus(bool newStatus){ |
29 | if(status != newStatus){ | 32 | if(status != newStatus){ |
30 | status = newStatus; | 33 | status = newStatus; |
31 | refresh(); | 34 | refresh(); |
32 | } | 35 | } |
33 | }; | 36 | }; |
34 | 37 | ||
35 | /** | 38 | /** |
36 | * Set if attached or not (802.11 card pulled out for example) | 39 | * Set if attached or not (802.11 card pulled out for example) |
37 | * @param isAttached - if attached | 40 | * @param isAttached - if attached |
38 | * emit updateInterface | 41 | * emit updateInterface |
39 | */ | 42 | */ |
40 | void Interface::setAttached(bool isAttached){ | 43 | void Interface::setAttached(bool isAttached){ |
41 | attached = isAttached; | 44 | attached = isAttached; |
42 | emit(updateInterface(this)); | 45 | emit(updateInterface(this)); |
43 | }; | 46 | }; |
44 | 47 | ||
45 | /** | 48 | /** |
46 | * Set Hardware name | 49 | * Set Hardware name |
47 | * @param name - the new name | 50 | * @param name - the new name |
48 | * emit updateInterface | 51 | * emit updateInterface |
49 | */ | 52 | */ |
50 | void Interface::setHardwareName(const QString &name){ | 53 | void Interface::setHardwareName(const QString &name){ |
51 | hardwareName = name; | 54 | hardwareName = name; |
52 | emit(updateInterface(this)); | 55 | emit(updateInterface(this)); |
53 | }; | 56 | }; |
54 | 57 | ||
55 | /** | 58 | /** |
56 | * Set Module owner | 59 | * Set Module owner |
57 | * @param owner - the new owner | 60 | * @param owner - the new owner |
58 | * emit updateInterface | 61 | * emit updateInterface |
59 | */ | 62 | */ |
60 | void Interface::setModuleOwner(Module *owner){ | 63 | void Interface::setModuleOwner(Module *owner){ |
61 | moduleOwner = owner; | 64 | moduleOwner = owner; |
62 | emit(updateInterface(this)); | 65 | emit(updateInterface(this)); |
63 | }; | 66 | }; |
64 | 67 | ||
65 | 68 | ||
66 | /** | 69 | /** |
67 | * Try to start the interface. | 70 | * Try to start the interface. |
68 | */ | 71 | */ |
69 | void Interface::start(){ | 72 | void Interface::start(){ |
70 | // check to see if we are already running. | 73 | // check to see if we are already running. |
71 | if(true == status){ | 74 | if(true == status){ |
72 | emit (updateMessage("Unable to start interface,\n already started")); | 75 | emit (updateMessage("Unable to start interface,\n already started")); |
73 | return; | 76 | return; |
74 | } | 77 | } |
75 | 78 | ||
76 | int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); | 79 | int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); |
77 | // See if it was successful... | 80 | // See if it was successful... |
78 | if(ret != 0){ | 81 | if(ret != 0){ |
79 | emit (updateMessage("Starting interface failed")); | 82 | emit (updateMessage("Starting interface failed")); |
80 | return; | 83 | return; |
81 | } | 84 | } |
82 | 85 | ||
83 | status = true; | 86 | status = true; |
84 | refresh(); | 87 | refresh(); |
85 | emit (updateMessage("Start successful")); | 88 | emit (updateMessage("Start successful")); |
86 | } | 89 | } |
87 | 90 | ||
88 | /** | 91 | /** |
89 | * Try to stop the interface. | 92 | * Try to stop the interface. |
90 | */ | 93 | */ |
91 | void Interface::stop(){ | 94 | void Interface::stop(){ |
92 | // check to see if we are already stopped. | 95 | // check to see if we are already stopped. |
93 | if(false == status){ | 96 | if(false == status){ |
94 | emit (updateMessage("Unable to stop interface,\n already stopped")); | 97 | emit (updateMessage("Unable to stop interface,\n already stopped")); |
95 | return; | 98 | return; |
96 | } | 99 | } |
97 | 100 | ||
98 | int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); | 101 | int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); |
99 | if(ret != 0){ | 102 | if(ret != 0){ |
100 | emit (updateMessage("Stopping interface failed")); | 103 | emit (updateMessage("Stopping interface failed")); |
101 | return; | 104 | return; |
102 | } | 105 | } |
103 | 106 | ||
104 | status = false; | 107 | status = false; |
105 | refresh(); | 108 | refresh(); |
106 | emit (updateMessage("Stop successful")); | 109 | emit (updateMessage("Stop successful")); |
107 | } | 110 | } |
108 | 111 | ||
109 | /** | 112 | /** |
110 | * Try to restart the interface. | 113 | * Try to restart the interface. |
111 | */ | 114 | */ |
112 | void Interface::restart(){ | 115 | void Interface::restart(){ |
113 | stop(); | 116 | stop(); |
114 | start(); | 117 | start(); |
115 | } | 118 | } |
116 | 119 | ||
117 | /** | 120 | /** |
118 | * Try to refresh the information about the interface. | 121 | * Try to refresh the information about the interface. |
119 | * First call ifconfig, then check the dhcp-info file | 122 | * First call ifconfig, then check the dhcp-info file |
120 | * @return bool true if successful. | 123 | * @return bool true if successful. |
121 | */ | 124 | */ |
122 | bool Interface::refresh(){ | 125 | bool Interface::refresh(){ |
123 | // See if we are up. | 126 | // See if we are up. |
124 | if(status == false){ | 127 | if(status == false){ |
125 | macAddress = ""; | 128 | macAddress = ""; |
126 | ip = "0.0.0.0"; | 129 | ip = "0.0.0.0"; |
127 | subnetMask = "0.0.0.0"; | 130 | subnetMask = "0.0.0.0"; |
128 | broadcast = ""; | 131 | broadcast = ""; |
129 | dhcp = false; | 132 | dhcp = false; |
130 | dhcpServerIp = ""; | 133 | dhcpServerIp = ""; |
131 | leaseObtained = ""; | 134 | leaseObtained = ""; |
132 | leaseExpires = ""; | 135 | leaseExpires = ""; |
133 | emit(updateInterface(this)); | 136 | emit(updateInterface(this)); |
134 | return true; | 137 | return true; |
135 | } | 138 | } |
136 | 139 | ||
137 | QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name()); | 140 | QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name()); |
138 | int ret = system(QString("LANG=C %1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1()); | 141 | int ret = system(QString("LANG=C %1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1()); |
139 | if(ret != 0){ | 142 | if(ret != 0){ |
140 | odebug << QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1() << oendl; | 143 | odebug << QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1() << oendl; |
141 | return false; | 144 | return false; |
142 | } | 145 | } |
143 | 146 | ||
144 | QFile file(fileName); | 147 | QFile file(fileName); |
145 | if (!file.open(IO_ReadOnly)){ | 148 | if (!file.open(IO_ReadOnly)){ |
146 | odebug << QString("Interface: Can't open file: %1").arg(fileName).latin1() << oendl; | 149 | odebug << QString("Interface: Can't open file: %1").arg(fileName).latin1() << oendl; |
147 | return false; | 150 | return false; |
148 | } | 151 | } |
149 | 152 | ||
150 | // Set to the defaults | 153 | // Set to the defaults |
151 | macAddress = ""; | 154 | macAddress = ""; |
152 | ip = "0.0.0.0"; | 155 | ip = "0.0.0.0"; |
153 | subnetMask = "0.0.0.0"; | 156 | subnetMask = "0.0.0.0"; |
154 | broadcast = ""; | 157 | broadcast = ""; |
155 | 158 | ||
156 | QTextStream stream( &file ); | 159 | QTextStream stream( &file ); |
157 | QString line; | 160 | QString line; |
158 | while ( !stream.eof() ) { | 161 | while ( !stream.eof() ) { |
159 | line = stream.readLine(); | 162 | line = stream.readLine(); |
160 | if(line.contains("HWaddr")){ | 163 | if(line.contains("HWaddr")){ |
161 | int mac = line.find("HWaddr"); | 164 | int mac = line.find("HWaddr"); |
162 | macAddress = line.mid(mac+7, line.length()); | 165 | macAddress = line.mid(mac+7, line.length()); |
163 | } | 166 | } |
164 | if(line.contains("inet addr")){ | 167 | if(line.contains("inet addr")){ |
165 | int ipl = line.find("inet addr"); | 168 | int ipl = line.find("inet addr"); |
166 | int space = line.find(" ", ipl+10); | 169 | int space = line.find(" ", ipl+10); |
167 | ip = line.mid(ipl+10, space-ipl-10); | 170 | ip = line.mid(ipl+10, space-ipl-10); |
168 | } | 171 | } |
169 | if(line.contains("Mask")){ | 172 | if(line.contains("Mask")){ |
170 | int mask = line.find("Mask"); | 173 | int mask = line.find("Mask"); |
171 | subnetMask = line.mid(mask+5, line.length()); | 174 | subnetMask = line.mid(mask+5, line.length()); |
172 | } | 175 | } |
173 | if(line.contains("Bcast")){ | 176 | if(line.contains("Bcast")){ |
174 | int mask = line.find("Bcast"); | 177 | int mask = line.find("Bcast"); |
175 | int space = line.find(" ", mask+6); | 178 | int space = line.find(" ", mask+6); |
176 | broadcast = line.mid(mask+6, space-mask-6); | 179 | broadcast = line.mid(mask+6, space-mask-6); |
177 | } | 180 | } |
178 | } | 181 | } |
179 | file.close(); | 182 | file.close(); |
180 | QFile::remove(fileName); | 183 | QFile::remove(fileName); |
181 | 184 | ||
182 | // DHCP TESTING | 185 | // DHCP TESTING |
183 | // reset DHCP info | 186 | // reset DHCP info |
184 | dhcpServerIp = ""; | 187 | dhcpServerIp = ""; |
185 | leaseObtained = ""; | 188 | leaseObtained = ""; |
186 | leaseExpires = ""; | 189 | leaseExpires = ""; |
187 | dhcp = false; | 190 | dhcp = false; |
188 | 191 | ||
189 | QString dhcpDirectory(DHCP_INFO_DIR); | 192 | QString dhcpDirectory(DHCP_INFO_DIR); |
190 | QDir d(dhcpDirectory); | 193 | QDir d(dhcpDirectory); |
191 | if(!d.exists(dhcpDirectory)) | 194 | if(!d.exists(dhcpDirectory)) |
192 | dhcpDirectory = "/var/run"; | 195 | dhcpDirectory = "/var/run"; |
193 | 196 | ||
194 | // See if we have | 197 | // See if we have |
195 | QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name())); | 198 | QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name())); |
196 | // If there is no DHCP information then exit now with no errors. | 199 | // If there is no DHCP information then exit now with no errors. |
197 | if(!QFile::exists(dhcpFile)){ | 200 | if(!QFile::exists(dhcpFile)){ |
198 | emit(updateInterface(this)); | 201 | emit(updateInterface(this)); |
diff --git a/noncore/settings/networksettings/interfaces/interfaces.cpp b/noncore/settings/networksettings/interfaces/interfaces.cpp index e283926..5ce4b58 100644 --- a/noncore/settings/networksettings/interfaces/interfaces.cpp +++ b/noncore/settings/networksettings/interfaces/interfaces.cpp | |||
@@ -1,194 +1,196 @@ | |||
1 | #include "interfaces.h" | 1 | #include "interfaces.h" |
2 | 2 | ||
3 | #include <opie2/odebug.h> | ||
4 | |||
3 | #include <qcheckbox.h> | 5 | #include <qcheckbox.h> |
4 | #include <qfile.h> | 6 | #include <qfile.h> |
5 | #include <qtextstream.h> | 7 | #include <qtextstream.h> |
6 | #include <qregexp.h> | 8 | #include <qregexp.h> |
7 | 9 | ||
8 | // The three stanza's | 10 | // The three stanza's |
9 | #define AUTO "auto" | 11 | #define AUTO "auto" |
10 | #define IFACE "iface" | 12 | #define IFACE "iface" |
11 | #define MAPPING "mapping" | 13 | #define MAPPING "mapping" |
12 | 14 | ||
13 | /** | 15 | /** |
14 | * Constructor. Reads in the interfaces file and then split the file up by | 16 | * Constructor. Reads in the interfaces file and then split the file up by |
15 | * the \n for interfaces variable. | 17 | * the \n for interfaces variable. |
16 | * @param useInterfacesFile if an interface file other then the default is | 18 | * @param useInterfacesFile if an interface file other then the default is |
17 | * desired to be used it should be passed in. | 19 | * desired to be used it should be passed in. |
18 | */ | 20 | */ |
19 | Interfaces::Interfaces(QString useInterfacesFile){ | 21 | Interfaces::Interfaces(QString useInterfacesFile){ |
20 | acceptedFamily.append(INTERFACES_FAMILY_INET); | 22 | acceptedFamily.append(INTERFACES_FAMILY_INET); |
21 | acceptedFamily.append(INTERFACES_FAMILY_IPX); | 23 | acceptedFamily.append(INTERFACES_FAMILY_IPX); |
22 | acceptedFamily.append(INTERFACES_FAMILY_INET6); | 24 | acceptedFamily.append(INTERFACES_FAMILY_INET6); |
23 | 25 | ||
24 | interfacesFile = useInterfacesFile; | 26 | interfacesFile = useInterfacesFile; |
25 | QFile file(interfacesFile); | 27 | QFile file(interfacesFile); |
26 | if (!file.open(IO_ReadOnly)){ | 28 | if (!file.open(IO_ReadOnly)){ |
27 | odebug << "Interfaces: Can't open file: " << interfacesFile.latin1() << " for reading." << oendl; | 29 | odebug << "Interfaces: Can't open file: " << interfacesFile.latin1() << " for reading." << oendl; |
28 | currentIface = interfaces.end(); | 30 | currentIface = interfaces.end(); |
29 | currentMapping = interfaces.end(); | 31 | currentMapping = interfaces.end(); |
30 | return; | 32 | return; |
31 | } | 33 | } |
32 | QTextStream stream( &file ); | 34 | QTextStream stream( &file ); |
33 | QString line; | 35 | QString line; |
34 | while ( !stream.eof() ) { | 36 | while ( !stream.eof() ) { |
35 | line += stream.readLine(); | 37 | line += stream.readLine(); |
36 | line += "\n"; | 38 | line += "\n"; |
37 | } | 39 | } |
38 | file.close(); | 40 | file.close(); |
39 | interfaces = QStringList::split("\n", line, true); | 41 | interfaces = QStringList::split("\n", line, true); |
40 | 42 | ||
41 | currentIface = interfaces.end(); | 43 | currentIface = interfaces.end(); |
42 | currentMapping = interfaces.end(); | 44 | currentMapping = interfaces.end(); |
43 | } | 45 | } |
44 | 46 | ||
45 | 47 | ||
46 | /** | 48 | /** |
47 | * Get a list of all interfaces in the interface file. Useful for | 49 | * Get a list of all interfaces in the interface file. Useful for |
48 | * hardware that is not currently connected such as an 802.11b card | 50 | * hardware that is not currently connected such as an 802.11b card |
49 | * not plugged in, but configured for when it is plugged in. | 51 | * not plugged in, but configured for when it is plugged in. |
50 | * @return Return string list of interfaces. | 52 | * @return Return string list of interfaces. |
51 | **/ | 53 | **/ |
52 | QStringList Interfaces::getInterfaceList(){ | 54 | QStringList Interfaces::getInterfaceList(){ |
53 | QStringList list; | 55 | QStringList list; |
54 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 56 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
55 | QString line = (*it).simplifyWhiteSpace(); | 57 | QString line = (*it).simplifyWhiteSpace(); |
56 | if(line.contains(IFACE) && line.at(0) != '#'){ | 58 | if(line.contains(IFACE) && line.at(0) != '#'){ |
57 | line = line.mid(QString(IFACE).length() +1, line.length()); | 59 | line = line.mid(QString(IFACE).length() +1, line.length()); |
58 | line = line.simplifyWhiteSpace(); | 60 | line = line.simplifyWhiteSpace(); |
59 | int findSpace = line.find(" "); | 61 | int findSpace = line.find(" "); |
60 | if( findSpace >= 0){ | 62 | if( findSpace >= 0){ |
61 | line = line.mid(0, findSpace); | 63 | line = line.mid(0, findSpace); |
62 | list.append(line); | 64 | list.append(line); |
63 | } | 65 | } |
64 | } | 66 | } |
65 | } | 67 | } |
66 | return list; | 68 | return list; |
67 | } | 69 | } |
68 | 70 | ||
69 | /** | 71 | /** |
70 | * Find out if interface is in an "auto" group or not. | 72 | * Find out if interface is in an "auto" group or not. |
71 | * Report any duplicates such as eth0 being in two differnt auto's | 73 | * Report any duplicates such as eth0 being in two differnt auto's |
72 | * @param interface interface to check to see if it is on or not. | 74 | * @param interface interface to check to see if it is on or not. |
73 | * @return true is interface is in auto | 75 | * @return true is interface is in auto |
74 | */ | 76 | */ |
75 | bool Interfaces::isAuto(const QString &interface) const { | 77 | bool Interfaces::isAuto(const QString &interface) const { |
76 | QStringList autoLines = interfaces.grep(QRegExp(AUTO)); | 78 | QStringList autoLines = interfaces.grep(QRegExp(AUTO)); |
77 | QStringList awi = autoLines.grep(QRegExp(interface)); | 79 | QStringList awi = autoLines.grep(QRegExp(interface)); |
78 | if(awi.count() > 1) | 80 | if(awi.count() > 1) |
79 | odebug << QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1() << oendl; | 81 | odebug << QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1() << oendl; |
80 | return awi.count() > 0; | 82 | return awi.count() > 0; |
81 | } | 83 | } |
82 | 84 | ||
83 | /** | 85 | /** |
84 | * Attempt to set the auto option for interface to setAuto. | 86 | * Attempt to set the auto option for interface to setAuto. |
85 | * @param interface the interface to set | 87 | * @param interface the interface to set |
86 | * @param setAuto the value to set interface to. | 88 | * @param setAuto the value to set interface to. |
87 | * @return false if already set to setAuto. | 89 | * @return false if already set to setAuto. |
88 | * */ | 90 | * */ |
89 | bool Interfaces::setAuto(const QString &interface, bool setAuto){ | 91 | bool Interfaces::setAuto(const QString &interface, bool setAuto){ |
90 | // Don't need to set it if it is already set. | 92 | // Don't need to set it if it is already set. |
91 | if(isAuto(interface) == setAuto) | 93 | if(isAuto(interface) == setAuto) |
92 | return false; | 94 | return false; |
93 | 95 | ||
94 | bool changed = false; | 96 | bool changed = false; |
95 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 97 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
96 | if((*it).contains(AUTO)){ | 98 | if((*it).contains(AUTO)){ |
97 | //We know that they are not in any group so let add to this auto. | 99 | //We know that they are not in any group so let add to this auto. |
98 | if(setAuto){ | 100 | if(setAuto){ |
99 | (*it) = (*it) += " " + interface; | 101 | (*it) = (*it) += " " + interface; |
100 | // Don't care to have such thins as: auto eth0 lo usb0 | 102 | // Don't care to have such thins as: auto eth0 lo usb0 |
101 | (*it) = (*it).simplifyWhiteSpace(); | 103 | (*it) = (*it).simplifyWhiteSpace(); |
102 | changed = true; | 104 | changed = true; |
103 | break; | 105 | break; |
104 | } | 106 | } |
105 | // else see if we need to remove from this one | 107 | // else see if we need to remove from this one |
106 | else{ | 108 | else{ |
107 | if((*it).contains(interface)){ | 109 | if((*it).contains(interface)){ |
108 | (*it) = (*it).replace(QRegExp(interface), ""); | 110 | (*it) = (*it).replace(QRegExp(interface), ""); |
109 | // if AUTO is the only thing left clear the line | 111 | // if AUTO is the only thing left clear the line |
110 | if(((*it).simplifyWhiteSpace()).replace(QRegExp(" "),"") == AUTO) | 112 | if(((*it).simplifyWhiteSpace()).replace(QRegExp(" "),"") == AUTO) |
111 | (*it) = ""; | 113 | (*it) = ""; |
112 | changed = true; | 114 | changed = true; |
113 | // Don't break because we want to make sure we remove all cases. | 115 | // Don't break because we want to make sure we remove all cases. |
114 | } | 116 | } |
115 | } | 117 | } |
116 | } | 118 | } |
117 | } | 119 | } |
118 | // In the case where there is no AUTO field add one. | 120 | // In the case where there is no AUTO field add one. |
119 | if(!changed && setAuto) | 121 | if(!changed && setAuto) |
120 | interfaces.append(QString(AUTO" %1").arg(interface)); | 122 | interfaces.append(QString(AUTO" %1").arg(interface)); |
121 | return true; | 123 | return true; |
122 | } | 124 | } |
123 | 125 | ||
124 | /** | 126 | /** |
125 | * Set the current interface to interface. This needs to be done before you | 127 | * Set the current interface to interface. This needs to be done before you |
126 | * can call getFamily(), getMethod, and get/setOption(). | 128 | * can call getFamily(), getMethod, and get/setOption(). |
127 | * @param interface the name of the interface to set. All whitespace is | 129 | * @param interface the name of the interface to set. All whitespace is |
128 | * removed from the interface name. | 130 | * removed from the interface name. |
129 | * @return bool true if it is successful. | 131 | * @return bool true if it is successful. |
130 | */ | 132 | */ |
131 | bool Interfaces::setInterface(QString interface){ | 133 | bool Interfaces::setInterface(QString interface){ |
132 | interface = interface.simplifyWhiteSpace(); | 134 | interface = interface.simplifyWhiteSpace(); |
133 | interface = interface.replace(QRegExp(" "), ""); | 135 | interface = interface.replace(QRegExp(" "), ""); |
134 | return setStanza(IFACE, interface, currentIface); | 136 | return setStanza(IFACE, interface, currentIface); |
135 | } | 137 | } |
136 | 138 | ||
137 | /** | 139 | /** |
138 | * A quick helper funtion to see if the current interface is set. | 140 | * A quick helper funtion to see if the current interface is set. |
139 | * @return bool true if set, false otherwise. | 141 | * @return bool true if set, false otherwise. |
140 | */ | 142 | */ |
141 | bool Interfaces::isInterfaceSet() const { | 143 | bool Interfaces::isInterfaceSet() const { |
142 | return (interfaces.end() != currentIface); | 144 | return (interfaces.end() != currentIface); |
143 | } | 145 | } |
144 | 146 | ||
145 | /** | 147 | /** |
146 | * Add a new interface of with the settings - family and method | 148 | * Add a new interface of with the settings - family and method |
147 | * @param interface the name of the interface to set. All whitespace is | 149 | * @param interface the name of the interface to set. All whitespace is |
148 | * removed from the interface name. | 150 | * removed from the interface name. |
149 | * @param family the family of this interface inet or inet, ipx or inet6 | 151 | * @param family the family of this interface inet or inet, ipx or inet6 |
150 | * Must of one of the families defined in interfaces.h | 152 | * Must of one of the families defined in interfaces.h |
151 | * @param method for the family. see interfaces man page for family methods. | 153 | * @param method for the family. see interfaces man page for family methods. |
152 | * @return true if successful. | 154 | * @return true if successful. |
153 | */ | 155 | */ |
154 | bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){ | 156 | bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){ |
155 | odebug << "Interfaces::addInterface(" << interface.latin1() << ")" << oendl; | 157 | odebug << "Interfaces::addInterface(" << interface.latin1() << ")" << oendl; |
156 | if(0 == acceptedFamily.contains(family)) | 158 | if(0 == acceptedFamily.contains(family)) |
157 | return false; | 159 | return false; |
158 | QString newInterface = interface.simplifyWhiteSpace(); | 160 | QString newInterface = interface.simplifyWhiteSpace(); |
159 | newInterface = newInterface.replace(QRegExp(" "), ""); | 161 | newInterface = newInterface.replace(QRegExp(" "), ""); |
160 | interfaces.append(""); | 162 | interfaces.append(""); |
161 | interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method)); | 163 | interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method)); |
162 | return true; | 164 | return true; |
163 | } | 165 | } |
164 | 166 | ||
165 | /** | 167 | /** |
166 | * Copies interface with name interface to name newInterface | 168 | * Copies interface with name interface to name newInterface |
167 | * @param newInterface name of the new interface. | 169 | * @param newInterface name of the new interface. |
168 | * @return bool true if successful | 170 | * @return bool true if successful |
169 | */ | 171 | */ |
170 | bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){ | 172 | bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){ |
171 | odebug << "copy interface " << interface.latin1() << " to " << newInterface.latin1() << "" << oendl; | 173 | odebug << "copy interface " << interface.latin1() << " to " << newInterface.latin1() << "" << oendl; |
172 | if(!setInterface(interface)) | 174 | if(!setInterface(interface)) |
173 | return false; | 175 | return false; |
174 | 176 | ||
175 | // Store the old interface and bump past the stanza line. | 177 | // Store the old interface and bump past the stanza line. |
176 | QStringList::Iterator it = currentIface; | 178 | QStringList::Iterator it = currentIface; |
177 | it++; | 179 | it++; |
178 | 180 | ||
179 | // Add the new interface | 181 | // Add the new interface |
180 | bool error; | 182 | bool error; |
181 | addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error)); | 183 | addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error)); |
182 | if(!setInterface(newInterface)) | 184 | if(!setInterface(newInterface)) |
183 | return false; | 185 | return false; |
184 | 186 | ||
185 | QStringList::Iterator newIface = currentIface; | 187 | QStringList::Iterator newIface = currentIface; |
186 | newIface++; | 188 | newIface++; |
187 | 189 | ||
188 | // Copy all of the lines | 190 | // Copy all of the lines |
189 | for ( ; it != interfaces.end(); ++it ){ | 191 | for ( ; it != interfaces.end(); ++it ){ |
190 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO))) | 192 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO))) |
191 | break; | 193 | break; |
192 | newIface = interfaces.insert(newIface, *it); | 194 | newIface = interfaces.insert(newIface, *it); |
193 | } | 195 | } |
194 | 196 | ||
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp index ec3bad3..8498759 100644 --- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp +++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | |||
@@ -1,207 +1,208 @@ | |||
1 | #include "interfacesetupimp.h" | 1 | #include "interfacesetupimp.h" |
2 | #include "interface.h" | 2 | #include "interface.h" |
3 | 3 | ||
4 | #include <qcheckbox.h> | 4 | #include <qcheckbox.h> |
5 | #include <qlineedit.h> | 5 | #include <qlineedit.h> |
6 | #include <qspinbox.h> | 6 | #include <qspinbox.h> |
7 | #include <qgroupbox.h> | 7 | #include <qgroupbox.h> |
8 | #include <qlabel.h> | 8 | #include <qlabel.h> |
9 | 9 | ||
10 | #include <qmessagebox.h> | 10 | #include <qmessagebox.h> |
11 | 11 | ||
12 | #include <opie2/oprocess.h> | 12 | #include <opie2/oprocess.h> |
13 | 13 | ||
14 | #ifdef QWS | 14 | #ifdef QWS |
15 | #include <opie2/owait.h> | 15 | #include <opie2/owait.h> |
16 | #include <opie2/odebug.h> | ||
16 | #include <qpe/global.h> | 17 | #include <qpe/global.h> |
17 | #include <qapplication.h> | 18 | #include <qapplication.h> |
18 | #endif | 19 | #endif |
19 | 20 | ||
20 | #define DNSSCRIPT "changedns" | 21 | #define DNSSCRIPT "changedns" |
21 | 22 | ||
22 | /** | 23 | /** |
23 | * Constuctor. Set up the connection. A profile must be set. | 24 | * Constuctor. Set up the connection. A profile must be set. |
24 | */ | 25 | */ |
25 | using namespace Opie::Ui; | 26 | using namespace Opie::Ui; |
26 | using namespace Opie::Core; | 27 | using namespace Opie::Core; |
27 | InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ | 28 | InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ |
28 | if (j == 0) { | 29 | if (j == 0) { |
29 | delInterfaces = true; | 30 | delInterfaces = true; |
30 | interfaces = new Interfaces; | 31 | interfaces = new Interfaces; |
31 | } | 32 | } |
32 | } | 33 | } |
33 | 34 | ||
34 | /** | 35 | /** |
35 | * Destructor | 36 | * Destructor |
36 | */ | 37 | */ |
37 | InterfaceSetupImp::~InterfaceSetupImp(){ | 38 | InterfaceSetupImp::~InterfaceSetupImp(){ |
38 | if(delInterfaces) { | 39 | if(delInterfaces) { |
39 | delete interfaces; | 40 | delete interfaces; |
40 | } | 41 | } |
41 | } | 42 | } |
42 | 43 | ||
43 | /** | 44 | /** |
44 | * Save the current settings, then write out the interfaces file and close. | 45 | * Save the current settings, then write out the interfaces file and close. |
45 | */ | 46 | */ |
46 | bool InterfaceSetupImp::saveChanges(){ | 47 | bool InterfaceSetupImp::saveChanges(){ |
47 | bool error; | 48 | bool error; |
48 | QString iface = interfaces->getInterfaceName(error); | 49 | QString iface = interfaces->getInterfaceName(error); |
49 | odebug << "InterfaceSetupImp::saveChanges saves interface " << iface.latin1() << "" << oendl; | 50 | odebug << "InterfaceSetupImp::saveChanges saves interface " << iface.latin1() << "" << oendl; |
50 | if(!saveSettings()) | 51 | if(!saveSettings()) |
51 | return false; | 52 | return false; |
52 | 53 | ||
53 | interfaces->write(); | 54 | interfaces->write(); |
54 | 55 | ||
55 | if (interface->getStatus()) { | 56 | if (interface->getStatus()) { |
56 | QString ifup; | 57 | QString ifup; |
57 | ifup += "ifdown "; | 58 | ifup += "ifdown "; |
58 | ifup += iface; | 59 | ifup += iface; |
59 | ifup += "; ifup "; | 60 | ifup += "; ifup "; |
60 | ifup += iface; | 61 | ifup += iface; |
61 | ifup += ";"; | 62 | ifup += ";"; |
62 | 63 | ||
63 | OProcess restart; | 64 | OProcess restart; |
64 | restart << "sh"; | 65 | restart << "sh"; |
65 | restart << "-c"; | 66 | restart << "-c"; |
66 | restart << ifup; | 67 | restart << ifup; |
67 | 68 | ||
68 | OWait *owait = new OWait(); | 69 | OWait *owait = new OWait(); |
69 | Global::statusMessage( tr( "Restarting interface" ) ); | 70 | Global::statusMessage( tr( "Restarting interface" ) ); |
70 | 71 | ||
71 | owait->show(); | 72 | owait->show(); |
72 | qApp->processEvents(); | 73 | qApp->processEvents(); |
73 | 74 | ||
74 | if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { | 75 | if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { |
75 | owarn << "unstable to spawn ifdown/ifup" << oendl; | 76 | owarn << "unstable to spawn ifdown/ifup" << oendl; |
76 | } | 77 | } |
77 | 78 | ||
78 | owait->hide(); | 79 | owait->hide(); |
79 | delete owait; | 80 | delete owait; |
80 | 81 | ||
81 | interface->refresh(); | 82 | interface->refresh(); |
82 | } | 83 | } |
83 | return true; | 84 | return true; |
84 | } | 85 | } |
85 | 86 | ||
86 | /** | 87 | /** |
87 | * Save the settings for the current Interface. | 88 | * Save the settings for the current Interface. |
88 | * @return bool true if successful, false otherwise | 89 | * @return bool true if successful, false otherwise |
89 | */ | 90 | */ |
90 | bool InterfaceSetupImp::saveSettings(){ | 91 | bool InterfaceSetupImp::saveSettings(){ |
91 | // eh can't really do anything about it other then return. :-D | 92 | // eh can't really do anything about it other then return. :-D |
92 | if(!interfaces->isInterfaceSet()) | 93 | if(!interfaces->isInterfaceSet()) |
93 | return true; | 94 | return true; |
94 | 95 | ||
95 | bool error = false; | 96 | bool error = false; |
96 | // Loopback case | 97 | // Loopback case |
97 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ | 98 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ |
98 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); | 99 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); |
99 | return true; | 100 | return true; |
100 | } | 101 | } |
101 | 102 | ||
102 | if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ | 103 | if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ |
103 | QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); | 104 | QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); |
104 | return false; | 105 | return false; |
105 | } | 106 | } |
106 | // DHCP | 107 | // DHCP |
107 | if(dhcpCheckBox->isChecked()) { | 108 | if(dhcpCheckBox->isChecked()) { |
108 | interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); | 109 | interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); |
109 | interfaces->removeInterfaceOption("address"); | 110 | interfaces->removeInterfaceOption("address"); |
110 | interfaces->removeInterfaceOption("netmask"); | 111 | interfaces->removeInterfaceOption("netmask"); |
111 | interfaces->removeInterfaceOption("gateway"); | 112 | interfaces->removeInterfaceOption("gateway"); |
112 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); | 113 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); |
113 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); | 114 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); |
114 | } else{ | 115 | } else{ |
115 | interfaces->setInterfaceMethod("static"); | 116 | interfaces->setInterfaceMethod("static"); |
116 | interfaces->setInterfaceOption("address", ipAddressEdit->text()); | 117 | interfaces->setInterfaceOption("address", ipAddressEdit->text()); |
117 | interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); | 118 | interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); |
118 | interfaces->setInterfaceOption("gateway", gatewayEdit->text()); | 119 | interfaces->setInterfaceOption("gateway", gatewayEdit->text()); |
119 | if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ | 120 | if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ |
120 | QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); | 121 | QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); |
121 | interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); | 122 | interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); |
122 | interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); | 123 | interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); |
123 | }else{ | 124 | }else{ |
124 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); | 125 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); |
125 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r"); | 126 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r"); |
126 | } | 127 | } |
127 | } | 128 | } |
128 | 129 | ||
129 | // IP Information | 130 | // IP Information |
130 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); | 131 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); |
131 | return true; | 132 | return true; |
132 | } | 133 | } |
133 | 134 | ||
134 | /** | 135 | /** |
135 | * The Profile has changed. | 136 | * The Profile has changed. |
136 | * @param QString profile the new profile. | 137 | * @param QString profile the new profile. |
137 | */ | 138 | */ |
138 | void InterfaceSetupImp::setProfile(const QString &profile){ | 139 | void InterfaceSetupImp::setProfile(const QString &profile){ |
139 | /* | 140 | /* |
140 | bool error = false; | 141 | bool error = false; |
141 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ | 142 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ |
142 | staticGroupBox->hide(); | 143 | staticGroupBox->hide(); |
143 | dhcpCheckBox->hide(); | 144 | dhcpCheckBox->hide(); |
144 | leaseTime->hide(); | 145 | leaseTime->hide(); |
145 | leaseHoursLabel->hide(); | 146 | leaseHoursLabel->hide(); |
146 | } | 147 | } |
147 | */ | 148 | */ |
148 | 149 | ||
149 | QString newInterfaceName = interface->getInterfaceName(); | 150 | QString newInterfaceName = interface->getInterfaceName(); |
150 | if(profile.length() > 0) | 151 | if(profile.length() > 0) |
151 | newInterfaceName += "_" + profile; | 152 | newInterfaceName += "_" + profile; |
152 | // See if we have to make a interface. | 153 | // See if we have to make a interface. |
153 | if(!interfaces->setInterface(newInterfaceName)){ | 154 | if(!interfaces->setInterface(newInterfaceName)){ |
154 | // Add making for this new interface if need too | 155 | // Add making for this new interface if need too |
155 | if(profile != ""){ | 156 | if(profile != ""){ |
156 | interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName); | 157 | interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName); |
157 | if(!interfaces->setMapping(interface->getInterfaceName())){ | 158 | if(!interfaces->setMapping(interface->getInterfaceName())){ |
158 | interfaces->addMapping(interface->getInterfaceName()); | 159 | interfaces->addMapping(interface->getInterfaceName()); |
159 | if(!interfaces->setMapping(interface->getInterfaceName())){ | 160 | if(!interfaces->setMapping(interface->getInterfaceName())){ |
160 | odebug << "InterfaceSetupImp: Added Mapping, but still can't setInterface." << oendl; | 161 | odebug << "InterfaceSetupImp: Added Mapping, but still can't setInterface." << oendl; |
161 | return; | 162 | return; |
162 | } | 163 | } |
163 | } | 164 | } |
164 | interfaces->setMap("map", newInterfaceName); | 165 | interfaces->setMap("map", newInterfaceName); |
165 | interfaces->setScript("getprofile.sh"); | 166 | interfaces->setScript("getprofile.sh"); |
166 | } | 167 | } |
167 | else{ | 168 | else{ |
168 | interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); | 169 | interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); |
169 | if(!interfaces->setInterface(newInterfaceName)){ | 170 | if(!interfaces->setInterface(newInterfaceName)){ |
170 | odebug << "InterfaceSetupImp: Added interface, but still can't setInterface." << oendl; | 171 | odebug << "InterfaceSetupImp: Added interface, but still can't setInterface." << oendl; |
171 | return; | 172 | return; |
172 | } | 173 | } |
173 | } | 174 | } |
174 | } | 175 | } |
175 | 176 | ||
176 | // We must have a valid interface to get this far so read some settings. | 177 | // We must have a valid interface to get this far so read some settings. |
177 | 178 | ||
178 | // DHCP | 179 | // DHCP |
179 | bool error = false; | 180 | bool error = false; |
180 | if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) | 181 | if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) |
181 | dhcpCheckBox->setChecked(true); | 182 | dhcpCheckBox->setChecked(true); |
182 | else | 183 | else |
183 | dhcpCheckBox->setChecked(false); | 184 | dhcpCheckBox->setChecked(false); |
184 | 185 | ||
185 | // IP Information | 186 | // IP Information |
186 | autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); | 187 | autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); |
187 | QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error); | 188 | QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error); |
188 | odebug << "dns >" << dns.latin1() << "<" << oendl; | 189 | odebug << "dns >" << dns.latin1() << "<" << oendl; |
189 | if(dns.contains(" ")){ | 190 | if(dns.contains(" ")){ |
190 | firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); | 191 | firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); |
191 | secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); | 192 | secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); |
192 | }else firstDNSLineEdit->setText(dns); | 193 | }else firstDNSLineEdit->setText(dns); |
193 | 194 | ||
194 | ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); | 195 | ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); |
195 | subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); | 196 | subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); |
196 | if (subnetMaskEdit->text().isEmpty()) | 197 | if (subnetMaskEdit->text().isEmpty()) |
197 | subnetMaskEdit->setText( "255.255.255.0" ); | 198 | subnetMaskEdit->setText( "255.255.255.0" ); |
198 | gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); | 199 | gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); |
199 | 200 | ||
200 | 201 | ||
201 | 202 | ||
202 | owarn << "InterfaceSetupImp::setProfile(" << profile.latin1() << ")\n" << oendl; | 203 | owarn << "InterfaceSetupImp::setProfile(" << profile.latin1() << ")\n" << oendl; |
203 | owarn << "InterfaceSetupImp::setProfile: iface is " << interfaces->getInterfaceName(error).latin1() << "\n" << oendl; | 204 | owarn << "InterfaceSetupImp::setProfile: iface is " << interfaces->getInterfaceName(error).latin1() << "\n" << oendl; |
204 | 205 | ||
205 | } | 206 | } |
206 | 207 | ||
207 | // interfacesetup.cpp | 208 | // interfacesetup.cpp |
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp index 3e1a650..5184630 100644 --- a/noncore/settings/networksettings/mainwindowimp.cpp +++ b/noncore/settings/networksettings/mainwindowimp.cpp | |||
@@ -1,201 +1,202 @@ | |||
1 | 1 | ||
2 | #include "mainwindowimp.h" | 2 | #include "mainwindowimp.h" |
3 | #include "addconnectionimp.h" | 3 | #include "addconnectionimp.h" |
4 | #include "interfaceinformationimp.h" | 4 | #include "interfaceinformationimp.h" |
5 | #include "interfacesetupimp.h" | 5 | #include "interfacesetupimp.h" |
6 | #include "interfaces.h" | 6 | #include "interfaces.h" |
7 | #include "module.h" | 7 | #include "module.h" |
8 | 8 | ||
9 | /* OPIE */ | 9 | /* OPIE */ |
10 | #include <opie2/odebug.h> | ||
10 | #include <qpe/qcopenvelope_qws.h> | 11 | #include <qpe/qcopenvelope_qws.h> |
11 | #include <qpe/qpeapplication.h> | 12 | #include <qpe/qpeapplication.h> |
12 | #include <qpe/config.h> | 13 | #include <qpe/config.h> |
13 | #include <qpe/qlibrary.h> | 14 | #include <qpe/qlibrary.h> |
14 | #include <qpe/resource.h> | 15 | #include <qpe/resource.h> |
15 | 16 | ||
16 | /* QT */ | 17 | /* QT */ |
17 | #include <qpushbutton.h> | 18 | #include <qpushbutton.h> |
18 | #include <qlistbox.h> | 19 | #include <qlistbox.h> |
19 | #include <qlineedit.h> | 20 | #include <qlineedit.h> |
20 | #include <qlistview.h> | 21 | #include <qlistview.h> |
21 | #include <qheader.h> | 22 | #include <qheader.h> |
22 | #include <qlabel.h> | 23 | #include <qlabel.h> |
23 | #include <qtabwidget.h> // in order to disable the profiles tab | 24 | #include <qtabwidget.h> // in order to disable the profiles tab |
24 | #include <qmessagebox.h> | 25 | #include <qmessagebox.h> |
25 | 26 | ||
26 | 27 | ||
27 | #if QT_VERSION < 300 | 28 | #if QT_VERSION < 300 |
28 | #include <qlist.h> | 29 | #include <qlist.h> |
29 | #else | 30 | #else |
30 | #include <qptrlist.h> | 31 | #include <qptrlist.h> |
31 | #endif | 32 | #endif |
32 | #include <qdir.h> | 33 | #include <qdir.h> |
33 | #include <qfile.h> | 34 | #include <qfile.h> |
34 | #include <qtextstream.h> | 35 | #include <qtextstream.h> |
35 | #include <qregexp.h> | 36 | #include <qregexp.h> |
36 | 37 | ||
37 | /* STD */ | 38 | /* STD */ |
38 | #include <net/if.h> | 39 | #include <net/if.h> |
39 | #include <sys/ioctl.h> | 40 | #include <sys/ioctl.h> |
40 | #include <sys/socket.h> | 41 | #include <sys/socket.h> |
41 | 42 | ||
42 | #define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" | 43 | #define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" |
43 | #define _PROCNETDEV "/proc/net/dev" | 44 | #define _PROCNETDEV "/proc/net/dev" |
44 | 45 | ||
45 | MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME) | 46 | MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME) |
46 | { | 47 | { |
47 | connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); | 48 | connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); |
48 | connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); | 49 | connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); |
49 | connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); | 50 | connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); |
50 | connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); | 51 | connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); |
51 | 52 | ||
52 | connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); | 53 | connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); |
53 | connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); | 54 | connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); |
54 | connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); | 55 | connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); |
55 | 56 | ||
56 | connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); | 57 | connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); |
57 | 58 | ||
58 | //FIXME: disable profiles for the moment: | 59 | //FIXME: disable profiles for the moment: |
59 | tabWidget->setTabEnabled( tab, false ); | 60 | tabWidget->setTabEnabled( tab, false ); |
60 | 61 | ||
61 | // Load connections. | 62 | // Load connections. |
62 | // /usr/local/kde/lib/libinterfaces.la | 63 | // /usr/local/kde/lib/libinterfaces.la |
63 | #ifdef QWS | 64 | #ifdef QWS |
64 | loadModules(QPEApplication::qpeDir() + "plugins/networksettings"); | 65 | loadModules(QPEApplication::qpeDir() + "plugins/networksettings"); |
65 | #else | 66 | #else |
66 | loader = KLibLoader::self(); | 67 | loader = KLibLoader::self(); |
67 | loadModules(QString("/usr/")+KStandardDirs::kde_default("lib")); | 68 | loadModules(QString("/usr/")+KStandardDirs::kde_default("lib")); |
68 | #endif | 69 | #endif |
69 | getAllInterfaces(); | 70 | getAllInterfaces(); |
70 | 71 | ||
71 | Interfaces i; | 72 | Interfaces i; |
72 | QStringList list = i.getInterfaceList(); | 73 | QStringList list = i.getInterfaceList(); |
73 | QMap<QString, Interface*>::Iterator it; | 74 | QMap<QString, Interface*>::Iterator it; |
74 | for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) | 75 | for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) |
75 | { | 76 | { |
76 | /* | 77 | /* |
77 | * we skipped it in getAllInterfaces now | 78 | * we skipped it in getAllInterfaces now |
78 | * we need to ignore it as well | 79 | * we need to ignore it as well |
79 | */ | 80 | */ |
80 | if (m_handledIfaces.contains( *ni) ) | 81 | if (m_handledIfaces.contains( *ni) ) |
81 | { | 82 | { |
82 | odebug << "Not up iface handled by module" << oendl; | 83 | odebug << "Not up iface handled by module" << oendl; |
83 | continue; | 84 | continue; |
84 | } | 85 | } |
85 | bool found = false; | 86 | bool found = false; |
86 | for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ) | 87 | for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ) |
87 | { | 88 | { |
88 | if(it.key() == (*ni)) | 89 | if(it.key() == (*ni)) |
89 | found = true; | 90 | found = true; |
90 | } | 91 | } |
91 | if(!found) | 92 | if(!found) |
92 | { | 93 | { |
93 | if(!(*ni).contains("_")) | 94 | if(!(*ni).contains("_")) |
94 | { | 95 | { |
95 | Interface *i = new Interface(this, *ni, false); | 96 | Interface *i = new Interface(this, *ni, false); |
96 | i->setAttached(false); | 97 | i->setAttached(false); |
97 | i->setHardwareName(tr("Disconnected")); | 98 | i->setHardwareName(tr("Disconnected")); |
98 | interfaceNames.insert(i->getInterfaceName(), i); | 99 | interfaceNames.insert(i->getInterfaceName(), i); |
99 | updateInterface(i); | 100 | updateInterface(i); |
100 | connect(i, SIGNAL(updateInterface(Interface*)), this, SLOT(updateInterface(Interface*))); | 101 | connect(i, SIGNAL(updateInterface(Interface*)), this, SLOT(updateInterface(Interface*))); |
101 | } | 102 | } |
102 | } | 103 | } |
103 | } | 104 | } |
104 | 105 | ||
105 | //getInterfaceList(); | 106 | //getInterfaceList(); |
106 | connectionList->header()->hide(); | 107 | connectionList->header()->hide(); |
107 | 108 | ||
108 | Config cfg("NetworkSetup"); | 109 | Config cfg("NetworkSetup"); |
109 | profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); | 110 | profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); |
110 | for ( QStringList::Iterator it = profiles.begin(); | 111 | for ( QStringList::Iterator it = profiles.begin(); |
111 | it != profiles.end(); ++it) | 112 | it != profiles.end(); ++it) |
112 | profilesList->insertItem((*it)); | 113 | profilesList->insertItem((*it)); |
113 | currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); | 114 | currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); |
114 | advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); | 115 | advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); |
115 | scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME); | 116 | scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME); |
116 | 117 | ||
117 | QFile file(scheme); | 118 | QFile file(scheme); |
118 | if ( file.open(IO_ReadOnly) ) | 119 | if ( file.open(IO_ReadOnly) ) |
119 | { // file opened successfully | 120 | { // file opened successfully |
120 | QTextStream stream( &file ); // use a text stream | 121 | QTextStream stream( &file ); // use a text stream |
121 | while ( !stream.eof() ) | 122 | while ( !stream.eof() ) |
122 | { // until end of file... | 123 | { // until end of file... |
123 | QString line = stream.readLine(); // line of text excluding '\n' | 124 | QString line = stream.readLine(); // line of text excluding '\n' |
124 | if(line.contains("SCHEME")) | 125 | if(line.contains("SCHEME")) |
125 | { | 126 | { |
126 | line = line.mid(7, line.length()); | 127 | line = line.mid(7, line.length()); |
127 | currentProfileLabel->setText(line); | 128 | currentProfileLabel->setText(line); |
128 | break; | 129 | break; |
129 | } | 130 | } |
130 | } | 131 | } |
131 | file.close(); | 132 | file.close(); |
132 | } | 133 | } |
133 | makeChannel(); | 134 | makeChannel(); |
134 | } | 135 | } |
135 | 136 | ||
136 | /** | 137 | /** |
137 | * Deconstructor. Save profiles. Delete loaded libraries. | 138 | * Deconstructor. Save profiles. Delete loaded libraries. |
138 | */ | 139 | */ |
139 | MainWindowImp::~MainWindowImp() | 140 | MainWindowImp::~MainWindowImp() |
140 | { | 141 | { |
141 | // Save profiles. | 142 | // Save profiles. |
142 | Config cfg("NetworkSetup"); | 143 | Config cfg("NetworkSetup"); |
143 | cfg.setGroup("General"); | 144 | cfg.setGroup("General"); |
144 | cfg.writeEntry("Profiles", profiles.join(" ")); | 145 | cfg.writeEntry("Profiles", profiles.join(" ")); |
145 | 146 | ||
146 | // Delete all interfaces that don't have owners. | 147 | // Delete all interfaces that don't have owners. |
147 | QMap<Interface*, QListViewItem*>::Iterator iIt; | 148 | QMap<Interface*, QListViewItem*>::Iterator iIt; |
148 | for( iIt = items.begin(); iIt != items.end(); ++iIt ) | 149 | for( iIt = items.begin(); iIt != items.end(); ++iIt ) |
149 | { | 150 | { |
150 | if(iIt.key()->getModuleOwner() == NULL) | 151 | if(iIt.key()->getModuleOwner() == NULL) |
151 | delete iIt.key(); | 152 | delete iIt.key(); |
152 | } | 153 | } |
153 | 154 | ||
154 | #ifdef QWS | 155 | #ifdef QWS |
155 | // Delete Modules and Libraries | 156 | // Delete Modules and Libraries |
156 | QMap<Module*, QLibrary*>::Iterator it; | 157 | QMap<Module*, QLibrary*>::Iterator it; |
157 | for( it = libraries.begin(); it != libraries.end(); ++it ) | 158 | for( it = libraries.begin(); it != libraries.end(); ++it ) |
158 | { | 159 | { |
159 | delete it.key(); | 160 | delete it.key(); |
160 | // I wonder why I can't delete the libraries | 161 | // I wonder why I can't delete the libraries |
161 | // What fucking shit this is. | 162 | // What fucking shit this is. |
162 | //delete it.data(); | 163 | //delete it.data(); |
163 | } | 164 | } |
164 | #else | 165 | #else |
165 | // klibloader automaticly deletes the libraries for us... | 166 | // klibloader automaticly deletes the libraries for us... |
166 | #endif | 167 | #endif |
167 | } | 168 | } |
168 | 169 | ||
169 | /** | 170 | /** |
170 | * Query the kernel for all of the interfaces. | 171 | * Query the kernel for all of the interfaces. |
171 | */ | 172 | */ |
172 | void MainWindowImp::getAllInterfaces() | 173 | void MainWindowImp::getAllInterfaces() |
173 | { | 174 | { |
174 | int sockfd = socket(PF_INET, SOCK_DGRAM, 0); | 175 | int sockfd = socket(PF_INET, SOCK_DGRAM, 0); |
175 | if(sockfd == -1) | 176 | if(sockfd == -1) |
176 | return; | 177 | return; |
177 | 178 | ||
178 | struct ifreq ifr; | 179 | struct ifreq ifr; |
179 | QStringList ifaces; | 180 | QStringList ifaces; |
180 | QFile procFile(QString(_PROCNETDEV)); | 181 | QFile procFile(QString(_PROCNETDEV)); |
181 | int result; | 182 | int result; |
182 | Interface *i; | 183 | Interface *i; |
183 | 184 | ||
184 | if (! procFile.exists()) | 185 | if (! procFile.exists()) |
185 | { | 186 | { |
186 | struct ifreq ifrs[100]; | 187 | struct ifreq ifrs[100]; |
187 | struct ifconf ifc; | 188 | struct ifconf ifc; |
188 | ifc.ifc_len = sizeof(ifrs); | 189 | ifc.ifc_len = sizeof(ifrs); |
189 | ifc.ifc_req = ifrs; | 190 | ifc.ifc_req = ifrs; |
190 | result = ioctl(sockfd, SIOCGIFCONF, &ifc); | 191 | result = ioctl(sockfd, SIOCGIFCONF, &ifc); |
191 | 192 | ||
192 | for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) | 193 | for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) |
193 | { | 194 | { |
194 | struct ifreq *pifr = &ifrs[i]; | 195 | struct ifreq *pifr = &ifrs[i]; |
195 | 196 | ||
196 | ifaces += pifr->ifr_name; | 197 | ifaces += pifr->ifr_name; |
197 | } | 198 | } |
198 | } | 199 | } |
199 | else | 200 | else |
200 | { | 201 | { |
201 | procFile.open(IO_ReadOnly); | 202 | procFile.open(IO_ReadOnly); |