def do_replace_candidates(elid): if not uiutil.ask_yes_no("Kas oled kindel"): return if not uiutil.ask_yes_no("Valikute nimekirja väljavahetamisel " + \ "kustutakse eelmine nimekiri.\nKas jätkan"): return elec_f = uiutil.ask_file_name_from_cd("Sisesta valikute-faili asukoht") cmd = "%s %s %s" % (SCRIPT_REPLACE_CANDIDATES, elid, elec_f) os.system(cmd)
def do_restore_init_status(): if not uiutil.ask_yes_no("Kas oled kindel"): return if not uiutil.ask_yes_no("Initsialiseerimisel kustutatakse " + \ "antud hääled.\nKas jätkan"): return Election().restore_init_status() ElectionState().init()
def do_rem_rights(elid): ik = uiutil.ask_id_num() right_str = "" if Election().is_hes() or Election().is_hlr(): right = uiutil.ask_int( "Võimalikud volitused:\n " + "\t(1) Valikute nimekirja laadija\n" + "\t(2) Valimisjaoskondade nimekirja laadija\n" + "Vali volitus:", 1, 1, 2) if right == 1: right_str = "VALIK" elif right == 2: right_str = "JAOSK" elif Election().is_hts(): right = uiutil.ask_int( "Võimalikud volitused:\n " + "\t(1) Tühistus- ja ennistusnimekirja laadija\n" + "\t(2) Valimisjaoskondade nimekirja laadija\n" + "Vali volitus:", 1, 1, 2) if right == 1: right_str = "TYHIS" elif right == 2: right_str = "JAOSK" if not uiutil.ask_yes_no("Kas soovid eemaldada volituse"): return subprocess.call([SCRIPT_REGRIGHTS, elid, "rem", ik, right_str])
def do_rem_rights(elid): ik = uiutil.ask_id_num() right_str = "" if Election().is_hes() or Election().is_hlr(): right = uiutil.ask_int("Võimalikud volitused:\n " + \ "\t(1) Valikute nimekirja laadija\n" + \ "\t(2) Valimisjaoskondade nimekirja laadija\n" + \ "Vali volitus:", 1, 1, 2) if right == 1: right_str = "VALIK" elif right == 2: right_str = "JAOSK" elif Election().is_hts(): right = uiutil.ask_int("Võimalikud volitused:\n " + \ "\t(1) Tühistus- ja ennistusnimekirja laadija\n" + "\t(2) Valimisjaoskondade nimekirja laadija\n" + \ "Vali volitus:", 1, 1, 2) if right == 1: right_str = "TYHIS" elif right == 2: right_str = "JAOSK" if not uiutil.ask_yes_no("Kas oled kindel"): return cmd = "%s %s rem %s %s" % (SCRIPT_REGRIGHTS, elid, ik, right_str) os.system(cmd)
def do_unschedule_autostop(): prepare = autocmd.scheduled(autocmd.COMMAND_PREPARE_STOP) stop = autocmd.scheduled(autocmd.COMMAND_STOP) time = prepare[1] if prepare else stop[1] if uiutil.ask_yes_no("Kas soovid kustutada automaatse lõpuaja %s" % time, \ uiutil.ANSWER_NO): if prepare: autocmd.unschedule(autocmd.COMMAND_PREPARE_STOP, prepare[0]) if stop: autocmd.unschedule(autocmd.COMMAND_STOP, stop[0])
def burn(self): dvd_def_speed = DVD_DEF_SPEED dvd_count = 0 dvd_dirs = os.listdir(self.work_dir) dvd_dirs_size = len(dvd_dirs) dvd_dirs.sort() for dvd_dir in dvd_dirs: dvd_count += 1 if dvd_dirs_size > 1: print("Hakkame kirjutama %d. DVD-d %d-st" % (dvd_count, dvd_dirs_size)) if not uiutil.ask_yes_no( "Palun sisestage DVDR(W) meedium seadmesse. Jätkan"): print "DVD kirjutamine katkestati" return 1 if self._is_dvd_blank() != 0: print "DVD ei ole tühi" return 1 while True: dvd_speed = uiutil.ask_int( "Palun sisestage DVD kirjutamise kiirus", dvd_def_speed, DVD_MIN_SPEED, DVD_MAX_SPEED) dvd_def_speed = dvd_speed cmdline = ('%s -speed=%d -Z /dev/dvd -q -r -J %s' % (BURN_PROGRAM, dvd_speed, os.path.join(self.work_dir, dvd_dir))) print cmdline rc = subprocess.call(cmdline, shell=True) if rc == 0: break print "Salvestamine nurjus veakoodiga %d" % rc if not uiutil.ask_yes_no("Kas proovite uuesti"): print "DVD kirjutamine katkestati" return 1 return 0
def do_restore(): """Taastame olekupuu varukoopiast. """ if not uiutil.ask_yes_no("Kas soovid olekupuu varukoopiast taastada"): return if not uiutil.ask_yes_no( "Olekupuu taastamisel varukoopiast " + "kustutatakse vana olekupuu.\nKas jätkan"): return import time s_time = time.time() try: restorer = burner.Restorer( os.path.abspath(os.path.join( evcommon.EVREG_CONFIG, '..', 'restore-' + time.strftime("%Y%m%d%H%M%S")))) while True: backup_dir = uiutil.ask_dir_name( "Sisesta kataloog, kus asuvad varukoopia failid") restorer.add_chunks(backup_dir) if not uiutil.ask_yes_no( "Kas soovid veel laadida varukoopia faile"): break if restorer.chunk_count() != 0: print "Taastame olekupuu varukoopiast. Palun oota.." restorer.restore(Election().get_root_reg().root) else: print 'Pole ühtegi varukoopia faili. Loobun taastamisest.' finally: print 'Kustutan ajutisi faile. Palun oota..' restorer.delete_files() if restorer.chunk_count() != 0: print '\nOlekupuu taastamine kestis: %s' % \ time.strftime("%H:%M:%S", time.gmtime(long(time.time() - s_time)))
def do_the_end(self): srv = Election().get_server_str() is_hlr = (srv == evcommon.APPTYPE_HLR) root_dir = Election().get_root_reg().root if uiutil.ask_yes_no("Kas soovid valimised lõpetada?"): if uiutil.ask_yes_no( "Valimiste lõpetamisega kustutatakse kogu " + "konfiguratsioon.\nKas jätkan"): print "Kustutan e-hääletuse faile. Palun oota.." # Kustutame kogu konfiguratsiooni ja ka olekupuu taastamise # käigus alles hoitud vanad olekupuud. uiutil.clear_dir(root_dir) map(shutil.rmtree, glob.iglob("%s/../registry-*" % root_dir)) # HLRi korral ka vastav mälufailisüsteemi kraam. if is_hlr: if "EVOTE_TMPDIR" in os.environ: uiutil.clear_dir(os.environ["EVOTE_TMPDIR"]) # Initsialiseerime nüüd ka liidese. Election().set_server_str(srv) self.__init__()
def do_restore(): """Taastame olekupuu varukoopiast. """ if not uiutil.ask_yes_no("Kas soovid olekupuu varukoopiast taastada"): return if not uiutil.ask_yes_no("Olekupuu taastamisel varukoopiast " + "kustutatakse vana olekupuu.\nKas jätkan"): return import time s_time = time.time() try: restorer = burner.Restorer( os.path.abspath( os.path.join(evcommon.EVREG_CONFIG, '..', 'restore-' + time.strftime("%Y%m%d%H%M%S")))) while True: backup_dir = uiutil.ask_dir_name( "Sisesta kataloog, kus asuvad varukoopia failid") restorer.add_chunks(backup_dir) if not uiutil.ask_yes_no( "Kas soovid veel laadida varukoopia faile"): break if restorer.chunk_count() != 0: print "Taastame olekupuu varukoopiast. Palun oota.." restorer.restore(Election().get_root_reg().root) else: print 'Pole ühtegi varukoopia faili. Loobun taastamisest.' finally: print 'Kustutan ajutisi faile. Palun oota..' restorer.delete_files() if restorer.chunk_count() != 0: print '\nOlekupuu taastamine kestis: %s' % \ time.strftime("%H:%M:%S", time.gmtime(long(time.time() - s_time)))
def do_install(): install_file = \ uiutil.ask_file_name_from_cd("Sisesta paigaldusfaili asukoht") if not subprocess.call([SCRIPT_INSTALL_SRV, "verify", install_file]) == 0: return if not uiutil.ask_yes_no("Kas paigaldame valimised?"): return subprocess.call([SCRIPT_INSTALL_SRV, "install", install_file])
def write_pid(): reg = evreg.Registry(root=evcommon.EVREG_CONFIG) reg.ensure_key(autocmd.REFRESH_PID_KEY) try: pid = reg.read_integer_value(autocmd.REFRESH_PID_KEY, autocmd.REFRESH_PID_VALUE) except (IOError, LookupError): pid = None # If a PID exists and the user does not want to continue, return None. if pid and not uiutil.ask_yes_no(MESSAGE_PID_EXISTS, uiutil.ANSWER_NO): return None return reg.create_integer_value(autocmd.REFRESH_PID_KEY, autocmd.REFRESH_PID_VALUE, os.getpid())
def do_install(): install_file = \ uiutil.ask_file_name_from_cd("Sisesta paigaldusfaili asukoht") cmd = "%s verify %s" % (SCRIPT_INSTALL_SRV, install_file) ret = os.system(cmd) if not ret == 0: return if not uiutil.ask_yes_no("Kas paigaldame valimised?"): return cmd = "%s install %s" % (SCRIPT_INSTALL_SRV, install_file) os.system(cmd)
def do_count_votes(elid): import evfiles import evlog log4 = evlog.Logger() log4.set_logs(evfiles.log4_file(elid).path()) if log4.lines_in_file() > 3: print "Log4 fail ei ole tühi. Jätkamine pole võimalik." return log5 = evlog.Logger() log5.set_logs(evfiles.log5_file(elid).path()) if log5.lines_in_file() > 3: print "Log5 fail ei ole tühi. Jätkamine pole võimalik." return if not uiutil.ask_yes_no("Kas soovid hääled kokku lugeda"): print "Katkestame häälte lugemise" return pin = uiutil.ask_password("Sisesta partitsiooni PIN: ", "Sisestatud PIN oli tühi!") subprocess.call([SCRIPT_HLR, elid, pin])
def do_count_votes(elid): import evfiles import evlog log4 = evlog.Logger() log4.set_logs(evfiles.log4_file(elid).path()) if log4.lines_in_file() > 3: print "Log4 fail ei ole tühi. Ei saa jätkata." return log5 = evlog.Logger() log5.set_logs(evfiles.log5_file(elid).path()) if log5.lines_in_file() > 3: print "Log5 fail ei ole tühi. Ei saa jätkata." return if not uiutil.ask_yes_no("Kas oled kindel"): print "Katkestame häälte lugemise" return pin = uiutil.ask_password("Sisesta partitsiooni PIN: ", \ "Sisestatud PIN oli tühi!") cmd = "%s %s %s" % (SCRIPT_HLR, elid, pin) os.system(cmd)
def do_count_votes(elid): import evfiles import evlog log4 = evlog.Logger() log4.set_logs(evfiles.log4_file(elid).path()) if log4.lines_in_file() > 3: print "Log4 fail ei ole tühi. Jätkamine pole võimalik." return log5 = evlog.Logger() log5.set_logs(evfiles.log5_file(elid).path()) if log5.lines_in_file() > 3: print "Log5 fail ei ole tühi. Jätkamine pole võimalik." return if not uiutil.ask_yes_no("Kas soovid hääled kokku lugeda"): print "Katkestame häälte lugemise" return pin = uiutil.ask_password( "Sisesta partitsiooni PIN: ", "Sisestatud PIN oli tühi!") subprocess.call([SCRIPT_HLR, elid, pin])
def do_pre_start_counting_hes(): if not uiutil.ask_yes_no("Kas oled kindel"): return Election().refuse_new_voters() print 'Kandidaatide nimekirjade väljastamine peatatud'
def do_rem_all_rights(elid): if not uiutil.ask_yes_no("Kas oled kindel"): return cmd = "%s %s remall" % (SCRIPT_REGRIGHTS, elid) os.system(cmd)
def do_rem_user_rights(elid): ik = uiutil.ask_id_num() if not uiutil.ask_yes_no("Kas oled kindel"): return cmd = "%s %s remuser %s" % (SCRIPT_REGRIGHTS, elid, ik) os.system(cmd)
def do_cancel_pre_start_counting_hes(): if not uiutil.ask_yes_no("Kas soovid taastada kandidaatide nimekirja" " väljastamise"): return Election().restore_new_voters() print 'Kandidaatide nimekirjade väljastamine taastatud'
def do_rem_user_rights(elid): ik = uiutil.ask_id_num() if not uiutil.ask_yes_no("Kas soovid eemaldada volitatud isiku"): return subprocess.call([SCRIPT_REGRIGHTS, elid, "remuser", ik])
def do_rem_all_rights(elid): if not uiutil.ask_yes_no("Kas soovid eemaldada isiku kõik volitused"): return subprocess.call([SCRIPT_REGRIGHTS, elid, "remall"])
def apply_changes(elid, voter_f): """Muudatuste rakendamine""" vl = None tokend = {} def check_state(): if not ElectionState().can_apply_changes(): sys.stderr.write('Selles hääletuse faasis (%s) pole võimalik '\ 'nimekirju uuendada\n' \ % ElectionState().str()) sys.exit(1) try: buflog = None if Election().is_hes(): root = 'hes' elif Election().is_hts(): root = 'hts' else: raise Exception('Vigane serveritüüp') buflog = BufferedLog(Election(). \ get_path(evcommon.VOTER_LIST_LOG_FILE), \ 'APPLY-CHANGES', elid) check_state() reg = Election().get_sub_reg(elid) ed = inputlists.Districts() ed.load(root, reg) vl = inputlists.VotersList(root, reg, ed) vl.attach_elid(elid) vl.ignore_errors() evlog.AppLog().set_app('APPLY-CHANGES') vl.attach_logger(evlog.AppLog()) print "Kontrollin valijate faili kontrollsummat" if not ksum.check(voter_f): raise Exception('Valijate faili kontrollsumma ei klapi\n') voters_file_sha256 = ksum.compute(voter_f) if Election().get_root_reg().check(\ ['common', 'voters_file_hashes', voters_file_sha256]): raise Exception('Kontrollsummaga %s fail on juba laetud\n' \ % voters_file_sha256) if not vl.check_format(voter_f, 'Kontrollin valijate nimekirja: '): print "Valijate nimekiri ei vasta vormingunõuetele" sys.exit(1) else: print 'Valijate nimekiri OK' vl.attach_logger(buflog) if not vl.check_muudatus( \ 'Kontrollin muudatuste kooskõlalisust: ', \ ElectionState().election_on(), tokend): print "Sisend ei ole kooskõlas olemasoleva konfiguratsiooniga" else: print "Muudatuste kooskõlalisus OK" _apply = 1 if not buflog.empty(): print 'Muudatuste sisselaadimisel esines vigu' buflog.output_errors() _apply = uiutil.ask_yes_no(\ 'Kas rakendan kooskõlalised muudatused?') if not _apply: buflog.log_error('Muudatusi ei rakendatud') print 'Muudatusi ei rakendatud' else: if ElectionState().election_on() and root == 'hts': create_tokend_file(tokend, reg, elid) a_count, d_count = vl.create('Paigaldan valijaid: ') print 'Teostasin %d lisamist ja %d eemaldamist' \ % (a_count, d_count) Election().copy_voters_file(elid, root, voter_f) print 'Muudatuste rakendamine lõppes edukalt' except SystemExit: sys.stderr.write('Viga muudatuste laadimisel\n') if buflog: buflog.output_errors() raise except Exception, ex: sys.stderr.write('Viga muudatuste laadimisel: ' + str(ex) + '\n') if buflog: buflog.output_errors() sys.exit(1)
def apply_changes(elid, voter_f): """Muudatuste rakendamine""" vl = None tokend = {} def check_state(): if not ElectionState().can_apply_changes(): sys.stderr.write('Selles hääletuse faasis (%s) pole võimalik ' 'nimekirju uuendada\n' % ElectionState().str()) sys.exit(1) try: buflog = None if Election().is_hes(): root = 'hes' elif Election().is_hts(): root = 'hts' else: raise Exception('Vigane serveritüüp') buflog = BufferedLog(Election(). get_path(evcommon.VOTER_LIST_LOG_FILE), 'APPLY-CHANGES', elid) check_state() reg = Election().get_sub_reg(elid) ed = inputlists.Districts() ed.load(root, reg) vl = inputlists.VotersList(root, reg, ed) vl.attach_elid(elid) vl.ignore_errors() evlog.AppLog().set_app('APPLY-CHANGES') vl.attach_logger(evlog.AppLog()) print "Kontrollin valijate faili terviklikkust" checkResult = sigverify.check_existent(voter_f, elid) if not checkResult[0]: raise Exception('Kontrollimisel tekkis viga: %s\n' % checkResult[1]) else: print "Valijate faili terviklikkus OK" voters_file_sha256 = ksum.compute(voter_f) if Election().get_root_reg().check( ['common', 'voters_file_hashes', voters_file_sha256]): raise Exception('Kontrollsummaga %s fail on juba laaditud\n' % voters_file_sha256) if not vl.check_format(voter_f, 'Kontrollin valijate nimekirja: '): print "Valijate nimekiri ei vasta vormingunõuetele" sys.exit(1) else: print 'Valijate nimekiri OK' vl.attach_logger(buflog) if not vl.check_muudatus( 'Kontrollin muudatuste kooskõlalisust: ', ElectionState().election_on(), tokend): print "Sisend ei ole kooskõlas olemasoleva konfiguratsiooniga" else: print "Muudatuste kooskõlalisus OK" _apply = 1 if not buflog.empty(): print 'Muudatuste sisselaadimisel esines vigu' buflog.output_errors() _apply = uiutil.ask_yes_no( 'Kas rakendan kooskõlalised muudatused?') if not _apply: buflog.log_error('Muudatusi ei rakendatud') print 'Muudatusi ei rakendatud' else: if ElectionState().election_on() and root == 'hts': create_tokend_file(tokend, reg, elid) a_count, d_count = vl.create('Paigaldan valijaid: ') print 'Teostasin %d lisamist ja %d eemaldamist' \ % (a_count, d_count) Election().copy_config_file( elid, root, voter_f, evcommon.VOTERS_FILES) Election().add_voters_file_hash(voter_f) print 'Muudatuste rakendamine lõppes edukalt' except SystemExit: sys.stderr.write('Viga muudatuste laadimisel\n') if buflog: buflog.output_errors() raise except Exception as ex: sys.stderr.write('Viga muudatuste laadimisel: ' + str(ex) + '\n') if buflog: buflog.output_errors() sys.exit(1) finally: if vl is not None: vl.close()
def do_change_state(self): if not uiutil.ask_yes_no("Kas oled kindel"): return ElectionState().next() if Election().is_hts(): subprocess.call(SCRIPT_HTS_STATE)
def do_unschedule_autostart(): job, time = autocmd.scheduled(autocmd.COMMAND_START) if uiutil.ask_yes_no("Kas soovid kustutada automaatse algusaja %s" % time, \ uiutil.ANSWER_NO): autocmd.unschedule(autocmd.COMMAND_START, job)
def apply_changes(elid, voter_f): """Muudatuste rakendamine""" vl = None tokend = {} def check_state(): if not ElectionState().can_apply_changes(): sys.stderr.write( "Selles hääletuse faasis (%s) pole võimalik " "nimekirju uuendada\n" % ElectionState().str() ) sys.exit(1) try: buflog = None if Election().is_hes(): root = "hes" elif Election().is_hts(): root = "hts" else: raise Exception("Vigane serveritüüp") buflog = BufferedLog(Election().get_path(evcommon.VOTER_LIST_LOG_FILE), "APPLY-CHANGES", elid) check_state() reg = Election().get_sub_reg(elid) ed = inputlists.Districts() ed.load(root, reg) vl = inputlists.VotersList(root, reg, ed) vl.attach_elid(elid) vl.ignore_errors() evlog.AppLog().set_app("APPLY-CHANGES") vl.attach_logger(evlog.AppLog()) print "Kontrollin valijate faili terviklikkust" checkResult = sigverify.check_existent(voter_f, elid) if not checkResult[0]: raise Exception("Kontrollimisel tekkis viga: %s\n" % checkResult[1]) else: print "Valijate faili terviklikkus OK" voters_file_sha256 = ksum.compute(voter_f) if Election().get_root_reg().check(["common", "voters_file_hashes", voters_file_sha256]): raise Exception("Kontrollsummaga %s fail on juba laaditud\n" % voters_file_sha256) if not vl.check_format(voter_f, "Kontrollin valijate nimekirja: "): print "Valijate nimekiri ei vasta vormingunõuetele" sys.exit(1) else: print "Valijate nimekiri OK" vl.attach_logger(buflog) if not vl.check_muudatus("Kontrollin muudatuste kooskõlalisust: ", ElectionState().election_on(), tokend): print "Sisend ei ole kooskõlas olemasoleva konfiguratsiooniga" else: print "Muudatuste kooskõlalisus OK" _apply = 1 if not buflog.empty(): print "Muudatuste sisselaadimisel esines vigu" buflog.output_errors() _apply = uiutil.ask_yes_no("Kas rakendan kooskõlalised muudatused?") if not _apply: buflog.log_error("Muudatusi ei rakendatud") print "Muudatusi ei rakendatud" else: if ElectionState().election_on() and root == "hts": create_tokend_file(tokend, reg, elid) a_count, d_count = vl.create("Paigaldan valijaid: ") print "Teostasin %d lisamist ja %d eemaldamist" % (a_count, d_count) Election().copy_config_file(elid, root, voter_f, evcommon.VOTERS_FILES) Election().add_voters_file_hash(voter_f) print "Muudatuste rakendamine lõppes edukalt" except SystemExit: sys.stderr.write("Viga muudatuste laadimisel\n") if buflog: buflog.output_errors() raise except Exception as ex: sys.stderr.write("Viga muudatuste laadimisel: " + str(ex) + "\n") if buflog: buflog.output_errors() sys.exit(1) finally: if vl is not None: vl.close()