4. Cabinet Power On
4.1 Endpoint
/sys/servlet/PowerOn
4.2 Request
All requests to this endpoint MUST be DFI-encoded.
Field | Content | Maximum length | Required | Comments |
---|---|---|---|---|
game_id |
Game ID | 5 | Yes | |
ver |
Game version | 5 | Yes | 0 to 65.54 |
serial |
Board serial | 11 | Yes | |
ip |
Store IP | 15 | Yes | |
firm_ver |
Firmware/library version | 6 | No | -99999 to 99999 . Represents a semver as %01d%02d%02d |
boot_ver |
Boot ROM version | 6 | No | -99999 to 99999 . Formatted as %02X%02X |
encode |
Response encoding | 9 | No | One of:
EUC-JP if unspecified. |
format_ver |
Format version | 11 | No | Defaults to 1.00 if unspecified or negative. |
hops |
Number of hops | 6 | No | -99999 to 99999 , defaults to -1 if unspecified |
Field | Content | Maximum length | Required | Comments |
---|---|---|---|---|
game_id |
Game ID | 5 | Yes | |
ver |
Game version | 5 | Yes | 0 to 65.54 |
serial |
Board serial | 11 | Yes | |
ip |
Store IP | 15 | Yes | |
firm_ver |
Firmware/library version | 6 | No | -99999 to 99999 . Represents a semver as %01d%02d%02d |
boot_ver |
Boot ROM version | 6 | No | -99999 to 99999 . Formatted as %02X%02X |
encode |
Response encoding | 9 | No | One of:
EUC-JP if unspecified. |
format_ver |
Format version | 11 | Yes | Defaults to 1.00 if unspecified or negative. |
hops |
Number of hops | 6 | No | -99999 to 99999 , defaults to -1 if unspecified |
Field | Content | Maximum length | Required | Comments |
---|---|---|---|---|
game_id |
Game ID | 5 | Yes | |
ver |
Game version | 5 | Yes | 0 to 65.54 |
serial |
Board serial | 11 | Yes | |
ip |
Store IP | 15 | Yes | |
firm_ver |
Firmware/library version | 6 | No | -99999 to 99999 . Represents a semver as %01d%02d%02d |
boot_ver |
Boot ROM version | 6 | No | -99999 to 99999 . Formatted as %02X%02X |
encode |
Response encoding | 9 | No | One of:
EUC-JP if unspecified. |
format_ver |
Format version | 11 | Yes | Defaults to 1.00 if unspecified or negative. |
hops |
Number of hops | 6 | No | -99999 to 99999 , defaults to -1 if unspecified |
token |
None | No |
Field | Content | Maximum length | Required | Comments |
---|---|---|---|---|
title_id |
Game ID | 5 | Yes | |
title_ver |
Game version | 5 | Yes | 0 to 65.54 |
machine |
Board serial | 11 | Yes | |
firm_ver |
Firmware/library version | 6 | No | -99999 to 99999 . Represents a semver as %01d%02d%02d |
boot_ver |
Boot ROM version | 6 | No | -99999 to 99999 . Formatted as %02X%02X |
encode |
Response encoding | 9 | No | One of:
EUC-JP if unspecified. |
format_ver |
Format version | 11 | Yes | Defaults to 1.00 if unspecified or negative. |
hops |
Number of hops | 6 | ? | -99999 to 99999 , defaults to -1 if unspecified |
token |
None | No |
Field | Content | Maximum length | Required | Comments |
---|---|---|---|---|
game_id |
Game ID | 5 | Yes | |
game_ver |
Game version | 5 | Yes | 0 to 65.54 |
machine |
Board serial | 11 | Yes | |
server |
?? | ? | Yes | |
firm_ver |
Firmware/library version | 6 | No | -99999 to 99999 . Represents a semver as %01d%02d%02d |
boot_ver |
Boot ROM version | 6 | No | -99999 to 99999 . Formatted as %02X%02X |
encode |
Response encoding | 9 | No | One of:
EUC-JP if unspecified. |
format_ver |
Format version | 11 | Yes | Defaults to 1.00 if unspecified or negative. |
hops |
Number of hops | 6 | ? | -99999 to 99999 , defaults to -1 if unspecified |
token |
None | No |
“game_id=%s&ver=%s&serial=%s&server=%s&ip=%s&firm_ver=%01d%02d%02d&boot_ver=%02X%02X&format_ver=%s&hops=%d\r\n”
Field | Content | Maximum length | Required | Comments |
---|---|---|---|---|
game_id |
Game ID | 5 | Yes | |
ver |
Game version | 5 | Yes | 0 to 65.54 |
serial |
Board serial | 11 | Yes | |
ip |
Store IP | 15 | Yes | |
firm_ver |
Firmware/library version | 6 | No | -99999 to 99999 . Represents a semver as %01d%02d%02d |
boot_ver |
Boot ROM version | 6 | No | -99999 to 99999 . Formatted as %02X%02X |
encode |
Response encoding | 9 | No | One of:
EUC-JP if unspecified. |
format_ver |
Format version | 11 | Yes | Defaults to 1.00 if unspecified or negative. |
hops |
Number of hops | 6 | No | -99999 to 99999 , defaults to -1 if unspecified |
token |
None | No | ||
auth_data |
1535 | Yes |
See full page regarding Auth V2
All fields are of type string.
Name | Required | Default | Meaning |
---|---|---|---|
game_id |
Yes | The four-digit game ID | |
ver |
Yes | The game version | |
serial |
Yes | The keychip serial number | |
ip |
Yes | The tenpo router IP address (%d.%d.%d.%d ) |
|
firm_ver |
Yes | The ALL.Net library version (a semantic version, formatted as %01d%02d%02d ) |
|
boot_ver |
Yes | Unknown. Just pass 0000. (%02X%02X ) |
|
encode |
EUC-JP |
Request encoding. EUC-JP , Shift_JIS and UTF-8 are common, but be prepared to handle more. |
|
format_ver |
1.00 |
Request format version. Parsed as a float, however 1.00 , 2.00 and 3 are the only values that should be observed. |
|
hops |
-1 |
||
token |
Added in format 3, this value is echoed in the response. |
Observed values for firm_ver
0.01.00
0.02.00
2.00.07
2.00.08
2.01.02
3.00.00
3.00.01
3.00.02
3.00.03
3.00.04
3.00.05
3.00.09
5.00.00
6.00.00
Other values likely exist.
Warning
One of the parameters in the request is ip
. This value is controlled by the authenticating client. It is recommended, where possible, to instead use the IP address of the connecting client, noting that if the service is behind a reverse proxy (eg Cloudflare) a degree of un-masking may be required first to reveal this value.
While a legitimate cabinet will be honest with this value, returning the determined address for tenporouter.loc
, a malicious user may choose to spoof the value here. Additionally, should you choose to support clients connecting from personal computers via a loader, this value is likely to be nonsensical.
The server should then use the provided information to authenticate the machine as it sees fit, and will then return the information required for use of ALL.Net services.
4.3 Response
The response structure varies depending on the format version in use.
Field | Content | Type | Maximum length | Required | Comments |
---|---|---|---|---|---|
stat |
Status | numeric | 2 | Yes |
|
place_id |
Store ID | string | 4 | Yes | Uppercase hexadecimal |
uri |
Game server URI | string | 128 | Yes2 | |
host |
Game server hostname | string | 128 | Yes2 | |
name |
Store name | string | 60 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 180 bytes |
nickname |
Store nickname | string | 40 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 120 bytes |
year |
Server time | numeric | 4 | Yes | 1970 to 9999 |
month |
numeric | 2 | Yes | 1 to 12 |
|
day |
numeric | 2 | Yes | 1 to 31 |
|
hour |
numeric | 2 | Yes | 0 to 23 |
|
minute |
numeric | 2 | Yes | 0 to 59 |
|
second |
numeric | 2 | Yes | 0 to 59 |
|
setting |
Game-specific | numeric | 6 | Yes | -99999 to 99999 1 |
region0 |
Region code | numeric | 10 | Yes | 0 to 9999999999 |
region_name0 |
Region 1 | string | 48 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 144 bytes |
region_name1 |
Region 2 | string | 48 | Yes | |
region_name2 |
Region 3 | string | 48 | Yes | |
region_name3 |
Region 4 | string | 48 | Yes |
Field | Content | Type | Maximum length | Required | Comments |
---|---|---|---|---|---|
stat |
Status | numeric | 2 | Yes |
|
place_id |
Store ID | string | 4 | Yes | Uppercase hexadecimal |
uri |
Game server URI | string | 128 | Yes2 | |
host |
Game server hostname | string | 128 | Yes2 | |
name |
Store name | string | 60 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 180 bytes |
nickname |
Store nickname | string | 40 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 120 bytes |
year |
Server time | numeric | 4 | Yes | 1970 to 9999 |
month |
numeric | 2 | Yes | 1 to 12 |
|
day |
numeric | 2 | Yes | 1 to 31 |
|
hour |
numeric | 2 | Yes | 0 to 23 |
|
minute |
numeric | 2 | Yes | 0 to 59 |
|
second |
numeric | 2 | Yes | 0 to 59 |
|
setting |
Game-specific | numeric | 6 | Yes | -99999 to 99999 1 |
region0 |
Region code | numeric | 10 | Yes | 0 to 9999999999 |
region_name0 |
Region 1 | string | 48 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 144 bytes |
region_name1 |
Region 2 | string | 48 | Yes | |
region_name2 |
Region 3 | string | 48 | Yes | |
region_name3 |
Region 4 | string | 48 | Yes | |
country |
Country code | string | 3 | Yes | |
timezone |
Timezone | string | 6 | Yes | Constant +09:00 |
res_class |
string | 19 | Yes | Constant PowerOnResponseVer2 |
Field | Content | Type | Maximum length | Required | Comments |
---|---|---|---|---|---|
stat |
Status | numeric | 2 | Yes |
|
place_id |
Store ID | string | 4 | Yes | Uppercase hexadecimal |
uri |
Game server URI | string | 128 | Yes2 | |
host |
Game server hostname | string | 128 | Yes2 | |
name |
Store name | string | 60 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 180 bytes |
nickname |
Store nickname | string | 40 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 120 bytes |
setting |
Game-specific | numeric | 6 | Yes | -99999 to 99999 1 |
region0 |
Region code | numeric | 10 | Yes | 0 to 9999999999 |
region_name0 |
Region 1 | string | 48 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 144 bytes |
region_name1 |
Region 2 | string | 48 | Yes | |
region_name2 |
Region 3 | string | 48 | Yes | |
region_name3 |
Region 4 | string | 48 | Yes | |
country |
Country code | string | 3 | Yes | |
allnet_id |
ALL.Net ID | numeric | 11 | Yes | -9999999999 to 9999999999 |
utc_time |
Authentication time | string | 20 | Yes | yyyy-MM-dd'T'HH:mm:ss'Z' |
client_timezone |
Client timezone | string | 5 | Yes | eg +9000 |
res_ver |
Response version | string | 1 | Yes | Constant 3 |
token |
Token | string | Yes | Echoes request. Defaults to null if not present in request. |
Field | Content | Type | Maximum length | Required | Comments |
---|---|---|---|---|---|
result |
Status | numeric | 2 | Yes |
|
place_id |
Store ID | string | 4 | Yes | Uppercase hexadecimal |
title_uri |
Game server URI | string | 128 | Yes2 | |
title_host |
Game server hostname | string | 128 | Yes2 | |
name |
Store name | string | 60 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 180 bytes |
nickname |
Store nickname | string | 40 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 120 bytes |
setting |
Game-specific | numeric | 6 | Yes | -99999 to 99999 1 |
region0 |
Region code | numeric | 10 | Yes | 0 to 9999999999 |
region_name0 |
Region 1 | string | 48 | Yes | URL-encoded UTF-8. After encoding, maximum length will be 144 bytes |
region_name1 |
Region 2 | string | 48 | Yes | |
region_name2 |
Region 3 | string | 48 | Yes | |
region_name3 |
Region 4 | string | 48 | Yes | |
country |
Country code | string | 3 | Yes | |
allnet_id |
ALL.Net ID | numeric | 11 | Yes | -9999999999 to 9999999999 |
utc_time |
Authentication time | string | 20 | Yes | yyyy-MM-dd'T'HH:mm:ss'Z' |
client_timezone |
Client timezone | string | 5 | Yes | eg +9000 |
res_ver |
Response version | string | 1 | Yes | Constant 5 |
location_ip |
string | 15 | Yes | ||
token |
Token | string | None | Yes | Echoes request. Defaults to null if not present in request. |
Field | Content | Type | Maximum length | Required | Comments |
---|---|---|---|---|---|
result |
Result | ||||
place_id |
Store ID | ||||
uri1 |
Title server URI 1 | ||||
uri2 |
Title server URI 2 | ||||
name |
Store name | URL-encoded UTF-8 | |||
nickname |
Store nickname | URL-encoded UTF-8 | |||
setting |
Game-specific | ||||
region0 |
Region code | ||||
region_name0 |
Region 1 | URL-encoded UTF-8 | |||
region_name1 |
Region 2 | Constant empty | |||
region_name2 |
Region 3 | Constant empty | |||
region_name3 |
Region 4 | Constant empty | |||
country |
Country code | Constant CHN |
|||
location_type |
1: Physical store, -1: Development store | ||||
utc_time |
yyyy-MM-dd'T'HH:mm:ss'Z' |
||||
client_timezone |
Constant +800 |
||||
res_ver |
Constant 3 |
||||
token |
Echoes request. Defaults to null if not present in request. |
Field | Content | Type | Maximum length | Required | Comments |
---|---|---|---|---|---|
auth_data |
|||||
packet_data |
See full page regarding Auth V2
V5: result=0&client_timezone=…&utc_time=…&name=…&nickname=…®ion_name0=…®ion_name1=…®ion_name2=…®ion_name3=…
Name | Required | Default | Version added | Final version present | Notes |
---|---|---|---|---|---|
stat |
Yes | Success: 1 , Game failure: -1 , Machine failure: -2 , Location failure: -3 |
|||
uri |
Yes | empty | Title server URI3. Will be empty if stat<=0 | ||
host |
Yes | empty | Title server hostname3. Will be empty if stat<=0 | ||
place_id |
ALL.Net location ID. Must fit within a signed int16. | ||||
name |
ALL.Net location name | ||||
nickname |
ALL.Net location nickname | ||||
region0 |
Yes | 0 |
Region information. | ||
region_name0 |
Yes | empty | |||
region_name1 |
Yes | empty | |||
region_name2 |
Yes | empty | |||
region_name3 |
Yes | empty | |||
country |
2 | ALL.Net 3-character country code | |||
allnet_id |
3 | ||||
client_timezone |
Yes | empty | 3 | Example +0900 |
|
utc_time |
Yes | 3 | yyyy-MM-dd'T'HH:mm:ss'Z' |
||
res_ver |
Yes | 3 | Will always be the literal 3 |
||
token |
Yes | 3 | The token from the request | ||
year |
Yes | 2 | Current time | ||
month |
Yes | 2 | |||
day |
Yes | 2 | |||
hour |
Yes | 2 | |||
minute |
Yes | 2 | |||
timezone |
Yes | 2 | 2 | Will always be the literal +09:00 |
|
res_class |
Yes | 2 | 2 | Will always be the literal PowerOnResponseVer2 |
|
setting |
Yes | Machine setting. 1 indicates the machine is OK, and should always be set. |
4.4 Suggested Authentication Process
The specific process used to authenticate a cabinet will vary by server implementation. The official ALL.Net services uses an incredibly length process, not documented here.
Instead, the following diagram is my personal recommendation for a simple way to implement this service while retaining flexability.