コード例 #1
0
ファイル: htsbase.py プロジェクト: Augustyn/evalimine
 def is_user_revoked(self, pc):
     user_key = htscommon.get_user_key(pc)
     if self._reg.check(user_key + ['reason']):
         line = self._reg.read_string_value(user_key, 'reason').value
         data = line.split('\t')
         return True, data[1], data[0]
     return False, '', ''
コード例 #2
0
ファイル: hts.py プロジェクト: Augustyn/evalimine
    def talleta_haal(self, **args):
        haale_rasi = ksum.votehash(args['vote'])
        user_key = htscommon.get_user_key(args['signercode'])
        self._reg.ensure_key(user_key)
        voter = args['valija']
        vote_file = htscommon.valid_votefile_name(args['timestamp'])
        user_key.append(vote_file)
        filename = self._reg.path(user_key)

        frm = evlog.EvLogFormat()
        logline = frm.logstring(
            tyyp=0,
            haal_rasi=haale_rasi,
            timestamp=args['timestamp'],
            jaoskond=voter['jaoskond'],
            jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
            ringkond=voter['ringkond'],
            ringkond_omavalitsus=voter['ringkond_omavalitsus'],
            isikukood=args['signercode'],
            nimi=voter['nimi'],
            reanumber=voter['reanumber'])

        outdata = StringIO.StringIO()
        outzip = zipfile.ZipFile(outdata, 'w')
        outzip.writestr(htscommon.ZIP_BDOCFILE, args['signedvote'])
        outzip.writestr(htscommon.ZIP_LOGFILE, logline)
        outzip.close()
        self._write_atomic(filename, outdata.getvalue())
コード例 #3
0
ファイル: hts.py プロジェクト: limbail/evalimine
    def talleta_haal(self, **args):
        haale_rasi = ksum.votehash(args['vote'])
        user_key = htscommon.get_user_key(args['signercode'])
        self._reg.ensure_key(user_key)
        voter = args['valija']
        vote_file = htscommon.valid_votefile_name(args['timestamp'])
        user_key.append(vote_file)
        filename = self._reg.path(user_key)

        frm = evlog.EvLogFormat()
        logline = frm.logstring(
            tyyp=0,
            haal_rasi=haale_rasi,
            timestamp=args['timestamp'],
            jaoskond=voter['jaoskond'],
            jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
            ringkond=voter['ringkond'],
            ringkond_omavalitsus=voter['ringkond_omavalitsus'],
            isikukood=args['signercode'],
            nimi=voter['nimi'],
            reanumber=voter['reanumber'])

        outdata = StringIO.StringIO()
        outzip = zipfile.ZipFile(outdata, 'w')
        outzip.writestr(htscommon.ZIP_BDOCFILE, args['signedvote'])
        outzip.writestr(htscommon.ZIP_LOGFILE, logline)
        outzip.close()
        self._write_atomic(filename, outdata.getvalue())
コード例 #4
0
ファイル: hts.py プロジェクト: 100dBsound/evalimine
    def __handle_valid(self, root, vote_file):

        code = root.split('/').pop()
        user_key = htscommon.get_user_key(code)
        fn = self._reg.path(user_key + [vote_file])

        bdoc = bdocpythonutils.BDocContainer()
        bdoc.load(fn)
        profile = bdocpythonutils.ManifestProfile('TM')
        bdoc.validate(profile)
        haal = bdoc.documents["%s.evote" % self._elid]

        voter = htscommon.get_votefile_voter(vote_file)
        b64haal = base64.b64encode(haal).strip()

        self._log3.log_info(
            tyyp=3,
            haal_rasi=ksum.votehash(haal),
            jaoskond=voter['jaoskond'],
            jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
            ringkond=voter['ringkond'],
            ringkond_omavalitsus=voter['ringkond_omavalitsus'],
            isikukood=code)

        return [voter['jaoskond_omavalitsus'], voter['jaoskond'],
            voter['ringkond_omavalitsus'], voter['ringkond'], b64haal]
