コード例 #1
0
    def prepare(self, confer_name):

        if Election().is_hes():
            self.root = 'hes'
        elif Election().is_hlr():
            self.root = 'hlr'
        else:
            raise Exception('Vigane serveritüüp')

        if not ElectionState().can_replace_candidates():
            print 'Selles hääletuse faasis (%s) valikuid muuta ei saa'\
                % ElectionState().str()
            return False

        self.reg = Election().get_sub_reg(self.elid)
        AppLog().set_app(confer_name, self.elid)
        AppLog().log('Valikute nimekirja välja vahetamine: ALGUS')
        self.quest = question.Question(self.elid, self.root, self.reg)

        self._ed = inputlists.Districts()
        self._ed.load(self.root, self.reg)

        self._backup_old_choices()
        print 'Valimised: ' + self.elid
        return True
コード例 #2
0
ファイル: hesdisp.py プロジェクト: ono4ji/evalimine
 def __proxy(self, vote=None, votebox=None):
     try:
         evlog.log(LOGSIG[self.__task] + ': ALGUS')
         if ElectionState().election_on():
             security = CertAnalyzer()
             if security.work():
                 if self.__task == TASK_CAND:
                     return \
                         self.__get_candidate_list(security.valid_person())
                 elif self.__task == TASK_VOTE:
                     return self.__hts_vote(\
                                 security.valid_person(), vote, votebox)
                 else:
                     r1, r2 = protocol.msg_error_technical()
                     return self.__return_error(r1, r2)
             else:
                 evlog.log_error('Viga: "%s"' % security.logmsg)
                 return \
                     self.__return_error(security.errcode, security.errmsg)
         else:
             r1, r2 = ElectionState().election_off_msg()
             return self.__return_error(r1, r2)
     except:
         return self.__return_exception()
     finally:
         evlog.log(LOGSIG[self.__task] + ': LõPP')
コード例 #3
0
ファイル: htsalldisp.py プロジェクト: limbail/evalimine
    def talleta_base64(self, data):
        try:
            try:
                AppLog().log('Hääle talletamine: ALGUS')
                if ElectionState().election_on():
                    return self.__all.talleta_base64(data)

                r1, msg = ElectionState().election_off_msg()
                AppLog().log_error(msg)
                return evcommon.EVOTE_ERROR, msg
            except:
                AppLog().log_exception()
                return evcommon.EVOTE_ERROR, EV_ERRORS.TEHNILINE_VIGA
        finally:
            AppLog().log('Hääle talletamine: LõPP')
コード例 #4
0
ファイル: htsalldisp.py プロジェクト: limbail/evalimine
    def haaletanud(self, ik):
        try:
            try:
                AppLog().log('Korduvhääletuse kontroll: ALGUS')
                if ElectionState().election_on():
                    ok, msg = self.__all.haaletanud(ik)
                    return True, ok, msg

                r1, msg = ElectionState().election_off_msg()
                AppLog().log_error(msg)
                return False, False, msg
            except:
                AppLog().log_exception()
                return False, False, EV_ERRORS.TEHNILINE_VIGA
        finally:
            AppLog().log('Korduvhääletuse kontroll: LõPP')
コード例 #5
0
    def verification_configuration(self):
        try:
            AppLog().log("Load verification configuration: START")
            if ElectionState().election_on():
                return evcommon.VERIFY_OK, "BLOB"  # TODO msg-seadistus

            ret, msg = ElectionState().election_off_msg()
            AppLog().log_error(msg)
            return evcommon.VERIFY_ERROR, msg
        except:
            AppLog().log_exception()
            return evcommon.VERIFY_ERROR, EvMessage().get_str(\
                    "TECHNICAL_ERROR_LOAD_CONFIGURATION", \
                    evstrings.TECHNICAL_ERROR_LOAD_CONFIGURATION)
        finally:
            AppLog().log("Load verification configuration: END")
