Fossil SCM

When creating a new repository or cloning a repository, print the initial administrator password on standard output. This is intended to help new users figure out how to log in. Ticket [ca08d51f19]

drh 2008-11-20 01:07 trunk
Commit 0c6ea0d93f036473074a5dd93870ad1b51b92cd8
3 files changed +9 +1 -1 +17 -13
--- src/clone.c
+++ src/clone.c
@@ -36,10 +36,11 @@
3636
**
3737
** Make a clone of a repository specified by URL in the local
3838
** file named FILENAME.
3939
*/
4040
void clone_cmd(void){
41
+ char *zPassword;
4142
url_proxy_options();
4243
if( g.argc!=4 ){
4344
usage("FILE-OR-URL NEW-REPOSITORY");
4445
}
4546
db_open_config();
@@ -55,10 +56,14 @@
5556
db_record_repository_filename(g.argv[3]);
5657
db_multi_exec(
5758
"REPLACE INTO config(name,value)"
5859
" VALUES('server-code', lower(hex(randomblob(20))));"
5960
);
61
+ g.zLogin = db_text(0, "SELECT login FROM user WHERE cap LIKE '%%s%%'");
62
+ if( g.zLogin==0 ){
63
+ db_create_default_users(1);
64
+ }
6065
printf("Repository cloned into %s\n", g.argv[3]);
6166
}else{
6267
db_create_repository(g.argv[3]);
6368
db_open_repository(g.argv[3]);
6469
db_begin_transaction();
@@ -82,7 +87,11 @@
8287
db_open_repository(g.argv[3]);
8388
}
8489
db_begin_transaction();
8590
printf("Rebuilding repository meta-data...\n");
8691
rebuild_db(0, 1);
92
+ printf("project-id: %s\n", db_get("project-code", 0));
93
+ printf("server-id: %s\n", db_get("server-code", 0));
94
+ zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
95
+ printf("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
8796
db_end_transaction(0);
8897
}
8998
--- src/clone.c
+++ src/clone.c
@@ -36,10 +36,11 @@
36 **
37 ** Make a clone of a repository specified by URL in the local
38 ** file named FILENAME.
39 */
40 void clone_cmd(void){
 
41 url_proxy_options();
42 if( g.argc!=4 ){
43 usage("FILE-OR-URL NEW-REPOSITORY");
44 }
45 db_open_config();
@@ -55,10 +56,14 @@
55 db_record_repository_filename(g.argv[3]);
56 db_multi_exec(
57 "REPLACE INTO config(name,value)"
58 " VALUES('server-code', lower(hex(randomblob(20))));"
59 );
 
 
 
 
60 printf("Repository cloned into %s\n", g.argv[3]);
61 }else{
62 db_create_repository(g.argv[3]);
63 db_open_repository(g.argv[3]);
64 db_begin_transaction();
@@ -82,7 +87,11 @@
82 db_open_repository(g.argv[3]);
83 }
84 db_begin_transaction();
85 printf("Rebuilding repository meta-data...\n");
86 rebuild_db(0, 1);
 
 
 
 
87 db_end_transaction(0);
88 }
89
--- src/clone.c
+++ src/clone.c
@@ -36,10 +36,11 @@
36 **
37 ** Make a clone of a repository specified by URL in the local
38 ** file named FILENAME.
39 */
40 void clone_cmd(void){
41 char *zPassword;
42 url_proxy_options();
43 if( g.argc!=4 ){
44 usage("FILE-OR-URL NEW-REPOSITORY");
45 }
46 db_open_config();
@@ -55,10 +56,14 @@
56 db_record_repository_filename(g.argv[3]);
57 db_multi_exec(
58 "REPLACE INTO config(name,value)"
59 " VALUES('server-code', lower(hex(randomblob(20))));"
60 );
61 g.zLogin = db_text(0, "SELECT login FROM user WHERE cap LIKE '%%s%%'");
62 if( g.zLogin==0 ){
63 db_create_default_users(1);
64 }
65 printf("Repository cloned into %s\n", g.argv[3]);
66 }else{
67 db_create_repository(g.argv[3]);
68 db_open_repository(g.argv[3]);
69 db_begin_transaction();
@@ -82,7 +87,11 @@
87 db_open_repository(g.argv[3]);
88 }
89 db_begin_transaction();
90 printf("Rebuilding repository meta-data...\n");
91 rebuild_db(0, 1);
92 printf("project-id: %s\n", db_get("project-code", 0));
93 printf("server-id: %s\n", db_get("server-code", 0));
94 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
95 printf("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
96 db_end_transaction(0);
97 }
98
+1 -1
--- src/configure.c
+++ src/configure.c
@@ -479,11 +479,11 @@
479479
if( (aConfig[i].groupMask & mask)==0 ) continue;
480480
if( zName[0]!='@' ){
481481
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
482482
}else if( strcmp(zName,"@user")==0 ){
483483
db_multi_exec("DELETE FROM user");
484
- db_create_default_users();
484
+ db_create_default_users(0);
485485
}else if( strcmp(zName,"@concealed")==0 ){
486486
db_multi_exec("DELETE FROM concealed");
487487
}else if( strcmp(zName,"@shun")==0 ){
488488
db_multi_exec("DELETE FROM shun");
489489
}else if( strcmp(zName,"@reportfmt")==0 ){
490490
--- src/configure.c
+++ src/configure.c
@@ -479,11 +479,11 @@
479 if( (aConfig[i].groupMask & mask)==0 ) continue;
480 if( zName[0]!='@' ){
481 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
482 }else if( strcmp(zName,"@user")==0 ){
483 db_multi_exec("DELETE FROM user");
484 db_create_default_users();
485 }else if( strcmp(zName,"@concealed")==0 ){
486 db_multi_exec("DELETE FROM concealed");
487 }else if( strcmp(zName,"@shun")==0 ){
488 db_multi_exec("DELETE FROM shun");
489 }else if( strcmp(zName,"@reportfmt")==0 ){
490
--- src/configure.c
+++ src/configure.c
@@ -479,11 +479,11 @@
479 if( (aConfig[i].groupMask & mask)==0 ) continue;
480 if( zName[0]!='@' ){
481 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
482 }else if( strcmp(zName,"@user")==0 ){
483 db_multi_exec("DELETE FROM user");
484 db_create_default_users(0);
485 }else if( strcmp(zName,"@concealed")==0 ){
486 db_multi_exec("DELETE FROM concealed");
487 }else if( strcmp(zName,"@shun")==0 ){
488 db_multi_exec("DELETE FROM shun");
489 }else if( strcmp(zName,"@reportfmt")==0 ){
490
+17 -13
--- src/db.c
+++ src/db.c
@@ -851,11 +851,11 @@
851851
}
852852
853853
/*
854854
** Create the default user accounts in the USER table.
855855
*/
856
-void db_create_default_users(void){
856
+void db_create_default_users(int setupUserOnly){
857857
const char *zUser;
858858
zUser = db_get("default-user", 0);
859859
if( zUser==0 ){
860860
#ifdef __MINGW32__
861861
zUser = getenv("USERNAME");
@@ -866,20 +866,22 @@
866866
if( zUser==0 ){
867867
zUser = "root";
868868
}
869869
db_multi_exec(
870870
"INSERT INTO user(login, pw, cap, info)"
871
- "VALUES(%Q,'','s','')", zUser
872
- );
873
- db_multi_exec(
874
- "INSERT INTO user(login,pw,cap,info)"
875
- " VALUES('anonymous','anonymous','ghknw','Anon');"
876
- "INSERT INTO user(login,pw,cap,info)"
877
- " VALUES('nobody','','jor','Nobody');"
878
- "INSERT INTO user(login,pw,cap,info)"
879
- " VALUES('developer','','deipt','Dev');"
880
- );
871
+ "VALUES(%Q,lower(hex(randomblob(3))),'s','')", zUser
872
+ );
873
+ if( !setupUserOnly ){
874
+ db_multi_exec(
875
+ "INSERT INTO user(login,pw,cap,info)"
876
+ " VALUES('anonymous','anonymous','ghknw','Anon');"
877
+ "INSERT INTO user(login,pw,cap,info)"
878
+ " VALUES('nobody','','jor','Nobody');"
879
+ "INSERT INTO user(login,pw,cap,info)"
880
+ " VALUES('developer','','deipt','Dev');"
881
+ );
882
+ }
881883
}
882884
883885
/*
884886
** Fill an empty repository database with the basic information for a
885887
** repository. This function is shared between 'create_repository_cmd'
@@ -905,11 +907,11 @@
905907
" VALUES('project-code', lower(hex(randomblob(20))));"
906908
);
907909
}
908910
if( !db_is_global("autosync") ) db_set_int("autosync", 1, 0);
909911
if( !db_is_global("localauth") ) db_set_int("localauth", 0, 0);
910
- db_create_default_users();
912
+ db_create_default_users(0);
911913
user_select();
912914
913915
if (makeInitialVersion){
914916
blob_zero(&manifest);
915917
blob_appendf(&manifest, "C initial\\sempty\\sbaseline\n");
@@ -935,10 +937,11 @@
935937
** Create a repository for a new project in the file named FILENAME.
936938
** This command is distinct from "clone". The "clone" command makes
937939
** a copy of an existing project. This command starts a new project.
938940
*/
939941
void create_repository_cmd(void){
942
+ char *zPassword;
940943
if( g.argc!=3 ){
941944
usage("REPOSITORY-NAME");
942945
}
943946
db_create_repository(g.argv[2]);
944947
db_open_repository(g.argv[2]);
@@ -946,11 +949,12 @@
946949
db_begin_transaction();
947950
db_initial_setup(1, 1);
948951
db_end_transaction(0);
949952
printf("project-id: %s\n", db_get("project-code", 0));
950953
printf("server-id: %s\n", db_get("server-code", 0));
951
- printf("admin-user: %s (no password set yet!)\n", g.zLogin);
954
+ zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
955
+ printf("admin-user: %s (initial password is \"%s\")\n", g.zLogin, zPassword);
952956
printf("baseline: %s\n", db_text(0, "SELECT uuid FROM blob"));
953957
}
954958
955959
/*
956960
** SQL functions for debugging.
957961
--- src/db.c
+++ src/db.c
@@ -851,11 +851,11 @@
851 }
852
853 /*
854 ** Create the default user accounts in the USER table.
855 */
856 void db_create_default_users(void){
857 const char *zUser;
858 zUser = db_get("default-user", 0);
859 if( zUser==0 ){
860 #ifdef __MINGW32__
861 zUser = getenv("USERNAME");
@@ -866,20 +866,22 @@
866 if( zUser==0 ){
867 zUser = "root";
868 }
869 db_multi_exec(
870 "INSERT INTO user(login, pw, cap, info)"
871 "VALUES(%Q,'','s','')", zUser
872 );
873 db_multi_exec(
874 "INSERT INTO user(login,pw,cap,info)"
875 " VALUES('anonymous','anonymous','ghknw','Anon');"
876 "INSERT INTO user(login,pw,cap,info)"
877 " VALUES('nobody','','jor','Nobody');"
878 "INSERT INTO user(login,pw,cap,info)"
879 " VALUES('developer','','deipt','Dev');"
880 );
 
 
881 }
882
883 /*
884 ** Fill an empty repository database with the basic information for a
885 ** repository. This function is shared between 'create_repository_cmd'
@@ -905,11 +907,11 @@
905 " VALUES('project-code', lower(hex(randomblob(20))));"
906 );
907 }
908 if( !db_is_global("autosync") ) db_set_int("autosync", 1, 0);
909 if( !db_is_global("localauth") ) db_set_int("localauth", 0, 0);
910 db_create_default_users();
911 user_select();
912
913 if (makeInitialVersion){
914 blob_zero(&manifest);
915 blob_appendf(&manifest, "C initial\\sempty\\sbaseline\n");
@@ -935,10 +937,11 @@
935 ** Create a repository for a new project in the file named FILENAME.
936 ** This command is distinct from "clone". The "clone" command makes
937 ** a copy of an existing project. This command starts a new project.
938 */
939 void create_repository_cmd(void){
 
940 if( g.argc!=3 ){
941 usage("REPOSITORY-NAME");
942 }
943 db_create_repository(g.argv[2]);
944 db_open_repository(g.argv[2]);
@@ -946,11 +949,12 @@
946 db_begin_transaction();
947 db_initial_setup(1, 1);
948 db_end_transaction(0);
949 printf("project-id: %s\n", db_get("project-code", 0));
950 printf("server-id: %s\n", db_get("server-code", 0));
951 printf("admin-user: %s (no password set yet!)\n", g.zLogin);
 
952 printf("baseline: %s\n", db_text(0, "SELECT uuid FROM blob"));
953 }
954
955 /*
956 ** SQL functions for debugging.
957
--- src/db.c
+++ src/db.c
@@ -851,11 +851,11 @@
851 }
852
853 /*
854 ** Create the default user accounts in the USER table.
855 */
856 void db_create_default_users(int setupUserOnly){
857 const char *zUser;
858 zUser = db_get("default-user", 0);
859 if( zUser==0 ){
860 #ifdef __MINGW32__
861 zUser = getenv("USERNAME");
@@ -866,20 +866,22 @@
866 if( zUser==0 ){
867 zUser = "root";
868 }
869 db_multi_exec(
870 "INSERT INTO user(login, pw, cap, info)"
871 "VALUES(%Q,lower(hex(randomblob(3))),'s','')", zUser
872 );
873 if( !setupUserOnly ){
874 db_multi_exec(
875 "INSERT INTO user(login,pw,cap,info)"
876 " VALUES('anonymous','anonymous','ghknw','Anon');"
877 "INSERT INTO user(login,pw,cap,info)"
878 " VALUES('nobody','','jor','Nobody');"
879 "INSERT INTO user(login,pw,cap,info)"
880 " VALUES('developer','','deipt','Dev');"
881 );
882 }
883 }
884
885 /*
886 ** Fill an empty repository database with the basic information for a
887 ** repository. This function is shared between 'create_repository_cmd'
@@ -905,11 +907,11 @@
907 " VALUES('project-code', lower(hex(randomblob(20))));"
908 );
909 }
910 if( !db_is_global("autosync") ) db_set_int("autosync", 1, 0);
911 if( !db_is_global("localauth") ) db_set_int("localauth", 0, 0);
912 db_create_default_users(0);
913 user_select();
914
915 if (makeInitialVersion){
916 blob_zero(&manifest);
917 blob_appendf(&manifest, "C initial\\sempty\\sbaseline\n");
@@ -935,10 +937,11 @@
937 ** Create a repository for a new project in the file named FILENAME.
938 ** This command is distinct from "clone". The "clone" command makes
939 ** a copy of an existing project. This command starts a new project.
940 */
941 void create_repository_cmd(void){
942 char *zPassword;
943 if( g.argc!=3 ){
944 usage("REPOSITORY-NAME");
945 }
946 db_create_repository(g.argv[2]);
947 db_open_repository(g.argv[2]);
@@ -946,11 +949,12 @@
949 db_begin_transaction();
950 db_initial_setup(1, 1);
951 db_end_transaction(0);
952 printf("project-id: %s\n", db_get("project-code", 0));
953 printf("server-id: %s\n", db_get("server-code", 0));
954 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
955 printf("admin-user: %s (initial password is \"%s\")\n", g.zLogin, zPassword);
956 printf("baseline: %s\n", db_text(0, "SELECT uuid FROM blob"));
957 }
958
959 /*
960 ** SQL functions for debugging.
961

Keyboard Shortcuts

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