コード例 #5
0
 def is_user_revoked(self, pc):
     user_key = htscommon.get_user_key(pc)
     if self._reg.check(user_key + ['reason']):
         line = self._reg.read_string_value(user_key, 'reason').value
         data = line.split('\t')
         return True, data[1], data[0]
     return False, '', ''
コード例 #6
0
    def __handle_valid(self, root, vote_file):

        code = root.split('/').pop()
        user_key = htscommon.get_user_key(code)
        fn = self._reg.path(user_key + [vote_file])

        bdoc = bdocpythonutils.BDocContainer()
        bdoc.load(fn)
        profile = bdocpythonutils.ManifestProfile('TM')
        bdoc.validate(profile)
        haal = bdoc.documents["%s.evote" % self._elid]

        voter = htscommon.get_votefile_voter(vote_file)
        b64haal = base64.b64encode(haal).strip()

        self._log3.log_info(tyyp=3,
                            haal_rasi=ksum.votehash(haal),
                            jaoskond=voter['jaoskond'],
                            jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
                            ringkond=voter['ringkond'],
                            ringkond_omavalitsus=voter['ringkond_omavalitsus'],
                            isikukood=code)

        return [
            voter['jaoskond_omavalitsus'], voter['jaoskond'],
            voter['ringkond_omavalitsus'], voter['ringkond'], b64haal
        ]
コード例 #7
0
 def _count_votes(self, elid):
     user_key = htscommon.get_user_key(self.signercode)
     if Election().get_sub_reg(elid).check(user_key):
         keys = Election().get_sub_reg(elid).list_keys(user_key)
         try:
             keys.remove(htscommon.VOTE_VERIFICATION_ID_FILENAME)
         except ValueError:
             pass # No "otp" file
         return len(keys)
     return 0
コード例 #8
0
ファイル: purge_otps.py プロジェクト: Augustyn/evalimine
def purge_otp(reg, otp):
    otp_key = htscommon.get_verification_key(otp)

    voter = reg.read_string_value(otp_key, "voter").value.rstrip()
    voter_key = htscommon.get_user_key(voter)
    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)
コード例 #9
0
ファイル: htsrevoke.py プロジェクト: IGBAnet/evalimine
    def __kylm_ennistamine(self, input_list, good_list, bad_list, action_list):
        for el in input_list:
            code = el[0]
            if not self.haaletanud(code):
                bad_list.append(el)
                evlog.log_error('Isik koodiga %s ei ole hääletanud' % code)
                continue

            user_key = htscommon.get_user_key(code)
            vc = htscommon.VoteCounter()
            revoked_key = ''

            for vote_file in self._reg.list_keys(user_key):
                if htscommon.VALID_VOTE_PATTERN.match(vote_file):
                    vc.inc_valid()
                elif htscommon.USERREVOKED_VOTE_PATTERN.match(vote_file):
                    vc.inc_userrevoked()
                    revoked_key = vote_file
                elif htscommon.AUTOREVOKED_VOTE_PATTERN.match(vote_file):
                    pass
                elif htscommon.REVOKE_REASON_PATTERN.match(vote_file):
                    pass
                else:
                    vc.inc_unknown()

            if ((vc.userrevoked() == 0) or (vc.valid() > 0)):
                bad_list.append(el)
                evlog.log_error(\
                    'Isik koodiga %s ei ole oma häält tühistanud' % code)
                continue

            if (vc.userrevoked() > 1):
                self._errmsg = 'Serveri andmestruktuurid ei ole kooskõlalised'
                raise Exception(self._errmsg)

            if (vc.unknown() > 0):
                self._errmsg = 'Tundmatu viga häälte tühistamisel'
                raise Exception(self._errmsg)

            if (vc.userrevoked() == 1):
                valid_key = \
                    htscommon.change_votefile_name(\
                        revoked_key, htscommon.BVALID)
                act = ActionInfo()
                act.set_old_name(self._reg.path(user_key + [revoked_key]))
                act.set_new_name(self._reg.path(user_key + [valid_key]))
                act.set_reason_name(self._reg.path(user_key + ['reason']))
                act.set_timestamp(htscommon.get_votefile_time(revoked_key))
                act.set_code(el[0])
                act.set_name(el[1])
                act.set_reason(el[2])
                good_list.append(el)
                action_list.append(act)
