Messor Network Protocol




Heading






Communication protocol description


Communication within Messor network occurs while using HTTP/HTTPS protocol by the POST method.
The protocol can be easily adapted to other transport protocols, for example tcp / ip.
Data are transmitted to in own format. The data transfferred are encrypted (several algorithms are supported) ,encryption key is installed during installation.
The client and server only are aware of the key. The password is just a precaution against brutforce and other attacks on the server.
The request consists of two parts.
The first request part (header).
Contains:
action           - request type
network_id       - unique identificator
network_password - password
client_version   - software version

The exceptions are registration and password recovery requests - they may not contain an identifier (network_id) and password (network_password).
Besides intra-network requests between peers are made without a password. (network_password).

The second request part: (data) contains data as a string in base64.
Delimiter - The current string divides the request into two parts and describes return data type.

Reply from server/peer
In response, you get data in the same format as the request.
The answer is provided between special tags (--- BEGIN MESSOR ---/--- END MESSOR ---) ,which allows using protocol even on free hosting or in other places as well, where may be other content in addition to the response.
The response is divided into two parts.

The first nce contains response headers (header)
And contains:
status          - Response status in the event of success ok or error (error code table)
server_version  - Server software version
The second part (data) contains data as the string in base64.
Delimiter - The current string divides the request into two parts (header and data) and describes return data type.

Status request example from peer server
action=peer_status
network_id=60550fc3c7eeae570fb9a8d4198b6c9c
network_password=123
client_version=0.4a
data_encr_array
ZiUYyp2YWHtqaXM5igk55I0MXIGQdu1k4S4TAq7Rvx7/Cau/9K0xvUGVCVBqZcU9fNdoHGbhfkAJic88EH2RO4/+4q3gIChCsFVX1rpnya+HfT4YvJF202srargAPq5/fdvsptgwl8WA7thoX515COzopaCmhOy8xJVqgAV1QQqrm61DKBjpGX9mvbBzdjZu3NkeTkP6ztav/7E4oNmKN+VipFnyYUdlaOpoFRT8y8Ljn87S8I6kvgvL6uqSJw==
Response example from server peer
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
dSwU3ayfc2x7bnNtlQJhpqlMT/6HY6Q1iSwMDpTJrjP6BbaioPBp30iKDghWNpQrfodvWjaJahNMm58yTyKROOCitfjtcntAtgRdhblinf3XeDtAu8Uth2sjbexWO/4jdtm8qY43ksS6+49+SJ5ubua07rbLwrj6j8VjjA9zEwit9e4eO160WBlu5vM2H3A5zJNAEUvxz4P7ruBsrY+MNuNp9QjxMxRjbbpiQByjyMPnycrUpYLx61Sb6LyUHs8DxsjjE5sZA47DQkQgarkDk4NER0oqAi4=
--- END MESSOR ---

Ping request example from peer to peer
client_version=0.4a
data_plaint_string
Peer response example
--- BEGIN MESSOR ---
 status=ok
 version=0.4a
 data_plaint_string
 SGk=
 --- END MESSOR ---

Peer


This is a network member - any site / server, which has got Messor-client installed
Peer tasks:

Premium peer


These are premium network members, who pay for subscriptions..
Peer tasks:
Differences from regular peers:
The servers content was taken into account to maintain the network when designing the messor network.
Messor network provides monetization, while being one of the network development and support organs !

Server


Each network member, having got Messor-server installed, whose address is entered in server list
Is responsible for:


Trust response is correct answers determining system


Within synchronization, peer requests all servers from the list server list and compares the server responses sum hash .
Then it compares the identical answers number and always considers those answers, being more common than others to be true.
Thus, if one or several servers in the network fail or issue fake data (attack on the network), this will not affect the network in any way,
since no one will trust their responses.



Peer trust is peer data trust system


Data obtained from peer is used when generating a database.
The higher the trust of this peer, the more confidence to the data received.
Trust is determined by the verifications number (verification types table) multiplied by peer runtime.
The goal is to prevent fake peers from clogging servers with fake data.

Note! When designing networks Messor-based networks, keep in mind that while the network is small and you have few peers, you must monitor their trust level and fill the network with peers being controlled.
Messor.Network Constantly adds its peers with advanced traps for scanning, hereby ensuring stable network operation.



Server List - network server data distribution and storage system


The servers list is stored in plain text for each peer and server.
When updating the servers list, file's hash sum sha256 is used as the version.
The servers list is updated while using a server request. peer_get_server_list.
In the event of all servers fall in the network, each peer stores the last known 100 - 300 addresses of other peers in the network. To restore the server list, you may use the query peer_get_server_list in order to get the server list from other peers.
Once the first peer installs a working server list, it will start to spread across the network.
Besides you may get actual server lists manually, for example, on official network websites.
Format: Recording format in a string through \t
    0 - full server's url
    1 - Server's country GEO code or server comment in one string
Server list example:
    https://main.messor.network/messor/	MAIN
    https://de.messor.network/messor/	DE
    https://ru.messor.network/messor/	RU
    https://nl.messor.network/messor/	NL
    https://us.messor.network/messor/	US
    https://th.messor.network/messor/	TH
    https://cn.messor.network/messor/	CN
    https://backup1.messor.network/messor/	BACKUP_SERVER1
    https://backup2.messor.network/messor/	BACKUP_SERVER2

Messor.Network I took care of the network protection. The servers will be installed in all available countries as the network grows, servers are monitored 24/7 by the support service.
The network servers failure at once Messor.Network is almost impossible!
Note! When designing Messor-based networks, keep in mind that while the network is not large and you have few servers, if they all fall at once and one of the malicious peers replaces the serer list with its own, it will get full control over the network.



