20 files changed, 75 insertions, 51 deletions
diff --git a/noncore/securityplugins/blueping/bluepingplugin.cpp b/noncore/securityplugins/blueping/bluepingplugin.cpp index af0448b..f4c5e95 100644 --- a/noncore/securityplugins/blueping/bluepingplugin.cpp +++ b/noncore/securityplugins/blueping/bluepingplugin.cpp | |||
@@ -1,198 +1,201 @@ | |||
1 | #include "bluepingplugin.h" | 1 | #include "bluepingplugin.h" |
2 | 2 | ||
3 | #include <opie2/oapplication.h> | 3 | #include <opie2/oapplication.h> |
4 | #include <opie2/odebug.h> | 4 | #include <opie2/odebug.h> |
5 | #include <opie2/odevice.h> | 5 | #include <opie2/odevice.h> |
6 | 6 | ||
7 | #include <qdialog.h> | 7 | #include <qdialog.h> |
8 | #include <qlayout.h> | 8 | #include <qlayout.h> |
9 | #include <qhbox.h> | 9 | #include <qhbox.h> |
10 | #include <qlabel.h> | 10 | #include <qlabel.h> |
11 | #include <qpushbutton.h> | 11 | #include <qpushbutton.h> |
12 | #include <qtimer.h> | 12 | #include <qtimer.h> |
13 | 13 | ||
14 | using namespace Opie::Core; | 14 | using namespace Opie::Core; |
15 | using Opie::Security::MultiauthPluginObject; | ||
16 | using Opie::Security::MultiauthConfigWidget; | ||
17 | |||
15 | 18 | ||
16 | /// creates and initializes the m_config Config object | 19 | /// creates and initializes the m_config Config object |
17 | BluepingPlugin::BluepingPlugin() : MultiauthPluginObject(), m_ping(0) { | 20 | BluepingPlugin::BluepingPlugin() : MultiauthPluginObject(), m_ping(0) { |
18 | m_config = new Config("Security"); | 21 | m_config = new Config("Security"); |
19 | m_config->setGroup("BluepingPlugin"); | 22 | m_config->setGroup("BluepingPlugin"); |
20 | bluetoothAlreadyRestarted = false; | 23 | bluetoothAlreadyRestarted = false; |
21 | } | 24 | } |
22 | 25 | ||
23 | /// deletes the m_config Config object and noticeW if necessary | 26 | /// deletes the m_config Config object and noticeW if necessary |
24 | BluepingPlugin::~BluepingPlugin() { | 27 | BluepingPlugin::~BluepingPlugin() { |
25 | delete m_config; | 28 | delete m_config; |
26 | if (m_ping != 0) | 29 | if (m_ping != 0) |
27 | delete m_ping; | 30 | delete m_ping; |
28 | } | 31 | } |
29 | 32 | ||
30 | /// Simply return its name (Blueping plugin) | 33 | /// Simply return its name (Blueping plugin) |
31 | QString BluepingPlugin::pluginName() const { | 34 | QString BluepingPlugin::pluginName() const { |
32 | return "Blueping plugin"; | 35 | return "Blueping plugin"; |
33 | } | 36 | } |
34 | 37 | ||
35 | /// no configuration widget for the moment | 38 | /// no configuration widget for the moment |
36 | MultiauthConfigWidget * BluepingPlugin::configWidget(QWidget * parent) { | 39 | MultiauthConfigWidget * BluepingPlugin::configWidget(QWidget * parent) { |
37 | return 0l; | 40 | return 0l; |
38 | } | 41 | } |
39 | QString BluepingPlugin::pixmapNameWidget() const { | 42 | QString BluepingPlugin::pixmapNameWidget() const { |
40 | return "security/bluepingplugin"; | 43 | return "security/bluepingplugin"; |
41 | } | 44 | } |
42 | QString BluepingPlugin::pixmapNameConfig() const { | 45 | QString BluepingPlugin::pixmapNameConfig() const { |
43 | return 0l; | 46 | return 0l; |
44 | } | 47 | } |
45 | 48 | ||
46 | /// Emit the MultiauthPluginObject::Success emitCode | 49 | /// Emit the MultiauthPluginObject::Success emitCode |
47 | void BluepingPlugin::success() { | 50 | void BluepingPlugin::success() { |
48 | emit emitCode(MultiauthPluginObject::Success); | 51 | emit emitCode(MultiauthPluginObject::Success); |
49 | } | 52 | } |
50 | 53 | ||
51 | /// Emit the MultiauthPluginObject::Failure emitCode | 54 | /// Emit the MultiauthPluginObject::Failure emitCode |
52 | void BluepingPlugin::failure() { | 55 | void BluepingPlugin::failure() { |
53 | emit emitCode(MultiauthPluginObject::Failure); | 56 | emit emitCode(MultiauthPluginObject::Failure); |
54 | } | 57 | } |
55 | 58 | ||
56 | /// Emit the MultiauthPluginObject::Skip emitCode | 59 | /// Emit the MultiauthPluginObject::Skip emitCode |
57 | void BluepingPlugin::skip() { | 60 | void BluepingPlugin::skip() { |
58 | emit emitCode(MultiauthPluginObject::Skip); | 61 | emit emitCode(MultiauthPluginObject::Skip); |
59 | } | 62 | } |
60 | 63 | ||
61 | /// do the actual ping | 64 | /// do the actual ping |
62 | void BluepingPlugin::ping() { | 65 | void BluepingPlugin::ping() { |
63 | m_ping = new OProcess(); | 66 | m_ping = new OProcess(); |
64 | odebug << "pinging device: " << macToPing << oendl; | 67 | odebug << "pinging device: " << macToPing << oendl; |
65 | *m_ping << "l2ping" << "-c 1" << macToPing; | 68 | *m_ping << "l2ping" << "-c 1" << macToPing; |
66 | 69 | ||
67 | // starting to ping in the background | 70 | // starting to ping in the background |
68 | /// \todo as soon as ping is launched, check RSSI (signal strength) and check | 71 | /// \todo as soon as ping is launched, check RSSI (signal strength) and check |
69 | /// it's high enough, meaning the device is close enough? | 72 | /// it's high enough, meaning the device is close enough? |
70 | /// \todo make it optionally pollable, so don't finish the ping and call | 73 | /// \todo make it optionally pollable, so don't finish the ping and call |
71 | /// Opie suspend if l2ping timeouts? | 74 | /// Opie suspend if l2ping timeouts? |
72 | if ( !m_ping->start() ) { | 75 | if ( !m_ping->start() ) { |
73 | oerr << "could not start l2ping" << oendl; | 76 | oerr << "could not start l2ping" << oendl; |
74 | this->skip(); | 77 | this->skip(); |
75 | } | 78 | } |
76 | QObject::connect(m_ping, SIGNAL(processExited(Opie::Core::OProcess*)), | 79 | QObject::connect(m_ping, SIGNAL(processExited(Opie::Core::OProcess*)), |
77 | this, SLOT(pingFinished(Opie::Core::OProcess*)) ); | 80 | this, SLOT(pingFinished(Opie::Core::OProcess*)) ); |
78 | } | 81 | } |
79 | 82 | ||
80 | /// Deals with m_ping result | 83 | /// Deals with m_ping result |
81 | void BluepingPlugin::pingFinished(OProcess * ping) { | 84 | void BluepingPlugin::pingFinished(OProcess * ping) { |
82 | if ( ping->normalExit() && (ping->exitStatus() == 0) ) | 85 | if ( ping->normalExit() && (ping->exitStatus() == 0) ) |
83 | { | 86 | { |
84 | odebug << "Successful Bluetooth ping!" << oendl; | 87 | odebug << "Successful Bluetooth ping!" << oendl; |
85 | success(); | 88 | success(); |
86 | } | 89 | } |
87 | else | 90 | else |
88 | { | 91 | { |
89 | odebug << "Failed Bluetooth ping..." << oendl; | 92 | odebug << "Failed Bluetooth ping..." << oendl; |
90 | failure(); | 93 | failure(); |
91 | } | 94 | } |
92 | } | 95 | } |
93 | 96 | ||
94 | /// Make one authentication attempt with this plugin | 97 | /// Make one authentication attempt with this plugin |
95 | /** | 98 | /** |
96 | * (very simple "success" / "failure" buttons in a dialog) | 99 | * (very simple "success" / "failure" buttons in a dialog) |
97 | * \return The outcome code of this authentication | 100 | * \return The outcome code of this authentication |
98 | */ | 101 | */ |
99 | int BluepingPlugin::authenticate() { | 102 | int BluepingPlugin::authenticate() { |
100 | 103 | ||
101 | Config cfg("Security"); | 104 | Config cfg("Security"); |
102 | cfg.setGroup("BluepingPlugin"); | 105 | cfg.setGroup("BluepingPlugin"); |
103 | macToPing = cfg.readEntry("mac"); | 106 | macToPing = cfg.readEntry("mac"); |
104 | if (!macToPing.isEmpty()) | 107 | if (!macToPing.isEmpty()) |
105 | { | 108 | { |
106 | /* Standard, inescapable authentication dialog | 109 | /* Standard, inescapable authentication dialog |
107 | */ | 110 | */ |
108 | QDialog bluepingDialog(0, | 111 | QDialog bluepingDialog(0, |
109 | "Blueping dialog", | 112 | "Blueping dialog", |
110 | TRUE, | 113 | TRUE, |
111 | Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop); | 114 | Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop); |
112 | 115 | ||
113 | QRect desk = oApp->desktop()->geometry(); | 116 | QRect desk = oApp->desktop()->geometry(); |
114 | bluepingDialog.setGeometry( 0, 0, desk.width(), desk.height() ); | 117 | bluepingDialog.setGeometry( 0, 0, desk.width(), desk.height() ); |
115 | 118 | ||
116 | // Creation of the particular widgets of our Blueping user interface | 119 | // Creation of the particular widgets of our Blueping user interface |
117 | QVBoxLayout *layout = new QVBoxLayout(&bluepingDialog); | 120 | QVBoxLayout *layout = new QVBoxLayout(&bluepingDialog); |
118 | layout->setSpacing(11); | 121 | layout->setSpacing(11); |
119 | layout->setMargin(11); | 122 | layout->setMargin(11); |
120 | layout->setAlignment( Qt::AlignTop ); | 123 | layout->setAlignment( Qt::AlignTop ); |
121 | 124 | ||
122 | QLabel title("<center><h1>\"Blueping\" <br />plugin</h1></center>", &bluepingDialog); | 125 | QLabel title("<center><h1>\"Blueping\" <br />plugin</h1></center>", &bluepingDialog); |
123 | QLabel subTitle("<center><h2>Trying to reach your configured bluetooth device...</h2></center>", &bluepingDialog); | 126 | QLabel subTitle("<center><h2>Trying to reach your configured bluetooth device...</h2></center>", &bluepingDialog); |
124 | QLabel subTitle2("<center>You can skip this step and use another authentication way with the following button</center>", &bluepingDialog); | 127 | QLabel subTitle2("<center>You can skip this step and use another authentication way with the following button</center>", &bluepingDialog); |
125 | QPushButton pbSkip("Skip", &bluepingDialog); | 128 | QPushButton pbSkip("Skip", &bluepingDialog); |
126 | layout->addWidget(&title); | 129 | layout->addWidget(&title); |
127 | layout->addWidget(&subTitle); | 130 | layout->addWidget(&subTitle); |
128 | layout->addWidget(&subTitle2); | 131 | layout->addWidget(&subTitle2); |
129 | layout->addWidget(&pbSkip, 0, Qt::AlignHCenter); | 132 | layout->addWidget(&pbSkip, 0, Qt::AlignHCenter); |
130 | 133 | ||
131 | // connect the skip button to the skip signal emitting function | 134 | // connect the skip button to the skip signal emitting function |
132 | QObject::connect(&pbSkip, SIGNAL(clicked()), this, SLOT(skip())); | 135 | QObject::connect(&pbSkip, SIGNAL(clicked()), this, SLOT(skip())); |
133 | // connect the signal emitting functions to the bluepingDialog done(int) finishing function | 136 | // connect the signal emitting functions to the bluepingDialog done(int) finishing function |
134 | QObject::connect(this, SIGNAL(emitCode(int)), &bluepingDialog, SLOT(done(int))); | 137 | QObject::connect(this, SIGNAL(emitCode(int)), &bluepingDialog, SLOT(done(int))); |
135 | 138 | ||
136 | if (!bluetoothAlreadyRestarted) | 139 | if (!bluetoothAlreadyRestarted) |
137 | { | 140 | { |
138 | // we have just started or resumed the device, so Bluetooth has to be (re)started | 141 | // we have just started or resumed the device, so Bluetooth has to be (re)started |
139 | OProcess killB; | 142 | OProcess killB; |
140 | killB << "killall" << "hciattach"; | 143 | killB << "killall" << "hciattach"; |
141 | odebug << "killing Bluetooth..." << oendl; | 144 | odebug << "killing Bluetooth..." << oendl; |
142 | if ( !killB.start(OProcess::Block) ) { | 145 | if ( !killB.start(OProcess::Block) ) { |
143 | oerr << "could not kill bluetooth" << oendl; | 146 | oerr << "could not kill bluetooth" << oendl; |
144 | } | 147 | } |
145 | 148 | ||
146 | OProcess startB; | 149 | OProcess startB; |
147 | switch ( ODevice::inst()->model() ) { | 150 | switch ( ODevice::inst()->model() ) { |
148 | case Model_iPAQ_H39xx: | 151 | case Model_iPAQ_H39xx: |
149 | startB << "/sbin/hciattach" << "/dev/tts/1" << "bcsp" << "921600"; | 152 | startB << "/sbin/hciattach" << "/dev/tts/1" << "bcsp" << "921600"; |
150 | break; | 153 | break; |
151 | 154 | ||
152 | case Model_iPAQ_H5xxx: | 155 | case Model_iPAQ_H5xxx: |
153 | startB << "/sbin/hciattach" << "/dev/tts/1" << "any" << "921600"; | 156 | startB << "/sbin/hciattach" << "/dev/tts/1" << "any" << "921600"; |
154 | break; | 157 | break; |
155 | 158 | ||
156 | default: | 159 | default: |
157 | startB << "/sbin/hciattach" << "/dev/ttySB0" << "bcsp" << "230400"; | 160 | startB << "/sbin/hciattach" << "/dev/ttySB0" << "bcsp" << "230400"; |
158 | break; | 161 | break; |
159 | } // end switch on device models | 162 | } // end switch on device models |
160 | 163 | ||
161 | if ( !startB.start(OProcess::Block) ) { | 164 | if ( !startB.start(OProcess::Block) ) { |
162 | oerr << "could not (re)start bluetooth" << oendl; | 165 | oerr << "could not (re)start bluetooth" << oendl; |
163 | return MultiauthPluginObject::Skip; | 166 | return MultiauthPluginObject::Skip; |
164 | } | 167 | } |
165 | else | 168 | else |
166 | { | 169 | { |
167 | if ( startB.normalExit() && (startB.exitStatus() == 0) ) | 170 | if ( startB.normalExit() && (startB.exitStatus() == 0) ) |
168 | { | 171 | { |
169 | odebug << "hciattach exited normally."<< oendl; | 172 | odebug << "hciattach exited normally."<< oendl; |
170 | bluetoothAlreadyRestarted = true; | 173 | bluetoothAlreadyRestarted = true; |
171 | // 500 ms timer, so l2ping won't try to find a route before bluetooth has \em really started | 174 | // 500 ms timer, so l2ping won't try to find a route before bluetooth has \em really started |
172 | QTimer::singleShot( 500, this, SLOT(ping()) ); | 175 | QTimer::singleShot( 500, this, SLOT(ping()) ); |
173 | } | 176 | } |
174 | else | 177 | else |
175 | { | 178 | { |
176 | owarn << "hciattach exited anormally (error code: " << startB.exitStatus() << ")" << oendl; | 179 | owarn << "hciattach exited anormally (error code: " << startB.exitStatus() << ")" << oendl; |
177 | } // end if startBluetooth exit status == 0 | 180 | } // end if startBluetooth exit status == 0 |
178 | } // end if startBluetooth started | 181 | } // end if startBluetooth started |
179 | } | 182 | } |
180 | else | 183 | else |
181 | { | 184 | { |
182 | // we don't need to wait, since bluetooth has been started long enough ago | 185 | // we don't need to wait, since bluetooth has been started long enough ago |
183 | ping(); | 186 | ping(); |
184 | } // end if bluetooth not restarted | 187 | } // end if bluetooth not restarted |
185 | 188 | ||
186 | 189 | ||
187 | // start the dialog event loop, while the ping is starting (or will start soon) in the background | 190 | // start the dialog event loop, while the ping is starting (or will start soon) in the background |
188 | return bluepingDialog.exec(); | 191 | return bluepingDialog.exec(); |
189 | 192 | ||
190 | 193 | ||
191 | } | 194 | } |
192 | else | 195 | else |
193 | { | 196 | { |
194 | owarn << "No Bluetooth device has been set!" << oendl; | 197 | owarn << "No Bluetooth device has been set!" << oendl; |
195 | owarn << "We will consider it as a successful authentication though." << oendl; | 198 | owarn << "We will consider it as a successful authentication though." << oendl; |
196 | return MultiauthPluginObject::Success; | 199 | return MultiauthPluginObject::Success; |
197 | } // end if mac defined | 200 | } // end if mac defined |
198 | } | 201 | } |
diff --git a/noncore/securityplugins/blueping/bluepingplugin.h b/noncore/securityplugins/blueping/bluepingplugin.h index c122471..0df3f78 100644 --- a/noncore/securityplugins/blueping/bluepingplugin.h +++ b/noncore/securityplugins/blueping/bluepingplugin.h | |||
@@ -1,81 +1,81 @@ | |||
1 | /** | 1 | /** |
2 | * \file bluepingplugin.h | 2 | * \file bluepingplugin.h |
3 | * \brief Standard Opie multiauth plugin definition | 3 | * \brief Standard Opie multiauth plugin definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef BLUEPING_PLUGIN_H | 34 | #ifndef BLUEPING_PLUGIN_H |
35 | #define BLUEPING_PLUGIN_H | 35 | #define BLUEPING_PLUGIN_H |
36 | 36 | ||
37 | #include <opie2/multiauthplugininterface.h> | 37 | #include <opie2/multiauthplugininterface.h> |
38 | 38 | ||
39 | #include <opie2/oprocess.h> | 39 | #include <opie2/oprocess.h> |
40 | 40 | ||
41 | #include <qobject.h> | 41 | #include <qobject.h> |
42 | #include <qstring.h> | 42 | #include <qstring.h> |
43 | #include <qpe/config.h> | 43 | #include <qpe/config.h> |
44 | 44 | ||
45 | /// Multi-authentication bluetooth plugin, which tries to ping a specific MAC address. | 45 | /// Multi-authentication bluetooth plugin, which tries to ping a specific MAC address. |
46 | /** | 46 | /** |
47 | * The plugin itself, implementing the main authenticate() function. | 47 | * The plugin itself, implementing the main authenticate() function. |
48 | */ | 48 | */ |
49 | class BluepingPlugin : public QObject, public MultiauthPluginObject { | 49 | class BluepingPlugin : public QObject, public Opie::Security::MultiauthPluginObject { |
50 | 50 | ||
51 | Q_OBJECT | 51 | Q_OBJECT |
52 | 52 | ||
53 | public: | 53 | public: |
54 | BluepingPlugin(); | 54 | BluepingPlugin(); |
55 | virtual ~BluepingPlugin(); | 55 | virtual ~BluepingPlugin(); |
56 | int authenticate(); | 56 | int authenticate(); |
57 | MultiauthConfigWidget * configWidget(QWidget * parent); | 57 | Opie::Security::MultiauthConfigWidget * configWidget(QWidget * parent); |
58 | QString pixmapNameConfig() const; | 58 | QString pixmapNameConfig() const; |
59 | QString pixmapNameWidget() const; | 59 | QString pixmapNameWidget() const; |
60 | QString pluginName() const; | 60 | QString pluginName() const; |
61 | 61 | ||
62 | signals: | 62 | signals: |
63 | /// Signal carrying the result code of this plugin | 63 | /// Signal carrying the result code of this plugin |
64 | void emitCode(int resultCode); | 64 | void emitCode(int resultCode); |
65 | 65 | ||
66 | private slots: | 66 | private slots: |
67 | void success(); | 67 | void success(); |
68 | void failure(); | 68 | void failure(); |
69 | void skip(); | 69 | void skip(); |
70 | void ping(); | 70 | void ping(); |
71 | void pingFinished(Opie::Core::OProcess * ping); | 71 | void pingFinished(Opie::Core::OProcess * ping); |
72 | 72 | ||
73 | private: | 73 | private: |
74 | Opie::Core::OProcess *m_ping; | 74 | Opie::Core::OProcess *m_ping; |
75 | Config * m_config; | 75 | Config * m_config; |
76 | bool bluetoothAlreadyRestarted; | 76 | bool bluetoothAlreadyRestarted; |
77 | QString macToPing; | 77 | QString macToPing; |
78 | 78 | ||
79 | }; | 79 | }; |
80 | 80 | ||
81 | #endif | 81 | #endif |
diff --git a/noncore/securityplugins/blueping/bluepingpluginimpl.cpp b/noncore/securityplugins/blueping/bluepingpluginimpl.cpp index f7b1bfc..dbca91f 100644 --- a/noncore/securityplugins/blueping/bluepingpluginimpl.cpp +++ b/noncore/securityplugins/blueping/bluepingpluginimpl.cpp | |||
@@ -1,28 +1,31 @@ | |||
1 | #include "bluepingpluginimpl.h" | 1 | #include "bluepingpluginimpl.h" |
2 | 2 | ||
3 | using Opie::Security::MultiauthPluginInterface; | ||
4 | using Opie::Security::MultiauthPluginObject; | ||
5 | |||
3 | BluepingPluginImpl::BluepingPluginImpl() { | 6 | BluepingPluginImpl::BluepingPluginImpl() { |
4 | bluepingPlugin = new BluepingPlugin(); | 7 | bluepingPlugin = new BluepingPlugin(); |
5 | } | 8 | } |
6 | 9 | ||
7 | BluepingPluginImpl::~BluepingPluginImpl() { | 10 | BluepingPluginImpl::~BluepingPluginImpl() { |
8 | delete bluepingPlugin; | 11 | delete bluepingPlugin; |
9 | } | 12 | } |
10 | 13 | ||
11 | MultiauthPluginObject* BluepingPluginImpl::plugin() { | 14 | MultiauthPluginObject* BluepingPluginImpl::plugin() { |
12 | return bluepingPlugin; | 15 | return bluepingPlugin; |
13 | } | 16 | } |
14 | 17 | ||
15 | Q_EXPORT_INTERFACE() { | 18 | Q_EXPORT_INTERFACE() { |
16 | Q_CREATE_INSTANCE( BluepingPluginImpl ) | 19 | Q_CREATE_INSTANCE( BluepingPluginImpl ) |
17 | } | 20 | } |
18 | 21 | ||
19 | QRESULT BluepingPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | 22 | QRESULT BluepingPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { |
20 | *iface = 0; | 23 | *iface = 0; |
21 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { | 24 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { |
22 | *iface = this, (*iface)->addRef(); | 25 | *iface = this, (*iface)->addRef(); |
23 | } else { | 26 | } else { |
24 | return QE_NOINTERFACE; | 27 | return QE_NOINTERFACE; |
25 | } | 28 | } |
26 | return QS_OK; | 29 | return QS_OK; |
27 | 30 | ||
28 | } | 31 | } |
diff --git a/noncore/securityplugins/blueping/bluepingpluginimpl.h b/noncore/securityplugins/blueping/bluepingpluginimpl.h index 2fd023a..4663602 100644 --- a/noncore/securityplugins/blueping/bluepingpluginimpl.h +++ b/noncore/securityplugins/blueping/bluepingpluginimpl.h | |||
@@ -1,58 +1,57 @@ | |||
1 | /** | 1 | /** |
2 | * \file bluepingpluginimpl.h | 2 | * \file bluepingpluginimpl.h |
3 | * \brief Standard Opie multiauth plugin interface definition | 3 | * \brief Standard Opie multiauth plugin interface definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef BLUEPING_PLUGIN_IMPL_H | 34 | #ifndef BLUEPING_PLUGIN_IMPL_H |
35 | #define BLUEPING_PLUGIN_IMPL_H | 35 | #define BLUEPING_PLUGIN_IMPL_H |
36 | 36 | ||
37 | #include "bluepingplugin.h" | 37 | #include "bluepingplugin.h" |
38 | 38 | ||
39 | /// Standard multiauth plugin class | 39 | /// Standard multiauth plugin class |
40 | class BluepingPluginImpl : public MultiauthPluginInterface{ | 40 | class BluepingPluginImpl : public Opie::Security::MultiauthPluginInterface{ |
41 | 41 | ||
42 | public: | 42 | public: |
43 | BluepingPluginImpl(); | 43 | BluepingPluginImpl(); |
44 | virtual ~BluepingPluginImpl(); | 44 | virtual ~BluepingPluginImpl(); |
45 | 45 | ||
46 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | 46 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); |
47 | /// defines standard addRef() and release() functions | 47 | /// defines standard addRef() and release() functions |
48 | Q_REFCOUNT; | 48 | Q_REFCOUNT; |
49 | 49 | ||
50 | virtual MultiauthPluginObject *plugin(); | 50 | virtual Opie::Security::MultiauthPluginObject *plugin(); |
51 | 51 | ||
52 | private: | 52 | private: |
53 | /// the plugin itself | 53 | /// the plugin itself |
54 | BluepingPlugin *bluepingPlugin; | 54 | BluepingPlugin *bluepingPlugin; |
55 | ulong ref; | ||
56 | }; | 55 | }; |
57 | 56 | ||
58 | #endif | 57 | #endif |
diff --git a/noncore/securityplugins/dummy/dummyplugin.cpp b/noncore/securityplugins/dummy/dummyplugin.cpp index 0d19e43..594825e 100644 --- a/noncore/securityplugins/dummy/dummyplugin.cpp +++ b/noncore/securityplugins/dummy/dummyplugin.cpp | |||
@@ -1,92 +1,95 @@ | |||
1 | #include "dummyplugin.h" | 1 | #include "dummyplugin.h" |
2 | 2 | ||
3 | #include <opie2/oapplication.h> | 3 | #include <opie2/oapplication.h> |
4 | 4 | ||
5 | #include <qdialog.h> | 5 | #include <qdialog.h> |
6 | #include <qlayout.h> | 6 | #include <qlayout.h> |
7 | #include <qlabel.h> | 7 | #include <qlabel.h> |
8 | #include <qpushbutton.h> | 8 | #include <qpushbutton.h> |
9 | 9 | ||
10 | using Opie::Security::MultiauthConfigWidget; | ||
11 | using Opie::Security::MultiauthPluginObject; | ||
12 | |||
10 | /// Simply return its name (Dummy plugin) | 13 | /// Simply return its name (Dummy plugin) |
11 | QString DummyPlugin::pluginName() const { | 14 | QString DummyPlugin::pluginName() const { |
12 | return "Dummy plugin"; | 15 | return "Dummy plugin"; |
13 | } | 16 | } |
14 | 17 | ||
15 | /// no configuration widget for the moment | 18 | /// no configuration widget for the moment |
16 | MultiauthConfigWidget * DummyPlugin::configWidget(QWidget * parent) { | 19 | MultiauthConfigWidget * DummyPlugin::configWidget(QWidget * parent) { |
17 | return 0l; | 20 | return 0l; |
18 | } | 21 | } |
19 | QString DummyPlugin::pixmapNameWidget() const { | 22 | QString DummyPlugin::pixmapNameWidget() const { |
20 | return "security/dummyplugin"; | 23 | return "security/dummyplugin"; |
21 | } | 24 | } |
22 | QString DummyPlugin::pixmapNameConfig() const { | 25 | QString DummyPlugin::pixmapNameConfig() const { |
23 | return 0l; | 26 | return 0l; |
24 | } | 27 | } |
25 | 28 | ||
26 | /// Emit the MultiauthPluginObject::Success emitCode | 29 | /// Emit the MultiauthPluginObject::Success emitCode |
27 | void DummyPlugin::success() { | 30 | void DummyPlugin::success() { |
28 | emit emitCode(MultiauthPluginObject::Success); | 31 | emit emitCode(MultiauthPluginObject::Success); |
29 | } | 32 | } |
30 | 33 | ||
31 | /// Emit the MultiauthPluginObject::Failure emitCode | 34 | /// Emit the MultiauthPluginObject::Failure emitCode |
32 | void DummyPlugin::failure() { | 35 | void DummyPlugin::failure() { |
33 | emit emitCode(MultiauthPluginObject::Failure); | 36 | emit emitCode(MultiauthPluginObject::Failure); |
34 | } | 37 | } |
35 | 38 | ||
36 | /// Emit the MultiauthPluginObject::Skip emitCode | 39 | /// Emit the MultiauthPluginObject::Skip emitCode |
37 | void DummyPlugin::skip() { | 40 | void DummyPlugin::skip() { |
38 | emit emitCode(MultiauthPluginObject::Skip); | 41 | emit emitCode(MultiauthPluginObject::Skip); |
39 | } | 42 | } |
40 | 43 | ||
41 | /// Make one authentication attempt with this plugin | 44 | /// Make one authentication attempt with this plugin |
42 | /** | 45 | /** |
43 | * (very simple "success" / "failure" buttons in a dialog) | 46 | * (very simple "success" / "failure" buttons in a dialog) |
44 | * \return The outcome code of this authentication | 47 | * \return The outcome code of this authentication |
45 | */ | 48 | */ |
46 | int DummyPlugin::authenticate() { | 49 | int DummyPlugin::authenticate() { |
47 | 50 | ||
48 | /* Standard, inescapable authentication dialog | 51 | /* Standard, inescapable authentication dialog |
49 | */ | 52 | */ |
50 | QDialog dummyDialog(0, | 53 | QDialog dummyDialog(0, |
51 | "Dummy dialog", | 54 | "Dummy dialog", |
52 | TRUE, | 55 | TRUE, |
53 | Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop); | 56 | Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop); |
54 | 57 | ||
55 | QRect desk = oApp->desktop()->geometry(); | 58 | QRect desk = oApp->desktop()->geometry(); |
56 | dummyDialog.setGeometry( 0, 0, desk.width(), desk.height() ); | 59 | dummyDialog.setGeometry( 0, 0, desk.width(), desk.height() ); |
57 | 60 | ||
58 | /* Creation of the particular widgets of our Dummy user interface | 61 | /* Creation of the particular widgets of our Dummy user interface |
59 | * Note: we have to resize the VBox to the QDialog size, since it's not | 62 | * Note: we have to resize the VBox to the QDialog size, since it's not |
60 | * done automatically. | 63 | * done automatically. |
61 | */ | 64 | */ |
62 | QVBoxLayout layout(&dummyDialog); | 65 | QVBoxLayout layout(&dummyDialog); |
63 | layout.setSpacing(11); | 66 | layout.setSpacing(11); |
64 | layout.setMargin(11); | 67 | layout.setMargin(11); |
65 | layout.setAlignment( Qt::AlignTop ); | 68 | layout.setAlignment( Qt::AlignTop ); |
66 | 69 | ||
67 | QLabel title("<center><h1>" + tr("\"Dummy\" <br />demonstration plugin") + "</h1></center>", &dummyDialog); | 70 | QLabel title("<center><h1>" + tr("\"Dummy\" <br />demonstration plugin") + "</h1></center>", &dummyDialog); |
68 | QLabel subTitle("<center><h2>" +tr("You can simulate the following outcomes:") + "</h2></center>", &dummyDialog); | 71 | QLabel subTitle("<center><h2>" +tr("You can simulate the following outcomes:") + "</h2></center>", &dummyDialog); |
69 | layout.addWidget(&title); | 72 | layout.addWidget(&title); |
70 | layout.addWidget(&subTitle); | 73 | layout.addWidget(&subTitle); |
71 | 74 | ||
72 | QHBoxLayout hl(&layout); | 75 | QHBoxLayout hl(&layout); |
73 | QPushButton pbSuccess("Success", &dummyDialog); | 76 | QPushButton pbSuccess("Success", &dummyDialog); |
74 | QPushButton pbSkip("Skip", &dummyDialog); | 77 | QPushButton pbSkip("Skip", &dummyDialog); |
75 | QPushButton pbFailure("Failure", &dummyDialog); | 78 | QPushButton pbFailure("Failure", &dummyDialog); |
76 | hl.addWidget(&pbSuccess, 0, Qt::AlignHCenter); | 79 | hl.addWidget(&pbSuccess, 0, Qt::AlignHCenter); |
77 | hl.addWidget(&pbSkip, 0, Qt::AlignHCenter); | 80 | hl.addWidget(&pbSkip, 0, Qt::AlignHCenter); |
78 | hl.addWidget(&pbFailure, 0, Qt::AlignHCenter); | 81 | hl.addWidget(&pbFailure, 0, Qt::AlignHCenter); |
79 | 82 | ||
80 | /* Linking our pushbuttons to exit functions | 83 | /* Linking our pushbuttons to exit functions |
81 | * (each result button here has a corresponding slot) | 84 | * (each result button here has a corresponding slot) |
82 | */ | 85 | */ |
83 | QObject::connect(&pbSuccess, SIGNAL(clicked()), this, SLOT(success())); | 86 | QObject::connect(&pbSuccess, SIGNAL(clicked()), this, SLOT(success())); |
84 | QObject::connect(&pbFailure, SIGNAL(clicked()), this, SLOT(failure())); | 87 | QObject::connect(&pbFailure, SIGNAL(clicked()), this, SLOT(failure())); |
85 | QObject::connect(&pbSkip, SIGNAL(clicked()), this, SLOT(skip())); | 88 | QObject::connect(&pbSkip, SIGNAL(clicked()), this, SLOT(skip())); |
86 | 89 | ||
87 | /* The value of the signal these three slots will emit corresponds to | 90 | /* The value of the signal these three slots will emit corresponds to |
88 | * the different values we want to return | 91 | * the different values we want to return |
89 | */ | 92 | */ |
90 | QObject::connect(this, SIGNAL(emitCode(int)), &dummyDialog, SLOT(done(int))); | 93 | QObject::connect(this, SIGNAL(emitCode(int)), &dummyDialog, SLOT(done(int))); |
91 | return dummyDialog.exec(); | 94 | return dummyDialog.exec(); |
92 | } | 95 | } |
diff --git a/noncore/securityplugins/dummy/dummyplugin.h b/noncore/securityplugins/dummy/dummyplugin.h index 9680dff..3bfca98 100644 --- a/noncore/securityplugins/dummy/dummyplugin.h +++ b/noncore/securityplugins/dummy/dummyplugin.h | |||
@@ -1,66 +1,66 @@ | |||
1 | /** | 1 | /** |
2 | * \file dummyplugin.h | 2 | * \file dummyplugin.h |
3 | * \brief Standard Opie multiauth plugin definition | 3 | * \brief Standard Opie multiauth plugin definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef DUMMY_PLUGIN_H | 34 | #ifndef DUMMY_PLUGIN_H |
35 | #define DUMMY_PLUGIN_H | 35 | #define DUMMY_PLUGIN_H |
36 | 36 | ||
37 | #include <qobject.h> | 37 | #include <qobject.h> |
38 | #include <qstring.h> | 38 | #include <qstring.h> |
39 | #include <opie2/multiauthplugininterface.h> | 39 | #include <opie2/multiauthplugininterface.h> |
40 | 40 | ||
41 | /// Multi-authentication example plugin, implementing a trivial 'yes/no' verification. | 41 | /// Multi-authentication example plugin, implementing a trivial 'yes/no' verification. |
42 | /** | 42 | /** |
43 | * The plugin itself, implementing the main authenticate() function. | 43 | * The plugin itself, implementing the main authenticate() function. |
44 | */ | 44 | */ |
45 | class DummyPlugin : public QObject, public MultiauthPluginObject { | 45 | class DummyPlugin : public QObject, public Opie::Security::MultiauthPluginObject { |
46 | 46 | ||
47 | Q_OBJECT | 47 | Q_OBJECT |
48 | 48 | ||
49 | public: | 49 | public: |
50 | int authenticate(); | 50 | int authenticate(); |
51 | MultiauthConfigWidget * configWidget(QWidget * parent); | 51 | Opie::Security::MultiauthConfigWidget * configWidget(QWidget * parent); |
52 | QString pixmapNameConfig() const; | 52 | QString pixmapNameConfig() const; |
53 | QString pixmapNameWidget() const; | 53 | QString pixmapNameWidget() const; |
54 | QString pluginName() const; | 54 | QString pluginName() const; |
55 | 55 | ||
56 | signals: | 56 | signals: |
57 | /// Signal carrying the result code of this plugin | 57 | /// Signal carrying the result code of this plugin |
58 | void emitCode(int resultCode); | 58 | void emitCode(int resultCode); |
59 | 59 | ||
60 | private slots: | 60 | private slots: |
61 | void success(); | 61 | void success(); |
62 | void failure(); | 62 | void failure(); |
63 | void skip(); | 63 | void skip(); |
64 | }; | 64 | }; |
65 | 65 | ||
66 | #endif | 66 | #endif |
diff --git a/noncore/securityplugins/dummy/dummypluginimpl.cpp b/noncore/securityplugins/dummy/dummypluginimpl.cpp index 518996c..54dbdd1 100644 --- a/noncore/securityplugins/dummy/dummypluginimpl.cpp +++ b/noncore/securityplugins/dummy/dummypluginimpl.cpp | |||
@@ -1,28 +1,31 @@ | |||
1 | #include "dummypluginimpl.h" | 1 | #include "dummypluginimpl.h" |
2 | 2 | ||
3 | using Opie::Security::MultiauthPluginInterface; | ||
4 | using Opie::Security::MultiauthPluginObject; | ||
5 | |||
3 | DummyPluginImpl::DummyPluginImpl() { | 6 | DummyPluginImpl::DummyPluginImpl() { |
4 | dummyPlugin = new DummyPlugin(); | 7 | dummyPlugin = new DummyPlugin(); |
5 | } | 8 | } |
6 | 9 | ||
7 | DummyPluginImpl::~DummyPluginImpl() { | 10 | DummyPluginImpl::~DummyPluginImpl() { |
8 | delete dummyPlugin; | 11 | delete dummyPlugin; |
9 | } | 12 | } |
10 | 13 | ||
11 | MultiauthPluginObject* DummyPluginImpl::plugin() { | 14 | MultiauthPluginObject* DummyPluginImpl::plugin() { |
12 | return dummyPlugin; | 15 | return dummyPlugin; |
13 | } | 16 | } |
14 | 17 | ||
15 | Q_EXPORT_INTERFACE() { | 18 | Q_EXPORT_INTERFACE() { |
16 | Q_CREATE_INSTANCE( DummyPluginImpl ) | 19 | Q_CREATE_INSTANCE( DummyPluginImpl ) |
17 | } | 20 | } |
18 | 21 | ||
19 | QRESULT DummyPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | 22 | QRESULT DummyPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { |
20 | *iface = 0; | 23 | *iface = 0; |
21 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { | 24 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { |
22 | *iface = this, (*iface)->addRef(); | 25 | *iface = this, (*iface)->addRef(); |
23 | } else { | 26 | } else { |
24 | return QE_NOINTERFACE; | 27 | return QE_NOINTERFACE; |
25 | } | 28 | } |
26 | return QS_OK; | 29 | return QS_OK; |
27 | 30 | ||
28 | } | 31 | } |
diff --git a/noncore/securityplugins/dummy/dummypluginimpl.h b/noncore/securityplugins/dummy/dummypluginimpl.h index 49a18cd..ce8620d 100644 --- a/noncore/securityplugins/dummy/dummypluginimpl.h +++ b/noncore/securityplugins/dummy/dummypluginimpl.h | |||
@@ -1,58 +1,57 @@ | |||
1 | /** | 1 | /** |
2 | * \file dummypluginimpl.h | 2 | * \file dummypluginimpl.h |
3 | * \brief Standard Opie multiauth plugin interface definition | 3 | * \brief Standard Opie multiauth plugin interface definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef DUMMY_PLUGIN_IMPL_H | 34 | #ifndef DUMMY_PLUGIN_IMPL_H |
35 | #define DUMMY_PLUGIN_IMPL_H | 35 | #define DUMMY_PLUGIN_IMPL_H |
36 | 36 | ||
37 | #include "dummyplugin.h" | 37 | #include "dummyplugin.h" |
38 | 38 | ||
39 | /// Standard multiauth plugin class | 39 | /// Standard multiauth plugin class |
40 | class DummyPluginImpl : public MultiauthPluginInterface{ | 40 | class DummyPluginImpl : public Opie::Security::MultiauthPluginInterface{ |
41 | 41 | ||
42 | public: | 42 | public: |
43 | DummyPluginImpl(); | 43 | DummyPluginImpl(); |
44 | virtual ~DummyPluginImpl(); | 44 | virtual ~DummyPluginImpl(); |
45 | 45 | ||
46 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | 46 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); |
47 | /// defines standard addRef() and release() functions | 47 | /// defines standard addRef() and release() functions |
48 | Q_REFCOUNT; | 48 | Q_REFCOUNT; |
49 | 49 | ||
50 | virtual MultiauthPluginObject *plugin(); | 50 | virtual Opie::Security::MultiauthPluginObject *plugin(); |
51 | 51 | ||
52 | private: | 52 | private: |
53 | /// the plugin itself | 53 | /// the plugin itself |
54 | DummyPlugin *dummyPlugin; | 54 | DummyPlugin *dummyPlugin; |
55 | ulong ref; | ||
56 | }; | 55 | }; |
57 | 56 | ||
58 | #endif | 57 | #endif |
diff --git a/noncore/securityplugins/notice/noticeConfigWidget.cpp b/noncore/securityplugins/notice/noticeConfigWidget.cpp index e2c2d83..e532232 100644 --- a/noncore/securityplugins/notice/noticeConfigWidget.cpp +++ b/noncore/securityplugins/notice/noticeConfigWidget.cpp | |||
@@ -1,81 +1,83 @@ | |||
1 | #include "noticeConfigWidget.h" | 1 | #include "noticeConfigWidget.h" |
2 | 2 | ||
3 | #include <opie2/odebug.h> | 3 | #include <opie2/odebug.h> |
4 | 4 | ||
5 | #include <qwidget.h> | 5 | #include <qwidget.h> |
6 | #include <qlayout.h> | 6 | #include <qlayout.h> |
7 | #include <qlabel.h> | 7 | #include <qlabel.h> |
8 | #include <qregexp.h> | 8 | #include <qregexp.h> |
9 | #include <qgroupbox.h> | 9 | #include <qgroupbox.h> |
10 | 10 | ||
11 | using Opie::Security::MultiauthConfigWidget; | ||
12 | |||
11 | /// constructs the widget, filling the noticeMLE QMultiLineEdit with the "noticeText" entry | 13 | /// constructs the widget, filling the noticeMLE QMultiLineEdit with the "noticeText" entry |
12 | NoticeConfigWidget::NoticeConfigWidget(QWidget* parent = 0, const char* name = "Notice configuration widget") : MultiauthConfigWidget(parent, name) | 14 | NoticeConfigWidget::NoticeConfigWidget(QWidget* parent = 0, const char* name = "Notice configuration widget") : MultiauthConfigWidget(parent, name) |
13 | { | 15 | { |
14 | QVBoxLayout *baseLayout = new QVBoxLayout( this); | 16 | QVBoxLayout *baseLayout = new QVBoxLayout( this); |
15 | baseLayout->setSpacing(11); | 17 | baseLayout->setSpacing(11); |
16 | baseLayout->setMargin(6); | 18 | baseLayout->setMargin(6); |
17 | baseLayout->setAlignment( Qt::AlignTop ); | 19 | baseLayout->setAlignment( Qt::AlignTop ); |
18 | 20 | ||
19 | QGroupBox *configBox = new QGroupBox(0, Qt::Vertical, tr("Set the message the user must accept"), this); | 21 | QGroupBox *configBox = new QGroupBox(0, Qt::Vertical, tr("Set the message the user must accept"), this); |
20 | baseLayout->addWidget(configBox); | 22 | baseLayout->addWidget(configBox); |
21 | QVBoxLayout *boxLayout = new QVBoxLayout( configBox->layout() ); | 23 | QVBoxLayout *boxLayout = new QVBoxLayout( configBox->layout() ); |
22 | 24 | ||
23 | QLabel * comment1 = new QLabel("<p><em>" + tr("You may want to consult your legal department for proper wording here.") + "</em></p>", configBox); | 25 | QLabel * comment1 = new QLabel("<p><em>" + tr("You may want to consult your legal department for proper wording here.") + "</em></p>", configBox); |
24 | boxLayout->addWidget(comment1); | 26 | boxLayout->addWidget(comment1); |
25 | 27 | ||
26 | // Set the multilineedit box text to getNoticeText() | 28 | // Set the multilineedit box text to getNoticeText() |
27 | noticeMLE = new QMultiLineEdit(configBox, "notice text"); | 29 | noticeMLE = new QMultiLineEdit(configBox, "notice text"); |
28 | noticeMLE->setWordWrap(QMultiLineEdit::WidgetWidth); | 30 | noticeMLE->setWordWrap(QMultiLineEdit::WidgetWidth); |
29 | noticeMLE->setFocus(); | 31 | noticeMLE->setFocus(); |
30 | noticeMLE->setText(getNoticeText()); | 32 | noticeMLE->setText(getNoticeText()); |
31 | boxLayout->addWidget(noticeMLE); | 33 | boxLayout->addWidget(noticeMLE); |
32 | 34 | ||
33 | resetNoticeButton = new QPushButton( tr("Reset notice to default"), configBox, "reset Notice Button" ); | 35 | resetNoticeButton = new QPushButton( tr("Reset notice to default"), configBox, "reset Notice Button" ); |
34 | connect(resetNoticeButton, SIGNAL( clicked() ), this, SLOT( resetNotice() )); | 36 | connect(resetNoticeButton, SIGNAL( clicked() ), this, SLOT( resetNotice() )); |
35 | boxLayout->addWidget(resetNoticeButton, 0, Qt::AlignHCenter); | 37 | boxLayout->addWidget(resetNoticeButton, 0, Qt::AlignHCenter); |
36 | 38 | ||
37 | QLabel * comment2 = new QLabel("<p>" + tr("Note: you can use HTML tags to improve its layout (example: text between <em> and </em> will be <em>emphasized</em>)") + "</p>", configBox); | 39 | QLabel * comment2 = new QLabel("<p>" + tr("Note: you can use HTML tags to improve its layout (example: text between <em> and </em> will be <em>emphasized</em>)") + "</p>", configBox); |
38 | boxLayout->addWidget(comment2); | 40 | boxLayout->addWidget(comment2); |
39 | 41 | ||
40 | } | 42 | } |
41 | 43 | ||
42 | /// nothing to do | 44 | /// nothing to do |
43 | NoticeConfigWidget::~NoticeConfigWidget() | 45 | NoticeConfigWidget::~NoticeConfigWidget() |
44 | {} | 46 | {} |
45 | 47 | ||
46 | /// write the notice text in the multiauth.conf Config file | 48 | /// write the notice text in the multiauth.conf Config file |
47 | void NoticeConfigWidget::writeConfig() | 49 | void NoticeConfigWidget::writeConfig() |
48 | { | 50 | { |
49 | if ( noticeMLE->edited() ) { | 51 | if ( noticeMLE->edited() ) { |
50 | odebug << "writing new notice text in Security.conf" << oendl; | 52 | odebug << "writing new notice text in Security.conf" << oendl; |
51 | setNoticeText(noticeMLE->text()); | 53 | setNoticeText(noticeMLE->text()); |
52 | } | 54 | } |
53 | } | 55 | } |
54 | 56 | ||
55 | /// reset the notice text to the hard-coded example defaultNoticeText | 57 | /// reset the notice text to the hard-coded example defaultNoticeText |
56 | void NoticeConfigWidget::resetNotice() | 58 | void NoticeConfigWidget::resetNotice() |
57 | { | 59 | { |
58 | noticeMLE->setText(defaultNoticeText); | 60 | noticeMLE->setText(defaultNoticeText); |
59 | } | 61 | } |
60 | 62 | ||
61 | /// get the notice text from the config file (with true new lines) | 63 | /// get the notice text from the config file (with true new lines) |
62 | /** | 64 | /** |
63 | * if no text has been defined yet returns defaultNoticeText | 65 | * if no text has been defined yet returns defaultNoticeText |
64 | */ | 66 | */ |
65 | QString NoticeConfigWidget::getNoticeText() { | 67 | QString NoticeConfigWidget::getNoticeText() { |
66 | m_config = new Config("Security"); | 68 | m_config = new Config("Security"); |
67 | m_config->setGroup("NoticePlugin"); | 69 | m_config->setGroup("NoticePlugin"); |
68 | // Note: C++ processes '\' character, so we have to type \\\\ to mean \\ to QRegExp | 70 | // Note: C++ processes '\' character, so we have to type \\\\ to mean \\ to QRegExp |
69 | QString noticeText = m_config->readEntry("noticeText", defaultNoticeText).replace( QRegExp("\\\\n"), "\n" ); | 71 | QString noticeText = m_config->readEntry("noticeText", defaultNoticeText).replace( QRegExp("\\\\n"), "\n" ); |
70 | delete m_config; | 72 | delete m_config; |
71 | return noticeText; | 73 | return noticeText; |
72 | } | 74 | } |
73 | 75 | ||
74 | /// set the notice text in our m_config config file (escaping new lines) | 76 | /// set the notice text in our m_config config file (escaping new lines) |
75 | void NoticeConfigWidget::setNoticeText(QString noticeText) { | 77 | void NoticeConfigWidget::setNoticeText(QString noticeText) { |
76 | m_config = new Config("Security"); | 78 | m_config = new Config("Security"); |
77 | m_config->setGroup("NoticePlugin"); | 79 | m_config->setGroup("NoticePlugin"); |
78 | // since Config files do not allow true newlines, we replace them with litteral "\n" | 80 | // since Config files do not allow true newlines, we replace them with litteral "\n" |
79 | m_config->writeEntry("noticeText", noticeText.replace( QRegExp("\n"), "\\n" )); | 81 | m_config->writeEntry("noticeText", noticeText.replace( QRegExp("\n"), "\\n" )); |
80 | delete m_config; | 82 | delete m_config; |
81 | } | 83 | } |
diff --git a/noncore/securityplugins/notice/noticeConfigWidget.h b/noncore/securityplugins/notice/noticeConfigWidget.h index 69f15bf..c90484c 100644 --- a/noncore/securityplugins/notice/noticeConfigWidget.h +++ b/noncore/securityplugins/notice/noticeConfigWidget.h | |||
@@ -1,71 +1,72 @@ | |||
1 | /** | 1 | /** |
2 | * \file noticeConfigWidget.h | 2 | * \file noticeConfigWidget.h |
3 | * \brief Notice plugin configuration widget | 3 | * \brief Notice plugin configuration widget |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef NOTICECONFIGWIDGET_H | 34 | #ifndef NOTICECONFIGWIDGET_H |
35 | #define NOTICECONFIGWIDGET_H | 35 | #define NOTICECONFIGWIDGET_H |
36 | 36 | ||
37 | #include <qpushbutton.h> | 37 | #include <qpushbutton.h> |
38 | #include <qmultilineedit.h> | 38 | #include <qmultilineedit.h> |
39 | #include <qpe/config.h> | 39 | #include <qpe/config.h> |
40 | 40 | ||
41 | #include <opie2/multiauthconfigwidget.h> | 41 | #include <opie2/multiauthconfigwidget.h> |
42 | 42 | ||
43 | static char defaultNoticeText [] = "<h2>NOTICE TO USERS</h2>\n" | 43 | static char defaultNoticeText [] = "<h2>NOTICE TO USERS</h2>\n" |
44 | "<p>This is a private computer system and is the property of " | 44 | "<p>This is a private computer system and is the property of " |
45 | "the company XXX / Mr or Ms X. It is for authorized " | 45 | "the company XXX / Mr or Ms X. It is for authorized " |
46 | "use only. Users have no expectation of privacy.</p>\n" | 46 | "use only. Users have no expectation of privacy.</p>\n" |
47 | "<p><strong>Unauthorized or improper use of this system may result in " | 47 | "<p><strong>Unauthorized or improper use of this system may result in " |
48 | "disciplinary action and civil and criminal penalties. <em>By continuing to use " | 48 | "disciplinary action and civil and criminal penalties. <em>By continuing to use " |
49 | "this system you indicate your awareness of and consent to these " | 49 | "this system you indicate your awareness of and consent to these " |
50 | "terms. LOG OFF IMMEDIATELY if you do not agree to them.</em></strong></p>"; | 50 | "terms. LOG OFF IMMEDIATELY if you do not agree to them.</em></strong></p>"; |
51 | 51 | ||
52 | class NoticeConfigWidget : public MultiauthConfigWidget { | 52 | class NoticeConfigWidget : public Opie::Security::MultiauthConfigWidget { |
53 | 53 | ||
54 | Q_OBJECT | 54 | Q_OBJECT |
55 | 55 | ||
56 | public: | 56 | public: |
57 | NoticeConfigWidget(QWidget* parent, const char* name); | 57 | NoticeConfigWidget(QWidget* parent, const char* name); |
58 | virtual ~NoticeConfigWidget(); | 58 | virtual ~NoticeConfigWidget(); |
59 | virtual void writeConfig(); | 59 | virtual void writeConfig(); |
60 | private: | 60 | private: |
61 | QMultiLineEdit * noticeMLE; | 61 | QMultiLineEdit * noticeMLE; |
62 | QPushButton * resetNoticeButton; | 62 | QPushButton * resetNoticeButton; |
63 | private slots: | 63 | private slots: |
64 | void resetNotice(); | 64 | void resetNotice(); |
65 | private: | 65 | private: |
66 | Config * m_config; | 66 | Config * m_config; |
67 | QString getNoticeText(); | 67 | QString getNoticeText(); |
68 | void setNoticeText(QString noticeText); | 68 | void setNoticeText(QString noticeText); |
69 | }; | 69 | }; |
70 | 70 | ||
71 | #endif // NOTICECONFIGWIDGET_H | 71 | #endif // NOTICECONFIGWIDGET_H |
72 | |||
diff --git a/noncore/securityplugins/notice/noticeplugin.cpp b/noncore/securityplugins/notice/noticeplugin.cpp index bacc439..25a452a 100644 --- a/noncore/securityplugins/notice/noticeplugin.cpp +++ b/noncore/securityplugins/notice/noticeplugin.cpp | |||
@@ -1,84 +1,86 @@ | |||
1 | #include "noticeplugin.h" | 1 | #include "noticeplugin.h" |
2 | 2 | ||
3 | #include <opie2/oapplication.h> | 3 | #include <opie2/oapplication.h> |
4 | 4 | ||
5 | #include <qmessagebox.h> | 5 | #include <qmessagebox.h> |
6 | #include <qregexp.h> | 6 | #include <qregexp.h> |
7 | 7 | ||
8 | using Opie::Security::MultiauthPluginObject; | ||
9 | using Opie::Security::MultiauthConfigWidget; | ||
8 | 10 | ||
9 | /// creates and initializes the m_config Config object | 11 | /// creates and initializes the m_config Config object |
10 | NoticePlugin::NoticePlugin() : MultiauthPluginObject(), noticeW(0) { | 12 | NoticePlugin::NoticePlugin() : MultiauthPluginObject(), noticeW(0) { |
11 | m_config = new Config("Security"); | 13 | m_config = new Config("Security"); |
12 | m_config->setGroup("NoticePlugin"); | 14 | m_config->setGroup("NoticePlugin"); |
13 | } | 15 | } |
14 | 16 | ||
15 | /// deletes the m_config Config object and noticeW if necessary | 17 | /// deletes the m_config Config object and noticeW if necessary |
16 | NoticePlugin::~NoticePlugin() { | 18 | NoticePlugin::~NoticePlugin() { |
17 | delete m_config; | 19 | delete m_config; |
18 | if (noticeW != 0) | 20 | if (noticeW != 0) |
19 | delete noticeW; | 21 | delete noticeW; |
20 | } | 22 | } |
21 | 23 | ||
22 | /// Simply return its name (Notice plugin) | 24 | /// Simply return its name (Notice plugin) |
23 | QString NoticePlugin::pluginName() const { | 25 | QString NoticePlugin::pluginName() const { |
24 | return "Notice plugin"; | 26 | return "Notice plugin"; |
25 | } | 27 | } |
26 | 28 | ||
27 | /// return the Notice widget configuration widget | 29 | /// return the Notice widget configuration widget |
28 | /** | 30 | /** |
29 | * \return noticeW, the NoticeConfigWidget | 31 | * \return noticeW, the NoticeConfigWidget |
30 | */ | 32 | */ |
31 | MultiauthConfigWidget * NoticePlugin::configWidget(QWidget * parent) { | 33 | MultiauthConfigWidget * NoticePlugin::configWidget(QWidget * parent) { |
32 | if (noticeW == 0) | 34 | if (noticeW == 0) |
33 | noticeW = new NoticeConfigWidget(parent, "Notice configuration widget"); | 35 | noticeW = new NoticeConfigWidget(parent, "Notice configuration widget"); |
34 | return noticeW; | 36 | return noticeW; |
35 | } | 37 | } |
36 | 38 | ||
37 | /// return the path of the small tab icon | 39 | /// return the path of the small tab icon |
38 | QString NoticePlugin::pixmapNameConfig() const { | 40 | QString NoticePlugin::pixmapNameConfig() const { |
39 | return "security/noticeplugin_small"; | 41 | return "security/noticeplugin_small"; |
40 | } | 42 | } |
41 | 43 | ||
42 | /// return the path of the big icon for the active/order checklist | 44 | /// return the path of the big icon for the active/order checklist |
43 | QString NoticePlugin::pixmapNameWidget() const { | 45 | QString NoticePlugin::pixmapNameWidget() const { |
44 | return "security/noticeplugin"; | 46 | return "security/noticeplugin"; |
45 | } | 47 | } |
46 | 48 | ||
47 | /// Displays the configured message and an 'Accept' button | 49 | /// Displays the configured message and an 'Accept' button |
48 | /** | 50 | /** |
49 | * \return the outcome code of this authentication (can be only success) | 51 | * \return the outcome code of this authentication (can be only success) |
50 | */ | 52 | */ |
51 | int NoticePlugin::authenticate() { | 53 | int NoticePlugin::authenticate() { |
52 | QMessageBox noticeDialog("Notice plugin", | 54 | QMessageBox noticeDialog("Notice plugin", |
53 | getNoticeText(), | 55 | getNoticeText(), |
54 | QMessageBox::Warning, | 56 | QMessageBox::Warning, |
55 | QMessageBox::Yes, | 57 | QMessageBox::Yes, |
56 | 0, | 58 | 0, |
57 | 0, | 59 | 0, |
58 | 0, | 60 | 0, |
59 | "notice plugin dialog", | 61 | "notice plugin dialog", |
60 | true, | 62 | true, |
61 | Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop); | 63 | Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop); |
62 | 64 | ||
63 | noticeDialog.setButtonText(QMessageBox::Yes, tr("I accept")); | 65 | noticeDialog.setButtonText(QMessageBox::Yes, tr("I accept")); |
64 | 66 | ||
65 | QRect desk = oApp->desktop()->geometry(); | 67 | QRect desk = oApp->desktop()->geometry(); |
66 | noticeDialog.setGeometry( 0, 0, desk.width(), desk.height() ); | 68 | noticeDialog.setGeometry( 0, 0, desk.width(), desk.height() ); |
67 | 69 | ||
68 | switch (noticeDialog.exec()) | 70 | switch (noticeDialog.exec()) |
69 | { | 71 | { |
70 | case QMessageBox::Yes: | 72 | case QMessageBox::Yes: |
71 | return MultiauthPluginObject::Success; | 73 | return MultiauthPluginObject::Success; |
72 | } | 74 | } |
73 | return 255; //should not be returned anyway | 75 | return 255; //should not be returned anyway |
74 | } | 76 | } |
75 | 77 | ||
76 | /// get the notice text from our m_config config file (with true new lines) | 78 | /// get the notice text from our m_config config file (with true new lines) |
77 | /** | 79 | /** |
78 | * if no text has been defined yet returns defaultNoticeText | 80 | * if no text has been defined yet returns defaultNoticeText |
79 | */ | 81 | */ |
80 | QString NoticePlugin::getNoticeText() { | 82 | QString NoticePlugin::getNoticeText() { |
81 | // Note: C++ processes '\' character, so we have to type \\\\ to mean \\ to QRegExp | 83 | // Note: C++ processes '\' character, so we have to type \\\\ to mean \\ to QRegExp |
82 | return m_config->readEntry("noticeText", defaultNoticeText).replace( QRegExp("\\\\n"), "\n" ); | 84 | return m_config->readEntry("noticeText", defaultNoticeText).replace( QRegExp("\\\\n"), "\n" ); |
83 | } | 85 | } |
84 | 86 | ||
diff --git a/noncore/securityplugins/notice/noticeplugin.h b/noncore/securityplugins/notice/noticeplugin.h index 842d47b..4aa6f02 100644 --- a/noncore/securityplugins/notice/noticeplugin.h +++ b/noncore/securityplugins/notice/noticeplugin.h | |||
@@ -1,64 +1,64 @@ | |||
1 | /** | 1 | /** |
2 | * \file noticeplugin.h | 2 | * \file noticeplugin.h |
3 | * \brief Standard Opie multiauth plugin definition | 3 | * \brief Standard Opie multiauth plugin definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef NOTICE_PLUGIN_H | 34 | #ifndef NOTICE_PLUGIN_H |
35 | #define NOTICE_PLUGIN_H | 35 | #define NOTICE_PLUGIN_H |
36 | 36 | ||
37 | #include <qstring.h> | 37 | #include <qstring.h> |
38 | #include <qpe/config.h> | 38 | #include <qpe/config.h> |
39 | #include <opie2/multiauthplugininterface.h> | 39 | #include <opie2/multiauthplugininterface.h> |
40 | #include "noticeConfigWidget.h" | 40 | #include "noticeConfigWidget.h" |
41 | 41 | ||
42 | /// Multi-authentication plugin, having the user accept a (legal, etc.) notice text. | 42 | /// Multi-authentication plugin, having the user accept a (legal, etc.) notice text. |
43 | /** | 43 | /** |
44 | * The plugin itself, implementing the main authenticate() function. | 44 | * The plugin itself, implementing the main authenticate() function. |
45 | */ | 45 | */ |
46 | class NoticePlugin : public QObject, public MultiauthPluginObject { | 46 | class NoticePlugin : public QObject, public Opie::Security::MultiauthPluginObject { |
47 | 47 | ||
48 | Q_OBJECT; | 48 | Q_OBJECT; |
49 | 49 | ||
50 | public: | 50 | public: |
51 | NoticePlugin(); | 51 | NoticePlugin(); |
52 | virtual ~NoticePlugin(); | 52 | virtual ~NoticePlugin(); |
53 | int authenticate(); | 53 | int authenticate(); |
54 | MultiauthConfigWidget * configWidget(QWidget * parent); | 54 | Opie::Security::MultiauthConfigWidget * configWidget(QWidget * parent); |
55 | QString pixmapNameConfig() const; | 55 | QString pixmapNameConfig() const; |
56 | QString pixmapNameWidget() const; | 56 | QString pixmapNameWidget() const; |
57 | QString pluginName() const; | 57 | QString pluginName() const; |
58 | private: | 58 | private: |
59 | NoticeConfigWidget * noticeW; | 59 | NoticeConfigWidget * noticeW; |
60 | Config * m_config; | 60 | Config * m_config; |
61 | QString getNoticeText(); | 61 | QString getNoticeText(); |
62 | }; | 62 | }; |
63 | 63 | ||
64 | #endif | 64 | #endif |
diff --git a/noncore/securityplugins/notice/noticepluginimpl.cpp b/noncore/securityplugins/notice/noticepluginimpl.cpp index 34e3cfc..7524512 100644 --- a/noncore/securityplugins/notice/noticepluginimpl.cpp +++ b/noncore/securityplugins/notice/noticepluginimpl.cpp | |||
@@ -1,28 +1,31 @@ | |||
1 | #include "noticepluginimpl.h" | 1 | #include "noticepluginimpl.h" |
2 | 2 | ||
3 | using Opie::Security::MultiauthPluginObject; | ||
4 | using Opie::Security::MultiauthPluginInterface; | ||
5 | |||
3 | NoticePluginImpl::NoticePluginImpl() { | 6 | NoticePluginImpl::NoticePluginImpl() { |
4 | noticePlugin = new NoticePlugin(); | 7 | noticePlugin = new NoticePlugin(); |
5 | } | 8 | } |
6 | 9 | ||
7 | NoticePluginImpl::~NoticePluginImpl() { | 10 | NoticePluginImpl::~NoticePluginImpl() { |
8 | delete noticePlugin; | 11 | delete noticePlugin; |
9 | } | 12 | } |
10 | 13 | ||
11 | MultiauthPluginObject* NoticePluginImpl::plugin() { | 14 | MultiauthPluginObject* NoticePluginImpl::plugin() { |
12 | return noticePlugin; | 15 | return noticePlugin; |
13 | } | 16 | } |
14 | 17 | ||
15 | Q_EXPORT_INTERFACE() { | 18 | Q_EXPORT_INTERFACE() { |
16 | Q_CREATE_INSTANCE( NoticePluginImpl ) | 19 | Q_CREATE_INSTANCE( NoticePluginImpl ) |
17 | } | 20 | } |
18 | 21 | ||
19 | QRESULT NoticePluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | 22 | QRESULT NoticePluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { |
20 | *iface = 0; | 23 | *iface = 0; |
21 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { | 24 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { |
22 | *iface = this, (*iface)->addRef(); | 25 | *iface = this, (*iface)->addRef(); |
23 | } else { | 26 | } else { |
24 | return QE_NOINTERFACE; | 27 | return QE_NOINTERFACE; |
25 | } | 28 | } |
26 | return QS_OK; | 29 | return QS_OK; |
27 | 30 | ||
28 | } | 31 | } |
diff --git a/noncore/securityplugins/notice/noticepluginimpl.h b/noncore/securityplugins/notice/noticepluginimpl.h index b2a1140..1b1e22f 100644 --- a/noncore/securityplugins/notice/noticepluginimpl.h +++ b/noncore/securityplugins/notice/noticepluginimpl.h | |||
@@ -1,61 +1,60 @@ | |||
1 | /** | 1 | /** |
2 | * \file noticepluginimpl.h | 2 | * \file noticepluginimpl.h |
3 | * \brief Standard Opie multiauth plugin definition | 3 | * \brief Standard Opie multiauth plugin definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef NOTICE_PLUGIN_IMPL | 34 | #ifndef NOTICE_PLUGIN_IMPL |
35 | #define NOTICE_PLUGIN_IMPL | 35 | #define NOTICE_PLUGIN_IMPL |
36 | 36 | ||
37 | #include "noticeplugin.h" | 37 | #include "noticeplugin.h" |
38 | 38 | ||
39 | /** | 39 | /** |
40 | * \brief Standard multiauth plugin class | 40 | * \brief Standard multiauth plugin class |
41 | */ | 41 | */ |
42 | class NoticePluginImpl : public MultiauthPluginInterface{ | 42 | class NoticePluginImpl : public Opie::Security::MultiauthPluginInterface{ |
43 | 43 | ||
44 | public: | 44 | public: |
45 | NoticePluginImpl(); | 45 | NoticePluginImpl(); |
46 | virtual ~NoticePluginImpl(); | 46 | virtual ~NoticePluginImpl(); |
47 | 47 | ||
48 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | 48 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); |
49 | /// defines standard addRef() and release() functions | 49 | /// defines standard addRef() and release() functions |
50 | Q_REFCOUNT; | 50 | Q_REFCOUNT; |
51 | 51 | ||
52 | virtual MultiauthPluginObject *plugin(); | 52 | virtual Opie::Security::MultiauthPluginObject *plugin(); |
53 | 53 | ||
54 | private: | 54 | private: |
55 | /// the plugin itself | 55 | /// the plugin itself |
56 | NoticePlugin *noticePlugin; | 56 | NoticePlugin *noticePlugin; |
57 | ulong ref; | ||
58 | }; | 57 | }; |
59 | 58 | ||
60 | #endif | 59 | #endif |
61 | 60 | ||
diff --git a/noncore/securityplugins/pin/pin.cpp b/noncore/securityplugins/pin/pin.cpp index 37dc5be..c21ffcd 100644 --- a/noncore/securityplugins/pin/pin.cpp +++ b/noncore/securityplugins/pin/pin.cpp | |||
@@ -1,342 +1,345 @@ | |||
1 | /** | 1 | /** |
2 | * \note Taken from opie-security and libqpe password.cpp, and modified for Opie multiauth by Clement Seveillac | 2 | * \note Taken from opie-security and libqpe password.cpp, and modified for Opie multiauth by Clement Seveillac |
3 | */ | 3 | */ |
4 | /********************************************************************** | 4 | /********************************************************************** |
5 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 5 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
6 | ** | 6 | ** |
7 | ** This file is part of the Qtopia Environment. | 7 | ** This file is part of the Qtopia Environment. |
8 | ** | 8 | ** |
9 | ** This file may be distributed and/or modified under the terms of the | 9 | ** This file may be distributed and/or modified under the terms of the |
10 | ** GNU General Public License version 2 as published by the Free Software | 10 | ** GNU General Public License version 2 as published by the Free Software |
11 | ** Foundation and appearing in the file LICENSE.GPL included in the | 11 | ** Foundation and appearing in the file LICENSE.GPL included in the |
12 | ** packaging of this file. | 12 | ** packaging of this file. |
13 | ** | 13 | ** |
14 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 14 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
15 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 15 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
16 | ** | 16 | ** |
17 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 17 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
18 | ** | 18 | ** |
19 | ** Contact info@trolltech.com if any conditions of this licensing are | 19 | ** Contact info@trolltech.com if any conditions of this licensing are |
20 | ** not clear to you. | 20 | ** not clear to you. |
21 | ** | 21 | ** |
22 | **********************************************************************/ | 22 | **********************************************************************/ |
23 | 23 | ||
24 | #include "pin.h" | 24 | #include "pin.h" |
25 | #include "pinDialogBase.h" | 25 | #include "pinDialogBase.h" |
26 | #include "pinConfigWidget.h" | 26 | #include "pinConfigWidget.h" |
27 | /* OPIE */ | 27 | /* OPIE */ |
28 | #include <opie2/odebug.h> | 28 | #include <opie2/odebug.h> |
29 | #include <opie2/oapplication.h> | 29 | #include <opie2/oapplication.h> |
30 | /* QT */ | 30 | /* QT */ |
31 | #include <qpe/config.h> | 31 | #include <qpe/config.h> |
32 | #include <qlabel.h> | 32 | #include <qlabel.h> |
33 | #include <qlineedit.h> | 33 | #include <qlineedit.h> |
34 | #include <qtextview.h> | 34 | #include <qtextview.h> |
35 | #include <qstring.h> | 35 | #include <qstring.h> |
36 | #include <qdialog.h> | 36 | #include <qdialog.h> |
37 | /* UNIX */ | 37 | /* UNIX */ |
38 | #include <unistd.h> | 38 | #include <unistd.h> |
39 | #include <stdlib.h> | 39 | #include <stdlib.h> |
40 | #include <time.h> | 40 | #include <time.h> |
41 | 41 | ||
42 | extern "C" char *crypt(const char *key, const char *salt); | 42 | extern "C" char *crypt(const char *key, const char *salt); |
43 | 43 | ||
44 | using Opie::Security::MultiauthConfigWidget; | ||
45 | using Opie::Security::MultiauthPluginObject; | ||
46 | |||
44 | /// set to TRUE when we press the 'Skip' button | 47 | /// set to TRUE when we press the 'Skip' button |
45 | bool isSkip = FALSE; | 48 | static bool isSkip = FALSE; |
46 | 49 | ||
47 | /// PIN input graphical widget. | 50 | /// PIN input graphical widget. |
48 | /** | 51 | /** |
49 | * Inherits the PinDialogBase class defined originally in pinDialogBase.ui interface file. | 52 | * Inherits the PinDialogBase class defined originally in pinDialogBase.ui interface file. |
50 | * \sa PinDlg and PinDialog (the class generated from the .ui file) | 53 | * \sa PinDlg and PinDialog (the class generated from the .ui file) |
51 | * It comes from the original PIN locking code in Opie : | 54 | * It comes from the original PIN locking code in Opie : |
52 | * \sa http://dudu.dyn.2-h.org/opiedoxydoc/library_2password_8cpp-source.html | 55 | * \sa http://dudu.dyn.2-h.org/opiedoxydoc/library_2password_8cpp-source.html |
53 | */ | 56 | */ |
54 | class PinDialog : public PinDialogBase | 57 | class PinDialog : public PinDialogBase |
55 | { | 58 | { |
56 | Q_OBJECT | 59 | Q_OBJECT |
57 | 60 | ||
58 | public: | 61 | public: |
59 | PinDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); | 62 | PinDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); |
60 | ~PinDialog(); | 63 | ~PinDialog(); |
61 | 64 | ||
62 | void clear(); | 65 | void clear(); |
63 | void setPrompt( const QString& ); | 66 | void setPrompt( const QString& ); |
64 | 67 | ||
65 | signals: | 68 | signals: |
66 | /// emitted when we press the Enter button | 69 | /// emitted when we press the Enter button |
67 | void passwordEntered( const QString& ); | 70 | void passwordEntered( const QString& ); |
68 | /// emitted when we press the Skip button | 71 | /// emitted when we press the Skip button |
69 | void skip(); | 72 | void skip(); |
70 | 73 | ||
71 | protected: | 74 | protected: |
72 | bool eventFilter( QObject*, QEvent* ); | 75 | bool eventFilter( QObject*, QEvent* ); |
73 | 76 | ||
74 | private: | 77 | private: |
75 | void input( QString ); | 78 | void input( QString ); |
76 | friend class PinPlugin; | 79 | friend class PinPlugin; |
77 | QString text; | 80 | QString text; |
78 | }; | 81 | }; |
79 | 82 | ||
80 | 83 | ||
81 | /// Constructs a PinDialog widget, and initializes things | 84 | /// Constructs a PinDialog widget, and initializes things |
82 | PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl ) | 85 | PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl ) |
83 | : PinDialogBase( parent, name, fl ) | 86 | : PinDialogBase( parent, name, fl ) |
84 | { | 87 | { |
85 | QRect desk = oApp->desktop()->geometry(); | 88 | QRect desk = oApp->desktop()->geometry(); |
86 | 89 | ||
87 | if ( desk.width() < 220 ) { | 90 | if ( desk.width() < 220 ) { |
88 | QFont f( font() ); | 91 | QFont f( font() ); |
89 | f.setPointSize( 18 ); | 92 | f.setPointSize( 18 ); |
90 | setFont( f ); | 93 | setFont( f ); |
91 | f.setPointSize( 12 ); | 94 | f.setPointSize( 12 ); |
92 | prompt->setFont( f ); | 95 | prompt->setFont( f ); |
93 | } | 96 | } |
94 | 97 | ||
95 | button_0->installEventFilter( this ); | 98 | button_0->installEventFilter( this ); |
96 | button_1->installEventFilter( this ); | 99 | button_1->installEventFilter( this ); |
97 | button_2->installEventFilter( this ); | 100 | button_2->installEventFilter( this ); |
98 | button_3->installEventFilter( this ); | 101 | button_3->installEventFilter( this ); |
99 | button_4->installEventFilter( this ); | 102 | button_4->installEventFilter( this ); |
100 | button_5->installEventFilter( this ); | 103 | button_5->installEventFilter( this ); |
101 | button_6->installEventFilter( this ); | 104 | button_6->installEventFilter( this ); |
102 | button_7->installEventFilter( this ); | 105 | button_7->installEventFilter( this ); |
103 | button_8->installEventFilter( this ); | 106 | button_8->installEventFilter( this ); |
104 | button_9->installEventFilter( this ); | 107 | button_9->installEventFilter( this ); |
105 | button_Skip->installEventFilter( this ); | 108 | button_Skip->installEventFilter( this ); |
106 | button_OK->installEventFilter( this ); | 109 | button_OK->installEventFilter( this ); |
107 | setFocus(); | 110 | setFocus(); |
108 | } | 111 | } |
109 | 112 | ||
110 | /// nothing to do | 113 | /// nothing to do |
111 | PinDialog::~PinDialog() | 114 | PinDialog::~PinDialog() |
112 | { | 115 | { |
113 | // no need to delete child widgets, Qt does it all for us | 116 | // no need to delete child widgets, Qt does it all for us |
114 | } | 117 | } |
115 | 118 | ||
116 | /// Record the pressed numbers, and the Skip and Enter commands | 119 | /// Record the pressed numbers, and the Skip and Enter commands |
117 | bool PinDialog::eventFilter( QObject*o, QEvent*e ) | 120 | bool PinDialog::eventFilter( QObject*o, QEvent*e ) |
118 | { | 121 | { |
119 | if ( e->type() == QEvent::MouseButtonRelease ) { | 122 | if ( e->type() == QEvent::MouseButtonRelease ) { |
120 | if ( o == button_OK ) { | 123 | if ( o == button_OK ) { |
121 | emit passwordEntered( text ); | 124 | emit passwordEntered( text ); |
122 | } | 125 | } |
123 | else if ( o == button_Skip ) { | 126 | else if ( o == button_Skip ) { |
124 | isSkip = TRUE; | 127 | isSkip = TRUE; |
125 | emit skip(); | 128 | emit skip(); |
126 | } | 129 | } |
127 | else { | 130 | else { |
128 | QLabel *l = (QLabel*)o; | 131 | QLabel *l = (QLabel*)o; |
129 | input(l->text()); | 132 | input(l->text()); |
130 | } | 133 | } |
131 | } | 134 | } |
132 | return FALSE; | 135 | return FALSE; |
133 | } | 136 | } |
134 | 137 | ||
135 | void PinDialog::input( QString c ) | 138 | void PinDialog::input( QString c ) |
136 | { | 139 | { |
137 | text += c; | 140 | text += c; |
138 | display->setText( text ); | 141 | display->setText( text ); |
139 | } | 142 | } |
140 | 143 | ||
141 | void PinDialog::setPrompt( const QString& s ) | 144 | void PinDialog::setPrompt( const QString& s ) |
142 | { | 145 | { |
143 | prompt->setText( s ); | 146 | prompt->setText( s ); |
144 | } | 147 | } |
145 | 148 | ||
146 | void PinDialog::clear() | 149 | void PinDialog::clear() |
147 | { | 150 | { |
148 | text = ""; | 151 | text = ""; |
149 | input(""); | 152 | input(""); |
150 | } | 153 | } |
151 | 154 | ||
152 | /// PIN dialog | 155 | /// PIN dialog |
153 | /** | 156 | /** |
154 | * Dialog containing the PinDialog widget (which asks for a PIN) and interfacing with its I/O. | 157 | * Dialog containing the PinDialog widget (which asks for a PIN) and interfacing with its I/O. |
155 | * \sa PinDialog | 158 | * \sa PinDialog |
156 | */ | 159 | */ |
157 | class PinDlg : public QDialog | 160 | class PinDlg : public QDialog |
158 | { | 161 | { |
159 | public: | 162 | public: |
160 | PinDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE ) | 163 | PinDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE ) |
161 | : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ), | 164 | : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ), |
162 | modl(modal) | 165 | modl(modal) |
163 | { | 166 | { |
164 | pinD = new PinDialog( this ); | 167 | pinD = new PinDialog( this ); |
165 | 168 | ||
166 | if ( fullscreen ) { | 169 | if ( fullscreen ) { |
167 | QRect desk = oApp->desktop()->geometry(); | 170 | QRect desk = oApp->desktop()->geometry(); |
168 | setGeometry( 0, 0, desk.width(), desk.height() ); | 171 | setGeometry( 0, 0, desk.width(), desk.height() ); |
169 | } | 172 | } |
170 | 173 | ||
171 | connect( pinD, SIGNAL(passwordEntered(const QString&)), | 174 | connect( pinD, SIGNAL(passwordEntered(const QString&)), |
172 | this, SLOT(accept()) ); | 175 | this, SLOT(accept()) ); |
173 | connect( pinD, SIGNAL(skip()), this, SLOT(accept()) ); | 176 | connect( pinD, SIGNAL(skip()), this, SLOT(accept()) ); |
174 | } | 177 | } |
175 | 178 | ||
176 | void resizeEvent( QResizeEvent * ) | 179 | void resizeEvent( QResizeEvent * ) |
177 | { | 180 | { |
178 | pinD->resize( size() ); | 181 | pinD->resize( size() ); |
179 | } | 182 | } |
180 | 183 | ||
181 | void reset() | 184 | void reset() |
182 | { | 185 | { |
183 | pinD->clear(); | 186 | pinD->clear(); |
184 | } | 187 | } |
185 | 188 | ||
186 | /// Slot receiving the Skip or Enter commands, and closing the QDialog | 189 | /// Slot receiving the Skip or Enter commands, and closing the QDialog |
187 | void accept() | 190 | void accept() |
188 | { | 191 | { |
189 | if ( !modl ) | 192 | if ( !modl ) |
190 | oApp->exit_loop(); | 193 | oApp->exit_loop(); |
191 | QDialog::accept(); | 194 | QDialog::accept(); |
192 | } | 195 | } |
193 | 196 | ||
194 | PinDialog *pinD; | 197 | PinDialog *pinD; |
195 | bool modl; | 198 | bool modl; |
196 | }; | 199 | }; |
197 | 200 | ||
198 | /// generate a fairly random salt and return the PIN hashed by crypt() | 201 | /// generate a fairly random salt and return the PIN hashed by crypt() |
199 | QString PinPlugin::encrypt(const QString& pin) | 202 | QString PinPlugin::encrypt(const QString& pin) |
200 | { | 203 | { |
201 | // the salt must begin by "$1$" if we want crypt() to use MD5 | 204 | // the salt must begin by "$1$" if we want crypt() to use MD5 |
202 | char salt[] = "$1$........"; | 205 | char salt[] = "$1$........"; |
203 | const char *const seedchars = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; | 206 | const char *const seedchars = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; |
204 | // initialize the random generator | 207 | // initialize the random generator |
205 | srandom(time(0)); | 208 | srandom(time(0)); |
206 | int i; | 209 | int i; |
207 | for(i = 0; i < 8; i++) | 210 | for(i = 0; i < 8; i++) |
208 | { | 211 | { |
209 | // initialize the salt with random() | 212 | // initialize the salt with random() |
210 | salt[i+3] = seedchars[random() % 64]; | 213 | salt[i+3] = seedchars[random() % 64]; |
211 | } | 214 | } |
212 | return QString::fromLatin1(crypt(pin.latin1(),salt)); | 215 | return QString::fromLatin1(crypt(pin.latin1(),salt)); |
213 | } | 216 | } |
214 | 217 | ||
215 | /// verify a PIN against its crypt() hash | 218 | /// verify a PIN against its crypt() hash |
216 | /** | 219 | /** |
217 | * \return true if the \a pin matches its \a hash | 220 | * \return true if the \a pin matches its \a hash |
218 | */ | 221 | */ |
219 | bool PinPlugin::verify(const QString& pin, const QString& hash) | 222 | bool PinPlugin::verify(const QString& pin, const QString& hash) |
220 | { | 223 | { |
221 | // the hash, which contains the salt (8 chars after "$1$"), can be given as the salt | 224 | // the hash, which contains the salt (8 chars after "$1$"), can be given as the salt |
222 | return hash.compare( QString::fromLatin1(crypt( pin.latin1(), hash.latin1() )) ) == 0 ? true : false; | 225 | return hash.compare( QString::fromLatin1(crypt( pin.latin1(), hash.latin1() )) ) == 0 ? true : false; |
223 | } | 226 | } |
224 | 227 | ||
225 | /// Displays a PinDialog and returns the typed in PIN | 228 | /// Displays a PinDialog and returns the typed in PIN |
226 | /** | 229 | /** |
227 | * The returned value is QString::null if the user cancels the operation, | 230 | * The returned value is QString::null if the user cancels the operation, |
228 | * or the empty string if the user enters no password (but confirms the | 231 | * or the empty string if the user enters no password (but confirms the |
229 | * dialog). | 232 | * dialog). |
230 | */ | 233 | */ |
231 | QString PinPlugin::getPIN( const QString& prompt ) | 234 | QString PinPlugin::getPIN( const QString& prompt ) |
232 | { | 235 | { |
233 | PinDlg pd(0,0,TRUE); | 236 | PinDlg pd(0,0,TRUE); |
234 | pd.pinD->setPrompt( prompt ); | 237 | pd.pinD->setPrompt( prompt ); |
235 | 238 | ||
236 | pd.showMaximized(); | 239 | pd.showMaximized(); |
237 | int r = pd.exec(); | 240 | int r = pd.exec(); |
238 | 241 | ||
239 | if ( r == QDialog::Accepted ) { | 242 | if ( r == QDialog::Accepted ) { |
240 | if (pd.pinD->text.isEmpty()) | 243 | if (pd.pinD->text.isEmpty()) |
241 | return ""; | 244 | return ""; |
242 | else | 245 | else |
243 | return pd.pinD->text; | 246 | return pd.pinD->text; |
244 | } | 247 | } |
245 | else | 248 | else |
246 | return QString::null; | 249 | return QString::null; |
247 | } | 250 | } |
248 | 251 | ||
249 | /// Displays the PIN dialog and returns a hash of the typed in PIN | 252 | /// Displays the PIN dialog and returns a hash of the typed in PIN |
250 | /** | 253 | /** |
251 | * \return the hashed ( =one-way encrypted) PIN typed in by the user | 254 | * \return the hashed ( =one-way encrypted) PIN typed in by the user |
252 | * \param prompt the prompt to display in the PinDialog | 255 | * \param prompt the prompt to display in the PinDialog |
253 | */ | 256 | */ |
254 | QString PinPlugin::getCryptedPIN( const QString& prompt ) | 257 | QString PinPlugin::getCryptedPIN( const QString& prompt ) |
255 | { | 258 | { |
256 | return encrypt(getPIN(prompt)); | 259 | return encrypt(getPIN(prompt)); |
257 | } | 260 | } |
258 | 261 | ||
259 | /// Displays the PIN dialog, asks 2 times for a new PIN, saves it if entered two times | 262 | /// Displays the PIN dialog, asks 2 times for a new PIN, saves it if entered two times |
260 | /** | 263 | /** |
261 | * writes nothing if we enter nothing the first time | 264 | * writes nothing if we enter nothing the first time |
262 | */ | 265 | */ |
263 | void PinPlugin::changePIN() | 266 | void PinPlugin::changePIN() |
264 | { | 267 | { |
265 | QString new1, new2; | 268 | QString new1, new2; |
266 | do { | 269 | do { |
267 | new1 = getPIN(QObject::tr("Enter new PIN")); | 270 | new1 = getPIN(QObject::tr("Enter new PIN")); |
268 | if ( new1.isNull() ) | 271 | if ( new1.isNull() ) |
269 | return; | 272 | return; |
270 | new2 = getPIN(QObject::tr("Re-enter new PIN")); | 273 | new2 = getPIN(QObject::tr("Re-enter new PIN")); |
271 | } while (new1 != new2); | 274 | } while (new1 != new2); |
272 | 275 | ||
273 | odebug << "writing new PIN hash in Security.conf" << oendl; | 276 | odebug << "writing new PIN hash in Security.conf" << oendl; |
274 | Config cfg("Security"); | 277 | Config cfg("Security"); |
275 | cfg.setGroup("PinPlugin"); | 278 | cfg.setGroup("PinPlugin"); |
276 | cfg.writeEntry("hashedPIN", encrypt(new1)); | 279 | cfg.writeEntry("hashedPIN", encrypt(new1)); |
277 | } | 280 | } |
278 | 281 | ||
279 | /// Removes the PIN hashed value in the config file | 282 | /// Removes the PIN hashed value in the config file |
280 | void PinPlugin::clearPIN() | 283 | void PinPlugin::clearPIN() |
281 | { | 284 | { |
282 | Config cfg("Security"); | 285 | Config cfg("Security"); |
283 | cfg.setGroup("PinPlugin"); | 286 | cfg.setGroup("PinPlugin"); |
284 | cfg.removeEntry("hashedPIN"); | 287 | cfg.removeEntry("hashedPIN"); |
285 | } | 288 | } |
286 | 289 | ||
287 | /// Prompt, fullscreen, for the user's PIN and compare it to the stored one. | 290 | /// Prompt, fullscreen, for the user's PIN and compare it to the stored one. |
288 | /** | 291 | /** |
289 | * \return the result code, as a MultiauthPluginObject::authResult object | 292 | * \return the result code, as a MultiauthPluginObject::authResult object |
290 | */ | 293 | */ |
291 | int PinPlugin::authenticate() | 294 | int PinPlugin::authenticate() |
292 | { | 295 | { |
293 | // reset skip (if we ran Pin two times in a row, skipping the first time, it must be put to 0 again) | 296 | // reset skip (if we ran Pin two times in a row, skipping the first time, it must be put to 0 again) |
294 | isSkip = FALSE; | 297 | isSkip = FALSE; |
295 | // fetch value in config | 298 | // fetch value in config |
296 | Config cfg("Security"); | 299 | Config cfg("Security"); |
297 | cfg.setGroup("PinPlugin"); | 300 | cfg.setGroup("PinPlugin"); |
298 | QString hashedPin = cfg.readEntry("hashedPIN"); | 301 | QString hashedPin = cfg.readEntry("hashedPIN"); |
299 | if (!hashedPin.isEmpty()) | 302 | if (!hashedPin.isEmpty()) |
300 | { | 303 | { |
301 | // prompt for the PIN in a fullscreen modal dialog | 304 | // prompt for the PIN in a fullscreen modal dialog |
302 | PinDlg pd(0,0,TRUE,TRUE); | 305 | PinDlg pd(0,0,TRUE,TRUE); |
303 | pd.reset(); | 306 | pd.reset(); |
304 | pd.exec(); | 307 | pd.exec(); |
305 | 308 | ||
306 | // analyse the result | 309 | // analyse the result |
307 | if (isSkip == TRUE) | 310 | if (isSkip == TRUE) |
308 | return MultiauthPluginObject::Skip; | 311 | return MultiauthPluginObject::Skip; |
309 | else if (verify(pd.pinD->text, hashedPin)) | 312 | else if (verify(pd.pinD->text, hashedPin)) |
310 | return MultiauthPluginObject::Success; | 313 | return MultiauthPluginObject::Success; |
311 | else | 314 | else |
312 | return MultiauthPluginObject::Failure; | 315 | return MultiauthPluginObject::Failure; |
313 | } | 316 | } |
314 | owarn << "No PIN has been defined! We consider it as a successful authentication though." << oendl; | 317 | owarn << "No PIN has been defined! We consider it as a successful authentication though." << oendl; |
315 | return MultiauthPluginObject::Success; | 318 | return MultiauthPluginObject::Success; |
316 | } | 319 | } |
317 | 320 | ||
318 | /// Simply returns the plugin name (PIN plugin) | 321 | /// Simply returns the plugin name (PIN plugin) |
319 | QString PinPlugin::pluginName() const { | 322 | QString PinPlugin::pluginName() const { |
320 | return "PIN Plugin"; | 323 | return "PIN Plugin"; |
321 | } | 324 | } |
322 | 325 | ||
323 | QString PinPlugin::pixmapNameWidget() const { | 326 | QString PinPlugin::pixmapNameWidget() const { |
324 | return "security/pinplugin"; | 327 | return "security/pinplugin"; |
325 | } | 328 | } |
326 | 329 | ||
327 | QString PinPlugin::pixmapNameConfig() const { | 330 | QString PinPlugin::pixmapNameConfig() const { |
328 | return "security/pinplugin"; | 331 | return "security/pinplugin"; |
329 | } | 332 | } |
330 | 333 | ||
331 | /// returns a PinConfigWidget | 334 | /// returns a PinConfigWidget |
332 | MultiauthConfigWidget * PinPlugin::configWidget(QWidget * parent) { | 335 | MultiauthConfigWidget * PinPlugin::configWidget(QWidget * parent) { |
333 | PinConfigWidget * pinw = new PinConfigWidget(parent, "PIN configuration widget"); | 336 | PinConfigWidget * pinw = new PinConfigWidget(parent, "PIN configuration widget"); |
334 | 337 | ||
335 | connect(pinw->changePIN, SIGNAL( clicked() ), this, SLOT( changePIN() )); | 338 | connect(pinw->changePIN, SIGNAL( clicked() ), this, SLOT( changePIN() )); |
336 | connect(pinw->clearPIN, SIGNAL( clicked() ), this, SLOT( clearPIN() )); | 339 | connect(pinw->clearPIN, SIGNAL( clicked() ), this, SLOT( clearPIN() )); |
337 | 340 | ||
338 | return pinw; | 341 | return pinw; |
339 | } | 342 | } |
340 | 343 | ||
341 | #include "pin.moc" | 344 | #include "pin.moc" |
342 | 345 | ||
diff --git a/noncore/securityplugins/pin/pin.h b/noncore/securityplugins/pin/pin.h index 6cd328a..1832210 100644 --- a/noncore/securityplugins/pin/pin.h +++ b/noncore/securityplugins/pin/pin.h | |||
@@ -1,68 +1,68 @@ | |||
1 | /** | 1 | /** |
2 | * \file pin.h | 2 | * \file pin.h |
3 | * \brief Standard Opie multiauth plugin definition | 3 | * \brief Standard Opie multiauth plugin definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef PIN_H | 34 | #ifndef PIN_H |
35 | #define PIN_H | 35 | #define PIN_H |
36 | 36 | ||
37 | #include <qobject.h> | 37 | #include <qobject.h> |
38 | #include <qstring.h> | 38 | #include <qstring.h> |
39 | #include <opie2/multiauthplugininterface.h> | 39 | #include <opie2/multiauthplugininterface.h> |
40 | #include "pinConfigWidget.h" | 40 | #include "pinConfigWidget.h" |
41 | 41 | ||
42 | /// Multi-authentication plugin, implementing a PIN verification. | 42 | /// Multi-authentication plugin, implementing a PIN verification. |
43 | /** | 43 | /** |
44 | * The plugin itself, implementing the main authenticate() function. | 44 | * The plugin itself, implementing the main authenticate() function. |
45 | */ | 45 | */ |
46 | class PinPlugin : public QObject, public MultiauthPluginObject { | 46 | class PinPlugin : public QObject, public Opie::Security::MultiauthPluginObject { |
47 | 47 | ||
48 | Q_OBJECT | 48 | Q_OBJECT |
49 | 49 | ||
50 | public: | 50 | public: |
51 | int authenticate(); | 51 | int authenticate(); |
52 | MultiauthConfigWidget * configWidget(QWidget * parent); | 52 | Opie::Security::MultiauthConfigWidget * configWidget(QWidget * parent); |
53 | QString pixmapNameConfig() const; | 53 | QString pixmapNameConfig() const; |
54 | QString pixmapNameWidget() const; | 54 | QString pixmapNameWidget() const; |
55 | QString pluginName() const; | 55 | QString pluginName() const; |
56 | 56 | ||
57 | private slots: | 57 | private slots: |
58 | QString getPIN( const QString& prompt ); | 58 | QString getPIN( const QString& prompt ); |
59 | QString getCryptedPIN( const QString& prompt ); | 59 | QString getCryptedPIN( const QString& prompt ); |
60 | void changePIN(); | 60 | void changePIN(); |
61 | void clearPIN(); | 61 | void clearPIN(); |
62 | 62 | ||
63 | private: | 63 | private: |
64 | QString encrypt(const QString& pin); | 64 | QString encrypt(const QString& pin); |
65 | bool verify(const QString& pin, const QString& hash); | 65 | bool verify(const QString& pin, const QString& hash); |
66 | }; | 66 | }; |
67 | 67 | ||
68 | #endif // PIN_H | 68 | #endif // PIN_H |
diff --git a/noncore/securityplugins/pin/pinConfigWidget.cpp b/noncore/securityplugins/pin/pinConfigWidget.cpp index 53e1a20..b34db8b 100644 --- a/noncore/securityplugins/pin/pinConfigWidget.cpp +++ b/noncore/securityplugins/pin/pinConfigWidget.cpp | |||
@@ -1,39 +1,41 @@ | |||
1 | #include <qwidget.h> | 1 | #include <qwidget.h> |
2 | #include <qlayout.h> | 2 | #include <qlayout.h> |
3 | #include <qlabel.h> | 3 | #include <qlabel.h> |
4 | #include <qgroupbox.h> | 4 | #include <qgroupbox.h> |
5 | 5 | ||
6 | #include "pinConfigWidget.h" | 6 | #include "pinConfigWidget.h" |
7 | 7 | ||
8 | using Opie::Security::MultiauthConfigWidget; | ||
9 | |||
8 | PinConfigWidget::PinConfigWidget(QWidget* parent = 0, const char* name = "PIN configuration widget") | 10 | PinConfigWidget::PinConfigWidget(QWidget* parent = 0, const char* name = "PIN configuration widget") |
9 | : MultiauthConfigWidget(parent, name) | 11 | : MultiauthConfigWidget(parent, name) |
10 | { | 12 | { |
11 | QVBoxLayout * baseLayout = new QVBoxLayout( this); | 13 | QVBoxLayout * baseLayout = new QVBoxLayout( this); |
12 | baseLayout->setSpacing(11); | 14 | baseLayout->setSpacing(11); |
13 | baseLayout->setMargin(11); | 15 | baseLayout->setMargin(11); |
14 | baseLayout->setAlignment( Qt::AlignTop ); | 16 | baseLayout->setAlignment( Qt::AlignTop ); |
15 | 17 | ||
16 | QGroupBox * configBox = new QGroupBox(0, Qt::Vertical, tr("Configure your PIN here"), this); | 18 | QGroupBox * configBox = new QGroupBox(0, Qt::Vertical, tr("Configure your PIN here"), this); |
17 | baseLayout->addWidget(configBox); | 19 | baseLayout->addWidget(configBox); |
18 | QVBoxLayout *boxLayout = new QVBoxLayout( configBox->layout() ); | 20 | QVBoxLayout *boxLayout = new QVBoxLayout( configBox->layout() ); |
19 | 21 | ||
20 | QLabel * description = new QLabel("<p>" + tr("PIN protection provides a minimal level of protection from casual access to this device.") + "</p>", configBox); | 22 | QLabel * description = new QLabel("<p>" + tr("PIN protection provides a minimal level of protection from casual access to this device.") + "</p>", configBox); |
21 | boxLayout->addWidget(description); | 23 | boxLayout->addWidget(description); |
22 | 24 | ||
23 | QHBoxLayout * buttonLayout = new QHBoxLayout(); | 25 | QHBoxLayout * buttonLayout = new QHBoxLayout(); |
24 | buttonLayout->setSpacing(6); | 26 | buttonLayout->setSpacing(6); |
25 | changePIN = new QPushButton( tr("Change PIN"), configBox, "changePIN" ); | 27 | changePIN = new QPushButton( tr("Change PIN"), configBox, "changePIN" ); |
26 | clearPIN = new QPushButton( tr("Clear PIN"), configBox, "clearPIN" ); | 28 | clearPIN = new QPushButton( tr("Clear PIN"), configBox, "clearPIN" ); |
27 | buttonLayout->addWidget(changePIN); | 29 | buttonLayout->addWidget(changePIN); |
28 | buttonLayout->addWidget(clearPIN); | 30 | buttonLayout->addWidget(clearPIN); |
29 | boxLayout->addLayout(buttonLayout); | 31 | boxLayout->addLayout(buttonLayout); |
30 | 32 | ||
31 | } | 33 | } |
32 | 34 | ||
33 | /// nothing to do | 35 | /// nothing to do |
34 | PinConfigWidget::~PinConfigWidget() | 36 | PinConfigWidget::~PinConfigWidget() |
35 | {} | 37 | {} |
36 | 38 | ||
37 | /// does nothing since the config file update is already done in changePIN or clearPIN | 39 | /// does nothing since the config file update is already done in changePIN or clearPIN |
38 | void PinConfigWidget::writeConfig() | 40 | void PinConfigWidget::writeConfig() |
39 | {} | 41 | {} |
diff --git a/noncore/securityplugins/pin/pinConfigWidget.h b/noncore/securityplugins/pin/pinConfigWidget.h index 3242ad0..6d5edff 100644 --- a/noncore/securityplugins/pin/pinConfigWidget.h +++ b/noncore/securityplugins/pin/pinConfigWidget.h | |||
@@ -1,51 +1,51 @@ | |||
1 | /** | 1 | /** |
2 | * \file pinConfigWidget.h | 2 | * \file pinConfigWidget.h |
3 | * \brief PIN plugin configuration widget | 3 | * \brief PIN plugin configuration widget |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef PINCONFIGWIDGET_H | 34 | #ifndef PINCONFIGWIDGET_H |
35 | #define PINCONFIGWIDGET_H | 35 | #define PINCONFIGWIDGET_H |
36 | #include <qpushbutton.h> | 36 | #include <qpushbutton.h> |
37 | 37 | ||
38 | #include <opie2/multiauthconfigwidget.h> | 38 | #include <opie2/multiauthconfigwidget.h> |
39 | 39 | ||
40 | class PinConfigWidget : public MultiauthConfigWidget { | 40 | class PinConfigWidget : public Opie::Security::MultiauthConfigWidget { |
41 | public: | 41 | public: |
42 | PinConfigWidget(QWidget* parent, const char* name); | 42 | PinConfigWidget(QWidget* parent, const char* name); |
43 | virtual ~PinConfigWidget(); | 43 | virtual ~PinConfigWidget(); |
44 | virtual void writeConfig(); | 44 | virtual void writeConfig(); |
45 | ///\todo to protect? | 45 | ///\todo to protect? |
46 | QPushButton *changePIN; | 46 | QPushButton *changePIN; |
47 | QPushButton *clearPIN; | 47 | QPushButton *clearPIN; |
48 | 48 | ||
49 | }; | 49 | }; |
50 | 50 | ||
51 | #endif // PINCONFIGWIDGET_H | 51 | #endif // PINCONFIGWIDGET_H |
diff --git a/noncore/securityplugins/pin/pinpluginimpl.cpp b/noncore/securityplugins/pin/pinpluginimpl.cpp index 1c32f81..6cd2467 100644 --- a/noncore/securityplugins/pin/pinpluginimpl.cpp +++ b/noncore/securityplugins/pin/pinpluginimpl.cpp | |||
@@ -1,28 +1,31 @@ | |||
1 | #include "pinpluginimpl.h" | 1 | #include "pinpluginimpl.h" |
2 | 2 | ||
3 | using Opie::Security::MultiauthPluginObject; | ||
4 | using Opie::Security::MultiauthPluginInterface; | ||
5 | |||
3 | PinPluginImpl::PinPluginImpl() { | 6 | PinPluginImpl::PinPluginImpl() { |
4 | pinPlugin = new PinPlugin(); | 7 | pinPlugin = new PinPlugin(); |
5 | } | 8 | } |
6 | 9 | ||
7 | PinPluginImpl::~PinPluginImpl() { | 10 | PinPluginImpl::~PinPluginImpl() { |
8 | delete pinPlugin; | 11 | delete pinPlugin; |
9 | } | 12 | } |
10 | 13 | ||
11 | MultiauthPluginObject* PinPluginImpl::plugin() { | 14 | MultiauthPluginObject* PinPluginImpl::plugin() { |
12 | return pinPlugin; | 15 | return pinPlugin; |
13 | } | 16 | } |
14 | 17 | ||
15 | Q_EXPORT_INTERFACE() { | 18 | Q_EXPORT_INTERFACE() { |
16 | Q_CREATE_INSTANCE( PinPluginImpl ) | 19 | Q_CREATE_INSTANCE( PinPluginImpl ) |
17 | } | 20 | } |
18 | 21 | ||
19 | QRESULT PinPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | 22 | QRESULT PinPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { |
20 | *iface = 0; | 23 | *iface = 0; |
21 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { | 24 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { |
22 | *iface = this, (*iface)->addRef(); | 25 | *iface = this, (*iface)->addRef(); |
23 | } else { | 26 | } else { |
24 | return QE_NOINTERFACE; | 27 | return QE_NOINTERFACE; |
25 | } | 28 | } |
26 | return QS_OK; | 29 | return QS_OK; |
27 | 30 | ||
28 | } | 31 | } |
diff --git a/noncore/securityplugins/pin/pinpluginimpl.h b/noncore/securityplugins/pin/pinpluginimpl.h index e604b64..cbb9ef0 100644 --- a/noncore/securityplugins/pin/pinpluginimpl.h +++ b/noncore/securityplugins/pin/pinpluginimpl.h | |||
@@ -1,58 +1,57 @@ | |||
1 | /** | 1 | /** |
2 | * \file pinpluginimpl.h | 2 | * \file pinpluginimpl.h |
3 | * \brief Standard Opie multiauth plugin definition | 3 | * \brief Standard Opie multiauth plugin definition |
4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) | 4 | * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) |
5 | */ | 5 | */ |
6 | /* | 6 | /* |
7 | =. This file is part of the Opie Project | 7 | =. This file is part of the Opie Project |
8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 8 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This library is free software; you can | 10 | _;:, .> :=|. This library is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This library is distributed in the hope that | 17 | .i_,=:_. -<s. This library is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef PIN_PLUGIN_IMPL_H | 34 | #ifndef PIN_PLUGIN_IMPL_H |
35 | #define PIN_PLUGIN_IMPL_H | 35 | #define PIN_PLUGIN_IMPL_H |
36 | 36 | ||
37 | #include "pin.h" | 37 | #include "pin.h" |
38 | 38 | ||
39 | /// Standard multiauth plugin class | 39 | /// Standard multiauth plugin class |
40 | class PinPluginImpl : public MultiauthPluginInterface{ | 40 | class PinPluginImpl : public Opie::Security::MultiauthPluginInterface{ |
41 | 41 | ||
42 | public: | 42 | public: |
43 | PinPluginImpl(); | 43 | PinPluginImpl(); |
44 | virtual ~PinPluginImpl(); | 44 | virtual ~PinPluginImpl(); |
45 | 45 | ||
46 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | 46 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); |
47 | // defines standard addRef() and release() functions | 47 | // defines standard addRef() and release() functions |
48 | Q_REFCOUNT; | 48 | Q_REFCOUNT; |
49 | 49 | ||
50 | virtual MultiauthPluginObject *plugin(); | 50 | virtual Opie::Security::MultiauthPluginObject *plugin(); |
51 | 51 | ||
52 | private: | 52 | private: |
53 | /// the plugin itself | 53 | /// the plugin itself |
54 | PinPlugin *pinPlugin; | 54 | PinPlugin *pinPlugin; |
55 | ulong ref; | ||
56 | }; | 55 | }; |
57 | 56 | ||
58 | #endif | 57 | #endif |