Changeset 4467:74702c84db56 in roaraudio for roard/commands.c
- Timestamp:
- 10/10/10 17:18:48 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/commands.c
r4431 r4467 33 33 34 34 struct roar_command g_commands[COMMAND_MAX_COMMANDS] = { 35 {ROAR_CMD_NOOP, _NAME("NOOP"), req_on_noop },36 {ROAR_CMD_IDENTIFY, _NAME("IDENTIFY"), req_on_identify },37 {ROAR_CMD_AUTH, _NAME("AUTH"), req_on_auth },38 {ROAR_CMD_WHOAMI, _NAME("WHOAMI"), req_on_whoami },35 {ROAR_CMD_NOOP, _NAME("NOOP"), req_on_noop, ACCLEV_NONE}, 36 {ROAR_CMD_IDENTIFY, _NAME("IDENTIFY"), req_on_identify, ACCLEV_NONE}, 37 {ROAR_CMD_AUTH, _NAME("AUTH"), req_on_auth, ACCLEV_IDENTED}, 38 {ROAR_CMD_WHOAMI, _NAME("WHOAMI"), req_on_whoami, ACCLEV_NONE}, 39 39 40 40 41 {ROAR_CMD_NEW_STREAM, _NAME("NEW_STREAM"), req_on_new_stream },41 {ROAR_CMD_NEW_STREAM, _NAME("NEW_STREAM"), req_on_new_stream, ACCLEV_USER}, 42 42 43 43 #ifdef ROAR_SUPPORT_META 44 {ROAR_CMD_SET_META, _NAME("SET_META"), req_on_set_meta },45 {ROAR_CMD_GET_META, _NAME("GET_META"), req_on_get_meta },46 {ROAR_CMD_LIST_META, _NAME("LIST_META"), req_on_list_meta },44 {ROAR_CMD_SET_META, _NAME("SET_META"), req_on_set_meta, ACCLEV_PWRUSER}, 45 {ROAR_CMD_GET_META, _NAME("GET_META"), req_on_get_meta, ACCLEV_GUEST}, 46 {ROAR_CMD_LIST_META, _NAME("LIST_META"), req_on_list_meta, ACCLEV_GUEST}, 47 47 #endif 48 48 49 {ROAR_CMD_EXEC_STREAM, _NAME("EXEC_STREAM"), req_on_exec_stream },50 {ROAR_CMD_QUIT, _NAME("QUIT"), (int(*)(int client, struct roar_message * mes, char ** data, uint32_t flags[2]))clients_delete },49 {ROAR_CMD_EXEC_STREAM, _NAME("EXEC_STREAM"), req_on_exec_stream, ACCLEV_PWRUSER}, 50 {ROAR_CMD_QUIT, _NAME("QUIT"), (int(*)(int client, struct roar_message * mes, char ** data, uint32_t flags[2]))clients_delete, ACCLEV_NONE}, 51 51 52 {ROAR_CMD_CON_STREAM, _NAME("CON_STREAM"), req_on_con_stream },53 {ROAR_CMD_PASSFH, _NAME("PASSFH"), req_on_passfh },52 {ROAR_CMD_CON_STREAM, _NAME("CON_STREAM"), req_on_con_stream, ACCLEV_PWRUSER}, 53 {ROAR_CMD_PASSFH, _NAME("PASSFH"), req_on_passfh, ACCLEV_PWRUSER}, 54 54 55 {ROAR_CMD_SERVER_INFO, _NAME("SERVER_INFO"), req_on_server_info}, 56 {ROAR_CMD_SERVER_OINFO, _NAME("SERVER_OINFO"), req_on_server_oinfo}, 57 {ROAR_CMD_GET_STANDBY, _NAME("GET_STANDBY"), req_on_get_standby}, 58 {ROAR_CMD_SET_STANDBY, _NAME("SET_STANDBY"), req_on_set_standby}, 59 {ROAR_CMD_EXIT, _NAME("EXIT"), req_on_exit}, 55 {ROAR_CMD_SERVER_INFO, _NAME("SERVER_INFO"), req_on_server_info, ACCLEV_IDENTED}, // allow this early so the client 56 // can device ealry if this server 57 // provieds all needed features 58 {ROAR_CMD_SERVER_OINFO, _NAME("SERVER_OINFO"), req_on_server_oinfo, ACCLEV_IDENTED}, // same as above 59 {ROAR_CMD_GET_STANDBY, _NAME("GET_STANDBY"), req_on_get_standby, ACCLEV_GUEST}, 60 {ROAR_CMD_SET_STANDBY, _NAME("SET_STANDBY"), req_on_set_standby, ACCLEV_PWRUSER}, // should this be set to ACCLEV_ALL? 61 {ROAR_CMD_EXIT, _NAME("EXIT"), req_on_exit, ACCLEV_ALL}, 60 62 61 {ROAR_CMD_LIST_CLIENTS, _NAME("LIST_CLIENTS"), req_on_list_clients },62 {ROAR_CMD_LIST_STREAMS, _NAME("LIST_STREAMS"), req_on_list_streams },63 {ROAR_CMD_GET_CLIENT, _NAME("GET_CLIENT"), req_on_get_client },64 {ROAR_CMD_GET_STREAM, _NAME("GET_STREAM"), req_on_get_stream },65 {ROAR_CMD_KICK, _NAME("KICK"), req_on_kick },66 {ROAR_CMD_ATTACH, _NAME("ATTACH"), req_on_attach },67 {ROAR_CMD_SET_VOL, _NAME("SET_VOL"), req_on_set_vol },68 {ROAR_CMD_GET_VOL, _NAME("GET_VOL"), req_on_get_vol },69 {ROAR_CMD_GET_STREAM_PARA, _NAME("GET_STREAM_PARA"), req_on_get_stream_para },70 {ROAR_CMD_SET_STREAM_PARA, _NAME("SET_STREAM_PARA"), req_on_set_stream_para },63 {ROAR_CMD_LIST_CLIENTS, _NAME("LIST_CLIENTS"), req_on_list_clients, ACCLEV_GUEST}, 64 {ROAR_CMD_LIST_STREAMS, _NAME("LIST_STREAMS"), req_on_list_streams, ACCLEV_GUEST}, 65 {ROAR_CMD_GET_CLIENT, _NAME("GET_CLIENT"), req_on_get_client, ACCLEV_GUEST}, 66 {ROAR_CMD_GET_STREAM, _NAME("GET_STREAM"), req_on_get_stream, ACCLEV_GUEST}, 67 {ROAR_CMD_KICK, _NAME("KICK"), req_on_kick, ACCLEV_PWRUSER}, 68 {ROAR_CMD_ATTACH, _NAME("ATTACH"), req_on_attach, ACCLEV_PWRUSER}, 69 {ROAR_CMD_SET_VOL, _NAME("SET_VOL"), req_on_set_vol, ACCLEV_PWRUSER}, 70 {ROAR_CMD_GET_VOL, _NAME("GET_VOL"), req_on_get_vol, ACCLEV_GUEST}, 71 {ROAR_CMD_GET_STREAM_PARA, _NAME("GET_STREAM_PARA"), req_on_get_stream_para, ACCLEV_GUEST}, 72 {ROAR_CMD_SET_STREAM_PARA, _NAME("SET_STREAM_PARA"), req_on_set_stream_para, ACCLEV_PWRUSER}, 71 73 72 {ROAR_CMD_ADD_DATA, _NAME("ADD_DATA"), req_on_add_data },74 {ROAR_CMD_ADD_DATA, _NAME("ADD_DATA"), req_on_add_data, ACCLEV_PWRUSER}, 73 75 74 {ROAR_CMD_BEEP, _NAME("BEEP"), req_on_beep },76 {ROAR_CMD_BEEP, _NAME("BEEP"), req_on_beep, ACCLEV_USER}, 75 77 76 {ROAR_CMD_WAIT, _NAME("WAIT"), req_on_wait },78 {ROAR_CMD_WAIT, _NAME("WAIT"), req_on_wait, ACCLEV_USER}, 77 79 78 {ROAR_CMD_EOL, _NAME("END OF LIST"), NULL }80 {ROAR_CMD_EOL, _NAME("END OF LIST"), NULL, ACCLEV_NONE} 79 81 }; 80 82 … … 103 105 if ( cmd == -1 ) 104 106 return -1; 107 108 // NOTE: This is optimized for speed here, so we do notc al clients_get(). 109 // we maybe should do but current just don't. /client/ must be valid anyway. 110 if ( g_commands[cmd].minacclev > g_clients[client]->acclev ) { 111 ROAR_WARN("command_exec(client=%i, mes=%p{.cmd=%i,...}, data=%p, flags=%p) = -1 // client not allowed to use command %s", client, mes, (int)mes->cmd, data, flags, g_commands[cmd].name); 112 return -1; 113 } 105 114 106 115 if ( (func = g_commands[cmd].handler) == NULL ) {
Note: See TracChangeset
for help on using the changeset viewer.