1 #include "vpncontrol.h"
4 VPNControl::VPNControl(QObject
*parent
) :
7 vpnStatus(VPNSTATUS_INVALID
)
11 void VPNControl::initialise()
13 setStatus(VPNSTATUS_UNINITIALISED
);
16 void VPNControl::setStatus(VPNSTATUS newStatus
)
18 if (vpnStatus
!= newStatus
) {
19 vpnStatus
= newStatus
;
20 emit
statusChanged(newStatus
);
21 printf ("Emitting status %d\n", newStatus
);
25 void VPNControl::vpnConnect() {
26 if (vpnProcess
!= NULL
) {
27 printf ("Process already running.\n");
32 vpnProcess
= new QProcess();
33 //QString program = "/home/nemo/Documents/Development/Projects/Stooge/stooge";
34 QString program
= "openvpn";
35 QStringList arguments
;
36 arguments
<< "/home/nemo/Documents/Configure/OpenVPN/client.ovpn";
38 vpnProcess
->setReadChannel(QProcess::StandardOutput
);
39 connect(vpnProcess
, SIGNAL(error(QProcess::ProcessError
)), this, SLOT(readError(QProcess::ProcessError
)));
40 connect(vpnProcess
, SIGNAL(readyRead()), this, SLOT(readData()));
41 connect(vpnProcess
, SIGNAL(started()), this, SLOT(started()));
42 connect(vpnProcess
, SIGNAL(finished(int)), this, SLOT(finished(int)));
44 vpnProcess
->start(program
, arguments
);
45 vpnProcess
->closeWriteChannel();
46 setStatus(VPNSTATUS_INITIALISING
);
50 void VPNControl::vpnDisconnect() {
51 if (vpnProcess
!= NULL
) {
52 printf ("Disconnect\n");
54 vpnProcess
->terminate();
55 setStatus(VPNSTATUS_DISCONNECTING
);
59 void VPNControl::readData() {
60 while (vpnProcess
->canReadLine()) {
61 QByteArray read
= vpnProcess
->readLine();
62 printf ("Output: %s", read
.data());
63 if (read
.endsWith("Initialization Sequence Completed\n")) {
64 printf ("We're connected!\n");
65 setStatus(VPNSTATUS_CONNECTED
);
70 void VPNControl::started() {
72 setStatus(VPNSTATUS_CONNECTING
);
75 void VPNControl::finished(int code
) {
76 printf ("Finished with code %d\n", code
);
77 if (vpnProcess
!= NULL
) {
81 setStatus(VPNSTATUS_UNINITIALISED
);
84 void VPNControl::readError(QProcess::ProcessError error
)
86 printf ("Error: %d\n", error
);
87 if (vpnProcess
!= NULL
) {
88 QByteArray dataOut
= vpnProcess
->readAllStandardOutput();
89 QByteArray errorOut
= vpnProcess
->readAllStandardError();
91 printf ("Output text: %s\n", dataOut
.data());
92 printf ("Error text: %s\n", errorOut
.data());