X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=7dba2f90b8e4ff1e6fca0352d31b79d24b41e9af;hp=516a62fe520887e1b015ff8e159b8027dd86b232;hb=08a1de75a3a83c728d97a3c4ff182553adbda8cc;hpb=5f956b99f8f30642227686dd9341950f011512ae diff --git a/command.c b/command.c index 516a62fe..7dba2f90 100644 --- a/command.c +++ b/command.c @@ -6,21 +6,25 @@ /** \file command.c does client authentication and executes server commands */ -#include /* gettimeofday */ -#include "para.h" /* gettimeofday */ +#include +#include +#include +#include +#include +#include "para.h" +#include "error.h" #include "server.cmdline.h" #include "afs_common.h" +#include "string.h" #include "afh.h" +#include "afs.h" #include "server.h" #include "vss.h" #include "send.h" #include "rc4.h" -#include -#include "error.h" #include "net.h" #include "daemon.h" -#include "string.h" #include "fd.h" #include "list.h" #include "user_list.h" @@ -36,7 +40,6 @@ static unsigned char rc4_buf[2 * RC4_KEY_LEN]; extern const char *status_item_list[NUM_STAT_ITEMS]; extern struct misc_meta_data *mmd; -extern struct audio_file_selector selectors[]; extern struct sender senders[]; static void dummy(__a_unused int s) @@ -146,7 +149,7 @@ static char *get_status(struct misc_meta_data *nmmd) ret = make_message( "%s:%zu\n" "%s:%s\n" "%s:%lu\n" "%s:%u\n" "%s:%s\n" "%s:%s\n" "%s:%s\n" "%s:%s\n" - "%s:%li\n" "%s:%s\n" "%s" "%s" + "%s:%li\n" "%s:%s\n" "%s" "%s:%s\n" "%s:%lu.%lu\n" "%s:%lu.%lu\n", status_item_list[SI_FILE_SIZE], nmmd->size / 1024, status_item_list[SI_MTIME], mtime, @@ -156,11 +159,10 @@ static char *get_status(struct misc_meta_data *nmmd) status_item_list[SI_STATUS_BAR], bar ? bar : "(none)", status_item_list[SI_STATUS], status, status_item_list[SI_STATUS_FLAGS], flags, - status_item_list[SI_SELECTOR], selectors[nmmd->selector_num].name, + status_item_list[SI_SELECTOR], "FIXME", status_item_list[SI_OFFSET], offset, status_item_list[SI_FORMAT], audio_format_name(nmmd->audio_format), - nmmd->selector_info, nmmd->afi.info_string, status_item_list[SI_UPTIME], ut, @@ -217,7 +219,7 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman case SENDER_ALLOW: if (argc != 4 && argc != 5) return -E_COMMAND_SYNTAX; - if (!inet_aton(argv[3], &scd->addr)) + if (!inet_pton(AF_INET, argv[3], &scd->addr)) return -E_COMMAND_SYNTAX; scd->netmask = 32; if (argc == 5) { @@ -230,7 +232,7 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman case SENDER_DELETE: if (argc != 4 && argc != 5) return -E_COMMAND_SYNTAX; - if (!inet_aton(argv[3], &scd->addr)) + if (!inet_pton(AF_INET, argv[3], &scd->addr)) return -E_COMMAND_SYNTAX; scd->port = -1; if (argc == 5) { @@ -291,15 +293,11 @@ int com_si(int fd, int argc, __a_unused char * const * argv) { int i, ret; char *ut; - char *selector_string = NULL, *sender_info = NULL, *sender_list = NULL; + char *sender_info = NULL, *sender_list = NULL; if (argc != 1) return -E_COMMAND_SYNTAX; mmd_lock(); - for (i = 0; selectors[i].name; i++) { - selector_string = para_strcat(selector_string, selectors[i].name); - selector_string = para_strcat(selector_string, " "); - } for (i = 0; senders[i].name; i++) { char *info = senders[i].info(); sender_info = para_strcat(sender_info, info); @@ -312,7 +310,6 @@ int com_si(int fd, int argc, __a_unused char * const * argv) "pid: %d\n" "connections (active/accepted/total): %u/%u/%u\n" "current loglevel: %i\n" - "supported audio file selectors: %s\n" "supported audio formats: %s\n" "supported senders: %s\n" "%s", @@ -322,14 +319,12 @@ int com_si(int fd, int argc, __a_unused char * const * argv) mmd->num_commands, mmd->num_connects, conf.loglevel_arg, - selector_string, supported_audio_formats(), sender_list, sender_info ); mmd_unlock(); free(ut); - free(selector_string); free(sender_list); free(sender_info); return ret; @@ -462,18 +457,8 @@ static struct server_command *get_cmd_ptr(const char *name, char **handler) *handler = para_strdup("para_server"); /* server commands */ return cmd; } - /* not found, look for commands supported by the current selector */ - mmd_lock(); - if (handler) - *handler = make_message("the %s selector", - selectors[mmd->selector_num].name); - cmd = selectors[mmd->selector_num].cmd_list; - mmd_unlock(); - for (; cmd->name; cmd++) - if (!strcmp(cmd->name, name)) - return cmd; /* not found, look for commands supported by afs */ - for (cmd = afs_cmds; cmd; cmd++) + for (cmd = afs_cmds; cmd->name; cmd++) if (!strcmp(cmd->name, name)) return cmd; return NULL; @@ -490,16 +475,7 @@ int com_help(int fd, int argc, char * const * argv) /* no argument given, print list of commands */ if ((ret = send_list_of_commands(fd, server_cmds, "server")) < 0) return ret; - mmd_lock(); - handler = para_strdup(selectors[mmd->selector_num].name); - cmd = selectors[mmd->selector_num].cmd_list; - mmd_unlock(); - ret = send_list_of_commands(fd, cmd, handler); - free(handler); - if (ret < 0) - return ret; - cmd = afs_cmds; - return send_list_of_commands(fd, cmd, "afs"); + return send_list_of_commands(fd, afs_cmds, "afs"); } /* argument given for help */ cmd = get_cmd_ptr(argv[1], &handler); @@ -583,31 +559,6 @@ int com_pause(__a_unused int fd, int argc, __a_unused char * const * argv) return 1; } -int com_chs(int fd, int argc, char * const * argv) -{ - int i, ret; - - if (argc == 1) { - char *selector; - mmd_lock(); - selector = para_strdup(selectors[mmd->selector_num].name); - mmd_unlock(); - ret = send_va_buffer(fd, "%s\n", selector); - free(selector); - return ret; - } - for (i = 0; selectors[i].name; i++) { - if (strcmp(selectors[i].name, argv[1])) - continue; - mmd_lock(); - mmd->selector_change = i; - mmd->events++; - mmd_unlock(); - return 1; - } - return -E_BAD_SELECTOR; -} - /* next */ int com_next(__a_unused int fd, int argc, __a_unused char * const * argv) { @@ -810,12 +761,10 @@ out: * encrypted with its RSA public key. From this point on, * all transfers are crypted with this session key. * - * Next it is checked if the peer supplied a valid server - * command or a command for the audio file selector currently - * in use. If yes, and if the user has sufficient - * permissions to execute that command, the function calls - * the corresponding command handler which does argument - * checking and further processing. + * Next it is checked if the peer supplied a valid server command or a command + * for the audio file selector. If yes, and if the user has sufficient + * permissions to execute that command, the function calls the corresponding + * command handler which does argument checking and further processing. * * In order to cope with a DOS attacks, a timeout is set up * which terminates the function if the connection was not