From 8081a5520a441b43a8a7a73f3a90c7aacfaa8e10 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sun, 24 Feb 2019 21:05:27 +0100 Subject: Move everything one level up --- kpov_judge/tasks/custom_rdate/CustomRDate.java | 21 --- kpov_judge/tasks/custom_rdate/TejoLicen/rServe.zip | Bin 499 -> 0 bytes kpov_judge/tasks/custom_rdate/howtos/en/index.html | 65 --------- .../tasks/custom_rdate/howtos/images/bu1.png | Bin 979 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu15.png | Bin 679 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu2.png | Bin 826 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu3.png | Bin 13656 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu4.png | Bin 1564 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu5.png | Bin 11278 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu6.png | Bin 15244 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu7.png | Bin 3842 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu8.png | Bin 3420 -> 0 bytes .../tasks/custom_rdate/howtos/images/bu9.png | Bin 4245 -> 0 bytes .../howtos/images/predvaja_clip_image003.gif | Bin 686 -> 0 bytes kpov_judge/tasks/custom_rdate/howtos/images/s1.png | Bin 700 -> 0 bytes kpov_judge/tasks/custom_rdate/howtos/images/s2.png | Bin 3882 -> 0 bytes kpov_judge/tasks/custom_rdate/howtos/images/s3.png | Bin 3569 -> 0 bytes kpov_judge/tasks/custom_rdate/howtos/si/index.html | 67 ---------- kpov_judge/tasks/custom_rdate/rDate.java | 34 ----- kpov_judge/tasks/custom_rdate/rDate.py | 18 --- kpov_judge/tasks/custom_rdate/task.py | 146 --------------------- 21 files changed, 351 deletions(-) delete mode 100644 kpov_judge/tasks/custom_rdate/CustomRDate.java delete mode 100644 kpov_judge/tasks/custom_rdate/TejoLicen/rServe.zip delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/en/index.html delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu1.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu15.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu2.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu3.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu4.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu5.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu6.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu7.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu8.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/bu9.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/predvaja_clip_image003.gif delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/s1.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/s2.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/images/s3.png delete mode 100644 kpov_judge/tasks/custom_rdate/howtos/si/index.html delete mode 100644 kpov_judge/tasks/custom_rdate/rDate.java delete mode 100644 kpov_judge/tasks/custom_rdate/rDate.py delete mode 100644 kpov_judge/tasks/custom_rdate/task.py (limited to 'kpov_judge/tasks/custom_rdate') diff --git a/kpov_judge/tasks/custom_rdate/CustomRDate.java b/kpov_judge/tasks/custom_rdate/CustomRDate.java deleted file mode 100644 index 426dece..0000000 --- a/kpov_judge/tasks/custom_rdate/CustomRDate.java +++ /dev/null @@ -1,21 +0,0 @@ -import java.io.InputStream; -import java.net.Socket; -import java.nio.ByteBuffer; -import java.util.Date; - -public class CustomRDate { - public static void main(String main[]) throws Exception{ - try { - Socket s = new Socket("ntp1.arnes.si", 37); - InputStream vhod = s.getInputStream(); - byte podatek[] = new byte[8]; - int dejanskoPrebranih = vhod.read(podatek, 4, 4); - ByteBuffer buf = ByteBuffer.wrap(podatek); - long stevilka = buf.getLong() - 2208988800L; - Date d = new Date(stevilka*1000); - System.out.println(d); - } catch(Exception e) { - System.out.println("Nedosegljiv streznik."); - } - } -} \ No newline at end of file diff --git a/kpov_judge/tasks/custom_rdate/TejoLicen/rServe.zip b/kpov_judge/tasks/custom_rdate/TejoLicen/rServe.zip deleted file mode 100644 index 9061692..0000000 Binary files a/kpov_judge/tasks/custom_rdate/TejoLicen/rServe.zip and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/en/index.html b/kpov_judge/tasks/custom_rdate/howtos/en/index.html deleted file mode 100644 index 18ebfc1..0000000 --- a/kpov_judge/tasks/custom_rdate/howtos/en/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - -

Custom rdate

-

Short preview:

- Set time on server using rdate. Write a program that converts 32-bit numbers into a readable time format.

-

Instructions:

- 1. Downlaod Student.vdi (client) and SimpleArbiter.vdi (server) from the virtual machine images folder
- 2. Use VirtualBox (or similar) to create two virtual machines, select the virtual disk images from the previous step as hard drives
- 3. Run both virtual machines.
- 4. Login on client user: root pass: kaboom and server user: tester pass: tester

- - -

First part: update time using rdate.

-

- 1. Find and remember your server IP address. (ifconfig)


- 2. Install rdate with sudo apt-get install rdate
- 3. On Student client use rdate to update the machine time rdate SERVER_IP

