Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ppp_NNI.cpp

Go to the documentation of this file.
00001 #include <qfile.h>
00002 #include <qfileinfo.h>
00003 #include "PPPedit.h"
00004 #include "ppp_NNI.h"
00005 #include "ppp_NN.h"
00006 
00007 APPP::APPP( PPPNetNode * PNN ) : ANetNodeInstance( PNN ) {
00008     Data.DNS.ServerAssigned = 1;
00009     Data.DNS.DomainName = "";
00010 
00011     Data.Auth.Mode = 0;
00012     Data.Auth.Login.Expect = "ogin:";
00013     Data.Auth.Password.Expect = "assword:";
00014     Data.Auth.PCEMode = 0;
00015     Data.Auth.Client = "*";
00016     Data.Auth.Server = "*";
00017     Data.Auth.Secret = "";
00018 
00019     Data.IP.LocalAddress = "10.0.0.1";
00020     Data.IP.RemoteAddress = "10.0.0.2";
00021     Data.IP.LocalOverrule = 1;
00022     Data.IP.RemoteOverrule = 1;
00023 
00024     Data.IP.GWAutomatic = 1;
00025     Data.IP.GWAddress = "";
00026     Data.IP.GWIsDefault = 1;
00027     Data.IP.GWIfNotSet = 1;
00028 
00029     Data.Run.PreConnect = "";
00030     Data.Run.PostConnect = "";
00031     Data.Run.PreDisconnect = "";
00032     Data.Run.PostDisconnect = "";
00033 
00034     GUI = 0;
00035     RT = 0;
00036 
00037 }
00038 
00039 void APPP::setSpecificAttribute( QString & A, QString & V ) {
00040     if( A.startsWith( "dns" ) ) {
00041       if( A == "dnsserverassigned" ) {
00042         Data.DNS.ServerAssigned = (V == "yes");
00043       } else if( A == "dnsdomainname" ) {
00044         Data.DNS.DomainName = V;
00045       } else if( A == "dnsserver" ) {
00046         Data.DNS.Servers.resize( Data.DNS.Servers.size()+1 );
00047         Data.DNS.Servers[Data.DNS.Servers.size()-1] = 
00048             new QString( V );
00049       }
00050     } else if( A.startsWith( "auth" ) ) {
00051       if( A == "authmode" ) {
00052         Data.Auth.Mode = V.toShort();
00053       } else if( A == "authloginexpect" ) {
00054         Data.Auth.Login.Expect = V;
00055       } else if( A == "authloginsend" ) {
00056         Data.Auth.Login.Send = V;
00057       } else if( A == "authpasswordexpect" ) {
00058         Data.Auth.Password.Expect = V;
00059       } else if( A == "authpasswordsend" ) {
00060         Data.Auth.Password.Send = V;
00061       } else if( A == "authpcemode" ) {
00062         Data.Auth.PCEMode = V.toShort();
00063       } else if( A == "authclient" ) {
00064         Data.Auth.Client = V;
00065       } else if( A == "authserver" ) {
00066         Data.Auth.Server = V;
00067       } else if( A == "authsecret" ) {
00068         Data.Auth.Secret = V;
00069       }
00070     } else if( A.startsWith( "ip" ) ) {
00071       if( A == "iplocaloverrule" ) {
00072         Data.IP.LocalOverrule = (V == "yes");
00073       } else if( A == "ipremoteoverrule" ) {
00074         Data.IP.RemoteOverrule = (V == "yes");
00075       } else if( A == "ipgwautomatic" ) {
00076         Data.IP.GWAutomatic = (V == "yes");
00077       } else if( A == "ipgwisdefault" ) {
00078         Data.IP.GWIsDefault = (V == "yes");
00079       } else if( A == "ipgwifnotset" ) {
00080         Data.IP.GWIfNotSet = (V == "yes");
00081       } else if( A == "iplocaladdress" ) {
00082         Data.IP.LocalAddress = V;
00083       } else if( A == "ipremoteaddress" ) {
00084         Data.IP.RemoteAddress = V;
00085       } else if( A == "ipgwaddress" ) {
00086         Data.IP.GWAddress = V;
00087       }
00088     } else if( A.startsWith( "run" ) ) {
00089       if( A == "runpreconnect" ) {
00090         Data.Run.PreConnect = V;
00091       } else if( A == "runpostconnect" ) {
00092         Data.Run.PostConnect = V;
00093       } else if( A == "runpredisconnect" ) {
00094         Data.Run.PreDisconnect = V;
00095       } else if( A == "runpostdisconnect" ) {
00096         Data.Run.PostDisconnect = V;
00097       }
00098     }
00099 }
00100 
00101 void APPP::saveSpecificAttribute( QTextStream & TS ) {
00102     TS << "dnsserverassigned=" << 
00103         ( ( Data.DNS.ServerAssigned ) ? "yes" : "no" ) << endl;
00104     TS << "dnsdomainname=" << Data.DNS.DomainName << endl;
00105     for( unsigned int i = 0; i < Data.DNS.Servers.size(); i ++ ) {
00106       TS << "dnsserver=" << *(Data.DNS.Servers[i]) << endl;
00107     }
00108     TS << "authmode=" << Data.Auth.Mode << endl;
00109     TS << "authloginexpect=" << quote( Data.Auth.Login.Expect ) << endl;
00110     TS << "authloginsend=" << quote( Data.Auth.Login.Send ) << endl;
00111     TS << "authpasswordexpect=" << quote( Data.Auth.Password.Expect ) << endl;
00112     TS << "authpasswordsend=" << quote( Data.Auth.Password.Send ) << endl;
00113     TS << "authpcemode=" << Data.Auth.PCEMode << endl;
00114     TS << "authclient=" << Data.Auth.Client << endl;
00115     TS << "authserver=" << Data.Auth.Server << endl;
00116     TS << "authsecret=" << quote( Data.Auth.Secret ) << endl;
00117     TS << "ipgwautomatic=" << ( ( Data.IP.GWAutomatic ) ? "yes" : "no" ) << endl;
00118     TS << "ipgwisdefault=" << ( ( Data.IP.GWIsDefault ) ? "yes" : "no" ) << endl;
00119     TS << "ipgwifnotset=" << ( ( Data.IP.GWIfNotSet ) ? "yes" : "no" ) << endl;
00120     TS << "iplocaloverrule=" << ( ( Data.IP.LocalOverrule ) ? "yes" : "no" ) << endl;
00121     TS << "ipremoteoverrule=" << ( ( Data.IP.RemoteOverrule ) ? "yes" : "no" ) << endl;
00122     TS << "iplocaladdress=" << Data.IP.LocalAddress << endl;
00123     TS << "ipremoteaddress=" << Data.IP.RemoteAddress << endl;
00124     TS << "ipgwaddress=" << Data.IP.GWAddress << endl;
00125 
00126     TS << "runpreconnect=" << Data.Run.PreConnect << endl;
00127     TS << "runpostconnect=" << Data.Run.PostConnect << endl;
00128     TS << "runpredisconnect=" << Data.Run.PreDisconnect << endl;
00129     TS << "runpostdisconnect=" << Data.Run.PostDisconnect << endl;
00130 
00131 }
00132 
00133 QWidget * APPP::edit( QWidget * parent ) {
00134     GUI = new PPPEdit( parent );
00135     GUI->showData( Data );
00136     return GUI;
00137 }
00138 
00139 QString APPP::acceptable( void ) {
00140     return ( GUI ) ? GUI->acceptable( ) : QString();
00141 }
00142 
00143 void APPP::commit( void ) {
00144     if( GUI && GUI->commit( Data ) ) {
00145       setModified( 1 );
00146     }
00147 }
00148 
00149 bool APPP::openFile( SystemFile & SF, QStringList & SL ) {
00150       if( SF.name() == "peers" ) {
00151         SL << "/tmp/ppp" << "peers" ;
00152         SF.setPath( removeSpaces( 
00153             QString( "/tmp/ppp/peers/" ) + networkSetup()->name() ) );
00154         return 1;
00155       } else if ( SF.name() == "chatscripts" ) {
00156         SL << "/tmp/chatscripts";
00157         SF.setPath( removeSpaces( 
00158             QString( "/tmp/chatscripts/" ) + networkSetup()->name() ) );
00159         return 1;
00160       }
00161       return 0;
00162 }
00163 
00164 short APPP::generateFile( SystemFile & SF, long DevNr ) {
00165     short rvl, rvd;
00166 
00167     rvl = 1;
00168     rvd = 1;
00169 
00170     if( SF.name() == "pap-secrets" ) {
00171       Log(("Generate PPP for %s\n", SF.name().latin1() ));
00172 
00173       if( Data.Auth.Mode == 1 && Data.Auth.PCEMode == 0 ) {
00174         SF << "# secrets for " 
00175            << networkSetup()->name().latin1() 
00176            << endl;
00177         SF << Data.Auth.Client 
00178            << " " 
00179            << Data.Auth.Server 
00180            << " " 
00181            << Data.Auth.Secret
00182            << endl;
00183         rvl = 0;
00184         rvd = networkSetup()->getToplevel()->generateFileEmbedded( 
00185                 SF, DevNr );
00186       }
00187     } else if( SF.name() == "chap-secrets" ) {
00188       Log(("Generate PPP for %s\n", SF.name().latin1() ));
00189       if( Data.Auth.Mode == 1 && Data.Auth.PCEMode != 0 ) {
00190         // used for both EAP and Chap
00191         SF << "# secrets for "
00192            << networkSetup()->name().latin1() 
00193            << endl;
00194         SF << Data.Auth.Client 
00195            << " " 
00196            << Data.Auth.Server 
00197            << " " 
00198            << Data.Auth.Secret
00199            << endl;
00200 
00201         rvl = 0;
00202         rvd = networkSetup()->getToplevel()->generateFileEmbedded( 
00203             SF, DevNr );
00204       }
00205     } else if ( SF.name() == "peers" ) {
00206 
00207       QFileInfo FI(SF.path());
00208       Log(("Generate PPP for %s\n", SF.name().latin1() ));
00209 
00210       SF << "connect \"/usr/sbin/chat -v -f /etc/chatscripts/"
00211          << FI.baseName()
00212          << "\""
00213          << endl;
00214 
00215       if( Data.IP.GWIsDefault ) {
00216         SF << "defaultroute" 
00217            << endl;
00218       }
00219 
00220       SF << "linkname "
00221          << removeSpaces( SF.name().latin1() )
00222          << endl;
00223 
00224       // insert other data here
00225       rvl = 0;
00226       rvd = networkSetup()->getToplevel()->generateFileEmbedded(
00227             SF, DevNr );
00228     } else if ( SF.name() == "chatscripts" ) {
00229       Log(("Generate PPP for %s\n", SF.name().latin1() ));
00230       rvl = 0;
00231       rvd = networkSetup()->getToplevel()->generateFileEmbedded(
00232             SF, DevNr );
00233     }
00234 
00235     return (rvd == 2 || rvl == 2 ) ? 2 :
00236            (rvd == 0 || rvl == 0 ) ? 0 : 1;
00237 }

Generated on Sat Nov 5 16:17:56 2005 for OPIE by  doxygen 1.4.2