コード例 #10
0
ファイル: htsrevoke.py プロジェクト: syedfa/evalimine
    def __kylm_tyhistamine(self, input_list, good_list, bad_list, action_list):
        for el in input_list:
            code = el[0]
            if not self.haaletanud(code):
                bad_list.append(el)
                evlog.log_error('Isik koodiga %s ei ole hääletanud' % code)
                continue

            user_key = htscommon.get_user_key(code)
            vc = htscommon.VoteCounter()
            valid_key = ''

            for vote_file in self._reg.list_keys(user_key):
                if htscommon.VALID_VOTE_PATTERN.match(vote_file):
                    vc.inc_valid()
                    valid_key = vote_file
                elif htscommon.USERREVOKED_VOTE_PATTERN.match(vote_file):
                    vc.inc_userrevoked()
                elif htscommon.AUTOREVOKED_VOTE_PATTERN.match(vote_file):
                    pass
                elif htscommon.REVOKE_REASON_PATTERN.match(vote_file):
                    pass
                else:
                    vc.inc_unknown()

            if (vc.valid() > 1):
                self._errmsg = 'Serveri andmestruktuurid ei ole kooskõlalised'
                raise Exception(self._errmsg)

            if ((vc.valid() == 0) or (vc.userrevoked() > 0)):
                bad_list.append(el)
                evlog.log_error(\
                    'Kasutaja isikukoodiga %s hääl on juba tühistatud' % \
                    code)

            if (vc.unknown() > 0):
                self._errmsg = 'Tundmatu viga häälte tühistamisel'
                raise Exception(self._errmsg)

            if (vc.valid() == 1):
                revoked_key = \
                    htscommon.change_votefile_name(\
                        valid_key, htscommon.BUSERREVOKED)
                act = ActionInfo()
                act.set_old_name(self._reg.path(user_key + [valid_key]))
                act.set_new_name(self._reg.path(user_key + [revoked_key]))
                act.set_reason_name(self._reg.path(user_key))
                act.set_timestamp(htscommon.get_votefile_time(valid_key))
                act.set_code(el[0])
                act.set_name(el[1])
                act.set_reason(el[2])
                good_list.append(el)
                action_list.append(act)
コード例 #11
0
ファイル: purge_otps.py プロジェクト: ono4ji/evalimine
def purge_otp(otp_key):
    elec = election.Election()
    reg = elec.get_root_reg()

    voter = reg.read_string_value(otp_key, "voter").value.rstrip()
    voter_key = htscommon.get_user_key(voter)
    elids = reg.read_string_value(otp_key, "elids").value.rstrip().split("\t")

    for elid in elids:
        sreg = elec.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)
コード例 #12
0
ファイル: htsrevoke.py プロジェクト: Goblab/evalimine
    def __kylm_tyhistamine(self, input_list, good_list, bad_list, action_list):
        for el in input_list:
            code = el[0]
            if not self.haaletanud(code):
                bad_list.append(el)
                evlog.log_error("Isik koodiga %s ei ole hääletanud" % code)
                continue

            user_key = htscommon.get_user_key(code)
            vc = htscommon.VoteCounter()
            valid_key = ""

            for vote_file in self._reg.list_keys(user_key):
                if htscommon.VALID_VOTE_PATTERN.match(vote_file):
                    vc.inc_valid()
                    valid_key = vote_file
                elif htscommon.USERREVOKED_VOTE_PATTERN.match(vote_file):
                    vc.inc_userrevoked()
                elif htscommon.AUTOREVOKED_VOTE_PATTERN.match(vote_file):
                    pass
                elif htscommon.REVOKE_REASON_PATTERN.match(vote_file):
                    pass
                elif htscommon.VOTE_VERIFICATION_ID_FILENAME == vote_file:
                    pass
                else:
                    vc.inc_unknown()

            if vc.valid() > 1:
                self._errmsg = "Serveri andmestruktuurid ei ole kooskõlalised"
                raise Exception(self._errmsg)

            if (vc.valid() == 0) or (vc.userrevoked() > 0):
                bad_list.append(el)
                evlog.log_error("Kasutaja isikukoodiga %s hääl on juba tühistatud" % code)

            if vc.unknown() > 0:
                self._errmsg = "Tundmatu viga häälte tühistamisel"
                raise Exception(self._errmsg)

            if vc.valid() == 1:
                revoked_key = htscommon.change_votefile_name(valid_key, htscommon.BUSERREVOKED)
                act = ActionInfo()
                act.set_old_name(self._reg.path(user_key + [valid_key]))
                act.set_new_name(self._reg.path(user_key + [revoked_key]))
                act.set_reason_name(self._reg.path(user_key))
                act.set_timestamp(htscommon.get_votefile_time(valid_key))
                act.set_code(el[0])
                act.set_name(el[1])
                act.set_reason(el[2])
                good_list.append(el)
                action_list.append(act)
