From de11c9c5502c747243d13b3883cdfa003bb43c3f Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Wed, 10 Jun 2020 11:21:41 -0600 Subject: [PATCH] Add machine ID label without 'property of' --- client-scripts/autoadd.py | 111 +++++++++++++++++++++ pages/printlabel.php | 8 +- print/print.php | 5 +- print/templates/machineidanonymous.glabels | Bin 0 -> 3823 bytes update.sql | 83 +++++++++++++++ 5 files changed, 205 insertions(+), 2 deletions(-) create mode 100755 client-scripts/autoadd.py create mode 100644 print/templates/machineidanonymous.glabels create mode 100644 update.sql diff --git a/client-scripts/autoadd.py b/client-scripts/autoadd.py new file mode 100755 index 0000000..3a50d92 --- /dev/null +++ b/client-scripts/autoadd.py @@ -0,0 +1,111 @@ +#!/usr/bin/python3 + +import subprocess + +def scanSystem(): + global serial, model, manufacturer, os + + serialfiles = ['/sys/class/dmi/id/product_serial', '/sys/class/dmi/id/chassis_serial', '/sys/class/dmi/id/board_serial'] + serial = findInfo(serialfiles, [], "system serial number") + + modelfiles = ['/sys/class/dmi/id/board_name', '/sys/class/dmi/id/product_name'] + model = findInfo(modelfiles, [], "system model") + + manufacturerfiles = ['/sys/class/dmi/id/board_vendor', '/sys/class/dmi/id/chassis_vendor', '/sys/class/dmi/id/product_vendor'] + manufacturer = findInfo(manufacturerfiles, [], "manufacturer") + + osfiles = ['/etc/issue.net'] + oscmds = ['/bin/bash -c "lsb_release -d | cut -c 14-"', + '/bin/bash -c "cat /etc/os-release | grep \\"PRETTY_NAME\\" | head -n 1 | cut -c 14- | sed \\"s/\\\\\\"//\\""', + '/bin/bash -c "cat /etc/issue | head -n 1 | sed \\"s/ \\\\\\\\\\\\n \\\\\\\\\\\\l//\\""'] + os = findInfo(osfiles, oscmds, "operating system") + + print("\nMachine Info:") + + print("\tSerial: " + serial) + print("\tModel: " + model) + print("\tManufacturer: " + manufacturer) + print("\tOS: " + os) + + print() + + promptUpload() + +def findInfo(filenames, commands, human_name): + bad_values = ["", "Default string", "Not Present", "None", "Not Specified", "Other", "UNKNOWN", "Unknown", "", "0x00000000", "To Be Filled By O.E.M.", "", "NO DIMM", "No Module Installed", "0123456789"] + items = [] + + for filename in filenames: + try: + with open(filename, 'r') as filefile: + value = str(filefile.read()).strip() + if value not in bad_values: + items.append(value) + except: + pass + + for command in commands: + try: + stdout = subprocess.check_output(command, shell=True) + value = stdout.decode().strip() + if value not in bad_values: + items.append(value) + except: + pass + + deduped = list(set(items)) + + if len(deduped) == 1: + return deduped[0] + elif len(deduped) > 1: + print("\nMultiple values found for the " + human_name + ":") + value = 1 + for item in deduped: + print("\t" + str(value) + ": " + item); + value += 1 + manual_entry = input("Choose an option or type a manual entry: ") + + try: + index = int(manual_entry) + if index - 1 < len(deduped): + return deduped[index - 1] + except ValueError: + pass + + return manual_entry.strip() + else: + manual_entry = input("No value found for the " + human_name + ". Enter one manually: ") + return manual_entry.strip() + +def upload(id, serial, model, manufacturer, os): + print(', '.join([id, serial, model, manufacturer, os])) + print("Uploading... (NOT IMPLEMENTED)") + print("Finished!") + +def promptUpload(): + q = input("Upload to MachineManager (u for update, r for rescan) (y/N/u/r)? ").lower() + if q == "y": + upload("", serial, model, manufacturer, os) + elif q == "u": + id = input("Enter machine ID to update: ") + if len(id.strip()) > 0: + upload(id.strip(), serial, model, manufacturer, os) + else: + print("Invalid machine ID.") + promptUpload() + elif q == "n": + print("Exiting.") + exit() + elif q == "r": + print("Rescanning system...") + scanSystem() + else: + print("Invalid selection.") + promptUpload() + +if (__name__ == "__main__"): + + print("MachineManager automatic machine uploader script v1.0") + print("Copyright (c) 2020 Netsyms Technologies") + + scanSystem() diff --git a/pages/printlabel.php b/pages/printlabel.php index 8fdbc56..92083de 100644 --- a/pages/printlabel.php +++ b/pages/printlabel.php @@ -26,6 +26,9 @@ if (!empty($VARS["labeltype"])) { case "doortag": $labeltype = "doortag"; break; + case "machineidanonymous": + $labeltype = "machineidanonymous"; + break; case "machineid": default: $labeltype = "machineid"; @@ -44,6 +47,9 @@ $pdfurl = "./print/print.php?labeltype=$labeltype&id=$machineid"; +
get("Go to machine"); ?> @@ -52,4 +58,4 @@ $pdfurl = "./print/print.php?labeltype=$labeltype&id=$machineid";
-
\ No newline at end of file +
diff --git a/print/print.php b/print/print.php index 78e318b..32541e9 100644 --- a/print/print.php +++ b/print/print.php @@ -29,6 +29,9 @@ switch ($VARS["labeltype"]) { case "doortag": $labeltype = "doortag"; break; + case "machineidanonymous": + $labeltype = "machineidanonymous"; + break; case "machineid": default: $labeltype = "machineid"; @@ -117,4 +120,4 @@ header('Accept-Ranges: bytes'); echo file_get_contents($pdffile); unlink($csvfile); -unlink($pdffile); \ No newline at end of file +unlink($pdffile); diff --git a/print/templates/machineidanonymous.glabels b/print/templates/machineidanonymous.glabels new file mode 100644 index 0000000000000000000000000000000000000000..c1a067c151ead486c7eea64459340bf05a316f88 GIT binary patch literal 3823 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 lWglN}-u(UVFvEUL?^G|N6{Uly7007W#c834} literal 0 HcmV?d00001 diff --git a/update.sql b/update.sql new file mode 100644 index 0000000..222dcc1 --- /dev/null +++ b/update.sql @@ -0,0 +1,83 @@ +/* +-- Query: +-- Date: 2020-05-14 20:59 +*/ +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (1,'Tested'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (2,'Sold'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (3,'Wiped'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (4,'Refunded'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (5,'Repaired'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (6,'Released to Owner'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (7,'Upgraded'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (8,'Received'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (9,'In Transit'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (10,'Picked Up'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (11,'Delivered'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (12,'Attempted'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (13,'Delayed'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (14,'Delivery Scheduled'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (15,'Note'); +INSERT INTO `event_types` (`eventid`,`eventname`) VALUES (16,'Other'); + + +-- MySQL Workbench Synchronization +-- Generated: 2020-06-02 22:54 +-- Model: New Model +-- Version: 1.0 +-- Project: Name of the project +-- Author: Skylar Ittner + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +ALTER TABLE `c1machinemanager`.`components` +ADD COLUMN `manufacturer` VARCHAR(255) NULL DEFAULT NULL AFTER `price`; + +CREATE TABLE IF NOT EXISTS `c1machinemanager`.`trackingcodes` ( + `trackid` INT(11) NOT NULL AUTO_INCREMENT, + `machineid` VARCHAR(20) NOT NULL, + `code` VARCHAR(255) NOT NULL, + `codetype` VARCHAR(255) NULL DEFAULT NULL, + PRIMARY KEY (`trackid`, `machineid`), + UNIQUE INDEX `trkid_UNIQUE` (`trackid` ASC), + INDEX `fk_trackingcodes_machines1_idx` (`machineid` ASC), + CONSTRAINT `fk_trackingcodes_machines1` + FOREIGN KEY (`machineid`) + REFERENCES `c1machinemanager`.`machines` (`machineid`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8; + +CREATE TABLE IF NOT EXISTS `c1machinemanager`.`containers` ( + `containerid` INT(11) NOT NULL AUTO_INCREMENT, + `barcode` VARCHAR(255) NULL DEFAULT NULL, + PRIMARY KEY (`containerid`), + UNIQUE INDEX `containerid_UNIQUE` (`containerid` ASC)) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8; + +CREATE TABLE IF NOT EXISTS `c1machinemanager`.`container_contents` ( + `containerid` INT(11) NOT NULL, + `machineid` VARCHAR(20) NOT NULL, + PRIMARY KEY (`containerid`, `machineid`), + INDEX `fk_containers_has_machines_machines1_idx` (`machineid` ASC), + INDEX `fk_containers_has_machines_containers1_idx` (`containerid` ASC), + CONSTRAINT `fk_containers_has_machines_containers1` + FOREIGN KEY (`containerid`) + REFERENCES `c1machinemanager`.`containers` (`containerid`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_containers_has_machines_machines1` + FOREIGN KEY (`machineid`) + REFERENCES `c1machinemanager`.`machines` (`machineid`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;