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:
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 = "";
}
{
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 )
{
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);
{
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");
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
*/
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");
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)