Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Разработка и Реализация X-Client для ОС Windows


студент 5-го курса, кафедры Информатики, математико- механического факультета СПбГУ, *****@***com

Научный руководитель

Аннотация

X11протокол позволяющий передавать окна приложений, которые запускаются на удаленном компьютере с помощью X-Client’a, а так же принимать и пробрасывать события на локальном X-Server’e

Данный документ представляет собой описание реализации X-Client’a для Windows OS, эвристические методы решения и рассмотрение случаев необходимости использования тонкого клиента в целом.

Введение

X Window System открытое, платформо-независимое, “серверно-клиентское” программное обеспечение (более известное как X11[1]), которое позволяет управлять оконным графическим интерфейсом пользователя в распределенных сетях по протоколу X11.

Хочется акцентировать внимание на том, что использование концепции клиент-серверной модели отлично от обычного представления. В X11 используются следующие термины:

·  X-Client в концепции клиент-серверной модели, означает сервер, который, в свою очередь, запускает приложение и передает управление на X-Server;

·  X-Server в концепции клиент-серверной модели, означает клиент, который принимает управление от X-Client’а и занимается следующими задачами:

·  построение окна и передача оконному менеджеру для отображения;

·  обработка событий мышки и клавиатуры, передача их на X-Client;

Во многих Unix подобных системах используется протокол X11, как основной. А для отображения окон используются оконные менеджеры. Например, в GNOME[6], используют “Metacity”[7], а в Mac OS используют QUARTZ[9], как одни из стандартных оконных менеджеров.

НЕ нашли? Не то? Что вы ищете?

Постановка задачи

Многим пользователям доводилось работать с неизвестными, только что загруженными, непроверенными приложениями, которые часто вызывают недоверие и заставляют беспокоиться о конфиденциальности тех данных, которые хранятся у них на компьютере. При установке таких приложений, стоит задуматься о целостности информации. Даже, если у вас есть антивирус, не стоит думать, что базы данных антивируса обновляются раньше, чем создается очередной, новый вирус. Отсюда возникает задача безопасности целостности системы в целом.

Предлагается запускать приложения на удаленной, (возможно, виртуальной), машине. При помощи X-Client’a передавать окно приложения на локальную машину, а при помощи X-Server’а рисовать его и передавать происходящие события мышки и клавиатуры обратно. Тем самым, мы получаем, подобие песочницы, которая гарантирует нам целостность наших данных.

На текущий момент, по протоколу X11 возможно передавать окна следующим образом в следующих операционных системах:

1.  C Linux на Linux, т. к. протокол X11 лежит в основе системы;

2.  C Linux на Windows OS, т. к. существуют решения X-Server’а для Windows OS (Например, MobaXTerm[8]);

Но, не были реализованы следующие варианты, поскольку в основе Windows OS не лежит протокол X11:

1.  C Windows на Linux

2.  C Windows OS на Windows OS

Хочется отметить, что в данном случае рассматриваются отдельные окна одного приложения, а не весь рабочий стол в целом co всеми имеющимися приложения. Это делает клиент тонким, с точки зрения приложения.

На рис.1 схематично изображено описанное выше представление возможностей передачи окна приложения.

Рисунок 1: Реализованные решения передачи окна по протоколу X11.

Стоит отметить, что реализация такого X-Client’а для Windows OS, позволит работать с разными типами приложений, запущенных на разных операционных системах, например, таких как Windows 3.1, Windows XP, Windows 7, Linux (рис.2).

А так же, X-Client’а удобно использовать в разделенном рабочем пространстве.

Рисунок 2: Демонстрация тонкого клиента и отображения приложений с разных операционных систем.

.

Реализация X-Client’а для Windows OS

В первую очередь, было изучено большое количество информации по существующим решениям. Вследствие чего, было найдено следующее проприетарное ПО: “Citrix MetaFrame”[2]. После этого, была получена информация из официального сообщества разработчиков X11[1], о том, что можно реализовать свое оконное приложение, используя протокол X11 и библиотеку xlib[4] для Windows OS. Отсюда возник вопрос о таком приложении, которое сможет передавать любые окна по этому протоколу и появилась идея реализации универсального X-Client для Windows OS. Поскольку, переписывание всех существующих приложений на X11 не представляется возможным, а также изменения GDI[3] на X11 без исходного кода, является трудоемкой задачей, то было принято решение передавать фреймовый буфер.

Отсюда возникли следующие задачи:

1.  Захват изображения приложения;

a. Получение окна приложения;

b. Удаление рамки приложения;

c.  Удаление прозрачности приложения;

d. Захват многооконного приложения;

e.  Отображение курсора;

2.  Передача фрейма по протоколу X11;

a. Сжатие изображения;

b. Создание окна из изображения;

c.  Передача пустого курсора;

d. Расчет размеров окна;

3.  Получение и обработка событий X-Server’а;

a. Получение кликов мышки;

b. Пересчет координат мышки;

c.  Получения символов клавиатуры;

d. Получение escape последовательностей клавиатуры;

e.  Подбрасывание событий в приложение;

Замечу, что многие из задач трудно разрешимы, как для разных версий Windows OS, так и для одной. Многие методы решения являются эвристическими. Например, для разных приложений Windows OS используются разные стили окна, скажем, тройная рамка или одинарная, а может и двойная. На помощь приходит Windows API[5], который позволяет настроить стили приложения. А также отсутствие иерархии окон в Windows OS задают неразрешимость и решаются только эвристическими методами.

На данный момент был реализован тестовый X-Client для Windows OS на C#, который позволяет находить все открытые, не свернутые, оконные приложения, представлять их в виде списка, для удобства просмотра и выбора окна для передачи на X-Server. А так же, приложение позволяет менять стили окна и убирать рамку и сохранять фрейм. На языке C было реализовано сжатие фрейма, передача его на X-Server и обработка событий клавиатуры. При помощи очереди сообщений, события подбрасываются в буфер приложения с текущим хендлером и обрабатываются им. Так же, реализован полуавтоматический алгоритм передачи фреймов, который в дальнейшем будет полностью автоматизирован.

В ближайших планах, реализовать автоматизацию обновления фреймов и обработку escape последовательностей клавиатуры, а так же, обработку событий мышки и пересчет размера окна.

Заключение

В документе были представлены общие сведения о X Windows System, основные понятия этой системы, задачи и возможные решение безопасности конфиденциальных данных, а так же, план реализации X-Client’a для Windows OS.

Литература

1.  Сообщество разработчиков X11 http://www. x.org

2.  Citrix MetaFrame http://www. /

3.  GDI http://msdn. /en-us/library/ms533797.aspx

4.  Xlib http:///gui/x/xlib/

5.  Windows API http://msdn. /en-us/library/windows/desktop/ff818516(v=vs.85).aspx

6.  GNOME http://www. gnome. org/

7.  Metacity http://xwinman. org/metacity. php

8.  MobaXTerm http://mobaxterm. /

9.  QUARTZ http://quartz-scheduler. org/