示例#1
0
def execute():
    _state = election.ElectionState().get()
    if _state == election.ETAPP_TYHISTUS:
        qlist = election.Election().get_questions()
        for el in qlist:
            print el
            htsdisp.start_revocation(el)
    elif _state == election.ETAPP_LUGEMINE:
        qlist = election.Election().get_questions()
        for el in qlist:
            print el
            htsdisp.start_tabulation(el)
    else:
        pass
示例#2
0
    def init_hts(self):
        import htscommon

        election.Election().get_root_reg().ensure_key(\
                htscommon.get_verification_key())
        self.__quest.create_keys(G_HTS_KEYS)
        self.__quest.create_revlog()
示例#3
0
def validate_form(form, required):
    try:
        logline = ''
        invalid = get_invalid_keys(form, required)
        if len(invalid) != 0:
            logline = 'Invalid form: '
            for el in invalid:
                if len(el) == 2:
                    logline = ("%skey - %s, reason - %s;" %
                               (logline, el[0], REASONS[el[1]]))
                elif len(el) == 3:
                    logline = ("%skey - %s, reason - %s, extra - %s" %
                               (logline, el[0], REASONS[el[1]], el[2][:200]))
                else:
                    logline = "%sinternal error" % logline
            return False, logline

        if evcommon.POST_EVOTE in required:
            return validate_vote(form.getvalue(evcommon.POST_EVOTE),
                                 election.Election().get_questions())

        return True, logline
    except:
        logline = ('Invalid form: key - exception, reason - %s' %
                   exception_msg.trace())
        return False, logline
示例#4
0
def execute(ex_elid, ex_type, ex_descr):

    creat = ElectionCreator()

    creat.prepare(ex_elid, ex_type, ex_descr)

    if election.Election().is_hes():
        creat.init_hes()
    elif election.Election().is_hts():
        creat.init_hts()
    elif election.Election().is_hlr():
        creat.init_hlr()
    else:
        raise Exception('Serveri tüüp määramata')

    creat.init_done()
    print 'Lõpetasin töö edukalt'
示例#5
0
def purge_otps():
    runtime = int(time.time())
    AppLog().set_app("purgeotps.py")
    AppLog().log("Purging expired vote ID's as of %s: START" % \
            time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(runtime)))
    try:
        reg = election.Election().get_root_reg()
        timeout = election.Election().get_verification_time() * 60
        for otp in reg.list_keys(htscommon.get_verification_key()):
            otp_key = htscommon.get_verification_key(otp)
            created = reg.read_integer_value(otp_key, "timestamp").value
            if created + timeout < runtime:
                AppLog().log("Purging expired vote ID %s" % otp)
                purge_otp(otp_key)
    except:
        AppLog().log_exception()
    finally:
        AppLog().log("Purging expired vote ID's: DONE")
示例#6
0
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)
示例#7
0
def _execute_prepare_stop():
    import datetime

    if election.ElectionState().election_on():
        election.Election().refuse_new_voters()
        sched = scheduled(COMMAND_PREPARE_STOP)
        minutes = stop_grace_period()
        if not sched or not minutes:
            return
        _, time = sched

        dt = datetime.datetime.strptime(time, TIME_FORMAT)
        dt += datetime.timedelta(minutes=minutes)
        schedule(COMMAND_STOP, dt.timetuple())
示例#8
0
def do_cgi():
    try:
        elec = election.Election()
        evlog.AppLog().set_app(APP)

        # Create a list of pairs from the form parameters. Don't use a dictionary
        # because that will overwrite recurring keys.
        form = cgi.FieldStorage()
        params = []
        for key in form:
            for value in form.getlist(key):
                params.append((key, value))

        # Only accept up to a single parameter
        if len(params) > 1:
            def keys(pairs):
                """Return a comma-separated list of the keys."""
                return ", ".join([pair[0] for pair in pairs])

            evlog.log_error("Too many query parameters: " + keys(params))
            bad_parameters()
            return

        # Only accept the POST_VERIFY_VOTE parameter.
        if len(params) and params[0][0] != evcommon.POST_VERIFY_VOTE:
            evlog.log_error("Unknown query parameter \"%s\"" % params[0][0])
            bad_parameters()
            return

        # Make sure the parameter is correctly formatted.
        if not formatutil.is_vote_verification_id(params[0][1]):
            # Don't write to disk; we don't know how large the value is
            evlog.log_error("Malformed vote ID")
            bad_parameters()
            return

        evlog.log("verif/auth REMOTE_ADDR: " + evlogdata.get_remote_ip())
        evlog.log("verif/auth VOTE-ID: " + params[0][1])

        params.append((evcommon.POST_SESS_ID, sessionid.voting()))

        url = "http://" + elec.get_hts_ip() + "/" + elec.get_hts_verify_path()
        conn = urllib.urlopen(url, urllib.urlencode(params))
        protocol.http_response(conn.read())
    except:
        evlog.log_exception()
        technical_error()