コード例 #13
0
    def revoke_vote(self, revline, operator):
        timest = self.get_latest_vote(revline[0])
        nowstr = time.strftime("%Y%m%d%H%M%S", time.localtime())
        self._reg.create_string_value(\
            htscommon.get_user_key(revline[0]), 'reason', \
            "%s\t%s" % (nowstr, revline[2]))

        self._revlog.log_info(tegevus='tühistamine',
                              testtime=nowstr,
                              isikukood=revline[0],
                              nimi=revline[1],
                              timestamp=timest,
                              operaator=operator,
                              pohjus=revline[2])
コード例 #14
0
    def get_latest_vote(self, pc):
        user_key = htscommon.get_user_key(pc)
        if self._reg.check(user_key):
            files = self._reg.list_keys(user_key)
            votes = []
            for el in files:
                if htscommon.VALID_VOTE_PATTERN.match(el):
                    votes.append(el)
            votes.sort()
            latest = votes.pop()
            if latest:
                return htscommon.get_votefile_time(latest)

        return None
コード例 #15
0
ファイル: htsbase.py プロジェクト: Augustyn/evalimine
    def get_latest_vote(self, pc):
        user_key = htscommon.get_user_key(pc)
        if self._reg.check(user_key):
            files = self._reg.list_keys(user_key)
            votes = []
            for el in files:
                if htscommon.VALID_VOTE_PATTERN.match(el):
                    votes.append(el)
            votes.sort()
            latest = votes.pop()
            if latest:
                return htscommon.get_votefile_time(latest)

        return None
コード例 #16
0
ファイル: htsbase.py プロジェクト: Augustyn/evalimine
    def revoke_vote(self, revline, operator):
        timest = self.get_latest_vote(revline[0])
        nowstr = time.strftime("%Y%m%d%H%M%S", time.localtime())
        self._reg.create_string_value(
            htscommon.get_user_key(revline[0]), 'reason',
            "%s\t%s" % (nowstr, revline[2]))

        self._revlog.log_info(
            tegevus='tühistamine',
            testtime=nowstr,
            isikukood=revline[0],
            nimi=revline[1],
            timestamp=timest,
            operaator=operator,
            pohjus=revline[2])
コード例 #17
0
    def get_vote_for_result(self, logline, fname):
        res = None
        try:
            elems = logline.split('\t')
            code = elems[6]
            user_key = htscommon.get_user_key(code)
            fn = self._reg.path(user_key + [fname])
            bdoc = htsbase.get_vote(fn)
            if bdoc:
                haal = bdoc.documents["%s.evote" % self._elid]
                voter = htscommon.get_logline_voter(logline)
                b64haal = base64.b64encode(haal).strip()
                res = [voter['jaoskond_omavalitsus'], voter['jaoskond'], \
                    voter['ringkond_omavalitsus'], voter['ringkond'], b64haal]
        except:
            evlog.log_exception()

        return res