- Note: It's NOT an error if the updated time does not match the correct time.
-

-

Second part: write a program that converts 32bit numbers into a readable time format.

-

- You can write a program in Java or Python using your favourite text editor. -

-

Java

-

- 1. We use nano guliver.java to create a new blank file
- 2. Write a program that converts 32bit numbers into a readable time format.
-

- 3. Press Ctrl+X, then Y and Enter to save the program
- 4. In case you don't have java installed use sudo apt-get install openjdk-6-jdk
-
- 5. To compile use javac bintodec3.java
- 6. Run the created program with java guliver and input the server IP or name...
-
-

-

Python

- 1. Use nano guliver.py to create a new empty python file.
- 2. Write a program that converts 32bit numbers into a readable time format.
-
- 3. Press Ctrl+X, then Y and Enter to save our program
- 4. Run the created program with python guliver.py

-

-

Testing

-

- 1. Use command ./run_test.py to run the tester
-
- 2. Your username and password are the same as on ucilnica (npr.: "pz1234@student.uni-lj.si" in "geslo123").
-
- 3. Name of the task should look like 09.predvaja.
- 4. When prompted for file path insert your program path (example: if bintodec3.py is in the same folder as program run_test.py run with ./bintodec3.py).
- 5. Then input your server IP address (SimpleArbiterRDate).
- 6. If all goes well the program should give you an OK that means you've completed your task successfully. -

- - diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu1.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu1.png deleted file mode 100644 index c6eeac8..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu1.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu15.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu15.png deleted file mode 100644 index c2ac808..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu15.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu2.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu2.png deleted file mode 100644 index 85fcfa8..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu2.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu3.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu3.png deleted file mode 100644 index 831e764..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu3.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu4.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu4.png deleted file mode 100644 index 495351a..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu4.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu5.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu5.png deleted file mode 100644 index 103e0e6..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu5.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu6.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu6.png deleted file mode 100644 index b032223..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu6.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu7.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu7.png deleted file mode 100644 index bd50500..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu7.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu8.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu8.png deleted file mode 100644 index 98f7812..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu8.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/bu9.png b/kpov_judge/tasks/custom_rdate/howtos/images/bu9.png deleted file mode 100644 index 9ed78ce..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/bu9.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/predvaja_clip_image003.gif b/kpov_judge/tasks/custom_rdate/howtos/images/predvaja_clip_image003.gif deleted file mode 100644 index 02be389..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/predvaja_clip_image003.gif and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/s1.png b/kpov_judge/tasks/custom_rdate/howtos/images/s1.png deleted file mode 100644 index 52b6ee5..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/s1.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/s2.png b/kpov_judge/tasks/custom_rdate/howtos/images/s2.png deleted file mode 100644 index 78a65ce..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/s2.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/images/s3.png b/kpov_judge/tasks/custom_rdate/howtos/images/s3.png deleted file mode 100644 index c32eae1..0000000 Binary files a/kpov_judge/tasks/custom_rdate/howtos/images/s3.png and /dev/null differ diff --git a/kpov_judge/tasks/custom_rdate/howtos/si/index.html b/kpov_judge/tasks/custom_rdate/howtos/si/index.html deleted file mode 100644 index e68221c..0000000 --- a/kpov_judge/tasks/custom_rdate/howtos/si/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - -

Custom rdate

-

Naloga na hitro:

-

- Nastavi uro na strežniku s pomočjo rdate. Napiši program, ki pretvori 32-bitna števila v čas. -

-

Navodila:

-

- 1. Z imenika s slikami virtualnih računalnikov povlecite sliki Student.vdi(klient) in SimpleArbiterRDate.vdi(strežnik).
- 2. Z VirtualBoxom (ali podobnim) ustvarite dva virtualna računalnika in jim kot disk za shranjevanje podajte Student.vdi ter SimpleArbiterRDate.vdi.
- 3. Zaženite oba navidezna računalnika.
- 4. Na Student se prijavite z uporabnikom root in geslom kaboom - na SimpleArbiterRDate pa z uporabnikom tester in geslom tester. -

- -

Prvi del naloge: posodobi uro računalnika s pomočjo rdate.

-

- 1. Preverite in si zapišite IP naslov na SimpleArbiterRDate. (ifconfig)


- 2. Z ukazom sudo apt-get install rdate namestimo program rdate.
- 3. Na Student z pomočjo rdate posodobi uro računalnika. rdate IP_SIMPLE_ARBITER

- Opozorilo: NI napaka, če se posodobljen čas ne ujema s pravilnim časom.
-

-

Drugi del naloge: napiši program, ki pretvori binarni zapis 32-bitnega števila v časovni format.

-

- Nalogo lahko rešite v Javi ali v Pythonu. Prav tako pa lahko kodo pišete v poljubnem tekstovnem urejevalniku.

-

-

Java

