surf-0.4.1-ssl.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
surf-0.4.1-ssl.diff (2888B)
---
1 diff -r 71388899ac09 config.def.h
2 --- a/config.def.h Tue Jun 08 09:06:10 2010 +0200
3 +++ b/config.def.h Mon Sep 26 22:28:36 2011 +0100
4 @@ -1,11 +1,14 @@
5 /* modifier 0 means no modifier */
6 static char *useragent = "Surf/"VERSION" (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari)";
7 -static char *progress = "#FF0000";
8 +static char *progress = "#0066FF";
9 +static char *progress_untrust = "#FF0000";
10 static char *progress_trust = "#00FF00";
11 static char *stylefile = ".surf/style.css";
12 static char *scriptfile = ".surf/script.js";
13 static char *cookiefile = ".surf/cookies.txt";
14 static time_t sessiontime = 3600;
15 +static char *cafile = "/etc/ssl/certs/ca-certificates.crt";
16 +static char *strictssl = FALSE;
17 #define NOBACKGROUND 0
18
19 #define SETPROP(p, q) { .v = (char *[]){ "/bin/sh", "-c", \
20 diff -r 71388899ac09 surf.c
21 --- a/surf.c Tue Jun 08 09:06:10 2010 +0200
22 +++ b/surf.c Mon Sep 26 22:28:36 2011 +0100
23 @@ -38,6 +38,7 @@
24 char *title, *linkhover;
25 const char *uri, *needle;
26 gint progress;
27 + gboolean sslfailed;
28 struct Client *next;
29 gboolean zoomed;
30 } Client;
31 @@ -250,8 +251,11 @@
32 w = c->indicator;
33 width = c->progress * w->allocation.width / 100;
34 gc = gdk_gc_new(w->window);
35 - gdk_color_parse(strstr(uri, "https://") == uri ?
36 - progress_trust : progress, &fg);
37 + if(strstr(uri, "https://") == uri)
38 + gdk_color_parse(c->sslfailed ?
39 + progress_untrust : progress_trust, &fg);
40 + else
41 + gdk_color_parse(progress, &fg);
42 gdk_gc_set_rgb_fg_color(gc, &fg);
43 gdk_draw_rectangle(w->window,
44 w->style->bg_gc[GTK_WIDGET_STATE(w)],
45 @@ -367,9 +371,24 @@
46
47 void
48 loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
49 + WebKitWebFrame *frame;
50 + WebKitWebDataSource *src;
51 + WebKitNetworkRequest *request;
52 + SoupMessage *msg;
53 + char *uri;
54 +
55 switch(webkit_web_view_get_load_status (c->view)) {
56 case WEBKIT_LOAD_COMMITTED:
57 - setatom(c, AtomUri, geturi(c));
58 + uri = geturi(c);
59 + if(strstr(uri, "https://") == uri) {
60 + frame = webkit_web_view_get_main_frame(c->view);
61 + src = webkit_web_frame_get_data_source(frame);
62 + request = webkit_web_data_source_get_request(src);
63 + msg = webkit_network_request_get_message(request);
64 + c->sslfailed = soup_message_get_flags(msg)
65 + ^ SOUP_MESSAGE_CERTIFICATE_TRUSTED;
66 + }
67 + setatom(c, AtomUri, uri);
68 break;
69 case WEBKIT_LOAD_FINISHED:
70 c->progress = 0;
71 @@ -698,6 +717,10 @@
72 soup_session_remove_feature_by_type(s, soup_cookie_jar_get_type());
73 g_signal_connect_after(G_OBJECT(s), "request-started", G_CALLBACK(newrequest), NULL);
74
75 + /* ssl */
76 + g_object_set(G_OBJECT(s), "ssl-ca-file", cafile, NULL);
77 + g_object_set(G_OBJECT(s), "ssl-strict", strictssl, NULL);
78 +
79 /* proxy */
80 if((proxy = getenv("http_proxy")) && strcmp(proxy, "")) {
81 new_proxy = g_strrstr(proxy, "http://") ? g_strdup(proxy) :