コード例 #18
0
    def __load_bdoc(self, elid):
        voter_key = htscommon.get_user_key(self._voter_code)
        sreg = Election().get_sub_reg(elid)
        for votefile in sreg.list_keys(voter_key):
            if htscommon.VALID_VOTE_PATTERN.match(votefile):
                bdoc = bdocpythonutils.BDocContainer()
                bdoc.load(sreg.path(voter_key + [votefile]))
                bdoc.validate(bdocpythonutils.ManifestProfile("TM"))

                self._voter = htscommon.get_votefile_voter(votefile)
                break

        if not bdoc:
            evlog.log_error("No valid BDOC found for voter %s using vote ID %s" % \
                    (self._voter, self._vote_id))
            raise HTSVerifyException, evcommon.VERIFY_ERROR

        return bdoc
コード例 #19
0
def _revoke_vote_id(voter_code):
    elec = Election()
    otps = set()
    for quest in elec.get_questions():
        reg = elec.get_sub_reg(quest)
        key = htscommon.get_user_key(voter_code)
        if reg.check(key + [htscommon.VOTE_VERIFICATION_ID_FILENAME]):
            otp = reg.read_string_value(key, \
                    htscommon.VOTE_VERIFICATION_ID_FILENAME)
            otps.add(otp.value)
            evlog.log("Revoking vote ID %s" % otp)
            if not _delete_vote_id(otp.value):
                evlog.log_error("No such vote-ID: %s" % otp)
            otp.delete()

    if len(otps) > 1:
        evlog.log_error("The voter %s had multiple vote ID-s: %s" % \
                (voter_code, ", ".join(otps)))
コード例 #20
0
ファイル: hts.py プロジェクト: Augustyn/evalimine
    def get_vote_for_result(self, logline, fname):
        res = None
        try:
            elems = logline.split('\t')
            code = elems[6]
            user_key = htscommon.get_user_key(code)
            fn = self._reg.path(user_key + [fname])
            bdoc = htsbase.get_vote(fn)
            if bdoc:
                haal = bdoc.documents["%s.evote" % self._elid]
                voter = htscommon.get_logline_voter(logline)
                b64haal = base64.b64encode(haal).strip()
                res = [voter['jaoskond_omavalitsus'], voter['jaoskond'],
                    voter['ringkond_omavalitsus'], voter['ringkond'], b64haal]
        except:
            evlog.log_exception()

        return res
コード例 #21
0
    def __load_bdoc(self, elid):
        voter_key = htscommon.get_user_key(self._voter_code)
        sreg = Election().get_sub_reg(elid)
        vote_files = []
        for vfile in sreg.list_keys(voter_key):
            if htscommon.VALID_VOTE_PATTERN.match(vfile):
                vote_files.append(vfile)

        vote_files.sort()
        latest = vote_files.pop()
        if latest:
            bdoc = htsbase.get_vote(sreg.path(voter_key + [latest]))

        if not bdoc:
            evlog.log_error("No valid BDOC found for voter %s using vote ID %s" % \
                    (self._voter_code, self._vote_id))
            raise HTSVerifyException, evcommon.VERIFY_ERROR

        return bdoc
コード例 #22
0
ファイル: htsall.py プロジェクト: Cougar/evalimine
    def __load_bdoc(self, elid):
        voter_key = htscommon.get_user_key(self._voter_code)
        sreg = Election().get_sub_reg(elid)
        vote_files = []
        for vfile in sreg.list_keys(voter_key):
            if htscommon.VALID_VOTE_PATTERN.match(vfile):
                vote_files.append(vfile)

        vote_files.sort()
        latest = vote_files.pop()
        if latest:
            bdoc = htsbase.get_vote(sreg.path(voter_key + [latest]))

        if not bdoc:
            evlog.log_error("No valid BDOC found for voter %s using vote ID %s" % \
                    (self._voter_code, self._vote_id))
            raise HTSVerifyException, evcommon.VERIFY_ERROR

        return bdoc
