author | wimpie <wimpie> | 2004-08-19 21:48:46 (UTC) |
---|---|---|
committer | wimpie <wimpie> | 2004-08-19 21:48:46 (UTC) |
commit | 45616f57d3871827a247c1962e7c88699d111002 (patch) (unidiff) | |
tree | 7ad9cbe10eb624cb08a7a41944e59f0371547517 /noncore | |
parent | f58fb0a08321b6d8a9ce1bac2ce4b7eb67c27347 (diff) | |
download | opie-45616f57d3871827a247c1962e7c88699d111002.zip opie-45616f57d3871827a247c1962e7c88699d111002.tar.gz opie-45616f57d3871827a247c1962e7c88699d111002.tar.bz2 |
Network_NN.cpp : had to generate full path to networksettings since
ifup (when run from hotplug) does not know about QPEDIR ...
main.cpp : a bit more logging
nsdata.cpp resources : optimized user detection code, report error
when user could not be detected (instead of gracefull crash)
5 files changed, 77 insertions, 58 deletions
diff --git a/noncore/settings/networksettings2/main.cpp b/noncore/settings/networksettings2/main.cpp index 200e31b..9004d19 100644 --- a/noncore/settings/networksettings2/main.cpp +++ b/noncore/settings/networksettings2/main.cpp | |||
@@ -86,40 +86,44 @@ int main( int argc, char * argv[] ) { | |||
86 | case ACT_REQUEST : | 86 | case ACT_REQUEST : |
87 | { NetworkSettingsData NS; | 87 | { NetworkSettingsData NS; |
88 | if( NS.canStart( argv[1] ) ) { | 88 | if( NS.canStart( argv[1] ) ) { |
89 | QString S; | 89 | QString S; |
90 | S.sprintf( QPEApplication::qpeDir()+ | 90 | S.sprintf( QPEApplication::qpeDir()+ |
91 | "/bin/networksettings2" ); | 91 | "/bin/networksettings2" ); |
92 | char * MyArgv[4]; | 92 | char * MyArgv[4]; |
93 | MyArgv[0] = "networksettings2"; | 93 | MyArgv[0] = "networksettings2"; |
94 | MyArgv[1] = "--prompt"; | 94 | MyArgv[1] = "--prompt"; |
95 | MyArgv[2] = argv[1]; | 95 | MyArgv[2] = argv[1]; |
96 | MyArgv[3] = NULL; | 96 | MyArgv[3] = NULL; |
97 | NSResources->system().execAsUser( S, MyArgv ); | 97 | NSResources->system().execAsUser( S, MyArgv ); |
98 | Log(("FAILED %s-cNN-allowed\n", argv[1] )); | ||
98 | // if we come here , failed | 99 | // if we come here , failed |
99 | printf( "%s-cNN-disallowed", argv[1] ); | 100 | printf( "%s-cNN-disallowed", argv[1] ); |
100 | } | 101 | } |
101 | } | 102 | } |
102 | break; | 103 | break; |
103 | case ACT_REGEN : | 104 | case ACT_REGEN : |
104 | { NetworkSettingsData NS; | 105 | { NetworkSettingsData NS; |
105 | // regen returns 0 if OK | 106 | // regen returns 0 if OK |
106 | rv = (NS.regenerate()) ? 1 : 0; | 107 | rv = (NS.regenerate()) ? 1 : 0; |
107 | } | 108 | } |
108 | break; | 109 | break; |
109 | case ACT_PROMPT : | 110 | case ACT_PROMPT : |
110 | { ActivateProfile AP(argv[1]); | 111 | { ActivateProfile AP(argv[1]); |
111 | if( AP.exec() == QDialog::Accepted ) { | 112 | if( AP.exec() == QDialog::Accepted ) { |
113 | Log(("%s-c%ld-allowed\n", | ||
114 | argv[1], AP.selectedProfile() )); | ||
112 | printf( "%s-c%ld-allowed", argv[1], AP.selectedProfile() ); | 115 | printf( "%s-c%ld-allowed", argv[1], AP.selectedProfile() ); |
113 | } else { | 116 | } else { |
117 | Log(("%s-c%NN-disallowed\n", argv[1] )); | ||
114 | printf( "%s-cNN-disallowed", argv[1] ); | 118 | printf( "%s-cNN-disallowed", argv[1] ); |
115 | } | 119 | } |
116 | } | 120 | } |
117 | break; | 121 | break; |
118 | case ACT_VPN : | 122 | case ACT_VPN : |
119 | { ActivateVPN AVPN; | 123 | { ActivateVPN AVPN; |
120 | AVPN.exec(); | 124 | AVPN.exec(); |
121 | } | 125 | } |
122 | break; | 126 | break; |
123 | case ACT_GUI : | 127 | case ACT_GUI : |
124 | { QWidget * W = new NetworkSettings(0); | 128 | { QWidget * W = new NetworkSettings(0); |
125 | TheApp->setMainWidget( W ); | 129 | TheApp->setMainWidget( W ); |
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp index 1feffdb..b5c41bf 100644 --- a/noncore/settings/networksettings2/network/network_NN.cpp +++ b/noncore/settings/networksettings2/network/network_NN.cpp | |||
@@ -1,12 +1,13 @@ | |||
1 | #include <qpe/qpeapplication.h> | ||
1 | #include <asdevice.h> | 2 | #include <asdevice.h> |
2 | #include "network_NN.h" | 3 | #include "network_NN.h" |
3 | #include "network_NNI.h" | 4 | #include "network_NNI.h" |
4 | 5 | ||
5 | static const char * NetworkNeeds[] = | 6 | static const char * NetworkNeeds[] = |
6 | { "device", | 7 | { "device", |
7 | 0 | 8 | 0 |
8 | }; | 9 | }; |
9 | 10 | ||
10 | /** | 11 | /** |
11 | * Constructor, find all of the possible interfaces | 12 | * Constructor, find all of the possible interfaces |
12 | */ | 13 | */ |
@@ -44,25 +45,27 @@ short NetworkNetNode::generateFile( const QString & ID, | |||
44 | QString NIC = NNI->runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); | 45 | QString NIC = NNI->runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); |
45 | 46 | ||
46 | if( ID == "interfaces" ) { | 47 | if( ID == "interfaces" ) { |
47 | Log(("Generate entry for %s in %s\n", NIC.latin1(), ID.latin1() )); | 48 | Log(("Generate entry for %s in %s\n", NIC.latin1(), ID.latin1() )); |
48 | // generate mapping stanza for this interface | 49 | // generate mapping stanza for this interface |
49 | TS << "# check if " | 50 | TS << "# check if " |
50 | << NIC | 51 | << NIC |
51 | << " can be brought UP" | 52 | << " can be brought UP" |
52 | << endl; | 53 | << endl; |
53 | TS << "mapping " | 54 | TS << "mapping " |
54 | << NIC | 55 | << NIC |
55 | << endl; | 56 | << endl; |
56 | TS << " script networksettings2-request" | 57 | TS << " script " |
58 | << QPEApplication::qpeDir() | ||
59 | << "/bin/networksettings2-request" | ||
57 | << endl | 60 | << endl |
58 | << endl; | 61 | << endl; |
59 | return 0; | 62 | return 0; |
60 | } | 63 | } |
61 | return 1; | 64 | return 1; |
62 | } | 65 | } |
63 | 66 | ||
64 | const char ** NetworkNetNode::needs( void ) { | 67 | const char ** NetworkNetNode::needs( void ) { |
65 | return NetworkNeeds; | 68 | return NetworkNeeds; |
66 | } | 69 | } |
67 | 70 | ||
68 | const char * NetworkNetNode::provides( void ) { | 71 | const char * NetworkNetNode::provides( void ) { |
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp index 7ece817..2f17693 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.cpp +++ b/noncore/settings/networksettings2/networksettings2/resources.cpp | |||
@@ -285,39 +285,42 @@ void TheNSResources::renumberConnections( void ) { | |||
285 | } | 285 | } |
286 | } | 286 | } |
287 | */ | 287 | */ |
288 | 288 | ||
289 | typedef struct EnvVars { | 289 | typedef struct EnvVars { |
290 | char * Name; | 290 | char * Name; |
291 | int Len; | 291 | int Len; |
292 | } EnvVar_t; | 292 | } EnvVar_t; |
293 | 293 | ||
294 | #define AnEV(x) x, sizeof(x)-1 | 294 | #define AnEV(x) x, sizeof(x)-1 |
295 | 295 | ||
296 | static EnvVar_t EV[] = { | 296 | static EnvVar_t EV[] = { |
297 | // AnEV( "HOME=" ), -> SPECIAL | 297 | AnEV( "HOME" ), |
298 | // AnEV( "LOGNAME=" ), -> SPECIAL | 298 | AnEV( "LOGNAME" ), |
299 | AnEV( "USER=" ), | 299 | AnEV( "USER" ), |
300 | AnEV( "LD_LIBRARY_PATH=" ), | 300 | AnEV( "LD_LIBRARY_PATH" ), |
301 | AnEV( "PATH=" ), | 301 | AnEV( "PATH" ), |
302 | AnEV( "QTDIR=" ), | 302 | AnEV( "QTDIR" ), |
303 | AnEV( "OPIEDIR=" ), | 303 | AnEV( "OPIEDIR" ), |
304 | AnEV( "SHELL=" ), | 304 | AnEV( "SHELL" ), |
305 | { NULL, 0 } | 305 | { NULL, 0 } |
306 | }; | 306 | }; |
307 | 307 | ||
308 | void TheNSResources::detectCurrentUser( void ) { | 308 | void TheNSResources::detectCurrentUser( void ) { |
309 | // find current running qpe | 309 | // find current running qpe |
310 | QString QPEEnvFile = ""; | 310 | QString QPEEnvFile = ""; |
311 | 311 | ||
312 | CurrentUser.UserName = ""; | ||
313 | CurrentUser.HomeDir = ""; | ||
314 | |||
312 | if( getenv( "OPIEDIR" ) == 0 ) { | 315 | if( getenv( "OPIEDIR" ) == 0 ) { |
313 | // nothing known | 316 | // nothing known |
314 | { // open proc dir and find all dirs in it | 317 | { // open proc dir and find all dirs in it |
315 | QRegExp R("[0-9]+"); | 318 | QRegExp R("[0-9]+"); |
316 | QDir ProcDir( "/proc" ); | 319 | QDir ProcDir( "/proc" ); |
317 | QFileInfo FI; | 320 | QFileInfo FI; |
318 | QStringList EL = ProcDir.entryList( QDir::Dirs ); | 321 | QStringList EL = ProcDir.entryList( QDir::Dirs ); |
319 | 322 | ||
320 | // print it out | 323 | // print it out |
321 | for ( QStringList::Iterator it = EL.begin(); | 324 | for ( QStringList::Iterator it = EL.begin(); |
322 | it != EL.end(); | 325 | it != EL.end(); |
323 | ++it ) { | 326 | ++it ) { |
@@ -358,50 +361,45 @@ void TheNSResources::detectCurrentUser( void ) { | |||
358 | 361 | ||
359 | while( (rd = read( fd, TB, sizeof(TB) ) ) > 0 ) { | 362 | while( (rd = read( fd, TB, sizeof(TB) ) ) > 0 ) { |
360 | Buf = (char *)realloc( Buf, BufSize+rd ); | 363 | Buf = (char *)realloc( Buf, BufSize+rd ); |
361 | memcpy( Buf+BufSize, TB, rd ); | 364 | memcpy( Buf+BufSize, TB, rd ); |
362 | BufSize += rd; | 365 | BufSize += rd; |
363 | } | 366 | } |
364 | 367 | ||
365 | char * Data = Buf; | 368 | char * Data = Buf; |
366 | char * DataEnd = Data+BufSize-1; | 369 | char * DataEnd = Data+BufSize-1; |
367 | 370 | ||
368 | // get env items out of list | 371 | // get env items out of list |
369 | while( Data < DataEnd ) { | 372 | while( Data < DataEnd ) { |
370 | if( strncmp( Data, "LOGNAME=", 8 ) == 0 ) { | ||
371 | CurrentUser.UserName = Data+8; | ||
372 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | ||
373 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | ||
374 | strdup( Data ); | ||
375 | } else if( strncmp( Data, "HOME=", 5 ) == 0 ) { | ||
376 | CurrentUser.HomeDir = Data+5; | ||
377 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | ||
378 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | ||
379 | strdup( Data ); | ||
380 | } else { | ||
381 | EnvVar_t * Run = EV; | ||
382 | while( Run->Name ) { | ||
383 | if( strncmp( Data, Run->Name, Run->Len ) == 0 ) { | ||
384 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | ||
385 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | ||
386 | strdup( Data ); | ||
387 | // put OPIEDIR in env | ||
388 | if( strcmp( Run->Name, "OPIEDIR=" ) == 0 ) { | ||
389 | putenv( CurrentUser.EnvList[CurrentUser.EnvList.size()-1] ); | ||
390 | 373 | ||
391 | } | 374 | EnvVar_t * Run = EV; |
392 | break; | 375 | while( Run->Name ) { |
376 | if( strncmp( Data, Run->Name, Run->Len ) == 0 && | ||
377 | Data[Run->Len] == '=' | ||
378 | ) { | ||
379 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | ||
380 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | ||
381 | strdup( Data ); | ||
382 | |||
383 | if( strcmp( Run->Name, "OPIEDIR" ) == 0 ) { | ||
384 | // put OPIEDIR in env | ||
385 | putenv( CurrentUser.EnvList[CurrentUser.EnvList.size()-1] ); | ||
386 | } else if( strcmp( Run->Name, "HOME" ) == 0 ) { | ||
387 | CurrentUser.HomeDir = Data+5; | ||
388 | } else if( strcmp( Run->Name, "LOGNAME" ) == 0 ) { | ||
389 | CurrentUser.UserName = Data+8; | ||
393 | } | 390 | } |
394 | Run ++; | 391 | break; |
395 | } | 392 | } |
393 | Run ++; | ||
396 | } | 394 | } |
397 | 395 | ||
398 | Data += strlen( Data )+1; | 396 | Data += strlen( Data )+1; |
399 | } | 397 | } |
400 | 398 | ||
401 | free( Buf ); | 399 | free( Buf ); |
402 | 400 | ||
403 | if( ! CurrentUser.UserName.isEmpty() ) { | 401 | if( ! CurrentUser.UserName.isEmpty() ) { |
404 | // find user info | 402 | // find user info |
405 | struct passwd pwd; | 403 | struct passwd pwd; |
406 | struct passwd * pwdres; | 404 | struct passwd * pwdres; |
407 | 405 | ||
@@ -412,42 +410,41 @@ void TheNSResources::detectCurrentUser( void ) { | |||
412 | CurrentUser.UserName.latin1(), errno )); | 410 | CurrentUser.UserName.latin1(), errno )); |
413 | return; | 411 | return; |
414 | } | 412 | } |
415 | CurrentUser.Uid = pwd.pw_uid; | 413 | CurrentUser.Uid = pwd.pw_uid; |
416 | CurrentUser.Gid = pwd.pw_gid; | 414 | CurrentUser.Gid = pwd.pw_gid; |
417 | } else{ | 415 | } else{ |
418 | CurrentUser.Uid = | 416 | CurrentUser.Uid = |
419 | CurrentUser.Gid = -1; | 417 | CurrentUser.Gid = -1; |
420 | } | 418 | } |
421 | } | 419 | } |
422 | 420 | ||
423 | } else { | 421 | } else { |
424 | CurrentUser.UserName = getenv( "LOGNAME" ); | 422 | char * X; |
425 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 423 | QString S; |
426 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | 424 | |
427 | strdup( CurrentUser.UserName ); | 425 | EnvVar_t * Run = EV; |
428 | 426 | while( Run->Name ) { | |
429 | CurrentUser.HomeDir = getenv( "HOME" ); | 427 | |
430 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 428 | if( ( X = getenv( Run->Name ) ) ) { |
431 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | 429 | Log(( "Env : %s = %s\n", Run->Name, X )); |
432 | strdup( CurrentUser.HomeDir ); | 430 | |
433 | 431 | S.sprintf( "%s=%s", Run->Name, X ); | |
434 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 432 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); |
435 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("USER"); | 433 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = |
436 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 434 | strdup( S.latin1() ); |
437 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("LD_LIBRARY_PATH"); | 435 | |
438 | 436 | if( strcmp( Run->Name, "LOGNAME" ) == 0 ) { | |
439 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 437 | CurrentUser.UserName = X; |
440 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("PATH"); | 438 | } else if( strcmp( Run->Name, "HOME" ) == 0 ) { |
441 | 439 | CurrentUser.HomeDir = X; | |
442 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 440 | } // regulare env var |
443 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("QTDIR"); | 441 | } else { |
444 | 442 | Log(("Could not determine %s\n", Run->Name )); | |
445 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 443 | } |
446 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("OPIEDIR"); | 444 | Run ++; |
447 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 445 | } |
448 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("SHELL"); | ||
449 | 446 | ||
450 | CurrentUser.Uid = getuid(); | 447 | CurrentUser.Uid = getuid(); |
451 | CurrentUser.Gid = getgid(); | 448 | CurrentUser.Gid = getgid(); |
452 | } | 449 | } |
453 | } | 450 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h index 16355ba..23b120e 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.h +++ b/noncore/settings/networksettings2/networksettings2/resources.h | |||
@@ -18,24 +18,27 @@ typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); | |||
18 | 18 | ||
19 | typedef struct NetNode_S { | 19 | typedef struct NetNode_S { |
20 | ANetNode * NetNode; | 20 | ANetNode * NetNode; |
21 | QLibrary * TheLibrary; | 21 | QLibrary * TheLibrary; |
22 | long NodeCountInLib; | 22 | long NodeCountInLib; |
23 | } NetNode_t; | 23 | } NetNode_t; |
24 | 24 | ||
25 | class CurrentQPEUser { | 25 | class CurrentQPEUser { |
26 | 26 | ||
27 | public : | 27 | public : |
28 | CurrentQPEUser() : UserName(), HomeDir(), EnvList() {} | 28 | CurrentQPEUser() : UserName(), HomeDir(), EnvList() {} |
29 | 29 | ||
30 | inline bool known( void ) | ||
31 | { return ! HomeDir.isEmpty() && ! UserName.isEmpty(); } | ||
32 | |||
30 | QString UserName; | 33 | QString UserName; |
31 | QString HomeDir; | 34 | QString HomeDir; |
32 | int Uid; | 35 | int Uid; |
33 | int Gid; | 36 | int Gid; |
34 | QArray<char *> EnvList; | 37 | QArray<char *> EnvList; |
35 | }; | 38 | }; |
36 | 39 | ||
37 | typedef QDict<NetNode_t> Name2NetNode_t; | 40 | typedef QDict<NetNode_t> Name2NetNode_t; |
38 | typedef QDict<ANetNodeInstance > Name2Instance_t; | 41 | typedef QDict<ANetNodeInstance > Name2Instance_t; |
39 | typedef QDict<NodeCollection> Name2Connection_t; | 42 | typedef QDict<NodeCollection> Name2Connection_t; |
40 | typedef QDict<SystemFile> Name2SystemFile_t; | 43 | typedef QDict<SystemFile> Name2SystemFile_t; |
41 | 44 | ||
@@ -90,24 +93,26 @@ public : | |||
90 | ANetNodeInstance * findNodeInstance( const QString & S ) | 93 | ANetNodeInstance * findNodeInstance( const QString & S ) |
91 | { return (AllNodes.find(S)!=0) ? AllNodes[S] : 0; } | 94 | { return (AllNodes.find(S)!=0) ? AllNodes[S] : 0; } |
92 | 95 | ||
93 | const QString & netNode2Name( const char * Type ); | 96 | const QString & netNode2Name( const char * Type ); |
94 | const QString & netNode2Description( const char * Type ); | 97 | const QString & netNode2Description( const char * Type ); |
95 | 98 | ||
96 | void addConnection( NodeCollection * NC ); | 99 | void addConnection( NodeCollection * NC ); |
97 | void removeConnection( const QString & N ); | 100 | void removeConnection( const QString & N ); |
98 | NodeCollection * findConnection( const QString & N ); | 101 | NodeCollection * findConnection( const QString & N ); |
99 | Name2Connection_t & connections( void ) | 102 | Name2Connection_t & connections( void ) |
100 | { return ConnectionsMap; } | 103 | { return ConnectionsMap; } |
101 | 104 | ||
105 | inline bool userKnown( void ) | ||
106 | { return CurrentUser.known(); } | ||
102 | CurrentQPEUser & currentUser( void ) | 107 | CurrentQPEUser & currentUser( void ) |
103 | { return CurrentUser; } | 108 | { return CurrentUser; } |
104 | 109 | ||
105 | private : | 110 | private : |
106 | 111 | ||
107 | void detectCurrentUser( void ); | 112 | void detectCurrentUser( void ); |
108 | QString tr( const char * path ); | 113 | QString tr( const char * path ); |
109 | void findAvailableNetNodes( const QString &path ); | 114 | void findAvailableNetNodes( const QString &path ); |
110 | bool loadNetNode( | 115 | bool loadNetNode( |
111 | const QString &pluginFileName, | 116 | const QString &pluginFileName, |
112 | const QString &resolveString = "create_plugin"); | 117 | const QString &resolveString = "create_plugin"); |
113 | 118 | ||
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp index d709c0a..e2dd5b5 100644 --- a/noncore/settings/networksettings2/nsdata.cpp +++ b/noncore/settings/networksettings2/nsdata.cpp | |||
@@ -6,24 +6,31 @@ | |||
6 | #include <qfileinfo.h> | 6 | #include <qfileinfo.h> |
7 | 7 | ||
8 | #include "nsdata.h" | 8 | #include "nsdata.h" |
9 | #include <asdevice.h> | 9 | #include <asdevice.h> |
10 | #include <resources.h> | 10 | #include <resources.h> |
11 | 11 | ||
12 | static QString CfgFile; | 12 | static QString CfgFile; |
13 | 13 | ||
14 | NetworkSettingsData::NetworkSettingsData( void ) { | 14 | NetworkSettingsData::NetworkSettingsData( void ) { |
15 | // init global resources structure | 15 | // init global resources structure |
16 | new TheNSResources(); | 16 | new TheNSResources(); |
17 | 17 | ||
18 | if( ! NSResources->userKnown() ) { | ||
19 | Log(( "Cannot detect qpe user HOME=\"%s\" USER=\"%s\"\n", | ||
20 | NSResources->currentUser().HomeDir.latin1(), | ||
21 | NSResources->currentUser().UserName.latin1() )); | ||
22 | return; | ||
23 | } | ||
24 | |||
18 | CfgFile.sprintf( "%s/Settings/NS2.conf", | 25 | CfgFile.sprintf( "%s/Settings/NS2.conf", |
19 | NSResources->currentUser().HomeDir.latin1() ); | 26 | NSResources->currentUser().HomeDir.latin1() ); |
20 | Log(( "Cfg from %s\n", CfgFile.latin1() )); | 27 | Log(( "Cfg from %s\n", CfgFile.latin1() )); |
21 | 28 | ||
22 | // load settings | 29 | // load settings |
23 | IsModified = 0; | 30 | IsModified = 0; |
24 | loadSettings(); | 31 | loadSettings(); |
25 | } | 32 | } |
26 | 33 | ||
27 | // saving is done by caller | 34 | // saving is done by caller |
28 | NetworkSettingsData::~NetworkSettingsData( void ) { | 35 | NetworkSettingsData::~NetworkSettingsData( void ) { |
29 | delete NSResources; | 36 | delete NSResources; |
@@ -530,25 +537,26 @@ QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interfa | |||
530 | Called by the system to see if interface can be brought UP | 537 | Called by the system to see if interface can be brought UP |
531 | 538 | ||
532 | if allowed, echo Interface-allowed else Interface-disallowed | 539 | if allowed, echo Interface-allowed else Interface-disallowed |
533 | */ | 540 | */ |
534 | 541 | ||
535 | bool NetworkSettingsData::canStart( const char * Interface ) { | 542 | bool NetworkSettingsData::canStart( const char * Interface ) { |
536 | // load situation | 543 | // load situation |
537 | NodeCollection * NC = 0; | 544 | NodeCollection * NC = 0; |
538 | QList<NodeCollection> PossibleConnections; | 545 | QList<NodeCollection> PossibleConnections; |
539 | 546 | ||
540 | PossibleConnections = collectPossible( Interface ); | 547 | PossibleConnections = collectPossible( Interface ); |
541 | 548 | ||
542 | Log( ( "Possiblilies %d\n", PossibleConnections.count() )); | 549 | Log( ( "for %s : Possiblilies %d\n", |
550 | Interface, PossibleConnections.count() )); | ||
543 | switch( PossibleConnections.count() ) { | 551 | switch( PossibleConnections.count() ) { |
544 | case 0 : // no connections | 552 | case 0 : // no connections |
545 | break; | 553 | break; |
546 | case 1 : // one connection | 554 | case 1 : // one connection |
547 | NC = PossibleConnections.first(); | 555 | NC = PossibleConnections.first(); |
548 | break; | 556 | break; |
549 | default : // need to ask user ? | 557 | default : // need to ask user ? |
550 | return 1; | 558 | return 1; |
551 | } | 559 | } |
552 | 560 | ||
553 | if( NC ) { | 561 | if( NC ) { |
554 | switch( NC->state() ) { | 562 | switch( NC->state() ) { |
@@ -560,30 +568,32 @@ bool NetworkSettingsData::canStart( const char * Interface ) { | |||
560 | // -> try others | 568 | // -> try others |
561 | break; | 569 | break; |
562 | case Off : | 570 | case Off : |
563 | // try to UP the device | 571 | // try to UP the device |
564 | if( ! NC->setState( Activate ) ) { | 572 | if( ! NC->setState( Activate ) ) { |
565 | // cannot bring device Online -> try other alters | 573 | // cannot bring device Online -> try other alters |
566 | break; | 574 | break; |
567 | } | 575 | } |
568 | // FT | 576 | // FT |
569 | case Available : | 577 | case Available : |
570 | case IsUp : // also called for 'ifdown' | 578 | case IsUp : // also called for 'ifdown' |
571 | // device is ready -> done | 579 | // device is ready -> done |
580 | Log(( "%s-c%d-allowed\n", Interface, NC->number() )); | ||
572 | printf( "%s-c%d-allowed\n", Interface, NC->number() ); | 581 | printf( "%s-c%d-allowed\n", Interface, NC->number() ); |
573 | return 0; | 582 | return 0; |
574 | } | 583 | } |
575 | } | 584 | } |
576 | 585 | ||
577 | // if we come here no alternatives are possible | 586 | // if we come here no alternatives are possible |
587 | Log(( "%s-cnn-disallowed\n", Interface )); | ||
578 | printf( "%s-cnn-disallowed\n", Interface ); | 588 | printf( "%s-cnn-disallowed\n", Interface ); |
579 | return 0; | 589 | return 0; |
580 | } | 590 | } |
581 | 591 | ||
582 | /* | 592 | /* |
583 | Called by the system to regenerate config files | 593 | Called by the system to regenerate config files |
584 | */ | 594 | */ |
585 | 595 | ||
586 | bool NetworkSettingsData::regenerate( void ) { | 596 | bool NetworkSettingsData::regenerate( void ) { |
587 | QString S = generateSettings(); | 597 | QString S = generateSettings(); |
588 | if( ! S.isEmpty() ) { | 598 | if( ! S.isEmpty() ) { |
589 | fprintf( stdout, "%s\n", S.latin1() ); | 599 | fprintf( stdout, "%s\n", S.latin1() ); |