Курсов проект № 1 по “Интернет програмиране с Java”

1.3. Backdoor Game

Автор: Николай Недялков

Версия: 0.9

Последна промяна: 22.03.2004

Целта на проекта е да се напише многонишково клиент/сървър приложение на Java, съответно BackdoorServer и BackdoorClient. Комуникацията между двете приложения клиент и сървър ще се извършва посредством протокола TCP.

I.      Backdoor Game Server - BGS

Това е сървърска програма, която ще изпълнява определени операции и команди и ще връща обработен резултат при клиента. Сървърската програма е самостоятелна Java програма, която се стартира на определен компютър и приема заявки на първоначално зададен TCP порт. На този порт тя първо авторизира съответния клиент и започва да приема и обработва заявките му. Трябва да позволява работа на много клиенти едновременно, използвайки стандартните средства на Java за разработка на многонишкови приложения.

При стартирането на програмата се задава порта, на който да приема заявки, [username] и [password], характеризиращи първоначално включен потребител, както и текуща директория за сървъра.

 

BGS включва следните основни модули :

 

·         Потребителски модул – този модул трябва да предоставя възможност за създаване, изтриване и редактиране на потребители на сървъра.

·         Файлов модул – този модул трябва да предоставя възможност за изтегляне, изтриване, преименуване и прикачване на файлове и директории. Също така трябва да има възможност за смяна на разглежданата директория на сървъра, както и за предоставяне на съдържанието й (файлове и поддиректории).

·         Административен модул – този модул трябва да предоставя възможност за изпълнение на програми на компютъра, на който е стартирано сървърското приложение.

 

Основните модули, които включва BGS, са потребителски, файлов и административен. При иницииране на първоначална връзка към BGS, клиентът има достъп единствено до потребителския модул. След успешно изпълнение на командата LOGIN (т.е. ако изпълнението не завърши със съобщение за грешка), потребителят придобива право за изпълнение на команди към останалите модули на сървъра – Файлов и Административен. Наложени са ограничения относно командите и последователността, в която могат да се изпълняват, в зависимост от групата, към която принадлежи потребителя и специфичните изисквания за всеки модул.

        

1.     Потребителски модул.

 

Този модул е предназначен за създаване, изтриване, авторизиране и *редактиране на потребителите на BGS.

     

Потребител на BGS се характеризира със следните задължителни полета:

·         Username – текстово поле не по-дълго от 15 символа и не по-малко от 1. Допустими символи са : [‘a’..’z’, ‘0’..’9’,_]. Полето не е чувствително относно малки или големи латински букви.

·         Password - текстово поле не по-дълго от 15 символа и не по-малко от 6. Допустими символи са всички символи. Полето е чувствително относно малки или големи латински букви.

 

Модулът разпознава следните команди:

 

·         REGISTER [username] [password] – тази команда регистрира (създава) потребител на сървъра с потребителско име [username] и парола [password]. Потребители могат да се създават само ако преди това е била изпълнена успешно командата LOGIN.

 

·         DELETEUSER [username] – изтрива съответния потребител със зададеното потребителско име. Потребители могат да се изтриват само ако преди това е била изпълнена успешно командата LOGIN.

 

·         LOGIN [username] [password] – командата указва на сървъра, че потребителят със съответното потребителско име и парола иска да осъществи връзка и да влезе в команден режим. При несъответствие в потребителското име или парола се връща подходяща грешка – Wrong username or password.

      

2.     Файлов модул.

 

Този модул предоставя възможност за изтегляне (download), изтриване, преименуване и прикачване (upload) на файлове и директории. Трябва да има и възможност за смяна на разглежданата директория на сървъра, както и за предоставяне на съдържанието й (файлове и поддиректории). С файловия модул може да се работи след като е преминала успешно авторизация.

 

Модулът разпознава следните команди:

 

·         DOWNLOAD [remotefile] [localfile] - командата приема два задължителни параметъра. Може да се изпълнява от всеки авторизиран потребител и сваля (download) файл от сървъра указан с параметъра [remotefile], като файл на локалния компютър указан с параметъра [localfile]. Забележка: Тази команда се изпълнява съвместно от сървърското и клиентското приложение, защото не е възможно сървърът директно да пише по файловата система на клиента. Клиентът трябва да поддържа някакъв механизъм за записване на получения от сървъра файл, който се връща в бинарен вид при успешно изпълнение на командата download.

 

·         UPLOAD [localfile] [remotefile] - командата приема два задължителни параметъра. Може да се изпълнява от всеки авторизиран потребител и upload-ва файл на сървъра указан с параметъра [remotefile], който се намира на локалния компютър като [localfile]. Забележка: Както при download, е необходимо командата да се реализира съвместно от клиента и сървъра, защото сървърът няма директен достъп до файловата система на клиента. Необходимо е клиентът да изпраща съдържанието на посочения файл по някакъв начин на сървъра.

 

·         DIR – командата не приема параметри. Може да се изпълнява от всеки авторизиран потребител и връща списък с всички файлове и поддиректории на текущата директория.

 

