/* $Id: modern.c 6 2024-08-21 00:44:17Z nishi $ */ #include "rv_query.h" #include "rv_util.h" #include "rv_version.h" #include "rv_auth.h" #include "rv_db.h" #include "../../config.h" #include #include extern char* buffer; void add_data(char** data, const char* txt); void render_stuff(); char* title = NULL; char* desc = NULL; char* page = NULL; extern char* user; void render_page(void) { rv_load_query('Q'); char* query = rv_get_query("page"); if(query == NULL) query = "welcome"; if(strcmp(query, "welcome") == 0) { title = rv_strdup("Welcome"); desc = rv_strdup("Welcome to " INSTANCE_NAME "."); page = rv_strcat3("Welcome to " INSTANCE_NAME ".
This instance is running RepoView version ", rv_get_version(), "."); } else if(strcmp(query, "login") == 0) { title = rv_strdup("Login"); desc = rv_strdup("You can log in to your account here."); page = rv_strdup(""); add_data(&page, "
\n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, " \n"); add_data(&page, "
Username\n"); add_data(&page, " \n"); add_data(&page, "
Password\n"); add_data(&page, " \n"); add_data(&page, "
\n"); add_data(&page, " \n"); add_data(&page, "
\n"); } else if(strcmp(query, "sendlogin") == 0) { title = rv_strdup("Login Result"); page = rv_strdup(""); rv_load_query('P'); if(rv_get_query("username") == NULL || rv_get_query("password") == NULL) { add_data(&page, "Invalid form.\n"); } else { if(rv_has_user(rv_get_query("username"))) { if(rv_check_password(rv_get_query("username"), rv_get_query("password"))) { if(user != NULL) free(user); user = rv_strdup(rv_get_query("username")); add_data(&page, "Welcome back.\n"); rv_save_login(rv_get_query("username")); } else { add_data(&page, "Invalid password."); } } else { add_data(&page, "User does not exist."); } } } else if(strcmp(query, "mypage") == 0) { title = rv_strdup("My Page"); desc = rv_strdup("You manage your information here."); if(user == NULL) { page = rv_strdup("It looks like you are not logged in.
Want to log in?\n"); } } if(title == NULL) title = rv_strdup(""); if(desc == NULL) desc = rv_strdup(""); if(page == NULL) page = rv_strdup(""); render_stuff(); free(page); free(desc); free(title); } char* escape(const char* str) { char* r = malloc(1); r[0] = 0; char cbuf[2]; cbuf[1] = 0; int i; for(i = 0; str[i] != 0; i++) { if(str[i] == '<') { char* tmp = r; r = rv_strcat(tmp, "<"); free(tmp); } else if(str[i] == '>') { char* tmp = r; r = rv_strcat(tmp, ">"); free(tmp); } else { cbuf[0] = str[i]; char* tmp = r; r = rv_strcat(tmp, cbuf); free(tmp); } } return r; } void render_stuff(void) { char* escaped; add_data(&buffer, "\n"); add_data(&buffer, "\n"); add_data(&buffer, " \n"); add_data(&buffer, " \n"); add_data(&buffer, " "); add_data(&buffer, INSTANCE_NAME); add_data(&buffer, " - "); add_data(&buffer, title); add_data(&buffer, "\n"); add_data(&buffer, " \n"); add_data(&buffer, " \n"); add_data(&buffer, " \n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, " Home\n"); add_data(&buffer, "
\n"); if(user == NULL) { add_data(&buffer, "
\n"); add_data(&buffer, " Login\n"); add_data(&buffer, "
\n"); } if(user != NULL) { add_data(&buffer, "
You have logged in as "); add_data(&buffer, user); add_data(&buffer, "
"); } add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "

"); add_data(&buffer, title); add_data(&buffer, "

\n"); add_data(&buffer, "

\n"); add_data(&buffer, desc); add_data(&buffer, "

\n"); add_data(&buffer, "
\n"); add_data(&buffer, " \"logo\"\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "

Page Menu

\n"); add_data(&buffer, "
    \n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, page); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, " Top\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, " "); escaped = escape(INSTANCE_ADMIN); add_data(&buffer, escaped); free(escaped); add_data(&buffer, "\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, "
\n"); add_data(&buffer, " \n"); add_data(&buffer, "\n"); if(user != NULL) free(user); }