示例#9
0
os.umask(007)

APP = "hes-verify-vote.cgi"


def bad_parameters():
    protocol.http_response(evcommon.VERSION + "\n" + \
            evcommon.VERIFY_ERROR + "\n" + \
            evmessage.EvMessage().get_str("BAD_PARAMETERS", \
                evstrings.BAD_PARAMETERS))
    cgi.sys.exit(0)


if not evcommon.testrun():
    elec = election.Election()
    AppLog().set_app(APP)

    # Create a list of pairs from the form parameters. Don't use a dictionary
    # because that will overwrite recurring keys.
    form = cgi.FieldStorage()
    params = []
    for key in form:
        for value in form.getlist(key):
            params.append((key, value))

    # Only accept up to a single parameter
    if len(params) > 1:

        def keys(pairs):
            """Return a comma-separated list of the keys."""
示例#10
0
 def init_done(self):  # pylint: disable=R0201
     election.ElectionState().init()
     election.Election().init_conf_done()
示例#11
0
 def prepare(self, ex_elid, ex_type, ex_descr):
     election.create_registry()
     election.Election().init_keys()
     self.__quest = election.Election().new_question(\
             ex_elid, ex_type, ex_descr)
示例#12
0
            if cgivalidator.validate_sessionid(form):
                sessionid.setsid(form.getvalue(evcommon.POST_SESS_ID))

            res, logline = cgivalidator.validate_form(form, req_params)
            if res:
                cgilog.do_log('vote/auth')
                result = hesd.hts_vote(form.getvalue(evcommon.POST_EVOTE))
            else:
                cgilog.do_log_error('vote/auth/err')
                evlog.log_error(logline)
        else:
            req_params = []
            res, logline = cgivalidator.validate_form(form, req_params)
            if res:
                cgilog.do_log('cand/auth')
                if election.Election().allow_new_voters():
                    result = hesd.get_candidate_list()
                else:
                    evlog.log_error('nonewvoters')
                    a, b = protocol.plain_error_election_off_after()
                    result = protocol.msg_error(a, b)
            else:
                cgilog.do_log_error('cand/auth/err')
                evlog.log_error(logline)
    except:
        evlog.log_exception()
        result = protocol.msg_error_technical()

    protocol.http_response(result)
    cgi.sys.exit(0)
示例#13
0
    elid = sys.argv[1]
    infile = sys.argv[2]

    p_time = "00:00:00"
    evlog.AppLog().set_app('HTS', elid)

    tmp_f = None
    try:
        try:
            s_time = time.time()
            evlog.AppLog().log(
                'Tühistus-/ennistusnimekirja laadimine: ALGUS')

            bdocpython.initialize()
            bconf = bdocconfig.BDocConfig()
            bconf.load(election.Election().get_bdoc_conf())
            result = regrights.kontrolli_volitusi(elid, infile, 'TYHIS', bconf)
            if not result[0]:
                errmsg = 'Tühistus-/ennistusnimekirja volituste ' \
                               'kontroll andis negatiivse tulemuse: '
                errmsg += result[1]
                raise Exception(errmsg)
            _signercode = result[2]

            tmp_f = bdocpythonutils.get_doc_content_file(infile)

            all_, res_a, res_u = restore_revoke(elid, tmp_f, _signercode)
            p_time = time.strftime("%H:%M:%S",
                    time.gmtime(long(time.time() - s_time)))

            print 'Tühistamine/ennistamine'
示例#14
0
    def __init__(self):
        self._election = election.Election()

        self._gen_and_set_candidates()
        self.gen_ballots(self.filename)
        self._set_reported_results()
示例#15
0
    def __init__(self):
        self._election = election.Election()

        self._gen_and_set_candidates()
        self._set_reported_results()
示例#16
0
 def __init__(self, bot):
     self.__bot = bot
     self.schedstop = threading.Event()
     self.schedthread = threading.Thread(target=self.timer)
     self.schedthread.start()
     self.__bot.add_cog(election.Election(self.__bot))