author | wimpie <wimpie> | 2005-01-11 15:35:46 (UTC) |
---|---|---|
committer | wimpie <wimpie> | 2005-01-11 15:35:46 (UTC) |
commit | 4c4cdd76caea5a8be4a971892375c7c6b4f4a8b9 (patch) (unidiff) | |
tree | 0e8adcc616a1d20b637aad3de568dcb45af05f71 /noncore/settings | |
parent | 32e8aa951218c0bd6118ee04bb22ef83b3b7ec2e (diff) | |
download | opie-4c4cdd76caea5a8be4a971892375c7c6b4f4a8b9.zip opie-4c4cdd76caea5a8be4a971892375c7c6b4f4a8b9.tar.gz opie-4c4cdd76caea5a8be4a971892375c7c6b4f4a8b9.tar.bz2 |
vpn should now work IF only the vpn plugin would do something.
shortened logical interface names (busybox only supports 10 characters
and then ONLY if you recompile it with mappings enabled)
Other small fixes
14 files changed, 174 insertions, 54 deletions
diff --git a/noncore/settings/networksettings2/activateprofileGUI.ui b/noncore/settings/networksettings2/activateprofileGUI.ui index 12ab051..861ce96 100644 --- a/noncore/settings/networksettings2/activateprofileGUI.ui +++ b/noncore/settings/networksettings2/activateprofileGUI.ui | |||
@@ -10,9 +10,9 @@ | |||
10 | <name>geometry</name> | 10 | <name>geometry</name> |
11 | <rect> | 11 | <rect> |
12 | <x>0</x> | 12 | <x>0</x> |
13 | <y>0</y> | 13 | <y>0</y> |
14 | <width>231</width> | 14 | <width>219</width> |
15 | <height>121</height> | 15 | <height>121</height> |
16 | </rect> | 16 | </rect> |
17 | </property> | 17 | </property> |
18 | <property stdset="1"> | 18 | <property stdset="1"> |
@@ -39,24 +39,34 @@ | |||
39 | <property stdset="1"> | 39 | <property stdset="1"> |
40 | <name>name</name> | 40 | <name>name</name> |
41 | <cstring>Layout2</cstring> | 41 | <cstring>Layout2</cstring> |
42 | </property> | 42 | </property> |
43 | <property> | ||
44 | <name>layoutSpacing</name> | ||
45 | </property> | ||
43 | <hbox> | 46 | <hbox> |
44 | <property stdset="1"> | 47 | <property stdset="1"> |
45 | <name>margin</name> | 48 | <name>margin</name> |
46 | <number>0</number> | 49 | <number>0</number> |
47 | </property> | 50 | </property> |
48 | <property stdset="1"> | 51 | <property stdset="1"> |
49 | <name>spacing</name> | 52 | <name>spacing</name> |
50 | <number>6</number> | 53 | <number>0</number> |
51 | </property> | 54 | </property> |
52 | <widget> | 55 | <widget> |
53 | <class>QLabel</class> | 56 | <class>QLabel</class> |
54 | <property stdset="1"> | 57 | <property stdset="1"> |
55 | <name>name</name> | 58 | <name>name</name> |
56 | <cstring>TextLabel1</cstring> | 59 | <cstring>TextLabel1</cstring> |
57 | </property> | 60 | </property> |
58 | <property stdset="1"> | 61 | <property stdset="1"> |
62 | <name>sizePolicy</name> | ||
63 | <sizepolicy> | ||
64 | <hsizetype>0</hsizetype> | ||
65 | <vsizetype>1</vsizetype> | ||
66 | </sizepolicy> | ||
67 | </property> | ||
68 | <property stdset="1"> | ||
59 | <name>text</name> | 69 | <name>text</name> |
60 | <string>Select profile to activate for </string> | 70 | <string>Select profile to activate for </string> |
61 | </property> | 71 | </property> |
62 | </widget> | 72 | </widget> |
@@ -66,8 +76,15 @@ | |||
66 | <name>name</name> | 76 | <name>name</name> |
67 | <cstring>DeviceName_LBL</cstring> | 77 | <cstring>DeviceName_LBL</cstring> |
68 | </property> | 78 | </property> |
69 | <property stdset="1"> | 79 | <property stdset="1"> |
80 | <name>sizePolicy</name> | ||
81 | <sizepolicy> | ||
82 | <hsizetype>7</hsizetype> | ||
83 | <vsizetype>1</vsizetype> | ||
84 | </sizepolicy> | ||
85 | </property> | ||
86 | <property stdset="1"> | ||
70 | <name>text</name> | 87 | <name>text</name> |
71 | <string>TextLabel2</string> | 88 | <string>TextLabel2</string> |
72 | </property> | 89 | </property> |
73 | </widget> | 90 | </widget> |
@@ -81,5 +98,13 @@ | |||
81 | </property> | 98 | </property> |
82 | </widget> | 99 | </widget> |
83 | </vbox> | 100 | </vbox> |
84 | </widget> | 101 | </widget> |
102 | <connections> | ||
103 | <connection> | ||
104 | <sender>Profiles_LB</sender> | ||
105 | <signal>doubleClicked(QListBoxItem*)</signal> | ||
106 | <receiver>ActivateProfileGUI</receiver> | ||
107 | <slot>accept()</slot> | ||
108 | </connection> | ||
109 | </connections> | ||
85 | </UI> | 110 | </UI> |
diff --git a/noncore/settings/networksettings2/activatevpn.cpp b/noncore/settings/networksettings2/activatevpn.cpp index b75e623..768a031 100644 --- a/noncore/settings/networksettings2/activatevpn.cpp +++ b/noncore/settings/networksettings2/activatevpn.cpp | |||
@@ -17,19 +17,20 @@ MyCheckListItem::MyCheckListItem( NodeCollection * N, QListView * V ): | |||
17 | QCheckListItem( V, N->name() ) { | 17 | QCheckListItem( V, N->name() ) { |
18 | NC = N; | 18 | NC = N; |
19 | } | 19 | } |
20 | 20 | ||
21 | ActivateVPN::ActivateVPN( void ) : | 21 | ActivateVPN::ActivateVPN( const QString & I ) : |
22 | ActivateVPNGUI( 0, 0, TRUE ), NSD() { | 22 | ActivateVPNGUI( 0, 0, TRUE ), NSD() { |
23 | 23 | ||
24 | QCheckListItem * CI; | 24 | QCheckListItem * CI; |
25 | VPN_LV->clear(); | 25 | VPN_LV->clear(); |
26 | VPN_LV->header()->hide(); | 26 | VPN_LV->header()->hide(); |
27 | 27 | ||
28 | // find all connections that want to be triggered by this interface | ||
28 | for( QDictIterator<NodeCollection> it(NSResources->connections()); | 29 | for( QDictIterator<NodeCollection> it(NSResources->connections()); |
29 | it.current(); | 30 | it.current(); |
30 | ++it ) { | 31 | ++it ) { |
31 | if( it.current()->triggeredBy( "vpn" ) ) { | 32 | if( it.current()->triggeredBy( I ) ) { |
32 | CI = new MyCheckListItem( it.current(), VPN_LV ); | 33 | CI = new MyCheckListItem( it.current(), VPN_LV ); |
33 | } | 34 | } |
34 | } | 35 | } |
35 | } | 36 | } |
diff --git a/noncore/settings/networksettings2/activatevpn.h b/noncore/settings/networksettings2/activatevpn.h index 5794757..49a940b 100644 --- a/noncore/settings/networksettings2/activatevpn.h +++ b/noncore/settings/networksettings2/activatevpn.h | |||
@@ -6,9 +6,9 @@ class ActivateVPN : public ActivateVPNGUI { | |||
6 | Q_OBJECT | 6 | Q_OBJECT |
7 | 7 | ||
8 | public : | 8 | public : |
9 | 9 | ||
10 | ActivateVPN( void ); | 10 | ActivateVPN( const QString & Interface ); |
11 | ~ActivateVPN( void ); | 11 | ~ActivateVPN( void ); |
12 | 12 | ||
13 | public slots : | 13 | public slots : |
14 | 14 | ||
diff --git a/noncore/settings/networksettings2/main.cpp b/noncore/settings/networksettings2/main.cpp index 973b4b7..2243826 100644 --- a/noncore/settings/networksettings2/main.cpp +++ b/noncore/settings/networksettings2/main.cpp | |||
@@ -22,12 +22,14 @@ OPIE_EXPORT_APP( OApplicationFactory<NetworkSettings> ) | |||
22 | // regenerate config files | 22 | // regenerate config files |
23 | #define ACT_REGEN 2 | 23 | #define ACT_REGEN 2 |
24 | // used by interfaces to request user prompt | 24 | // used by interfaces to request user prompt |
25 | #define ACT_PROMPT 3 | 25 | #define ACT_PROMPT 3 |
26 | // used by interfaces to trigger VPN | 26 | // used by interfaces to trigger VPN prompting |
27 | #define ACT_VPN 4 | 27 | #define ACT_TRIGGERVPN 4 |
28 | // activate opietooth | 28 | // activate opietooth |
29 | #define ACT_OT 5 | 29 | #define ACT_OT 5 |
30 | // prompt for VPN networks | ||
31 | #define ACT_PROMPTVPN 6 | ||
30 | 32 | ||
31 | // include Opietooth GUI | 33 | // include Opietooth GUI |
32 | #include <opietooth2/Opietooth.h> | 34 | #include <opietooth2/Opietooth.h> |
33 | using namespace Opietooth2; | 35 | using namespace Opietooth2; |
@@ -55,9 +57,13 @@ int main( int argc, char * argv[] ) { | |||
55 | } else if( strcmp( argv[i], "--prompt" ) == 0 ) { | 57 | } else if( strcmp( argv[i], "--prompt" ) == 0 ) { |
56 | Action = ACT_PROMPT; | 58 | Action = ACT_PROMPT; |
57 | rmv = 1; | 59 | rmv = 1; |
58 | } else if( strcmp( argv[i], "--triggervpn" ) == 0 ) { | 60 | } else if( strcmp( argv[i], "--triggervpn" ) == 0 ) { |
59 | Action = ACT_VPN; | 61 | GuiType = QApplication::Tty; |
62 | Action = ACT_TRIGGERVPN; | ||
63 | rmv = 1; | ||
64 | } else if( strcmp( argv[i], "--promptvpn" ) == 0 ) { | ||
65 | Action = ACT_PROMPTVPN; | ||
60 | rmv = 1; | 66 | rmv = 1; |
61 | } else if( strcmp( argv[i], "--opietooth" ) == 0 ) { | 67 | } else if( strcmp( argv[i], "--opietooth" ) == 0 ) { |
62 | Action = ACT_OT; | 68 | Action = ACT_OT; |
63 | rmv = 1; | 69 | rmv = 1; |
@@ -94,17 +100,26 @@ int main( int argc, char * argv[] ) { | |||
94 | switch( Action ) { | 100 | switch( Action ) { |
95 | case ACT_REQUEST : | 101 | case ACT_REQUEST : |
96 | { NetworkSettingsData NS; | 102 | { NetworkSettingsData NS; |
97 | if( NS.canStart( argv[1] ) ) { | 103 | if( NS.canStart( argv[1] ) ) { |
104 | QStringList SL; | ||
105 | SL << QPEApplication::qpeDir() + "bin/networksettings2" | ||
106 | << "--prompt" | ||
107 | << argv[1]; | ||
108 | // exec synchronous -> blocks | ||
109 | NSResources->system().execAsUser( SL, 1 ); | ||
110 | } | ||
111 | } | ||
112 | break; | ||
113 | case ACT_TRIGGERVPN : | ||
114 | { NetworkSettingsData NS; | ||
115 | if( NS.couldBeTriggered( argv[1] ) ) { | ||
116 | // there are VPNS that can be triggered | ||
98 | QStringList S; | 117 | QStringList S; |
99 | S << QPEApplication::qpeDir() + "/bin/networksettings2"; | 118 | S << QPEApplication::qpeDir() + "bin/networksettings2"; |
100 | S << "networksettings2"; | 119 | S << "--promptvpn"; |
101 | S << "--prompt"; | ||
102 | S << argv[1]; | 120 | S << argv[1]; |
103 | NSResources->system().execAsUser( S ); | 121 | NSResources->system().execAsUser( S ); |
104 | Log(("FAILED %s-cNN-allowed\n", argv[1] )); | ||
105 | // if we come here , failed | ||
106 | printf( "%s-cNN-disallowed", argv[1] ); | ||
107 | } | 122 | } |
108 | } | 123 | } |
109 | break; | 124 | break; |
110 | case ACT_REGEN : | 125 | case ACT_REGEN : |
@@ -116,19 +131,20 @@ int main( int argc, char * argv[] ) { | |||
116 | break; | 131 | break; |
117 | case ACT_PROMPT : | 132 | case ACT_PROMPT : |
118 | { ActivateProfile AP(argv[1]); | 133 | { ActivateProfile AP(argv[1]); |
119 | if( AP.exec() == QDialog::Accepted ) { | 134 | if( AP.exec() == QDialog::Accepted ) { |
120 | Log(("%s-c%ld-allowed\n", | 135 | Log(("allow profile %ld for %s\n", |
121 | argv[1], AP.selectedProfile() )); | 136 | AP.selectedProfile(), argv[1] )); |
122 | printf( "%s-c%ld-allowed", argv[1], AP.selectedProfile() ); | 137 | printf( "A%ld%s\n", AP.selectedProfile(), argv[1] ); |
123 | } else { | 138 | } else { |
124 | Log(("%s-c%NN-disallowed\n", argv[1] )); | 139 | Log(("disallow %s\n", argv[1] )); |
125 | printf( "%s-cNN-disallowed", argv[1] ); | 140 | printf( "D-%s\n", argv[1] ); |
126 | } | 141 | } |
127 | } | 142 | } |
128 | break; | 143 | break; |
129 | case ACT_VPN : | 144 | case ACT_PROMPTVPN : |
130 | { ActivateVPN AVPN; | 145 | { ActivateVPN AVPN( argv[1] ); |
146 | Log(("Trigger vpns on interface %s\n", argv[1] )); | ||
131 | AVPN.exec(); | 147 | AVPN.exec(); |
132 | } | 148 | } |
133 | break; | 149 | break; |
134 | case ACT_GUI : | 150 | case ACT_GUI : |
diff --git a/noncore/settings/networksettings2/network/network_NNI.cpp b/noncore/settings/networksettings2/network/network_NNI.cpp index 78e6545..34dac54 100644 --- a/noncore/settings/networksettings2/network/network_NNI.cpp +++ b/noncore/settings/networksettings2/network/network_NNI.cpp | |||
@@ -115,12 +115,12 @@ short ANetwork::generateFile( SystemFile &SF, | |||
115 | Log(("Generate Network for %s\n", SF.name().latin1() )); | 115 | Log(("Generate Network for %s\n", SF.name().latin1() )); |
116 | // we can safely call from here since device item is deeper | 116 | // we can safely call from here since device item is deeper |
117 | if( Data.UseDHCP ) { | 117 | if( Data.UseDHCP ) { |
118 | SF << "iface " | 118 | SF << "iface " |
119 | << NIC | 119 | << "A" |
120 | << "-c" | ||
121 | << connection()->number() | 120 | << connection()->number() |
122 | << "-allowed inet dhcp" | 121 | << NIC |
122 | << " inet dhcp" | ||
123 | << endl; | 123 | << endl; |
124 | SF << " up echo \"" | 124 | SF << " up echo \"" |
125 | << NIC | 125 | << NIC |
126 | << "\" > /tmp/profile-" | 126 | << "\" > /tmp/profile-" |
@@ -138,11 +138,12 @@ short ANetwork::generateFile( SystemFile &SF, | |||
138 | << ".up" | 138 | << ".up" |
139 | << endl; | 139 | << endl; |
140 | } else { | 140 | } else { |
141 | SF << "iface " | 141 | SF << "iface " |
142 | << NIC << "-c" | 142 | << "A" |
143 | << connection()->number() | 143 | << connection()->number() |
144 | << "-allowed inet static" | 144 | << NIC |
145 | << " inet static" | ||
145 | << endl; | 146 | << endl; |
146 | SF << " up echo \"" | 147 | SF << " up echo \"" |
147 | << NIC | 148 | << NIC |
148 | << "\" > /tmp/profile-" | 149 | << "\" > /tmp/profile-" |
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp index 2c93d9d..74467ad 100644 --- a/noncore/settings/networksettings2/network/networkrun.cpp +++ b/noncore/settings/networksettings2/network/networkrun.cpp | |||
@@ -5,9 +5,9 @@ | |||
5 | 5 | ||
6 | State_t NetworkRun::detectState( void ) { | 6 | State_t NetworkRun::detectState( void ) { |
7 | InterfaceInfo * II = nodeCollection()->assignedInterface(); | 7 | InterfaceInfo * II = nodeCollection()->assignedInterface(); |
8 | 8 | ||
9 | Log(( "Interface %p : %d\n", II, (II) ? II->IsUp : 0 )); | 9 | Log(( "Interface %p %p : %d\n", II, nodeCollection(), (II) ? II->IsUp : 0 )); |
10 | if( II && II->IsUp ) { | 10 | if( II && II->IsUp ) { |
11 | // device has assigned interface | 11 | // device has assigned interface |
12 | return IsUp; | 12 | return IsUp; |
13 | } | 13 | } |
@@ -37,11 +37,12 @@ QString NetworkRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | |||
37 | } else { | 37 | } else { |
38 | return QString(); | 38 | return QString(); |
39 | } | 39 | } |
40 | 40 | ||
41 | SL << QString().sprintf( "%s=%s-c%d-allowed", | 41 | SL << QString().sprintf( "%s=A%ld%s", |
42 | II->Name.latin1(), II->Name.latin1(), | 42 | II->Name.latin1(), |
43 | nodeCollection()->number() ); | 43 | nodeCollection()->number(), |
44 | II->Name.latin1() ); | ||
44 | 45 | ||
45 | if( ! NSResources->system().runAsRoot( SL ) ) { | 46 | if( ! NSResources->system().runAsRoot( SL ) ) { |
46 | return QString("Cannot call %1").arg(SL.join(" ")); | 47 | return QString("Cannot call %1").arg(SL.join(" ")); |
47 | } | 48 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp index 3479abb..b81dcaa 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.cpp +++ b/noncore/settings/networksettings2/networksettings2/resources.cpp | |||
@@ -246,8 +246,10 @@ const QString & TheNSResources::netNode2Description( const char * s ) { | |||
246 | } | 246 | } |
247 | 247 | ||
248 | void TheNSResources::addConnection( NodeCollection * NC, bool Dangling ) { | 248 | void TheNSResources::addConnection( NodeCollection * NC, bool Dangling ) { |
249 | ANetNodeInstance * NNI; | 249 | ANetNodeInstance * NNI; |
250 | Log(( "Add Connection %s, Dangling %d\n", | ||
251 | NC->name().latin1(), Dangling )); | ||
250 | if( Dangling ) { | 252 | if( Dangling ) { |
251 | DanglingConnectionsMap.insert( NC->name(), NC ); | 253 | DanglingConnectionsMap.insert( NC->name(), NC ); |
252 | } else { | 254 | } else { |
253 | ConnectionsMap.insert( NC->name(), NC ); | 255 | ConnectionsMap.insert( NC->name(), NC ); |
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h index b27cda1..51c4250 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.h +++ b/noncore/settings/networksettings2/networksettings2/resources.h | |||
@@ -109,9 +109,9 @@ public : | |||
109 | NodeCollection * getConnection( int nr ); | 109 | NodeCollection * getConnection( int nr ); |
110 | Name2Connection_t & connections( void ) | 110 | Name2Connection_t & connections( void ) |
111 | { return ConnectionsMap; } | 111 | { return ConnectionsMap; } |
112 | Name2Connection_t & danglingConnections( void ) | 112 | Name2Connection_t & danglingConnections( void ) |
113 | { return ConnectionsMap; } | 113 | { return DanglingConnectionsMap; } |
114 | 114 | ||
115 | inline bool userKnown( void ) | 115 | inline bool userKnown( void ) |
116 | { return CurrentUser.known(); } | 116 | { return CurrentUser.known(); } |
117 | CurrentQPEUser & currentUser( void ) | 117 | CurrentQPEUser & currentUser( void ) |
diff --git a/noncore/settings/networksettings2/networksettings2/system.cpp b/noncore/settings/networksettings2/networksettings2/system.cpp index f027d35..a290f08 100644 --- a/noncore/settings/networksettings2/networksettings2/system.cpp +++ b/noncore/settings/networksettings2/networksettings2/system.cpp | |||
@@ -62,9 +62,9 @@ QDict<InterfaceInfo> & System::interfaces( void ) { | |||
62 | int System::runAsRoot( QStringList & S, MyProcess * Prc ) { | 62 | int System::runAsRoot( QStringList & S, MyProcess * Prc ) { |
63 | char * usr = getenv("USER"); | 63 | char * usr = getenv("USER"); |
64 | 64 | ||
65 | if( S.count() == 0 ) { | 65 | if( S.count() == 0 ) { |
66 | // loophole to start shell | 66 | // close loophole to start shell |
67 | return 8888; | 67 | return 8888; |
68 | } | 68 | } |
69 | if( usr == 0 || strcmp( usr, "root" ) ) { | 69 | if( usr == 0 || strcmp( usr, "root" ) ) { |
70 | // unknown or non-root user -> use SUDO | 70 | // unknown or non-root user -> use SUDO |
@@ -118,14 +118,15 @@ int System::runAsRoot( QStringList & S, MyProcess * Prc ) { | |||
118 | // all is fine | 118 | // all is fine |
119 | return 1; | 119 | return 1; |
120 | } | 120 | } |
121 | 121 | ||
122 | int System::execAsUser( QStringList & SL ) { | 122 | int System::execAsUser( QStringList & SL, bool Synchronous ) { |
123 | MyProcess * P = new MyProcess(); | 123 | MyProcess * P = new MyProcess(); |
124 | CurrentQPEUser CU = NSResources->currentUser(); | 124 | CurrentQPEUser CU = NSResources->currentUser(); |
125 | char * usr = getenv("USER"); | 125 | char * usr = getenv("USER"); |
126 | 126 | ||
127 | if( strcmp( usr, "root" ) == 0 ) { | 127 | if( usr == 0 || |
128 | strcmp( usr, "root" ) == 0 ) { | ||
128 | // find user running qpe | 129 | // find user running qpe |
129 | if( CU.UserName.isEmpty() ) { | 130 | if( CU.UserName.isEmpty() ) { |
130 | // if we come here, the exec was not successfull | 131 | // if we come here, the exec was not successfull |
131 | Log(("User not known \n" )); | 132 | Log(("User not known \n" )); |
@@ -152,18 +153,23 @@ int System::execAsUser( QStringList & SL ) { | |||
152 | Log(("Executing as user %s : %s\n", | 153 | Log(("Executing as user %s : %s\n", |
153 | CU.UserName.latin1(), | 154 | CU.UserName.latin1(), |
154 | SL.join( " " ).latin1() )); | 155 | SL.join( " " ).latin1() )); |
155 | 156 | ||
156 | int rv = ( P->process().start( OProcess::DontCare, | 157 | P->setEchoMode( Synchronous ); |
157 | OProcess::NoCommunication ) ); | 158 | |
159 | bool rv = P->process().start( | ||
160 | (Synchronous) ? OProcess::Block : | ||
161 | OProcess::DontCare, | ||
162 | (Synchronous) ? OProcess::AllOutput : | ||
163 | OProcess::NoCommunication ); | ||
158 | delete P; | 164 | delete P; |
159 | 165 | ||
160 | if( rv ) { | 166 | if( ! rv ) { |
161 | // if we come here, the exec was not successfull | 167 | // if we come here, the exec was not successfull |
162 | Log(("Could not exec : %d\n", errno )); | 168 | Log(("Could not exec : %d\n", errno )); |
163 | } | 169 | } |
164 | 170 | ||
165 | return ! rv; | 171 | return rv; |
166 | } | 172 | } |
167 | 173 | ||
168 | void System::SLOT_ProcessExited( MyProcess * P ) { | 174 | void System::SLOT_ProcessExited( MyProcess * P ) { |
169 | QString R; | 175 | QString R; |
@@ -540,8 +546,13 @@ MyProcess::~MyProcess() { | |||
540 | delete P; | 546 | delete P; |
541 | } | 547 | } |
542 | 548 | ||
543 | void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { | 549 | void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { |
550 | if( EchoMode ) { | ||
551 | write( 1, Buf, len ); | ||
552 | return; | ||
553 | } | ||
554 | |||
544 | char * LB = (char *)alloca( len + 1 ); | 555 | char * LB = (char *)alloca( len + 1 ); |
545 | memcpy( LB, Buf, len ); | 556 | memcpy( LB, Buf, len ); |
546 | LB[len] = '\0'; | 557 | LB[len] = '\0'; |
547 | 558 | ||
@@ -561,8 +572,13 @@ void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { | |||
561 | StdoutBuffer = SL[ SL.count()-1 ]; | 572 | StdoutBuffer = SL[ SL.count()-1 ]; |
562 | } | 573 | } |
563 | 574 | ||
564 | void MyProcess::SLOT_Stderr( Opie::Core::OProcess * , char * Buf, int len ) { | 575 | void MyProcess::SLOT_Stderr( Opie::Core::OProcess * , char * Buf, int len ) { |
576 | if( EchoMode ) { | ||
577 | write( 2, Buf, len ); | ||
578 | return; | ||
579 | } | ||
580 | |||
565 | char * LB = (char *)alloca( len + 1 ); | 581 | char * LB = (char *)alloca( len + 1 ); |
566 | memcpy( LB, Buf, len ); | 582 | memcpy( LB, Buf, len ); |
567 | LB[len] = '\0'; | 583 | LB[len] = '\0'; |
568 | 584 | ||
diff --git a/noncore/settings/networksettings2/networksettings2/system.h b/noncore/settings/networksettings2/networksettings2/system.h index f7a7274..ebee0d5 100644 --- a/noncore/settings/networksettings2/networksettings2/system.h +++ b/noncore/settings/networksettings2/networksettings2/system.h | |||
@@ -28,8 +28,12 @@ public : | |||
28 | 28 | ||
29 | inline OProcess & process() | 29 | inline OProcess & process() |
30 | { return *P; } | 30 | { return *P; } |
31 | 31 | ||
32 | inline void setEchoMode( bool M ) { | ||
33 | EchoMode = M; | ||
34 | } | ||
35 | |||
32 | public slots : | 36 | public slots : |
33 | 37 | ||
34 | void SLOT_Stdout( Opie::Core::OProcess * P, char *, int ); | 38 | void SLOT_Stdout( Opie::Core::OProcess * P, char *, int ); |
35 | void SLOT_Stderr( Opie::Core::OProcess * P, char *, int ); | 39 | void SLOT_Stderr( Opie::Core::OProcess * P, char *, int ); |
@@ -45,8 +49,10 @@ private : | |||
45 | 49 | ||
46 | QString StdoutBuffer; | 50 | QString StdoutBuffer; |
47 | QString StderrBuffer; | 51 | QString StderrBuffer; |
48 | OProcess * P; | 52 | OProcess * P; |
53 | // output all output to my output | ||
54 | bool EchoMode; | ||
49 | }; | 55 | }; |
50 | 56 | ||
51 | class InterfaceInfo { | 57 | class InterfaceInfo { |
52 | 58 | ||
@@ -103,9 +109,9 @@ public : | |||
103 | // exec command as root | 109 | // exec command as root |
104 | int runAsRoot( QStringList & S, MyProcess * Prc = 0 ); | 110 | int runAsRoot( QStringList & S, MyProcess * Prc = 0 ); |
105 | 111 | ||
106 | // exec command as user | 112 | // exec command as user |
107 | int execAsUser( QStringList & Cmd ); | 113 | int execAsUser( QStringList & Cmd, bool Synchronous = 0 ); |
108 | 114 | ||
109 | // refresh stats for this interface | 115 | // refresh stats for this interface |
110 | void refreshStatistics( InterfaceInfo & ); | 116 | void refreshStatistics( InterfaceInfo & ); |
111 | 117 | ||
diff --git a/noncore/settings/networksettings2/networksettings2/systemfile.cpp b/noncore/settings/networksettings2/networksettings2/systemfile.cpp index 1b1988e..0314765 100644 --- a/noncore/settings/networksettings2/networksettings2/systemfile.cpp +++ b/noncore/settings/networksettings2/networksettings2/systemfile.cpp | |||
@@ -135,9 +135,8 @@ bool SystemFile::close( void ) { | |||
135 | delete F; | 135 | delete F; |
136 | F = 0; | 136 | F = 0; |
137 | 137 | ||
138 | if( ! InAppend ) { | 138 | if( ! InAppend ) { |
139 | odebug << "Rename " << OldP << " to " << Path << oendl; | ||
140 | return ( rename( OldP.latin1(), Path.latin1() ) >= 0 ); | 139 | return ( rename( OldP.latin1(), Path.latin1() ) >= 0 ); |
141 | } | 140 | } |
142 | return 1; | 141 | return 1; |
143 | } | 142 | } |
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp index d76353a..39031ed 100644 --- a/noncore/settings/networksettings2/nsdata.cpp +++ b/noncore/settings/networksettings2/nsdata.cpp | |||
@@ -60,8 +60,10 @@ NetworkSettingsData::NetworkSettingsData( void ) { | |||
60 | NC = NSResources->getConnection( profilenr ); | 60 | NC = NSResources->getConnection( profilenr ); |
61 | if( NC ) { | 61 | if( NC ) { |
62 | NC->assignInterface( | 62 | NC->assignInterface( |
63 | NSResources->system().findInterface( interfacename ) ); | 63 | NSResources->system().findInterface( interfacename ) ); |
64 | Log(( "Assign interface %p\n", | ||
65 | NC->assignedInterface() )); | ||
64 | } else { | 66 | } else { |
65 | Log(( "Profile nr %d no longer defined\n", | 67 | Log(( "Profile nr %d no longer defined\n", |
66 | profilenr )); | 68 | profilenr )); |
67 | } | 69 | } |
@@ -642,9 +644,10 @@ QString NetworkSettingsData::generateSettings( void ) { | |||
642 | } | 644 | } |
643 | return S; | 645 | return S; |
644 | } | 646 | } |
645 | 647 | ||
646 | QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interface ) { | 648 | QList<NodeCollection> NetworkSettingsData::collectPossible( |
649 | const QString & Interface ) { | ||
647 | // collect connections that can work on top of this interface | 650 | // collect connections that can work on top of this interface |
648 | NodeCollection * NC; | 651 | NodeCollection * NC; |
649 | QList<NodeCollection> PossibleConnections; | 652 | QList<NodeCollection> PossibleConnections; |
650 | Name2Connection_t & M = NSResources->connections(); | 653 | Name2Connection_t & M = NSResources->connections(); |
@@ -655,12 +658,13 @@ QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interfa | |||
655 | ++it ) { | 658 | ++it ) { |
656 | NC = it.current(); | 659 | NC = it.current(); |
657 | // check if this profile handles the requested interface | 660 | // check if this profile handles the requested interface |
658 | if( NC->handlesInterface( Interface ) && // if different Intf. | 661 | if( NC->handlesInterface( Interface ) && // if different Intf. |
659 | NC->state() != Disabled && // if not enabled | 662 | NC->state() != Disabled && // if enabled |
660 | NC->state() != IsUp // if already used | 663 | NC->state() != IsUp // if already used |
661 | ) { | 664 | ) { |
662 | Log( ( "Append %s for %s\n", NC->name().latin1(), Interface)); | 665 | Log( ( "Append %s for %s\n", |
666 | NC->name().latin1(), Interface.latin1() )); | ||
663 | PossibleConnections.append( NC ); | 667 | PossibleConnections.append( NC ); |
664 | } | 668 | } |
665 | } | 669 | } |
666 | return PossibleConnections; | 670 | return PossibleConnections; |
@@ -672,17 +676,17 @@ QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interfa | |||
672 | 676 | ||
673 | if allowed, echo Interface-allowed else Interface-disallowed | 677 | if allowed, echo Interface-allowed else Interface-disallowed |
674 | */ | 678 | */ |
675 | 679 | ||
676 | bool NetworkSettingsData::canStart( const char * Interface ) { | 680 | bool NetworkSettingsData::canStart( const QString & Interface ) { |
677 | // load situation | 681 | // load situation |
678 | NodeCollection * NC = 0; | 682 | NodeCollection * NC = 0; |
679 | QList<NodeCollection> PossibleConnections; | 683 | QList<NodeCollection> PossibleConnections; |
680 | 684 | ||
681 | PossibleConnections = collectPossible( Interface ); | 685 | PossibleConnections = collectPossible( Interface ); |
682 | 686 | ||
683 | Log( ( "for %s : Possiblilies %d\n", | 687 | Log( ( "for %s : Possiblilies %d\n", |
684 | Interface, PossibleConnections.count() )); | 688 | Interface.latin1(), PossibleConnections.count() )); |
685 | switch( PossibleConnections.count() ) { | 689 | switch( PossibleConnections.count() ) { |
686 | case 0 : // no connections | 690 | case 0 : // no connections |
687 | break; | 691 | break; |
688 | case 1 : // one connection | 692 | case 1 : // one connection |
@@ -705,27 +709,27 @@ bool NetworkSettingsData::canStart( const char * Interface ) { | |||
705 | // try to UP the device | 709 | // try to UP the device |
706 | { QString S= NC->setState( Activate ); | 710 | { QString S= NC->setState( Activate ); |
707 | if( ! S.isEmpty() ) { | 711 | if( ! S.isEmpty() ) { |
708 | // could not bring device Online -> try other alters | 712 | // could not bring device Online -> try other alters |
709 | Log(( "%s-c%d-disallowed : %s\n", | 713 | Log(( "disallow %ld for %s : %s\n", |
710 | Interface, NC->number(), S.latin1() )); | 714 | NC->number(), Interface.latin1(), S.latin1() )); |
711 | break; | 715 | break; |
712 | } | 716 | } |
713 | // interface assigned | 717 | // interface assigned |
714 | } | 718 | } |
715 | // FT | 719 | // FT |
716 | case Available : | 720 | case Available : |
717 | case IsUp : // also called for 'ifdown' | 721 | case IsUp : // also called for 'ifdown' |
718 | // device is ready -> done | 722 | // device is ready -> done |
719 | Log(( "%s-c%d-allowed\n", Interface, NC->number() )); | 723 | Log(( "allow %ld for %s\n", NC->number(), Interface.latin1())); |
720 | printf( "%s-c%d-allowed\n", Interface, NC->number() ); | 724 | printf( "A%ld%s\n", NC->number(), Interface.latin1() ); |
721 | return 0; | 725 | return 0; |
722 | } | 726 | } |
723 | } | 727 | } |
724 | 728 | ||
725 | // if we come here no alternatives are possible | 729 | // if we come here no alternatives are possible |
726 | Log(( "%s-cnn-disallowed\n", Interface )); | 730 | Log(( "disallow %s\n", Interface.latin1())); |
727 | printf( "%s-cnn-disallowed\n", Interface ); | 731 | printf( "D-%s\n", Interface.latin1() ); |
728 | return 0; | 732 | return 0; |
729 | } | 733 | } |
730 | 734 | ||
731 | bool NetworkSettingsData::isModified( void ) { | 735 | bool NetworkSettingsData::isModified( void ) { |
@@ -740,4 +744,44 @@ bool NetworkSettingsData::isModified( void ) { | |||
740 | } | 744 | } |
741 | } | 745 | } |
742 | return 0; | 746 | return 0; |
743 | } | 747 | } |
748 | |||
749 | bool NetworkSettingsData::couldBeTriggered( const QString & Interface ) { | ||
750 | // load situation | ||
751 | QList<NodeCollection> PossibleTriggered; | ||
752 | |||
753 | PossibleTriggered = collectTriggered( Interface ); | ||
754 | |||
755 | Log( ( "for %s : Possiblilies %d\n", | ||
756 | Interface.latin1(), PossibleTriggered.count() )); | ||
757 | |||
758 | return ( PossibleTriggered.count() ) ? 1 : 0; | ||
759 | } | ||
760 | |||
761 | QList<NodeCollection> NetworkSettingsData::collectTriggered( | ||
762 | const QString & Interface ) { | ||
763 | |||
764 | // collect connections that could be triggered by this interface | ||
765 | NodeCollection * NC; | ||
766 | QList<NodeCollection> PossibleTriggered; | ||
767 | |||
768 | // for all connections | ||
769 | Name2Connection_t & M = NSResources->connections(); | ||
770 | |||
771 | for( QDictIterator<NodeCollection> it(M); | ||
772 | it.current(); | ||
773 | ++it ) { | ||
774 | NC = it.current(); | ||
775 | // check if this profile handles the requested interface | ||
776 | if( NC->triggeredBy( Interface ) && // if different Intf. | ||
777 | NC->state() != Disabled && // if enabled | ||
778 | NC->state() != IsUp // if already used | ||
779 | ) { | ||
780 | Log( ( "Append %s for %s\n", | ||
781 | NC->name().latin1(), Interface.latin1() )); | ||
782 | PossibleTriggered.append( NC ); | ||
783 | } | ||
784 | } | ||
785 | return PossibleTriggered; | ||
786 | } | ||
787 | |||
diff --git a/noncore/settings/networksettings2/nsdata.h b/noncore/settings/networksettings2/nsdata.h index a0ae7d1..5791c1e 100644 --- a/noncore/settings/networksettings2/nsdata.h +++ b/noncore/settings/networksettings2/nsdata.h | |||
@@ -18,14 +18,18 @@ public : | |||
18 | bool isModified( void ); | 18 | bool isModified( void ); |
19 | inline void setModified( bool M ) | 19 | inline void setModified( bool M ) |
20 | { ForceModified = M; } | 20 | { ForceModified = M; } |
21 | 21 | ||
22 | QList<NodeCollection> collectPossible( const char * Interface ); | 22 | QList<NodeCollection> collectPossible( const QString & Interface ); |
23 | // return TRUE if we need gui to decide | 23 | // return TRUE if we need gui to decide |
24 | bool canStart( const char * Interface ); | 24 | bool canStart( const QString & Interface ); |
25 | // return TRUE if there are vpns that could be triggered | ||
26 | // by this interface | ||
27 | bool couldBeTriggered( const QString & Interface ); | ||
25 | 28 | ||
26 | private : | 29 | private : |
27 | 30 | ||
31 | QList<NodeCollection> collectTriggered( const QString &Interface ); | ||
28 | bool ForceModified; | 32 | bool ForceModified; |
29 | 33 | ||
30 | // collect strings in config file nobody wants | 34 | // collect strings in config file nobody wants |
31 | QStringList LeftOvers; | 35 | QStringList LeftOvers; |
diff --git a/noncore/settings/networksettings2/profile/profile_NNI.cpp b/noncore/settings/networksettings2/profile/profile_NNI.cpp index a1e1254..fc2d809 100644 --- a/noncore/settings/networksettings2/profile/profile_NNI.cpp +++ b/noncore/settings/networksettings2/profile/profile_NNI.cpp | |||
@@ -1,4 +1,5 @@ | |||
1 | #include <qpe/qpeapplication.h> | ||
1 | #include <opie2/odebug.h> | 2 | #include <opie2/odebug.h> |
2 | #include "profileedit.h" | 3 | #include "profileedit.h" |
3 | #include "profile_NNI.h" | 4 | #include "profile_NNI.h" |
4 | #include "profile_NN.h" | 5 | #include "profile_NN.h" |
@@ -61,9 +62,13 @@ short AProfile::generateFileEmbedded( SystemFile & SF, | |||
61 | if( SF.name() == "interfaces" ) { | 62 | if( SF.name() == "interfaces" ) { |
62 | Log(("Generate Profile for %s\n", SF.name().latin1() )); | 63 | Log(("Generate Profile for %s\n", SF.name().latin1() )); |
63 | if( Data.TriggerVPN ) { | 64 | if( Data.TriggerVPN ) { |
64 | // this profile triggers VPN -> insert trigger | 65 | // this profile triggers VPN -> insert trigger |
65 | SF << " up networksettings2 --triggervpn" | 66 | SF << " up " |
67 | << QPEApplication::qpeDir() | ||
68 | << "bin/networksettings2 --triggervpn " | ||
69 | << runtime()->device()->netNode()->nodeClass()->genNic( DevNr ) | ||
70 | << " || true" | ||
66 | << endl; | 71 | << endl; |
67 | rvl = 0; | 72 | rvl = 0; |
68 | } | 73 | } |
69 | } | 74 | } |