Finish dns
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -109,3 +109,5 @@ docs/_build/
|
||||
target/
|
||||
|
||||
|
||||
|
||||
virtenv
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "3rdLib/fakedns"]
|
||||
path = 3rdLib/fakedns
|
||||
url = git@github.com:pathes/fakedns.git
|
||||
1
3rdLib/fakedns
Submodule
1
3rdLib/fakedns
Submodule
Submodule 3rdLib/fakedns added at 76675b94ce
2
MANIFEST
2
MANIFEST
@@ -3,7 +3,9 @@ setup.py
|
||||
src/__init__.py
|
||||
src/fake_services/__init__.py
|
||||
src/fake_services/service/__init__.py
|
||||
src/fake_services/service/fake_server_manager.py
|
||||
src/fake_services/service/networkservice/__init__.py
|
||||
src/fake_services/service/networkservice/fake_dns_server_manager.py
|
||||
src/fake_services/service/webservice/__init__.py
|
||||
src/fake_services/service/webservice/fake_http_request_handler.py
|
||||
src/fake_services/service/webservice/fake_web_server.py
|
||||
|
||||
6
example/qemu.sh
Normal file
6
example/qemu.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
sudo ip addr add 172.20.0.1/16 dev br0
|
||||
sudo ip link set br0 up
|
||||
sudo dnsmasq --interface=br0 --bind-interfaces --dhcp-range=172.20.0.2,172.20.255.254
|
||||
sudo modprobe virtio
|
||||
qemu-system-i386 -m 512 -enable-kvm -net nic -net bridge,br=br0 ~/Downloads/FakeServices32B.i686-0.1.2.qcow2
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
__author__ = 'dev'
|
||||
from fake_services.service.webservice.fake_web_server_manager import FakeWebServerManager
|
||||
from fake_services.service.networkservice.fake_dns_server_manager import FakeDnsServerManager
|
||||
|
||||
config = {
|
||||
"/test":
|
||||
@@ -30,12 +31,15 @@ config = {
|
||||
"/test4":
|
||||
[
|
||||
{
|
||||
"host_pattern": "0.0.0.0:8080",
|
||||
"response_content_path": "request/test.xml"
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
dns = FakeDnsServerManager()
|
||||
dns.start_server()
|
||||
server = FakeWebServerManager(server_port=8080, requests_config=config)
|
||||
server.start_server()
|
||||
#server.stop_server()
|
||||
|
||||
1
setup.py
1
setup.py
@@ -12,3 +12,4 @@ setup(
|
||||
author_email='stubbfel@gmail.com',
|
||||
description='Helps to create many services on one maschine. Its manage IP-Addesses and response with static content of certain requests'
|
||||
)
|
||||
|
||||
|
||||
14
src/fake_services/service/fake_server_manager.py
Normal file
14
src/fake_services/service/fake_server_manager.py
Normal file
@@ -0,0 +1,14 @@
|
||||
__author__ = 'dev'
|
||||
import threading
|
||||
|
||||
|
||||
class FakeServerManager:
|
||||
|
||||
def __init__(self, server_class, request_handler_class, server_port, **kwargs):
|
||||
self.server = server_class(('', server_port), request_handler_class, kwargs)
|
||||
|
||||
def start_server(self):
|
||||
threading.Thread(target=self.server.serve_forever).start()
|
||||
|
||||
def stop_server(self):
|
||||
self.server.shutdown()
|
||||
@@ -0,0 +1,12 @@
|
||||
__author__ = 'dev'
|
||||
|
||||
from socketserver import ThreadingUDPServer
|
||||
from fakedns import DNSHandler
|
||||
from fake_services.service.fake_server_manager import FakeServerManager
|
||||
|
||||
DEFAULT_DNS_PORT = 53
|
||||
|
||||
|
||||
class FakeDnsServerManager(FakeServerManager):
|
||||
def __init__(self, server_port=DEFAULT_DNS_PORT):
|
||||
super().__init__(ThreadingUDPServer, DNSHandler, server_port, **{"bind_and_activate": True})
|
||||
@@ -1,13 +1,10 @@
|
||||
__author__ = 'dev'
|
||||
|
||||
import os
|
||||
import re
|
||||
import urllib.parse
|
||||
from http.server import SimpleHTTPRequestHandler
|
||||
|
||||
HEADERS_HOST_PARAMETER_KEY_NAME = "Host"
|
||||
REQUEST_LINE_ENCODING = "iso-8859-1"
|
||||
RESPONSE_PATH_PARAMETER_KEY_NAME = "rpath"
|
||||
HOST_PATTERN_KEY_NAME = "host_pattern"
|
||||
RESPONSE_CONTENT_PATH_KEY_NAME = "response_content_path"
|
||||
|
||||
|
||||
@@ -1,17 +1,10 @@
|
||||
__author__ = 'dev'
|
||||
|
||||
import threading
|
||||
from fake_services.service.webservice.fake_http_request_handler import FakeHTTPRequestHandler
|
||||
from fake_services.service.webservice.fake_web_server import FakeWebServer
|
||||
from fake_services.service.fake_server_manager import FakeServerManager
|
||||
|
||||
|
||||
class FakeWebServerManager:
|
||||
class FakeWebServerManager(FakeServerManager):
|
||||
|
||||
def __init__(self, server_port, requests_config=None):
|
||||
self.server = FakeWebServer(('', server_port), FakeHTTPRequestHandler, requests_config)
|
||||
|
||||
def start_server(self):
|
||||
threading.Thread(target=self.server.serve_forever).start()
|
||||
|
||||
def stop_server(self):
|
||||
self.server.shutdown()
|
||||
super().__init__(FakeWebServer, FakeHTTPRequestHandler, server_port, **requests_config)
|
||||
18
test/service/networkservice/test_dns_manager.py
Normal file
18
test/service/networkservice/test_dns_manager.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from fake_services.service.networkservice.fake_dns_server_manager import FakeDnsServerManager
|
||||
|
||||
__author__ = 'dev'
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
class TestFakeDns(unittest.TestCase):
|
||||
|
||||
def test_dns_server_start_stop(self):
|
||||
manager = FakeDnsServerManager(8080)
|
||||
manager.start_server()
|
||||
manager.stop_server()
|
||||
self.assertTrue(True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user