summaryrefslogtreecommitdiff
path: root/kpov_judge/tasks/vlc_stream_rtp/task.py
diff options
context:
space:
mode:
Diffstat (limited to 'kpov_judge/tasks/vlc_stream_rtp/task.py')
-rw-r--r--kpov_judge/tasks/vlc_stream_rtp/task.py110
1 files changed, 0 insertions, 110 deletions
diff --git a/kpov_judge/tasks/vlc_stream_rtp/task.py b/kpov_judge/tasks/vlc_stream_rtp/task.py
deleted file mode 100644
index 427fc0e..0000000
--- a/kpov_judge/tasks/vlc_stream_rtp/task.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# kpov_util should be imported by add_assignment.py
-
-# Postavi nek film na Internet tako, da ga bodo lahko ostali videli.
-# TODO: finish this
-
-instructions = {
- 'si': '''\
-<p>
-Postavi navidezni računalnik <em>SimpleArbiter</em> in <em>StudentVLC</em>. Poskrbi, da bosta na istem omrežju, od koder bosta imela dostop tudi do interneta.
-
-<p>
-Na <em>StudentVLC</em> posodobi datoteko <code>/etc/apt/sources.list</code>, preveri posodobitve in naloži VLC.
-
-<p>
-Posnemi ali kako drugače ustvari film ter poskrbi, da bo film dostopen na lokalnem omrežju prek RTP z imenom toka <code>{{TOK}}</code> na naslovu <code>{{NASLOV}}</code>, vrata <code>{{PORT}}</code>. Računaj, da bodo film lahko videli tvoji sošolci. Kršenje avtorskih pravic je pri reševanju te naloge strogo prepovedano.
-''',
- 'en': '''\
-<p>
-Set up a virtual computer called <em>SimpleArbiter</em> using the simpleArbiter disk and
-a virtual computer called <em>StudentVLC</em> using the student-VLC disk. Make sure they
-are on the same network and that they have access to the Internet.
-
-<p>
-On StundentVLC, update /etc/apt/sources.list, check the for updates and install VLC.
-
-<p>
-Record or otherwise create a movie and make sure the movie is avaliable on your local network via RTP with the name of the stream <code>{{TOK}}</code> at the address <code>{{NASLOV}}</code> on port <code>{{PORT}}</code>. Take into account that the movie may be seen by your classmates. Copyright infrigement while solving this task is strictly prohibited.
-''',
-}
-
-computers = {
- 'SimpleArbiter': {
- 'disks': [
- { 'name': 'simpleArbiter',
- },
- ],
- 'network_interfaces': [{'network': 'test-net'}],
- 'flavor': 'm1.tiny',
- 'config_drive': False
- },
- 'StudentVLC': {
- 'disks': [
- { 'name': 'student-VLC',
- },
- ],
- 'network_interfaces': [{'network': 'test-net'}],
- 'flavor': 'm1.tiny',
- 'config_drive': False
- }
-
-}
-
-networks = { 'test-net': {'public': True} }
-
-params_meta = {
- 'NASLOV': {'descriptions': {'si': 'RTP multicast IP naslov'}, 'w': False, 'public':True, 'type': 'stream_name', 'generated': True},
- 'PORT': {'descriptions': {'si': 'RTP VRATA'}, 'w': False, 'public':True, 'type': 'port', 'generated': True},
- 'TOK': {'descriptions': {'si': 'Naslov (ime) toka'}, 'w': False, 'public':True, 'type': 'IP', 'generated': True},
-}
-
-def task(NASLOV, TOK):
- import pexpect
- results = dict()
- results['ps'] = pexpect.run('ps xa')
- results['tcpdump_hex'] = pexpect.run('sudo /usr/sbin/tcpdump -x -c 2 dst host 239.255.255.255 and port 9875'.format(NASLOV))
- results['tcpdump'] = pexpect.run('sudo /usr/sbin/tcpdump -c 8 dst host {}'.format(NASLOV))
- return results
-
-def gen_params(user_id, params_meta):
- params = dict()
- r = random.Random(user_id)
- net = kpov_util.IPv4_net_gen(r, min_hosts = 16,
- local=True, multicast=True)
- params['NASLOV'] = kpov_util.IPv4_addr_gen(r, net, 1)[0]
- params['PORT'] = str(r.randint(5000, 6000))
- params['TOK'] = kpov_util.hostname_gen(r)
- return params
-
-def task_check(results, params):
- import re
- score = 0
- hints = []
- p1_s = ""
- sname = ""
- try:
- packs = results['tcpdump_hex'].split('> 239.255.255.255.9875: UDP, length')
- p1 = packs[1]
- p1_l = p1.split('\n')
- p1_d = p1_l[1:-1]
- p1_s = ""
- for i in p1_d:
- p1_s = p1_s + "".join([j.strip() for j in i.split(' ')[1:]])
- sname = "".join([hex(ord(i))[2:] for i in params['TOK']])
- except:
- hints.append("problem parsing RTP stream capture result")
- if p1_s.find(sname) > 2:
- score += 5
- else:
- hints.append("stream name not found in stream announcement")
- s = "IP [^ ]* > {}.{}: UDP, length [0-9]+".format(
- re.escape(params['NASLOV']),
- params['PORT'])
- if re.search(s, results['tcpdump']):
- score += 5
- else:
- hints.append("RTP stream not detected in " + results['tcpdump'])
- return score, hints
-
-def prepare_disks(templates, task_params, global_params):
- write_default_config(templates['simpleArbiter'], global_params)