コード例 #6
0
    def yleminek_tyhistusperioodi(self, pref=''):
        p_time = "00:00:00"

        try:
            try:
                s_time = time.time()
                AppLog().log('Üleminek tühistusperioodi: ALGUS')
                if ElectionState().get() == election.ETAPP_TYHISTUS:
                    _hts = hts.HTS(self._elid)
                    all_, rev, res = _hts.tyhistusperioodi()
                    p_time = time.strftime("%H:%M:%S", \
                            time.gmtime(long(time.time() - s_time)))

                    print '%sVastuvõetud häälte koguarv: %d' % (pref, all_)
                    print '%sTühistatud korduvate häälte arv: %d' % \
                        (pref, rev)
                    print \
                        '%sHääletanute nimekirja kantud kirjete arv: %d' % \
                            (pref, res)
                    print '\nAega kulus: %s' % p_time

                else:
                    mess = \
                        'Antud funktsioon on lubatud vaid tühistusperioodil'
                    print mess
                    AppLog().log_error(mess)
            except:
                print 'Üleminek tühistusperioodi ebaõnnestus'
                AppLog().log_exception()
        finally:
            AppLog().log(\
                'Üleminek tühistusperioodi (%s): LÕPP' % p_time)
コード例 #7
0
    def tyhista_ennista(self, filename):
        p_time = "00:00:00"

        try:
            try:
                s_time = time.time()
                AppLog().log(\
                    'Tühistus-/ennistusnimekirja laadimine: ALGUS')
                if ElectionState().get() == election.ETAPP_TYHISTUS:
                    _htsr = htsrevoke.HTSRevoke(self._elid)
                    all_, res_a, res_u = _htsr.tyhista_ennista(filename)
                    p_time = time.strftime("%H:%M:%S", \
                            time.gmtime(long(time.time() - s_time)))

                    print 'Tühistamine/ennistamine'
                    print '\tKirjeid kokku: %d' % all_
                    print '\tEdukalt töödeldud kirjeid: %d' % res_a
                    print '\tProbleemseid kirjeid: %d' % res_u
                    print '\nAega kulus: %s' % p_time
                else:
                    mess = \
                        'Antud funktsioon on lubatud vaid tühistusperioodil'
                    print mess
                    AppLog().log_error(mess)
            except:
                print 'Tühistus-/ennistusnimekirja laadimine ebaõnnestus'
                AppLog().log_exception()
        finally:
            AppLog().log(\
                'Tühistus-/ennistusnimekirja laadimine (%s): LÕPP' % p_time)
コード例 #8
0
    def loendamisele_minevad_haaled(self, pref=''):
        p_time = "00:00:00"

        try:
            try:
                s_time = time.time()
                AppLog().log(\
                    'Loendamisele minevate ' \
                        'häälte nimekirja koostamine: ALGUS')
                if ElectionState().get() == election.ETAPP_LUGEMINE:
                    _hts = hts.HTS(self._elid)
                    g_v, b_v = _hts.lugemisperioodi()
                    p_time = time.strftime("%H:%M:%S", \
                            time.gmtime(long(time.time() - s_time)))

                    print '%sLoendamisele minevate häälte arv: %d' % \
                        (pref, g_v)
                    print '%sAvalduse alusel tühistatud häälte arv: %d' % \
                            (pref, b_v)
                    print '\nAega kulus: %s' % p_time
                else:
                    mess = 'Antud funktsioon on lubatud vaid lugemisperioodil'
                    print mess
                    AppLog().log_error(mess)
            except:
                print 'Loendamisele minevate häälte nimekirja ' \
                    'koostamine ebaõnnestus'
                AppLog().log_exception()
        finally:
            AppLog().log(\
                'Loendamisele minevate häälte nimekirja ' \
                'koostamine (%s): LÕPP' % p_time)
コード例 #9
0
ファイル: htsalldisp.py プロジェクト: limbail/evalimine
    def verify(self, vote_id):
        try:
            AppLog().log("Vote verification: START")
            if ElectionState().election_on():
                return self.__all.verify(vote_id)

            ret, msg = ElectionState().election_off_msg()
            AppLog().log_error(msg)
            return evcommon.VERIFY_ERROR, msg
        except:
            AppLog().log_exception()
            return evcommon.VERIFY_ERROR, EvMessage().get_str(
                    "TECHNICAL_ERROR_VOTE_VERIFICATION",
                    evstrings.TECHNICAL_ERROR_VOTE_VERIFICATION)
        finally:
            AppLog().log("Vote verification: END")