-

- 1. Z ukazom nano guliver.java ustvarimo in odpremo prazen program s tekstovnim urejevalnikom nano
- 2. Napišemo program za pretvarjanje 32-bitnega števila v čas
- 3. Pritisnemo Ctrl+X, nato Y in Enter, da program zapremo in shranimo.
- 4. Če je še nimamo, naložimo Javo sudo apt-get install openjdk-6-jdk

- 5. Prevedemo program javac bintodec3.java
- 6. Lahko ga še zaženemo ter preizkusimo java guliver.Na standardni vhod vnasemo IP naslov ali ime strežnika NTP strežnikom, ki nam pošlje 32 bitno število in pretvori v čas

-

-

Python

-

- 1. Z ukazom nano guliver.py ustvarimo in odpremo prazen program s tekstovnim urejevalnikom nano
- 2. Napišemo program za pretvarjanje 32-bitnega števila v čas
- 3. Pritisnemo Ctrl+X, nato Y in Enter, da program zapremo in shranimo.
- 4. Program zaženemo z ukazom python guliver.py

-

- -

Testiranje

-

- 1. Lahko poženemo tester; z ukazom ./run_test.py
-
- 2. Kot "Upor. Ime" in "Geslo" napišite vaše podatke učilnice. (npr.: "pz1234@student.uni-lj.si" in "geslo123")
-
- 3. Kot ime naloge vpišite 09.predvaja.
- 4. Ko vas program vpraša po poti programa vnesite vašo pot do programa za pretvarjanje. (npr.: če imate program bintodec3.py v isti mapi kot program run_test.py, vnesete: ./bintodec3.py)
- 5. Povpraša tudi po IP naslovu SimpleArbiterjaRDate, vnesite.
- 6. Če je šlo vse po sreči, program vrne OK vi pa ste opravili nalogo. -

- - diff --git a/kpov_judge/tasks/custom_rdate/rDate.java b/kpov_judge/tasks/custom_rdate/rDate.java deleted file mode 100644 index 8c8bae7..0000000 --- a/kpov_judge/tasks/custom_rdate/rDate.java +++ /dev/null @@ -1,34 +0,0 @@ -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStreamWriter; -import java.net.Socket; -import java.net.SocketException; -import java.nio.ByteBuffer; -import java.uti.Date; -import java.util.Scanner; - -public class rDate{ - - public static void main(String[] args) throw IOException{ - Scanner sc=new Scanner(System.in); - String niz=sc.next(); - - try{ - Socket s=new Socket(niz,37); - OutputStreamWriter izhod=new OutputStreamWriter(s.getOutputStream()); - InputStream vhod=s.getInputStream(); - byte[] podatek=new byte[4]; - ByteBuffer buf=ByteBuffer.wrap(podatek); - int stevilka=buf.getInt(); - long dolga=stevilka - long maska=-1; - maska =~(maska <<32); - dolga = dolga & maska; - Date d=new Date(dolga *1000 - 2208988800000L); - System.out.print(d); - izhod.write(d.toString()); - }catch(SocketException e){ - System.out.println("Strežnik ne obstaja"); - } - } -} diff --git a/kpov_judge/tasks/custom_rdate/rDate.py b/kpov_judge/tasks/custom_rdate/rDate.py deleted file mode 100644 index 97885b0..0000000 --- a/kpov_judge/tasks/custom_rdate/rDate.py +++ /dev/null @@ -1,18 +0,0 @@ - -#!/usr/bin/env python -#-*- coding utf-8 -*- - -import socket -import struct -import time - -niz=input("Vnesi IP ali ime strežnika:") -s = socket.socket( - socket.AF_Inet, socket.SOCK_STREAm) -s.connect((niz,37)) -podatek = s.recv(4) -stevilka = struct.unpack("!I", podatek) -st= stevilka[0]-220898800 -date = time.localtime(st) -print((time.strftime('%Y-%m-%d %H:%M:%S'), date)) -s.send(date) diff --git a/kpov_judge/tasks/custom_rdate/task.py b/kpov_judge/tasks/custom_rdate/task.py deleted file mode 100644 index 4c5ff9f..0000000 --- a/kpov_judge/tasks/custom_rdate/task.py +++ /dev/null @@ -1,146 +0,0 @@ -# kpov_util should be imported by add_assignment.py - -# TODO: finish this! -instructions = { - 'si': '''\ -

-Postavite dva navidezna računalnika: SimpleArbiterDhcpRdate in rdateClient. - -

-Nastavite čas na rdateClient tako, da kot rdate strežnik uporabite SimpleArbiterDhcpRdate. - -

