… | |
… | |
20 | Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 | --> |
21 | --> |
22 | </head> |
22 | </head> |
23 | <body> |
23 | <body> |
24 | |
24 | |
25 | <h1>$Revision: 1.32 $</h1> |
25 | <h1>$Revision: 1.33 $</h1> |
26 | |
26 | |
27 | <h1>KGS Protocol Description</h1> |
27 | <h1>KGS Protocol Description</h1> |
28 | |
28 | |
29 | <p>This XML document describes the KGS protocol. It is also used |
29 | <p>This XML document describes the KGS protocol. It is also used |
30 | to automatically generate the perl parser for all the messages and |
30 | to automatically generate the perl parser for all the messages and |
31 | structures in the protocol. Adapting it to other languages should be |
31 | structures in the protocol. Adapting it to other languages should be |
32 | trivial.</p> |
32 | almost trivial.</p> |
33 | |
33 | |
34 | <p><b>Please note that the author of KGS has told me that he will |
34 | <p><b>Please note that the author of KGS has told me that he will |
35 | change the protocol in response to my efforts. No problems with |
35 | change the protocol in response to my efforts. No problems with |
36 | changing the protocol for good, but he does this just to make it |
36 | changing the protocol for good, but he does this just to make it |
37 | more difficult to reverse-engineer it, since his changes are neither |
37 | more difficult to reverse-engineer it, since his changes are neither |
… | |
… | |
310 | |
310 | |
311 | <message type="0100" name="gnotice" src="client"> |
311 | <message type="0100" name="gnotice" src="client"> |
312 | <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results |
312 | <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results |
313 | in a <ref reply="gnotice"/> sent to all users.</p> |
313 | in a <ref reply="gnotice"/> sent to all users.</p> |
314 | <member name="notice" type="STRING"/> |
314 | <member name="notice" type="STRING"/> |
|
|
315 | </message> |
|
|
316 | |
|
|
317 | <message type="0200" name="notify_add" src="client"> |
|
|
318 | |
|
|
319 | <p>Probably setting a notifier on a username, to get informed about |
|
|
320 | changes using <ref reply="notify_upd"/> messages. ???</p> |
|
|
321 | |
|
|
322 | <member name="name" type="username"/> |
|
|
323 | </message> |
|
|
324 | |
|
|
325 | <message type="0201" name="notify_del" src="client"> |
|
|
326 | |
|
|
327 | <p>Probably remove the notifier again.</p> |
|
|
328 | |
|
|
329 | <member name="name" type="username"/> |
315 | </message> |
330 | </message> |
316 | |
331 | |
317 | <message type="0318" name="list_rooms" src="client"> |
332 | <message type="0318" name="list_rooms" src="client"> |
318 | <p>List the rooms in a specific group/category. Results in a <ref reply="upd_rooms"/> message.</p> |
333 | <p>List the rooms in a specific group/category. Results in a <ref reply="upd_rooms"/> message.</p> |
319 | <member name="group" type="U8"/> |
334 | <member name="group" type="U8"/> |
… | |
… | |
609 | ** maybe more following? ** |
624 | ** maybe more following? ** |
610 | </message> |
625 | </message> |
611 | |
626 | |
612 | <message type="0008" name="userinfo" src="server"> |
627 | <message type="0008" name="userinfo" src="server"> |
613 | User info. |
628 | User info. |
|
|
629 | <member name="_unused0" type="flag"/> |
614 | <member name="user" type="user"/> |
630 | <member name="user" type="user"/> |
615 | <member name="_unused" type="U64"/> |
631 | <member name="_unused1" type="U64"/> |
616 | <member name="realname" type="realname"/> |
632 | <member name="realname" type="realname"/> |
617 | <member name="email" type="email"/> |
633 | <member name="email" type="email"/> |
618 | <member name="info" type="userinfo"/> |
634 | <member name="info" type="userinfo"/> |
619 | <member name="homepage" type="url"/> |
635 | <member name="homepage" type="url"/> |
620 | <member name="regdate" type="timestamp"/> |
636 | <member name="regdate" type="timestamp"/> |
… | |
… | |
691 | isn't valid. Strange form of keepalive? |
707 | isn't valid. Strange form of keepalive? |
692 | </message> |
708 | </message> |
693 | |
709 | |
694 | <message type="001e" name="usergraph" src="server"> |
710 | <message type="001e" name="usergraph" src="server"> |
695 | User graph data. |
711 | User graph data. |
|
|
712 | <member name="name" type="username"/> |
696 | <member name="data" type="I16" array="yes"/> |
713 | <member name="data" type="I16" array="yes"/> |
697 | If empty, no graph is available. The unit seems to |
714 | If empty, no graph is available. The unit seems to |
698 | be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100. |
715 | be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100. |
699 | There is probably one entry per day, the newest one last. |
716 | There is probably one entry per day, the newest one last. |
700 | </message> |
717 | </message> |
… | |
… | |
719 | <message type="0100" name="gnotice" src="server"> |
736 | <message type="0100" name="gnotice" src="server"> |
720 | global notice, sent to everybody |
737 | global notice, sent to everybody |
721 | <member name="notice" type="STRING"/> |
738 | <member name="notice" type="STRING"/> |
722 | </message> |
739 | </message> |
723 | |
740 | |
724 | <message type="0202" name="upd_user" src="server"> |
741 | <message type="0202" name="notify_event" src="server"> |
725 | # maybe soe notify? Totally unclear. |
742 | # maybe soe notify? Totally unclear. |
726 | # loc 0" type="chat(?) loc 1 => gameinfo?, loc 2 => game result (more data) |
743 | # loc 0" type="chat(?) loc 1 => gameinfo?, loc 2 => game result (more data) |
727 | <member name="location" type="U32"/> |
744 | <member name="event" type="U32"/> |
728 | <member name="user" type="user"/> |
745 | <member name="user" type="user"/> |
729 | <member name="lotsofinfo" type="DATA" guard-member="location" guard-cond="== 2"/> |
746 | <member name="lotsofinfo" type="game_record" guard-member="event" guard-cond="== 2"/> |
|
|
747 | <p>Game result record?</p> |
|
|
748 | |
730 | </message> |
749 | </message> |
731 | |
750 | |
732 | <message type="0310" name="priv_room" src="server"> |
751 | <message type="0310" name="priv_room" src="server"> |
733 | "permission denied" when joining a room |
752 | "permission denied" when joining a room |
734 | <member name="name" type="STRING"/> |
753 | <member name="name" type="STRING"/> |