Sei sulla pagina 1di 84

AUTOMATED NETWORK ADMINISTRATION TOOL (VI SEMESTER MCA PROJECT)

CONTENTS

INDEX
SNO 1 2 CONTENTS ABSTRACTION INTRODUCTION ORGANIZATION OVERVIEW 2.1 organization profile 2.2 about the project SYSTEM ANALYSIS 3.1 existing system 3.2 proposed system PROBLEM ANALYSIS 4.1 feasibility study SYSTEM REQUIREMENTS 5.1 hardware requirements 5.2 software requirements SYSTEM DESIGN 6.1 DFD 6.2 ER diagram 6.3 SYSTEM TESTING SNAPSHOTS SYSTEM IMPLEMENTATION FUTURE ENHANCEMENT CONCLUSION BIBLIOGRAPY PAGWNO

7 8 9 10 11 12

ABSTRACT

Automated Network Administration Tool (ANAT) is an innovative tool for managing the network automatically and executing the commands on the Gateway machines and restricting access to server machines on the network for different users in the network. Now a day, there are many tools available for network monitoring and management. But ANAT provides a unique way of managing the network, that is, automatic network management based on the three main constraints like time, host, and user. This automatic administration relieves the administrator from his usual tedious task.

INTRODUCTION

INTRODUCTION Organization Profile :


About the company: RMS Technologies: RMS Technologies is an IT solution provider and is preferred by many Indian and overseas companies. It has become their preferred choice either in Software Development or Corporate Training. With our years of experience, we are providing excellence quality products and services. Our corporate training division has become a catalyst to the IT industry by improving skills of developers to achieve their goal proficiently. Basically RMS technology is a core Product Development Company mainly focus on Products Development, Applications Development and Web based Applications

Development. Many Indian companies including smaller and bigger scale industries prefer our development center to solve their problem according to their requirements. Our mission is to promote software usage not only for multinational bodies also for our Indian small scale industries with our promotional programs and events. Now the time has arrived when all small scale industries also want to use software rather than manual system. We want to provide solutions as per their requirements without any financial constraints. "We pledge to deliver quality products and promote small scale industries for software usage that leads them to achieve zenith."

Company Profile
RMS Technologies is a globally focused Software Developed, Corporate Training and IT Services Company based in Bangalore. We have dedicated teams of Professionals with diverse technical skill sets to handle the challenges in various arias of IT service. Our main focus is on stringent quality standards, exceptional resource capabilities and a consistent record of delivering quality solutions to clients on schedule.

