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 0000000..c1a067c Binary files /dev/null and b/print/templates/machineidanonymous.glabels differ 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;