Browse Source

added install and postinstall scripts which were previously not in the repository, converted tabs to space sin stdd

Helmut Pozimski 9 years ago
parent
commit
f83c450aaf
3 changed files with 150 additions and 121 deletions
  1. 1 0
      debian/stdd.install
  2. 29 0
      debian/stdd.postinst
  3. 120 121
      stdd

+ 1 - 0
debian/stdd.install

@@ -0,0 +1 @@
+default/stdd /etc/default/

+ 29 - 0
debian/stdd.postinst

@@ -0,0 +1,29 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+    configure)
+	#create the stdd user if it's not already there
+	if ! getent passwd stdd >/dev/null; then
+		useradd stdd -d /home/stdd -r -s /bin/false -N -M || true
+		#add the user to the group i2c
+		usermod stdd -a -G i2c || true
+	fi
+	;;
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+

+ 120 - 121
stdd

@@ -22,42 +22,42 @@ from adafruit_7segment.Adafruit_7Segment import SevenSegment
 """Create the OptionParser object, define and parse all options and
 parameters, only 3 are currently defined:
 
-	* --daemon (shall stdd be run as daemon)
-	* --user (user to change to)
-	* --group (group to change to)
-	* --config (path to configuration file)
+    * --daemon (shall stdd be run as daemon)
+    * --user (user to change to)
+    * --group (group to change to)
+    * --config (path to configuration file)
 
 """
 parser = OptionParser(prog="stdd", version="%prog 0.9.1", add_help_option=True)
 parser.add_option("-d", "--daemon", action="store_true", dest="daemon",
-	help="run stdd as daemon")
+                  help="run stdd as daemon")
 parser.add_option("-u", "--user", dest="user", help="define an unprivileged \
-	user to run the daemon")
+    user to run the daemon")
 parser.add_option("-g", "--group", dest="group", help="define an unprivileged\
-	group to run the daemon")
+    group to run the daemon")
 parser.add_option("-c", "--config", dest="config", help="define an\
-	alternative path to the configuration file")
+    alternative path to the configuration file")
 (options, arguments) = parser.parse_args()
 
 """ define a sighandler to properly catch signals """
 
 
 def sighandler(signum, frame):