Companys Vision
RMS Technologies objective and vision revolves around quality, consistency, and commitment & customer satisfaction. Sim`ply stated, an RMS technology strives to offer nothing but the best to its customers.

Our Domain Expertise


RMS Technology offers world-class technologies to its customers in the following areas:. Enterprise Solutions(ESOL). Web Development Management(WDM).

IT Management Consultancy(ITMC). Event Management(EMG). Technical Expertise. The following are the areas where we have proven prowess. Software : JSP, JavaScript, Java Beans, Servlets, EJB, HTML. PHP, XML. Weblogic, IIS, Web Sphere, Jboss, Tomcat Database : Oracle 8i, 9i SQL Server, DB2, MYSQL
For more Visit us at www.easyjavatoall.com

Introduction to the project:


Automated Network Administration Tool (ANAT) is an innovative tool for managing a network automatically in the absence of an administrator. ANAT is used for executing the commands on the Gateway machines and restricting access to server machines on the network for different users in the network. In Automated Network Administration tool an algorithm is developed for the purpose of automatically managing the network based on the criteria like Time, Host and User. This algorithm will restrict the access of the user to applications or resources on a system according to the access control rules set by the administrator. As a part of network management

packet filtering, packet blocking etc. are done. Firewalls are activated and deactivated and Packet redirecting is developed according to the requirement of the Network administrator.

SYSTEM ANALYSIS

Existing System:
Now a day, the task of controlling the communication across the network is very tedious. There are many network monitoring tools available today which monitor the network

host but which cannot restrict the network access based on the three constraints i.e. time, host and user. All the constraints and access rights of a network user are written in the firewall of a respective Bastion machine. For more security, these rules will have to be written in more than one Bastion machine. In the existing system, a network administrator will have to write all such rules in the firewalls of the respective Bastions separately. The administrator will have to manually reconfigure all such rules when the network users move in the network or they change their position. The administrator will have to be there in the current network for reconfiguring the network i.e., he cannot do this job from a remote site or another place Also there is always a chance for the misuse of the privileges, by the network users given by the administrator. He may misuse his privilege to access the ports of different server machines in the network using utilities such as SSH, TELNET, FTP etc. The administrator will have to continuously rewrite the rules, to restrict the access to different servers in the network by the network users. There is no network management or controlling tool, which completely holds the necessities discussed above. The administrator has no tools currently available, which can be used to update the firewall written for a business firm.

Proposed System:
The proposed system is for a network which consists of different servers connected to a gateway machine and the clients connected to the bastion server through a hub or

switch. The proposed system is expected to rectify all drawbacks of the existing system. The administrator should be able to control and monitor the whole network from a central Bastion. There will be provision for writing the firewall rules in a central Bastion. The policies or rules for each user are stored in the central database in the Bastion Server. The administrator can login to the central Bastion, which is basically a web server from anywhere in the world i.e., from any other network, provided that he must have access to the Internet. When a user login to the network, the login information is sent to the Bastion Server and all his access rights are retrieved from the database and are applied on the Bastion Server. The propose system is based on three constraints time, user and host. The policies or rules are applied in the central Bastion machine according to these three constraints. The user access to the machine or the network can be restricted based on time, host and user. There are provisions for adding new users to the network. At the time of creation of user accounts the rules and policies for that particular user are decided by the network administrator. The network administrator can write new policies and rules for existing users and for new users, which is accomplished by a well designed user interface for administrator.

Automated Network Administration has the following modules : 1. Login 2. UserDetails 3. Group 4. Host 5. Policy

Login:

Login will display the username and the pass word. Whenever a client is logged into the network, his details are verified with the database and his corresponding policies are applied to that user and the corresponding hosts. User Details: This will display all the authorized users in the nwtwork. User details is the having the own id.Explain the various users of the network.userid stores the user id.every user having the own id.user password stores the password of the user.user policy stores the special policy of user.groupsign in stores the combioned policy of the groups in which hw is member.start time stores the start time of the userfrom which he can be in the network.endtime stores the end time of user upto which can be in the network.email stores the email of the user. With these fields we cant login. Group: Group explain the various user groups in the network.this will display the groups which are registered in the network.In the automated network administration tool we are using in companies and the any under network company.This group we are having different baches. Every batch having one group id, group description,group policy.Group id stores the id of the group.Group description srores the policy that will affect a particular group..every group having some particular restriction.with out permission they cant login. Host: Host will display the user who are currently in the network.host stores the details of the various clients in the network. Host having the some fields.host id , start time and the end time .Host id explain about the id of a host.host is nothing but a ip adrress. Every system having the own ip addresss.In host impartant is the start time and the end time.Start time is the explain the start time of the user .this disply when he login which group login.End time stores the end time of the host up to which it can be in the network.

Policy: This will display all the policies which can be set for users the new policy stores the details of various policies than can be applied to different users in new policy we are using the policy id .it stores the id of various policies.Policy description it stores description of the policies script id stores the names of script Files in which the it tables rules are written.policy is nothing but a rules and regulations in the new policy we are having the different types of rules .Every user having the own id and the password.

To Manage The Entire Network Users: The administrator should be able to manage the entire network users i.e. by restricting their access to the servers in the network. User Friendly Interface: The administrator should be provided with a user-friendly interface to add new users, delete users, modify users, add policy, add groups etc. Make Updates Anytime, Anywhere: The administrator should be able to update the user policies or the database even he is not in the local network. Fast, Simple And Easy To Use: management should be done. Maximum Efficiency And Scalability: The software should be efficient and scalable. Security And Authentications: Authentication should be provided for better security Once software installed and configured the automated

PROBLEM ANALYSYS

FEASIBILITY ANALYSIS:
In feasibility study an estimate is made of whether the identified user needs may be satisfied using current software and hardware techniques. The study will decide if the proposed system will be cost effective from a business point of view, and if it can be developed given existing budgetary constraints. The result should inform the decision whether to go ahead with a more detailed analysis. SYSTEM PERFORMANCE DEFINITION There is no printed document or report as the output of proposed system. The only intended output of the system is user-friendly screens for getting some inputs and processing them. FEASIBILITY CONSIDERATION Three key considerations are involved in the feasibility analysis, economic, technical, and behavioral. ECONOMIC FEASIBILITY Economic analysis is the most frequently used method for evaluating the effectiveness of a candidate system. More commonly known as cost benefit analysis, the procedure is to determine the benefits and saving are expected from a candidate system and compared them with costs. The benefits outweigh costs, the decision is made to design and implement the system. Otherwise further justification and alternation in the proposed system have to be made. ANAT, saves money and time. The administrator is relieved from the day to day firewall configuration.

TECHNICAL FEASIBILITY : ANAT can be managed from any part of the world provided, an internet connection. BEHAVIORAL FEASIBILITY In behavioral feasibility, an estimate should be made of how strong a reaction the user staff is likely to have toward the new system. As far as concerned with this project ANAT, the clients can run on any platform. A minimum memory of 256MB is required for the gateway system. A hard disk of minimum 20GB is also recommended.

SYSTEM REQUIREMENTS

HARDWARE AND SOFTWARE REQUIREMENTS: The software requirement specification is produced at the culmination of the analysis task. The function and performance allocated to software as part of system engineering are refined by establishing a complete information description as functional representation, a representation of system behavior, an indication of performance requirements and design constraints, appropriate validation criteria. Hardware Requirements Gateway machine: Memory 256 MB RAM Hard Disk 20 GB Two 10/100mbps NIC cards Client Machine: Memory 128 MB RAM Hard Disk 2GB 10/100mbps NIC cards Software Requirements Gateway machine: Redhat Linux 9 Recompiled Redhat Enterprise Linux 2.4.x Kernel My SQL 3.23.54 for Linux For communication RMI Client and RMI Stub is needed. Client Machine:

Redhat Linux 9 or Windows Operating System For communication RMI Client and RMI Stub is needed.

Software Description : Java was conceived by James Gosling, Patrick Naughton, Chris Wrath, Ed Frank, and Mike Sheridan at Sun Micro system. It is an platform independent programming Language that extends its features wide over the network.Java2 version introduces an new component called Swing is a set of classes that provides more power & flexible components than are possible with AWT. Its a light weight package, as they are not implemented by platform-specific code. Related classes are contained in javax.swing and its sub packages, such as javax.swing.tree. Components explained in the Swing have more capabilities than those of AWT What Is Java? Java is two things: a programming language and a platform. The Java Programming Language Java is a high-level programming language that is all of the following: 1. Simple 2. Object-oriented 3. Distributed 4. Interpreted 5. Robust 6. Secure 7. Architecture-neutral 8. Portable 9. High-performance

10. Multithreaded With most programming languages, you either compile or interpret a program so that you can run it on your computer. The Java programming language is unusual in that a program is both compiled and interpreted. With the compiler, first you translate a program into an intermediate language called Java byte codes the platform-independent codes interpreted by the interpreter on the Java platform. The interpreter parses and runs each Java byte code instruction on the computer. Compilation happens just once; interpretation occurs each time the program is executed. The following figure illustrates how this works.

You can think of Java bytecodes as the machine code instructions for the Java Virtual Machine (Java VM). Every Java interpreter, whether its a development tool or a Web browser that can run applets, is an implementation of the Java VM. Java bytecodes help make write once, run anywhere possible. You can compile your program into bytecodes on any platform that has a Java compiler. The bytecodes can then be run on any implementation of the Java VM. That means that as long as a computer has a Java VM, the same program written in the Java programming language can run on Windows 2000, a Solaris workstation, or on an iMac.

The Java Platform A platform is the hardware or software environment in which a program runs. Weve already mentioned some of the most popular platforms like Windows 2000, Linux, Solaris, and MacOS. Most platforms can be described as a combination of the operating system and hardware. The Java platform differs from most other platforms in that its a software-only platform that runs on top of other hardware-based platforms. The Java platform has two components:

The Java Virtual Machine (Java VM) The Java Application Programming Interface (Java API)

Youve already been introduced to the Java VM. Its the base for the Java platform and is ported onto various hardware-based platforms. The Java API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets. The Java API is grouped into libraries of related classes and interfaces; these libraries are known as packages. The next section, What Can Java Technology Do?, highlights what functionality some of the packages in the Java API provide. The following figure depicts a program thats running on the Java platform. As the figure shows, the Java API and the virtual machine insulate the program from the hardware.

Native code is code that after you compile it, the compiled code runs on a specific hardware platform. As a platform-independent environment, the Java platform can be a bit slower than native code. However, smart compilers, well-tuned interpreters, and just-in-time bytecode compilers can bring performance close to that of native code without threatening portability.

What Can Java Technology Do?


The most common types of programs written in the Java programming language are applets and applications. If youve surfed the Web, youre probably already familiar with applets. An applet is a program that adheres to certain conventions that allow it to run within a Javaenabled browser. However, the Java programming language is not just for writing cute, entertaining applets for the Web. The general-purpose, high-level Java programming language is also a powerful software platform. Using the generous API, you can write many types of programs. An application is a standalone program that runs directly on the Java platform. A special kind of application known as a server serves and supports clients on a network. Examples of servers are Web servers, proxy servers, mail servers, and print servers. Another specialized program is a servlet. A servlet can almost be thought of as an applet that runs on the server side. Java Servlets are a popular choice for building interactive web applications, replacing the use of CGI scripts. Servlets are similar to applets in that they are runtime extensions of applications. Instead of working in browsers, though, servlets run within Java Web servers, configuring or tailoring the server. How does the API support all these kinds of programs? It does so with packages of software components that provide a wide range of functionality. Every full implementation of the Java platform gives you the following features:

The essentials: Objects, strings, threads, numbers, input and output, data structures, system properties, date and time, and so on. Applets: The set of conventions used by applets. Networking: URLs, TCP (Transmission Control Protocol), UDP (User Data gram Protocol) sockets, and IP (Internet Protocol) addresses. Internationalization: Help for writing programs that can be localized for users worldwide. Programs can automatically adapt to specific locales and be displayed in the appropriate language.

Security: Both low level and high level, including electronic signatures, public and private key management, access control, and certificates. Software components: Known as JavaBeansTM, can plug into existing component architectures.

Object serialization: Allows lightweight persistence and communication via Remote Method Invocation (RMI). Java Database Connectivity (JDBCTM): Provides uniform access to a wide range of relational databases. The Java platform also has APIs for 2D and 3D graphics, accessibility, servers, collaboration, telephony, speech, animation, and more. The following figure depicts what is included in the Java 2 SDK.

Java Server Page (JSP) JSP is a technology that allows Web pages to be created dynamically for the Web Server so that the page content can be varied according to circumstances. This can be used for instance, to provide custom pages according to the identity of the user, the type of Web browser they are using, information they have provided or selections they have made. JSP documents are written in plain text and have a .jsp file extension. They use tags, like those in HTML or XML, to denote JSP elements. A JSP element is used to dynamically insert content into a page. It can be used for many purposes, such as getting information from a database or retrieving user preferences. JSP elements can contain scriptlets, written in the

Java programming language, to provide the logic to determine which content should be generated for a Web page. INTRODUCTION TO JDBC JDBC (Java Database connectivity) is a front-end tool for connecting to a server to ODBC in that respect, however JDBC can connect only java client and it uses ODBC for the connectivity. JDBC is essentially a low-level API since any data manipulation, storage and retrieval has to be done by the program itself. Some tools, which provide a higher-level abstraction, are expected shortly. The next question that needs to be answered is why we need JDBC, once we have ODBC on hand. We can use the same ODBC to connect the entire database and ODBC is a proven technology.Problem for doing this is ODBC gives a c language API, which uses pointers extensively. Since java does not have any pointers and is object-oriented sun Microsystems, inventor of java developed to suit its needs. Requirements to use JDBC: To use JDBC you need a basic knowledge of databases and SQL . A part from this you need the jdk1.1 (Java Development Kit1.1 available javasofts website) or a version of Java since jdk1.1 and above come bundled with JDBC Software. After that you need to have a back-end database engine for which a JDBC driver is available. When JDBC drivers are not available JDBC-ODBC bridge drivers are used to access the database through ODBC. Back-end is not needed when JDBC driver is capable of storing and retrieving the data itself, or if JDBC-ODBC Bridge and the ODBC driver can be used to store and retrieve the information.

DATABASE MODELS: JDBC and accessing the database through applets and JDBC API via an intermediate server resulted server resulted in a new type of database model which is different from the clientserver model. Based on number of intermediate server through the request should go it is named as single tire, two tire and multi tire architecture Single Tier:

In a single tier the server and client are the same in the sense that a client program that needs information (client) and the source of this type of architecture is also possible in java, in case flat files are used to store the data. However this is useful only in case of small applications. The advantage with this is the simplicity and portability of the application developed. Two Tier (client-server): In two tier architecture the database resides in one machine and client in different machine they are connected through the network. In this type of architecture a database management takes control of the database and provides access to clients in a network. This software bundle is also called as the server. Software in different machines, requesting for information are called as the clients.

Client Server Client database database

Three tier and N-Tier: In the three-tier architecture, any number servers can access the database that resides on server. Which in turn serve clients in a network. For example, you want to access the database using java applets, the applet running in some other machine, can send request only to the server from which it is down loaded. For this reason we will need to have a intermediate server which will accept the requests from applets and them to the actual database server. This intermediate server acts as a two-way communication channel also. This is the information or data from the database is passed on to the applet that is requesting it. This can be extended to make n tiers of servers, each server carrying to specific type of request from clients, however in practice only 3 tiers architecture is popular.

JDBC Driver Types: The JDBC drivers that we are aware of at this time fit into one of four categories JDBC-ODBC BRIDGE PLUS ODBC DRIVER The java soft bridge product provides JDBC access via ODBC drivers. Note that ODBC binary code end in many cases database client code must be loaded on each client machine that uses this driver. As a result, this kind of driver is most appropriate on a corporate network where client installations are not major problem, or for application server code written in java in a 3-tier architecture. NATIVE API PARTLY-JAVA DRIVER: This kind of driver converts JDBC calls into calls on the client API for oracle Sybase, Informix, DB2, or other DBMS. Note that, like the bridge driver, this style of driver requires that some binary code be loaded on each client machine. JDBC-NET ALL-JAVA DRIVER This driver translates JDBC calls into a DBMS independent net protocol, which is then translated, to a DBMS protocol by a server. This net server middle-ware is able to connect its all java clients to many different databases. The Specific protocol used depends on the vendor. In general, this most flexible JDBC alternative. It is likely that all vendors of this solution will provide products suitable for intranet use. In order for these products to also support Internet access, they must handle the additional requirements for security, access through firewalls, etc that the web imposes. Several vendors are adding JDBC drivers to their existing database middleware products. NATIVE PROTOCOL ALL-JAVA DRIVER

This kind of driver converts JDBC calls into the network protocol used by DBMS directory. This allows a direct call from the client machine to the DBMS server that is practical solution for intranet access. Since many of these protocols are proprietary, the database vendors themselves will be the primary source. Several database vendors have these in progress. Eventually, we expect that driver categories 3 and 4 will be the preferred way to access databases from JDBC. Driver categories one and two are interim solutions where direct all java drivers are not yet available. Category 4 is in some sense the ideal; however, there are many cases where category 3 may be preferable: eg: -where a thin DBMS-independent client is desired, or if a DBMS independent protocol is standardized and implemented directly by many DBMS vendors.

JDBC Goals Few software packages are designed without goals in mind. JDBC is one that, because of its many goals, drove the development of the API. These goals, in conjunction with early reviewer feedback, have finalized the JDBC class library into a solid framework for building database applications in Java. The goals that were set for JDBC are important. They will give you some insight as to why certain classes and functionalities behave the way they do. The eight design goals for JDBC are as follows:

MYSQL

MySQL has become one of the most popular Linux databases on the market and it continues to improve each day. MySQL is a popular structured query language (SQL) database server. Like other SQL servers, MySQL provides the means of accessing and managing SQL databases. However, MySQL also provides tools for creating database structures, as well as for adding, modifying and removing data from those structures. Because MySQL is a relational database, data can be stored and managed in small, manageable tables. Those tables can be used in combination to create flexible yet complex data structures.

IPTABLES Iptables is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel. There are several different tables like FILTER, NAT and MANGLE which may be defined, and each table contains a number of built-in chains like INPUT, OUTPUT, FORWARD, POSTROUTING, PREROUTING, and may contain user-defined chains. Each chain is a list of rules which can match a set of packets: each rule specifies what to do with a packet which matches. This is called a `target', which may be a jump to a user-defined chain in the same table.

