Current MS Students/Kaleem Rana/Prospectus Draft
From CSWiki
Project or Thesis: Web Based UNIX GUI
Contents |
[edit] What I am planning to accomplish
[edit] (Project) Brief Project specification
Prof Guo advised me to implement a web based remote login to linux machine without installing any software on the client side e.g. SSH, putty, etc. Only a Web browser capable of running java applet/scripts on the client side is required.
The main idea of my project is to develop a web service which gives support to connect to the remote LINUX machines and provides the graphical interface to the users without installing any client software to their machines. Also, one can use the FTP and could access to their files over the web using the graphical interface provided to them.
The suggested website builds a secure encrypted end-to-end connection during the session. When users establish a connection, the website establishes a secure connection to your server and the web browser communicates to the remote machine server using secure 128-bit SSL connection. The web server then relays data between user server and the web browser. Each time you connect to one of your servers, you are required enter to both your own server's username and password, which is relayed directly to your server.
By making user servers available online, Users have exposed thier servers to potential exploitation. By being in the middle of User connection, a 3rd-party could steal usernames, passwords, and could log transmission of sensitive data. This is why I have to look for the security and risk concerns and apply the secure cryptography algorithms. My system implementation and policies are focused toward minimizing the risks that are assumed by using this system.
[edit] (Project) High level architecture
At the high level, a server with image capturing capabilities will be installed on the LINUX machine which will listen to the TCP/IP ports for any incoming connections. Remotely (on PC machine), a user will enter the IP address into the browser which will connect the user with the LINUX server and upon successful connection, a java applet / script will run within the browser to start a secured session between the PC browser(through the java script/applet) and the server on LINUX machine. At this point, the server will be receiving input commands from the PC browser user and will interpret those commands (keyboard and mouse movements) and will virtually/remotely use those input to control and run any program on the Linux machine.
Main components of the system as described above:
- Image capturing server on the Linux machine.
- Web browser capable of running Java applet/scripts on the PC machine.
- An ethernet wired or over the network connection between the server and client side.
- Apache server on the LINUX machine to control the file structure from within the web browser (as an FTP) {No java script will be used for this}
Brief Overview:
The java application will be running on the server to make the client thin. I choose this architecture so that many users simultaneously use the same server, making multiple remote accounts available to the server clients (PC users).
The Java application will communicate between the server and the browser and provide the basic framework or primitives for building graphical user interface (GUI) environments, which handles drawing and moving windows on the screen and interacting with a mouse and keyboard. The visual styling of windows based environments varies greatly; for example, different programs may present radically different interfaces. As I already mentioned the application is not the integral part of the operating system; instead it will be built as an additional application layer on the top of the operating system kernel.
The X protocols will specifically be designed to be used over the network connections rather than on an integral or attached display service.
The goals which are targeted to achieve are:
- Administering a remote machine graphically
- Running a computationally intensive simulation on a remote UNIX machine and displaying the results on a local Windows desktop machine.
- Running graphical software on several machines at once, controlled by a single display, keyboard and mouse.
HTTP/Java Applet:
The java applet will run on the web browser. This is the core front end of the application, running on the browser as a web page/java applet application, giving user different options to execute UNIX commands. The end users will be given options to execute UNIX commands, or perform functions on the UNIX filesystems by dragging and dropping, much like Windows explorer. The back end of this web application will communicate with the Image capturing server through and HTTP which will also ensure security of any transfer of data. An SSL security encryption will be used for any communication to/from the Image Capturing Server.
Image Capturing Server:
The Image Capturing Sever captures any images from Linux operating system and stores it in the bin directory within itself. These images will be utilized by the GUI Linux application, and sent to the browser for remote access of the Linux desktop on the browser. All such images/settings from the bin directory will make it possible for the browser to access the remote Linux system and display it as it appear in the Linux machine. Any changes made in the web browser will be directly communicated with the Image capture server, to make real time updates in the bin directory to make such changes as permanent. The GUILinix application “listens” for such changes to record it via communication through HTTP from browser, to communicate to the Image capture server by storing/updating the images and request it received from the web browser.
Communication with Unix:
The commands that need to be executing from browser will send request to Unix OS to perform such tasks. This will require the browser to send a request to the application, which then communicates with UNIX, calling the appropriate Remote Procedure Calls that will actually execute the command. The Application will get a confirmation once the command is execute, and will send the acknowledgement back to the browser for the font end user to be notified. An example of opening a file, editing it, and saving it is listed below:
- The end user request to open a file
- The end user edits the file
- The end user saves the edited file.
Steps to achieve such a request:
- The browser sends a ‘Open file’ request to the GUI Linux application running on the Image capture server via HTTP.
- The “Web based Remote Linux” calls a RPC to open a file in the Unix File System, given the filename requested from the web application.
- The RPC opens the file, sending confirmation to “Web based Remote Linux” application – this will involve file system paging, and swap file details which will require deep understanding of Unix Kernel and low level programming into Unix filesystem.
- The pages will be sent to the application which will securely transfer the data to the browser for the end user to view the desired file.
- Once the user makes changes to the file, the user saves it. This will cause the browser to send a request to save the file, along with the new file sent to the GUI Linux application.
- The application collects the file pages, and calls the remote procedure call to the UNIX to save the file, along with the new file to be saved.
- The UNIX communicates back wit the application, which sends that message back to the end user to be displayed on the browser.
Other such requests include desktop configuration, opening audio files etc.
[edit] Why this is academically interesting
[edit] Intended audience
- Users, who do not have access to install VNC softwares or SSH shells and want to use thier remote machines.
- Users who want the easiest way to get login to thier remote machines, from anywhere in the world, just by clicking a single website address.
- Mobile users, where they can get access to thier machines by using thier web-browsers.
- Next Generation of users, who wants simple and easy.
[edit] Why this is MS-level work
- Perl, Java
- Web Development/Designing
- Webservers / UNIX and WINDOWS
- Operating systems
- Communication Networks
- Computer Security
- Graphical tools
Giving the complexity of the project, this would have been a very good Master project.
[edit] Previous work
There are some web services which provides the remote login to Windows machines but none of them provides remote login to LINUX machines.
And many more.
[edit] Literature review
In the given listing of papers and literature reviews, I understand the basic and fundamental architecture of the existing VNC softwares. I also understand the terms X-based servers, VNC Servers, thin clients, Image capturing servers (mirage), Low level programming, kernal programming ect.
Here are some important literature available on the net, which helps me in understanding different aspects of the project.
Features of XVNC, a server used as image capturing server on the UNIX platform.
http://linuxreviews.org/howtos/xvnc/ http://en.wikipedia.org/wiki/Vnc http://www.cl.cam.ac.uk/research/dtg/attarchive/pub/docs/att/tr.98.1.pdf
Mirror Image software for Windows systems, giving the basic concepts how it works.
http://www.demoforge.com/dfmirage.htm http://packages.ubuntu.com/feisty/mirage http://www-128.ibm.com/developerworks/aix/library/au-unixothers/
Use extern with browser.
http://www.tditx.com/pdf/technotes/CW_xterm.pdf
[edit] (Project) Platforms to be used and what I will add to each
- Remote Capturing Server: I will use the existing VNC open sourse server to get the mirror image for the remote login machine. I have to add JAVA application to the XVNC server using which I could view the server using a web browser, so that one can then see the desktop from any Java-capable browser.
- JSP for the web platform.
- Java capable browser.
- Apache Server
[edit] (Project) Available platforms I am not using and why
To my knowledge, there are no existing Web driven remote login to LINUX machines.
[edit] Anticipated challenge(s)
[edit] Challenge(s)
- The RPC opens the file, sending confirmation to “Web based Remote Linux” application – this will involve file system paging, and swap file details which will require deep understanding of Unix Kernel and low level programming into Unix filesystem.
- Opening a audio file within a web browser will be a big challenge.
- Given the ability to access the remote desktop with a verity of different web browsers, and screen resolution.
- Distuinshuing shortcut keys, e.g, if a user wants to use his local machine keys OR to the Remote LINUX machine keys.
[edit] Anticipated approach to each challenge
Haven't finialized the specific approach to the anticipated challenges.
[edit] What I bring to this work
[edit] My relevant background and experience (CS 590)
- I took CS594 (computer networking and protocols) last year. This will help me in understanding the network protocols required in the project.
- I also took CS540 (advanced operating system) last year. This will also help me in understanding and working with the different operating systems.
- I took CS320 (web programming) and registered in the CS520 (advanced web programming) which will help me in the project.
- I have a programming experience in Java, Perl, C++, .Net. Although, I have been involved in database administration since long time, so developing this application will be great comeback and challenging to me.
- Currently taking CS590 (software architecture), helping me in defining my project and its goals and finding out different aspects, and areas of the project.
[edit] What I find interesting about this work
I will get a chance to work on a project which led me in learning different technologies. Also, working on a project which have not been achieve yet is quite interesting and challenging to me.
[edit] How this work goes beyond my experience and course work
This project covers web architecture, code, theory of networking and protocols, different operating systems, providing a sophisticated climax to several areas of coursework.

