Proxy32 это “Native” (написанная специально для) XP/Vista/7 среда содержащая рабочий стол и терминал для CYGWIN.
Она содержит 6 встроенных рабочих пространств а также функцию управления рабочими пространствами (переключение между рабочими пространствами, переименование рабочего пространства, создание окна терминала в рабочем пространстве, перемещение окна терминала из одного рабочего пространства в другое и т. д.).
Она содержит управляемое мышкой графическое дерево пускачей (LauncherTree). Дерево пускачей позволяет пользователю собирать все пускачи (ярлыки для запуска терминалов. скриптов и приложений) в одно большое графическое дерево. Дерево пускачей похоже на дерево фаворитов/закладок в популярных веб-броузерах но оно позволет не только открывать адреса веб-страниц, но и выполнять целый ряд других действий (создавать терминалы, выполнять команды и скрипты в терминалы, запускать приложения Windows). Дерево пускачей можно редактировать средствами графической оболочки (диалог редактирования пускачей и drag-and-drop мышкой). Оно сохраняется/загружается/экспортируется/импортируется в формате XML. Формат XML позволяет делать массовые редактирования пускачей с помощью обычного текстового редактора, а также позволяет легко передавать готовое дерево от одного пользователя к другому.
Она содержит встроенный терминал с функциональными возможностями которые редко встречаются в других популярных терминалах (неограниченный буфер обратной прокрутки в котором можно выполнять поиск с использованием PERL REGEX, создание закладок/bookmarks для строк буфера обратной прокрутки, неограниченный размер текста при копировании текста из буфера обратной прокрутки, 1 мегабайт текста может быть вклеен (pasted) из системного клипборда одним нажатием мышки, сессия терминала может быть разделена с удаленными пользователями через TELNET/TLS и/или COM-PORT подключение, терминал может управляться с помощью внешней плугины плугины (plugin) которая может быть написана на любом языке программирования).
Она содержит встроенную заранее сконфигурированную инсталляцию CYGWIN, которая может быть модифицирована в любое время с помощью официального инсталлятора CYGWIN. Встроенная инсталляция используется в том случае, если пользователь еще не установил свой CYGWIN.
Терминал ( а также рабочий стол) нуждается в доступе к функциям графического рисования windows для того, чтобы отображать себя на мониторе windows. В программном обеспечении CYGWIN имеется два способа нарисовать окно:
"native", когда программа напрямую вызывает функции графического рисования Windows. Это означает, что программа была изначально написана для работы только на Windows, а не импортирована из LINUX.
программное обеспечение, которое импортировано из LINUX/UNIX использует протоколы рисования "X-Window", когда одна программа CYGWIN (например, терминал XTerm) посылает абстрактный запрос рисования X-Window через TCP/IP другой программе CYGWIN (X-Window сервер), которая "переводит" рисовательные запросы X-Window в вызовы функции графического рисования Windows и эти вызовы передаются в Windows для выполнения. Использование X-Window сервера на Windows похоже на использование CYGWIN1.DLL в том смысле, что он переводит из языка рисования в стиле UNIX в язык рисования в стиле Windows. Дополнительные компьютерные рессурсы затрачиваются на передачу запросов на рисование через местное TCP/IP соединение. Кроме того, конверсия языка рисования X-Window в "native" язык рисования Windows во время выполнения программы потребует дополнительного расхода компьютерных рессурсов, а также не позволит использовать полный потенциал "native" языка рисования Windows.
Proxy32 использует "native" рисование Windows, поэтому он не расходует дополнительные компьютерные рессурсы на передачу запросов рисования по местной линии TCP/IP, а также на конверсию из одного языка рисования в другой во время выполнения программы.
Однажды я захотел добавить простую внешнюю надстройку для автоматизации к CYGWIN XTerm терминалу, чтобы пользователь мог добавлять ярлыки для часто используемых команд и скриптов (списков команд) "на лету" без необходимости заниматься каким-либо программированием. В то время такая надстройка могла бы быть написана на языке tcl/Expect/Tk, но я хотел, чтобы мое программное обеспечение было написано на чистом C++ без всякой зависимости от интерпретатора tcl и библиотек Expect и Tk. Весной 2002-го эта внешняя надстройка для автоматизации была готова в виде отдельной программы CYGWIN "Telnet Proxy". Она загружала список команд и ярлыков из текстового файла конфигурации при старте и отображала список команд и ярлыков в своем собственном окне терминала. Чтобы использовать автоматизацию, любой Telnet терминал должен был установить Telnet соединение через "Telnet Proxy" с удаленным компьютером (вместо того, чтобы подключаться напрямую к удаленному компьютеру). После этого, когда пользователь нажимал ярлык (клавишу, ассоциированную с конкретной командой) в окне терминала программы "Telnet Proxy", программа "Telnet Proxy" вставляла выбранную пользователем команду в поток байтов Telnet по направлению к удаленному компьютеру. К этому времени COMMAND/SCRIPT/PLUGIN пускачи, а также разделение сессии терминала уже поддерживались в программе, хотя дерево пускачей существовало в его доисторической форме меню, управляемое с клавиатуры в окне терминала программы "Telnet Proxy".
Когда я конвертировал программу на Java/Swing в 2003-2004 годах. небходимость использовать внешний терминал подключенный через "telnet-proxy" отпала. Версия на Java имела настоящее графическое дерево пускачей и свой собственный терминал (написаный на Swing), который выполнял команды/скрипты/плугины когда пользователь делал двойной клик на них на дереве пускачей. Встроенный Java терминал поддерживал ssh через использование местного CYGWIN OpenSSH ssh интерактивного слиента в качестве бакенда (через программу "ptyopen", которая вероятно появилась из примеров в книге W. Richard Stevens 1992). Несмотря на то, что это больше не было чистое "telnet-proxying", имя "Proxy" осталось, так как оно подразумевало, что программа посредничала (proxying) между пользователем и удаленным компьютером, посылая команды от имени пользователя терминала вместо того чтобы пользователь печатал команды вручную на терминале.
В 2005 году я конвертировал программу на C++ чтобы использовать низкоуровневое Win32 API (чтобы уменьшить использование оперативной памяти и получить доступ к COM-PORTs). Поскольку программа использовала Win32 API, имя изменилось на Proxy32, чтобы избежать путаницы со старой версией которая была написана на Java/Swing.
Короткий ответ:
"Все что я могу делать в CYGWIN", поскольку Proxy32 это просто еще один графический интерфейс для работы с CYGWIN. Если задать вопрос "что можно делать в CYGWIN?", то ответ будет: "все, что можно делать в LINUX" (поскольку большая часть программного обеспечения CYGWIN импортирована из мира LINUX). А в LINUX можно делать практически все, что угодно, поскольку LINUX имеет огромное разнообразие программного обеспечения, пригодного для выполнения широкого круга задач.
Технические детали:
А добавляет ли Proxy32 что-нибудь к возможностям CYGWIN? Да, конечно.
Для начала, Proxy32 имеет дерево пускачей. Оно позволяет пользователю собирать все пускачи (чтобы запускать терминалы, скрипты и приложения) в одно большое графическое дерево. Это дерево пускачей похоже на дерево Избранное/Закладки в популярных браузерах за исключением того, что оно позволяет создавать закладки не только для открытия веб страниц, но и для нескольких других действий ( создание терминалов, выполнение команд и скриптов в терминалах, запуск приложений Windows). Дерево можно редактировать средствами графической оболочки (диалог редактирования пускачей и drag-n-drop). Оно сохраняется/загружается/экспортируется/импортируется в формате XML. Формат XML позволяет выполнять массовое редактирование пускачей в обычном текстовом редакторе, а также позволяет с легкостью передавать готовое дерево пускачей от одного пользователя к другому.
Оставшаяся часть уникальных возможностей Proxy32 находится главным образом на стороне терминала.
Proxy32 добавляет возможность разделять каждую сессию терминала с неограниченным числом удаленных пользователей через протокол TELNET/TLS. Это позволяет более опытным членам группы обучать своих коллег и помогать им дистанционно.
другая уникальная функция Proxy32 - это отсутствие ограничения на длину буффера обратной прокрутки. В терминале можно прокручивать назад на 60 миллионов строк и при этом терминал даже не "потеет".
неограниченный буфер обратной прокрутки в терминале дополняется возможностью поиска по Regular Expression (а также создание закладок) в буфере обратной прокрутки. Кроме того, операция копирования текста из буфера обратной прокрутки не имеет огранияения на размер копируемого текста (после превышения определенного размера копируемый текст сохраняется в файле вместо того, чтобы сохраняться в системном клипборде, который имеет ограниченный объем памяти). Операция вставки текста позволяет вставлять (посылать в терминал) до 1 МB текста с помощью одного клика мышки.
терминал Proxy32 может управляться Плугинами. Плугины (внешние дочерние процессы) могут быть написаны на любом языке программирования и управлять терминалом через стандартные потоки ввода/вывода STDIN/STDOUT/STDERR. При использовании обычных терминалов, если нужно управлять терминалом из программы, то выбор языка программирования обычно очень ограничен. При использовании терминала Proxy32 можно использовать практически любой язык программирования для автоматизации терминала.
Короткий ответ:
CYGWIN - это:
огромная коллекция программного обеспечения LINUX, которая импортирована для работы под Microsoft Windows.
набор инструментов для перекомпиляции программного обеспечения LINUX из исходного кода для того, чтобы его можно было выполнять на Microsoft Windows.
Технические детали:
Программное обеспечение LINUX посылает системные запросы (например, прочитать из файла или напечатать текст) в ядро LINUX. Сердцем проекта CYGWIN является библиотека CYGWIN1.DLL, которая может транслировать системные запросы в стиле LINUX в системные запросы в стиле Windows и передавать их ядру Windows для выполнения. Другим ключевым компонентом проекта CYGWIN является компилятор CYGWIN GCC, который может взять исходный код программного обеспечения LINUX и создать выполняемый файл таким образом, что он будет посылать свои системные запросы в библиотеку CYGWIN1.DLL вместо того, чтобы посылать их в ядро LINUX. Как только программное обеспечение перекомпилировано, чтобы использовать CYGWIN1.DLL, оно будет выполняться на Windows, если библиотека CYGWIN1.DLL присутствует.
Все программное обеспечение, которое было перекомпилировано, чтобы использовать библиотеку CYGWIN1.DLL, является частью проекта CYGWIN. Все это обеспечение (вместе с библиотекой CYGWIN1.DLL и компилятором GCC) может быть загружено с домашней страницы проекта CYGWIN http://www.cygwin.com.
Короткий ответ:
Да. Вероятно Proxy32 обеспечит наиболее быстрый и легкий способ получить доступ к подсказке CYGWIN Bash. Он также поможет пользователю организовать растущее знание команд CYGWIN в документированной и готовой к использованию форме. Но кроме этих двух отличий пользователь все же должен изучать команды CYGWIN вне зависимости от того, использует он Proxy32 или нет.
Технические детали:
После того, как Proxy32 файл загружен и запущен, он автоматически создает инсталляцию CYGWIN (с заранее выбранным набором програмных пакетов) и запускает CYGWIN Bash в терминале Proxy32 в конце процесса инсталляции. Через несколько минут после нажатия кнопки "Установить" ("Install") Proxy32 пользователь получит подсказку CYGWIN Bash в открытом окне терминала внутри "рабочего пространства 0".
После этого можно начать изучать команды CYGWIN, которые можно выполнять в Bash.
В Proxy32 пользователь может сохранять полезные команды в виде пускача COMMAND на дереве пускачей. Таким образом команда будет сохранена в форме, которая готова для выполнения в будущем, путем двойного кликанья на ней. Кроме того, пользователь может прикрепить подробный текст тултипа к пускачу команды, например, чтобы показать результат распечатки команды, которая сконфигурирована в данном пускаче COMMAND. Пускачи команд (COMMAND) могут быть сгруппированы в поддерево (SUBTREE) на дереве пускачей. Пользователь может находить команды на дереве пускачей, используя встроенную функцию поиска (PERL REGEX).
Процесс Proxy32 не линкуется к какой либо статической или динамической библиотеке CYGWIN, так что он не должен быть лицензирован под GPL. Встроенный терминал Proxy32 использует механизм связи между процессами Windows, чтобы управлять отдельным CYGWIN TTY-драйвер процессом, который называется "proxycygterm". Я создал код "proxycygterm" из кода "cygterm" в марте 2006 года, чтобы использовать его как новый интерфейс между терминалом Proxy32 и CYGWIN TTY. Исходный код программы "proxycygterm" опубликован здесь (поскольку код программы cygterm лицензирован под GPL). Исходный код не модифицированных выполняемых файлов CYGWIN, которые устанавливаются вместе с Proxy32, опубликован здесь.
Можно думать о внешнем бакенде терминала как о местном дочернем процессе, с которым пользователь взаимодействует через терминал. Этот дочерний процесс в свою очередь может представлять или местный Shell или удаленный компьютер, подключенный через соединение TELNET/FTP/SSH/SFTP/COM-PORT. Встроенный терминал Proxy32 использует механизм связи между процессами Windows, чтобы контролировать отдельно стоящие внешние бакенды. При "подключении" (connect) терминал Proxy32 запускает сконфигурированный бакенд (SHELL) как дочерний процесс и общается с ним через трубы (потоки ввода/вывода) STDIN/STDOUT/STDERR. Наиболее мощным бакендом является процесс TTY-драйвера CYGWIN, который называется "proxycygterm". Он создает подчиненный CYGWIN TTY и запускает сконфигурированное приложение CYGWIN на этом TTY. При изменении размера терминала Proxy32 он посылает TELNET команду NAWS на STDIN программы proxycygterm, чтобы изменить размер подчиненного CYGWIN TTY, чтобы он соответствовал новому размеру терминала Proxy32. Если командная строка для запуска бакенда не содержит слова proxycygterm, тогда команда NAWS не посылается из терминала Proxy32 на STDIN бакенд процесса. Если бакенд процесс закончил работу или упал, то терминал Proxy32 "отключается" (disconnect) автоматически. Если пользователь "отключает" (disconnect) терминал Proxy32 вручную, то бакенд процесс и все дерево процессов, которое он создал, автоматически убивается.
Пример командной строки бакенд процесса (SHELL) для запуска CYGWIN Bash на proxycygterm TTY в терминале Proxy32: “proxycygterm.exe -s ‘/usr/bin/bash -i -l’” Строка приведна так как она вводится в конфигурацию пускача SHELL-TERMINAL.
Бакенды являются очень важными компонентами, поскольку они расширяют функциональные возможности Proxy32.
Proxycygterm является основным внешним бакендом который поддерживает взаимодействие с терминалом Proxy32 через STDIN/STDOUT/STDERR/NAWS и позволяет запустить любое приложение на CYGWIN TTY и поддерживать правильный размер этого TTY в любой момент времени. Наиболее часто используемые с proxycygterm приложения CYGWIN: bash, telnet, ftp, ssh, sftp, GNU screen и mc (midnight commander).
Программы plink.exe and psftp.exe из комплекта PuTTY (управляемые с командной строки и не имеющие графического оконного интерфейса) могут быть использованы непосредственно как бакенд терминала Proxy32, но при этом информация о размере окна терминала не будет передаваться на удаленный компьютер подключенный через plink.exe. Это может нарушить нормальную работу некоторых програм (например текстовый редактор vi) которые должны знать размер экрана терминала (например 80x24) для того чтобы правильно отображать информацию.
Интерпретатор командной строки Windows (CMD.EXE) также может быть использован непосредственно в качестве бакенда терминала Proxy32, но некоторые "Windows-console" приложения которые могут быть запущены из под CMD.EXE используют прямой внутренний доступ к курсору и буферу экрана консольного окна Windows. Они не будут работать правильно внутри терминала Proxy32, так как они не общаются с пользователем через стандартные потоки ввода/вывода STDIN/STDOUT/STDERR. Примером таких приложений являются встроенные в Windows TELNET and FTP клиенты управляемые с командной строки.
Natively (без CYGWIN или PuTTY)
Следующие протоколы связи поддерживаются терминалом Proxy32 без использования различных внешних процессов CYGWIN и PuTTY:
Telnet
Telnet-TLS (протокол TLS реализован в стандартной библиотеке Windows SCHANNEL.DLL)
Serial (COM-PORT)
"Native" протоколы будут работать даже если Proxy32 не найдет или не сможет установить CYGWIN или PuTTY.
через CYGWIN бакенды
Большое количество протоколов связи поддерживается путем подключения терминала Proxy32 напрямую (без использования Bash) к соответствующим интерактивным программам-клентам CYGWIN, включая:
SSH - через CYGWIN OpenSSH ssh интерактивный клиент (SOCKS и другие прокси-конфигурации поддерживаются через программный пакет CYGWIN "connect-proxy")
SFTP - через CYGWIN OpenSSH sftp интерактивный клиент (SOCKS и другие прокси-конфигурации поддерживаются через программный пакет CYGWIN "connect-proxy")
TELNET - через CYGWIN telnet интерактивный клиент
FTP - через CYGWIN ftp интерактивный клиент
TELNET - через CYGWIN telnet интерактивный клиент с добавлением TLS туннеля который создан помощью CYGWIN приложения stunnel
При использовании интерактивных клиентов CYGWIN в качестве бакендов для терминала Proxy32, информация об изменении размера терминала передается на CYGWIN TTY (на котором запущен telnet или ssh клиент) а затем передается на удаленный компьютер через интерактивный клиент.
через PuTTY бакенды
Утилиты командной строки PuTTY (plink.exe и psftp.exe) устанавливаются при инсталляции Proxy32 и могут быть использованы непосредственно в качестве бакендов терминала Proxy32.
SSH - через plink.exe бакенд
SFTP - через psftp.exe бакенд
TELNET - через plink.exe бакенд
Serial (COM-PORT) - через plink.exe бакенд
При использовании интерактивных клиентов PuTTY (plink.exe и psftp.exe) в качестве бакендов для терминала Proxy32, информация об изменении размера терминала не передается на удаленный компьютер через интерактивный клиент (поскольку TTY отсутствует на стороне клиента).
Можно использовать в SHELL-TERMINAL пускаче командную строку “proxycygterm.exe -s ‘/usr/bin/screen -s bash’”. Она запустит локальное приложение CYGWIN GNU “screen” (для мультиплексирования множественных виртуальных vt100 терминалов в один физический терминал) на CYGWIN TTY созданном интерфейсной программой “proxycygterm.exe”.
Как только приложение CYGWIN GNU "screen" инициализировалось и запустило bash shell, используйте цепочку из 3-х клавиатурных команд "^aS" затем "^aTAB" затем "^ac" чтобы разделить окно терминала на две части, переключиться на вновь созданную часть, создать в ней второй виртуальный vt100 терминал и запустить новый shell во втором виртуальном терминале.
После этого можно использовать оба виртуальных терминала независимо и переключать ввод клавиатуры между ними с помощью клавиатурной комбинации "^aTAB" (означает нажмите сначала "Ctrl-a" затем нажмите "TAB"). Используйте "^aS" затем "^aTAB" затем "^ac" чтобы создать больше виртуальных vt100 терминалов в том же самом физическом терминале Proxy32.
Этот режим удобен чтобы управлять множественными соединениями из одного физического окна терминала Proxy32 под управлением одного скрипта/plugin.
Такая операция позволяет иммитировать "cluster" (или "vector") терминал когда множественные подключения к нескольким сетевым узлам устанавливаются в одном окне терминала и под управлением одого скрипта/плугин.
Команда '^a:caption always "%w"' создаст статусную строку под экраном каждого виртуального терминала.
Зачастую целая группа людей, работающих на разных компьютерах и даже из разных мест, должны разделять одну и ту же сессию терминала. Разделенная сессия означает, что вся группа печатает на общей клавиатуре (по очереди) и видит один и тот же экран с результатами команд, приходящими с удаленного компьютера. Такая разделяемая сессия может быть либо подключение к удаленному компьютеру, либо работа в местном CYGWIN. Когда такая "разделенная" сессия может быть нужна:
Обучение
Более опытные члены группы должны обучать своих коллег и помогать им дистанционно.
только одно подключение к удаленному компьютеру разрешено для всей группы
Удаленный компьютер позволяет только одно единственное подключение, но много людей должны выполнять каждый свою часть работы на этом удаленном компьютере (они должны это делать по очереди, поскольку это та же сессия терминала).
выполнение старых скриптов, которые были написаны для других терминалов
Пользователь вынужден использовать разные типы терминалов для работы с той же самой сессией терминала. Например, пользователь работает большую часть времени в терминале Proxy32, но ему нужно запускать старые скрипты, которые были написаны раньше для другого автоматизированного терминала. Например: Expect скрипт для взаимодействия с удаленным компьютером по протоколу TELNET в терминале Xterm, TeraTerm скрипт, SecureCRT скрипт, AbsoluteTelnet скрипт, и т.д. Если пользователь не хочет конвертировать эти старые скрипты, для того, чтобы запускать их в терминале Proxy32, имеется другой способ выполнить их в существующей сессии терминала Proxy32. Другой терминал (тот, который может выполнять старый скрипт) может быть временно подключен к существующей сессии терминала Proxy32 (через порт для разделения сессии в терминале Proxy32), чтобы выполнить свой скрипт в существующую сессию Proxy32. Потом другой терминал может быть отключен от порта и пользователь может продолжать работать в той же самой сессии в терминале Proxy32.
Каждое окно терминала Proxy32 содержит встроенный TELNET/TLS сервер и один "слушающий" COM-PORT для разделения существующей терминальной сессии с удаленными пользователями. Удаленные пользователи подключаются по протоколам TELNET, TELNET/TLS или Serial к терминалу Proxy32, чтобы получить копию экрана удаленного компьютера и чтобы печатать команды в разделенную сессию терминала. Только один пользователь в любой момент времени может печатать команды для удаленного компьютера (разделенная сессия означает общая клавиатура и общий экран), в противном случае удаленный компьютер не сможет распознать команды. Местный пользователь в терминале Proxy32 может переключать удаленных пользователей в режим "только для чтения", в котором они будут продолжать получать результаты команд с удаленного компьютера, но они не смогут печатать свои команды на удаленный компьютер.
TELNET server:
неограниченное число удаленных пользователей (TELNET клиентов). Аутентикация шифрования не используется. Удаленный пользователь должен знать только номер разделяемого TCP порта для того, чтобы подключиться к сессии терминала Proxy32. По умолчанию номер порта является случаным, так что локальный пользователь должен сообщить эту информацию удаленному пользователю перед тем как удаленный пользователь сможет подключиться к терминалу локального пользователя.
TELNET/TLS server (TELNET protocol over Transport Layer Security protocol):
неограниченное число удаленных пользователей (клиентов TELNET/TLS). Аутентификация с помощью цифровых сертификатов (только сервер или оба - клиент и сервер). Шифрование реализовано в библиотеке Microsoft Windows SCHANNEL (которая также используется для TLS в протоколе HTTPS в MS Internet Explorer). Удаленный пользователь должен знать заранее номер "разделяемого" TCP порта, для того, чтобы подключиться к сессии терминала Proxy32. После того как TCP соединение установлено обе стороны проверят сертификаты друг друга и, если проверка была успешной, они приступят к переговорам по выбору шифра. После того как переговоры о выборе шифра завершены, включается шифрование, а затем соединение TELNET устанавливается внутри зашифрованного потока TLS/TCP.
Serial (COM-PORT):
один удаленный пользователь (serial Terminal). Аутентикация и шифрование не используются. Удаленный пользователь должен знать только номер разделенного COM-PORT и все его настройки, чтобы подключиться к сессии терминала Proxy32. Эта опция полезна для подключения через Bluetooth COM-PORT соединение, чтобы разделять сессию терминала между двумя компьютерами, которые изолированы по IP посредством firewall или посредством инфраструктуры.
Proxy32 плугина - это дочерний процесс, который запущен из терминала, чтобы дать программисту контроль над взаимодействием с удаленным компьютером. Интерфейс Proxy32 плугины с терминалом лучше, чем программный интерфейс ActiveX/COM, который используется в других автоматизированных терминалах:
Ниже приведено краткое описание интерфейса плугины, который позволяет управлять терминалом и удаленным компьютером:
Чтобы автоматически завершить логин для SHELL-TERMINAL пускача со следующей командной строкой :
“proxycygterm.exe -s ‘/usr/bin/ftp 192.168.1.9 21′”
можно вставить пускач плугины со следующей командной строкой под пускачем SHELL-TERMINAL:
perl -e '
$a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/Name/;}
syswrite STDOUT,\'belous\';syswrite STDOUT,"\r\n";
$a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/assword:/;}
syswrite STDOUT,\'test123\';syswrite STDOUT,"\r\n";
$a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/ftp>/;}
'
Это семь строчек кода (1-7):
Запускает интерпретатор PERL и говорит ему о том, что PERL скрипт, который должен быть выполнен, находится на командной строке интерпретатора (после командного свитча '-e'). Одиночная кавычка в конце строки начинает строчную переменную, которая содержит PERL скрипт.
Бесконечный цикл: читает байты с удаленного компьютера (STDIN), передает их на экран терминала (STDERR) и сканирует эти байты на присутствие подсказки/фразы ‘Name’. Цикл завершается, когда подсказка найдена.
посылает имя пользователя "belous" на удаленный компьютер (STDOUT), а затем посылает символы возврата каретки и новой строки.
Бесконечный цикл: читает байты с удаленного компьютера (STDIN), передает их на экран терминала (STDERR) и сканирует эти байты на присутствие подсказки/фразы ‘assword:’. Цикл завершается, когда подсказка найдена.
посылает пароль пользователя "test123" на удаленный компьютер (STDOUT), а затем посылает символы возврата каретки и новой строки.
Бесконечный цикл: читает байты с удаленного компьютера (STDIN), передает их на экран терминала (STDERR) и сканирует эти байты на присутствие подсказки/фразы ‘ftp>’. Цикл завершается, когда подсказка найдена. Это последняя строка скрипта PERL. После нее плугина завершается и соединение между удаленным компьютером и клавиатурой/экраном пользователя автоматически восстанавливается.
Одиночная кавычка на этой строке представляет собой конец строчной переменной, которая содержит PERL скрипт.
Обратите внимание, что эта плугина разработана так, чтобы запускаться автоматически при соединении терминала с удаленным компьютером. Автоматический запуск плугины достигается путем размещения пускача плугины непосредственно под пускачем SHELL-TERMINAL на дереве пускачей. Когда пользователь делает двойной клик на пускаче SHELL-TERMINAL, терминал подключается к удаленному компьютеру, а затем начинает искать PLUGIN/I-SCRIPT пускач под пускачем SHELL-TERMINAL. Если такой PLUGIN/I-SCRIPT найден под пускачем SHELL-TERMINAL, то он выполняется немедленно без вмешательства пользователя. Если бы пускач плугины был запущен вручную то было бы уже слишком поздно ожидать подсказку 'Name' от FTP сервера. В этом случае плугина начнет читать байты с удаленного компьютера после того, как подсказка 'Name' уже ушла на терминал. Плугина будет висеть, ожидая подсказку 'Name' в бесконечном цикле (до тех пор, пока пользователь не убьет ее).
Proxy32 может создать отдельный рабочий стол Windows и запустить на нем свою графическую оболочку. В этом случае программы, которые запущены на общем рабочем столе Windows, не смогут взаимодействовать с графической оболочкой Proxy32 (манипулировать окнами Proxy32 и посылать в них нажатия клавиш и мыши). Когда Proxy32 запущена на отдельном столе, она позволяет пользователю переключаться между отдельным рабочим столом Windows и общим рабочим столом Windows с помощью специальной комбинации клавиш. Режим запуска Proxy32 на отдельном рабочем столе может использоваться для выполнения очень важных задач, когда пользователь хочет исключить возможность вмешательства в его работу со стороны других программ.