Assignment #3
- General Info
- Points: 5
- Deadline for submission: 29 March 2022, 14:00
- Assessment form: Group Presentations
- You should work in the same team as you have formed earlier.
- Objectives:
- The main purpose of this assignment is to enhance students' understanding of how to integrate two different systems using SOAP technology. This could be done by developing a simple SOAP server aka service provider to enable other clients consume the services.
- Tasks:
- Students should develop SOAP services for the following operations:
- Task 1:The SOAP server should provide
ping
services to any client to test whether a particular host is reachable across an IP network. You could implementping -c 2 domain_name
Linux command as a SOAP web service to enable other web-based client to invoke this service. - Task 2:The SOAP server should provide basic DNS lookup service to translate a domain name to it's IP address. This is going to be another web-enabled DNS lookup service that will replicate
host domain_name
Linux command. - Task 3:The SOAP server should extend Task 2 and provide a service to gather more DNS information. This web service will help DNS administrators to troubleshoot DNS problems and/or interrogate DNS namer servers. The service should query the Name Servers (NS), Authoritative Name Server, and Mail Exchange (MX) records of a particular domain name.
- How to?
- We assume that you have setup your local development environment.
- Download Attach:this.zip source_code, extract and move it to a reasonable place to use it as a baseline to implement your services
- This folder includes a file for SOAP Server (
soap_server.py
) and two SOAP Clients (soap_client.py
andapp.py
)soap_server.py
will implement your services and capture all services in aWSDL
file. You should run your server locally, let's use8090
port number.soap_client.py
can be used to test your services locally.app.py
is a Flask app that you should deploy to your Heroku application. This app should implement the followingroutes
:/
will invoke Task/Service 1/showip
will invoke Task/Service 2/dns
will invoke Task/Service 3
- As
app.py
is a remote web app deployed on Heroku, you would need to create a tunnel from the public internet i.e. your Heroku app to your local machine, you can usengrok
application.- Install
ngrok
:sudo snap install ngrok
- You need to execute this
ngrok http 8090
command (if your SOAP server is running over 8090 port number) to create a public URL to your local SOAP server to enable external clients to access your WSDL file. - You can call these services via a web app - developed either in Flask, JavaScript, Java, Go, or PHP.
- If you prefer to use Flask app (
app.py
) then you should replace the URL of theWSDL
file with the URL you got fromngrok
. - Visit Session 2 where we have provided step by step instructions for deploying your app to Heroku.
- Install