diff options
Diffstat (limited to 'kpov_judge/tasks/nat_vlc/task.py')
-rw-r--r-- | kpov_judge/tasks/nat_vlc/task.py | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/kpov_judge/tasks/nat_vlc/task.py b/kpov_judge/tasks/nat_vlc/task.py deleted file mode 100644 index 5224495..0000000 --- a/kpov_judge/tasks/nat_vlc/task.py +++ /dev/null @@ -1,126 +0,0 @@ -# kpov_util should be imported by add_assignment.py - -# Poglej nek film na nekem določenem URL. -# (?md5 vsota filma?) - -# Nastavi nek računalnik tako, da bo izvajal NAT. -#TODO: finish this - -instructions = { - 'si': '''\ -<p> -Postavi dva navidezna računalnika: <em>SimpleArbiter</em> in <em>NATServer</em>. <em>NATServer</em> naj ima dva omrežna vmesnika - z enim naj bo povezan na lokalno omrežje, na katerem naj bo tudi simpleArbiter, z drugim pa na Internet. - -<p> -Na <em>NATServer</em> skonfiguriraj omrežne vmesnike tako, da bo imel dostop do Interneta in da bo imel na lokalnem omrežju <code>{{IP_NAT}}</code>. Na <em>NATServer</em> ustvarite še uporabnika <code>{{IP_NAT_user}}</code>. - -<p> -Poskrbi, da bo <em>SimpleArbiter</em> prek DHCP dobil naslov <code>{{IP_simple}}</code>. Poskrbi, da bo <em>NATServer</em> deloval kot prehod za <em>SimpleArbiter</em> in izvajal NAT. -''', - 'en': '''\ -<p> -Set up two virtual machines: <em>SimpleArbiter</em> and -<em>NATServer</em>. <em>NATServer</em> should have two network -adapters. Connect the first adapter to <em>SimpleArbiter</em> and the -second adapter to the Internet. - -<p> -Configure the network in <em>NATServer</em> so that one interface is connected to the Internet while the other is connected to <em>SimpleArbiter</em> and has the address <code>{{IP_NAT}}</code>. Create a user called <code>{{IP_NAT_user}}</code> on <em>NATServer</em>. - -<p> -Configure a DHCP server on <em>NATServer</em> so that <em>SimpleArbiter</em> gets the IP <code>{{IP_simple}}</code>. Also, set up NAT on <em>NATServer</em> and set it as the gateway for <em>SimpleArbiter</em>. -''', -} - -computers = { - 'NATServer': { - 'disks': [ - { 'name': 'student-NATServer', - }, - ], - 'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}], - 'flavor': 'm1.tiny', - 'config_drive': False - }, - 'SimpleArbiter': { - 'disks': [ - { 'name': 'simpleArbiter', - }, - ], - 'network_interfaces': [{'network': 'net1'}], - 'flavor': 'm1.tiny', - 'config_drive': False - }, -} - -networks = { 'net1': {'public': False}, 'test-net': {'public': True} } - -#ne potrebujemo dnsjev in ip za malibreznewtork manager? -params_meta = { - 'IP_simple': {'descriptions': {'si': 'Naslov SimpleArbiter', 'en': 'SimpleArbiter address'}, 'w': False, 'public': True, 'type': 'IP', 'generated': True}, - 'IP_NAT': {'descriptions': {'si': 'Naslov NATServer', 'en': 'NATServer address'}, 'w': False, 'public': True, 'type': 'IP', 'generated': True }, - 'IP_NAT_user': {'descriptions': {'si': 'Username na NATServer', 'en': 'Username on NATServer'}, 'w': False, 'public' : True, 'type' : 'username', 'generated' : True}, - 'IP_NAT_passwd': {'descriptions': {'si': 'Password na NATServer', 'en': 'Password on NATServer'}, 'w': True,'public' : True, 'type' : 'passwd', 'generated' : False}, -} - -def task(IP_simple, IP_NAT, IP_NAT_user, IP_NAT_passwd): - import pexpect - - results = kpov_util.ssh_test(IP_NAT, IP_NAT_user, IP_NAT_passwd, ( - ('IP_NAT_ip_forward', 'cat /proc/sys/net/ipv4/ip_forward'), - )) - - # Check if If IP_simple is connected to NAT - results['IP_simple_ping_to_NAT'] = pexpect.run('ping -c 5 {}'.format(IP_NAT), encoding='utf-8') - # Check routing table on IP_simple - results['IP_simple_routing_table'] = pexpect.run('route -n', encoding='utf-8', env={'PATH': '/bin:/sbin'}) - # Tracert Check if IP_simple is connected to internet - results['IP_simple_to_internet'] = pexpect.run('traceroute 8.8.8.8', encoding='utf-8') - - return results - -def gen_params(user_id, params_meta): - params = dict() - r = random.Random(user_id) - # IP_NM, DNS_NM, IP_static, DNS_static) - # dns_servers = ['193.2.1.66', '193.2.1.72', '8.8.8.8', '8.8.4.4', '208.67.222.222', '208.67.220.220'] - net = kpov_util.IPv4_net_gen(r, 253, True, False) - # params['DNS_NM'] = r.choice(dns_servers) - params['IP_NAT'], params['IP_simple'] = kpov_util.IPv4_addr_gen(r, net, 2) - params['IP_NAT_user'] = kpov_util.default_generators['username'](r) - # params['IP_NM'] - # params['IP_simple'] = kpov_util.IPv4_addr_gen(r, net, 1) - # params['DNS_static'] = r.choice(dns_servers) - return params - -def task_check(results, params): - import re - score = 0 - hints = [] - if re.search( - "PING.*\r\n64 bytes from {}: icmp_seq=[0-9]+ ttl=64 time=[0-9.]* ms".format( - params['IP_NAT']), results['IP_simple_ping_to_NAT']): - score += 3 - else: - hints.append("Ping to NAT incorrect") - if results['IP_NAT_ip_forward'].strip() == "1": - score += 2 - else: - hints.append("ip_forward not set on NAT?") - rs = r"1 +{0} +\({0}\)".format(params['IP_NAT']) - if re.search(rs, - results['IP_simple_to_internet']): - score += 3 - else: - hints.append("traceroute not OK") - gateway=r'0\.0\.0\.0 +{} +0\.0\.0\.0 +UG'.format(params['IP_NAT'].replace('.', '\.')) - if re.search(gateway,results['IP_simple_routing_table']) and \ - re.search("Kernel IP routing table\r\nDestination", results['IP_simple_routing_table']): - score += 2 - else: - hints.append("route not OK") - return score, hints - -def prepare_disks(templates, task_params, global_params): - write_default_config(templates['simpleArbiter'], global_params) - |