]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - command.c
configure.ac: fix checks for para_krell
[paraslash.git] / command.c
index 5da5833ba3fb953d7ccdfe521ddc5f14632fb4f8..474e1bba3edff564dea3c8eb50ded5dc9eff88be 100644 (file)
--- a/command.c
+++ b/command.c
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (C) 1997-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2007 Andre Noll <maan@systemlinux.org>
  *
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
  *
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
 #include "server.cmdline.h"
 #include "db.h"
 #include "server.h"
 #include "server.cmdline.h"
 #include "db.h"
 #include "server.h"
-#include "afs.h"
+#include "vss.h"
 #include "send.h"
 #include "rc4.h"
 #include <openssl/rc4.h>
 #include "send.h"
 #include "rc4.h"
 #include <openssl/rc4.h>
@@ -79,13 +79,13 @@ static struct server_command cmd_struct[] = {
 {
 .name = "ff",
 .handler = com_ff,
 {
 .name = "ff",
 .handler = com_ff,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "jmp amount of time forwards or backwards "
        "in current audio file",
 .synopsis = "ff n[-]",
 .help =
 
 .description = "jmp amount of time forwards or backwards "
        "in current audio file",
 .synopsis = "ff n[-]",
 .help =
 
-"\tSet the 'R' (reposition request) bit of the afs status flags\n"
+"\tSet the 'R' (reposition request) bit of the vss status flags\n"
 "\tand enqueue a request to jump n seconds forwards or backwards\n"
 "\tin the current audio file.\n"
 "\n"
 "\tand enqueue a request to jump n seconds forwards or backwards\n"
 "\tin the current audio file.\n"
 "\n"
@@ -114,7 +114,7 @@ static struct server_command cmd_struct[] = {
 {
 .name = "hup",
 .handler = com_hup,
 {
 .name = "hup",
 .handler = com_hup,
-.perms = AFS_WRITE,
+.perms = VSS_WRITE,
 .description = "force reload of config file and log file",
 .synopsis = "hup",
 .help =
 .description = "force reload of config file and log file",
 .synopsis = "hup",
 .help =
@@ -127,12 +127,12 @@ static struct server_command cmd_struct[] = {
 {
 .name = "jmp",
 .handler = com_jmp,
 {
 .name = "jmp",
 .handler = com_jmp,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "jmp to given position in current audio file",
 .synopsis = "jmp [n]",
 .help =
 
 .description = "jmp to given position in current audio file",
 .synopsis = "jmp [n]",
 .help =
 
-"\tSet the 'R' (reposition request) bit of the afs status flags\n"
+"\tSet the 'R' (reposition request) bit of the vss status flags\n"
 "\tand enqueue a request to jump to n% of the current audio file,\n"
 "\twhere 0 <= n <= 100.\n"
 
 "\tand enqueue a request to jump to n% of the current audio file,\n"
 "\twhere 0 <= n <= 100.\n"
 
@@ -141,12 +141,12 @@ static struct server_command cmd_struct[] = {
 {
 .name = "next",
 .handler = com_next,
 {
 .name = "next",
 .handler = com_next,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "skip rest of current audio file",
 .synopsis = "next",
 .help =
 
 .description = "skip rest of current audio file",
 .synopsis = "next",
 .help =
 
-"\tSet the 'N' (next audio file) bit of the afs status flags. When\n"
+"\tSet the 'N' (next audio file) bit of the vss status flags. When\n"
 "\tplaying, change audio file immediately. Equivalent to stop\n"
 "\tif paused, NOP if stopped.\n"
 
 "\tplaying, change audio file immediately. Equivalent to stop\n"
 "\tif paused, NOP if stopped.\n"
 
@@ -156,12 +156,12 @@ static struct server_command cmd_struct[] = {
 {
 .name = "nomore",
 .handler = com_nomore,
 {
 .name = "nomore",
 .handler = com_nomore,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "stop playing after current audio file",
 .synopsis = "nomore",
 .help =
 
 .description = "stop playing after current audio file",
 .synopsis = "nomore",
 .help =
 
-"Set the 'O' (no more) bit of the afs status flags. This instructs\n"
+"Set the 'O' (no more) bit of the vss status flags. This instructs\n"
 "para_server to clear the 'P' (playing) bit as soon as it encounters\n"
 "the 'N' (next audio file) bit being set.\n"
 "\n"
 "para_server to clear the 'P' (playing) bit as soon as it encounters\n"
 "the 'N' (next audio file) bit being set.\n"
 "\n"
@@ -173,24 +173,24 @@ static struct server_command cmd_struct[] = {
 {
 .name ="pause",
 .handler = com_pause,
 {
 .name ="pause",
 .handler = com_pause,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "pause current audio file",
 .synopsis = "pause",
 .help =
 
 .description = "pause current audio file",
 .synopsis = "pause",
 .help =
 
-"\tClear the 'P' (playing) bit of the afs status flags.\n"
+"\tClear the 'P' (playing) bit of the vss status flags.\n"
 
 },
 
 {
 .name = "play",
 .handler = com_play,
 
 },
 
 {
 .name = "play",
 .handler = com_play,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "start playing or resume playing when paused",
 .synopsis = "play",
 .help =
 
 .description = "start playing or resume playing when paused",
 .synopsis = "play",
 .help =
 
-"\tSet the 'P' (playing) bit of the afs status flags. This\n"
+"\tSet the 'P' (playing) bit of the vss status flags. This\n"
 "\tresults in starting/continuing to stream.\n"
 
 },
 "\tresults in starting/continuing to stream.\n"
 
 },
@@ -198,7 +198,7 @@ static struct server_command cmd_struct[] = {
 {
 .name = "sb",
 .handler = com_sb,
 {
 .name = "sb",
 .handler = com_sb,
-.perms = AFS_READ,
+.perms = VSS_READ,
 .description = "print status bar for current audio file",
 .synopsis = "sb [n]",
 .help =
 .description = "print status bar for current audio file",
 .synopsis = "sb [n]",
 .help =
@@ -215,7 +215,7 @@ static struct server_command cmd_struct[] = {
 {
 .name = "sc",
 .handler = com_sc,
 {
 .name = "sc",
 .handler = com_sc,
-.perms = AFS_READ,
+.perms = VSS_READ,
 .description = "print name of audio file whenever it changes",
 .synopsis = "sc [n]",
 .help =
 .description = "print name of audio file whenever it changes",
 .synopsis = "sc [n]",
 .help =
@@ -228,7 +228,7 @@ static struct server_command cmd_struct[] = {
 {
 .name = "sender",
 .handler = com_sender,
 {
 .name = "sender",
 .handler = com_sender,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "control paraslash internal senders",
 .synopsis = "sender [s cmd [arguments]]",
 .help =
 .description = "control paraslash internal senders",
 .synopsis = "sender [s cmd [arguments]]",
 .help =
@@ -253,7 +253,7 @@ static struct server_command cmd_struct[] = {
 {
 .name = "stat",
 .handler = com_stat,
 {
 .name = "stat",
 .handler = com_stat,
-.perms = AFS_READ,
+.perms = VSS_READ,
 .description = "print status info for current audio file",
 .synopsis = "stat [n]",
 .help =
 .description = "print status info for current audio file",
 .synopsis = "stat [n]",
 .help =
@@ -267,19 +267,19 @@ static struct server_command cmd_struct[] = {
 {
 .name = "stop",
 .handler = com_stop,
 {
 .name = "stop",
 .handler = com_stop,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "stop playing",
 .synopsis = "stop",
 .help =
 
 .description = "stop playing",
 .synopsis = "stop",
 .help =
 
-"\tClear the 'P' (play) bit and set the 'N' bit of the afs status\n"
+"\tClear the 'P' (play) bit and set the 'N' bit of the vss status\n"
 "\tflags.\n"
 
 },
 {
 .name = "term",
 .handler = com_term,
 "\tflags.\n"
 
 },
 {
 .name = "term",
 .handler = com_term,
-.perms = AFS_READ | AFS_WRITE,
+.perms = VSS_READ | VSS_WRITE,
 .description = "terminate para_server",
 .synopsis = "term",
 .help =
 .description = "terminate para_server",
 .synopsis = "term",
 .help =
@@ -315,13 +315,13 @@ static void mmd_dup(struct misc_meta_data *new_mmd)
 
 /*
  * compute human readable string containing
 
 /*
  * compute human readable string containing
- * afs_status for given integer value
+ * vss status for given integer value
  */
  */
-static char *afs_status_tohuman(unsigned int flags)
+static char *vss_status_tohuman(unsigned int flags)
 {
 {
-       if (flags & AFS_PLAYING)
+       if (flags & VSS_PLAYING)
                return para_strdup("playing");
                return para_strdup("playing");
-       else if (flags & AFS_NEXT)
+       else if (flags & VSS_NEXT)
                return para_strdup("stopped");
        else
                return para_strdup("paused");
                return para_strdup("stopped");
        else
                return para_strdup("paused");
@@ -336,8 +336,8 @@ char *cmd_perms_itohuman(unsigned int perms)
 
        msg[0] = perms & DB_READ? 'd' : '-';
        msg[1] = perms & DB_WRITE? 'D' : '-';
 
        msg[0] = perms & DB_READ? 'd' : '-';
        msg[1] = perms & DB_WRITE? 'D' : '-';
-       msg[2] = perms & AFS_READ? 'a' : '-';
-       msg[3] = perms & AFS_WRITE? 'A' : '-';
+       msg[2] = perms & VSS_READ? 'a' : '-';
+       msg[3] = perms & VSS_WRITE? 'A' : '-';
        msg[4] = '\0';
        return msg;
 }
        msg[4] = '\0';
        return msg;
 }
@@ -345,14 +345,14 @@ char *cmd_perms_itohuman(unsigned int perms)
 /*
  * Never returns NULL.
  */
 /*
  * Never returns NULL.
  */
-static char *afs_get_status_flags(unsigned int flags)
+static char *vss_get_status_flags(unsigned int flags)
 {
        char *msg = para_malloc(5 * sizeof(char));
 
 {
        char *msg = para_malloc(5 * sizeof(char));
 
-       msg[0] = (flags & AFS_PLAYING)? 'P' : '_';
-       msg[1] = (flags & AFS_NOMORE)? 'O' : '_';
-       msg[2] = (flags & AFS_NEXT)? 'N' : '_';
-       msg[3] = (flags & AFS_REPOS)? 'R' : '_';
+       msg[0] = (flags & VSS_PLAYING)? 'P' : '_';
+       msg[1] = (flags & VSS_NOMORE)? 'O' : '_';
+       msg[2] = (flags & VSS_NEXT)? 'N' : '_';
+       msg[3] = (flags & VSS_REPOS)? 'R' : '_';
        msg[4] = '\0';
        return msg;
 }
        msg[4] = '\0';
        return msg;
 }
@@ -392,7 +392,7 @@ char *get_sb_string(struct misc_meta_data *nmmd)
 static char *get_status(struct misc_meta_data *nmmd)
 {
        char *bar, *ret, mtime[30] = "";
 static char *get_status(struct misc_meta_data *nmmd)
 {
        char *bar, *ret, mtime[30] = "";
-       char *status, *flags; /* afs status info */
+       char *status, *flags; /* vss status info */
        char *ut = uptime_str();
        long offset = (nmmd->offset + 500) / 1000;
        struct timeval now;
        char *ut = uptime_str();
        long offset = (nmmd->offset + 500) / 1000;
        struct timeval now;
@@ -403,8 +403,8 @@ static char *get_status(struct misc_meta_data *nmmd)
                strftime(mtime, 29, "%a %b %d %Y", &mtime_tm);
        }
        /* report real status */
                strftime(mtime, 29, "%a %b %d %Y", &mtime_tm);
        }
        /* report real status */
-       status = afs_status_tohuman(nmmd->afs_status_flags);
-       flags = afs_get_status_flags(nmmd->afs_status_flags);
+       status = vss_status_tohuman(nmmd->vss_status_flags);
+       flags = vss_get_status_flags(nmmd->vss_status_flags);
        bar = para_basename(nmmd->filename);
        gettimeofday(&now, NULL);
        ret = make_message(
        bar = para_basename(nmmd->filename);
        gettimeofday(&now, NULL);
        ret = make_message(
@@ -699,11 +699,12 @@ out:
        return ret;
 }
 
        return ret;
 }
 
-static int send_description(int fd, struct server_command *cmd, const char *handler, int num)
+static int send_list_of_commands(int fd, struct server_command *cmd,
+               const char *handler)
 {
        int ret, i;
 
 {
        int ret, i;
 
-       for (i = 1; cmd->name && (!num || i <= num); cmd++, i++) {
+       for (i = 1; cmd->name; cmd++, i++) {
                char *perms = cmd_perms_itohuman(cmd->perms);
                ret = send_va_buffer(fd, "%s\t%s\t%s\t%s\n", cmd->name,
                        handler,
                char *perms = cmd_perms_itohuman(cmd->perms);
                ret = send_va_buffer(fd, "%s\t%s\t%s\t%s\n", cmd->name,
                        handler,
@@ -749,13 +750,13 @@ static int com_help(int fd, int argc, char **argv)
 
        if (argc < 2) {
                /* no argument given, print list of commands */
 
        if (argc < 2) {
                /* no argument given, print list of commands */
-               if ((ret = send_description(fd, cmd_struct, "server", 0)) < 0)
+               if ((ret = send_list_of_commands(fd, cmd_struct, "server")) < 0)
                        return ret;
                mmd_lock();
                handler = para_strdup(selectors[mmd->selector_num].name);
                cmd = selectors[mmd->selector_num].cmd_list;
                mmd_unlock();
                        return ret;
                mmd_lock();
                handler = para_strdup(selectors[mmd->selector_num].name);
                cmd = selectors[mmd->selector_num].cmd_list;
                mmd_unlock();
-               ret = send_description(fd, cmd, handler, 0);
+               ret = send_list_of_commands(fd, cmd, handler);
                free(handler);
                return ret;
        }
                free(handler);
                return ret;
        }
@@ -810,8 +811,8 @@ static int com_play(__a_unused int socket_fd, int argc, __a_unused char **argv)
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
-       mmd->new_afs_status_flags |= AFS_PLAYING;
-       mmd->new_afs_status_flags &= ~AFS_NOMORE;
+       mmd->new_vss_status_flags |= VSS_PLAYING;
+       mmd->new_vss_status_flags &= ~VSS_NOMORE;
        mmd_unlock();
        return 1;
 
        mmd_unlock();
        return 1;
 
@@ -823,9 +824,9 @@ static int com_stop(__a_unused int socket_fd, int argc, __a_unused char **argv)
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
-       mmd->new_afs_status_flags &= ~AFS_PLAYING;
-       mmd->new_afs_status_flags &= ~AFS_REPOS;
-       mmd->new_afs_status_flags |= AFS_NEXT;
+       mmd->new_vss_status_flags &= ~VSS_PLAYING;
+       mmd->new_vss_status_flags &= ~VSS_REPOS;
+       mmd->new_vss_status_flags |= VSS_NEXT;
        mmd_unlock();
        return 1;
 }
        mmd_unlock();
        return 1;
 }
@@ -836,10 +837,10 @@ static int com_pause(__a_unused int socket_fd, int argc, __a_unused char **argv)
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
-       if (!afs_paused())
+       if (!vss_paused())
                mmd->events++;
                mmd->events++;
-       mmd->new_afs_status_flags &= ~AFS_PLAYING;
-       mmd->new_afs_status_flags &= ~AFS_NEXT;
+       mmd->new_vss_status_flags &= ~VSS_PLAYING;
+       mmd->new_vss_status_flags &= ~VSS_NEXT;
        mmd_unlock();
        return 1;
 }
        mmd_unlock();
        return 1;
 }
@@ -876,7 +877,7 @@ static int com_next(__a_unused int socket_fd, int argc, __a_unused char **argv)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
        mmd->events++;
                return -E_COMMAND_SYNTAX;
        mmd_lock();
        mmd->events++;
-       mmd->new_afs_status_flags |= AFS_NEXT;
+       mmd->new_vss_status_flags |= VSS_NEXT;
        mmd_unlock();
        return 1;
 }
        mmd_unlock();
        return 1;
 }
@@ -887,8 +888,8 @@ static int com_nomore(__a_unused int socket_fd, int argc, __a_unused char **argv
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
        mmd_lock();
-       if (afs_playing() || afs_paused())
-               mmd->new_afs_status_flags |= AFS_NOMORE;
+       if (vss_playing() || vss_paused())
+               mmd->new_vss_status_flags |= VSS_NOMORE;
        mmd_unlock();
        return 1;
 }
        mmd_unlock();
        return 1;
 }
@@ -919,12 +920,12 @@ static int com_ff(__a_unused int socket_fd, int argc, char **argv)
        if (promille < 0)
                promille = 0;
        if (promille >  1000) {
        if (promille < 0)
                promille = 0;
        if (promille >  1000) {
-               mmd->new_afs_status_flags |= AFS_NEXT;
+               mmd->new_vss_status_flags |= VSS_NEXT;
                goto out;
        }
        mmd->repos_request = (mmd->chunks_total * promille) / 1000;
                goto out;
        }
        mmd->repos_request = (mmd->chunks_total * promille) / 1000;
-       mmd->new_afs_status_flags |= AFS_REPOS;
-       mmd->new_afs_status_flags &= ~AFS_NEXT;
+       mmd->new_vss_status_flags |= VSS_REPOS;
+       mmd->new_vss_status_flags &= ~VSS_NEXT;
        mmd->events++;
        ret = 1;
 out:
        mmd->events++;
        ret = 1;
 out:
@@ -952,8 +953,8 @@ static int com_jmp(__a_unused int socket_fd, int argc, char **argv)
        mmd->repos_request = (mmd->chunks_total * i + 50)/ 100;
        PARA_INFO_LOG("sent: %lu,  offset before jmp: %lu\n",
                mmd->chunks_sent, mmd->offset);
        mmd->repos_request = (mmd->chunks_total * i + 50)/ 100;
        PARA_INFO_LOG("sent: %lu,  offset before jmp: %lu\n",
                mmd->chunks_sent, mmd->offset);
-       mmd->new_afs_status_flags |= AFS_REPOS;
-       mmd->new_afs_status_flags &= ~AFS_NEXT;
+       mmd->new_vss_status_flags |= VSS_REPOS;
+       mmd->new_vss_status_flags &= ~VSS_NEXT;
        ret = 1;
        mmd->events++;
 out:
        ret = 1;
        mmd->events++;
 out:
@@ -1062,13 +1063,8 @@ int handle_connect(int fd, struct sockaddr_in *addr)
        }
        PARA_DEBUG_LOG("received %s request for user %s\n",
                use_rc4? "rc4" : "auth", u.name);
        }
        PARA_DEBUG_LOG("received %s request for user %s\n",
                use_rc4? "rc4" : "auth", u.name);
-       if ((ret = get_user(&u)) < 0)
+       if ((ret = lookup_user(&u)) < 0)
                goto err_out;
                goto err_out;
-       if (!ret) { /* user not found */
-               PARA_WARNING_LOG("auth request for unknown user %s\n", u.name);
-               ret = -E_BAD_USER;
-               goto err_out;
-       }
        ret = para_encrypt_challenge(u.rsa, challenge_nr, crypt_buf);
        if (ret <= 0)
                goto err_out;
        ret = para_encrypt_challenge(u.rsa, challenge_nr, crypt_buf);
        if (ret <= 0)
                goto err_out;