git.ucc.asn.au
/
tpg
/
opendispense2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gsCoke_ModbusPort should be giCoke_ModbusPort
[tpg/opendispense2.git]
/
notes
/
proto.txt
diff --git
a/notes/proto.txt
b/notes/proto.txt
index
f82d27b
..
8a1a1da
100644
(file)
--- 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 ===
general they will be limited to the standard alpha-numeric set
=== User Auth ===
+--- Untrusted Users ---
c USER <username>\n
c USER <username>\n
-s
100
SALT <string>\n or 100 User Set\n (If no salt used)
+s
202
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
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
@@
-50,50
+51,72
@@
c AUTOAUTH <username>\n
s 200 Auth OK\n or 404 Bad Username\n or 401 Untrusted\n
--- Alternate Method (MIFARE Authentication)
c MIFARE <card_id_hex>\n
s 200 Auth OK\n or 404 Bad Username\n or 401 Untrusted\n
--- Alternate Method (MIFARE Authentication)
c MIFARE <card_id_hex>\n
-s 200 Auth OK as <username>\n or 40
4 Bad Card ID\n or 401 Untrusted
\n
+s 200 Auth OK as <username>\n or 40
1 Untrusted\n or 404 Bad Card ID
\n
--- Set effective user (User in `dispense -u`) ---
c SETEUSER <username>\n
s 200 User set\n or 403 Not in coke\n or 404 User not found\n
--- Set effective user (User in `dispense -u`) ---
c SETEUSER <username>\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 <item_id>\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
+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 <user> <ammount> <reason>\n
s 200 Give OK\n or 402 Poor You\n or 404 Bad User\n
--- Give to another user ---
c GIVE <user> <ammount> <reason>\n
s 200 Give OK\n or 402 Poor You\n or 404 Bad User\n
+--- Donate to the club ---
+c DONATE <ammount> <reason>\n
+s 200 Give OK\n or 402 Poor You\n
+
+=== Coke Member Commands (Account Manipulation) ===
--- Alter balance ---
c ADD <user> <ammount> <reason>\n
s 200 Add OK\n or 402 No balance\n or 403 Not Coke\n or 404 Bad User\n
--- Alter balance ---
c ADD <user> <ammount> <reason>\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 <user> <balance> <reason>\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 <user> <item>[ <price>]\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 <count>\n
--- Get Item list ---
c ENUM_ITEMS\n
s 201 Items <count>\n
-s
202 Item <item_id> <price> <description>\n
+s
>> Response to ITEM_INFO
...
s 200 List End\n
--- Get Item Information ---
c ITEM_INFO <item_id>\n
...
s 200 List End\n
--- Get Item Information ---
c ITEM_INFO <item_id>\n
-s 202 Item <item_id> <price> <description>\n
+s 202 Item <item_id> <status> <price> <description>\n
+<status> "avail", "sold", or "error"
+--- Update an item ---
+c UPDATE_ITEM <item_id> <price> <name>\n
+s 200 Item updated
+=== Users ===
--- Get Users' Balances ---
--- Get Users' Balances ---
- <max balance> and <min balance> can be '-' to indicate "none"
-c ENUM_USERS[ <min balance> [<max balance>]]\n
+c ENUM_USERS[ min_balance:<balance>][ max_balance:<balance>][ flags:<flagset>][ last_seen_before:<unix_timestamp>][ last_seen_after:<unix_timestamp>][ sort:<field>[-desc]]\n
s 201 Users <count>\n
s 202 User <username> <balance> <flags>\n
...
s 200 List End\n
s 201 Users <count>\n
s 202 User <username> <balance> <flags>\n
...
s 200 List End\n
+<balance> Integer balance value (in cents)
+<flagset> Flag values (same format as USER_FLAGS)
+<unix_timestamp> Number of seconds since 1/Jan/1970
+<field> Sort field (name,balance,lastseen)
--- Get a User's Balance ---
c USER_INFO\n
s 202 User <username> <balance> <flags>\n
--- Get a User's Balance ---
c USER_INFO\n
s 202 User <username> <balance> <flags>\n
+=== User Manipulation ===
--- Add a new user ---
c USER_ADD <username>\n
s 200 User Added\n or 403 Not Wheel\n or 404 User Exists\n
--- Set user flags ---
<flags> is a comma-separated list of flag values (optionally preceded by
--- Add a new user ---
c USER_ADD <username>\n
s 200 User Added\n or 403 Not Wheel\n or 404 User Exists\n
--- Set user flags ---
<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 <username> <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 ---
c USER_FLAGS <username> <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 ---
UCC
git Repository :: git.ucc.asn.au