SWING Swing is a set of classes that provides more powerful and flexible components than are possible with the awt. In addition to the familiar components such as buttons, checkboxes, and labels, swing supplies several exciting additions including tabbedpanes, scrollpanes, trees and tables. Even familiar components such as buttons have more capabilities in swing .For example a button may have both an image and a text string associated with it. Also the image can be changed as the state of the button changes. Unlike awt components, swing components are not implemented by platform specific code .Instead they are written entirely in java and are therefore platform independent. The term lightweight is used to describe such elements.

Swing Heavy weight Components

Swing Lightweight Components

AWT

Frame ,Window ,Dialog


F

Component, Container, Graphics, Color, Font, Toolkit, Layout Managers etc.

Swings Relationship to the AWT

Introduction to Servlets
Servlets provide a Java(TM)-based solution used to address the problems currently associated with doing server-side programming, including inextensible scripting solutions, platformspecific APIs, and incomplete interfaces. Servlets are objects that conform to a specific interface that can be plugged into a Java-based server. Servlets are to the server-side what applets are to the client-side -- object bytecodes that can be dynamically loaded off the net. They differ from applets in that they are faceless objects (without graphics or a GUI component). They serve as platform-independent, dynamically-loadable, pluggable helper bytecode objects on the server side that can be used to dynamically extend server-side functionality. What s a Servlet? Servlets are modules that extend request/response-oriented servers, such as Java-enabled web servers. For example, a servlet might be responsible for taking data in an HTML order-entry