Database


The database version consists of two parts, separated by a symbol _
The first part is a digital designation of the base creation date, consisting of day + month + year,
then the database file checksum in sha256.
It turns out that the name contains both the version and checksum of this file.

Format name: [date]_[sha256_check_sum]
Example file name: 200420_c38e529ab7e40133a757c8714d3d6601d33c7ce299ebffec5bf7a4ba586e1b75
Database content:
Line 0 Database version, publication date, comments;
Line 1 Regular expression to block by UserAgent (base64);
Line 2 Rules for .htaccess to detect scans (base64);
Line 3 Regular expressions to parse GET POST data and block attacks (base64);
Line 4 Further blocked ip addresses in a string.


Data types


Data are always a line in base64 Depending on the type, it may contain encrypted data or plaintext, the data array or a line

data type line generation: data_[encryption]_[type]
data_      - perfix
encryption - encryption (encr - encrypted plaint - plain text)
_          - delimiter
type       - type (string - array data line - data array)

Possible data types table

Data type string Description
data_encr_array Зашифрованный массив данных
data_encr_string Encrypted data string
data_plaint_array Plaint data array
data_plaint_string Plaint data array



Array type


Each line contains a key and values separated by a sign "=".
Values (value) are codded in url (urlencode) format.
Example (raw):
key=value
other_key=123
text=Hello+World

Parsed (raw):
Array
(
    [key] => value
    [other_key] => 123
    [text] => Hello World
)

String type


String with data
Example:
long string long string long string long string long string long string long string long string long string
long string long string long string long string long string 




Pack Encr


String encrypted in base64
Example:
R(�ӏfac;o>�k��M�y�


Warning, RC4 algorithm is deprecated.
Used for maximum compatibility, since it operates without additional libraries.
Recommended algorithms are AES128, Blowfish

Supported encryption algorithm table


Alg key key size
RC4 rc4 40–2048
AES-128 aes128 128
AES-256 aes256 256
Blowfish bf 64




Pack Plaint


Clear text data packed only in base64



Protocol description Peer->Server



peer_status


The server request contains the current melon database version, client version and server list version data
The server returns the current software, database and server list data in response

Data description:
client_version - Installed client version
database_version - Current database version
server_list_version - sha256 checksum server list
'
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
FNPs+Fe1TOUtvd9Fhx2nWUspyt/RNw3y010o0cM/gRGruAUNwfTyE0UxykqEc59en/3DqAICVz3JBHoC4YDGK8BuK1y+btMxYCGbIXrGKSqWuBgvETDbdv36kP3n5JsrB1AHosXJinPFRyNkHjwXno72NBjFtEg1gsxE6seihFXyJXEyySeZFexVT1E3sjxNo5pRBUr5hNo4YHX/3g058uj+59Du3obRO6WH/jUOGIHPVm36mRyPGjfcO+1RCA1cCwhAqr8Ayo5/lMDpriMpiH2SMfamNHn+8SbIcrlPQ3ryX2DMVz0NV3eMvEnziGuKOCCRZiVPiHsfeYql17WGpmDj97TwtXiTZ4WUjQSefXc=
--- END MESSOR ---
' (length=452)
Response (parsed/decrypted):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Array
        (
            [peer_status] => peer
            [trust] => 0
            [client_version] => 0.1b
            [database_version] => 040520_61bc64fa0fb72b89835ae6a5350a732b4910f4c63306663672c4ef70f9ea0e58
            [server_list_version] => 0ebf8724e8db4b48e53d972bb16053535302f5cd41a8a6ead5a705e7401d3409
        )

)



peer_echo


Echo request may contain an arbitrary data array or data string.
The server returns the data transferred to it in response.
Intended for testing and works on the servers only in debug_mode
Data description:
message - Message
 '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
WpoiA7FBPQkXJSsqtS0t8bgnabRiSu5gXXOmNIrX0YutVMFDkFlmmooR80AECZ8oFqQx0nNiKW4ENvZTC9X/u9k9YzXEWCDyPFTV/gyN+H8=
--- END MESSOR ---
' (length=196)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Array
        (
            [message] => Hello world.
        )

)



peer_register


New peer registration request
Peer sends all the data required for registration.
The server returns peer data or an error, if successful in response.
Attention! The data are transmitted in an unencrypted form at the current stage !
Such operations are recommended to be done exclusively through the https protocol, otherwise the data will be transmitted in open source!
When designing Messor-based networks, do not forget about it.
By default, all servers in Messor.Network operate in https mode.

Transmitted data

Key Rules Example Description
version 1.21a 1-12 az09. Client version
network_password 1dj83&^hge76%$239&^%dhgs76 min 6 max 32 Password to connect to the network
domain example.com domain name
ip 127.0.0.1 ipv4/ipv6 ip address
url full http/https url on messor http://example.com/path/messor.php
name A-z0-9 5-32 John Doe Full name
company A-z0-9 5-128 RogaCopita company Company name
email email address admin@example.com Webmaster's email address
phone 0-9 5 - 24 +79034562389 Phone number
about A-z0-9 5-256 My super company. Company description
country Russia Company country
lang RU Language
encryption_alg rc4 Encryption algorithm
client_version 0.4a Client version
os Linux Server's OS
web_server Apache2 Web server
php_version 7.2 PHP Version
cms Wordpress Installed CMS
cms_version Wordpress 3.4.3 CMS version
random_data grdf43g34 random data for generate random encryption key
plugin_version 1.4 Messor plugin version
'
--- BEGIN MESSOR ---
status=error
server_version=0.4a
data_plaint_string
ZW1wdHkgcmVnaXN0ZXIgbmV0d29ya19wYXNzd29yZA==
--- END MESSOR ---
' (length=138)
Response (parsed/decrypted):
Array
(
    [status] => error
    [header] => Array
        (
            [status] => error
            [server_version] => 0.4a
        )

    [data] => empty register network_password
)



