Курсов проект № 1 по “Интернет програмиране с Java”
1.3. Backdoor Game
Автор: Николай Недялков
Версия: 0.9
Последна промяна: 22.03.2004
Целта на проекта е да се напише многонишково клиент/сървър приложение на Java, съответно BackdoorServer и BackdoorClient. Комуникацията между двете приложения клиент и сървър ще се извършва посредством протокола TCP.
Това е сървърска програма, която ще изпълнява определени операции и команди и ще връща обработен резултат при клиента. Сървърската програма е самостоятелна 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] е файлът (програма), който да бъде стартиран. Командата може да бъде изпълнявана от всеки авторизиран потребител.
Забележка:
Като възможност за съхраняване на информацията за всеки потребител може да се използва текстов файл или структура в паметта.
Клиентската програма трябва да предоставя възможност на потребителя да се свързва със сървърската програма да може да се авторизира и да може да изпълнява заявки към сървъра във вид на команди, както и да получава резултата от изпълнението им.
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.