Простой HTTP server в Python — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Простой HTTP server в Python

2020-11-19 241
Простой HTTP server в Python 0.00 из 5.00 0 оценок
Заказать работу

Стандартный пакет Python содержит встроенную поддержку HTTP протокола, которую можно использовать для одиночного Веб сервера.

Модуль, который предоставляет это называется BaseFTTPServer и моожет быть использован в программе простым подключением ресурса:

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

Сделаем первый пример, который будет возвращать Hello World! На странице браузера.

Для запуска следующего примера необходимо, чтобы окружение было настроено. Как настроить актуальное окружение для вашей ОС вы можете найти на официальном сайте Python (https://www.python.org/)

example1.py

#!/usr/bin/python

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

 

PORT_NUMBER = 8080

 

#This class will handles any incoming request from

#the browser

class myHandler(BaseHTTPRequestHandler):

       

   #Handler for the GET requests

   def do_GET(self):

           self.send_response(200)

           self.send_header('Content-type','text/html')

           self.end_headers()

           # Send the html message

           self.wfile.write("Hello World!")

           return

 

try:

   #Create a web server and define the handler to manage the

   #incoming request

   server = HTTPServer(('', PORT_NUMBER), myHandler)

   print 'Started httpserver on port ', PORT_NUMBER

       

   #Wait forever for incoming htto requests

   server.serve_forever()

 

except KeyboardInterrupt:

   print '^C received, shutting down the web server'

   server.socket.close()

       

Запустим это командой:

debarm:~/playground/python/httpserver# python example1.py

Затем откройте следующую ссылку в вашем веб браузере, откройте http://fox_ip_address:8080.

"Hello World!" появится в браузере и два log сообщения в консоли

В консоли будет отображаться подобная информация

Started httpserver on port 8080

10.55.98.7 - - [30/Jan/2012 15:40:52] "GET / HTTP/1.1" 200 -

10.55.98.7 - - [30/Jan/2012 15:40:52] "GET /favicon.ico HTTP/1.1" 200 -

Обработка типовых файлов

Следующий пример показывает, как обрабатывать типовые файлы, вроде index.html, style.css, javascript и изображения.

example2.py

#!/usr/bin/python

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

from os import curdir, sep

 

PORT_NUMBER = 8080

 

#This class will handles any incoming request from

#the browser

class myHandler(BaseHTTPRequestHandler):

       

   #Handler for the GET requests

   def do_GET(self):

           if self.path=="/":

                   self.path="/index_example2.html"

 

           try:

                 #Check the file extension required and

                   #set the right mime type

 

                   sendReply = False

                   if self.path.endswith(".html"):

                           mimetype='text/html'

                           sendReply = True

                   if self.path.endswith(".jpg"):

                           mimetype='image/jpg'

                           sendReply = True

                   if self.path.endswith(".gif"):

                           mimetype='image/gif'

                           sendReply = True

                   if self.path.endswith(".js"):

                           mimetype='application/javascript'

                           sendReply = True

                   if self.path.endswith(".css"):

                           mimetype='text/css'

                           sendReply = True

 

                   if sendReply == True:

                           #Open the static file requested and send it

                           f = open(curdir + sep + self.path)

                           self.send_response(200)

                           self.send_header('Content-type',mimetype)

                           self.end_headers()

                           self.wfile.write(f.read())

                           f.close()

                   return

 

 

           except IOError:

                   self.send_error(404,'File Not Found: %s' % self.path)

 

try:

   #Create a web server and define the handler to manage the

   #incoming request

   server = HTTPServer(('', PORT_NUMBER), myHandler)

   print 'Started httpserver on port ', PORT_NUMBER

       

   #Wait forever for incoming htto requests

   server.serve_forever()

 

except KeyboardInterrupt:

   print '^C received, shutting down the web server'

   server.socket.close()

Попробуем новый пример:

1. проверка расширения запрашиваемого файла

2. установка right mie type на ответ браузеру

3. открытие статичного файла по запросу

4. обратная отправка браузеру

 

 

Запустим это командой:

debarm:~/playground/python/httpserver# python example2.py

Затем откройте следующую ссылку в вашем веб браузере, откройте http://fox_ip_address:8080.

Домашняя странциа HTML появится в браузере

Считывание данных с формы

Сейчас исследуем, как считывать входящие данные с форм HTML

example3.py

 

#!/usr/bin/python

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

from os import curdir, sep

import cgi

 

PORT_NUMBER = 8080

 

#This class will handles any incoming request from

#the browser

class myHandler(BaseHTTPRequestHandler):

       

     #Handler for the GET requests

   def do_GET(self):

           if self.path=="/":

                   self.path="/index_example3.html"

 

           try:

                   #Check the file extension required and

                   #set the right mime type

 

                   sendReply = False

                   if self.path.endswith(".html"):

                           mimetype='text/html'

                           sendReply = True

                  if self.path.endswith(".jpg"):

                           mimetype='image/jpg'

                           sendReply = True

                   if self.path.endswith(".gif"):

                           mimetype='image/gif'

                           sendReply = True

                   if self.path.endswith(".js"):

                           mimetype='application/javascript'

                           sendReply = True

                   if self.path.endswith(".css"):

                           mimetype='text/css'

                           sendReply = True

 

                   if sendReply == True:

            #Open the static file requested and send it

                           f = open(curdir + sep + self.path)

                           self.send_response(200)

                           self.send_header('Content-type',mimetype)

                           self.end_headers()

                           self.wfile.write(f.read())

                           f.close()

                   return

 

           except IOError:

                   self.send_error(404,'File Not Found: %s' % self.path)

 

   #Handler for the POST requests

   def do_POST(self):

           if self.path=="/send":

                   form = cgi.FieldStorage(

                           fp=self.rfile,

                           headers=self.headers,

                           environ={'REQUEST_METHOD':'POST',

                            'CONTENT_TYPE':self.headers['Content-Type'],

                   })

 

                   print "Your name is: %s" % form["your_name"].value

                   self.send_response(200)

                   self.end_headers()

                   self.wfile.write("Thanks %s!" % form["your_name"].value)

                   return                 

                       

                       

try:

#Create a web server and define the handler to manage the

   #incoming request

   server = HTTPServer(('', PORT_NUMBER), myHandler)

   print 'Started httpserver on port ', PORT_NUMBER

       

   #Wait forever for incoming htto requests

   server.serve_forever()

 

except KeyboardInterrupt:

   print '^C received, shutting down the web server'

   server.socket.close()

Для запуска примера воспользуемся командой, приведенной ниже, а в поле ввода введем свое имя.

debarm:~/playground/python/httpserver# python example3.py

Контрольные вопросы

1. Разбор HTTP заголовка.

2. Загрузка файлов на сервер.

3. Обработка всех возможных серверных ошибок, например, если страница не найдена - выводить соответствующую страницу ошибки.

4. Работа с базой данных.

5. Загрузка HTML страниц из локальных папок, парсинг и подстановка данных из базы данных, например сделать директиву {{tables}} в которую будут выводится список всех таблиц из базы данных.

 

 


 

Лабораторная рАбота №5

Тема: Безопасность при пользовании интернетом.

Цель: Приобрести практические навыки использования средств.

 

Порядок выполнения работы

1. Настроить удаленный сервер для работы с технологиями безопасного подключения к сети Интернет, используя:

a. VPN;

b. Прокси-сервера;

c. Анонимайзера;

2. Настроить подключение локального компьютера к сети Интернет через ранее сконфигурированный сервер;

3. Настроить автоматическое подключение к VPN после перезагрузки компьютера

4. Перед и после подключения к VPN, использовать сторонние веб сервисы для получения информации о текущем IP адресе и местонахождении.

5. Оформить отчет по лабораторной работе.

Необходимые теоретические сведения

VPN (англ. Virtual Private Network — виртуальная частная сеть) — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет). Несмотря на то, что коммуникации осуществляются по сетям с меньшим или неизвестным уровнем доверия (например, по публичным сетям), уровень доверия к построенной логической сети не зависит от уровня доверия к базовым сетям благодаря использованию средств криптографии (шифрования, аутентификации, инфраструктуры открытых ключей, средств для защиты от повторов и изменений, передаваемых по логической сети сообщений).