peer_password_reset


Lost password recovery request network_id
Peer selects one of the verification types and sends the data to be confirmed..
For example, verification type is email
Value is admin@example.com
In response, the server responds with html text with further data recovery manual.

Note! At the current stage the data are transmitted in an unencrypted form!
Such operations are recommended to be done exclusively via the https protocol, otherwise the data will be transmitted in the open source!
be sure to remember about it when designing Messor-based networks.
By default, all servers in Messor.Network operate in https mode.
type value example description
email email admin@example.com Request verification code by email
email_confirm number 123456 Email confirmation code
sms phone number +79037678790 Request verification code to the phone via sms email
sms_confirm number 123456 Sending verification code from email
phone phone number +79037678790 Phone call request - you will be dictated by a code
phone_confirm number 123456 Confirmation code sending, received by phone
dns host name example.com Get verification manual through dns
dns_confirm Sending verification request via dns
mail address 134 e-mail address example in international format Email request with the code to e-mail.
mail_confirm number 123456 Sending verification code from a letter
docs Country Russia Get manuals for verification through a real meeting and submitting documents
docs_confirm Sending verification request while using document verification
Data description:
confirm - Verification type for password recovery.
value - transmitted value
  '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_plaint_string
Rm9yIHJlc2V0IHlvdXIgcGFzc3dvcmQgdXNlIHdlYiBzaXRlLg==
--- END MESSOR ---
' (length=143)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => For reset your password use web site.
)



peer_verify


Code verification request
For example, Peer sends a request for a verification code by email.
The server sends a confirmation code to the specified email address
Peer submits the confirmation code request to the server.
Server verifies the specified email.

Verification request sending example via telephone

Veryfi types - таблица типов верификации

type value example description
email email admin@example.com Code verification request by email
email_confirm number 123456 Email confirmation code
sms phone number +79037678790 Verification code request to the phone via sms message
sms_confirm number 123456 Verification code sending from sms messsage
phone phone number +79037678790 Phone call request - you will be provided with the code
phone_confirm number 123456 Confirmation code sending received by phone
dns host name example.com Get verification manual via dns
dns_confirm Verification request sending via dns
mail address 134 is the international format mailing address example Email request sending with the code to e-mail
mail_confirm number 123456 Send email request with the code to e-mail
docs Country Russia Get instructions for verification through a real meeting and submitting documents.
docs_confirm Sending verification request through the documents
Data description:
type - verification type see verification types table. 
value - transmitted value
  '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_string
HJmE2ysv8bfadPeG35UjIE5Y6Z79fYx6xeK4sRIUBdP+Hn0Yb8xfY1qx3JybJChkaKEu0nom5V33gFJ7/yky1lKOthd74TC08dxyXz8air8=
--- END MESSOR ---
' (length=197)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Waiting for call on your phone
)



peer_verify confirm


Verification code sending exampleData description:
type - verification type see verification types table. 
value - transmitted value
 '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_string
FejA7nRQcxunhRZyEgbNPZV01t3zDrijEOv2LQJ0Xo2vlfdWrLPSDkOoW3hJ9BduEyY6TkCHbWtNQgXc92gEEQ==
--- END MESSOR ---
' (length=177)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => verify success.
)



peer_edit_data


Peer data change request, stored on the server.
Peer sends the field name to be modified and its new values.
For example, a phone number change request:
Name phone
Value +79033453425

Data description:
key - Modified field name
value - transmitted value
'
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_string
Ic/ct+gPSAsUjMIlOOngNXQzEMhMaxCi38DNavLKDQpJZ7Z0mOQzNAwPBmFIu5Ls0Qjg264Az5EYXPKEUTNVskgW8B6zbCjtcwNMqnH5/8s=
--- END MESSOR ---
' (length=197)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Info update success!
)



peer_info


Request complete up-to-date peer data stored on the server.
The server returns data array with peer data in response.
'<br />
<b>Notice</b>:  Undefined index: plugin_versio in <b>/var/www/de.messor.network/public_html/messor/index.php</b> on line <b>649</b><br />

--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
sXWgof7AabPQNYRvhBlI2NUNsywGm2Yj/e8ZPvAHbtzh/PPd48pOH4itieC4/0MF2N1pFsF+9bXPzsW9lO2XgvS/qKi/gU/MKGcyeNaMBu6SZbMeTOzZQjWTxyNnSo3iNWFQR/2LZ5Ztmd7uyjJwMjU/z038tyiRRskudSVejAs+608WBYk8YpBw3vUtEnA3VrW7b7eqIT2A/5Ye1F10yJpba5RoCb73H26m8+8ZlZcq3d5uLYQQ/OXp6KoF5Rth1AtdBk7JxowOe5l1HwJ7L1wg7oY2K8axvWxwoD5QP/z'... (length=1173)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Array
        (
            [status] => peer
            [network_id] => b92c8753e1cc2666244309dbae90e180
            [trust] => 0
            [speed] => 1
            [database_version] => 040520_61bc64fa0fb72b89835ae6a5350a732b4910f4c63306663672c4ef70f9ea0e58
            [version] => 0.4a
            [encryption_alg] => aes128
            [domain] => messor.lock
            [ip] => 94.25.163.171
            [url] => http://messor.lock/mess/messor.php
            [name] => UserDoc
            [company] => documentation
            [email] => admin@email.com
            [phone] => 79034562389
            [about] => 
            [country] => AT
            [lang] => ru
            [register_date] => 1587644358
            [last_online] => 1588754929
            [last_data] => 0
            [confirm_email] => 0
            [confirm_dns] => 0
            [confirm_phone] => 2
            [confirm_sms] => 0
            [confirm_mail] => 0
            [confirm_docs] => 0
            [confirm_manual] => 0
            [os] => 
            [web_server] => Apache/2.4.41 (Unix) PHP/7.4.4
            [php_version] => 7.4.4
            [cms] => other
            [plugin_versio] => 
        )

)



