Добър ден!
Искам да споделя с общността интересни мисли за създаването на автономна децентрализирана електронна поща и да демонстрирам на практика работата на една вече съществуваща реализация.
Първоначално „Телеграф“ беше разработен като любителско средство за комуникация между членовете на нашето малко студентско общество, което по един или друг начин се е посветило на компютърните науки и комуникациите.
Nota Bene: „Телеграф“ е любителско средство за комуникация; извличането на практическа полза в промишлен мащаб изглежда доста проблематично, но е трудно да се каже, че този проблем е съществен — основната ни цел е да привлечем внимание към разработването на подобни комуникационни системи.
Смятаме, че увеличаването на общия интерес към разработването на различни комуникационни системи е важно и необходимо, тъй като разбирането на основополагащите принципи на функционирането и основите на тези системи е ключът за повишаване на осведомеността на гражданите по въпросите на информационната безопасност.

Ахтунг!За да избегнем възможни недоразумения — в някои случаи изображенията могат да се прелистват:

Системата функционира на доброволни начала и чист ентусиазъм — просто ни харесва това, с което се занимаваме. Можете да го считате за хоби и няма да сбъркате — все още има любители на комуникацията чрез използване на хартиена кореспонденция; „Телеграф“ в повечето случаи може да се разглежда като цифрова реализация на принципите на обикновената поща.
„Телеграф“ представлява автономен аналог на електронната поща, позволяващ предаване на прости текстови съобщения без използване на интернет. „Телеграф“ в известна степен може да се причисли към — начин за обмен на информация без използване на мрежата.
Флеш-накопители се използват като пощенски кутии, а терминалите — компютри, служат като своеобразни пощенски станции за получаване и предаване на електронна кореспонденция.
Нека разгледаме един прост пример за взаимодействие със системата. Имаме две флаш памети и един терминал. В самия скрипт са прописани необходими глобални променливи за последващо взаимодействие със системата — номер на терминала, път до корена и други.
Ако свържем сменяемо устройство с терминала и стартираме скрипта, той ще се опита да получи изходящи съобщения от директорията /mnt/Telegraph/Outbox и да ги прехвърли в паметта си, след което — да провери за наличността на нови съобщения в паметта си за текущия потребител. Ако такива съществуват — да ги запише в /mnt/Telegraph/Inbox.
Регистрация на нови устройства
Протича доста обичайно. Скриптът намира нови флаш устройства, свързани към системата, и се опитва да сопостави техните уникални идентификатори с тези, които са представени в корена. Ако устройствата не са били регистрирани преди, те ще бъдат форматирани в съответствие с правилата, зададени от "Телеграфа".
След регистрацията на новото устройство структурата на корена приема следния вид:
В конфигурационния файл config.ini, разположен в корена на флаш паметта, се намира системна информация — уникален идентификатор и секретен ключ.
Дайте на хората ром!
Не, наистина, сериозно! Изходните кодове могат да се набавят , а вече е време да преминем от теория към практика.
Но трябва да кажа още няколко думи за това как всъщност работи системата за обмен на съобщения.
Първо, нека разберем от какво се състои единадесетцифрения уникален идентификатор. Например, 10455000001.
Първата цифра, 1, обозначава номера на страната. Международен код — 0, Русия в случая е — 1.
Следват четири цифри, които обозначават номера на района, в който се намира терминалът. 0455 — това е Коломенският градски округ.
След тях следват две цифри, — 00, — които обозначават директно номера на терминала.
И едва след това — четири цифри, които са поредният номер на потребителя, който е прикрепен към този терминал. При нас това е — 0001. Съществува и 0000 — този номер принадлежи на самия терминал. Не може да се изпрати писмено кореспонденция на него, но самият терминал използва този номер за изпращане на служебни съобщения на потребителите. Например, ако не е успял да достави съобщението по някакви причини.
В корена на нашия «пощенски кутия» се намират две директории, необходими за получаване и изпращане на текстови съобщения. Когато устройството е свързано към терминала, от директорията «Изходящи» на сървъра се изпращат изходящи съобщения, а в директорията «Входящи», логично, се зареждат входящите.
Всеки файл, в зависимост от директорията, е именуван с номера на получателя или изпращача.
Ако се опитаме да изпратим съобщение до несъществуващ адресат, терминалът ще ни изпрати съобщение за грешка.
Но, ако решим да изпратим писмо на адресат, намиращ се на друг терминал (независимо дали той съществува или не), то ще бъде записано в паметта на терминала, докато агентът не пренесе писмената кореспонденция от нашия терминал на свой.
Когато агентът на пощата 10500000000 (с други думи - пощальона) свърже устройството си с нашия терминал, изходящите писма ще бъдат предадени на неговото хранилище. Впоследствие, когато той свърже устройството си към своя терминал, тези писма ще бъдат записани в паметта на терминала и ще чакат адресатът да ги прехвърли на своя флаш-диск.
Сесия на връзка
Нека опитаме да предадем съобщение с текст "Здравей!" от 10455000001 к 10455000002.
Това е всичко!
Бих се радвал на всякаква критика относно изходния код на проекта и самата статия.
Благодаря за вниманието.
Източник: habr.com
