Refactor a bunch of stuff for cgi fork
[blerg.git] / common / auth.c
diff --git a/common/auth.c b/common/auth.c
new file mode 100644 (file)
index 0000000..0a3a8f5
--- /dev/null
@@ -0,0 +1,51 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include "config.h"
+#include "auth.h"
+
+int auth_set_password(const char *username, const char *password) {
+       char filename[512];
+       int fd;
+
+       if (!blerg_exists(username))
+               return 0;
+
+       snprintf(filename, 512, "%s/%s/password", DATA_PATH, username);
+       fd = open(filename, O_WRONLY | O_CREAT, 0600);
+       write(fd, password, strlen(password));
+       close(fd);
+       
+       return 1;
+}
+
+int auth_get_password(const char *username, char *password) {
+       char filename[512];
+       int fd;
+       int len = 0;
+
+       sprintf(filename, "%s/%s/password", DATA_PATH, username);
+       fd = open(filename, O_RDONLY);
+       if (fd == -1)
+               return 0;
+       len = read(fd, password, 32);
+       close(fd);
+
+       password[len] = 0;
+
+       return 1;
+}
+
+int auth_check_password(const char *username, const char *password) {
+       char epw[33];
+
+       if (auth_get_password(username, epw) == 0)
+               return 0;
+
+       if (strncmp(password, epw, 32) == 0)
+               return 1;
+       else
+               return 0;
+}