peer_upgrade


Peer requests the current Messor library files text for updating.
The server returns the data array with the files texts and their names.
  '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_string
CcZldiTLvyfNB+jht9R29g9FAU5XbPq52752EdT3A+FaWghBrzuMtzvWfDL7hlDR3XffVLhAAWhYuqfijtOdo9U2hfwtfYEAaxtJ6kd3hliiMhzBKXls3w5ejl2y5CK9Wc1CSjwmJ0n+J878WJp7nyEeDDPatCXXGG45KUxOn4nxV6o2KTiZBUWjnHDx419+zhqXO4AfLgDVeW0jgv4B3A==
--- END MESSOR ---
' (length=305)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => New version Messor 0.1b
Please upgrade your messor
Command:
git clone https://github.com/wwood-dev/messor

)



peer_get_server_list


Peer requests the current server list.
The server returns the current server list text and its version in response (hash sum sha256 from the server list text)
  '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
TiB4R2UmdtSuPIagWEEDPNTLf/3M2dw/srY3p3XPSVyg0JslSuzxnrik/Yyx6W3U9tK74aNO6Bosppnrmwx8dhauqjwmXDh14BrAW4Z+Kn3DRFHkNwOH6H6vX+Nf7/eESVCK9kNRmrET+B23eii4+nfr67G1SnOLf1+bD75OKduUJ3h1Z1Dok1Yca9vQqjWp6lay/stRjWqvUWCdqoS3XIkClcEEeR/WrOUVDZo+kY8P27tLPGMmghNa9xBbrxMSxdvsI/JwguuBWgQXf9yrpAlgtaYqA+L7Hj8+pm/rBWPDJL4dmxsfNstFabN7v7mxhyjxWeiuXzrJhhjPhnnUFdBrWwtRpfZMI0k6YlZuIu730AwlKo75I+RKRursmuBCWNS0mFOJFcmQjIQ4bJIMq8dgLBIwyaFyEU72+EXckeb1+yqsDtLFh8keXXXo'... (length=600)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Array
        (
            [server_list] => https://de.messor.network/messor/	Frankfurt,DE
https://gb.messor.network/messor/	London,GB
https://sg.messor.net/messor/	Singapore,SG
https://ru.messor.net/messor/	Moscow,RU
            [check_sum] => 0ebf8724e8db4b48e53d972bb16053535302f5cd41a8a6ead5a705e7401d3409
        )

)



peer_get_peer_list


Peer requests the server to provide other peers list on the network, having the requested database version.
Peer indicates the required database version in the request.
The server responds by the data array with the required peers list in response.
Typically, the current request is used to update your database to the current version.
Data description:
database_version - Current database version
  '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
SA7RlSx+aDICtAN+ipsgqqO2yhTuMc9wRq0bvUrhelFXEsq1PCYcEjuHtP1oVZk0qYJ29W7ZgoCiq9UcrU/FE1u8ISwAWHO2JOppPPkM8GwRKtZPpkxhLT9cEGtE88ba/MRrQJfFJ7/fwOD4XZbDLWoVt19BDqIx1b6QeyoiVJWfWcFomWqn6gu68PbxPFor3lEhObqeC2v7yJPxUjjlkv7ZxwVl9v2+WeFbQkEuGe1i78pfuQWHRPnR/boPtXOEU19D1zm9P8+F8MS3HO3HFe5dY//Y1SOl30WhOVB/YpPNx0DWl6xS3t2v/tGHW2MySl3q5YWYwlauF+gz7DElamp5tf9ixUt/MMvnSdnacMNb9Fv/BsRqMOlg/dCqTEstk9YjAwNqMXoXSPwq+6KqCC3xVFneifPymyjT4QPNlLTUFehEzCc+cjm94oUa'... (length=688)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Array
        (
            [peer_list] => https://de.messor.network/messor/
https://sg.messor.network/messor/
https://gb.messor.network/messor/
https://ru.messor.network/messor/
http://95.179.156.122/messadm32fd/messor.php
http://messor.lock/mess/messor.php
            [database_version] => 040520_61bc64fa0fb72b89835ae6a5350a732b4910f4c63306663672c4ef70f9ea0e58
        )

)



peer_download_database


Peer requests the specified database text, The server or peer returns the database text in response. Direct database download from the server is available only premium peer
Usually the current request is used to get the database from other peers, see (data transfer description between peer).
Data description:
database_version - Current database version
  '