form and applying the business logic used to update a company's order database.

Servlets are to servers what applets are to browsers. Unlike applets, however, servlets have no graphical user interface. Servlets can be embedded in many different servers because the servlet API, which you use to write servlets, assumes nothing about the server's environment or protocol. Servlets have become most widely used within HTTP servers; many web servers support the Servlet API. Use Servlets instead of CGI Scripts! Servlets are an effective replacement for CGI scripts. They provide a way to generate dynamic documents that is both easier to write and faster to run. Servlets also address the problem of doing server-side programming with platform-specific APIs: they are developed with the Java Servlet API, a standard Java extension. So use servlets to handle HTTP client requests. For example, have servlets process data POSTed over HTTPS using an HTML form, including purchase order or credit card data. A servlet like this could be part of an order-entry and processing system, working with product and inventory databases, and perhaps an on-line payment system. Other Uses for Servlets : Here are a few more of the many applications for servlets:

Allowing collaboration between people. A servlet can handle multiple requests concurrently, and can synchronize requests. This allows servlets to support systems such

as on-line conferencing.

Forwarding requests. Servlets can forward requests to other servers and servlets. Thus servlets can be used to balance load among several servers that mirror the same content, and to partition a single logical service over several servers, according to task type or organizational boundaries.

Architecture of the Servlet Package The javax.servlet package provides interfaces and classes for writing servlets. The architecture of the package is described below. The Servlet Interface: The central abstraction in the Servlet API is the Servlet interface. All servlets implement this interface, either directly or, more commonly, by extending a class that implements it such as
HttpServlet.

The Servlet interface declares, but does not implement, methods that manage the servlet and its communications with clients. Servlet writers provide some or all of these methods when developing a servlet.

