Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add the "scrub" command to remove passwords and other sensitive information from a repository. Ticket [e5232878345]. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
6c6a978a537be7efa48b32d52bb28261 |
| User & Date: | drh 2009-09-14 19:16:44.000 |
References
|
2010-01-10
| ||
| 04:57 | • Ticket [e523287834] user passwords are stored in plain text status still Closed with 1 other change ... (artifact: b553e1c6ba user: rwilson) | |
|
2009-09-14
| ||
| 19:19 | • Ticket [e523287834]: 1 change ... (artifact: dc51a0c195 user: drh) | |
Context
|
2009-09-15
| ||
| 00:58 | Fix over-quoting of wiki names. Ticket [e4a31ae35cd521b] ... (check-in: dec4685720 user: drh tags: trunk) | |
|
2009-09-14
| ||
| 19:16 | Add the "scrub" command to remove passwords and other sensitive information from a repository. Ticket [e5232878345]. ... (check-in: 6c6a978a53 user: drh tags: trunk) | |
| 16:56 | Fix a C++-ism in timeline.c. ... (check-in: eb1db585a5 user: drh tags: trunk) | |
Changes
Changes to src/rebuild.c.
| ︙ | ︙ | |||
335 336 337 338 339 340 341 |
"UPDATE config SET value=lower(hex(randomblob(20)))"
" WHERE name='project-code';"
"UPDATE config SET value='detached-' || value"
" WHERE name='project-name' AND value NOT GLOB 'detached-*';"
);
db_end_transaction(0);
}
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 |
"UPDATE config SET value=lower(hex(randomblob(20)))"
" WHERE name='project-code';"
"UPDATE config SET value='detached-' || value"
" WHERE name='project-name' AND value NOT GLOB 'detached-*';"
);
db_end_transaction(0);
}
/*
** COMMAND: scrub
** %fossil scrub [--verily] [--force] [REPOSITORY]
**
** The command removes sensitive information (such as passwords) from a
** repository so that the respository can be sent to an untrusted reader.
**
** By default, only passwords are removed. However, if the --verily option
** is added, then private branches, concealed email addresses, IP
** addresses of correspondents, and similar privacy-sensitive fields
** are also purged.
**
** This command permanently deletes the scrubbed information. The effects
** of this command are irreversible. Use with caution.
**
** The user is prompted to confirm the scrub unless the --force option
** is used.
*/
void scrub_cmd(void){
int bVerily = find_option("verily",0,0)!=0;
int bForce = find_option("force", "f", 0)!=0;
int bNeedRebuild = 0;
if( g.argc!=2 && g.argc!=3 ) usage("?REPOSITORY?");
if( g.argc==2 ){
db_must_be_within_tree();
}else{
db_open_repository(g.argv[2]);
}
if( !bForce ){
Blob ans;
blob_zero(&ans);
prompt_user("Scrubbing the repository will permanently remove user\n"
"passwords and other information. Changes cannot be undone.\n"
"Continue [y/N]? ", &ans);
if( blob_str(&ans)[0]!='y' ){
exit(1);
}
}
db_begin_transaction();
db_multi_exec(
"UPDATE user SET pw='';"
"DELETE FROM config WHERE name='last-sync-url';"
);
if( bVerily ){
bNeedRebuild = db_exists("SELECT 1 FROM private");
db_multi_exec(
"DELETE FROM concealed;"
"UPDATE rcvfrom SET ipaddr='unknown';"
"UPDATE user SET photo=NULL, info='';"
"INSERT INTO shun SELECT uuid FROM blob WHERE rid IN private;"
);
}
if( !bNeedRebuild ){
db_end_transaction(0);
db_multi_exec("VACUUM;");
}else{
rebuild_db(0, 1);
db_end_transaction(0);
}
}
|