# SPDX-License-Identifier: AGPL-3.0-or-later instructions = { 'si': '''\
Ustvari dva navidezna računalnika - imenujmo ju arbiter in student.
Na računalniku student ustvarite uporabnika z uporabniškim imenom {{peer_user}}
. IP navideznega računalnika student ter geslo za uporabnika {{peer_user}}
nastavite sami.
Poskrbite, da se bo v sporočilu, ki se ob prijavi izpiše na računalniku student, pojavil niz
{{niz}}
Temu sporočilu v angleščini rečemo message of the day oziroma MOTD. Ocenjevalni program pričakuje, da se bo ob koncu prijave pojavila ukazna vrstica oblike
username@hostname:~$
Pazite, da se bo takšna vrstica pojavila šele po nizu, ki ste ga dobili v teh navodilih.
''',
'en': '''\
Create two virtual machines named arbiter and student. On student, create a user with the username {{peer_user}}
. Set the IP of student and the password for {{peer_user}}
yourself.
Set the message of the day (MOTD) on student to
{{niz}}
This is the message which is displayed when you log in. The grading system expects that after login a prompt similar to
username@hostname:~$
appears. Make sure that this line shows up only after the string you got in these instructions. ''' } computers = { 'arbiter': { 'disks': [{'name': 'dhcp-gw'}], 'flavor': 'm1.tiny', 'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}], 'config_drive': True, 'userdata': {'string': "#!/bin/bash\nsed -i '/cloud/d' /etc/fstab\npoweroff &\n"} }, 'student': { 'disks': [{ 'name': 'console'}], 'flavor': 'm1.tiny', 'network_interfaces': [{'network': 'net1'}], 'config_drive': True, 'userdata': {'string': "#!/bin/bash\nsed -i '/cloud/d' /etc/fstab\npoweroff &\n"} } } networks = { 'net1': {'public': False}, 'test-net': {'public': True} } params_meta = { 'peer_ip': {'descriptions': {'si': 'IP računalnika', 'en':'IP'}, 'w': True, 'public': True, 'type': 'IP', 'generated': False}, 'peer_user': {'descriptions': {'si': 'ime uporabnika', 'en':'Username'}, 'w': False, 'public': True, 'type': 'username', 'generated': True}, 'peer_passwd': {'descriptions': {'si': 'geslo uporabnika', 'en': 'Password'}, 'w': True, 'public': True, 'type': 'alnumstr', 'generated': False}, 'niz': {'descriptions':{'si': 'niz, ki naj se v motd pokaže', 'en': 'The string which should be displayed in the MOTD'}, 'w': False, 'public': True, 'type': 'short_text', 'generated': True}, } def task(peer_ip, peer_user, peer_passwd, niz): "Check whether ssh works and return the MOTD." return kpov_util.ssh_test(peer_ip, peer_user, peer_passwd) def gen_params(user_id, params_meta): return kpov_util.default_gen(user_id, params_meta) def task_check(results, params): niz = params['niz'] score = 0 hints = [] if results['ssh'] is True: score += 4 if niz in results['motd']: score += 6 else: hints += ['wrong motd:\n' + results['motd'] + '\n'] else: hints += ['ssh failed: ' + results['ssh']] return score, hints def prepare_disks(templates, task_params, global_params): write_default_config(templates['dhcp-gw'], global_params)