예제 #1
0
def downloadFile(url, file_name):
    
    lib_log.log("downloading " + url)
    
    f = urllib.request.urlretrieve(url, file_name, _reporthook)
    
    lib_log.log("download successful")
예제 #2
0
def login(voornaam, achternaam, wachtwoord):
    # Controleerd of de inloggegevens correct zijn.

    # Voer een query uit om uit te zoeken of de opgegeven voornaam en achternaam bestaan in de database.
    cursor.execute(
        "SELECT * FROM MEDEWERKER WHERE voornaam = %s AND achternaam = %s;", (voornaam, achternaam))

    # Sla de resultaten op in "values".
    values = list(cursor)

    # Haal de kolommen op uit tabel MEDEWERKER.
    cursor.execute("SHOW columns FROM MEDEWERKER;")

    # S;a de resultaten van de vorige query op in ""columns".
    columns = list(cursor)

    # Voor iedere rij in "values".
    for row in values:
        # Controleer of de hash van het ingevoerde wachtwoord overeenkomt met de hash in de database van een van de gebruikers.
        if verify_password(row[3], wachtwoord):
            # Indien het lukt sla in het log op dat het gelukt is.
            log('LOGIN', "Succesvolle aanmelding voor: " + voornaam + " " + achternaam)

            # Geef de informatie van de ingelogde gebruiker door.
            return {columns[index][0]: value for index, value in enumerate(row)}

    # Sla op in het log dat het inloggen is mislukt.
    log('LOGIN', "Foutieve aanmelding voor: " + voornaam + " " + achternaam)

    # Indien er geen resultaten gevonden zijn return False.
    return False
예제 #3
0
 def login(self):
     log("ALGEMEEN", "[+] Succesvol opgestart!")
     loginresult = lib_database.login(self.lineEdit.text(
     ), self.lineEdit_2.text(), self.lineEdit_3.text())
     if loginresult:
         mainscreen = mainwindow.Ui_MainWindow(loginresult)
         mainscreen.setupUi(MainWindow)
     else:
         error("Incorrecte inloggegevens", "Een van de inloggegevens is incorrect!",
               "Controleert u alstublieft of alle ingevoerde gegevens correct zijn. Neem anders contact op met het ICT-servicedesk.")
예제 #4
0
def downloadAsString(url):
   
    lib_log.log("downloading " + url)
            
    # open URL
    socket = urllib.request.urlopen(url)
    # download page
    data = socket.read()
    # convert bytes to string
    data = str(data, 'utf-8')
    #close socket
    socket.close()
    
    lib_log.log("download successful")
     
    return data
예제 #5
0
def add_user(voornaam, achternaam, wachtwoord, functie_id, type_medewerker, mag_thuis, woonafstand, contracturen, uurtarief, manager_id):
    # Voegt een gebruiker toe aan het programma.

    # Bouw de query.
    query = "INSERT INTO `medewerker` (voornaam, achternaam, wachtwoord, functie_id, type_medewerker, mag_thuis, woonafstand, contracturen, uurtarief, manager_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"

    # Stel de parameters samen.
    parameters = (voornaam, achternaam, hash_password(wachtwoord), functie_id, type_medewerker,
                  mag_thuis, woonafstand, contracturen, uurtarief, manager_id)

    # Laat de parameters in de query zetten en voer de query uit.
    cursor.execute(query, parameters)

    # Maak de toevoeging definitief.
    database.commit()

    # Plaats een melding in het logbestand.
    log('GEBRUIKERSREGISTRATIE', "Succesvolle registratie voor: " + voornaam + " " + achternaam)
예제 #6
0
def retriveWebPageRelativeLink(url, regExpLinkPart, content_before_allowed=True, content_after_allowed=True):

    try:
            # retrieve Web page content
            data = downloadAsString(url)
            
            # extract the first regular expression result
            regexp = 'href="' + _build_regexp(regExpLinkPart, content_before_allowed, content_after_allowed, '[^"]*') + '"'
            res = lib_regex.getFirstRegExResult(data, regexp)
            
            # extract the first sub regular expression result
            regexp = '\"' + _build_regexp(regExpLinkPart) + '\"'
            nextRelativeUrl = lib_regex.getFirstRegExResult(res, regexp)
            
            # remove '"'
            nextRelativeUrl = re.split("\"", nextRelativeUrl)
            nextRelativeUrl = nextRelativeUrl[1]
            
            lib_log.log("Link fount:" + nextRelativeUrl);
            
            return nextRelativeUrl
            
    #handle errors
    except HTTPError as e:
            lib_log.log("HTTP Error:", e.code , url)
    except URLError as e:
            lib_log.log("URL Error:", e.reason , url)