В зависимости от применяемых протоколов и назначения, VPN может обеспечивать соединения трёх видов: узел-узел, узел-сеть и сеть-сеть.

Уровни реализации

Обычно VPN развёртывают на уровнях не выше сетевого, так как применение криптографии на этих уровнях позволяет использовать в неизменном виде транспортные протоколы (такие как TCP, UDP).

Пользователи Microsoft Windows обозначают термином VPN одну из реализаций виртуальной сети — PPTP, причём используемую зачастую не для создания частных сетей.

Чаще всего для создания виртуальной сети используется инкапсуляция протокола PPP в какой-нибудь другой протокол — IP (такой способ использует реализация PPTP — Point-to-Point Tunneling Protocol) или Ethernet (PPPoE) (хотя и они имеют различия).

При должном уровне реализации и использовании специального программного обеспечения сеть VPN может обеспечить высокий уровень шифрования передаваемой информации. При правильной настройке всех компонентов технология VPN обеспечивает анонимность в Сети.

Структура VPN

VPN состоит из двух частей: «внутренняя» (подконтрольная) сеть, которых может быть несколько, и «внешняя» сеть, по которой проходит инкапсулированное соединение (обычно используется Интернет).

Возможно также подключение к виртуальной сети отдельного компьютера.

Подключение удалённого пользователя к VPN производится посредством сервера доступа, который подключён как к внутренней, так и к внешней (общедоступной) сети. При подключении удалённого пользователя (либо при установке соединения с другой защищённой сетью) сервер доступа требует прохождения процесса идентификации, а затем процесса аутентификации. После успешного прохождения обоих процессов удалённый пользователь (удаленная сеть) наделяется полномочиями для работы в сети, то есть происходит процесс авторизации.

Классификация VPN

Классифицировать решения VPN можно по нескольким основным параметрам:


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.059 с.