--- BEGIN MESSOR ---
status=ok
server_version=0.4a
data_encr_array
agvQTiYeqGXUYTbV8l8+0PTO8vgfNdUaX4cZqd9/9DTeiA9M6yTlpXIPJR1FHPPLIIrSS+gPnx/zTZnwzmSJ/NceezQLPbfkK78DXRwLooJEKd1SxASSBPVHeY5qMHnzWk08gJxvzq3GTmyuNuxfCKAnuLM1QGsElC2MorjGxYWLqIGoGxFsq1v1zcrdf3wxqIHrWHujm1vurvJBJA1ggYEnu48bkvIcjv/V4+qYsPuUPbXzgaYYpdh+7nRZR3Xx9F8WLJzKhWegISsUtrK7TkJgvQFOwO6oBFPsTQBcak9GbSloeFnKOguSSpyl8sU+92KtuBSdQ8ZZaPr7+gJvcTQmUhE2JHNterdrUpkVZkqNV8SldBv/tTJ96GC7ayeNur8r0Dc2+SjFFko8K4tUVaoENtsSf6t/HRJARewOV+UqmBE/orqSULWiXsWZ'... (length=12036)
Response (parsed):
Array
(
    [status] => ok
    [header] => Array
        (
            [status] => ok
            [server_version] => 0.4a
        )

    [data] => Array
        (
            [database] => # Messor main database. Generated at 04.05.2020
dzNhZnxzcWxtYXB8bm1hcHxuaWt0b3xabUV1fHNjcmlwdApjdXJsfHB5dGhvbnx3Z2V0fFt3V11nZXR8cGhwfGxpYnd3d3xodHRwdW5pdHxudXRjaHxwaHBjcmF3bHxGQVNULVdlYkNyYXdsZXIKR29vZ2xlfGZhY2Vib29rfHlhbmRleHxHb29nbGVib3R8QWRzQm90fGJpbmdib3R8bWljcm9zb2Z0XC5jb218U2x1cnB8TGlua2VkSW5Cb3R8bXNuYm90fGp5eG9ib3R8aWNoaXJvfEJhaWR1c3BpZGVyfFlvdWRhb0JvdHxzb2dvdXxCTEVYQm90fEFocmVmc0JvdApib3R8aHR0cHx3d3dcLnxcLmNvbXxcLnBocHxcLmh0bXxiYWlkdXxzbHVycHxiaW5ncHxhcmNoaXxzcGlkZXJ8Y3Jhd2x8c2VhcmNofGFub255bXxlbmdpbmV8bnV0Y2h8bGlid3d3fGxpYmN1cmx8dXJsbGlifHdnZXR8cmVxdWVzdHxqYXZhLzFcLnx2ZXJpZnxjaGVja3xzcGVlZHx0cmFuc2xhfGFwaXxkYXVtb2F8cGhhbnRvbXxpbnRlcm5ldHxjb250cm9sfHdpbmRvd3MgbnQgOVwuMHxhY2Nvb25hfGlhX2FyY2hpdmVyfGplZXZlc3xjdXJsfGVsdGFpbmRleGVyfGNyYXdsZXJ8dzNjX3ZhbGlkYXRvcnx3ZWJhbHRhfHlhaG9vfHJhbWJsZXJ8YXNrfHR1cnRsZXxuaWdtYXxyb2JvdHxwcm94aW1pY3xtYXNzY2FufHB1ZmZpbnxjZm5ldHdvcmt8d2ViZGF2fGlvcHVzfGN1YW1hdGNofHNjYW5uZXJ8c3VzaWV8MDA4L3xhNi1pbmRleGVyfGFzcHJveHl8YWJvbnRpfGFib3VuZGV4fGFja3xhY3Rpb24gY29tbSB1c2VyfGFsZXhhfGFueWV2ZW50LWh0dHB8YXBlcmNpdGV8YXBvcnR3b3JtfGFwcGVuZ2luZS1nb29nbGV8YXJhY2hub3BoaWxpYXxhdXRvcGFnZXJ8YmlkdWJyb3dzZXJ8YnViaW5nfGJhZC1uZWlnaGJvcmhvb2R8YmFkYXxiZWd1bmFkdmVydGlzaW5nfGJlbmRlcnxiaXRhY2xlfGJsb2dzd2FybXxibG9nbGluZXN8YnV0dGVyZmx5fGNqbmV0d29ya3F1YWxpdHl8Y21udGRmfGNweXRob258Y2hhcmxvdHRlfGNoZWNrc2l0ZXxjaGVja2VyfGNoaWxrYXR8Y2hpbXV8Y2l0aXN0cmVldHxjbG91ZGZsYXJlfGNvbGxhcHNhcndlYnxjb25mbHVlbmNlfGNvbnRpa2l8Y29yYWx3ZWJwcngvfGNvc3RpbmVzdGl8Y3Jhd2xmaXJlfGNyb3dzbmVzdHxkZnRiYXxkYWx2aWt8ZGF0YWZvdW50YWluc3xkYXRhcGFya3NlYXJjaHxkYXRhcHJvdmlkZXJ8ZGV0ZWN0b3J8ZGV1c3V8ZGV2cnV0ZXJ8ZGlyYnVzdGVyfGRqYW5nb3xkb2NvbW98ZG9tYWluYXBwZW5kZXJ8ZG9tYWlubW9uaXRvcnxkb3NzaWVyfGRvd25sb2FkLXRpcHB8ZHJ1cGFsfGR1Y2tkdWNrcHJldmlld3xlYXJ0aGNvbXxlYXN5LXRodW1ifGVhc3liaWJ8ZWRpdG9yfGVtYmVkZGVkd2J8ZW1iZWRseXxlbWVyYWxkc2hpZWxkfGV4cGxvcmF0b2RvfGZhaXJzaGFyZXxmYXZlZW98ZmVlZCBwYXJzZXJ8ZmVlZGJ1Y2tldHxmZWVkYnVybmVyfGZlZWRmZXRjaGVyLWdvb2dsZXxmZWVkbHlhcHB8ZmVlZHNwb3R8ZmVsaXh8ZmlsYW5neXxmaWxlY3JvcHxmaXJlYmF0fGZsaXBib2FyZGJyb3dzZXJwcm94eXxmbGlwYm9hcmRwcm94eXxmcmFuY2lzfGZyZWV3ZWJtb25pdG9yaW5nfGZyb3V0ZXxnYzNwcm8rZGlyK2NsZHxndGI3fGdlY2tvIG1pcm98Z2VuZXJhdG9yfGdlbmllb3xnZW50bGVzb3VyY2V8Z2xvYmVsfGdvZHppbGxhfGdvb2dsZSBhcHBzdmlld2VyfGdvb2dsZSBkZXNrdG9wfGdvb2dsZS1zdHJ1Y3R1cmVkLWRhdGEtdGVzdGluZy10b29sfGdvb2dsZWRvY3N8Z29vZ2xlcHJvZHVjZXJ8Z3JhbW1hcmx5fGdyZWV0aW5nc3xncm91cGhpZ2h8aHR0cHJlcXVlc3R8aGF0ZW5hfGhlYXJ0cmFpbHN8aGVybWl0IHNlYXJjaHxob3N0dHJhY2tlcnxodHRwY29uZHVpdGRvd25sb2FkZXJ8aHVicGFnZXN8aHVic3BvdHxpY2kgYXJnZW50aW5hfGlkd2hvaXN8aW5mb21pbmV8aWNvbnN1cmZ8aWx0cm92YXRvcmUtc2V0YWNjaW98aW5hZ2lzdHxpbmJvdW5kc2NvcmV8aW5mb2hlbGZlcnxpbnN0YXBhcGVyfGpzLWtpdHxqZXRicmFpbnN8am9ib3xqb2Jib2Vyc2V8anl4b3Rvb2xiYXJ8ay1tZWxlb258a2V2aW58a21sLWdvb2dsZXxrb2hhbmF8a3Vyd29za3J5cHR8bGFpZXNrZW58bHNzcm9ja2V0Y3Jhd2xlcnxseWNvc2F8bHl0XC5zcnxsaWJlcnR5d3xsaWZlcmVhfGxpbmtjaGVja2VyfGxpbmttYXxsaW5rbWFufGxpbmtzdGFzaHxsaW5rd2Fsa2V8bGlua2VlfGxpbmtzfGxpcHBlcmhleXxsb2FkaW1wYWN0cGFnZWFuYWx5emVyfGxvYWRpbXBhY3RybG9hZHxsb3ZlbHxtYXh0aG9ufG1jNjgwMCdzfG1yc3B1dG5pa3xtcy1ydGMgbG18bXh0L251dGNofG1hZ3BpZXJzc3xtYW1tb3RofG1jYWZlZXxtZWNoYW5pemV8bWVnYWluZGV4fG1lbmVhbWV8bWVyZ2VmbG93fG1lc3NlbmdlcnNoYXJlfG1vYmlsZXN1cmZ8bW9yZW92ZXJ8bW96aWxsYS80XC42fG1vemlsbGEvNFwuN3xtb3ppbGxhLzRcLjcyfG11bm96aWxsYS81XC4wfG5ldGx5emVyfG5ldHJlc2VhcmNoc2VydmVyfG5ldGNyYWZ0c3VydmV5YWdlbnR8bmV0dmliZXN8bmV3c3JvYnxuaW50ZW5kb3xubWFwIHNjcmlwdGluZ3xvZmZpY2VsaXZlY29ubmVjdG9yfG9uZXRzenVrYWp8b3Bwb3xvcHRpbWl6ZWRpZTh8b3dsaW4gZmVlZGZpbmRlcnxwcm9qZWN0IGhpIXxwYWdlMnJzc3xwYWdlcGVla2VyfHBhZ2VzaW52ZW50b3J5fHBhdGhkZWZlbmRlcnxwYXR0ZXJufHBoYW50b21qc3xwaG9uZWZhdnN8cGhvbmlmaWVyfHBpbnRlcmVzdHxwbGF5c3RhdGlvbnxwbHVra2llfHByLW5hdmktaW5ub3ZhdGlvbnxwcmxvZ3xweXRob24tdXJsbGlifHFxZG93bmxvYWR8cWlyaW5hIGh1cmRsZXJ8cXdhbnRpZnl8ciZkIHByb2plY3R8cnNzIGFwaXxyYWRpb2NsaWNrZXJ8cmVhZGFiaWxpdHl8cmVhcGVyfHJlYmVsbW91c2V8cmVkaXJlY3RjaGVja2VyfHJldmlwfHJldmVyc2VnZXR8cmlkZGxlcnxyb2JvY3Jhd2x8cm9ja21lbHRlbWJlZHNlcnZpY2V8cm9ja21lbHRlbWJlZGRlcnxzYmlkZXJ8c2JzZWFyY2h8c2VvLXZpc3VhbHN8c2Vvc29mdHxzam4gXC4gZGllfHNhZmFyaWJvb2ttYXJrY2hlY2tlcnxzY3JhcHl8c2NyZWVuc2hvb3R8c2NyZWVuc2hvdHxzY3JpYmRyZWFkZXJ8c2NydWJieXxzZWFtb25rZXl8c2VtYW50aWNzfHNlbnNcLmF8c2V6bmFtfHNpbXBsZWJyb3dzZXJ8c2l0ZS1zaG90fHNpdGUtdmlzdWFsaXplcnxzaXRlY2hlY2t8c2l0ZWV4cGxvcmVyfHNpeHhzfHNseXNlYXJjaHxzbmFja3Rvcnl8c29uaWN8c29wZWx8c291cmNlIHZpZXdlcnxzcGlubjNyfHNweWRlcnxzcXVhbGxubnxzc2NyZWVuc2hvdC1nZW5lcmF0b3J8c3RlZWxlcnxzdHVkaW9mYWNhfHN1bW1pZnl8dGFsa3JvIHdlYi1zaG90fHRhcmdldHNlZWt8dGVzc2VyYWN0fHRlc3RcLmJ1enp6fHRlc3Rpbmd8dGV4dHVhbHx0aHVtYnNuaXBlcnx0aHVtYnNob3R8dGltZXdlfHRpbmV5ZXx0aXB0b3B8dG9waGF0ZW5hcnx0b3BvZGlhfHRyb3ZlfHR1bGlwY2hhaW58dHdpY2VsZXJ8dHdpa2xlfHR5Y29vbnx0eXBob2V1c3x1bml2ZXJzYWxmZWVkcGFyc2VyfHVua25vd258dW53aW5kZmV0Y2hvcnx2YWdhYm9uZG98dmFsaWRhdG9yfHZpc2l0ZWR8dzNjfHczYy1tb2JpbGV8d3BkYXNoLXVwY2hyb25pY3x3c2V8d2F6enVwfHdic3JjaHx3ZXNlZXx3ZWItc25pZmZlcnx3ZWJjb29raWVzfHdlYm1hc3RlcmFpZHx3ZWJzZWFyY2h8d2VidGh1bWJuYWlsfHdlYmF1c2t1bmZ0fHdlYm1hc3RlcmNvZmZlZXx3ZWJzY291dHx3ZWVjaGF0fHdob2lzMzY1fHdpa2ljcmF3bHx3aWxsaWV8d2luIDl4IDRcLjkwfHdpbmRvd3Mgc2VydmljZXN8d29yZHByZXNzfHgtY2FkLXNlfHg2LTAwXC4xfHhibWN8eG1iLWV4dHJlbWUtbWVzc2FnZS1ib2FyZHx4Ym94fHlvdXJsc3x5ZXRpfHphb3x6aXBjb21tYW5kZXJ8enlib3JnfGFiYnl8YWZmLWtpbmdzb2Z0LWNpYmF8YW5kcm9pZC1hc3luYy1odHRwfGFubm90YXRlZ29vZ2x8YXJjaGl2ZXJ8YmV0YXNlYXJjaHxib2l0aG98Y29jY29jfGNvbXBsZXhuZXR3b3JrZ3JvdXB8Y29zbW9zfGRwZGV2fGVnb3Rob3J8ZW5kby8xXC4wfGZhY2Vib29rZXh0ZXJuYWxoaXR8ZmluZGxpbmtzfGdvbnpvMnB8Z29vYmxvZ3xncm9tb3RldXJ8Z3J1Yi1jbGllbnR8aGVyaXRyaXh8aHR0cDovL3xpdGhlbWVzfGljaGlyb3xpbmRvbmVzaWFuY29kZXJ8aXNrYW5pZXxrdWx0dXJhcnczfGx0eDcxfG1mYzJ8bW9iaWxpemVyfG1vbml0b3Jpbmcgc2VydmljZXxtb3dzZXJ8bW96aWxsYS8xXC4wfHBhZ2Ugc2NvcmVyfHBhZ2V2ZXJpZmllcnxwYXJzaWpvb3xxaW5nZGFvfHNjLWRvd25sb2FkZXJ8c2NhbjRtYWlsfHNwZWNpYWxhcmNoaXZlcnxzcWxtYXB8dmJzZW98dmlldHRlbHx2a3NoYXJlfHdlYm51bWJyZmV0Y2hlcnx3bXRpcHN8d3NjaGVja3x3c3Jpc2luZ3x4cGNvbXZpZXdlcnxvcGVuYnNkfGZyZWVic2R8bmV0YnNk
L215c3FsX2FkbWluKj8kCi9teXNxbGFkbWluKgovc3FsYWRtaW4qPyQKL3NxbC8/JAovYWRtaW4vPyQKL215c3FsKj8kCi9waHBteWFkbWluKj8kCi93cC1hZG1pbio/JApeLiphZG1pbi8uKj8kCl5vbGQvLio/JApeYmFja3VwLio/JApeaW5zdGFsbC8/JApeaVwucGhwPyQKXnBocGluZm9cLiokCl4xMjM0NVwucGhwPyQKXnhcLnBocD8k
KHVuaW9ufHNlbGVjdHxjcmVhdGV8cmVuYW1lfHRydW5jYXRlfGxvYWR8YWx0ZXJ8ZGVsZXRlfHVwZGF0ZXxpbnNlcnR8ZGVzY3xncm91cF98Y29uY2F0fGNoYXJ8bG9hZF9maWxlKQooZGVmaW5lfGV2YWx8ZmlsZV9nZXRfY29udGVudHN8aW5jbHVkZXxyZXF1aXJlfHJlcXVpcmVfb25jZXxzZXR8c2hlbGxfZXhlY3xwaHBpbmZvfHN5c3RlbXxwYXNzdGhydXxwcmVnX1x3K3xleGVjdXRlKQ==
3.121.227.3
5.101.0.209
37.9.113.37
37.239.205.36
41.57.124.37
41.144.86.205
45.66.157.113
45.148.121.2
45.252.249.240
46.37.172.123
46.101.144.52
46.101.232.43
46.242.17.108
47.113.87.53
49.12.1.199
49.89.250.63
49.233.140.56
51.38.92.2
51.77.249.193
51.91.10.98
52.90.194.137
62.173.145.171
64.225.66.211
77.22.250.8
80.128.103.38
87.106.204.9
88.149.155.196
91.83.149.165
91.121.54.71
91.134.140.200
91.221.109.101
91.245.131.88
92.63.194.241
93.158.166.11
93.174.93.91
93.230.73.125
93.244.251.168
94.25.163.133
94.102.51.110
95.29.50.165
95.110.201.243
95.179.86.18
95.211.211.232
103.40.242.250
103.90.203.250
103.103.69.167
105.159.133.176
106.12.155.32
106.52.167.154
109.96.171.178
109.252.26.44
111.229.57.229
111.230.248.96
115.159.108.113
115.159.115.242
118.24.119.132
118.25.111.38
119.28.104.104
119.29.94.177
119.29.111.58
121.54.189.12
122.51.217.182
123.1.189.138
123.207.210.64
125.64.94.213
127.0.0.1
129.204.56.213
129.204.101.72
129.204.141.119
129.211.79.29
129.211.119.164
129.226.63.10
132.232.37.105
132.232.152.214
132.232.168.65
132.232.253.240
139.59.67.149
139.155.106.35
142.93.130.30
144.76.68.124
144.91.65.191
149.202.215.42
150.109.103.245
151.236.57.247
159.65.153.39
164.132.206.232
165.22.80.208
167.114.227.94
171.67.70.85
171.214.245.128
173.254.203.25
175.34.62.127
175.193.68.12
178.32.76.141
178.32.150.152
178.67.149.47
178.238.8.117
182.61.43.75
182.61.61.244
182.176.81.200
185.86.93.3
185.86.93.5
185.86.93.6
185.86.93.10
185.86.93.16
185.86.93.17
185.86.93.21
185.86.93.24
185.86.93.25
185.86.93.34
185.86.93.37
185.86.93.43
185.86.93.49
185.86.93.52
185.86.93.60
185.155.96.132
185.212.128.231
185.214.164.6
185.234.216.58
185.234.216.198
185.234.218.174
188.166.188.152
188.240.223.5
189.132.52.51
192.99.15.199
192.133.171.18
192.157.196.42
192.163.192.171
192.227.152.122
193.57.40.38
193.112.224.171
194.60.254.243
194.99.106.148
195.88.16.114
195.245.113.28
202.56.167.165
202.158.44.202
203.113.174.104
204.48.24.34
207.154.206.75
209.105.243.246
211.23.45.31
211.234.2.11
212.92.117.55
213.162.246.170
216.244.66.236
218.60.29.206
218.75.30.86
220.130.193.45
            [database_version] => 040520_61bc64fa0fb72b89835ae6a5350a732b4910f4c63306663672c4ef70f9ea0e58
        )

)