예제 #7
0
def _reporthook(blocks_read, block_size, total_size):
    if not blocks_read:
        lib_log.log ('Connection opened')
        return
    if total_size < 0:
        # Unknown size
        lib_log.log ('Read %d blocks' % blocks_read)
    else:
        nb_blocks_total = total_size / block_size
        amount_read = blocks_read * block_size
        mod = int(blocks_read % (nb_blocks_total / 10))
        if (mod == 1):
            lib_log.log ('Read ' + "{0:.0f}% bytes".format(float(amount_read) / total_size * 100) 
                         + ' of ' + lib_format.filesizeformat(total_size))
    return
예제 #8
0
from lib_log import log

# Probeer om de "PyQt5"-module te importeren.
try:
    from PyQt5.QtWidgets import QMessageBox
except ImportError:
    # Plaats een melding in het logbestand en toon deze in de CLI.
    print(
        log(
            'MODULES',
            "Missende module: Python-module 'PyQt5' is vereist voor dit programma. Installeert u alstublieft de 'PyQt5'-module met het commando: 'pip install PyQt5'"
        ))
    exit()


def error(title, text, informativetext):
    msg = QMessageBox()
    msg.setIcon(QMessageBox.Warning)
    msg.setText(text)
    msg.setInformativeText(informativetext)
    msg.setWindowTitle(title)
    msg.setStandardButtons(QMessageBox.Ok)
    msg.exec_()
예제 #9
0
#!/usr/bin/env python3

import lib_download
import lib_tar
import lib_log
import lib_menu
import lib_install

import shutil
import os

domain = "http://tomcat.apache.org"
version = "70"
file = 'tomcat.tar.gz'
install_dir = os.getenv("HOME") + '/tools/tomcat'
lib_log.log('Download and install Tomcat ' + version + '...')

# retrieve Tomcat7 download page
download_page = lib_download.retriveWebPageRelativeLink(domain,  '/download.*' + version)
download_link = lib_download.retriveWebPageRelativeLink(domain + download_page, 'apache-tomcat.*\.tar\.gz', True, False)

# download archve
lib_download.downloadFile(download_link, file)

# untar archive
lib_install.untar_to(file, install_dir)
예제 #10
0
def wijzigingen_doorvoeren(changelog):
    # Deze functie wordt pas uitgevoerd wanneer de gebruiker op "Opslaan" klikt.
    # Slaat de ingevoerde gegevens op in de database. En werkt de tabel bij.
    if changelog != []:
        live = 1
        # Voor iedere "row" (iedere keer wanneer de visuele tabel wordt aangepast wordt  de verandering opgeslagen in "changelog").
        for row in changelog:
            tabel = str(row['table']).upper()
            # De primaire sleutel zit altijd in een kolom met als naam de naam van de tabel met daarachter "_id".
            primaire_sleutel = str(tabel.lower() + "_id")
            if row['type'] == 'toevoeging':
                row['data'].pop(primaire_sleutel, None)
            kolommen = list(row['data'].keys())
            waarden = list(row['data'].values())

            if row['type'] == "verwijdering":
                # Is handig voor het testen. Zo kunnen we de interne programmatuur van het programma testen zonder perongeluk onze database aan te passen.
                if live == 1:
                    cursor.execute("DELETE FROM " + tabel + " WHERE " +
                                   primaire_sleutel + " = " + row['data'][primaire_sleutel] + ";")
                    log('OPSLAAN', "Rij " + row['data'][primaire_sleutel] +
                        " is succesvol verwijderd uit tabel " + tabel)

                    # Speciale uitzondering voor de "DAG" tabel: Wanneer een dag verwijderd word dient ook de activiteiten van deze tabel verwijderd te worden.
                    if tabel == "DAG":
                        cursor.execute("DELETE FROM ACTIVITEITEN WHERE 'werkdag_id' " +
                                       " = " + row['data']['dag_id'] + ";")
                        log('OPSLAAN', "[-] Rij " + row['data']['dag_id'] +
                            " is succesvol verwijderd uit tabel ACTIVITEITEN.")
                    database.commit()

                else:
                    print("Verwijderen!")

            elif row['type'] == "toevoeging":
                # Is handig voor het testen. Zo kunnen we de interne programmatuur van het programma testen zonder perongeluk onze database aan te passen.
                if live == 1:

                    # De volgende code bouwt een INSTERT-INTO-query, de onderstaande regelscode doen niks meer dan het normaliseren van de query.
                    # Het zorgt ongeacht de grootte, het aantal rijen en waarden altijd een juiste INSERT-INTO-query.
                    query = "INSERT INTO " + tabel + " ("
                    for kolom in kolommen:
                        query += "`" + kolom + "`, "
                    query = query[:-2]
                    query += ") VALUES ("
                    for waarde in waarden:
                        query += "'" + waarde + "', "
                    query = query[:-2]
                    query += ");"
                    cursor.execute(query)
                    log('OPSLAAN', "[+] Rij " + str(cursor.lastrowid) +
                        " is succesvol toegevoegd aan tabel " + tabel)
                    database.commit()

                else:
                    print("Toevoegen!")

            elif row['type'] == "verandering":
                # Is handig voor het testen. Zo kunnen we de interne programmatuur van het programma testen zonder perongeluk onze database aan te passen.
                if live == 1:

                    # De volgende code bouwt een UPDATE-query, de onderstaande regelscode doen niks meer dan het normaliseren van de query.
                    # Het zorgt ongeacht de grootte, het aantal rijen en waarden altijd een juiste UPDATE-query.
                    query = "UPDATE " + tabel + " SET "

                    huidige_waarde = 0
                    for kolom in kolommen:
                        query += kolom + " = '" + waarden[huidige_waarde] + "', "
                        huidige_waarde += 1
                    query = query[:-2]
                    query += " WHERE " + primaire_sleutel + \
                        " = " + row['data'][primaire_sleutel] + ";"
                    cursor.execute(query)
                    log('OPSLAAN', "[|] Rij " + str(cursor.lastrowid) +
                        " is succesvol aangepast in tabel " + tabel)
                    database.commit()
                else:
                    print("Bijwerken!")

        changelog.clear()