コード例 #10
0
    def talleta_base64(self, data):
        try:
            try:
                AppLog().log('Hääle talletamine: ALGUS')
                if ElectionState().election_on():
                    return self.__all.talleta_base64(data)

                r1, msg = ElectionState().election_off_msg()
                AppLog().log_error(msg)
                return evcommon.EVOTE_ERROR, msg
            except:
                AppLog().log_exception()
                return evcommon.EVOTE_ERROR, \
                    EvMessage().get_str("TEHNILINE_VIGA_HAALE_TALLETAMISEL", \
                    evstrings.TEHNILINE_VIGA_HAALE_TALLETAMISEL)
        finally:
            AppLog().log('Hääle talletamine: LõPP')
コード例 #11
0
ファイル: config_common.py プロジェクト: syedfa/evalimine
    def prepare(self, confer_name, server_root):

        self.root = server_root

        if not ElectionState().can_load_conf():
            print 'Selles hääletuse faasis (%s) valimisinfot laadida ei saa'\
                % ElectionState().str()
            return False

        self.reg = Election().get_sub_reg(self.elid)
        AppLog().set_app(confer_name, self.elid)
        AppLog().log('Valimiste failide laadimine: ALGUS')
        self.quest = question.Question(self.elid, self.root, self.reg)
        self.quest.reset_data()

        print 'Valimised: ' + self.elid
        return True
コード例 #12
0
ファイル: serviceutil.py プロジェクト: syedfa/evalimine
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()
コード例 #13
0
    def haaletanud(self, ik):
        try:
            try:
                AppLog().log('Korduvhääletuse kontroll: ALGUS')
                if ElectionState().election_on():
                    ok, msg = self.__all.haaletanud(ik)
                    return True, ok, msg

                r1, msg = ElectionState().election_off_msg()
                AppLog().log_error(msg)
                return False, False, msg
            except:
                AppLog().log_exception()
                return False, False, \
                    EvMessage().get_str(\
                        "TEHNILINE_VIGA_KORDUVHAALETUSE_KONTROLLIL",\
                        evstrings.TEHNILINE_VIGA_KORDUVHAALETUSE_KONTROLLIL)
        finally:
            AppLog().log('Korduvhääletuse kontroll: LõPP')
コード例 #14
0
    def init_auth(self, phone):

        try:
            evlog.log("Autentimispäring: ALGUS %s" % (phone))
            if not ElectionState().election_on():
                r1, r2 = ElectionState().election_off_msg()
                evlog.log_error('Viga operatsioonil "cand", teade "%s"' % r2)
                return protocol.msg_error(r1, r2)

            self.ctx().set_phone(phone)
            self.ctx().generate_challenge()
            service = MobileIDService()

            rsp = service.init_auth(self.ctx())
            if rsp._Status == 'OK':
                rsp._CertificateData = rsp._CertificateData.strip()

                self.ctx().save_post_auth(rsp)

                alog, elog = evlogdata.get_cert_data_log(
                    rsp._CertificateData, 'cand/auth', True)

                evlog.log('Autentimispäring (%s, %s, %s, %s)' %
                          (rsp._UserIDCode, rsp._UserGivenname,
                           rsp._UserSurname, rsp._Challenge))

                evlog.log(alog)
                if elog:
                    evlog.log_error(elog)

                return protocol.msg_mobid_auth_init_ok(self.ctx().sessid(),
                                                       rsp._ChallengeID)

            return self.__return_mid_error(rsp._Status)

        except httplib.BadStatusLine as exc:
            return self.__return_badstatusline_error(exc)
        except ZSI.FaultException as exc:
            return self.__return_zsi_error(exc)
        except:
            return self.__return_exception()
        finally:
            evlog.log('Autentimispäring: LÕPP')