コード例 #23
0
ファイル: hts.py プロジェクト: 100dBsound/evalimine
    def __tyhista_korduv_haal(self, code, haale_rasi):

        user_key = htscommon.get_user_key(code)
        if not self._reg.check(user_key):
            return

        flist = self._reg.list_keys(user_key)
        for elem in flist:
            if htscommon.VALID_VOTE_PATTERN.match(elem):
                rev_name = htscommon.change_votefile_name(\
                    elem, htscommon.BAUTOREVOKED)
                old_name = self._reg.path(user_key + [elem])
                new_name = self._reg.path(user_key + [rev_name])

                bdoc = bdocpythonutils.BDocContainer()
                bdoc.load(old_name)
                profile = bdocpythonutils.ManifestProfile('TM')
                bdoc.validate(profile)

                vote = bdoc.documents["%s.evote" % self._elid]
                voter = htscommon.get_votefile_voter(elem)
                vote_time = htscommon.get_votefile_time(elem)

                # logimine
                self._log2.log_info(
                    tyyp=2,
                    haal_rasi=ksum.votehash(vote),
                    jaoskond=voter['jaoskond'],
                    jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
                    ringkond=voter['ringkond'],
                    ringkond_omavalitsus=voter['ringkond_omavalitsus'],
                    isikukood=code,
                    pohjus='korduv e-hääl: ' + haale_rasi)
                self._revlog.log_info(
                    tegevus='korduv e-hääl',
                    isikukood=code,
                    nimi=voter['nimi'],
                    timestamp=vote_time,
                    operaator='',
                    pohjus=haale_rasi)

                os.rename(old_name, new_name)
コード例 #24
0
    def __tyhista_korduv_haal(self, code, haale_rasi):

        user_key = htscommon.get_user_key(code)
        if not self._reg.check(user_key):
            return

        flist = self._reg.list_keys(user_key)
        for elem in flist:
            if htscommon.VALID_VOTE_PATTERN.match(elem):
                rev_name = htscommon.change_votefile_name(\
                    elem, htscommon.BAUTOREVOKED)
                old_name = self._reg.path(user_key + [elem])
                new_name = self._reg.path(user_key + [rev_name])

                bdoc = bdocpythonutils.BDocContainer()
                bdoc.load(old_name)
                profile = bdocpythonutils.ManifestProfile('TM')
                bdoc.validate(profile)

                vote = bdoc.documents["%s.evote" % self._elid]
                voter = htscommon.get_votefile_voter(elem)
                vote_time = htscommon.get_votefile_time(elem)

                # logimine
                self._log2.log_info(
                    tyyp=2,
                    haal_rasi=ksum.votehash(vote),
                    jaoskond=voter['jaoskond'],
                    jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
                    ringkond=voter['ringkond'],
                    ringkond_omavalitsus=voter['ringkond_omavalitsus'],
                    isikukood=code,
                    pohjus='korduv e-hääl: ' + haale_rasi)
                self._revlog.log_info(tegevus='korduv e-hääl',
                                      isikukood=code,
                                      nimi=voter['nimi'],
                                      timestamp=vote_time,
                                      operaator='',
                                      pohjus=haale_rasi)

                os.rename(old_name, new_name)
コード例 #25
0
    def talleta_haal(self, **args):

        # Hääle tühistamisel on põhjuseks
        # tühistamise põhjustanud hääle räsi
        haale_rasi = ksum.votehash(args['vote'])
        self.__tyhista_korduv_haal(args['signercode'], haale_rasi)
        user_key = htscommon.get_user_key(args['signercode'])
        self._reg.ensure_key(user_key)
        voter = args['valija']
        vote_file = htscommon.valid_votefile_name(args['timestamp'], voter)
        user_key.append(vote_file)
        filename = self._reg.path(user_key)

        try:
            _f = file(filename, 'w')
            fcntl.lockf(_f, fcntl.LOCK_EX)
            _f.write(args['signedvote'])
            _f.flush()
            _f.close()
        except Exception, (errno, errstr):
            evlog.log_error("Faili '%s' kirjutamine nurjus" % filename)
            raise Exception(errno, errstr)
