From: Thomas Walker Lynch Date: Mon, 11 Mar 2019 14:44:01 +0000 (+0100) Subject: subu -> subudb checkpoint X-Git-Url: https://git.reasoningtechnology.com/style/static/git-favicon.png?a=commitdiff_plain;h=ceea6e7d697546c47f7736b72e7fb60b15c104de;p=subu subu -> subudb checkpoint --- diff --git a/src/2_bin/setuid_root.sh b/src/2_bin/setuid_root.sh new file mode 100755 index 0000000..bea2d00 --- /dev/null +++ b/src/2_bin/setuid_root.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# must be run under sudo +# be sure to cat it before running it, better yet just type this in manually +# + +chown root $1 && \ +chmod u+rsx,u-w,go+rx-s-w $1 + diff --git a/src/3_documents/todo.txt b/src/3_documents/todo.txt deleted file mode 100644 index e712c5a..0000000 --- a/src/3_documents/todo.txt +++ /dev/null @@ -1 +0,0 @@ -1. in subu.lib.c append cascading rmdir failure mess to useradd failure mess diff --git a/src/3_to_do.txt b/src/3_to_do.txt index d5f0e34..eebf52a 100644 --- a/src/3_to_do.txt +++ b/src/3_to_do.txt @@ -1,10 +1,19 @@ -2019-02-05T23:14:40Z morpheus@manorhouse§~/src/subu§ +2019-02-05T23:14:40Z error can cause subu-mk-0 to leave the creating of a subu in an intermediate state. Rather than bailing on some of the errors we need to clean up instead. Perhaps the yet to be written subu-rm program will be resilent enough to do more general cleanup. -2019-02-23T18:56:31Z morpheus@manorhouse§~/subu_land/subu/src§ +2019-02-23T18:56:31Z need to modify subu-init to take a configuration file name argument instead of using a global variabel value. might want to add arguments to other subu commands also + +2019-03-11T13:48:03Z + in subu.lib.c append cascading rmdir failure mess to useradd failure mess + +2019-03-11T13:48:03Z + want to add subu-type to masteru_subu(), I imagine there will be static, + permanent, and temporary subu types. + + diff --git a/src/5_scratch/subu-rel-get.cli.h b/src/5_scratch/subu-rel-get.cli.h new file mode 100644 index 0000000..8b51ff3 --- /dev/null +++ b/src/5_scratch/subu-rel-get.cli.h @@ -0,0 +1,9 @@ +/* This file was automatically generated. Do not edit! */ +#undef INTERFACE +#include +int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username); +#include +#include +#define SUBU_ERR_CONFIG_FILE 8 +extern char Config_File[]; +#define SUBU_ERR_ARG_CNT 1 diff --git a/src/5_scratch/subu-rel-put.cli.h b/src/5_scratch/subu-rel-put.cli.h new file mode 100644 index 0000000..6ce971b --- /dev/null +++ b/src/5_scratch/subu-rel-put.cli.h @@ -0,0 +1,8 @@ +/* This file was automatically generated. Do not edit! */ +#undef INTERFACE +#include +int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); +#include +#include +#define SUBU_ERR_CONFIG_FILE 8 +extern char Config_File[]; diff --git a/src/5_scratch/subu-rel-rm.cli.h b/src/5_scratch/subu-rel-rm.cli.h new file mode 100644 index 0000000..5973cbe --- /dev/null +++ b/src/5_scratch/subu-rel-rm.cli.h @@ -0,0 +1,8 @@ +/* This file was automatically generated. Do not edit! */ +#undef INTERFACE +#include +int subu_rm_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); +#include +#include +#define SUBU_ERR_CONFIG_FILE 8 +extern char Config_File[]; diff --git a/src/5_scratch/subu-rm-0.cli.h b/src/5_scratch/subu-rm-0.cli.h new file mode 100644 index 0000000..56f6cf6 --- /dev/null +++ b/src/5_scratch/subu-rm-0.cli.h @@ -0,0 +1,10 @@ +/* This file was automatically generated. Do not edit! */ +#undef INTERFACE +#include +#include +#include +void subu_err(char *fname,int err,char *mess); +int subu_mk_0(char **mess,sqlite3 *db,char *subuname); +#define SUBU_ERR_CONFIG_FILE 8 +extern char Config_File[]; +#define SUBU_ERR_ARG_CNT 1 diff --git a/src/setuid_root.sh b/src/setuid_root.sh deleted file mode 100755 index bea2d00..0000000 --- a/src/setuid_root.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# must be run under sudo -# be sure to cat it before running it, better yet just type this in manually -# - -chown root $1 && \ -chmod u+rsx,u-w,go+rx-s-w $1 - diff --git a/src/subu-config.lib.c b/src/subu-config.lib.c index f459174..de7bcbb 100644 --- a/src/subu-config.lib.c +++ b/src/subu-config.lib.c @@ -22,14 +22,14 @@ currently a unit converted to base 10 will always fit in a 21 bit buffer. #include //-------------------------------------------------------------------------------- -int schema(sqlite3 *db, uint max_subu_number){ +int subudb_schema(sqlite3 *db, uint max_subu_number){ char max_subu_number_string[32]; uint max_subu_number_string_len = snprintf(max_subu_number_string, 32, "%u", max_subu_number); if( max_subu_number_string_len >= 32 ){ fprintf(stderr, "error exit, max_subu_number too big to deal with\n"); return ERR_CONFIG_FILE; } - char sql1[] = "CREATE TABLE Master_Subu(masteru_name TEXT, subuname TEXT, subu_username TEXT); "; + char sql1[] = "CREATE TABLE Masteru_Subu(masteru_name TEXT, subuname TEXT, subu_username TEXT); "; char sql2[] = "CREATE TABLE Key_Int(key TEXT, value INT); "; char sql3_1[] = "INSERT INTO Key_Int VALUES( 'max_subu_number', "; @@ -94,8 +94,9 @@ int subu_number_set(sqlite3 *db, int n){ //-------------------------------------------------------------------------------- -int subu_put_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){ - char *sql = "INSERT INTO Master_Subu VALUES (?1, ?2, ?3);"; +// put relation into Masteru_Subu table +int subu_Masteru_Subu_put(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){ + char *sql = "INSERT INTO Masteru_Subu VALUES (?1, ?2, ?3);"; sqlite3_stmt *stmt; sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); sqlite3_bind_text(stmt, 1, masteru_name, -1, SQLITE_STATIC); @@ -107,8 +108,8 @@ int subu_put_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char } //-------------------------------------------------------------------------------- -int subu_get_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char **subu_username){ - char *sql = "SELECT subu_username FROM Master_Subu WHERE masteru_name = ?1 AND subuname = ?2;"; +int subu_Masteru_Subu_get(sqlite3 *db, char *masteru_name, char *subuname, char **subu_username){ + char *sql = "SELECT subu_username FROM Masteru_Subu WHERE masteru_name = ?1 AND subuname = ?2;"; size_t sql_len = strlen(sql); sqlite3_stmt *stmt; int rc; @@ -130,8 +131,8 @@ int subu_get_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char } //-------------------------------------------------------------------------------- -int subu_rm_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){ - char *sql = "DELETE FROM Master_Subu WHERE masteru_name = ?1 AND subuname = ?2 AND subu_username = ?3;"; +int subu_Masteru_Subu_rm(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){ + char *sql = "DELETE FROM Masteru_Subu WHERE masteru_name = ?1 AND subuname = ?2 AND subu_username = ?3;"; size_t sql_len = strlen(sql); sqlite3_stmt *stmt; int rc; diff --git a/src/subu-get.cli.c b/src/subu-get.cli.c deleted file mode 100644 index 2729db8..0000000 --- a/src/subu-get.cli.c +++ /dev/null @@ -1,37 +0,0 @@ -/* -puts a relation in the masteru/subu table - -*/ -#include "subu-put.cli.h" -#include -#include - -int main(int argc, char **argv){ - - if(argc != 4){ - fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]); - return 1; - } - char *masteru_name = argv[1]; - char *subuname = argv[2]; - char *subu_username = argv[3]; - - sqlite3 *db; - { - int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); - if( ret != SQLITE_OK ){ - fprintf(stderr, "error exit, could not open configuration file\n"); - return ERR_CONFIG_FILE; - }} - - int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username); - if( ret != SQLITE_DONE ){ - printf("put failed\n"); - return 2; - } - if( sqlite3_close(db) != SQLITE_OK ){ - fprintf(stderr, "error exit, strange, we could not close the configuration file\n"); - return ERR_CONFIG_FILE; - } - return 0; -} diff --git a/src/subu-init.cli.c b/src/subu-init.cli.c index 7e1d808..1dcd7b1 100644 --- a/src/subu-init.cli.c +++ b/src/subu-init.cli.c @@ -11,7 +11,7 @@ int main(){ fprintf(stderr, "error exit, could not open configuration file \"%s\"\n", Config_File); return ERR_CONFIG_FILE; } - if( schema(db, First_Max_Subu_number) != SQLITE_OK ){ + if( subudb_schema(db, First_Max_Subu_number) != SQLITE_OK ){ fprintf(stderr, "error exit, opened config file but could not build scheme\n"); return ERR_CONFIG_FILE; } diff --git a/src/subu-put.cli.c b/src/subu-put.cli.c deleted file mode 100644 index 2729db8..0000000 --- a/src/subu-put.cli.c +++ /dev/null @@ -1,37 +0,0 @@ -/* -puts a relation in the masteru/subu table - -*/ -#include "subu-put.cli.h" -#include -#include - -int main(int argc, char **argv){ - - if(argc != 4){ - fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]); - return 1; - } - char *masteru_name = argv[1]; - char *subuname = argv[2]; - char *subu_username = argv[3]; - - sqlite3 *db; - { - int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); - if( ret != SQLITE_OK ){ - fprintf(stderr, "error exit, could not open configuration file\n"); - return ERR_CONFIG_FILE; - }} - - int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username); - if( ret != SQLITE_DONE ){ - printf("put failed\n"); - return 2; - } - if( sqlite3_close(db) != SQLITE_OK ){ - fprintf(stderr, "error exit, strange, we could not close the configuration file\n"); - return ERR_CONFIG_FILE; - } - return 0; -} diff --git a/src/subu-rel-get.cli.c b/src/subu-rel-get.cli.c new file mode 100644 index 0000000..737080c --- /dev/null +++ b/src/subu-rel-get.cli.c @@ -0,0 +1,42 @@ +/* +get the username from the config file +for testing subu_Masteru_Subu_get_user + +*/ +#include "subu-rel-get.cli.h" +#include +#include + +int main(int argc, char **argv){ + + if(argc != 3){ + fprintf(stderr, "usage: %s masteru_name subuname\n", argv[0]); + return SUBU_ERR_ARG_CNT; + } + + int rc; + sqlite3 *db; + rc = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); + if( rc != SQLITE_OK ){ + fprintf(stderr, "could not open configuration file \"%s\"\n", Config_File); + return SUBU_ERR_CONFIG_FILE; + } + + char *masteru_name = argv[1]; + char *subuname = argv[2]; + char *subu_username; + + int ret = subu_Masteru_Subu_get(db, masteru_name, subuname, &subu_username); + if( ret != SQLITE_DONE ){ + fprintf(stderr, "subu_Masteru_Subu_get indicates failure by returning %d\n",ret); + fprintf(stderr, "sqlite3 issues message, %s\n", sqlite3_errmsg(db)); + return SUBU_ERR_CONFIG_FILE; + } + ret = sqlite3_close(db) + if( ret != SQLITE_OK ){ + fprintf(stderr, "sqlite3_close(db) indicates failure by returning %d\n",ret); + fprintf(stderr, "sqlite3 issues message: %s\n", sqlite3_errmsg(db)); + return SUBU_ERR_CONFIG_FILE; + } + return 0; +} diff --git a/src/subu-rel-put.cli.c b/src/subu-rel-put.cli.c new file mode 100644 index 0000000..c930465 --- /dev/null +++ b/src/subu-rel-put.cli.c @@ -0,0 +1,41 @@ +/* +puts a relation in the masteru/subu table + +*/ +#include "subu-rel-put.cli.h" +#include +#include + +int main(int argc, char **argv){ + + if(argc != 4){ + fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]); + return 1; + } + char *masteru_name = argv[1]; + char *subuname = argv[2]; + char *subu_username = argv[3]; + + sqlite3 *db; + { + int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); + if( ret != SQLITE_OK ){ + fprintf(stderr, "could not open configuration file \"%s\"\n", Config_File); + return SUBU_ERR_CONFIG_FILE; + }} + + int ret = subu_Masteru_Subu_put(db, masteru_name, subuname, subu_username); + if( ret != SQLITE_DONE ){ + fprintf(stderr, "subu_Masteru_Subu_put indicates failure by returning %d\n",ret); + fprintf(stderr, "sqlite3 issues message, %s\n", sqlite3_errmsg(db)); + printf("put failed\n"); + return 2; + } + ret = sqlite3_close(db) + if( ret != SQLITE_OK ){ + fprintf(stderr, "sqlite3_close(db) indicates failure by returning %d\n",ret); + fprintf(stderr, "sqlite3 issues message: %s\n", sqlite3_errmsg(db)); + return SUBU_ERR_CONFIG_FILE; + } + return 0; +} diff --git a/src/subu-rel-rm.cli.c b/src/subu-rel-rm.cli.c new file mode 100644 index 0000000..06eb4e5 --- /dev/null +++ b/src/subu-rel-rm.cli.c @@ -0,0 +1,41 @@ +/* +puts a relation in the masteru/subu table + +*/ +#include "subu-rel-rm.cli.h" +#include +#include + +int main(int argc, char **argv){ + + if(argc != 4){ + fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]); + return 1; + } + char *masteru_name = argv[1]; + char *subuname = argv[2]; + char *subu_username = argv[3]; + + sqlite3 *db; + { + int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); + if( ret != SQLITE_OK ){ + fprintf(stderr, "could not open configuration file \"%s\"\n", Config_File); + return SUBU_ERR_CONFIG_FILE; + }} + + int ret = subu_Masteru_Subu_rm(db, masteru_name, subuname, subu_username); + if( ret != SQLITE_DONE ){ + fprintf(stderr, "subu_Masteru_Subu_rm indicates failure by returning %d\n",ret); + fprintf(stderr, "sqlite3 issues message, %s\n", sqlite3_errmsg(db)); + printf("put failed\n"); + return 2; + } + ret = sqlite3_close(db) + if( ret != SQLITE_OK ){ + fprintf(stderr, "sqlite3_close(db) indicates failure by returning %d\n",ret); + fprintf(stderr, "sqlite3 issues message: %s\n", sqlite3_errmsg(db)); + return SUBU_ERR_CONFIG_FILE; + } + return 0; +} diff --git a/src/subu-rm-0.cli.c b/src/subu-rm-0.cli.c new file mode 100644 index 0000000..93c79d3 --- /dev/null +++ b/src/subu-rm-0.cli.c @@ -0,0 +1,32 @@ +/* + subu-mk-0 command + +*/ +#include "subu-mk-0.cli.h" +#include +#include + +int main(int argc, char **argv){ + char *command = argv[0]; + if( argc != 2 ){ + fprintf(stderr, "usage: %s subu", command); + return SUBU_ERR_ARG_CNT; + } + char *subuname = argv[1]; + + sqlite3 *db; + { + int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); + if( ret != SQLITE_OK ){ + fprintf(stderr, "error exit, could not open configuration file \"%s\"\n", Config_File); + return SUBU_ERR_CONFIG_FILE; + }} + + { + char *mess; + int ret = subu_mk_0(&mess, db, subuname); + subu_err("subu_mk_0", ret, mess); + free(mess); + return ret; + } +} diff --git a/src/subu-rm.cli.c b/src/subu-rm.cli.c deleted file mode 100644 index 2729db8..0000000 --- a/src/subu-rm.cli.c +++ /dev/null @@ -1,37 +0,0 @@ -/* -puts a relation in the masteru/subu table - -*/ -#include "subu-put.cli.h" -#include -#include - -int main(int argc, char **argv){ - - if(argc != 4){ - fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]); - return 1; - } - char *masteru_name = argv[1]; - char *subuname = argv[2]; - char *subu_username = argv[3]; - - sqlite3 *db; - { - int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL); - if( ret != SQLITE_OK ){ - fprintf(stderr, "error exit, could not open configuration file\n"); - return ERR_CONFIG_FILE; - }} - - int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username); - if( ret != SQLITE_DONE ){ - printf("put failed\n"); - return 2; - } - if( sqlite3_close(db) != SQLITE_OK ){ - fprintf(stderr, "error exit, strange, we could not close the configuration file\n"); - return ERR_CONFIG_FILE; - } - return 0; -} diff --git a/src/subu.lib.c b/src/subu.lib.c index 03c248b..e20fac3 100644 --- a/src/subu.lib.c +++ b/src/subu.lib.c @@ -393,7 +393,7 @@ int subu_mk_0(char **mess, sqlite3 *db, char *subuname){ dbprintf("setting the masteru_name, subuname, subu_username relation\n"); #endif { - int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username); + int ret = subu_Masteru_Subu_put(db, masteru_name, subuname, subu_username); if( ret != SQLITE_DONE ){ if(mess)*mess = strdup("insert of masteru subu relation failed"); RETURN(SUBU_ERR_CONFIG_FILE); @@ -458,7 +458,7 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){ dbprintf("looking up subu_username given masteru_name/subuname\n"); #endif { - int sgret = subu_get_masteru_subu(db, masteru_name, subuname, &subu_username); + int sgret = subu_Masteru_Subu_get(db, masteru_name, subuname, &subu_username); if( sgret != SQLITE_DONE ){ if(mess) *mess = strdup("subu requested for removal not found under this masteru in config file"); ret = SUBU_ERR_CONFIG_SUBU_NOT_FOUND; @@ -474,7 +474,7 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){ dbprintf("remove the masteru_name, subuname, subu_username relation\n"); #endif { - int ret = subu_rm_masteru_subu(db, masteru_name, subuname, subu_username); + int ret = subu_Masteru_Subu_rm(db, masteru_name, subuname, subu_username); if( ret != SQLITE_DONE ){ if(mess)*mess = strdup("removal of masteru subu relation failed"); RETURN(SUBU_ERR_CONFIG_FILE);