REMOTE METHOD INVOCATION Remote Method Invocation (or RMI for short) allows us to execute methods on remote servers. As the name suggests, it helps us to locate and execute methods of remote objects. It's like placing a class on Machine A and calling methods of that class from Machine B as though they were from the same machine. RMI is a pure Java solution unlike CORBA where we can have objects from different programming languages interacting. In RMI everything we code will be in JAVA. This whole process will look transparent to the end user. Objects which have to be made available to other machines have to be exported to something called a Remote Registry Server so that they can be invoked. Remote Registry Server is a service that runs on the server and helps clients search and access objects on the server remotely. If an object has to be capable of being exported then it must implement the Remote Interface present in the RMI package. RMI uses something called a stub and a skeleton. The stub is present on the client side, and the skeleton the server side. There are a number of events that have to take place beforehand which help in the communication of the data. The stub is like a local object on the client side, which acts like a proxy of the object on the server side. It provides the methods to the client which can be invoked on the server. The Stub then sends the method call to the Skeleton, which is present on the server side. The skeleton then implements the method on the server side.

The Stub and the Skeleton communicate with each other through something called a Remote Reference Layer. This layer gives the stub and skeleton the capability to send data using the TCP/IP protocol. A simple technique called "Binding" is involved in RMI.

SYSTEM DESIGN

Data flow diagrams (DFD)

Data flow diagrams (DFDs) reveal relationships among and between the various components in a program or system. DFDs are an important technique for modeling a systems high-level detail by showing how input data is transformed to output results through a sequence of functional transformations. DFDs consist of four major components: entities, processes, data stores, and data flows. The symbols used to depict how these components interact in a system are simple and easy to understand, however, there are several DFD models to work from, each having its own symbology. DFD syntax does remain constant by using simple verb and noun constructs. Such a syntactical relationship of DFDs makes them ideal for objectoriented analysis and parsing functional specifications into precise DFDs for the systems analyst. Data flow diagram is a graphical tool used to describe analyze the movement of data through a system manual or automated including the processes, stores of data, and delays in the system. Data flow diagrams are the central tool and basis for form which other components are developed. The data flow diagram is also known a data flow graph or bubble Data flow diagrams illustrate how data is processed by a system in terms of inputs and output. Data flow diagrams (DFDs) are the method of choice over technical descriptions for three principal reasons. 1. DFDs are easier to understand by technical and nontechnical audiences 2. DFDs can provide a high level system overview, complete with boundaries and connections to other systems 3. DFDs can provide a detailed representation of system components. DFDs represent the following: 1. External devices sending and receiving data 2. Processes that change that data. 3. Data flows themselves. 4. Data storage locations The hierarchical DFD typically consists of a top-level diagram (Level 0) underlain by cascading lower level diagrams (Level 1, Level 2) that represent different parts of the system.

Data Flow: Data flow is the movement of data between the entity, the process, and the data store. Data flow portrays the interface between the components of the DFD. The flow of data in a DFD is named to reflect the nature of the data used (these names should also be unique within a specific DFD). Data flow is represented by an arrow, where the arrow is annotated with the data name.

Context diagram: A context diagram is a top level (also known as level 0) data flow diagram. It only contains one process node (process 0) that generalizes the function of the entire system in relationship to external entities. The top-level diagram is often called a context diagram. It contains a single process, but it plays a very important role in studying the current system. The context diagram defines the system that will be studied in the sense that it determines the boundaries. Anything that is not inside the process identified in the context diagram will not be part of the system study. It represents the entire software element as a single bubble with input and output data indicated by incoming and outgoing arrows respectively.

Advantages and Disadvantages of DFDs: Advantages: As we have seen, the DFD method is an element of objectoriented analysis and is widely used. Use of DFDs promotes quick and relatively easy project code development. DFDs are easy to learn with their few-and simple-to-understand symbols (once you decide on a particular DFD model). The syntax used for designing DFDs is simple, employing English nouns or nounadjective- verb constructs. Disadvantages: DFDs for large systems can become cumbersome, difficult to translate and read, and be time consuming in their construction. Data flow can become confusing to programmers, but DFDs are useless without the prerequisite detail.

System components

Symbolizes process Symbolizes data flow Symbolizes External entity Symbolizes data store The data flow diagram is one of the most important tools used for the system analysis. ADEMACRO (1978) and SARSON (1979) populated the use of data flow diagrams as modeling tool through their structured analysis methodologies. They suggested that a data flow diagram should be the first tool used by the analyst to model the system components. There are four types of system components. They are

Process:

Process shows what system does. A process is represented by a circle as shown above. Each process is given a unique name and a unique number. Each process takes one or more data inputs and produces one or more data outputs. Data flows: Data flows made the passage of data and are represented by the line joining the system components. An arrow is used to indicate the direction of data flow shown in the above and the line is labeled by the name of the data flow. Data stores:

Data store is used to represent the repository of the data that maintains in the system. A process can store data into a data store or retrieve the data from the data store. A data store is represented by a thin line as shown in the above. External Entities: External entities are the out side the system but they either supply input into system or use system output. The designer has to control over these entities. These are represented by a square or rectangle outputs as shown in the above. The context level data flow diagram shown above gives a brief idea about the flow of data should be and it is also shows the control if some data are invalid.

Data Flow Diagram: LEVEL 0 :

SYSTEM DESIGN DATAFLOW DIAGRAM

CLIENT1

SERVER1

ANAT ON CLIENT2 GATEWAY SERVER2

CLIENT n LEVEL 0

SERVER n

LEVEL 1 :

CLIENT

Client authentication on Gateway machine

Chat Interface for client

User details

Policies for Client is set on Gateway machine

Logout client

Adding users and policies

Policies

Policies for the client are removed

ADMINISTRATOR

LEVEL 1

LEVEL 2 (Client)

client

User authentication User details

Checking the allowable time to n/w

Checking current availability of the system in which client is logged in

Checking whether client is allowed to sit on the current machine

Host details Setting user policies on the gateway User-host details logout Chat for client Removing policies for client Policies

LEVEL 2 (Client)

LEVEL 3 (Administrator) :

ADMINISTRATOR Add users, policies and groups userdetails Policy details Group details

