99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
g.urlDfltPort = 443;
iStart = 8;
}else if( zUrl[0]=='s' ){
g.urlIsSsh = 1;
g.urlProtocol = "ssh";
g.urlDfltPort = 22;
g.urlFossil = "fossil";
g.urlShell = 0;
iStart = 6;
}else{
g.urlIsHttps = 0;
g.urlProtocol = "http";
g.urlDfltPort = 80;
iStart = 7;
}
|
<
|
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
g.urlDfltPort = 443;
iStart = 8;
}else if( zUrl[0]=='s' ){
g.urlIsSsh = 1;
g.urlProtocol = "ssh";
g.urlDfltPort = 22;
g.urlFossil = "fossil";
iStart = 6;
}else{
g.urlIsHttps = 0;
g.urlProtocol = "http";
g.urlDfltPort = 80;
iStart = 7;
}
|
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
}
if( fossil_strcmp(zName,"fossil")==0 ){
g.urlFossil = zValue;
dehttpize(g.urlFossil);
zExe = mprintf("%cfossil=%T", cQuerySep, g.urlFossil);
cQuerySep = '&';
}
if( fossil_strcmp(zName,"shell")==0 ){
g.urlShell = zValue;
dehttpize(g.urlShell);
zExe = mprintf("%cshell=%T", cQuerySep, g.urlFossil);
cQuerySep = '&';
}
}
dehttpize(g.urlPath);
if( g.urlDfltPort==g.urlPort ){
g.urlCanonical = mprintf(
"%s://%s%T%T%s",
g.urlProtocol, zLogin, g.urlName, g.urlPath, zExe
|
<
<
<
<
<
<
|
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
}
if( fossil_strcmp(zName,"fossil")==0 ){
g.urlFossil = zValue;
dehttpize(g.urlFossil);
zExe = mprintf("%cfossil=%T", cQuerySep, g.urlFossil);
cQuerySep = '&';
}
}
dehttpize(g.urlPath);
if( g.urlDfltPort==g.urlPort ){
g.urlCanonical = mprintf(
"%s://%s%T%T%s",
g.urlProtocol, zLogin, g.urlName, g.urlPath, zExe
|
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
|
*/
void url_prompt_for_password(void){
if( g.urlIsSsh || g.urlIsFile ) return;
if( isatty(fileno(stdin))
&& (g.urlFlags & URL_PROMPT_PW)!=0
&& (g.urlFlags & URL_PROMPTED)==0
){
char *zPrompt = mprintf("\rpassword for %s: ", g.urlUser);
Blob x;
fossil_force_newline();
prompt_for_password(zPrompt, &x, 0);
free(zPrompt);
g.urlPasswd = mprintf("%b", &x);
blob_reset(&x);
g.urlFlags |= URL_PROMPTED;
if( g.urlPasswd[0]
&& (g.urlFlags & (URL_REMEMBER|URL_ASK_REMEMBER_PW))!=0
){
char c;
prompt_user("remember password (Y/n)? ", &x);
c = blob_str(&x)[0];
blob_reset(&x);
if( c!='n' && c!='N' ){
g.urlFlags |= URL_REMEMBER_PW;
if( g.urlFlags & URL_REMEMBER ){
db_set("last-sync-pw", obscure(g.urlPasswd), 0);
}
}
}
}else{
|
<
<
<
<
<
<
<
>
<
|
<
<
<
|
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
|
*/
void url_prompt_for_password(void){
if( g.urlIsSsh || g.urlIsFile ) return;
if( isatty(fileno(stdin))
&& (g.urlFlags & URL_PROMPT_PW)!=0
&& (g.urlFlags & URL_PROMPTED)==0
){
g.urlFlags |= URL_PROMPTED;
g.urlPasswd = prompt_for_user_password(g.urlUser);
if( g.urlPasswd[0]
&& (g.urlFlags & (URL_REMEMBER|URL_ASK_REMEMBER_PW))!=0
){
if( save_password_prompt() ){
g.urlFlags |= URL_REMEMBER_PW;
if( g.urlFlags & URL_REMEMBER ){
db_set("last-sync-pw", obscure(g.urlPasswd), 0);
}
}
}
}else{
|
496
497
498
499
500
501
502
503
504
505
506
507
|
/* Preemptively prompt for a password if a username is given in the
** URL but no password.
*/
void url_get_password_if_needed(void){
if( (g.urlUser && g.urlUser[0])
&& (g.urlPasswd==0 || g.urlPasswd[0]==0)
&& isatty(fileno(stdin))
&& g.urlIsSsh==0
){
url_prompt_for_password();
}
}
|
<
|
479
480
481
482
483
484
485
486
487
488
489
|
/* Preemptively prompt for a password if a username is given in the
** URL but no password.
*/
void url_get_password_if_needed(void){
if( (g.urlUser && g.urlUser[0])
&& (g.urlPasswd==0 || g.urlPasswd[0]==0)
&& isatty(fileno(stdin))
){
url_prompt_for_password();
}
}
|