403 User not allowed to perform this action
404 Bad other username
406 Bad Item ID
+407 Invalid arguments
500 Unknown Dispense Failure
+501 Action Rejected
+== Item IDs ==
+<item_id> represents the item ID
+Item IDs are allowed to contain any non-whitespace character, but in
+general they will be limited to the standard alpha-numeric set
=== User Auth ===
c USER <username>\n
-s 100 SALT <string 4-8>\n
-c PASS <SHA-512 Hash>\n (Hash of <username><salt><password>)
+s 100 SALT <string>\n or 100 User Set\n (If no salt used)
+c PASS <hash>\n (Hex-Encoded SHA-1 Hash of <username><salt><password>)
s 200 Auth OK\n or 401 Auth Failure\n
User is now authenticated
+--- Alternate Method (Implicit Trust Authentication) ---
+If the client is connecting from a trusted machine on a root port then
+automatic authentication is allowed
+c AUTOAUTH <username>\n
+s 200 Auth OK\n or 404 Bad Username\n or 401 Untrusted\n
=== Commands ===
---- Get Item list ---
-c ENUM_ITEMS\n
-s 201 Items <count> <item_id> <item_id> ...\n
---- Get Item Information ---
-c ITEM_INFO <item_id>\n
-s 202 Item <item_id> <price> "<description>"\n
--- Dispense an item ---
c DISPENSE <item_id>\n
s 200 Dispense OK\n or 402 Poor You\n or 500 Dispense Error\n or 406 Bad Item\n
c GIVE <user> <ammount> <reason>\n
s 200 Give OK\n or 402 Poor You\n or 404 Bad User\n
--- Update balance ---
-c ADD <user> <ammount> "<reason>"\n
+c ADD <user> <ammount> <reason>\n
s 200 Add OK\n or 403 Not Coke\n or 404 Bad User\n
+
+--- Get Item list ---
+c ENUM_ITEMS\n
+s 201 Items <count> <item_id> <item_id> ...\n
+--- Get Item Information ---
+c ITEM_INFO <item_id>\n
+s 202 Item <item_id> <price> <description>\n
--- Set Balance ---
-c SET <user> <balance> "<reason>"\n
+c SET <user> <balance> <reason>\n
s 200 Set OK\n or 403 Not allowed\n or 404 Bad User\n
--- Get Users Balances ---
c ENUM_USERS[ <max balance>]\n