-Na rdateClient ustvarite uporabnika test z geslom test. V domačem imeniku uporabnika test ustvarite program z imenom {{PROGRAM_FILENAME}}. Program naj prebere štiri bajte podatkov s standardnega vhoda in jih pretvori v predznačeno celo število, pri čemer naj uporablja zapis z debelim koncem (angl. big endian). Število naj program izpiše na standardni izhod v obliki niza. -''', - 'en': '''\ -

-Set up two virtual machines: SimpleArbiterDhcpRdate and rdateClient. - -

-Set the time on rdateClient using rdate with SimpleArbiterDhcpRdate as -the server. - -

-On rdateClient create a user with the username test and password test. Then, write a program called {{PROGRAM_FILENAME}} and put it in user test’s home directory. The program should read four bytes of data from standard input, convert them into a signed integer using big endian byte ordering and output the resulting integer (as a string) to standard output. -''', -} - -computers = { - 'rdateClient': { - 'disks': [ - { 'name': 'student-rdate', - }, - ], - 'network_interfaces': [{'network': 'net1'}], - 'flavor': 'm1.tiny', - 'config_drive': False - - }, - 'SimpleArbiter': { - 'disks': [ - { 'name': 'simpleArbiterDhcpGWRdate', - }, - ], - 'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}], - 'flavor': 'm1.tiny', - 'config_drive': False - } -} - -networks = { 'net1': {'public': False}, 'test-net': {'public': True} } - -# Tu sem dolocil parametre -params_meta = { - 'RDATE_OFFSET':{'descriptions': {'si': 'Napaka v času pri rdate', 'en': 'Timekeeping error for rdate'}, 'w': False, 'public': False, 'type': 'integer', 'generated': True}, - 'PROGRAM_FILENAME':{'descriptions': {'si': 'Ime programa', 'en': 'program filename'}, 'w': False, 'public': True, 'type': 'integer', 'generated': True}, - 'IP_RDATECLIENT':{'descriptions': {'si': 'IP rdateClient', "en": "rdateClient's IP"}, 'w': True, 'public': True, 'type': 'IP', 'generated': False}, -} - -def task(IP_RDATECLIENT, PROGRAM_FILENAME): - import collections - import base64 - import random - import struct - import pexpect - - r = random.Random(PROGRAM_FILENAME) - results = collections.defaultdict(str) - tests = [] - for i in range(10): - data = struct.pack("!I", r.randint(0, 2**32)) - results['in_'+str(i)] = data_ascii = base64.encodestring(data) - tests += [('out_'+str(i), 'echo "{}" | base64 -d | ~/{}'.format(data_ascii.decode().strip(), PROGRAM_FILENAME))] - tests += [('date', 'date -u +"%s"')] - - results.update( - kpov_util.ssh_test(IP_RDATECLIENT, 'test', 'test', tests)) - results['ldate'] = pexpect.run('date -u +"%s"') - - return results - -#Dolocil sem tri parametre in sicer jih lahko vidite v prams_meta, -#zato prosim da jih upostevate v naslednih nalogah. - -def gen_params(user_id, params_meta): - import socket - import struct - import datetime - params = dict() - r = random.Random(user_id) - params['PROGRAM_FILENAME'] = kpov_util.fname_gen(r, False) - params['RDATE_OFFSET'] = str(r.randint(-2**24, 2**24)) - return params - -def task_check(results, params): - import random - import struct - import base64 - - r = random.Random(params['PROGRAM_FILENAME']) - score = 0.0 - hints = [] - for i in range(10): - data = base64.decodestring(results['in_' + str(i)]) - x = struct.pack("!I", r.randint(0, 2**32)) - if data != x: - hints += ["data: " + str((data,)) + " != " + str((x,))] - break - res = results['out_' + str(i)] - if str(struct.unpack("!i", data)[0]) == res.strip(): - score += 0.5 - else: - hints += ["wrong convert"] - - if abs(int(results['ldate']) + \ - int(params['RDATE_OFFSET']) - int(results['date'])) < 3: - score += 5 - else: - hints += ["wrong offset"] - return score, hints - -def prepare_disks(templates, task_params, global_params): - d = templates['simpleArbiterDhcpGWRdate'] - s1 = """service "time_tcp" {{ - enabled yes; - protocol tcp; - port "time"; - user "nobody"; - exec "/usr/local/bin/kpovrdate {RDATE_OFFSET}"; - server "/usr/sbin/tcpd"; - wait no; -}} -""".format(**task_params) - d.write('/etc/rlinetd.d/time', s1) - s2 = """#!/usr/bin/python - -import struct -import time -import sys - -offset = int(sys.argv[1]) -t = time.time() + offset # used to have + 2208988800 -sys.stdout.write(struct.pack("!I", int(t))) -""" - d.write('/usr/local/bin/kpovrdate', s2) - d.chmod(0o775, '/usr/local/bin/kpovrdate') - write_default_config(templates['simpleArbiterDhcpGWRdate'], global_params) -- cgit v1.2.1