Modify users, policies & groups

Delete users, policies& groups

Group details User details

Policy details

LEVEL 3 (Administrator)

4.2 Input Design: Input design is the process of converting user-originated input to a computer-

based format. The goal of designing input data is to make data entry as easy, logical and free from errors. Input data are collected and organized into groups of similar data. Appropriate input media are selected for processing. The project requires a set of information from the user to prepare a report. In order to prepare a report, organized input data are needed. Input design is one of the most expensive phases of the operation of computerized system and is often the major problem of a system. Inaccurate input data are the most common cause of error in data processing. Errors entered by data entry operators can be controlled by input design. The objective of input design is: To produce a cost effective method of input. To make the input forms understandable to the user. To ensure the validation of the data input. To achieve the highest possible level of accuracy. The various activities to be performed for the overall input process are: Data recording at its own Data transfer to input form Data conversion to computer accessible mode Data validation Data flow control Data correction if necessary The design of input covers all phases of input form from the creation of initial data to actual entering of the data of the system for processing. The design of input involves

identifying the data needed; specifying the characteristics of each data item, capturing and preparing data for computer processing and ensuring correctness of data . In ANAT input design is done with several components like forms and its elements like buttons, textboxes, labels etc. ANAT provides interfaces for administrators and users of the network.

Administrator Interface : Administrator is provided with various forms for manipulating users, policies and groups. Forms are made with the help of html, JSP and JavaScript. Administrator can easily do his work with the help of these forms. User Interface : Users are provided with a login form through which he can log on to the network. User forms are designed with the help of Swing package from java. Also forms are provided for communicating users with the Server machine managers. Output Design : In Output design, the emphasis is on producing a hard copy of information or displaying the output. Output design generally refers to the results generated by the system. Computer output is the most important and direct source of information to the user. Efficient, intelligent output design should improve system relationships with the user and help in decision making. For many end-users, output is the main reason for developing the system and the basis on which they evaluate the usefulness of the application. Print outs should be designed around the output requirements of the user. One of the most important reasons, which tempt the user to go for a new system, is the output. Outputs also provide a means of storage by copying the results for later reference in consultation. There is a chance that some of the end-users will not actually operate the input data or information. Outputs of a system can take various forms. The most common are reports, screen displays, printed forms, graphical drawings etc. Two phases of output design are:

Output Definition Output Specification

Output definition takes into account the type of output contents, its frequency and its volume. The appropriate output media is determined for outputs. Once the output media is chosen, the detail specifications of output documents are carried out. The nature of output required from the proposed system is determined during the logical stage itself. The outputs generated by the system are often regarded to be the criterion for evaluating the system usefulness and resourcefulness. The outputs of a system are the justification for its existence. If the outputs are inadequate in any way, the system itself is inadequate. The basic requirement of output is that it should be accurate, timely and appropriate in terms of content, medium and layout for its intended purpose. Hence it is necessary to design outputs so that the objectives of the system are attained.

The following are some of the outputs generated in the proposed system.

Policy set for a user who logged in. Whenever a client is logged into the network, his details are verified with the database and his corresponding policies are applied to that user and the corresponding hosts. List all the users who are in the network currently. This will list all the users who are currently in the network. List users This will display all the authorized users in the network.

List Policies This will display all the policies which can be set for users. List groups This will display all the groups which are registered in the network.

Database Design : Automated Network Administration Tool uses a relatively complex database having seven tables. 1. Admin able 2. User table 3. Host table 4. User host table 5. Group table 6. User group table 7. Policy table 8. Login detail table

Database Tables:
The database tables used for the project are: Admin Table: Table Description: This tsble is used to store Admin information Sno 1 2 Column Name Admin ID Data Type VarChar(20) Null option Not null Not null Key Primary Key Description Stores admin id Stores admin pwd

Admin pwd VarChar(20)

Group Table: Table Description: This tsble is used to Store Group information Sno 1 2 3 Host Table: Table Description: This tsble is used to Store Host information Sno 1 2 3 Column Name Hostid Starttime Endtime Data Type VarChar(20) Time Time Null option Not null Not null Not null Key Primarykey Description Stores Hostid Stores starttime Stores Endtime Column Name Groupid Groupdesc groupPolicy Data Type VarChar(20) VarChar(20) VarChar(20) Null option Not null Not null Not null Key Primary Key Description Stores group id Stores groupdesc StoresPolocy

Login Details Table : Table Description: This tsble is used to Store User information

Sno 1 2 3 4 5

Column Name Login number Userid Hostid Login time Logout time

Data Type Number VarChar(20) VarChar(20) Number Number

Null option Not null Not null Not null Not null Not null

Key

Description Stores loginnumber Stores Userid Stores Hostid Stores login time Stores logout time

Primary key

User Table : Table Description: This tsble is used to Store User information Sno 1 2 3 4 5 6 7 Column Name Userid Data Type Null option Key PrimaryKey Description Stores Userid Stores Userpwd Stores userpolicy Stores Groupsin Stores Start time Stores end time Stores UserEmail

VarChar(20) Not null

UserPassword VarChar(20) Not null Userpolicy Groupsin Start time End time Email VarChar(20) Not null VarChar(20) Not null Time Time Not null Not null

VarChar(20) Not null

Userhost Table : Table Description: This tsble is used to Store Userhost information

Sno 1 2

Column Name Userid Userpwd

Data Type VarChar(20) VarChar(20)

Null option Not null Not null

Key Primarykey

Description Stores Userid Userpwd

Usergroup Table : Table Description: This tsble is used to Store UserGroup information Sno 1 2 Column Name Userid Groupid Data Type VarChar(20) VarChar(20) Null option Not null Not null Key Primarykey Description Stores Userid Stores Groupid

Policy Table : Table Description: This tsble is used to Store Policy information Sno 1 2 3 Column Name Policyid Policydesc Scriptid Data Type VarChar(20) VarChar(20) VarChar(20) Null option Not null Not null Not null Key Description Stores Policyid Stores poloicydesc Stores policy Scriptid

SYSTEM TESTING