·         DELETE [filename] – изтрива файл. Командата приема един задължителен параметър – името на файла, който да бъде изтрит от сървъра. Командата може да се изпълнява от всеки авторизиран потребител.

 

·         CHDIR [dirname] – променя текущата директория. Командата приема един задължителен параметър – името на директорията, която трябва да стане текуща. Командата може да се изпълнява от всеки авторизиран потребител.

 

·         PWD – командата не приема параметри. Като резултат от изпълнението й се връща текущата директория, към която сочи сървъра.

 

3.     Административен модул.

 

Този модул предоставя възможност за изпълнение на програми на компютъра, на който е стартирано сървърското приложение.

 

Модулът разпознава следните команди:

 

·         EXECUTE [filename] – командата приема един задължителен параметър : [filename] е файлът (програма), който да бъде стартиран. Командата може да бъде изпълнявана от всеки авторизиран потребител.

 

Забележка:

 

Като възможност за съхраняване на информацията за всеки потребител може да се използва текстов файл или структура в паметта.

 II.      Backdoor Game Client - BGC

 

Клиентската програма трябва да предоставя възможност на потребителя да се свързва със сървърската програма да може да се авторизира и да може да изпълнява заявки към сървъра във вид на команди, както и да получава резултата от изпълнението им.

   III.      Примери

 

1. Стартиране на BGS програмата.

 

java –cp . BackDoorGame 6666 admin !!pencho c:\windows

 

От командния ред указваме на java да стартира програмата BackDoorGame, със следните параметри:

         6666            – номер на TCP порт, на който сървърът ще приема заявки

         admin           - потребителско име, което ще бъде регистрирано първоначално

         !!pencho      - парола на съответния потребител

         c:\windows   - първоначална текуща директория за файловия модул.

 

2. Изпълнение на команди и резултат от изпълнението им към различни модули.

 

         2.1 Потребителски модул.

 

                   Авторизиране в BGS

                   => LOGIN baba stara – авторизира потребителя baba.

                   <= OK

                   При неуспешна авторизация

                   <= Wrong username or password

 

Регистриране на потребител

                   => LOGIN admin !!pencho

                   <= OK

=> REGISTER niki AQ!@3__Nn - добавя нов потребител niki.

<= OK

 

         2.2 Файлов сървър

                           

                            Показване името и пътя на текущата директория

                            =>PWD

                            <=Current directory is c:\windows

 

                            Показване съдържание на текущата директория

                            =>DIR

                            <=

 

Directory of C:\WINDOWS

 

03/21/2004  04:15 PM    <DIR>   .

03/21/2004  04:15 PM    <DIR>   ..

03/21/2004  04:11 PM        0   0.log

03/03/2004  12:32 PM    <DIR>   addins

03/17/2004  02:12 AM      910   ae2000pr.ini

03/17/2004  02:03 AM      223   ao97pr.ini

03/03/2004  08:25 PM    <DIR>   aod

03/03/2004  11:13 AM    <DIR>   Application Compatibility Scripts

03/03/2004  07:58 PM    <DIR>   AppPatch

03/03/2004  12:43 PM    9,793   aspnetocm.log

03/25/2003  02:00 PM    1,272   Blue Lace 16.bmp

03/08/2004  01:38 AM    <DIR>   Cache

03/03/2004  12:43 PM   13,398   certocm.log

03/25/2003  02:00 PM   82,944   clock.avi

03/03/2004  11:13 AM    <DIR>   Cluster

03/25/2003  02:00 PM   17,062   Coffee Bean.bmp

03/03/2004  12:43 PM   31,211   comsetup.log

03/03/2004  12:32 PM    <DIR>   Config

03/03/2004  12:32 PM    <DIR>   Connection Wizard

03/03/2004  11:24 AM        0   control.ini

03/03/2004  07:17 PM   73,728   copyfstq.exe

03/03/2004  11:14 AM    <DIR>   Cursors

03/10/2004  02:20 AM    3,008   dasetup.log

03/03/2004  12:40 PM    <DIR>   Debug

03/25/2003  02:00 PM        2   desktop.ini

03/06/2004  09:39 PM      238   dfm.ini

03/03/2004  08:03 PM      229   DHCPUPG.LOG

03/25/2003  02:00 PM   54,784   dialer.exe

10/11/2001  09:41 PM      149   DiViDiX online.url

03/03/2004  07:02 PM    <DIR>   Downloaded Installations

03/03/2004  12:32 PM    <DIR>   Driver Cache

03/03/2004  07:17 PM   94,636   dropcpyr.dll

03/03/2004  11:15 AM      761   DtcInstall.log

...

 

Командата е аналогична на командата dir под DOS и конзолата на Windows. Изискват се три колонки – дата и час на файла, големина на файла (или <DIR> ако е директория) и име на файла (или директорията).

 

         2.3 Административен модул

 

Изпълнение на програма на сървъра

=> EXECUTE c:\windows\calc.exe

<= Program "c:\windows\calc.exe" started.