[Webkit-unassigned] [Bug 22541] This program is capable to store all the cookies in a hidden folder in ur home directory and it is also capable to render a SSL certificate on the terminal..
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sun Nov 30 23:10:30 PST 2008
https://bugs.webkit.org/show_bug.cgi?id=22541
nimishnayk at gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #25569|review- |review?
Flag| |
Attachment #25569|program is capable to store |program is capable to store
description|all the cookies in a hidden |all the cookies in a hidden
|folder in ur home directory |folder in ur home directory
|and it is also capable to |and it is also capable to
|render a SSL certificate on |render a SSL certificate on
|the terminal.. |the terminal.. I have done
| |some modifications as said
| |by Mr. Oliver Kindly have a
| |look at it.
------- Comment #3 from nimishnayk at gmail.com 2008-11-30 23:10 PDT -------
(From update of attachment 25569)
--- /home/webkit-old/WebCore/platform/network/curl/ResourceHandleManager.cpp
2008-11-28 15:13:42.000000000 +0530
+++ /home/webkit/WebCore/platform/network/curl/ResourceHandleManager.cpp
2008-11-28 14:20:30.000000000 +0530
@@ -5,6 +5,7 @@
* Copyright (C) 2007 Holger Hans Peter Freyther
* Copyright (C) 2008 Collabora Ltd.
* Copyright (C) 2008 Nuanti Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,7 +30,15 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "Base64.h"
@@ -41,11 +50,29 @@
#include "config.h"
+#include "curl/curl.h"
+#include "curl/easy.h"
+#include "curl/types.h"
+#include <ctype.h>
+#include <db.h>
+#include "errno.h"
+#include <fcntl.h>
+#include <limits.h>
+#include <netdb.h>
+#include <netinet/in.h>
#include "ResourceHandle.h"
#include "ResourceHandleInternal.h"
#include "ResourceHandleManager.h"
+#include <signal.h>
+#include "stdio.h"
+#include "stdlib.h"
+#include "string.h"
+#include <sys/acct.h>
+#include <sys/select.h>
+#include <sys/socket.h>
+#include <sys/stpat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
#include "TextEncoding.h"
+#include "unistd.h"
#include <wtf/Vector.h>
#if PLATFORM(GTK)
#if GLIB_CHECK_VERSION(2,12,0)
#define USE_GLIB_BASE64
@@ -57,8 +84,9 @@
const int selectTimeoutMS = 5;
const double pollTimeSeconds = 0.05;
const int maxRunningJobs = 5;
+char user_agent[250];
+char *loc = getenv("HOME");
+char path[100];
ResourceHandleManager::ResourceHandleManager()
: m_downloadTimer(this, &ResourceHandleManager::downloadTimerCallback)
@@ -72,25 +100,22 @@
curl_share_setopt(m_curlShareHandle, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
}
+//curl_share_setop - set obj for a shared obj
+
ResourceHandleManager::~ResourceHandleManager()
{
+ curl_multi_cleanup(m_curlMultiHandle); //closes down multiple
sessions
+ curl_share_cleanup(m_curlShareHandle); //clean up shared
objects
+ /* if (m_cookieJarFileName)
+ free(m_cookieJarFileName);*/
curl_global_cleanup();
}
ResourceHandleManager* ResourceHandleManager::sharedInstance()
{
static ResourceHandleManager* sharedInstance = 0;
if (!sharedInstance)
+ sharedInstance = new ResourceHandleManager();
return sharedInstance;
}
@@ -108,7 +133,7 @@
#endif
size_t totalSize = size * nmemb;
+
// this shouldn't be necessary but apparently is. CURL writes the data
// of html page even if it is a redirect that was handled internally
// can be observed e.g. on gmail.com
@@ -123,9 +148,10 @@
// which means the ResourceLoader's response does not contain the URL.
// Run the code here for local files to resolve the issue.
// TODO: See if there is a better approach for handling this.
+
if (!d->m_response.responseFired()) {
const char* hdr;
+ err = curl_easy_getinfo(h, CURLINFO_EFFECTIVE_URL, &hdr); //returns
the effective url used lately
d->m_response.setUrl(KURL(hdr));
if (d->client())
d->client()->didReceiveResponse(job, d->m_response);
@@ -146,6 +172,12 @@
* update the ResourceResponse and then send it away.
*
*/
+
+static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
+ {
+ return size * nmemb;
+ }
+
static size_t headerCallback(char* ptr, size_t size, size_t nmemb, void* data)
{
ResourceHandle* job = static_cast<ResourceHandle*>(data);
@@ -309,7 +341,7 @@
continue;
ResourceHandleInternal* d = job->getInternal();
ASSERT(d->m_handle == handle);
+
if (d->m_cancelled) {
removeFromCurl(job);
continue;
@@ -325,7 +357,7 @@
#ifndef NDEBUG
char* url = 0;
curl_easy_getinfo(d->m_handle, CURLINFO_EFFECTIVE_URL, &url);
+ printf("Curl ERROR for url='%s', error: '%s'\n", url,
curl_easy_strerror(msg->data.result));
#endif
if (d->client())
d->client()->didFail(job, ResourceError());
@@ -518,12 +550,12 @@
size_t outLength = 0;
char* outData = 0;
outData = reinterpret_cast<char*>(g_base64_decode(data.utf8().data(),
&outLength));
+ if (outData)
client->didReceiveData(handle, outData, outLength, 0);
g_free(outData);
#else
Vector<char> out;
+ if (base64Decode(data.latin1().data(), data.latin1().length(), out))
client->didReceiveData(handle, out.data(), out.size(), 0);
#endif
} else {
@@ -531,8 +563,7 @@
data = decodeURLEscapeSequences(data, TextEncoding(charset));
response.setTextEncodingName("UTF-16");
client->didReceiveResponse(handle, response);
+ client->didReceiveData(handle, reinterpret_cast<const
char*>(data.characters()), data.length() * sizeof(UChar), 0);
}
client->didFinishLoading(handle);
@@ -582,11 +613,14 @@
m_runningJobs++;
CURLMcode ret = curl_multi_add_handle(m_curlMultiHandle,
job->getInternal()->m_handle);
+
+
// don't call perform, because events must be async
// timeout will occur and do curl_multi_perform
+
if (ret && ret != CURLM_CALL_MULTI_PERFORM) {
#ifndef NDEBUG
+ printf("Error %d starting job %s\n", ret,
encodeWithURLEscapeSequences(job->request().url().string()).latin1().data());
#endif
job->cancel();
return;
@@ -611,9 +645,10 @@
// Determine the MIME type based on the path.
d->m_response.setMimeType(MIMETypeRegistry::getMIMETypeForPath(url));
}
+ curl_global_init(CURL_GLOBAL_ALL);
d->m_handle = curl_easy_init();
+
+
#if LIBCURL_VERSION_NUM > 0x071200
if (d->m_defersLoading) {
CURLcode error = curl_easy_pause(d->m_handle, CURLPAUSE_ALL);
@@ -626,6 +661,9 @@
if (getenv("DEBUG_CURL"))
curl_easy_setopt(d->m_handle, CURLOPT_VERBOSE, 1);
#endif
+
+ CURLcode res;
+
curl_easy_setopt(d->m_handle, CURLOPT_PRIVATE, job);
curl_easy_setopt(d->m_handle, CURLOPT_ERRORBUFFER, m_curlErrorBuffer);
curl_easy_setopt(d->m_handle, CURLOPT_WRITEFUNCTION, writeCallback);
@@ -633,28 +671,68 @@
curl_easy_setopt(d->m_handle, CURLOPT_HEADERFUNCTION, headerCallback);
curl_easy_setopt(d->m_handle, CURLOPT_WRITEHEADER, job);
curl_easy_setopt(d->m_handle, CURLOPT_AUTOREFERER, 1);
+ curl_easy_setopt(d->m_handle, CURLOPT_FOLLOWLOCATION,1);
curl_easy_setopt(d->m_handle, CURLOPT_MAXREDIRS, 10);
curl_easy_setopt(d->m_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_easy_setopt(d->m_handle, CURLOPT_SHARE, m_curlShareHandle);
curl_easy_setopt(d->m_handle, CURLOPT_DNS_CACHE_TIMEOUT, 60 * 5); // 5
minutes
+
// enable gzip and deflate through Accept-Encoding:
curl_easy_setopt(d->m_handle, CURLOPT_ENCODING, "");
+
// url must remain valid through the request
ASSERT(!d->m_url);
+
// url is in ASCII so latin1() will only convert it to char* without
character translation.
d->m_url = strdup(url.latin1().data());
curl_easy_setopt(d->m_handle, CURLOPT_URL, d->m_url);
+
+ strcpy(path , loc);
+strcat(path , "/.midori");
+
+ mkdir (path, S_IRWXU);
+
+ strcat(path , "/cookies.txt");
+
+ curl_easy_setopt(d->m_handle, CURLOPT_COOKIEFILE, path);
+ curl_easy_setopt(d->m_handle, CURLOPT_COOKIEJAR, path);
+ curl_easy_perform(d->m_handle);
+ g_print("\nUrl before passin onto cert func %s\n",d->m_url);
+
+ if(d->m_handle) {
+
+ curl_easy_setopt(d->m_handle, CURLOPT_URL, d->m_url);
+
+ curl_easy_setopt(d->m_handle, CURLOPT_WRITEFUNCTION, wrfu);
+
+ curl_easy_setopt(d->m_handle, CURLOPT_SSL_VERIFYPEER, 1L);
+ curl_easy_setopt(d->m_handle, CURLOPT_SSL_VERIFYHOST, 2L);
+
+ curl_easy_setopt(d->m_handle, CURLOPT_VERBOSE, 0L);
+ curl_easy_setopt(d->m_handle, CURLOPT_CERTINFO, 1L);
+
+ res = curl_easy_perform(d->m_handle);
+
+ if(!res) {
+ struct curl_certinfo *ci = NULL;
+
+ res = curl_easy_getinfo(d->m_handle, CURLINFO_CERTINFO, &ci);
+
+ if(!res && ci) {
+ int i;
+ printf("%d certs!\n", ci->num_of_certs);
+
+ for(i=0; i<ci->num_of_certs; i++) {
+ struct curl_slist *slist;
+
+ for(slist = ci->certinfo[i]; slist; slist = slist->next)
+ printf("%s\n", slist->data);
+
+ }
+ }
+
+ }
+
}
struct curl_slist* headers = 0;
@@ -685,7 +763,7 @@
curl_easy_setopt(d->m_handle, CURLOPT_HTTPHEADER, headers);
d->m_customHeaders = headers;
}
+ }
void ResourceHandleManager::cancel(ResourceHandle* job)
{
@@ -697,5 +775,5 @@
if (!m_downloadTimer.isActive())
m_downloadTimer.startOneShot(pollTimeSeconds);
}
+
} // namespace WebCore
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the webkit-unassigned
mailing list