]> Git repositories of Nishi - rbuild.git/commitdiff
adding config parser
authorNishi <nishi@nishi.boats>
Fri, 11 Oct 2024 16:38:06 +0000 (16:38 +0000)
committerNishi <nishi@nishi.boats>
Fri, 11 Oct 2024 16:38:06 +0000 (16:38 +0000)
git-svn-id: file:///raid/svn-personal/rbuild/trunk@7 c68d3453-7f82-0740-9748-1d72386a946b

Platform/generic.mk
Platform/netbsd.mk [new file with mode: 0644]
Platform/win32.mk
Platform/win64.mk
Server/Makefile
Server/auth.c [new file with mode: 0644]
Server/config.c [new file with mode: 0644]
Server/main.c
Server/rbs_auth.h [new file with mode: 0644]
Server/rbs_config.h [new file with mode: 0644]
Server/server.c

index d4470ef6d401d282c1778d7a57c6805c1ddb910e..9f8a832a552bf0c82bb42bf661bc45daebc472b2 100644 (file)
@@ -2,7 +2,7 @@
 
 CC = cc
 AR = ar
-CFLAGS = -I $(PWD)/Common
+CFLAGS = -I $(PWD)/Common -DHAS_PLAIN_AUTH -DHAS_NONE_AUTH
 LDFLAGS =
 LIBS =
 EXEC =
diff --git a/Platform/netbsd.mk b/Platform/netbsd.mk
new file mode 100644 (file)
index 0000000..79a0c95
--- /dev/null
@@ -0,0 +1,8 @@
+# $Id$
+
+CC = cc
+AR = ar
+CFLAGS = -I $(PWD)/Common -DHAS_PLAIN_AUTH -DHAS_NONE_AUTH -DHAS_PAM_AUTH -DHAS_CRYPT_AUTH
+LDFLAGS =
+LIBS = -lcrypt -lpam
+EXEC =
index 629662a46c2c20051c580b188f1f0e9ddc2229c4..879febd05f437af8e337fc1589d936fabf61e756 100644 (file)
@@ -2,7 +2,7 @@
 
 CC = i686-w64-mingw32-gcc
 AR = i686-w64-mingw32-ar
-CFLAGS = -I $(PWD)/Common
+CFLAGS = -I $(PWD)/Common -DHAS_PLAIN_AUTH -DHAS_NONE_AUTH
 LDFLAGS =
 LIBS = -lws2_32
 EXEC = .exe
index 2e9a91dfb1ce2dfe4208f6927c404ded7302173d..6df6dbd7a8ed707dc1f6b06144f8281a3df41acf 100644 (file)
@@ -2,7 +2,7 @@
 
 CC = x86_64-w64-mingw32-gcc
 AR = x86_64-w64-mingw32-ar
-CFLAGS = -I $(PWD)/Common
+CFLAGS = -I $(PWD)/Common -DHAS_PLAIN_AUTH -DHAS_NONE_AUTH
 LDFLAGS =
 LIBS = -lws2_32
 EXEC = .exe
index 10de3836080e09d3a33cbf27a50e038d7407f1c6..807a9f7942e4735478193b2c94a8bba822a8a88b 100644 (file)
@@ -5,7 +5,7 @@ include $(PWD)/Platform/$(PLATFORM).mk
 .PHONY: all clean
 .SUFFIXES: .c .o
 
-OBJS = main.o server.o
+OBJS = main.o server.o auth.o config.o
 OBJS += ../Common/common.a
 
 all: rbuild-server$(EXEC)
diff --git a/Server/auth.c b/Server/auth.c
new file mode 100644 (file)
index 0000000..c196dcb
--- /dev/null
@@ -0,0 +1,39 @@
+/* $Id$ */
+
+#include "rbs_auth.h"
+
+#ifdef HAS_PAM_AUTH
+#include <security/pam_appl.h>
+#endif
+
+const char* rbs_pam_auth =
+#ifdef HAS_PAM_AUTH
+"available"
+#else
+"not available"
+#endif
+;
+
+const char* rbs_plain_auth =
+#ifdef HAS_PLAIN_AUTH
+"available"
+#else
+"not available"
+#endif
+;
+
+const char* rbs_crypt_auth =
+#ifdef HAS_CRYPT_AUTH
+"available"
+#else
+"not available"
+#endif
+;
+
+const char* rbs_none_auth =
+#ifdef HAS_NONE_AUTH
+"available"
+#else
+"not available"
+#endif
+;
diff --git a/Server/config.c b/Server/config.c
new file mode 100644 (file)
index 0000000..cbf772c
--- /dev/null
@@ -0,0 +1,23 @@
+/* $Id$ */
+
+#include "rbs_config.h"
+
+#include <stdio.h>
+
+#include <cm_bool.h>
+
+extern char* rbs_config;
+
+void rbs_config_init(void){
+}
+
+CMBOOL rbs_config_parse(void){
+       FILE* f = fopen(rbs_config, "r");
+       if(f != NULL){
+               fclose(f);
+               return CMTRUE;
+       }else{
+               fprintf(stderr, "Could not open the config\n");
+               return CMFALSE;
+       }
+}
index 50ce8942cf7e1eec66d9ae8323ddf6074c0bc07c..0a38e6a747b0807bc7c4af3d0ede14ca448c36d4 100644 (file)
@@ -1,14 +1,23 @@
 /* $Id$ */
 