-	if signum == 2:
-		logger.info("received SIGINT, stopping daemon")
-	elif signum == 15:
-		logger.info("received SIGTERM, stopping daemon")
-	display.writeDigit(0, 0)
-	display.writeDigit(1, 0)
-	display.writeDigit(3, 0)
-	display.writeDigit(4, 0)
-	if options.daemon is True:
-		if daemon.Stop() is True:
-			sys.exit(0)
-		else:
-			logger.error("stopping daemon failed, PID file was not deleted!")
-			sys.exit(1)
-	sys.exit(0)
+    if signum == 2:
+        logger.info("received SIGINT, stopping daemon")
+    elif signum == 15:
+        logger.info("received SIGTERM, stopping daemon")
+    display.writeDigit(0, 0)
+    display.writeDigit(1, 0)
+    display.writeDigit(3, 0)
+    display.writeDigit(4, 0)
+    if options.daemon is True:
+        if daemon.Stop() is True:
+            sys.exit(0)
+        else:
+            logger.error("stopping daemon failed, PID file was not deleted!")
+            sys.exit(1)
+    sys.exit(0)
 
 """ create the configuration object according to the given parameters and
 read the file itself
@@ -69,9 +69,9 @@ signal.signal(signal.SIGINT, sighandler)
 
 config = stddlib.configuration.Conf()
 if options.config is not None:
-	config.Read(options.config)
+    config.Read(options.config)
 else:
-	config.Read()
+    config.Read()
 config.Analyze()
 
 
@@ -80,67 +80,66 @@ config.Analyze()
 logger = logging.getLogger("stdd")
 
 if config.syslog_level == "debug":
-	logger.setLevel(logging.DEBUG)
+    logger.setLevel(logging.DEBUG)
 elif config.syslog_level == "error":
-	logger.setLevel(logging.ERROR)
+    logger.setLevel(logging.ERROR)
 else:
-	logger.setLevel(logging.INFO)
+    logger.setLevel(logging.INFO)
 
 if config.syslog_facility == "user":
-	syslog_handler = logging.handlers.SysLogHandler("/dev/log")
+    syslog_handler = logging.handlers.SysLogHandler("/dev/log")
 elif config.syslog_facility == "daemon":
-	syslog_handler = logging.handlers.SysLogHandler("/dev/log",
-		facility=logging.handlers.SysLogHandler.LOG_DAEMON)
+    syslog_handler = logging.handlers.SysLogHandler("/dev/log",facility=logging.handlers.SysLogHandler.LOG_DAEMON)
 console_handler = logging.StreamHandler()
 
 formatter = logging.Formatter("%(name)s[" + str(os.getpid()) +
-		"]: %(message)s")
+        "]: %(message)s")
 
 syslog_handler.setFormatter(formatter)
 console_handler.setFormatter(formatter)
 
 if options.daemon is True:
-	logger.addHandler(syslog_handler)
+    logger.addHandler(syslog_handler)
 else:
-	logger.addHandler(console_handler)
+    logger.addHandler(console_handler)
 
 if options.daemon is True:
-	if os.access("/run", os.F_OK & os.W_OK) is True:
-		daemon = stddlib.daemon.Daemon("/run", "stdd")
-	else:
-		daemon = stddlib.daemon.Daemon("/var/run", "stdd")
-	daemon.Daemonize()
-	daemon.Start()
-	logger.info("daemon started")
-	cmdline = ""
-	cmdcounter = 0
-	for element in sys.argv:
-		if cmdcounter > 0:
-			cmdline = cmdline + " " + element
-		else:
-			cmdline = cmdline + element
-		cmdcounter = cmdcounter + 1
-	daemon.SetName("stdd", cmdline)
-	if options.user is not None and options.group is not None:
-		""" To determine the user and group id, use the passwd
-		and group files
-
-		"""
-		passwd = open("/etc/passwd", "r")
-		group = open("/etc/group", "r")
-		for line in passwd:
-			if options.user in line:
-				uid = line.split(":")[2]
-				break
-		for line in group:
-			if options.group in line:
-				gid = line.split(":")[2]
-				break
-		passwd.close()
-		group.close()
-		daemon.DropPriv(int(uid), int(gid))
-		logger.debug("dropped privileges, now running as " + options.user +
-			" and group" + options.group)
+    if os.access("/run", os.F_OK & os.W_OK) is True:
+        daemon = stddlib.daemon.Daemon("/run", "stdd")
+    else:
+        daemon = stddlib.daemon.Daemon("/var/run", "stdd")
+    daemon.Daemonize()
+    daemon.Start()
+    logger.info("daemon started")
+    cmdline = ""
+    cmdcounter = 0
+    for element in sys.argv:
+        if cmdcounter > 0:
+            cmdline = cmdline + " " + element
+        else:
+            cmdline = cmdline + element
+        cmdcounter = cmdcounter + 1
+    daemon.SetName("stdd", cmdline)
+    if options.user is not None and options.group is not None:
+        """ To determine the user and group id, use the passwd
+        and group files
+
+        """
+        passwd = open("/etc/passwd", "r")
+        group = open("/etc/group", "r")
+        for line in passwd:
+            if options.user in line:
+                uid = line.split(":")[2]
+                break
+        for line in group:
+            if options.group in line:
+                gid = line.split(":")[2]
+                break
+        passwd.close()
+        group.close()
+        daemon.DropPriv(int(uid), int(gid))
+        logger.debug("dropped privileges, now running as " + options.user +
+            " and group" + options.group)
 
 """Initialize the display object"""
 display = SevenSegment(config.hw_address)
@@ -149,62 +148,62 @@ logger.debug("opened hardware address")
 """Set the brightness according to the configuration"""
 if datetime.datetime.now().time() > config.set_brightness_high and \
 datetime.datetime.now().time() < config.set_brightness_low:
-	logger.debug("setting display brightness high")
-	display.setBrightness(config.brightness_high)
+    logger.debug("setting display brightness high")
+    display.setBrightness(config.brightness_high)
 else:
-	logger.debug("setting display brightness low")
-	display.setBrightness(config.brightness_low)
+    logger.debug("setting display brightness low")
+    display.setBrightness(config.brightness_low)
 
 """Define the main loop"""
 
 
 def main():
-	minute_written = 61
-	while True:
-		date_now = datetime.datetime.now()
-		logger.debug("got datetime: " + str(date_now))
-		minute = date_now.minute
-		hour = date_now.hour
-		if config.blink_colon is True:
-			logger.debug("blinking middle colon")
-			display.setColon(date_now.second % 2)
-		else:
-			display.setColon(True)
-		"""set the display brightness high or low when the point in time defined
-		is reached
-
-		"""
-		if config.set_brightness_low.hour == hour:
-			if config.set_brightness_low.minute == minute:
-				logger.debug("setting display brightness low")
-				display.setBrightness(config.brightness_low)
-		if config.set_brightness_high.hour == hour:
-			if config.set_brightness_high.minute == minute:
-				logger.debug("setting display brightness high")
-				display.setBrightness(config.brightness_high)
-		if minute_written != minute:
-			try:
-				position2 = str(hour)[1]
-			except IndexError:
-				position2 = str(hour)[0]
-				position1 = "0"
-
-			else:
-				position1 = str(hour)[0]
-			try:
-				position4 = str(minute)[1]
-			except IndexError:
-				position4 = str(minute)[0]
-				position3 = "0"
-			else:
-				position3 = str(minute)[0]	
-			logger.debug("writing time to display")
-			display.writeDigit(0, int(position1))
-			display.writeDigit(1, int(position2))
-			display.writeDigit(3, int(position3))
-			display.writeDigit(4, int(position4))
-			minute_written = minute
-		time.sleep(1)
+    minute_written = 61
+    while True:
+        date_now = datetime.datetime.now()
+        logger.debug("got datetime: " + str(date_now))
+        minute = date_now.minute
+        hour = date_now.hour
+        if config.blink_colon is True:
+            logger.debug("blinking middle colon")
+            display.setColon(date_now.second % 2)
+        else:
+            display.setColon(True)
+        """set the display brightness high or low when the point in time defined
+        is reached
+
+        """
+        if config.set_brightness_low.hour == hour:
+            if config.set_brightness_low.minute == minute:
+                logger.debug("setting display brightness low")
+                display.setBrightness(config.brightness_low)
+        if config.set_brightness_high.hour == hour:
+            if config.set_brightness_high.minute == minute:
+                logger.debug("setting display brightness high")
+                display.setBrightness(config.brightness_high)
+        if minute_written != minute:
+            try:
+                position2 = str(hour)[1]
+            except IndexError:
+                position2 = str(hour)[0]
+                position1 = "0"
+
+            else:
+                position1 = str(hour)[0]
+            try:
+                position4 = str(minute)[1]
+            except IndexError:
+                position4 = str(minute)[0]
+                position3 = "0"
+            else:
+                position3 = str(minute)[0]
+            logger.debug("writing time to display")
+            display.writeDigit(0, int(position1))
+            display.writeDigit(1, int(position2))
+            display.writeDigit(3, int(position3))
+            display.writeDigit(4, int(position4))
+            minute_written = minute
+        time.sleep(1)
 
 if __name__ == "__main__":
-	main()
+    main()