X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fserver.c;h=01e2d841956d8c8794fe8106dedebfcb60b43fa2;hb=b8913d7420311a9eb7da923a8fc645ac4ca25a45;hp=dbb08cbdcdc81be2c428581e0197532a7fe310ae;hpb=2b718e476dbff288ddf4e948024bcb6c92cc3281;p=tpg%2Fopendispense2.git diff --git a/src/server/server.c b/src/server/server.c index dbb08cb..01e2d84 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -186,11 +186,12 @@ void Server_Start(void) switch( ntohl( client_addr.sin_addr.s_addr ) ) { case 0x7F000001: // 127.0.0.1 localhost - // case 0x825E0D00: // 130.95.13.0 - case 0x825E0D07: // 130.95.13.7 motsugo - case 0x825E0D11: // 130.95.13.17 mermaid - case 0x825E0D12: // 130.95.13.18 mussel - case 0x825E0D17: // 130.95.13.23 martello + // case 0x825F0D00: // 130.95.13.0 + case 0x825F0D07: // 130.95.13.7 motsugo + case 0x825F0D11: // 130.95.13.17 mermaid + case 0x825F0D12: // 130.95.13.18 mussel + case 0x825F0D17: // 130.95.13.23 martello + case 0x825F0D42: // 130.95.13.66 heathred bTrusted = 1; break; default: @@ -302,6 +303,7 @@ void Server_ParseClientCommand(tClient *Client, char *CommandString) if( Server_int_ParseArgs(1, CommandString, &command, &args, NULL) ) { +// printf("command=%s, args=%s\n", command, args); // Is this an error? (just ignore for now) //args = ""; } @@ -333,7 +335,11 @@ void Server_Cmd_USER(tClient *Client, char *Args) { char *username; - Server_int_ParseArgs(0, Args, &username, NULL); + if( Server_int_ParseArgs(0, Args, &username, NULL) ) + { + sendf(Client->Socket, "407 USER takes 1 argument\n"); + return ; + } // Debug! if( giDebugLevel ) @@ -372,7 +378,11 @@ void Server_Cmd_PASS(tClient *Client, char *Args) { char *passhash; - Server_int_ParseArgs(0, Args, &passhash, NULL); + if( Server_int_ParseArgs(0, Args, &passhash, NULL) ) + { + sendf(Client->Socket, "407 PASS takes 1 argument\n"); + return ; + } // Pass on to cokebank Client->UID = Bank_GetUserAuth(Client->Salt, Client->Username, passhash); @@ -442,7 +452,11 @@ void Server_Cmd_SETEUSER(tClient *Client, char *Args) { char *username; - Server_int_ParseArgs(0, Args, &username, NULL); + if( Server_int_ParseArgs(0, Args, &username, NULL) ) + { + sendf(Client->Socket, "407 SETEUSER takes 1 argument\n"); + return ; + } if( !strlen(Args) ) { sendf(Client->Socket, "407 SETEUSER expects an argument\n"); @@ -472,6 +486,32 @@ void Server_Cmd_SETEUSER(tClient *Client, char *Args) sendf(Client->Socket, "200 User set\n"); } +/** + * \brief Send an item status to the client + * \param Client Who to? + * \param Item Item to send + */ +void Server_int_SendItem(tClient *Client, tItem *Item) +{ + char *status = "avail"; + + if( Item->Handler->CanDispense ) + { + switch(Item->Handler->CanDispense(Client->UID, Item->ID)) + { + case 0: status = "avail"; break; + case 1: status = "sold"; break; + default: + case -1: status = "error"; break; + } + } + + sendf(Client->Socket, + "202 Item %s:%i %s %i %s\n", + Item->Handler->Name, Item->ID, status, Item->Price, Item->Name + ); +} + /** * \brief Enumerate the items that the server knows about */ @@ -495,10 +535,7 @@ void Server_Cmd_ENUMITEMS(tClient *Client, char *Args) for( i = 0; i < giNumItems; i ++ ) { if( gaItems[i].bHidden ) continue; - sendf(Client->Socket, - "202 Item %s:%i %i %s\n", - gaItems[i].Handler->Name, gaItems[i].ID, gaItems[i].Price, gaItems[i].Name - ); + Server_int_SendItem( Client, &gaItems[i] ); } sendf(Client->Socket, "200 List end\n"); @@ -560,10 +597,7 @@ void Server_Cmd_ITEMINFO(tClient *Client, char *Args) return ; } - sendf(Client->Socket, - "202 Item %s:%i %i %s\n", - item->Handler->Name, item->ID, item->Price, item->Name - ); + Server_int_SendItem( Client, item ); } void Server_Cmd_DISPENSE(tClient *Client, char *Args)