~ubuntu-branches/debian/stretch/psi-plus/stretch

« back to all changes in this revision

Viewing changes to src/plugins/generic/captchaformsplugin/captchaformsplugin.cpp

  • Committer: Package Import Robot
  • Author(s): Boris Pek
  • Date: 2013-10-23 02:42:20 UTC
  • mfrom: (1.4.7)
  • Revision ID: package-import@ubuntu.com-20131023024220-bk2hyoenqkwfhpgw
Tags: 0.16.242-1
* New upstream release:
  fixed the problem of initialization of private conversation when both
  sides use libotr 4.0.x. (Closes: #724880)
* Update debian/watch: sources were moved.
* Delete psi-plus-content-downloader package and update all related files.
  This plugin is in psi-plus-plugins package now.
* Update debian/control:
  - remove all currently unneeded Replaces and Breaks fields
  - add build dependency on libidn11-dev
* Update debian/rules: simplify get-orig-source section.
* Update debian/copyright:
  - update Source field due to changes in sources location
  - remove copyright holders whose code was deleted from source tree
    (bundled libidn library was removed)

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
#include "applicationinfoaccessor.h"
40
40
 
41
41
 
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";
51
51
 
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
54
54
{
55
 
        Q_OBJECT
 
55
        Q_OBJECT
 
56
#ifdef HAVE_QT5
 
57
        Q_PLUGIN_METADATA(IID "com.psi-plus.CaptchaFormsPlugin")
 
58
#endif
56
59
        Q_INTERFACES(PsiPlugin OptionAccessor PluginInfoProvider EventCreator StanzaFilter StanzaSender AccountInfoAccessor ApplicationInfoAccessor)
57
 
public:
 
60
        public:
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;
76
80
 
77
81
private:
78
 
        OptionAccessingHost *psiOptions;
 
82
        OptionAccessingHost *psiOptions;
79
83
        EventCreatingHost *psiEvent;
80
84
        StanzaSendingHost *stanzaSender;
81
85
        AccountInfoAccessingHost* accInfo;
99
103
        void loaderError(const QString& id);
100
104
};
101
105
 
 
106
#ifndef HAVE_QT5
102
107
Q_EXPORT_PLUGIN(CaptchaFormsPlugin);
103
 
 
 
108
#endif
104
109
 
105
110
CaptchaFormsPlugin::CaptchaFormsPlugin()
106
111
        : psiOptions(0)
125
130
}
126
131
 
127
132
QString CaptchaFormsPlugin::version() const {
128
 
        return constVersion;
 
133
        return constVersion;
129
134
}
130
135
 
131
136
bool CaptchaFormsPlugin::enable()
132
137
{
133
 
    if(psiOptions) {
134
 
        enabled = true;
135
 
        id = 111;
136
 
        useProxy = psiOptions->getPluginOption(constUseProxy, QVariant(useProxy)).toBool();
137
 
        autopopup = psiOptions->getPluginOption(constAutopopup, QVariant(autopopup)).toBool();
 
138
        if(psiOptions) {
 
139
                enabled = true;
 
140
                id = 111;
 
141
                useProxy = psiOptions->getPluginOption(constUseProxy, QVariant(useProxy)).toBool();
 
142
                autopopup = psiOptions->getPluginOption(constAutopopup, QVariant(autopopup)).toBool();
138
143
 
139
 
        if(!useProxy)
140
 
                appInfo->getProxyFor(name()); //register proxy
141
 
    }
142
 
    return enabled;
 
144
                if(!useProxy)
 
145
                        appInfo->getProxyFor(name()); //register proxy
 
146
        }
 
147
        return enabled;
143
148
}
144
149
 
145
150
bool CaptchaFormsPlugin::disable()
146
151
{
147
152
        enabled = false;
148
 
        return true;
 
153
        return true;
149
154
}
150
155
 
151
156
QWidget* CaptchaFormsPlugin::options()
152
157
{
153
 
        if (!enabled) {
 
158
        if (!enabled) {
154
159
                return 0;
155
160
        }
156
 
        QWidget *options = new QWidget();
 
161
        QWidget *options = new QWidget();
157
162
        ui_.setupUi(options);
158
163
 
159
164
        restoreOptions();
179
184
 
180
185
void CaptchaFormsPlugin::setOptionAccessingHost(OptionAccessingHost *host)
181
186
{
182
 
    psiOptions = host;
 
187
        psiOptions = host;
183
188
}
184
189
 
185
190
void CaptchaFormsPlugin::setEventCreatingHost(EventCreatingHost *host)
216
221
                                eventActivated(dataFields.value("sender"));
217
222
                        else
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)));
220
225
 
221
226
                        return true;
222
227
                }
325
330
 
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);
337
342
 
338
343
        stanzaSender->sendStanza(dataFields.value("account").toInt(), mes);
339
344
 
349
354
        QHash<QString, QString> dataFields = challenges_.at(index);
350
355
 
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);
358
363
 
359
364
        challenges_.removeAt(index);
360
365
}
386
391
        dataFields["to"] = stanza.attribute("to");
387
392
 
388
393
        find = false;
389
 
        QString id = stanza.attribute("id");    
 
394
        QString id = stanza.attribute("id");
390
395
 
391
396
        QDomNode field = formElem.firstChild();
392
397
        while(!field.isNull()) {
446
451
 
447
452
QString CaptchaFormsPlugin::pluginInfo()
448
453
{
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+.");
 
457
}
 
458
 
 
459
QPixmap CaptchaFormsPlugin::icon() const
 
460
{
 
461
        return QPixmap(":/icons/captcha.png");
452
462
}
453
463
 
454
464
#include "captchaformsplugin.moc"
455