コード例 #26
0
ファイル: hts.py プロジェクト: 100dBsound/evalimine
    def talleta_haal(self, **args):

        # Hääle tühistamisel on põhjuseks
        # tühistamise põhjustanud hääle räsi
        haale_rasi = ksum.votehash(args['vote'])
        self.__tyhista_korduv_haal(args['signercode'], haale_rasi)
        user_key = htscommon.get_user_key(args['signercode'])
        self._reg.ensure_key(user_key)
        voter = args['valija']
        vote_file = htscommon.valid_votefile_name(args['timestamp'], voter)
        user_key.append(vote_file)
        filename = self._reg.path(user_key)

        try:
            _f = file(filename, 'w')
            fcntl.lockf(_f, fcntl.LOCK_EX)
            _f.write(args['signedvote'])
            _f.flush()
            _f.close()
        except Exception, (errno, errstr):
            evlog.log_error("Faili '%s' kirjutamine nurjus" % filename)
            raise Exception(errno, errstr)
コード例 #27
0
    def __handle_userrevoked(self, root, vote_file):

        code = root.split('/').pop()
        user_key = htscommon.get_user_key(code)

        fn = self._reg.path(user_key + [vote_file])

        bdoc = bdocpythonutils.BDocContainer()
        bdoc.load(fn)
        profile = bdocpythonutils.ManifestProfile('TM')
        bdoc.validate(profile)
        haal = bdoc.documents["%s.evote" % self._elid]

        voter = htscommon.get_votefile_voter(vote_file)
        pohjus = self._reg.read_string_value(user_key, 'reason').value
        self._log2.log_info(tyyp=2,
                            haal_rasi=ksum.votehash(haal),
                            jaoskond=voter['jaoskond'],
                            jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
                            ringkond=voter['ringkond'],
                            ringkond_omavalitsus=voter['ringkond_omavalitsus'],
                            isikukood=code,
                            pohjus=pohjus)
コード例 #28
0
ファイル: hts.py プロジェクト: 100dBsound/evalimine
    def __handle_userrevoked(self, root, vote_file):

        code = root.split('/').pop()
        user_key = htscommon.get_user_key(code)

        fn = self._reg.path(user_key + [vote_file])

        bdoc = bdocpythonutils.BDocContainer()
        bdoc.load(fn)
        profile = bdocpythonutils.ManifestProfile('TM')
        bdoc.validate(profile)
        haal = bdoc.documents["%s.evote" % self._elid]

        voter = htscommon.get_votefile_voter(vote_file)
        pohjus = self._reg.read_string_value(user_key, 'reason').value
        self._log2.log_info(
            tyyp=2,
            haal_rasi=ksum.votehash(haal),
            jaoskond=voter['jaoskond'],
            jaoskond_omavalitsus=voter['jaoskond_omavalitsus'],
            ringkond=voter['ringkond'],
            ringkond_omavalitsus=voter['ringkond_omavalitsus'],
            isikukood=code,
            pohjus=pohjus)
コード例 #29
0
    def issue_vote_id(self):
        vote_id = self.__create_vote_key()
        rreg = Election().get_root_reg()
        key = htscommon.get_verification_key(vote_id)

        rreg.create_string_value(key, "voter", self.signercode)
        rreg.create_integer_value(key, "timestamp", int(time.time()))
        rreg.create_integer_value(key, "count", \
                Election().get_verification_count())

        # Store the election IDs and include a backreference in the
        # corresponding questions' subregistries.
        elids = ""
        for elid in [quest[0] for quest in self.questions]:
            elids += elid + "\t"

            sreg = Election().get_sub_reg(elid)
            skey = htscommon.get_user_key(self.signercode)
            sreg.ensure_key(skey)
            sreg.create_string_value(skey, \
                    htscommon.VOTE_VERIFICATION_ID_FILENAME, vote_id)

        rreg.create_string_value(key, "elids", elids)
        return vote_id
コード例 #30
0
ファイル: htsbase.py プロジェクト: 100dBsound/evalimine
 def _haaletanud_konf(self, isikukood):
     user_key = htscommon.get_user_key(isikukood)
     return self._reg.check(user_key) and \
             len(self._reg.list_keys(user_key)) > 0
コード例 #31
0
ファイル: htsbase.py プロジェクト: Augustyn/evalimine
 def get_revoked_path(self, pc):
     user_key = htscommon.get_user_key(pc)
     return self._reg.path(user_key + ['reason'])
コード例 #32
0
 def get_revoked_path(self, pc):
     user_key = htscommon.get_user_key(pc)
     return self._reg.path(user_key + ['reason'])