]> Git repositories of Nishi - repoview.git/commitdiff
adding repo viewer... soon
authorNishi <nishi@nishi.boats>
Wed, 21 Aug 2024 02:13:48 +0000 (02:13 +0000)
committerNishi <nishi@nishi.boats>
Wed, 21 Aug 2024 02:13:48 +0000 (02:13 +0000)
git-svn-id: file:///raid/svn-personal/repoview/trunk@10 7e8b2a19-8934-dd40-8cb3-db22cdd5a80f

CGI/Makefile
CGI/repo.c [new file with mode: 0644]
CGI/rv_repo.h [new file with mode: 0644]
CGI/rv_util.h
CGI/theme/modern.c
CGI/util.c
check.c
config.h.tmpl

index f64fc555839c472c0f4e4136c0388f773f1e1569..2792f65b58fc43c0e16b7595a484bb359439ff1e 100644 (file)
@@ -5,7 +5,7 @@ include $(PWD)/Platform/$(PLATFORM).mk
 .PHONY: all clean
 .SUFFIXES: .c .o
 
-OBJS = main.o sanity.o version.o util.o query.o page.o sha512.o $(EXTOBJS)
+OBJS = main.o sanity.o version.o util.o query.o page.o sha512.o repo.o $(EXTOBJS)
 
 all: repoview.cgi
 
diff --git a/CGI/repo.c b/CGI/repo.c
new file mode 100644 (file)
index 0000000..96e70fd
--- /dev/null
@@ -0,0 +1,3 @@
+/* $Id$ */
+
+#include "rv_repo.h"
diff --git a/CGI/rv_repo.h b/CGI/rv_repo.h
new file mode 100644 (file)
index 0000000..e548190
--- /dev/null
@@ -0,0 +1,6 @@
+/* $Id$ */
+
+#ifndef __RV_REPO_H__
+#define __RV_REPO_H__
+
+#endif
index 98ce5a549d68e9fa45f35c943c6c233dfc8155af..0c2939a64106121ef37139cab6966e202e4a73d9 100644 (file)
@@ -15,5 +15,6 @@ char* rv_strdup(const char* str);
 char* rv_url_decode(const char* str);
 void rv_error_http(void);
 char* rv_new_token(const char* username);
+char* rv_construct_repouser(const char* reponame, const char* username);
 
 #endif
index d3670bd17f20f9d3a3a2f173f68dd2745bf0ad4f..3272419edceaa08b8933c8d28a355d859add697c 100644 (file)
@@ -20,6 +20,7 @@ void render_stuff();
 char* title = NULL;
 char* desc = NULL;
 char* page = NULL;
+char* nav = NULL;
 extern char* user;
 
 void render_page(void) {
@@ -102,6 +103,26 @@ void render_page(void) {
                        page = rv_strdup("It looks like you are not logged in.<br>Want to <a href=\"");
                        add_data(&page, INSTANCE_ROOT);
                        add_data(&page, "/?page=login\">log in</a>?\n");
+               } else {
+                       nav = rv_strdup("");
+                       add_data(&nav, "<li><a href=\"#createrepo\">Create a repository</a></li>\n");
+                       add_data(&nav, "<li><a href=\"#repolist\">Repository List</a></li>\n");
+                       page = rv_strdup("");
+                       add_data(&page, "<h2 id=\"createrepo\">Create a repository</h2>\n");
+                       add_data(&page, "<form action=\"");
+                       add_data(&page, INSTANCE_ROOT);
+                       add_data(&page, "/?page=createrepo\" method=\"POST\">\n");
+                       add_data(&page, "       <table border=\"0\">\n");
+                       add_data(&page, "               <tr>\n");
+                       add_data(&page, "                       <th>Repository name</th>\n");
+                       add_data(&page, "                       <td>\n");
+                       add_data(&page, "                               <input name=\"name\">\n");
+                       add_data(&page, "                       </td>\n");
+                       add_data(&page, "                       <td><input type=\"submit\" value=\"Create\"></td>\n");
+                       add_data(&page, "               </tr>\n");
+                       add_data(&page, "       </table>\n");
+                       add_data(&page, "</form>\n");
+                       add_data(&page, "<h2 id=\"repolist\">Repository List</h2>\n");
                }
        } else if(strcmp(query, "logout") == 0) {
                title = rv_strdup("Logout");
@@ -124,10 +145,12 @@ void render_page(void) {
        if(title == NULL) title = rv_strdup("");
        if(desc == NULL) desc = rv_strdup("");
        if(page == NULL) page = rv_strdup("");
+       if(nav == NULL) nav = rv_strdup("");
        render_stuff();
        free(page);
        free(desc);
        free(title);
+       free(nav);
 }
 
 char* escape(const char* str) {
@@ -324,6 +347,7 @@ void render_stuff(void) {
        add_data(&buffer, "                     <div id=\"pageindex\">\n");
        add_data(&buffer, "                             <h3>Page Menu</h3>\n");
        add_data(&buffer, "                             <ul>\n");
+       add_data(&buffer, nav);
        add_data(&buffer, "                             </ul>\n");
        add_data(&buffer, "                     </div>\n");
        add_data(&buffer, "                     <div id=\"pagecontent\">\n");
index ef8d199581400cfcf4bd06d5f9b61359f0f87086..4c84ecbc3e4f327a7e1be7d61f3da052022afb6b 100644 (file)
@@ -75,6 +75,13 @@ char* rv_url_decode(const char* str) {
        return r;
 }
 
+char* rv_construct_repouser(const char* reponame, const char* username) {
+       char cbuf[2];
+       cbuf[0] = REPO_USER_DELIM;
+       cbuf[1] = 0;
+       return rv_strcat3(reponame, cbuf, username);
+}
+
 char* rv_new_token(const char* username) {
        const char tokenstr[] = "0123456789abcdefghijklmnopqrstuvwxyz";
        char* token = malloc(17);
diff --git a/check.c b/check.c
index 81db51ffd68f2503d5e97ac3d678cae912fcfa73..3a6d342fa83b8300d0f57c93d3e7502ec43eba07 100644 (file)
--- a/check.c
+++ b/check.c
@@ -82,6 +82,10 @@ int check_files(void) {
 #ifndef APACHE_AUTHZ
        fprintf(stderr, "Apache authz file is not set.\n");
        st = 1;
+#endif
+#ifndef REPO_USER_DELIM
+       fprintf(stderr, "Repo/User delimeter is not set.\n");
+       st = 1;
 #endif
        return st;
 }
index 76840b48e4f58d571807a820de2203ed1944c800..9c2d89c6c20eeec25b091a65084b17a82312461b 100644 (file)
@@ -25,6 +25,9 @@
 /* Navbar repeat, for the modern theme. */
 #define INSTANCE_REPEAT        "resize-x"
 
+/* Repository/User delimeter. This character will be unusable in the username/repository name. */
+#define REPO_USER_DELIM '@'
+
 /* Theme. */
 #define USE_MODERN