Fossil SCM

Enable proxy support using the "fossil setting proxy" command. This check-in is made using a proxy.

drh 2008-05-01 22:49 trunk
Commit 676fdd088ad1a95ef587a25fe5c64bd3e42787fd
--- src/clone.c
+++ src/clone.c
@@ -72,10 +72,11 @@
7272
db_multi_exec("INSERT OR IGNORE INTO %Q SELECT * FROM orig.%Q",
7373
zTab, zTab);
7474
}
7575
db_finalize(&q);
7676
}else{
77
+ url_enable_proxy(0);
7778
client_sync(0,0,1);
7879
}
7980
verify_cancel();
8081
db_end_transaction(0);
8182
}
8283
--- src/clone.c
+++ src/clone.c
@@ -72,10 +72,11 @@
72 db_multi_exec("INSERT OR IGNORE INTO %Q SELECT * FROM orig.%Q",
73 zTab, zTab);
74 }
75 db_finalize(&q);
76 }else{
 
77 client_sync(0,0,1);
78 }
79 verify_cancel();
80 db_end_transaction(0);
81 }
82
--- src/clone.c
+++ src/clone.c
@@ -72,10 +72,11 @@
72 db_multi_exec("INSERT OR IGNORE INTO %Q SELECT * FROM orig.%Q",
73 zTab, zTab);
74 }
75 db_finalize(&q);
76 }else{
77 url_enable_proxy(0);
78 client_sync(0,0,1);
79 }
80 verify_cancel();
81 db_end_transaction(0);
82 }
83
+25 -9
--- src/db.c
+++ src/db.c
@@ -893,10 +893,30 @@
893893
sqlite3_trace(g.db, db_sql_trace, 0);
894894
}
895895
once = 0;
896896
}
897897
}
898
+
899
+/*
900
+** Return true if the string zVal represents "true" (or "false").
901
+*/
902
+int is_truth(const char *zVal){
903
+ static const char *azOn[] = { "on", "yes", "true", "1" };
904
+ int i;
905
+ for(i=0; i<sizeof(azOn)/sizeof(azOn[0]); i++){
906
+ if( strcmp(zVal,azOn[i])==0 ) return 1;
907
+ }
908
+ return 0;
909
+}
910
+int is_false(const char *zVal){
911
+ static const char *azOff[] = { "off", "no", "false", "0" };
912
+ int i;
913
+ for(i=0; i<sizeof(azOff)/sizeof(azOff[0]); i++){
914
+ if( strcmp(zVal,azOff[i])==0 ) return 1;
915
+ }
916
+ return 0;
917
+}
898918
899919
/*
900920
** Get and set values from the CONFIG, GLOBAL_CONFIG and VVAR table in the
901921
** repository and local databases.
902922
*/
@@ -956,20 +976,13 @@
956976
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
957977
}
958978
db_end_transaction(0);
959979
}
960980
int db_get_boolean(const char *zName, int dflt){
961
- static const char *azOn[] = { "on", "yes", "true", "1" };
962
- static const char *azOff[] = { "off", "no", "false", "0" };
963
- int i;
964981
char *zVal = db_get(zName, dflt ? "on" : "off");
965
- for(i=0; i<sizeof(azOn)/sizeof(azOn[0]); i++){
966
- if( strcmp(zVal,azOn[i])==0 ) return 1;
967
- }
968
- for(i=0; i<sizeof(azOff)/sizeof(azOff[0]); i++){
969
- if( strcmp(zVal,azOff[i])==0 ) return 0;
970
- }
982
+ if( is_truth(zVal) ) return 1;
983
+ if( is_false(zVal) ) return 0;
971984
return dflt;
972985
}
973986
char *db_lget(const char *zName, char *zDefault){
974987
return db_text((char*)zDefault,
975988
"SELECT value FROM vvar WHERE name=%Q", zName);
@@ -1063,10 +1076,12 @@
10631076
** false, all HTTP requests from localhost have
10641077
** unrestricted access to the repository.
10651078
**
10661079
** omitsign When enabled, fossil will not attempt to sign any
10671080
** commit with gpg. All commits will be unsigned.
1081
+**
1082
+** proxy URL of the HTTP proxy to use
10681083
**
10691084
** diff-command External command to run when performing a diff.
10701085
** If undefined, the internal text diff will be used.
10711086
**
10721087
** gdiff-command External command to run when performing a graphical
@@ -1077,10 +1092,11 @@
10771092
"autosync",
10781093
"pgp-command",
10791094
"editor",
10801095
"localauth",
10811096
"omitsign",
1097
+ "proxy",
10821098
"diff-command",
10831099
"gdiff-command",
10841100
};
10851101
int i;
10861102
int globalFlag = find_option("global","g",0)!=0;
10871103
--- src/db.c
+++ src/db.c
@@ -893,10 +893,30 @@
893 sqlite3_trace(g.db, db_sql_trace, 0);
894 }
895 once = 0;
896 }
897 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
898
899 /*
900 ** Get and set values from the CONFIG, GLOBAL_CONFIG and VVAR table in the
901 ** repository and local databases.
902 */
@@ -956,20 +976,13 @@
956 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
957 }
958 db_end_transaction(0);
959 }
960 int db_get_boolean(const char *zName, int dflt){
961 static const char *azOn[] = { "on", "yes", "true", "1" };
962 static const char *azOff[] = { "off", "no", "false", "0" };
963 int i;
964 char *zVal = db_get(zName, dflt ? "on" : "off");
965 for(i=0; i<sizeof(azOn)/sizeof(azOn[0]); i++){
966 if( strcmp(zVal,azOn[i])==0 ) return 1;
967 }
968 for(i=0; i<sizeof(azOff)/sizeof(azOff[0]); i++){
969 if( strcmp(zVal,azOff[i])==0 ) return 0;
970 }
971 return dflt;
972 }
973 char *db_lget(const char *zName, char *zDefault){
974 return db_text((char*)zDefault,
975 "SELECT value FROM vvar WHERE name=%Q", zName);
@@ -1063,10 +1076,12 @@
1063 ** false, all HTTP requests from localhost have
1064 ** unrestricted access to the repository.
1065 **
1066 ** omitsign When enabled, fossil will not attempt to sign any
1067 ** commit with gpg. All commits will be unsigned.
 
 
1068 **
1069 ** diff-command External command to run when performing a diff.
1070 ** If undefined, the internal text diff will be used.
1071 **
1072 ** gdiff-command External command to run when performing a graphical
@@ -1077,10 +1092,11 @@
1077 "autosync",
1078 "pgp-command",
1079 "editor",
1080 "localauth",
1081 "omitsign",
 
1082 "diff-command",
1083 "gdiff-command",
1084 };
1085 int i;
1086 int globalFlag = find_option("global","g",0)!=0;
1087
--- src/db.c
+++ src/db.c
@@ -893,10 +893,30 @@
893 sqlite3_trace(g.db, db_sql_trace, 0);
894 }
895 once = 0;
896 }
897 }
898
899 /*
900 ** Return true if the string zVal represents "true" (or "false").
901 */
902 int is_truth(const char *zVal){
903 static const char *azOn[] = { "on", "yes", "true", "1" };
904 int i;
905 for(i=0; i<sizeof(azOn)/sizeof(azOn[0]); i++){
906 if( strcmp(zVal,azOn[i])==0 ) return 1;
907 }
908 return 0;
909 }
910 int is_false(const char *zVal){
911 static const char *azOff[] = { "off", "no", "false", "0" };
912 int i;
913 for(i=0; i<sizeof(azOff)/sizeof(azOff[0]); i++){
914 if( strcmp(zVal,azOff[i])==0 ) return 1;
915 }
916 return 0;
917 }
918
919 /*
920 ** Get and set values from the CONFIG, GLOBAL_CONFIG and VVAR table in the
921 ** repository and local databases.
922 */
@@ -956,20 +976,13 @@
976 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
977 }
978 db_end_transaction(0);
979 }
980 int db_get_boolean(const char *zName, int dflt){
 
 
 
981 char *zVal = db_get(zName, dflt ? "on" : "off");
982 if( is_truth(zVal) ) return 1;
983 if( is_false(zVal) ) return 0;
 
 
 
 
984 return dflt;
985 }
986 char *db_lget(const char *zName, char *zDefault){
987 return db_text((char*)zDefault,
988 "SELECT value FROM vvar WHERE name=%Q", zName);
@@ -1063,10 +1076,12 @@
1076 ** false, all HTTP requests from localhost have
1077 ** unrestricted access to the repository.
1078 **
1079 ** omitsign When enabled, fossil will not attempt to sign any
1080 ** commit with gpg. All commits will be unsigned.
1081 **
1082 ** proxy URL of the HTTP proxy to use
1083 **
1084 ** diff-command External command to run when performing a diff.
1085 ** If undefined, the internal text diff will be used.
1086 **
1087 ** gdiff-command External command to run when performing a graphical
@@ -1077,10 +1092,11 @@
1092 "autosync",
1093 "pgp-command",
1094 "editor",
1095 "localauth",
1096 "omitsign",
1097 "proxy",
1098 "diff-command",
1099 "gdiff-command",
1100 };
1101 int i;
1102 int globalFlag = find_option("global","g",0)!=0;
1103
+2
--- src/sync.c
+++ src/sync.c
@@ -58,10 +58,11 @@
5858
if( g.urlPort!=80 ){
5959
printf("Autosync: http://%s:%d%s\n", g.urlName, g.urlPort, g.urlPath);
6060
}else{
6161
printf("Autosync: http://%s%s\n", g.urlName, g.urlPath);
6262
}
63
+ url_enable_proxy("via proxy: ");
6364
client_sync((flags & AUTOSYNC_PUSH)!=0, 1, 0);
6465
return 1;
6566
}
6667
6768
/*
@@ -92,10 +93,11 @@
9293
printf("Server: http://%s:%d%s\n", g.urlName, g.urlPort, g.urlPath);
9394
}else{
9495
printf("Server: http://%s%s\n", g.urlName, g.urlPath);
9596
}
9697
}
98
+ url_enable_proxy("via proxy: ");
9799
}
98100
99101
/*
100102
** COMMAND: pull
101103
**
102104
--- src/sync.c
+++ src/sync.c
@@ -58,10 +58,11 @@
58 if( g.urlPort!=80 ){
59 printf("Autosync: http://%s:%d%s\n", g.urlName, g.urlPort, g.urlPath);
60 }else{
61 printf("Autosync: http://%s%s\n", g.urlName, g.urlPath);
62 }
 
63 client_sync((flags & AUTOSYNC_PUSH)!=0, 1, 0);
64 return 1;
65 }
66
67 /*
@@ -92,10 +93,11 @@
92 printf("Server: http://%s:%d%s\n", g.urlName, g.urlPort, g.urlPath);
93 }else{
94 printf("Server: http://%s%s\n", g.urlName, g.urlPath);
95 }
96 }
 
97 }
98
99 /*
100 ** COMMAND: pull
101 **
102
--- src/sync.c
+++ src/sync.c
@@ -58,10 +58,11 @@
58 if( g.urlPort!=80 ){
59 printf("Autosync: http://%s:%d%s\n", g.urlName, g.urlPort, g.urlPath);
60 }else{
61 printf("Autosync: http://%s%s\n", g.urlName, g.urlPath);
62 }
63 url_enable_proxy("via proxy: ");
64 client_sync((flags & AUTOSYNC_PUSH)!=0, 1, 0);
65 return 1;
66 }
67
68 /*
@@ -92,10 +93,11 @@
93 printf("Server: http://%s:%d%s\n", g.urlName, g.urlPort, g.urlPath);
94 }else{
95 printf("Server: http://%s%s\n", g.urlName, g.urlPath);
96 }
97 }
98 url_enable_proxy("via proxy: ");
99 }
100
101 /*
102 ** COMMAND: pull
103 **
104
+15 -1
--- src/url.c
+++ src/url.c
@@ -111,11 +111,11 @@
111111
112112
/*
113113
** COMMAND: test-urlparser
114114
*/
115115
void cmd_test_urlparser(void){
116
- if( g.argc!=3 ){
116
+ if( g.argc!=3 && g.argc!=4 ){
117117
usage("URL");
118118
}
119119
url_parse(g.argv[2]);
120120
printf("g.urlIsFile = %d\n", g.urlIsFile);
121121
printf("g.urlName = %s\n", g.urlName);
@@ -123,5 +123,19 @@
123123
printf("g.urlPath = %s\n", g.urlPath);
124124
printf("g.urlUser = %s\n", g.urlUser);
125125
printf("g.urlPasswd = %s\n", g.urlPasswd);
126126
printf("g.urlCanonical = %s\n", g.urlCanonical);
127127
}
128
+
129
+/*
130
+** If the "proxy" setting is defined, then change the URL to refer
131
+** to the proxy server.
132
+*/
133
+void url_enable_proxy(const char *zMsg){
134
+ const char *zProxy = db_get("proxy", 0);
135
+ if( zProxy && zProxy[0] && !is_false(zProxy) ){
136
+ char *zOriginalUrl = g.urlCanonical;
137
+ if( zMsg ) printf("%s%s\n", zMsg, zProxy);
138
+ url_parse(zProxy);
139
+ g.urlPath = zOriginalUrl;
140
+ }
141
+}
128142
--- src/url.c
+++ src/url.c
@@ -111,11 +111,11 @@
111
112 /*
113 ** COMMAND: test-urlparser
114 */
115 void cmd_test_urlparser(void){
116 if( g.argc!=3 ){
117 usage("URL");
118 }
119 url_parse(g.argv[2]);
120 printf("g.urlIsFile = %d\n", g.urlIsFile);
121 printf("g.urlName = %s\n", g.urlName);
@@ -123,5 +123,19 @@
123 printf("g.urlPath = %s\n", g.urlPath);
124 printf("g.urlUser = %s\n", g.urlUser);
125 printf("g.urlPasswd = %s\n", g.urlPasswd);
126 printf("g.urlCanonical = %s\n", g.urlCanonical);
127 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
--- src/url.c
+++ src/url.c
@@ -111,11 +111,11 @@
111
112 /*
113 ** COMMAND: test-urlparser
114 */
115 void cmd_test_urlparser(void){
116 if( g.argc!=3 && g.argc!=4 ){
117 usage("URL");
118 }
119 url_parse(g.argv[2]);
120 printf("g.urlIsFile = %d\n", g.urlIsFile);
121 printf("g.urlName = %s\n", g.urlName);
@@ -123,5 +123,19 @@
123 printf("g.urlPath = %s\n", g.urlPath);
124 printf("g.urlUser = %s\n", g.urlUser);
125 printf("g.urlPasswd = %s\n", g.urlPasswd);
126 printf("g.urlCanonical = %s\n", g.urlCanonical);
127 }
128
129 /*
130 ** If the "proxy" setting is defined, then change the URL to refer
131 ** to the proxy server.
132 */
133 void url_enable_proxy(const char *zMsg){
134 const char *zProxy = db_get("proxy", 0);
135 if( zProxy && zProxy[0] && !is_false(zProxy) ){
136 char *zOriginalUrl = g.urlCanonical;
137 if( zMsg ) printf("%s%s\n", zMsg, zProxy);
138 url_parse(zProxy);
139 g.urlPath = zOriginalUrl;
140 }
141 }
142

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button