This repository has been archived on 2024-12-14. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2024-12-14/docs/useragent.rst

54 lines
1.9 KiB
ReStructuredText

User Agent
==========
Bitmessage user agents are a modified browser user agent with more structure
to aid parsers and provide some coherence. The user agent strings are arranged
in a stack with the most underlying software listed first.
Basic format::
/Name:Version/Name:Version/.../
Example::
/PyBitmessage:0.2.2/Corporate Mail System:0.8/
/Surdo:5.64/surdo-qt:0.4/
The version numbers are not defined to any strict format, although this guide
recommends:
* Version numbers in the form of Major.Minor.Revision (2.6.41)
* Repository builds using a date in the format of YYYYMMDD (20110128)
For git repository builds, implementations are free to use the git commitish.
However the issue lies in that it is not immediately obvious without the
repository which version preceeds another. For this reason, we lightly
recommend dates in the format specified above, although this is by no means
a requirement.
Optional ``-r1``, ``-r2``, ... can be appended to user agent version numbers.
This is another light recommendation, but not a requirement. Implementations
are free to specify version numbers in whatever format needed insofar as it
does not include ``(``, ``)``, ``:`` or ``/`` to interfere with the user agent
syntax.
An optional comments field after the version number is also allowed. Comments
should be delimited by parenthesis ``(...)``. The contents of comments is
entirely implementation defined although this document recommends the use of
semi-colons ``;`` as a delimiter between pieces of information.
Example::
/cBitmessage:0.2(iPad; U; CPU OS 3_2_1)/AndroidBuild:0.8/
Reserved symbols are therefore: ``/ : ( )``
They should not be misused beyond what is specified in this section.
``/``
separates the code-stack
``:``
specifies the implementation version of the particular stack
``( and )``
delimits a comment which optionally separates data using ``;``