예제 #11
0
# Interne python module om logs op te slaan.
from lib_log import log

# Interne python module om wachtwoorde te hashen.
from lib_password import hash_password, verify_password
from os import mkdir, startfile, path

# Interne python module om foutmeldingen te tonen.
from lib_error import error

# Probeer om de "mysql.connector"-module te importeren.
try:
    import mysql.connector
except ImportError:
    # Plaats een melding in het logbestand en toon deze in de CLI.
    print(log('MODULES', "[!] Missende module: Python-module 'mysql.connector' is vereist voor dit programma. Installeert u alstublieft de 'mysql.connector'-module met het commando: 'pip install mysql.connector'"))
    exit()

# Probeer om het "config.py"-bestand te importeren.
try:
    import config
except ImportError:
    # Plaats een melding in het logbestand en toon deze in de CLI.
    print(log('CONFIGURATIE',
              "[!] Configuratiebestand mist: Het configuratie bestand 'config.py' is vereist voor dit programma. Er zal een nieuw configuratie bestand aangemaakt worden."))
    exit()

if config.mysql['passwd'] == "":
    print(log('CONFIGURATIE',
              "[!] Configuratiebestand mist: Is nog niet volledig ingevuld. Past u deze alstublieft aan."))
    exit()
예제 #12
0
#!/usr/bin/env python3

import lib_download
import lib_tar
import lib_log
import lib_menu
import lib_install

import shutil
import os

domain = "http://maven.apache.org/download.html"
version = "3"
file = 'maven.tar.gz'
install_dir = os.getenv("HOME") + '/tools/maven'
lib_log.log('Download and install Maven ' + version + '...')

# retrieve download page
link_exp='apache-maven[^"]*' + version + '[^"]*bin[^"]*\.tar\.gz'
download_page = lib_download.retriveWebPageRelativeLink(domain,  link_exp, True, False)
download_link = lib_download.retriveWebPageRelativeLink(download_page, link_exp)

# download archve
lib_download.downloadFile(download_link, file)

# untar archive
lib_install.untar_to(file, install_dir)

# TODO, add env variables to /etc/profile :
# export MAVEN_HOME=$HOME/tools/maven/apache-maven-3.0.3
# export PATH=$PATH:$MAVEN_HOME/bin
예제 #13
0
import lib_download
import lib_tar
import lib_log
import lib_menu
import lib_install

import shutil
import os

domain = "http://www.eclipse.org"
version = "eclipse-modeling-tools"
os_target = "linux"
arch = "64"
file = "eclipse.tar.gz"
install_dir = os.getenv("HOME") + "/tools/eclipse"
lib_log.log("Download and install Eclipse " + version + " for " + os_target + " " + arch + "...")

# retrieve Eclipse Modeling download page from main download page
eclipseModelingToolRelativeUrl = lib_download.retriveWebPageRelativeLink(domain + "/downloads/", version)


# retrieve Linux 64 download page from Eclipse Modeling download page
link = lib_download.retriveWebPageRelativeLink(
    domain + "/" + eclipseModelingToolRelativeUrl, 'eclipse-modeling-[^"]*-' + os_target + '-[^"]*_' + arch
)

# go to the final download page
link = lib_download.retriveWebPageRelativeLink(link, 'download[^"]*mirror_id')

# download archve
lib_download.downloadFile(domain + "/downloads/" + link, file)
예제 #14
0
def untar(file_path, destination_path="."):
    lib_log.log("extract file '" + file_path + "'")
    tar = tarfile.open(file_path)
    tar.extractall(destination_path)
    tar.close()