def downloadFile(url, file_name): lib_log.log("downloading " + url) f = urllib.request.urlretrieve(url, file_name, _reporthook) lib_log.log("download successful")
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
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.")
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
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)
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)
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
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_()
#!/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)
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()
# 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()
#!/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
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)
def untar(file_path, destination_path="."): lib_log.log("extract file '" + file_path + "'") tar = tarfile.open(file_path) tar.extractall(destination_path) tar.close()