System testing : The aim of any software development is to create bug free, reliable and secure systems that provide solution to user requirement. The implementation of newly designed package is important in adopting a successful new system. Testing is an important and critical design in software development. It accounts for the largest amount of technical effort in the software development process. It plays a critical role in determining life cycle validates the code against the functional specification. The feedback from the test stage will be incorporated which there by ensures high reliability. Testing involves operations of a system or application under controlled conditions and evaluating the results. The controlled conditions should include both normal and abnormal conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they should. It is meant to 'detection' oriented.

Test Plan:
Importance of the Testing phase cannot be undermined. Software testing is a critical element of software quality assurance and represents the ultimate review of specification, design and coding. Realizing the importance of the testing phase in the development cycle of a product.

Though few of the minor error checking takes place during the coding itself, but to check the stability of the system and also to see whether the finished product is in accordance to the system requirement specification, the product needs to undergo extensive testing. The Process can be divided into two categories, namely.

Testing Objectives:
The main objective of testing is to uncover a host of errors, systematically and with minimum effort and time. Testing is a process of executing a program with the intent of finding an error. successful test is one that uncovers an as yet undiscovered error. A good test case is one that has a high probability of finding error, if it exists. The tests are inadequate to detect possibly present errors. The software more or less confirms to the quality and reliable standards.

FUNCTIONAL TESTING: Also known as Black Box testing it focuses on the Functional Requirement of the system. The major aim of this type of testing is to check whether all the pre stated functional requirements (as in the System requirement specification) of the system are must. Black Box testing was an attempt to find errors in the following categories: q q Incorrect or missing functionalities. The GUI was extensively checked to see if any of the specifications was not Interface error. A thorough check was made to see if all the pages were up to the standard design. Errors in database access. The related tables were checked to see if the functionalities of the phase are Performance errors.

included. q q q q

getting reflected properly. q

The focus was to see how accurately the functionalities are carried out without

any error. UNIT TESTING The individual programs are tested to determine whether they are able to handle all kinds of real time situations. They are checked to determine whether the right outputs are generated and whether the logic is working accurately, as per design specifications. The data entry screens were tested individually for compatibility and appearance and ensuring that the screens were as per the design specifications. The more messages were included to make it more user friendly. In the database, the required tables were created. The insertion, deletions and updating of records were performed to ensure correct operations of the database. In case of programs, individual were tested thoroughly for all possible defects. Test set to determine all possible outputs was to check the correctness of the program. The defects were logged and then rectified by appropriate modifications to the code.

TESTING METHODS:
A Strategy for software testing integrates software test cases into a series of well planned steps that result in the successful construction of software. Software testing is a broader topic for what is referred to as Verification and Validation. Verification refers to the set of activities that ensure that the software correctly implements a specific function. Unit testing: Unit testing focuses verification effort on the smallest unit of software design that is the module. Using procedural design description as a guide, important control paths are tested to uncover errors within the boundaries of the module. Integration Testing: Integration testing is a systematic technique for constructing the program structure, while conducting test to uncover errors associated with the interface. The objective is to take unit tested methods and build a program structure that has been dictated by design.

Top-down Integration: Top down integrations is an incremental approach for construction of program structure. Modules are integrated by moving downward through the control hierarchy, beginning with the main control program. Bottom-up Integration: This method as the name suggests, begins construction and testing with atomic modules i.e., modules at the lowest level. Because the modules are integrated in the bottom up manner the processing required for the modules subordinate to a given level is always available and the need for stubs is eliminated. Modules subordinate to the main program are incorporated in the structure either in the breath-first or depth-first manner.

Validation Testing: At the end of integration testing software is completely assembled as a package. Validation testing is the next stage, which can be defined as successful when the software functions in the manner reasonably expected by the customer. Reasonable expectations are those defined in the software requirements specifications. System Testing: System testing is actually a series of different tests whose primary purpose is to fully exercise the computer-based system. Although each test has a different purpose, all work to verify that all system elements have been properly integrated to perform allocated functions. Security Testing: Attempts to verify the protection mechanisms built into the system. Performance Testing:

This method is designed to test runtime performance of software within the context of an integrated system

SNAP SHOTS

Screen shots B:
After Login :

User Details:

View User Detail :

Userdetail Enqiuiry Update :

New User Information :

User Updating :

User Enquiry Updating :

Policy Enquiry Updating :

Group View Form :

Host Details :

SYSTEM IMPLEMENTATION

SYSTEM IMPLEMENTATION: Implementation is the process of converting a new or revised system design into an operational one. Apart from planning, the major tasks of preparing for implementation or education and training of users. Implementation includes following activities: Obtaining and installing the system hardware Providing user access to the system Creating and updating the database Training the users on the new system Documenting the system for its users Evaluating the operation and use of the system

Implementation Methods There are four basic methods of implementation: Description: In this method the new one replaces the old system. This makes organization to fully rely on the new system. Direct conversion Parallel conversion Pilot conversion Phasing conversion

Direct Conversion:

Advantages: This method forces users to make the new system work. There are immediate benefits from new methods and controls. Disadvantages: There is no other system to fall back on if difficulties arise with new system. This method also requires most careful planning.

Parallel Conversion: Description: In this method, the old system is operated along with the new system. Advantages: This method offers greatest security. The old system can take over if errors are found in the new system or if some usage problems occur. Disadvantages: This method doubles operating costs also the new system may not get fair trail. Pilot Conversion: Description: In this method the system is implemented to a small part of the organization. Based on the feedback, changes are made and the system is installed in the rest of the organization by one of the other methods. Advantages: This method provides experience and live test before implementation. Disadvantages: This method may give the impression that the old system is unreliable and not error free. Phased Conversion: Description: In this method, the system is implemented gradually across all users. Advantages:

It allows some users to take advantages of the system early. It allows training and installing without unnecessary use of resources. Disadvantages: A long phase-in causes user problems whether the project goes well (over enthusiasm) or not (resistance or lack of fair trail).

For designing our system we used parallel conversion in which operated along with the old system.

