diff --git a/tanks/Makefile b/tanks/Makefile index 1310b71..4c83034 100644 --- a/tanks/Makefile +++ b/tanks/Makefile @@ -24,7 +24,7 @@ target: $(INSTALL) -d target/usr/lib/www/tanks/ $(INSTALL) www/* target/usr/lib/www/tanks/ - ln -s /var/lib/tanks target/usr/lib/www/tanks/results + ln -s /var/lib/tanks/results target/usr/lib/www/tanks/results $(INSTALL) -d target/usr/lib/python2.6/site-packages/tanks/ $(INSTALL) lib/* target/usr/lib/python2.6/site-packages/tanks/ diff --git a/tanks/run_tanks.py b/tanks/run_tanks.py index 11c792a..ab6a8d6 100755 --- a/tanks/run_tanks.py +++ b/tanks/run_tanks.py @@ -1,10 +1,13 @@ #! /usr/bin/python -import time import optparse +import shutil +import time from tanks import Pflanzarr T = 60*5 +MAX_HIST = 30 +HIST_STEP = 100 parser = optparse.OptionParser('DATA_DIR easy|medium|hard MAX_TURNS') opts, args = parser.parse_args() @@ -20,6 +23,21 @@ while True: p = Pflanzarr.Pflanzarr(args[0], args[1]) p.run(turns) + path = os.path.join(args[0], 'results') + files = os.listdir(path) + gameNums = [] + for file in files: + try: + gameNums.append( int(file) ) + except: + continue + + gameNums.sort(reverse=True) + highest = gameNums[0] + for num in gameNums: + if highest - MAX_HIST > num and not (num % HIST_STEP == 0): + shutil.rmtree(os.path.join(path, num)) + diff = time.time() - start if diff - T > 0: time.sleep( diff - T ) diff --git a/tanks/www/results.cgi b/tanks/www/results.cgi index a17ee77..ceb4ae2 100755 --- a/tanks/www/results.cgi +++ b/tanks/www/results.cgi @@ -28,22 +28,28 @@ except: if not games: print "

No games have occurred yet." + gameNums = [] for game in games: try: - num = int(game) - path = os.path.join( 'results', game, 'results.html') - if os.path.exists( path ): - gameNums.append( int(num) ) - else: - continue - + gameNums.append( int(game) ) except: continue gameNums.sort(reverse=True) +# Don't include games that haven't completed +i = 0 +num = str(gameNums[i]) +for i in range(len(gameNums)): + path = os.path.join( 'results', str(gameNums[i]), 'results.html') ) + if os.path.exists( path ): + break +gameNums = gameNums[i:] + for num in gameNums: print '

%d - ' % num, print 'v' % num, print 'r' % num + +print '' diff --git a/tanksFlagger/Makefile b/tanksFlagger/Makefile new file mode 100644 index 0000000..7bd61de --- /dev/null +++ b/tanksFlagger/Makefile @@ -0,0 +1,20 @@ +FAKE = fakeroot -s fake -i fake +INSTALL = $(FAKE) install -o 100 + +all: tanksFlagger.tce + +push: tanksFlagger.tce + netcat -l -q 0 -p 3333 < tanksFlagger.tce + +tanksFlagger.tce: target + $(FAKE) sh -c 'cd target && tar -czf - .' > $@ + +target: + $(INSTALL) -d target/var/service/tanksFlagger + $(INSTALL) run report_score.py target/var/service/tanksFlagger/ + + $(INSTALL) -d target/var/service/tanksFlagger/log/ + $(INSTALL) log.run target/var/service/tanksFlagger/log/run + +clean: + rm -rf target tanksFlagger.tce fake diff --git a/tanksFlagger/log.run b/tanksFlagger/log.run new file mode 100755 index 0000000..f7a77bf --- /dev/null +++ b/tanksFlagger/log.run @@ -0,0 +1,3 @@ +#! /bin/sh + +exec logger -t tanksFlagger diff --git a/tanks/report_score.py b/tanksFlagger/report_score.py similarity index 100% rename from tanks/report_score.py rename to tanksFlagger/report_score.py diff --git a/tanksFlagger/run b/tanksFlagger/run new file mode 100755 index 0000000..e2eb214 --- /dev/null +++ b/tanksFlagger/run @@ -0,0 +1,5 @@ +#! /bin/sh + +[ -f /var/lib/ctf/disabled/tanks ] && exit 0 + +exec envuidgid ctf python3 report_score.py 2>&1