+#include "../config.h"
+
 #include <stdio.h>
 #include <string.h>
 
 #include "rbs_server.h"
+#include "rbs_config.h"
 
 #include <cm_bool.h>
 
 extern CMBOOL run_inetd;
 
+char* rbs_config = NULL;
+extern const char* rbs_none_auth;
+extern const char* rbs_crypt_auth;
+extern const char* rbs_plain_auth;
+extern const char* rbs_pam_auth;
+
 int main(int argc, char** argv){
        int i;
        for(i = 1; i < argc; i++){
@@ -21,6 +30,15 @@ int main(int argc, char** argv){
                                        fprintf(stderr, "Missing argument\n");
                                        return 1;
                                }
+                               rbs_config = argv[i];
+                       }else if(strcmp(argv[i], "--version") == 0 || strcmp(argv[i], "-V") == 0){
+                               printf("rbuild-server version %s\n", RBUILD_VERSION);
+                               printf("Authentication methods:\n");
+                               printf("\tNone  : %s\n", rbs_none_auth);
+                               printf("\tCrypt : %s\n", rbs_crypt_auth);
+                               printf("\tPlain : %s\n", rbs_plain_auth);
+                               printf("\tPAM   : %s\n", rbs_pam_auth);
+                               return 0;
                        }else{
                                fprintf(stderr, "Unknown option: %s\n", argv[i]);
                                return 1;
@@ -28,6 +46,15 @@ int main(int argc, char** argv){
                }else{
                }
        }
+       if(rbs_config == NULL){
+               fprintf(stderr, "Config is required\n");
+               return 1;
+       }
+       rbs_config_init();
+       if(!rbs_config_parse()){
+               fprintf(stderr, "Failed to parse config\n");
+               return 1;
+       }
        if(!rbs_server_init()){
                fprintf(stderr, "Failed to initialize\n");
                return 1;
diff --git a/Server/rbs_auth.h b/Server/rbs_auth.h
new file mode 100644 (file)
index 0000000..e811914
--- /dev/null
@@ -0,0 +1,6 @@
+/* $Id$ */
+
+#ifndef __RBS_AUTH_H__
+#define __RBS_AUTH_H__
+
+#endif
diff --git a/Server/rbs_config.h b/Server/rbs_config.h
new file mode 100644 (file)
index 0000000..538601b
--- /dev/null
@@ -0,0 +1,11 @@
+/* $Id$ */
+
+#ifndef __RBS_CONFIG_H__
+#define __RBS_CONFIG_H__
+
+#include <cm_bool.h>
+
+void rbs_config_init(void);
+CMBOOL rbs_config_parse(void);
+
+#endif
index 8a5646155d14a64d71bc198fd90b24dcc9e6189a..6ce96c45d7b1333ac714f2c56cc8fa2d8e467719 100644 (file)
@@ -1,6 +1,9 @@
 /* $Id$ */
 
+#include "../config.h"
+
 #include "rbs_server.h"
+#include "rbs_auth.h"
 
 #include <stdlib.h>
 #include <stdio.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <netinet/tcp.h>
+#include <sys/select.h>
 #endif
 
+#include <cm_string.h>
 #include <cm_bool.h>
 
+char* ready;
 CMBOOL run_inetd = CMFALSE;
 int server_socket;
 int port = 7980;
@@ -87,7 +93,30 @@ void rbs_server_handler(void* sockptr){
                sock = *(int*)sockptr;
                free(sockptr);
        }
-       rbs_write(sock, "Hello\n", 6);
+       rbs_write(sock, "READY ", 6);
+       rbs_write(sock, ready, strlen(ready));
+       rbs_write(sock, "\n", 1);
+
+       while(1){
+               fd_set rfds;
+               struct timeval tv;
+               int ret;
+
+               FD_ZERO(&rfds);
+               FD_SET(sock, &rfds);
+               tv.tv_sec = 5;
+               tv.tv_usec = 0;
+
+               ret = select(1, &rfds, NULL, NULL, &tv);
+
+               if(ret < 0){
+                       break;
+               }else if(ret == 0){
+                       rbs_write(sock, "TIMEOUT\n", 8);
+                       break;
+               }else{
+               }
+       }
 
        rbs_close(sock);
 #ifdef WINSOCK
@@ -99,6 +128,7 @@ CMBOOL rbs_server_loop(void){
        if(run_inetd){
                rbs_server_handler(NULL);
        }else{
+               ready = cm_strdup(RBUILD_VERSION);
 #ifndef WINSOCK
                signal(SIGCHLD, SIG_IGN);
 #endif