System Implementation: Implementation is the stage in the project where the theoretical design is turned Into a working system and is giving confidence on the new system for the users, which it will work efficiently and effectively. It involves careful planning, investigation of the current System. Apart from planning major task of preparing the implementation are education and training of users. Implementation includes all those activities that take place to convert from the old system to the new. The new system may be totally new, replacing an existing system or it may be major modification to the system currently put into use. This system Automated Network Administration is a new system. Implementation as a whole involves all those tasks that we do for successfully replacing the existing or introduce new software to satisfy the requirement.

User Training: After the system is implemented successfully, training of the user is one of the most important subtasks of the developer.. Thus the users are trained to operate the developed systems successfully in future. Preparation of user and system documentation conducting user training with demo and hands on test run for some period to ensure smooth switching over the system.

Source Code A:

JSP CODING FOR LOGIN.JSP: <%@ page language="java" import ="java.sql.*" %> <% Connection con=null; Statement st=null; String adminid=request.getParameter("adminid").trim(); String adminpwd=request.getParameter("sudha").trim(); String id=null; String pass=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:cd","sa",""); st=con.createStatement();

ResultSet rs=st.executeQuery("select * from admintable where adminid='"+adminid+"'AND adminpwd='"+sudha+"'"); while(rs.next()) { id=rs.getString(1).trim(); pass=rs.getString(2).trim(); } if(adminid.equalsIgnoreCase(id)&& sudha.equals(pass)) { response.sendRedirect("Display.html"); }

else { response.sendRedirect("invalid.html"); } } catch(ClassNotFoundException e) { //out.print("Error is " +e.getMessage()); } catch(SQLException e2) { //out.print("Error is " +e2.getMessage()); } catch(Exception e1) {

//out.print("Error is " +e1.getMessage()); } %>

DBConection .java: package db; import java.sql.*; public class DBConnection { public static Connection getConnection() { Connection connection = null;

try { Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection("jdbc:mysql://localhost/anat", "root", "1234"); } catch(Exception e) { System.out.println("Error in con : " + e); //throw new JspException("in connection."); } return connection; } }

JSP FOR USERVIEW.JSP <%@ page language="java" import="java.sql.*"%> <html> <head> <h1><u>Enquiry Updating</u> </h1> </head> <body background="edgbkgnd.gif" bgcolor="#FFFFFF" > <form name="editdelete" method="get" action="VIEWUSER.jsp">

<%! Connection con=null; Statement st=null; PreparedStatement ps=null; ResultSet rs=null; String submit; %> <% try { //con = DriverManager.getConnection("jdbc:mysql://localhost/anat", "root", "1234"); Class.forName(getServletContext().getInitParameter("driver"));

Connection con=DriverManager.getConnection( getServletContext().getInitParameter("url"), getServletContext().getInitParameter("uname"), getServletContext().getInitParameter("pass")); st=con.createStatement(); String cusname=request.getParameter("selectid"); rs=st.executeQuery("select * from usertable where userid='"+cusname+"'"); while(rs.next()) { %>

<P align=left>Userid ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT value="<%=rs.getString(1)%>" name=cid></P> <P align=left>User Password&nbsp;&nbsp; <INPUT value="<%=rs.getString(2)%>" name=cpwd> </P> <P align=left>Userpolicy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT size=40 value="<%=rs.getString(3)%>" name=cpolicy> </P> <Palign=left>Groupsin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT size=40 value="<%=rs.getString(4)%>" name=cgroup> </P> <P align=left>Start_Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <INPUT value="<%=rs.getString(5)%>" name=cstime> </P>

<Palign=left>End_Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT value="<%=rs.getString(6)%>" name=cetime> </P> <Palign=left>Email&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT value="<%=rs.getString(7)%>" name=email> </P> <P align=left><B> <A href="userwindow.html">Click Here To Go Back user Home Page</A></B></P></FORM> <b><font face="Georgia"> <a href="viewuserid.jsp"> <Palign=left>UseridID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT value="<%=rs.getString(1)%>" name=cid></P>

<P align=left>User Password&nbsp;&nbsp; <INPUT value="<%=rs.getString(2)%>" <font color="#0000FF">Click Here To Go Back </font> </a> </font></b> <% } } catch(ClassNotFoundException e) { //out.print("Error is " +e.getMessage()); } catch(SQLException e2) {

//out.print("Error is " +e2.getMessage()); } catch(Exception e1) { //out.print("Error is " +e1.getMessage()); } %></html>

FUTURE ENHANCEMENTS

Scope Of Future Expansion

1. Providing facility for offline messaging. 2. Providing facility for detecting intrusion. 3. Restricting client to client communication. 4. Providing facility for voice chat. 5. Providing facilities for network monitoring and control. 6. Providing facility for remote desktop sharing. 7. Providing facilities for controlling hosts of different platforms.

8. Providing facilities for controlling multiple networks at a time. 9. Providing facilities for supporting multiple Bastion Hosts for the purpose of high availability. 10. Providing facilities for setting the rules according to the bandwidth needs of the user.

CONCLUSION

Conclusion: We are proud to say that our project entitled Automated Network Administration has met its basic functional needs. We have successfully tested the crude form of our software .It is found working efficiently under all circumstances that may arise in the real environment like authenticating the user according to the three constraints like user, host, and time and applying the corresponding user-policies on the gateway machine. Administrator is able to create, delete,

or modify users, groups and policies. Users are provided with a chat utility to chat with administrator. The system is highly user friendly and is well efficient to make easy interactions with administrator of the network. Even though we have completed this software tool with all our efforts successfully, it is still having some limitations like the disability to restrict the client to client communications, controlling multiple network clients etc.

REFERENCES

Bibliography: 1. Herbert Schildt, The complete reference Java 2 4th edition, Tata McgrawHill publishing company Ltd, 2001.

2. Chistopher Negus, RedHat Linux9 Bible, WILEY-dreamtech India Pvt. Ltd. 2003. 3. 4. Grant Taylor, Linux Complete, BPB Publications, 2000. Java 2 Platform Std. Ed. V1.3 API Document, TechnicalManual, Sun Microsystems, Inc. USA, 2000. 5. Steve Suehring , MySQL Bible ,WILEY- dreamtech India Pvt. Ltd., 2002 .

Websites: www.wikipedia.org www.java.sun.com www.roseindia.com www.w3schools.com www.apache.com

Potrebbero piacerti anche