39
39
#include "applicationinfoaccessor.h"
42
#define constVersion "0.1.0"
42
#define constVersion "0.1.1"
43
43
#define constProxyHost "host"
44
44
#define constProxyPort "port"
45
45
#define constProxyUser "user"
50
50
static const QStringList methods = QStringList() << "qa" << "ocr" << "picture_q" << "picture_recog";
52
52
class CaptchaFormsPlugin : public QObject, public PsiPlugin, public OptionAccessor, public PluginInfoProvider, public EventCreator,
53
public StanzaFilter, public StanzaSender, public AccountInfoAccessor, public ApplicationInfoAccessor
53
public StanzaFilter, public StanzaSender, public AccountInfoAccessor, public ApplicationInfoAccessor
57
Q_PLUGIN_METADATA(IID "com.psi-plus.CaptchaFormsPlugin")
56
59
Q_INTERFACES(PsiPlugin OptionAccessor PluginInfoProvider EventCreator StanzaFilter StanzaSender AccountInfoAccessor ApplicationInfoAccessor)
58
61
CaptchaFormsPlugin();
59
virtual QString name() const;
60
virtual QString shortName() const;
61
virtual QString version() const;
62
virtual QWidget* options();
63
virtual bool enable();
64
virtual bool disable();
62
virtual QString name() const;
63
virtual QString shortName() const;
64
virtual QString version() const;
65
virtual QWidget* options();
66
virtual bool enable();
67
virtual bool disable();
65
68
virtual void optionChanged(const QString&){};
66
virtual void applyOptions();
67
virtual void restoreOptions();
69
virtual void applyOptions();
70
virtual void restoreOptions();
68
71
virtual void setOptionAccessingHost(OptionAccessingHost* host);
69
72
virtual void setEventCreatingHost(EventCreatingHost* host);
70
73
virtual bool incomingStanza(int account, const QDomElement& xml);
73
76
virtual void setAccountInfoAccessingHost(AccountInfoAccessingHost* host);
74
77
virtual void setApplicationInfoAccessingHost(ApplicationInfoAccessingHost* host);
75
78
virtual QString pluginInfo();
79
virtual QPixmap icon() const;
78
OptionAccessingHost *psiOptions;
82
OptionAccessingHost *psiOptions;
79
83
EventCreatingHost *psiEvent;
80
84
StanzaSendingHost *stanzaSender;
81
85
AccountInfoAccessingHost* accInfo;
127
132
QString CaptchaFormsPlugin::version() const {
131
136
bool CaptchaFormsPlugin::enable()
136
useProxy = psiOptions->getPluginOption(constUseProxy, QVariant(useProxy)).toBool();
137
autopopup = psiOptions->getPluginOption(constAutopopup, QVariant(autopopup)).toBool();
141
useProxy = psiOptions->getPluginOption(constUseProxy, QVariant(useProxy)).toBool();
142
autopopup = psiOptions->getPluginOption(constAutopopup, QVariant(autopopup)).toBool();
140
appInfo->getProxyFor(name()); //register proxy
145
appInfo->getProxyFor(name()); //register proxy
145
150
bool CaptchaFormsPlugin::disable()
151
156
QWidget* CaptchaFormsPlugin::options()
156
QWidget *options = new QWidget();
161
QWidget *options = new QWidget();
157
162
ui_.setupUi(options);
159
164
restoreOptions();
216
221
eventActivated(dataFields.value("sender"));
218
223
psiEvent->createNewEvent(account, dataFields.value("sender"), tr("Captcha Plugin: CAPTCHA from %1")
219
.arg(dataFields.value("sender")), this, SLOT(eventActivated(QString)));
224
.arg(dataFields.value("sender")), this, SLOT(eventActivated(QString)));
326
331
QHash<QString, QString> dataFields = challenges_.at(index);
327
332
QString mes = QString("<iq type=\"set\" from=\"%1\" to=\"%2\" xml:lang=\"en\" id=\"%3\">"
328
"<captcha xmlns=\"urn:xmpp:captcha\"><x xmlns=\"jabber:x:data\" type=\"submit\">"
329
"<field var=\"FORM_TYPE\"><value>urn:xmpp:captcha</value></field>"
330
"<field var=\"from\"><value>%4</value></field>"
331
"<field var=\"challenge\"><value>%5</value></field>"
332
"<field var=\"%6\"><value>%7</value></field>"
333
"</x></captcha></iq>")
334
.arg(stanzaSender->escape(dataFields.value("to")), stanzaSender->escape(dataFields.value("sender")), stanzaSender->escape(dataFields.value("id")))
335
.arg(stanzaSender->escape(dataFields.value("from")), stanzaSender->escape(dataFields.value("challenge")))
336
.arg(stanzaSender->escape(dataFields.value("method")), text);
333
"<captcha xmlns=\"urn:xmpp:captcha\"><x xmlns=\"jabber:x:data\" type=\"submit\">"
334
"<field var=\"FORM_TYPE\"><value>urn:xmpp:captcha</value></field>"
335
"<field var=\"from\"><value>%4</value></field>"
336
"<field var=\"challenge\"><value>%5</value></field>"
337
"<field var=\"%6\"><value>%7</value></field>"
338
"</x></captcha></iq>")
339
.arg(stanzaSender->escape(dataFields.value("to")), stanzaSender->escape(dataFields.value("sender")), stanzaSender->escape(dataFields.value("id")))
340
.arg(stanzaSender->escape(dataFields.value("from")), stanzaSender->escape(dataFields.value("challenge")))
341
.arg(stanzaSender->escape(dataFields.value("method")), text);
338
343
stanzaSender->sendStanza(dataFields.value("account").toInt(), mes);
349
354
QHash<QString, QString> dataFields = challenges_.at(index);
351
356
QString mes = QString("<message type=\"error\" to=\"%1\" xml:lang=\"en\" id=\"%2\">"
352
"<error xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\" type=\"modify\">"
353
"<not-acceptable xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/></error></message>")
354
//.arg(dataFields.value("to"))
355
.arg(stanzaSender->escape(dataFields.value("sender")))
356
.arg(stanzaSender->escape(dataFields.value("challenge")));
357
stanzaSender->sendStanza(dataFields.value("account").toInt(), mes);
357
"<error xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\" type=\"modify\">"
358
"<not-acceptable xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/></error></message>")
359
//.arg(dataFields.value("to"))
360
.arg(stanzaSender->escape(dataFields.value("sender")))
361
.arg(stanzaSender->escape(dataFields.value("challenge")));
362
stanzaSender->sendStanza(dataFields.value("account").toInt(), mes);
359
364
challenges_.removeAt(index);
447
452
QString CaptchaFormsPlugin::pluginInfo()
449
return tr("Author: ") + "Dealer_WeARE\n"
450
+ tr("Email: ") + "wadealer@gmail.com\n\n"
451
+ trUtf8("This plugin is designed to pass of captcha directly from the Psi+.");
454
return tr("Author: ") + "Dealer_WeARE\n"
455
+ tr("Email: ") + "wadealer@gmail.com\n\n"
456
+ trUtf8("This plugin is designed to pass of captcha directly from the Psi+.");
459
QPixmap CaptchaFormsPlugin::icon() const
461
return QPixmap(":/icons/captcha.png");
454
464
#include "captchaformsplugin.moc"