// public: Phantom::Phantom(QObject *parent) : REPLCompletable(parent) , m_terminated(false) , m_returnValue(0) , m_filesystem(0) , m_system(0) { // second argument: script name QStringList args = QApplication::arguments(); // Skip the first argument, i.e. the application executable (phantomjs). args.removeFirst(); m_config.init(&args); if (m_config.helpFlag()) { m_terminated = true; Utils::showUsage(); return; } if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } m_page = new WebPage(this, &m_config, QUrl::fromLocalFile(m_config.scriptFile())); m_pages.append(m_page); if (m_config.proxyHost().isEmpty()) { QNetworkProxyFactory::setUseSystemConfiguration(true); } else { QString proxyType = m_config.proxyType(); QNetworkProxy::ProxyType networkProxyType = QNetworkProxy::HttpProxy; if (proxyType == "socks5") { networkProxyType = QNetworkProxy::Socks5Proxy; } if(!m_config.proxyAuthUser().isEmpty() && !m_config.proxyAuthPass().isEmpty()) { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort(), m_config.proxyAuthUser(), m_config.proxyAuthPass()); QNetworkProxy::setApplicationProxy(proxy); } else { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort()); QNetworkProxy::setApplicationProxy(proxy); } } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString)), SLOT(printConsoleMessage(QString))); connect(m_page, SIGNAL(initialized()), SLOT(onInitialized())); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_defaultPageSettings[PAGE_SETTINGS_WEB_SECURITY_ENABLED] = QVariant::fromValue(m_config.webSecurityEnabled()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); }
void Phantom::init() { if (m_config.helpFlag()) { Terminal::instance()->cout(QString("%1").arg(m_config.helpText())); Terminal::instance()->cout("Any of the options that accept boolean values ('true'/'false') can also accept 'yes'/'no'."); Terminal::instance()->cout(""); Terminal::instance()->cout("Without any argument, PhantomJS will launch in interactive mode (REPL)."); Terminal::instance()->cout(""); Terminal::instance()->cout("Documentation can be found at the web site, http://phantomjs.org."); Terminal::instance()->cout(""); m_terminated = true; return; } if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } // Initialize the CookieJar m_defaultCookieJar = new CookieJar(m_config.cookiesFile()); QWebSettings::setOfflineWebApplicationCachePath(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); if (m_config.offlineStoragePath().isEmpty()) { QWebSettings::setOfflineStoragePath(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); } else { QWebSettings::setOfflineStoragePath(m_config.offlineStoragePath()); } if (m_config.offlineStorageDefaultQuota() > 0) { QWebSettings::setOfflineStorageDefaultQuota(m_config.offlineStorageDefaultQuota()); } m_page = new WebPage(this, QUrl::fromLocalFile(m_config.scriptFile())); m_page->setCookieJar(m_defaultCookieJar); m_pages.append(m_page); // Set up proxy if required QString proxyType = m_config.proxyType(); if (proxyType != "none") { setProxy(m_config.proxyHost(), m_config.proxyPort(), proxyType, m_config.proxyAuthUser(), m_config.proxyAuthPass()); } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString)), SLOT(printConsoleMessage(QString))); connect(m_page, SIGNAL(initialized()), SLOT(onInitialized())); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_defaultPageSettings[PAGE_SETTINGS_WEB_SECURITY_ENABLED] = QVariant::fromValue(m_config.webSecurityEnabled()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_OPEN_WINDOWS] = QVariant::fromValue(m_config.javascriptCanOpenWindows()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_CLOSE_WINDOWS] = QVariant::fromValue(m_config.javascriptCanCloseWindows()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); }
void Phantom::init() { if (m_config.helpFlag()) { Terminal::instance()->cout(QString("%1").arg(m_config.helpText())); Terminal::instance()->cout("Without any argument, PhantomJS will launch in interactive mode (REPL)."); Terminal::instance()->cout(""); Terminal::instance()->cout("Documentation can be found at the web site, http://phantomjs.org."); Terminal::instance()->cout(""); m_terminated = true; return; } if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } m_page = new WebPage(this, QUrl::fromLocalFile(m_config.scriptFile())); m_pages.append(m_page); QString proxyType = m_config.proxyType(); if (proxyType != "none") { if (m_config.proxyHost().isEmpty()) { QNetworkProxyFactory::setUseSystemConfiguration(true); } else { QNetworkProxy::ProxyType networkProxyType = QNetworkProxy::HttpProxy; if (proxyType == "socks5") { networkProxyType = QNetworkProxy::Socks5Proxy; } if(!m_config.proxyAuthUser().isEmpty() && !m_config.proxyAuthPass().isEmpty()) { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort(), m_config.proxyAuthUser(), m_config.proxyAuthPass()); QNetworkProxy::setApplicationProxy(proxy); } else { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort()); QNetworkProxy::setApplicationProxy(proxy); } } } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString)), SLOT(printConsoleMessage(QString))); connect(m_page, SIGNAL(initialized()), SLOT(onInitialized())); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_defaultPageSettings[PAGE_SETTINGS_WEB_SECURITY_ENABLED] = QVariant::fromValue(m_config.webSecurityEnabled()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_OPEN_WINDOWS] = QVariant::fromValue(m_config.javascriptCanOpenWindows()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_CLOSE_WINDOWS] = QVariant::fromValue(m_config.javascriptCanCloseWindows()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); }