HL Protocol: Difference between revisions

From Hotline Wiki
Jump to navigationJump to search
Transactions
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{| class="wikitable sortable" style="width:100%"
__NOTOC__
! ID !! Type !! Initiator !! Constant
{{HotlineNav}}
= Hotline Network Protocol – Version 1.9 =
 
'''Property of Hotsprings Inc.'''
Publicly licensed under the GPL
 
== Introduction ==
Hotline client is an application providing user interface for end-user services (chat, messaging, file services and other). Hotline server provides services and facilitates communication between all clients.
 
=== Port Assignments ===
Additional port numbers are determined by using the '''base port number''':
{| class="wikitable"
! Port !! Usage
|-
|-
| 100 || Error || ? || <nowiki>myTran_Error</nowiki>
| Base port || Regular transactions
|-
|-
| 101 || Get messages || Client || <nowiki>myTran_GetMsgs</nowiki>
| Base port + 1 || Upload/download
|-
|-
| 102 || New message || Server || <nowiki>myTran_NewMsg</nowiki>
| Base port + 2 || HTTP tunneling for regular transactions
|-
|-
| 103 || Old post news || Client || <nowiki>myTran_OldPostNews</nowiki>
| Base port + 3 || HTTP tunneling for uploads/downloads
|}
'''Note:''' Numeric data is always in network byte order (big-endian).
 
== Technical Documentation Index ==
 
=== Core Protocol ===
* [[Transactions]] – The master list of all 411 Transaction IDs and their constants.
* [[TransactionFields]] – Detailed list of Field IDs (100–337) and data types.
* [[AccessPriviledges]] – The 64-bit access privilege bitmap breakdown.
* [[TransactionSequence]] – Logic for Login and Invite-to-Chat sequences.
 
=== Data Structures ===
* [[BinaryStructure]] – Details on the Flattened File Object (FILP) and Resume data (RFLT).
* [[NewsStructure]] – Binary headers for news categories, articles, and posters.
 
=== External Interfaces ===
* [[TrackerInterface]] – How servers register with and clients query the Tracker (HTRK).
* [[HTTPTunneling]] – Encapsulation logic for GET/POST proxy traversal.
* [[GlobalServerTransactions]] – Management and querying of the Global Server database.
 
== Session Initialization ==
After establishing TCP connection, both client and server start the TRTP handshake.
 
=== Client Request ===
{| class="wikitable"
! Description !! Size !! Data !! Note
|-
|-
| 104 || Server message || Server || <nowiki>myTran_ServerMsg</nowiki>
| Protocol ID || 4 || 'TRTP' || 0x54525450
|-
|-
| 105 || Send chat || Client || <nowiki>myTran_ChatSend</nowiki>
| Sub-protocol ID || 4 || || User defined
|-
|-
| 106 || Chat message || Server || <nowiki>myTran_ChatMsg</nowiki>
| Version || 2 || 1 || Currently 1
|-
|-
| 107 || Login || Client || <nowiki>myTran_Login</nowiki>
| Sub-version || 2 || || User defined
|-
|}
| 108 || Send instant message || Client || <nowiki>myTran_SendInstantMsg</nowiki>
 
|-
=== Server Reply ===
| 109 || Show agreement || Server || <nowiki>myTran_ShowAgreement</nowiki>
{| class="wikitable"
|-
! Description !! Size !! Data !! Note
| 110 || Disconnect user || Client || <nowiki>myTran_DisconnectUser</nowiki>
|-
| 111 || Disconnect message || Server || <nowiki>myTran_DisconnectMsg</nowiki>
|-
| 112 || Invite to a new chat || Client || <nowiki>myTran_InviteNewChat</nowiki>
|-
| 113 || Invite to chat || Client/Server || <nowiki>myTran_InviteToChat</nowiki>
|-
| 114 || Reject chat invite || Client || <nowiki>myTran_RejectChatInvite</nowiki>
|-
| 115 || Join chat || Client || <nowiki>myTran_JoinChat</nowiki>
|-
| 116 || Leave chat || Client || <nowiki>myTran_LeaveChat</nowiki>
|-
| 117 || Notify chat user change || Server || <nowiki>myTran_NotifyChatChangeUser</nowiki>
|-
| 118 || Notify chat delete user || Server || <nowiki>myTran_NotifyChatDeleteUser</nowiki>
|-
| 119 || Notify chat subject || Server || <nowiki>myTran_NotifyChatSubject</nowiki>
|-
| 120 || Set chat subject || Client || <nowiki>myTran_SetChatSubject</nowiki>
|-
| 121 || Agreed || Client || <nowiki>myTran_Agreed</nowiki>
|-
| 122 || Server banner || Server || <nowiki>myTran_ServerBanner</nowiki>
|-
| 200 || Get file name list || Client || <nowiki>myTran_GetFileNameList</nowiki>
|-
| 202 || Download file || Client || <nowiki>myTran_DownloadFile</nowiki>
|-
| 203 || Upload file || Client || <nowiki>myTran_UploadFile</nowiki>
|-
| 204 || Delete file || Client || <nowiki>myTran_DeleteFile</nowiki>
|-
| 205 || New folder || Client || <nowiki>myTran_NewFolder</nowiki>
|-
| 206 || Get file info || Client || <nowiki>myTran_GetFileInfo</nowiki>
|-
| 207 || Set file info || Client || <nowiki>myTran_SetFileInfo</nowiki>
|-
| 208 || Move file || Client || <nowiki>myTran_MoveFile</nowiki>
|-
| 209 || Make file alias || Client || <nowiki>myTran_MakeFileAlias</nowiki>
|-
| 210 || Download folder || Client || <nowiki>myTran_DownloadFldr</nowiki>
|-
| 211 || Download info || Server || <nowiki>myTran_DownloadInfo</nowiki>
|-
| 212 || Download banner || Client || <nowiki>myTran_DownloadBanner</nowiki>
|-
| 213 || Upload folder || Client || <nowiki>myTran_UploadFldr</nowiki>
|-
| 300 || Get user name list || Client || <nowiki>myTran_GetUserNameList</nowiki>
|-
| 301 || Notify user change || Server || <nowiki>myTran_NotifyChangeUser</nowiki>
|-
| 302 || Notify delete user || Server || <nowiki>myTran_NotifyDeleteUser</nowiki>
|-
| 303 || Get client info text || Client || <nowiki>myTran_GetClientInfoText</nowiki>
|-
| 304 || Set client user info || Client || <nowiki>myTran_SetClientUserInfo</nowiki>
|-
| 350 || New user || Client || <nowiki>myTran_NewUser</nowiki>
|-
| 351 || Delete user || Client || <nowiki>myTran_DeleteUser</nowiki>
|-
| 352 || Get user || Client || <nowiki>myTran_GetUser</nowiki>
|-
| 353 || Set user || Client || <nowiki>myTran_SetUser</nowiki>
|-
| 354 || User access || Server || <nowiki>myTran_UserAccess</nowiki>
|-
| 355 || User broadcast || Client/Server || <nowiki>myTran_UserBroadcast</nowiki>
|-
| 370 || Get news category list || Client || <nowiki>myTran_GetNewsCatNameList</nowiki>
|-
| 371 || Get news article list || Client || <nowiki>myTran_GetNewsArtNameList</nowiki>
|-
| 380 || Delete news item || Client || <nowiki>myTran_DelNewsItem</nowiki>
|-
| 381 || New news folder || Client || <nowiki>myTran_NewNewsFldr</nowiki>
|-
| 382 || New news category || Client || <nowiki>myTran_NewNewsCat</nowiki>
|-
| 400 || Get news article data || Client || <nowiki>myTran_GetNewsArtData</nowiki>
|-
|-
| 410 || Post news article || Client || <nowiki>myTran_PostNewsArt</nowiki>
| Protocol ID || 4 || 'TRTP' || 0x54525450
|-
|-
| 411 || Delete news article || Client || <nowiki>myTran_DelNewsArt</nowiki>
| Error code || 4 || || 0 = no error
|}
|}
[[Category:Hotline]]
[[Category:Network Protocols]]

Latest revision as of 20:23, 3 March 2026

Hotline Network Protocol – Version 1.9

Property of Hotsprings Inc. Publicly licensed under the GPL

Introduction

Hotline client is an application providing user interface for end-user services (chat, messaging, file services and other). Hotline server provides services and facilitates communication between all clients.

Port Assignments

Additional port numbers are determined by using the base port number:

Port Usage
Base port Regular transactions
Base port + 1 Upload/download
Base port + 2 HTTP tunneling for regular transactions
Base port + 3 HTTP tunneling for uploads/downloads

Note: Numeric data is always in network byte order (big-endian).

Technical Documentation Index

Core Protocol

Data Structures

  • BinaryStructure – Details on the Flattened File Object (FILP) and Resume data (RFLT).
  • NewsStructure – Binary headers for news categories, articles, and posters.

External Interfaces

Session Initialization

After establishing TCP connection, both client and server start the TRTP handshake.

Client Request

Description Size Data Note
Protocol ID 4 'TRTP' 0x54525450
Sub-protocol ID 4 User defined
Version 2 1 Currently 1
Sub-version 2 User defined

Server Reply

Description Size Data Note
Protocol ID 4 'TRTP' 0x54525450
Error code 4 0 = no error