source: wkhtmltox/trunk/fuentes/src/lib/loadsettings.cc @ 51

Last change on this file since 51 was 51, checked in by mabarracus, 4 years ago

wip

File size: 3.8 KB
Line 
1// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
2// vi:set ts=4 sts=4 sw=4 noet :
3//
4// Copyright 2010, 2012 wkhtmltopdf authors
5//
6// This file is part of wkhtmltopdf.
7//
8// wkhtmltopdf is free software: you can redistribute it and/or modify
9// it under the terms of the GNU Lesser General Public License as published by
10// the Free Software Foundation, either version 3 of the License, or
11// (at your option) any later version.
12//
13// wkhtmltopdf is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU Lesser General Public License
19// along with wkhtmltopdf.  If not, see <http://www.gnu.org/licenses/>.
20
21
22#ifdef _MSC_VER
23#define strcasecmp _stricmp
24#endif
25
26#include "loadsettings.hh"
27#include <QMap>
28#include <stdexcept>
29namespace wkhtmltopdf {
30namespace settings {
31
32QList<QString> LoadPage::mediaFilesExtensions = QList<QString> ()
33                << "css"
34                << "js"
35                << "png"
36                << "jpg"
37                << "jpeg"
38                << "gif";
39
40
41LoadPage::LoadErrorHandling strToLoadErrorHandling(const char * s, bool * ok) {
42        if (ok) *ok = true;
43        if (!strcasecmp(s, "abort")) return LoadPage::abort;
44        if (!strcasecmp(s, "skip")) return LoadPage::skip;
45        if (!strcasecmp(s, "ignore")) return LoadPage::ignore;
46        *ok = false;
47        return LoadPage::abort;
48}
49
50QString loadErrorHandlingToStr(LoadPage::LoadErrorHandling leh) {
51        switch (leh) {
52        case LoadPage::abort: return "abort";
53        case LoadPage::skip: return "skip";
54        case LoadPage::ignore: return "ignore";
55        }
56        throw std::logic_error("Internal error in loadErrorHandlingToStr");
57}
58
59/*!
60  Read proxy settings from a string, the grammar is described in the manual
61  \param proxy the proxy string to parse
62  \param ok If supplied indicates whether the proxy was valid
63*/
64Proxy strToProxy(const char * proxy, bool * ok) {
65        Proxy p;
66        if (ok) *ok=true;
67        //Allow users to use no proxy, even if one is specified in the env
68        if (!strcmp(proxy,"none")) {
69                p.host = "";
70                return p;
71        }
72
73        p.type = QNetworkProxy::HttpProxy;
74        //Read proxy type bit "http://" or "socks5://"
75        if (!strncmp(proxy,"http://",7)) {
76                proxy += 7;
77        } else if (!strncmp(proxy,"socks5://",9)) {
78                p.type = QNetworkProxy::Socks5Proxy;
79                proxy += 9;
80        }
81
82        //Read username and password
83        char * val = (char *) strrchr(proxy,'@');
84        p.user = p.password = "";
85        if (val != NULL) {
86                p.user = QString(proxy).left(val-proxy);
87                proxy = val+1;
88
89                int idx = p.user.indexOf(':');
90                if (idx != -1) {
91                        p.password = p.user.mid(idx+1);
92                        p.user = p.user.left(idx);
93                }
94        }
95
96        //Read hostname and port
97        val = (char *) strchr(proxy,':');
98        p.port = 1080; //Default proxy port
99        if (val == NULL) p.host = proxy;
100        else {
101                p.port = QString(val+1).toInt(ok);
102                if (p.port < 0 || p.port > 65535) {
103                        p.port = 1080;
104                        *ok = false;
105                }
106                p.host = QString(proxy).left(val-proxy);
107        }
108        if (ok && p.host.size() == 0) *ok = false;
109        return p;
110}
111
112QString proxyToStr(const Proxy & p) {
113        QString res="";
114        if (p.type == QNetworkProxy::HttpProxy)
115                res += "http://";
116        else if (p.type == QNetworkProxy::Socks5Proxy)
117                res += "socks5://";
118
119        if (!p.user.isEmpty()) {
120                res += "@" + p.user;
121                if (!p.password.isEmpty()) res += ":" + p.password;
122        }
123        res += p.host;
124        if (!p.host.isEmpty()) res += ":" + p.port;
125        return res;
126}
127
128Proxy::Proxy():
129    type(QNetworkProxy::NoProxy),
130        port(-1),
131        host(),
132        user(),
133        password() {}
134
135LoadGlobal::LoadGlobal():
136        cookieJar("") {}
137
138LoadPage::LoadPage():
139        jsdelay(200),
140        windowStatus(""),
141        zoomFactor(1.0),
142        repeatCustomHeaders(false),
143        blockLocalFileAccess(false),
144        stopSlowScripts(true),
145        debugJavascript(false),
146        loadErrorHandling(abort),
147        mediaLoadErrorHandling(ignore),
148        cacheDir("") {};
149
150}
151}
Note: See TracBrowser for help on using the repository browser.