コード例 #15
0
    def init_auth(self, phone):

        try:
            evlog.log("Autentimispäring: ALGUS %s" % (phone))
            if not ElectionState().election_on():
                r1, r2 = ElectionState().election_off_msg()
                return protocol.msg_error(r1, r2)

            self.ctx().set_phone(phone)
            self.ctx().generate_challenge()
            service = MobileIDService()

            rsp_cert = service.get_cert(self.ctx())
            if not (rsp_cert._SignCertStatus == 'OK'):
                return self.__return_mid_error(rsp_cert._SignCertStatus)

            if rsp_cert._AuthCertStatus == 'OK':
                res, err = cert_ok(rsp_cert._AuthCertData)
                if not res:
                    evlog.log_error(err)
                    return self.__return_mid_policy_error()
            else:
                return self.__return_mid_error(rsp_cert._AuthCertStatus)

            rsp = service.init_auth(self.ctx())
            if rsp._Status == 'OK':
                self.ctx().save_post_auth(rsp)
                evlog.log('Autentimispäring (%s, %s, %s, %s)' % \
                    (rsp._UserIDCode, rsp._UserGivenname, \
                    rsp._UserSurname, rsp._Challenge))

                return protocol.msg_mobid_auth_init_ok(\
                    self.ctx().sessid(), rsp._ChallengeID)

            return self.__return_mid_error(rsp._Status)

        except httplib.BadStatusLine, exc:
            return self.__return_badstatusline_error(exc)
コード例 #16
0
ファイル: evui.py プロジェクト: limbail/evalimine
    def __init__(self):
        self.quit_flag = 0
        self.cmd_list = []
        self.__sub0 = MenuItemSubMenu()
        self.__sub1 = MenuItemSubMenu()
        self.__sub2 = MenuItemSubMenu()
        self.file_table = {}

        self.ui_update_function = None

        self.cur_elid = ""
        self.file_action = ""
        self.menu_caption = ""
        self.state = ElectionState().get()
        self.init_main_menu()
コード例 #17
0
ファイル: hts_state.py プロジェクト: syedfa/evalimine
def execute():
    _state = ElectionState().get()
    if _state == election.ETAPP_TYHISTUS:
        qlist = Election().get_questions()
        for el in qlist:
            _hts = htsdisp.HTSDispatcher(el)
            print el
            _hts.yleminek_tyhistusperioodi('\t')
    elif _state == election.ETAPP_LUGEMINE:
        qlist = Election().get_questions()
        for el in qlist:
            _hts = htsdisp.HTSDispatcher(el)
            print el
            _hts.loendamisele_minevad_haaled('\t')
    else:
        pass
コード例 #18
0
ファイル: purge_otps.py プロジェクト: limbail/evalimine
    elids = reg.read_string_value(otp_key, "elids").value.rstrip().split("\t")

    for elid in elids:
        sreg = Election().get_sub_reg(elid)
        if sreg.check(voter_key + [htscommon.VOTE_VERIFICATION_ID_FILENAME]):
            sreg.delete_value(voter_key,
                              htscommon.VOTE_VERIFICATION_ID_FILENAME)
    reg.ensure_no_key(otp_key)


def purge_otps():

    # Read the verification timeout value before defining check_otp, so we only
    # have to read it once.
    timeout = Election().get_verification_time() * 60

    def check_otp(reg, otp, runtime):
        otp_key = htscommon.get_verification_key(otp)
        created = reg.read_integer_value(otp_key, "timestamp").value
        return created + timeout < runtime

    purger = purge.Purger("expired vote ID", htscommon.get_verification_key())
    purger.work(check_otp, purge_otp)


if __name__ == '__main__':
    if ElectionState().election_on():
        purge_otps()

# vim:set ts=4 sw=4 et fileencoding=utf8:
コード例 #19
0
ファイル: evui.py プロジェクト: limbail/evalimine
 def update(self):
     self.state = ElectionState().get()
     use_binary = self.file_action != ACTION_BROWSE_FILE
     self.update_files(self.cur_elid, use_binary)
     if self.ui_update_function:
         self.ui_update_function()
コード例 #20
0
ファイル: init_conf.py プロジェクト: syedfa/evalimine
 def init_done(self):  # pylint: disable=R0201
     ElectionState().init()
     Election().init_conf_done()
コード例 #21
0
ファイル: apply_changes.py プロジェクト: limbail/evalimine
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()
コード例 #22
0
ファイル: apply_changes.py プロジェクト: limbail/evalimine
 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)
コード例 #23
0
ファイル: evui.py プロジェクト: limbail/evalimine
 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)