X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=notes%2Fproto.txt;h=8a1a1da712a1b08bdc3c90b61d77332cf0ef0daa;hb=7ba426116326af469bc8c73aae4fc1c56ebb3612;hp=f82d27bd43fd772135c75c1711ec88e994664821;hpb=ce80b78096596740cecfdae20d72d12accfa495e;p=tpg%2Fopendispense2.git diff --git a/notes/proto.txt b/notes/proto.txt index f82d27b..8a1a1da 100644 --- a/notes/proto.txt +++ b/notes/proto.txt @@ -38,8 +38,9 @@ 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 === +--- Untrusted Users --- c USER \n -s 100 SALT \n or 100 User Set\n (If no salt used) +s 202 SALT \n or 100 User Set\n (If no salt used) c PASS \n (Hex-Encoded SHA-1 Hash of ) s 200 Auth OK\n or 401 Auth Failure\n User is now authenticated @@ -50,50 +51,72 @@ c AUTOAUTH \n s 200 Auth OK\n or 404 Bad Username\n or 401 Untrusted\n --- Alternate Method (MIFARE Authentication) c MIFARE \n -s 200 Auth OK as \n or 404 Bad Card ID\n or 401 Untrusted\n +s 200 Auth OK as \n or 401 Untrusted\n or 404 Bad Card ID\n --- Set effective user (User in `dispense -u`) --- c SETEUSER \n s 200 User set\n or 403 Not in coke\n or 404 User not found\n -=== Commands === +=== Standard User Commands === --- Dispense an item --- c DISPENSE \n -s 200 Dispense OK\n or 402 Poor You\n or 500 Dispense Error\n or 406 Bad Item\n +s 200 Dispense OK\n or 402 Poor You\n or 406 Bad Item\n or 500 Dispense Error\n --- Give to another user --- c GIVE \n s 200 Give OK\n or 402 Poor You\n or 404 Bad User\n +--- Donate to the club --- +c DONATE \n +s 200 Give OK\n or 402 Poor You\n + +=== Coke Member Commands (Account Manipulation) === --- Alter balance --- c ADD \n s 200 Add OK\n or 402 No balance\n or 403 Not Coke\n or 404 Bad User\n +--- Set balance --- +c SET \n +s 200 Add OK\n or 402 No balance\n or 403 Not Coke\n or 404 Bad User\n +--- Refund a drink --- +c REFUND [ ]\n +s 200 Add OK\n or 403 Not Coke\n or 404 Bad User\n 406 Bad Item\n + +=== Items === --- Get Item list --- c ENUM_ITEMS\n s 201 Items \n -s 202 Item \n +s >> Response to ITEM_INFO ... s 200 List End\n --- Get Item Information --- c ITEM_INFO \n -s 202 Item \n +s 202 Item \n + "avail", "sold", or "error" +--- Update an item --- +c UPDATE_ITEM \n +s 200 Item updated +=== Users === --- Get Users' Balances --- - and can be '-' to indicate "none" -c ENUM_USERS[ []]\n +c ENUM_USERS[ min_balance:][ max_balance:][ flags:][ last_seen_before:][ last_seen_after:][ sort:[-desc]]\n s 201 Users \n s 202 User \n ... s 200 List End\n + Integer balance value (in cents) + Flag values (same format as USER_FLAGS) + Number of seconds since 1/Jan/1970 + Sort field (name,balance,lastseen) --- Get a User's Balance --- c USER_INFO\n s 202 User \n +=== User Manipulation === --- Add a new user --- c USER_ADD \n s 200 User Added\n or 403 Not Wheel\n or 404 User Exists\n --- Set user flags --- is a comma-separated list of flag values (optionally preceded by - - to remove the flag) Valid values are: user,coke,wheel,meta,disabled,door + - to remove the flag) Valid values are: user,coke,admin,internal,disabled,door c USER_FLAGS \n s 200 User Updated\n or 403 Not Wheel\n or 404 Bad User\n or 407 Unknown Flags\n --- Add MIFARE ID ---