invalid_action


Invalid request example from peer to server The server provides error messages in response to invalid requests.

  '
--- BEGIN MESSOR ---
status=error_req
server_version=0.4a
data_plaint_string
aW52YWxpZCBoZWFkZXIgYWN0aW9u
--- END MESSOR ---
' (length=126)
Response (parsed):
Array
(
    [status] => error_req
    [header] => Array
        (
            [status] => error_req
            [server_version] => 0.4a
        )

    [data] => invalid header action
)

Peer -> Peer communication protocol description

peer_ping


Peer operation verification request
Peer sends a ping request to another peer and receives a short email in response(Hi).
  '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Object not found!</title>
<link rev="made" href="mailto:webmaster@dummy-host.example.com" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    body { color: #000000; background-color: #FFFFFF; }
    a:link { color: #0000CC; }
    p, address {margin-left: 3em;}
    span {fo'... (length=1017)
Response (parsed):
Array
(
    [status] => error_parse
    [data] => empty begin tag
)



peer_get_server_list


Peer requests the current server list from another peer.
Peer returns the current server list text and its version in response (hash sum sha256 from the server list text)
Backup network recovery request in case of all network servers failure.
Note! Backup recovery algorithm with peer should be disabled and enabled at the user's request only by default.
Lern more here peer_get_server_list
  '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Object not found!</title>
<link rev="made" href="mailto:webmaster@dummy-host.example.com" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    body { color: #000000; background-color: #FFFFFF; }
    a:link { color: #0000CC; }
    p, address {margin-left: 3em;}
    span {fo'... (length=1017)
Response (parsed):
Array
(
    [status] => error_parse
    [data] => empty begin tag
)



peer_get_peer_list


Password change

Data description:
database_version - Current database version
  '
--- BEGIN MESSOR ---
status=error_req
server_version=0.4a
data_plaint_string
ZW1wdHkgbmV0d29ya19wYXNzd29yZCBoZWFkZXI=
--- END MESSOR ---
' (length=138)
Response (parsed):
Array
(
    [status] => error_req
    [header] => Array
        (
            [status] => error_req
            [server_version] => 0.4a
        )

    [data] => empty network_password header
)



peer_peer_download_database


Database text request.

Data description:
database_version - Current database version
  '
--- BEGIN MESSOR ---
status=error_req
server_version=0.4a
data_plaint_string
aW52YWxpZCBoZWFkZXIgYWN0aW9u
--- END MESSOR ---
' (length=126)
Response (parsed):
Array
(
    [status] => error_req
    [header] => Array
        (
            [status] => error_req
            [server_version] => 0.4a
        )

    [data] => invalid header action
)

Error code table

Possible error codes description table in peer/server responses in the status field
Error code Description
error_req invalid request (invalid request formation or invalid parameters in the headers)
error_auth errors during authorization on the server
error_parse server parsing errors
error_server server errors
error_connect server connection errors
error all other errors