import com.trolltech.qt.core.QIODevice;
import com.trolltech.qt.core.QObject;
-import com.trolltech.qt.network.QNetworkAccessManager;
import com.trolltech.qt.network.QNetworkReply;
import com.trolltech.qt.network.QNetworkRequest;
import cx.fbn.nevernote.utilities.ApplicationLogger;
-public class NNOAuthNetworkAccessManager extends QNetworkAccessManager {
+public class NNOAuthNetworkAccessManager extends TlsNetworkAccessManager {
public Signal1<String> tokenFound;
- private ApplicationLogger logger;
+ private final ApplicationLogger logger;
- public NNOAuthNetworkAccessManager(ApplicationLogger l){
- super();
+ public NNOAuthNetworkAccessManager(ApplicationLogger logger){
+ super(logger);
tokenFound = new Signal1<String>();
- logger = l;
+ this.logger = logger;
}
- public NNOAuthNetworkAccessManager(QObject qObject){
- super(qObject);
+ public NNOAuthNetworkAccessManager(QObject qObject, ApplicationLogger logger){
+ super(qObject, logger);
tokenFound = new Signal1<String>();
+ this.logger = logger;
}
@Override
logger.log(logger.EXTREME,"NNOAuthNetworkAccessManager URL request scheme: "
+request.url().scheme() + " " + request.url().toString());
+
String searchReq = "nnoauth?oauth_token=";
int pos = request.url().toString().indexOf(searchReq);
if (pos>0) {
private final QWebView tempPage;
private final QWebView authPage;
private final QGridLayout grid;
- private NNOAuthNetworkAccessManager manager;
static final String callbackUrl = "index.jsp?action=callbackReturn";
private final ApplicationLogger logger;
permanentCredUrl = "https://"+Global.getServer() + "/oauth?oauth_consumer_key=" +consumerKey + "&oauth_signature=" +
consumerSecret + "%26&oauth_signature_method=PLAINTEXT&oauth_timestamp="+String.valueOf(time)+
"&oauth_nonce="+String.valueOf(millis) +"&oauth_token=";
-
-
+
// Build the window
setWindowTitle(tr("Please Grant NeighborNote Access"));
setWindowIcon(new QIcon(iconPath+"icons/password.png"));
// finished, this QWebView will contain the URL to start the
// authentication process.
QUrl tu = new QUrl(temporaryCredUrl);
+
+ TlsNetworkAccessManager manager = new TlsNetworkAccessManager(logger);
+ tempPage.page().setNetworkAccessManager(manager);
tempPage.load(tu);
}
-
// This method is triggered when the temporary credentials are received from Evernote
public void temporaryCredentialsReceived() {
if (index > 0) {
contents = contents.substring(0,index);
QUrl accessUrl = new QUrl(urlBase+"/OAuth.action?" +contents);
- manager = new NNOAuthNetworkAccessManager(logger);
+ NNOAuthNetworkAccessManager manager = new NNOAuthNetworkAccessManager(logger);
authPage.page().setNetworkAccessManager(manager);
manager.tokenFound.connect(this, "tokenFound(String)");
--- /dev/null
+package cx.fbn.nevernote.oauth;
+
+import com.trolltech.qt.core.QIODevice;
+import com.trolltech.qt.core.QObject;
+import com.trolltech.qt.network.QNetworkAccessManager;
+import com.trolltech.qt.network.QNetworkReply;
+import com.trolltech.qt.network.QNetworkRequest;
+import com.trolltech.qt.network.QSsl.SslProtocol;
+import com.trolltech.qt.network.QSslConfiguration;
+
+import cx.fbn.nevernote.utilities.ApplicationLogger;
+
+public class TlsNetworkAccessManager extends QNetworkAccessManager {
+ private final ApplicationLogger logger;
+
+ public TlsNetworkAccessManager(ApplicationLogger logger) {
+ super();
+ this.logger = logger;
+ }
+
+ public TlsNetworkAccessManager(QObject parent, ApplicationLogger logger) {
+ super(parent);
+ this.logger = logger;
+ }
+
+ @Override
+ protected QNetworkReply createRequest(Operation op, QNetworkRequest request, QIODevice outgoingData) {
+ logger.log(logger.EXTREME, "TlsNetworkAccessManager URL request scheme: " + request.url().scheme() + " " + request.url().toString());
+
+ // Force to use TLSv1
+ QSslConfiguration sslConfig = request.sslConfiguration();
+ sslConfig.setProtocol(SslProtocol.TlsV1);
+ request.setSslConfiguration(sslConfig);
+ QNetworkReply reply = super.createRequest(op, request, outgoingData);
+ reply.sslErrors.connect(reply, "ignoreSslErrors()");
+
+ return reply;
+ }
+}