preparations for user list in memory
[paraslash.git] / server.h
index 0ab0197df1bd66ed9db6b7c56b6eca5e64c46cee..0077338bf47e1162ff121c51337705eca607c4f7 100644 (file)
--- a/server.h
+++ b/server.h
@@ -19,7 +19,8 @@
 /** \file server.h common server data structures */
 
 #include "para.h"
-
+#include "list.h"
+#include <openssl/pem.h>
 
 /** size of the selector_info and audio_file info strings of struct misc_meta_data */
 #define MMD_INFO_SIZE 16384
@@ -38,11 +39,22 @@ enum {DB_READ = 1, DB_WRITE = 2, AFS_READ = 4, AFS_WRITE = 8};
  * data needed to authenticate the user
  */
 struct user{
-/** the username */
+       /** the username */
        char name[MAXLINE];
-/** full path to the public RSA key */
+       /** full path to the public RSA key */
        char pubkey_file[_POSIX_PATH_MAX];
-/** the privileges of this user */
+       /** the privileges of this user */
+       unsigned int perms;
+};
+
+struct _user {
+       /** the position of this user in the list of users */
+       struct list_head node;
+       /** the username */
+       char *name;
+       /**  the public RSA key */
+       RSA *rsa;
+       /** the privileges that this user has */
        unsigned int perms;
 };
 
@@ -51,17 +63,17 @@ struct user{
  */
 struct server_command {
 /** the name of the command */
-       char *name;
+       const char *name;
 /** pointer to the function that handles the command */
        int (*handler)(int, int, char **);
 /** the privileges a user must have to execute this command */
        unsigned int perms;
 /** one-line description of the command */
-       char *description;
+       const char *description;
 /** summary of the command line options */
-       char *synopsis;
+       const char *synopsis;
 /** the long help text */
-       char *help;
+       const char *help;
 };
 
 /** holds the arguments for the para_server's sender command */
@@ -141,15 +153,17 @@ struct misc_meta_data{
        pid_t server_pid;
 /** a string that gets filled in by the current audio file selector */
        char selector_info[MMD_INFO_SIZE];
-/** the number if the current database tool */
+/** the number if the current audio file selector */
        int selector_num;
-/** commands set this to non-zero to request a database tool change */
-       int dbt_change;
+/** commands set this to non-zero to change the current selector */
+       int selector_change;
 /** used by the sender command */
        struct sender_command_data sender_cmd_data;
 };
 
+extern struct server_args_info conf;
 
 int handle_connect(int fd, struct sockaddr_in *addr);
+int _get_user(struct _user *user);
 void mmd_unlock(void);
 void mmd_lock(void);