Fossil SCM

Only setup Fossil user if URL is SSH. This is done to avoid problems when cloning a fossil that has SSH settings using into a file:// URL.

amb 2013-07-26 06:40 ssh-shared-account
Commit 1ebba56f2aa59a84a1b502f280cef806f2b8ef8b
4 files changed +2 -3 +5 -5 +3 -3 +9 -2
+2 -3
--- src/http.c
+++ src/http.c
@@ -38,20 +38,19 @@
3838
const char *zLogin; /* The user login name */
3939
const char *zPw; /* The user password */
4040
Blob pw; /* The nonce with user password appended */
4141
Blob sig; /* The signature field */
4242
43
+ zLogin = url_or_fossil_user();
4344
blob_zero(pLogin);
44
- if( g.urlUser==0 && g.zFossilUser==0 ||
45
- fossil_strcmp(g.urlUser, "anonymous")==0 ){
45
+ if( zLogin==0 || fossil_strcmp(g.urlUser, "anonymous")==0 ){
4646
return; /* If no login card for users "nobody" and "anonymous" */
4747
}
4848
blob_zero(&nonce);
4949
blob_zero(&pw);
5050
sha1sum_blob(pPayload, &nonce);
5151
blob_copy(&pw, &nonce);
52
- zLogin = url_or_fossil_user();
5352
if( g.urlPasswd ){
5453
zPw = g.urlPasswd;
5554
}else if( g.cgiOutput ){
5655
/* Password failure while doing a sync from the web interface */
5756
cgi_printf("*** incorrect or missing password for user %h\n", zLogin);
5857
--- src/http.c
+++ src/http.c
@@ -38,20 +38,19 @@
38 const char *zLogin; /* The user login name */
39 const char *zPw; /* The user password */
40 Blob pw; /* The nonce with user password appended */
41 Blob sig; /* The signature field */
42
 
43 blob_zero(pLogin);
44 if( g.urlUser==0 && g.zFossilUser==0 ||
45 fossil_strcmp(g.urlUser, "anonymous")==0 ){
46 return; /* If no login card for users "nobody" and "anonymous" */
47 }
48 blob_zero(&nonce);
49 blob_zero(&pw);
50 sha1sum_blob(pPayload, &nonce);
51 blob_copy(&pw, &nonce);
52 zLogin = url_or_fossil_user();
53 if( g.urlPasswd ){
54 zPw = g.urlPasswd;
55 }else if( g.cgiOutput ){
56 /* Password failure while doing a sync from the web interface */
57 cgi_printf("*** incorrect or missing password for user %h\n", zLogin);
58
--- src/http.c
+++ src/http.c
@@ -38,20 +38,19 @@
38 const char *zLogin; /* The user login name */
39 const char *zPw; /* The user password */
40 Blob pw; /* The nonce with user password appended */
41 Blob sig; /* The signature field */
42
43 zLogin = url_or_fossil_user();
44 blob_zero(pLogin);
45 if( zLogin==0 || fossil_strcmp(g.urlUser, "anonymous")==0 ){
 
46 return; /* If no login card for users "nobody" and "anonymous" */
47 }
48 blob_zero(&nonce);
49 blob_zero(&pw);
50 sha1sum_blob(pPayload, &nonce);
51 blob_copy(&pw, &nonce);
 
52 if( g.urlPasswd ){
53 zPw = g.urlPasswd;
54 }else if( g.cgiOutput ){
55 /* Password failure while doing a sync from the web interface */
56 cgi_printf("*** incorrect or missing password for user %h\n", zLogin);
57
+5 -5
--- src/sync.c
+++ src/sync.c
@@ -49,11 +49,11 @@
4949
}else{
5050
/* Autosync defaults on. To make it default off, "return" here. */
5151
}
5252
url_parse(0, URL_REMEMBER);
5353
if( g.urlProtocol==0 ) return 0;
54
- if( ( g.urlUser!=0 || g.zFossilUser!=0 ) && g.urlPasswd==0 ){
54
+ if( ( url_or_fossil_user()!=0 ) && g.urlPasswd==0 ){
5555
g.urlPasswd = unobscure(db_get("last-sync-pw", 0));
5656
if( g.urlIsSsh && g.urlPasswd==0 ){
5757
g.urlFlags |= URL_PROMPT_PW;
5858
url_prompt_for_password();
5959
}
@@ -69,11 +69,11 @@
6969
*/
7070
configSync = CONFIGSET_SHUN;
7171
}
7272
#endif
7373
if( find_option("verbose","v",0)!=0 ) flags |= SYNC_VERBOSE;
74
- ( g.zFossilUser && g.zFossilUser[0] ) ?
74
+ is_fossil_user() ?
7575
fossil_print("Autosync: (%s) %s\n", g.zFossilUser, g.urlCanonical) :
7676
fossil_print("Autosync: %s\n", g.urlCanonical);
7777
url_enable_proxy("via proxy: ");
7878
rc = client_sync(flags, configSync, 0);
7979
if( rc ) fossil_warning("Autosync failed");
@@ -120,19 +120,19 @@
120120
usage("URL");
121121
}
122122
user_select();
123123
if( g.argc==2 ){
124124
if( ((*pSyncFlags) & (SYNC_PUSH|SYNC_PULL))==(SYNC_PUSH|SYNC_PULL) ){
125
- ( g.zFossilUser && g.zFossilUser[0] ) ?
125
+ is_fossil_user() ?
126126
fossil_print("Sync with (%s) %s\n", g.zFossilUser, g.urlCanonical) :
127127
fossil_print("Sync with %s\n", g.urlCanonical);
128128
}else if( (*pSyncFlags) & SYNC_PUSH ){
129
- ( g.zFossilUser && g.zFossilUser[0] ) ?
129
+ is_fossil_user() ?
130130
fossil_print("Push to (%s) %s\n", g.zFossilUser, g.urlCanonical) :
131131
fossil_print("Push to %s\n", g.urlCanonical);
132132
}else if( (*pSyncFlags) & SYNC_PULL ){
133
- ( g.zFossilUser && g.zFossilUser[0] ) ?
133
+ is_fossil_user() ?
134134
fossil_print("Pull from (%s) %s\n", g.zFossilUser, g.urlCanonical) :
135135
fossil_print("Pull from %s\n", g.urlCanonical);
136136
}
137137
}
138138
url_enable_proxy("via proxy: ");
139139
--- src/sync.c
+++ src/sync.c
@@ -49,11 +49,11 @@
49 }else{
50 /* Autosync defaults on. To make it default off, "return" here. */
51 }
52 url_parse(0, URL_REMEMBER);
53 if( g.urlProtocol==0 ) return 0;
54 if( ( g.urlUser!=0 || g.zFossilUser!=0 ) && g.urlPasswd==0 ){
55 g.urlPasswd = unobscure(db_get("last-sync-pw", 0));
56 if( g.urlIsSsh && g.urlPasswd==0 ){
57 g.urlFlags |= URL_PROMPT_PW;
58 url_prompt_for_password();
59 }
@@ -69,11 +69,11 @@
69 */
70 configSync = CONFIGSET_SHUN;
71 }
72 #endif
73 if( find_option("verbose","v",0)!=0 ) flags |= SYNC_VERBOSE;
74 ( g.zFossilUser && g.zFossilUser[0] ) ?
75 fossil_print("Autosync: (%s) %s\n", g.zFossilUser, g.urlCanonical) :
76 fossil_print("Autosync: %s\n", g.urlCanonical);
77 url_enable_proxy("via proxy: ");
78 rc = client_sync(flags, configSync, 0);
79 if( rc ) fossil_warning("Autosync failed");
@@ -120,19 +120,19 @@
120 usage("URL");
121 }
122 user_select();
123 if( g.argc==2 ){
124 if( ((*pSyncFlags) & (SYNC_PUSH|SYNC_PULL))==(SYNC_PUSH|SYNC_PULL) ){
125 ( g.zFossilUser && g.zFossilUser[0] ) ?
126 fossil_print("Sync with (%s) %s\n", g.zFossilUser, g.urlCanonical) :
127 fossil_print("Sync with %s\n", g.urlCanonical);
128 }else if( (*pSyncFlags) & SYNC_PUSH ){
129 ( g.zFossilUser && g.zFossilUser[0] ) ?
130 fossil_print("Push to (%s) %s\n", g.zFossilUser, g.urlCanonical) :
131 fossil_print("Push to %s\n", g.urlCanonical);
132 }else if( (*pSyncFlags) & SYNC_PULL ){
133 ( g.zFossilUser && g.zFossilUser[0] ) ?
134 fossil_print("Pull from (%s) %s\n", g.zFossilUser, g.urlCanonical) :
135 fossil_print("Pull from %s\n", g.urlCanonical);
136 }
137 }
138 url_enable_proxy("via proxy: ");
139
--- src/sync.c
+++ src/sync.c
@@ -49,11 +49,11 @@
49 }else{
50 /* Autosync defaults on. To make it default off, "return" here. */
51 }
52 url_parse(0, URL_REMEMBER);
53 if( g.urlProtocol==0 ) return 0;
54 if( ( url_or_fossil_user()!=0 ) && g.urlPasswd==0 ){
55 g.urlPasswd = unobscure(db_get("last-sync-pw", 0));
56 if( g.urlIsSsh && g.urlPasswd==0 ){
57 g.urlFlags |= URL_PROMPT_PW;
58 url_prompt_for_password();
59 }
@@ -69,11 +69,11 @@
69 */
70 configSync = CONFIGSET_SHUN;
71 }
72 #endif
73 if( find_option("verbose","v",0)!=0 ) flags |= SYNC_VERBOSE;
74 is_fossil_user() ?
75 fossil_print("Autosync: (%s) %s\n", g.zFossilUser, g.urlCanonical) :
76 fossil_print("Autosync: %s\n", g.urlCanonical);
77 url_enable_proxy("via proxy: ");
78 rc = client_sync(flags, configSync, 0);
79 if( rc ) fossil_warning("Autosync failed");
@@ -120,19 +120,19 @@
120 usage("URL");
121 }
122 user_select();
123 if( g.argc==2 ){
124 if( ((*pSyncFlags) & (SYNC_PUSH|SYNC_PULL))==(SYNC_PUSH|SYNC_PULL) ){
125 is_fossil_user() ?
126 fossil_print("Sync with (%s) %s\n", g.zFossilUser, g.urlCanonical) :
127 fossil_print("Sync with %s\n", g.urlCanonical);
128 }else if( (*pSyncFlags) & SYNC_PUSH ){
129 is_fossil_user() ?
130 fossil_print("Push to (%s) %s\n", g.zFossilUser, g.urlCanonical) :
131 fossil_print("Push to %s\n", g.urlCanonical);
132 }else if( (*pSyncFlags) & SYNC_PULL ){
133 is_fossil_user() ?
134 fossil_print("Pull from (%s) %s\n", g.zFossilUser, g.urlCanonical) :
135 fossil_print("Pull from %s\n", g.urlCanonical);
136 }
137 }
138 url_enable_proxy("via proxy: ");
139
+3 -3
--- src/url.c
+++ src/url.c
@@ -201,20 +201,20 @@
201201
g.urlProtocol = "file";
202202
g.urlPath = "";
203203
g.urlName = mprintf("%b", &cfile);
204204
g.urlCanonical = mprintf("file://%T", g.urlName);
205205
blob_reset(&cfile);
206
- }else if( ( g.urlUser!=0 || g.zFossilUser!=0 )
207
- && g.urlPasswd==0 && (urlFlags & URL_PROMPT_PW) ){
206
+ }else if( url_or_fossil_user()!=0 &&
207
+ g.urlPasswd==0 && (urlFlags & URL_PROMPT_PW) ){
208208
url_prompt_for_password();
209209
bPrompted = 1;
210210
}
211211
if( urlFlags & URL_REMEMBER ){
212212
if( bSetUrl ){
213213
db_set("last-sync-url", g.urlCanonical, 0);
214214
}
215
- if( !bPrompted && g.urlPasswd && ( g.urlUser || g.zFossilUser ) ){
215
+ if( !bPrompted && g.urlPasswd && url_or_fossil_user() ){
216216
db_set("last-sync-pw", obscure(g.urlPasswd), 0);
217217
}
218218
}
219219
}
220220
221221
--- src/url.c
+++ src/url.c
@@ -201,20 +201,20 @@
201 g.urlProtocol = "file";
202 g.urlPath = "";
203 g.urlName = mprintf("%b", &cfile);
204 g.urlCanonical = mprintf("file://%T", g.urlName);
205 blob_reset(&cfile);
206 }else if( ( g.urlUser!=0 || g.zFossilUser!=0 )
207 && g.urlPasswd==0 && (urlFlags & URL_PROMPT_PW) ){
208 url_prompt_for_password();
209 bPrompted = 1;
210 }
211 if( urlFlags & URL_REMEMBER ){
212 if( bSetUrl ){
213 db_set("last-sync-url", g.urlCanonical, 0);
214 }
215 if( !bPrompted && g.urlPasswd && ( g.urlUser || g.zFossilUser ) ){
216 db_set("last-sync-pw", obscure(g.urlPasswd), 0);
217 }
218 }
219 }
220
221
--- src/url.c
+++ src/url.c
@@ -201,20 +201,20 @@
201 g.urlProtocol = "file";
202 g.urlPath = "";
203 g.urlName = mprintf("%b", &cfile);
204 g.urlCanonical = mprintf("file://%T", g.urlName);
205 blob_reset(&cfile);
206 }else if( url_or_fossil_user()!=0 &&
207 g.urlPasswd==0 && (urlFlags & URL_PROMPT_PW) ){
208 url_prompt_for_password();
209 bPrompted = 1;
210 }
211 if( urlFlags & URL_REMEMBER ){
212 if( bSetUrl ){
213 db_set("last-sync-url", g.urlCanonical, 0);
214 }
215 if( !bPrompted && g.urlPasswd && url_or_fossil_user() ){
216 db_set("last-sync-pw", obscure(g.urlPasswd), 0);
217 }
218 }
219 }
220
221
+9 -2
--- src/user.c
+++ src/user.c
@@ -157,14 +157,21 @@
157157
blob_reset(&x);
158158
return zPw;
159159
}
160160
161161
/*
162
-** Return Fossil user if defined or URL user
162
+** Return Fossil user if allocated and URL is SSH or URL user
163163
*/
164164
const char *url_or_fossil_user(void){
165
- return ( g.zFossilUser && g.zFossilUser[0] ) ? g.zFossilUser : g.urlUser;
165
+ return is_fossil_user() ? g.zFossilUser : g.urlUser;
166
+}
167
+
168
+/*
169
+** Return true if URL is SSH and Fossil user is allocated
170
+*/
171
+int is_fossil_user(void) {
172
+ return g.urlIsSsh && g.zFossilUser && g.zFossilUser[0];
166173
}
167174
168175
/*
169176
** Prompt the user to enter a single line of text.
170177
*/
171178
--- src/user.c
+++ src/user.c
@@ -157,14 +157,21 @@
157 blob_reset(&x);
158 return zPw;
159 }
160
161 /*
162 ** Return Fossil user if defined or URL user
163 */
164 const char *url_or_fossil_user(void){
165 return ( g.zFossilUser && g.zFossilUser[0] ) ? g.zFossilUser : g.urlUser;
 
 
 
 
 
 
 
166 }
167
168 /*
169 ** Prompt the user to enter a single line of text.
170 */
171
--- src/user.c
+++ src/user.c
@@ -157,14 +157,21 @@
157 blob_reset(&x);
158 return zPw;
159 }
160
161 /*
162 ** Return Fossil user if allocated and URL is SSH or URL user
163 */
164 const char *url_or_fossil_user(void){
165 return is_fossil_user() ? g.zFossilUser : g.urlUser;
166 }
167
168 /*
169 ** Return true if URL is SSH and Fossil user is allocated
170 */
171 int is_fossil_user(void) {
172 return g.urlIsSsh && g.zFossilUser && g.zFossilUser[0];
173 }
174
175 /*
176 ** Prompt the user to enter a single line of text.
177 */
178

Keyboard Shortcuts

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