From e6e93f41ad6470be3811e594752e7695be8addec Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Sun, 25 Oct 2020 01:23:24 +0000 Subject: [PATCH 01/16] Switch to building an exe for Windows. --- .gitignore | 8 +++ build/build-exe-config.template.json | 77 +++++++++++++++++++++++++++ build/build-exe.bat | 10 ++++ build/generate-build-exe-config.py | 19 +++++++ build/icon.ico | Bin 0 -> 113764 bytes build/requirements-windows.txt | 2 + {install => build}/requirements.txt | 3 +- install/requirements-windows.txt | 1 - launch_standalone.py | 13 +++++ player.py | 36 +++++++------ server.py | 3 ++ 11 files changed, 154 insertions(+), 18 deletions(-) create mode 100644 build/build-exe-config.template.json create mode 100644 build/build-exe.bat create mode 100644 build/generate-build-exe-config.py create mode 100644 build/icon.ico create mode 100644 build/requirements-windows.txt rename {install => build}/requirements.txt (68%) delete mode 100644 install/requirements-windows.txt create mode 100644 launch_standalone.py diff --git a/.gitignore b/.gitignore index e84f8e1..e27003f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,11 @@ __pycache__/ state/ + +*.egg-info/ + +build/build-exe-config.json + +*.exe + +*.pyo diff --git a/build/build-exe-config.template.json b/build/build-exe-config.template.json new file mode 100644 index 0000000..2ac7d21 --- /dev/null +++ b/build/build-exe-config.template.json @@ -0,0 +1,77 @@ +{ + "version": "auto-py-to-exe-configuration_v1", + "pyinstallerOptions": [ + { + "optionDest": "noconfirm", + "value": true + }, + { + "optionDest": "filenames", + "value": "../launch_standalone.py" + }, + { + "optionDest": "onefile", + "value": true + }, + { + "optionDest": "console", + "value": true + }, + { + "optionDest": "icon_file", + "value": "\\icon.ico" + }, + { + "optionDest": "name", + "value": "BAPSicle" + }, + { + "optionDest": "ascii", + "value": false + }, + { + "optionDest": "clean_build", + "value": true + }, + { + "optionDest": "strip", + "value": false + }, + { + "optionDest": "noupx", + "value": false + }, + { + "optionDest": "uac_admin", + "value": true + }, + { + "optionDest": "uac_uiaccess", + "value": false + }, + { + "optionDest": "win_private_assemblies", + "value": false + }, + { + "optionDest": "win_no_prefer_redirects", + "value": false + }, + { + "optionDest": "bootloader_ignore_signals", + "value": false + }, + { + "optionDest": "datas", + "value": "\\templates;templates/" + }, + { + "optionDest": "datas", + "value": "\\ui-static;ui-static/" + } + ], + "nonPyinstallerOptions": { + "increaseRecursionLimit": false, + "manualArguments": "" + } +} \ No newline at end of file diff --git a/build/build-exe.bat b/build/build-exe.bat new file mode 100644 index 0000000..a494ff4 --- /dev/null +++ b/build/build-exe.bat @@ -0,0 +1,10 @@ +cd /D "%~dp0" +pip install -r requirements.txt +pip install -r requirements-windows.txt +pip install -e ..\ + +python generate-build-exe-config.py + +auto-py-to-exe -c build-exe-config.json -o ./ + +TIMEOUT 5 \ No newline at end of file diff --git a/build/generate-build-exe-config.py b/build/generate-build-exe-config.py new file mode 100644 index 0000000..b84a501 --- /dev/null +++ b/build/generate-build-exe-config.py @@ -0,0 +1,19 @@ +import json +import os + +dir_path = os.path.dirname(os.path.realpath(__file__)) +parent_path = os.path.dirname(dir_path) + +in_file = open('build-exe-config.template.json', 'r') +config = json.loads(in_file.read()) +in_file.close() + +for option in config["pyinstallerOptions"]: + if option["optionDest"] == "icon_file": + option["value"] = dir_path + option["value"] + if option["optionDest"] == "datas": + option["value"] = parent_path + option["value"] + +out_file = open('build-exe-config.json', 'w') +out_file.write(json.dumps(config, indent=2)) +out_file.close() diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..240c4fda6c92f377c615b05c2e44ec07214ac7c6 GIT binary patch literal 113764 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 literal 0 HcmV?d00001 diff --git a/build/requirements-windows.txt b/build/requirements-windows.txt new file mode 100644 index 0000000..8af44a0 --- /dev/null +++ b/build/requirements-windows.txt @@ -0,0 +1,2 @@ +pywin32 +auto-py-to-exe \ No newline at end of file diff --git a/install/requirements.txt b/build/requirements.txt similarity index 68% rename from install/requirements.txt rename to build/requirements.txt index a6b9845..0e55fef 100644 --- a/install/requirements.txt +++ b/build/requirements.txt @@ -2,4 +2,5 @@ pygame==2.0.0.dev20 flask mutagen sounddevice -autopep8 \ No newline at end of file +autopep8 +setproctitle \ No newline at end of file diff --git a/install/requirements-windows.txt b/install/requirements-windows.txt deleted file mode 100644 index afd24f6..0000000 --- a/install/requirements-windows.txt +++ /dev/null @@ -1 +0,0 @@ -pywin32 \ No newline at end of file diff --git a/launch_standalone.py b/launch_standalone.py new file mode 100644 index 0000000..2681aff --- /dev/null +++ b/launch_standalone.py @@ -0,0 +1,13 @@ +import multiprocessing +import time + +from server import BAPSicleServer + +if __name__ == '__main__': + # On Windows calling this function is necessary. + # Causes all kinds of loops if not present. + multiprocessing.freeze_support() + server = multiprocessing.Process(target=BAPSicleServer).start() + while True: + time.sleep(1) + pass diff --git a/player.py b/player.py index d119954..53126c5 100644 --- a/player.py +++ b/player.py @@ -1,10 +1,13 @@ -import pygame +from state_manager import StateManager +from mutagen.mp3 import MP3 +from pygame import mixer import time import json -from mutagen.mp3 import MP3 import copy +import os +import setproctitle -from state_manager import StateManager +os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" class Player(): @@ -24,54 +27,54 @@ class Player(): def isInit(self): try: - pygame.mixer.music.get_busy() + mixer.music.get_busy() except: return False else: return True def isPlaying(self): - return bool(pygame.mixer.music.get_busy()) + return bool(mixer.music.get_busy()) def play(self): - pygame.mixer.music.play(0) + mixer.music.play(0) def pause(self): - pygame.mixer.music.pause() + mixer.music.pause() def unpause(self): - pygame.mixer.music.play(0, self.state.state["pos"]) + mixer.music.play(0, self.state.state["pos"]) def stop(self): - pygame.mixer.music.stop() + mixer.music.stop() def seek(self, pos): if self.isPlaying(): - pygame.mixer.music.play(0, pos) + mixer.music.play(0, pos) else: self.updateState(pos) def load(self, filename): if not self.isPlaying(): self.state.update("filename", filename) - pygame.mixer.music.load(filename) + mixer.music.load(filename) if ".mp3" in filename: song = MP3(filename) self.state.update("length", song.info.length) else: - self.state.update("length", pygame.mixer.Sound(filename).get_length()/1000) + self.state.update("length", mixer.Sound(filename).get_length()/1000) def quit(self): - pygame.mixer.quit() + mixer.quit() def output(self, name=None): self.quit() try: if name: - pygame.mixer.init(44100, -16, 1, 1024, devicename=name) + mixer.init(44100, -16, 1, 1024, devicename=name) else: - pygame.mixer.init(44100, -16, 1, 1024) + mixer.init(44100, -16, 1, 1024) except: return "FAIL:Failed to init mixer, check sound devices." else: @@ -84,7 +87,7 @@ class Player(): if (pos): self.state.update("pos", max(0, pos)) else: - self.state.update("pos", max(0, pygame.mixer.music.get_pos()/1000)) + self.state.update("pos", max(0, mixer.music.get_pos()/1000)) self.state.update("remaining", self.state.state["length"] - self.state.state["pos"]) def getDetails(self): @@ -93,6 +96,7 @@ class Player(): def __init__(self, channel, in_q, out_q): self.running = True + setproctitle.setproctitle("BAPSicle - Player " + str(channel)) self.state = StateManager("channel" + str(channel), self.__default_state) diff --git a/server.py b/server.py index e03680c..302fbb9 100644 --- a/server.py +++ b/server.py @@ -3,6 +3,9 @@ import player from flask import Flask, render_template, send_from_directory, request import json import sounddevice as sd +import setproctitle + +setproctitle.setproctitle("BAPSicle - Server") class BAPSicleServer(): From 309a1178f4d090d4336410d1e03598834f46ba9c Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Sun, 25 Oct 2020 21:14:42 +0000 Subject: [PATCH 02/16] Use nssm to install exe service instead. --- build/build-exe.bat | 2 +- install/install.bat | 13 +- install/nssm/ChangeLog.txt | 257 ++++ install/nssm/README.txt | 1051 +++++++++++++++++ {install => service-direct}/SMWinservice.py | 0 {install => service-direct}/debug.bat | 0 service-direct/install.bat | 12 + .../windows_service.py | 0 8 files changed, 1326 insertions(+), 9 deletions(-) create mode 100644 install/nssm/ChangeLog.txt create mode 100644 install/nssm/README.txt rename {install => service-direct}/SMWinservice.py (100%) rename {install => service-direct}/debug.bat (100%) create mode 100644 service-direct/install.bat rename {install => service-direct}/windows_service.py (100%) diff --git a/build/build-exe.bat b/build/build-exe.bat index a494ff4..3c7c410 100644 --- a/build/build-exe.bat +++ b/build/build-exe.bat @@ -5,6 +5,6 @@ pip install -e ..\ python generate-build-exe-config.py -auto-py-to-exe -c build-exe-config.json -o ./ +auto-py-to-exe -c build-exe-config.json -o ../install TIMEOUT 5 \ No newline at end of file diff --git a/install/install.bat b/install/install.bat index e6e4225..5b38a1a 100644 --- a/install/install.bat +++ b/install/install.bat @@ -1,12 +1,9 @@ -cd /D "%~dp0" -pip install -r requirements.txt -pip install -r requirements-windows.txt -pip install -e ..\ -python windows_service.py install - mkdir "C:\Program Files\BAPSicle" cd "C:\Program Files\BAPSicle\" mkdir state -copy "C:\Program Files\Python37\Lib\site-packages\pywin32_system32\pywintypes37.dll" "C:\Program Files\Python37\Lib\site-packages\win32\" -TIMEOUT 10 \ No newline at end of file +copy /Y "%~dp0\BAPSicle.exe" "BAPSicle.exe" + +%~dp0nssm\nssm.exe remove BAPSicle confirm +%~dp0nssm\nssm.exe install BAPSicle .\BAPSicle.exe +TIMEOUT 5 \ No newline at end of file diff --git a/install/nssm/ChangeLog.txt b/install/nssm/ChangeLog.txt new file mode 100644 index 0000000..6762ca8 --- /dev/null +++ b/install/nssm/ChangeLog.txt @@ -0,0 +1,257 @@ +Changes since 2.24 +------------------ + * Allow skipping kill_process_tree(). + + * NSSM can now sleep a configurable amount of time after + rotating output files. + + * NSSM can now rotate log files by calling CopyFile() + followed by SetEndOfFile(), allowing it to rotate files + which other processes hold open. + + * NSSM now sets the service environment before querying + parameters from the registry, so paths and arguments + can reference environment configured in AppEnvironment + or AppEnvironmentExtra. + +Changes since 2.23 +------------------ + * NSSM once again calls TerminateProcess() correctly. + +Changes since 2.22 +------------------ + * NSSM no longer clutters the event log with "The specified + procedure could not be found" on legacy Windows releases. + + * Fixed failure to set a local username to run the service. + +Changes since 2.21 +------------------ + * Existing services can now be managed using the GUI + or on the command line. + + * NSSM can now set the priority class and processor + affinity of the managed application. + + * NSSM can now apply an unconditional delay before + restarting the application. + + * NSSM can now optionally rotate existing files when + redirecting I/O. + + * Unqualified path names are now relative to the + application startup directory when redirecting I/O. + + * NSSM can now set the service display name, description, + startup type and log on details. + + * All services now receive a standard console window, + allowing them to read input correctly (if running in + interactive mode). + +Changes since 2.20 +------------------ + * Services installed from the GUI no longer have incorrect + AppParameters set in the registry. + +Changes since 2.19 +------------------ + * Services installed from the commandline without using the + GUI no longer have incorrect AppStopMethod* registry + entries set. + +Changes since 2.18 +------------------ + * Support AppEnvironmentExtra to append to the environment + instead of replacing it. + + * The GUI is significantly less sucky. + +Changes since 2.17 +------------------ + * Timeouts for each shutdown method can be configured in + the registry. + + * The GUI is slightly less sucky. + +Changes since 2.16 +------------------ + * NSSM can now redirect the service's I/O streams to any path + capable of being opened by CreateFile(). + + * Allow building on Visual Studio Express. + + * Silently ignore INTERROGATE control. + + * Try to send Control-C events to console applications when + shutting them down. + +Changes since 2.15 +------------------ + * Fixed case where NSSM could kill unrelated processes when + shutting down. + +Changes since 2.14 +------------------ + * NSSM is now translated into Italian. + + * Fixed GUI not allowing paths longer than 256 characters. + +Changes since 2.13 +------------------ + * Fixed default GUI language being French not English. + +Changes since 2.12 +------------------ + * Fixed failure to run on Windows 2000. + +Changes since 2.11 +------------------ + * NSSM is now translated into French. + + * Really ensure systems recovery actions can happen. + + The change supposedly introduced in v2.4 to allow service recovery + actions to be activated when the application exits gracefully with + a non-zero error code didn't actually work. + +Changes since 2.10 +------------------ + * Support AppEnvironment for compatibility with srvany. + +Changes since 2.9 +----------------- + * Fixed failure to compile messages.mc in paths containing spaces. + + * Fixed edge case with CreateProcess(). + + Correctly handle the case where the application executable is under + a path which contains space and an executable sharing the initial + part of that path (up to a space) exists. + +Changes since 2.8 +----------------- + * Fixed failure to run on Windows versions prior to Vista. + +Changes since 2.7 +----------------- + * Read Application, AppDirectory and AppParameters before each restart so + a change to any one doesn't require restarting NSSM itself. + + * Fixed messages not being sent to the event log correctly in some + cases. + + * Try to handle (strictly incorrect) quotes in AppDirectory. + + Windows directories aren't allowed to contain quotes so CreateProcess() + will fail if the AppDirectory is quoted. Note that it succeeds even if + Application itself is quoted as the application plus parameters are + interpreted as a command line. + + * Fixed failed to write full arguments to AppParameters when + installing a service. + + * Throttle restarts. + + Back off from restarting the application immediately if it starts + successfully but exits too soon. The default value of "too soon" is + 1500 milliseconds. This can be configured by adding a DWORD value + AppThrottle to the registry. + + Handle resume messages from the service console to restart the + application immediately even if it is throttled. + + * Try to kill the process tree gracefully. + + Before calling TerminateProcess() on all processes assocatiated with + the monitored application, enumerate all windows and threads and + post appropriate messages to them. If the application bothers to + listen for such messages it has a chance to shut itself down gracefully. + +Changes since 2.6 +----------------- + * Handle missing registry values. + + Warn if AppParameters is missing. Warn if AppDirectory is missing or + unset and choose a fallback directory. + First try to find the parent directory of the application. If that + fails, eg because the application path is just "notepad" or something, + start in the Windows directory. + + * Kill process tree when stopping service. + + Ensure that all child processes of the monitored application are + killed when the service stops by recursing through all running + processes and terminating those whose parent is the application + or one of its descendents. + +Changes since 2.5 +----------------- + * Removed incorrect ExpandEnvironmentStrings() error. + + A log_event() call was inadvertently left in the code causing an error + to be set to the eventlog saying that ExpandEnvironmentStrings() had + failed when it had actually succeeded. + +Changes since 2.4 +----------------- + * Allow use of REG_EXPAND_SZ values in the registry. + + * Don't suicide on exit status 0 by default. + + Suiciding when the application exits 0 will cause recovery actions to be + taken. Usually this is inappropriate. Only suicide if there is an + explicit AppExit value for 0 in the registry. + + Technically such behaviour could be abused to do something like run a + script after successful completion of a service but in most cases a + suicide is undesirable when no actual failure occurred. + + * Don't hang if startup parameters couldn't be determined. + Instead, signal that the service entered the STOPPED state. + Set START_PENDING state prior to actual startup. + +Changes since 2.3 +----------------- + * Ensure systems recovery actions can happen. + + In Windows versions earlier than Vista the service manager would only + consider a service failed (and hence eligible for recovery action) if + the service exited without setting its state to SERVICE_STOPPED, even if + it signalled an error exit code. + In Vista and later the service manager can be configured to treat a + graceful shutdown with error code as a failure but this is not the + default behaviour. + + Try to configure the service manager to use the new behaviour when + starting the service so users who set AppExit to Exit can use recovery + actions as expected. + + Also recognise the new AppExit option Suicide for use on pre-Vista + systems. When AppExit is Suicide don't stop the service but exit + inelegantly, which should be seen as a failure. + +Changes since 2.2 +----------------- + * Send properly formatted messages to the event log. + + * Fixed truncation of very long path lengths in the registry. + +Changes since 2.1 +----------------- + * Decide how to handle application exit. + + When the service exits with exit code n look in + HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppExit\, + falling back to the unnamed value if no such code is listed. Parse the + (string) value of this entry as follows: + + Restart: Start the application again (NSSM default). + Ignore: Do nothing (srvany default). + Exit: Stop the service. + +Changes since 2.0 +----------------- + * Added support for building a 64-bit executable. + + * Added project files for newer versions of Visual Studio. diff --git a/install/nssm/README.txt b/install/nssm/README.txt new file mode 100644 index 0000000..be6db69 --- /dev/null +++ b/install/nssm/README.txt @@ -0,0 +1,1051 @@ +NSSM: The Non-Sucking Service Manager +Version 2.24, 2014-08-31 + +NSSM is a service helper program similar to srvany and cygrunsrv. It can +start any application as an NT service and will restart the service if it +fails for any reason. + +NSSM also has a graphical service installer and remover. + +Full documentation can be found online at + + http://nssm.cc/ + +Since version 2.0, the GUI can be bypassed by entering all appropriate +options on the command line. + +Since version 2.1, NSSM can be compiled for x64 platforms. +Thanks Benjamin Mayrargue. + +Since version 2.2, NSSM can be configured to take different actions +based on the exit code of the managed application. + +Since version 2.3, NSSM logs to the Windows event log more elegantly. + +Since version 2.5, NSSM respects environment variables in its parameters. + +Since version 2.8, NSSM tries harder to shut down the managed application +gracefully and throttles restart attempts if the application doesn't run +for a minimum amount of time. + +Since version 2.11, NSSM respects srvany's AppEnvironment parameter. + +Since version 2.13, NSSM is translated into French. +Thanks François-Régis Tardy. + +Since version 2.15, NSSM is translated into Italian. +Thanks Riccardo Gusmeroli. + +Since version 2.17, NSSM can try to shut down console applications by +simulating a Control-C keypress. If they have installed a handler routine +they can clean up and shut down gracefully on receipt of the event. + +Since version 2.17, NSSM can redirect the managed application's I/O streams +to an arbitrary path. + +Since version 2.18, NSSM can be configured to wait a user-specified amount +of time for the application to exit when shutting down. + +Since version 2.19, many more service options can be configured with the +GUI installer as well as via the registry. + +Since version 2.19, NSSM can add to the service's environment by setting +AppEnvironmentExtra in place of or in addition to the srvany-compatible +AppEnvironment. + +Since version 2.22, NSSM can set the managed application's process priority +and CPU affinity. + +Since version 2.22, NSSM can apply an unconditional delay before restarting +an application which has exited. + +Since version 2.22, NSSM can rotate existing output files when redirecting I/O. + +Since version 2.22, NSSM can set service display name, description, startup +type, log on details and dependencies. + +Since version 2.22, NSSM can manage existing services. + +Since version 2.25, NSSM can execute commands in response to service events. + +Since version 2.25, NSSM can list services it manages. + +Since version 2.25, NSSM can dump the configuration of services it manages. + +Since version 2.25, NSSM can show the processes managed by a service. + + +Usage +----- +In the usage notes below, arguments to the program may be written in angle +brackets and/or square brackets. means you must insert the +appropriate string and [] means the string is optional. See the +examples below... + +Note that everywhere appears you may substitute the +service's display name. + + +Installation using the GUI +-------------------------- +To install a service, run + + nssm install + +You will be prompted to enter the full path to the application you wish +to run and any command line options to pass to that application. + +Use the system service manager (services.msc) to control advanced service +properties such as startup method and desktop interaction. NSSM may +support these options at a later time... + + +Installation using the command line +----------------------------------- +To install a service, run + + nssm install [] + +NSSM will then attempt to install a service which runs the named application +with the given options (if you specified any). + +Don't forget to enclose paths in "quotes" if they contain spaces! + +If you want to include quotes in the options you will need to """quote""" the +quotes. + + +Managing the service +-------------------- +NSSM will launch the application listed in the registry when you send it a +start signal and will terminate it when you send a stop signal. So far, so +much like srvany. But NSSM is the Non-Sucking service manager and can take +action if/when the application dies. + +With no configuration from you, NSSM will try to restart itself if it notices +that the application died but you didn't send it a stop signal. NSSM will +keep trying, pausing between each attempt, until the service is successfully +started or you send it a stop signal. + +NSSM will pause an increasingly longer time between subsequent restart attempts +if the service fails to start in a timely manner, up to a maximum of four +minutes. This is so it does not consume an excessive amount of CPU time trying +to start a failed application over and over again. If you identify the cause +of the failure and don't want to wait you can use the Windows service console +(where the service will be shown in Paused state) to send a continue signal to +NSSM and it will retry within a few seconds. + +By default, NSSM defines "a timely manner" to be within 1500 milliseconds. +You can change the threshold for the service by setting the number of +milliseconds as a REG_DWORD value in the registry at +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppThrottle. + +Alternatively, NSSM can pause for a configurable amount of time before +attempting to restart the application even if it successfully ran for the +amount of time specified by AppThrottle. NSSM will consult the REG_DWORD value +at HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppRestartDelay +for the number of milliseconds to wait before attempting a restart. If +AppRestartDelay is set and the application is determined to be subject to +throttling, NSSM will pause the service for whichever is longer of the +configured restart delay and the calculated throttle period. + +If AppRestartDelay is missing or invalid, only throttling will be applied. + +NSSM will look in the registry under +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppExit for +string (REG_EXPAND_SZ) values corresponding to the exit code of the application. +If the application exited with code 1, for instance, NSSM will look for a +string value under AppExit called "1" or, if it does not find it, will +fall back to the AppExit (Default) value. You can find out the exit code +for the application by consulting the system event log. NSSM will log the +exit code when the application exits. + +Based on the data found in the registry, NSSM will take one of three actions: + +If the value data is "Restart" NSSM will try to restart the application as +described above. This is its default behaviour. + +If the value data is "Ignore" NSSM will not try to restart the application +but will continue running itself. This emulates the (usually undesirable) +behaviour of srvany. The Windows Services console would show the service +as still running even though the application has exited. + +If the value data is "Exit" NSSM will exit gracefully. The Windows Services +console would show the service as stopped. If you wish to provide +finer-grained control over service recovery you should use this code and +edit the failure action manually. Please note that Windows versions prior +to Vista will not consider such an exit to be a failure. On older versions +of Windows you should use "Suicide" instead. + +If the value data is "Suicide" NSSM will simulate a crash and exit without +informing the service manager. This option should only be used for +pre-Vista systems where you wish to apply a service recovery action. Note +that if the monitored application exits with code 0, NSSM will only honour a +request to suicide if you explicitly configure a registry key for exit code 0. +If only the default action is set to Suicide NSSM will instead exit gracefully. + + +Application priority +-------------------- +NSSM can set the priority class of the managed application. NSSM will look in +the registry under HKLM\SYSTEM\CurrentControlSet\Services\\Parameters +for the REG_DWORD entry AppPriority. Valid values correspond to arguments to +SetPriorityClass(). If AppPriority() is missing or invalid the +application will be launched with normal priority. + + +Processor affinity +------------------ +NSSM can set the CPU affinity of the managed application. NSSM will look in +the registry under HKLM\SYSTEM\CurrentControlSet\Services\\Parameters +for the REG_SZ entry AppAffinity. It should specify a comma-separated listed +of zero-indexed processor IDs. A range of processors may optionally be +specified with a dash. No other characters are allowed in the string. + +For example, to specify the first; second; third and fifth CPUs, an appropriate +AppAffinity would be 0-2,4. + +If AppAffinity is missing or invalid, NSSM will not attempt to restrict the +application to specific CPUs. + +Note that the 64-bit version of NSSM can configure a maximum of 64 CPUs in this +way and that the 32-bit version can configure a maxium of 32 CPUs even when +running on 64-bit Windows. + + +Stopping the service +-------------------- +When stopping a service NSSM will attempt several different methods of killing +the monitored application, each of which can be disabled if necessary. + +First NSSM will attempt to generate a Control-C event and send it to the +application's console. Batch scripts or console applications may intercept +the event and shut themselves down gracefully. GUI applications do not have +consoles and will not respond to this method. + +Secondly NSSM will enumerate all windows created by the application and send +them a WM_CLOSE message, requesting a graceful exit. + +Thirdly NSSM will enumerate all threads created by the application and send +them a WM_QUIT message, requesting a graceful exit. Not all applications' +threads have message queues; those which do not will not respond to this +method. + +Finally NSSM will call TerminateProcess() to request that the operating +system forcibly terminate the application. TerminateProcess() cannot be +trapped or ignored, so in most circumstances the application will be killed. +However, there is no guarantee that it will have a chance to perform any +tidyup operations before it exits. + +Any or all of the methods above may be disabled. NSSM will look for the +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppStopMethodSkip +registry value which should be of type REG_DWORD set to a bit field describing +which methods should not be applied. + + If AppStopMethodSkip includes 1, Control-C events will not be generated. + If AppStopMethodSkip includes 2, WM_CLOSE messages will not be posted. + If AppStopMethodSkip includes 4, WM_QUIT messages will not be posted. + If AppStopMethodSkip includes 8, TerminateProcess() will not be called. + +If, for example, you knew that an application did not respond to Control-C +events and did not have a thread message queue, you could set AppStopMethodSkip +to 5 and NSSM would not attempt to use those methods to stop the application. + +Take great care when including 8 in the value of AppStopMethodSkip. If NSSM +does not call TerminateProcess() it is possible that the application will not +exit when the service stops. + +By default NSSM will allow processes 1500ms to respond to each of the methods +described above before proceeding to the next one. The timeout can be +configured on a per-method basis by creating REG_DWORD entries in the +registry under HKLM\SYSTEM\CurrentControlSet\Services\\Parameters. + + AppStopMethodConsole + AppStopMethodWindow + AppStopMethodThreads + +Each value should be set to the number of milliseconds to wait. Please note +that the timeout applies to each process in the application's process tree, +so the actual time to shutdown may be longer than the sum of all configured +timeouts if the application spawns multiple subprocesses. + +To skip applying the above stop methods to all processes in the application's +process tree, applying them only to the original application process, set the +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppKillProcessTree +registry value, which should be of type REG_DWORD, to 0. + + +Console window +-------------- +By default, NSSM will create a console window so that applications which +are capable of reading user input can do so - subject to the service being +allowed to interact with the desktop. + +Creation of the console can be suppressed by setting the integer (REG_DWORD) +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppNoConsole +registry value to 1. + + +I/O redirection +--------------- +NSSM can redirect the managed application's I/O to any path capable of being +opened by CreateFile(). This enables, for example, capturing the log output +of an application which would otherwise only write to the console or accepting +input from a serial port. + +NSSM will look in the registry under +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters for the keys +corresponding to arguments to CreateFile(). All are optional. If no path is +given for a particular stream it will not be redirected. If a path is given +but any of the other values are omitted they will be receive sensible defaults. + + AppStdin: Path to receive input. + AppStdout: Path to receive output. + AppStderr: Path to receive error output. + +Parameters for CreateFile() are providing with the "AppStdinShareMode", +"AppStdinCreationDisposition" and "AppStdinFlagsAndAttributes" values (and +analogously for stdout and stderr). + +In general, if you want the service to log its output, set AppStdout and +AppStderr to the same path, eg C:\Users\Public\service.log, and it should +work. Remember, however, that the path must be accessible to the user +running the service. + + +File rotation +------------- +When using I/O redirection, NSSM can rotate existing output files prior to +opening stdout and/or stderr. An existing file will be renamed with a +suffix based on the file's last write time, to millisecond precision. For +example, the file nssm.log might be rotated to nssm-20131221T113939.457.log. + +NSSM will look in the registry under +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters for REG_DWORD +entries which control how rotation happens. + +If AppRotateFiles is missing or set to 0, rotation is disabled. Any non-zero +value enables rotation. + +If AppRotateSeconds is non-zero, a file will not be rotated if its last write +time is less than the given number of seconds in the past. + +If AppRotateBytes is non-zero, a file will not be rotated if it is smaller +than the given number of bytes. 64-bit file sizes can be handled by setting +a non-zero value of AppRotateBytesHigh. + +If AppRotateDelay is non-zero, NSSM will pause for the given number of +milliseconds after rotation. + +If AppStdoutCopyAndTruncate or AppStderrCopyAndTruncate are non-zero, the +stdout (or stderr respectively) file will be rotated by first taking a copy +of the file then truncating the original file to zero size. This allows +NSSM to rotate files which are held open by other processes, preventing the +usual MoveFile() from succeeding. Note that the copy process may take some +time if the file is large, and will temporarily consume twice as much disk +space as the original file. Note also that applications reading the log file +may not notice that the file size changed. Using this option in conjunction +with AppRotateDelay may help in that case. + +Rotation is independent of the CreateFile() parameters used to open the files. +They will be rotated regardless of whether NSSM would otherwise have appended +or replaced them. + +NSSM can also rotate files which hit the configured size threshold while the +service is running. Additionally, you can trigger an on-demand rotation by +running the command + + nssm rotate + +On-demand rotations will happen after the next line of data is read from +the managed application, regardless of the value of AppRotateBytes. Be aware +that if the application is not particularly verbose the rotation may not +happen for some time. + +To enable online and on-demand rotation, set AppRotateOnline to a non-zero +value. + +Note that online rotation requires NSSM to intercept the application's I/O +and create the output files on its behalf. This is more complex and +error-prone than simply redirecting the I/O streams before launching the +application. Therefore online rotation is not enabled by default. + + +Timestamping output +------------------- +When redirecting output, NSSM can prefix each line of output with a +millisecond-precision timestamp, for example: + + 2016-09-06 10:17:09.451 Pipeline main started + +To enable timestamp prefixing, set AppTimestampLog to a non-zero value. + +The prefix applies to both stdout and stderr. Prefixing requires +intercepting the application's I/O in the same way that online rotation +does. If log rotation and timestamp prefixing are both enabled, the +rotation will be online. + + +Environment variables +--------------------- +NSSM can replace or append to the managed application's environment. Two +multi-valued string (REG_MULTI_SZ) registry values are recognised under +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters. + +AppEnvironment defines a list of environment variables which will override +the service's environment. AppEnvironmentExtra defines a list of +environment variables which will be added to the service's environment. + +Each entry in the list should be of the form KEY=VALUE. It is possible to +omit the VALUE but the = symbol is mandatory. + +Environment variables listed in both AppEnvironment and AppEnvironmentExtra +are subject to normal expansion, so it is possible, for example, to update the +system path by setting "PATH=C:\bin;%PATH%" in AppEnvironmentExtra. Variables +are expanded in the order in which they appear, so if you want to include the +value of one variable in another variable you should declare the dependency +first. + +Because variables defined in AppEnvironment override the existing +environment it is not possible to refer to any variables which were previously +defined. + +For example, the following AppEnvironment block: + + PATH=C:\Windows\System32;C:\Windows + PATH=C:\bin;%PATH% + +Would result in a PATH of "C:\bin;C:\Windows\System32;C:\Windows" as expected. + +Whereas the following AppEnvironment block: + + PATH=C:\bin;%PATH% + +Would result in a path containing only C:\bin and probably cause the +application to fail to start. + +Most people will want to use AppEnvironmentExtra exclusively. srvany only +supports AppEnvironment. + +As of version 2.25, NSSM parses AppEnvironment and AppEnvironmentExtra +itself, before reading any other registry values. As a result it is now +possible to refer to custom environment variables in Application, +AppDirectory and other parameters. + + +Merged service environment +-------------------------- +All Windows services can be passed additional environment variables by +creating a multi-valued string (REG_MULTI_SZ) registry value named +HLKM\SYSTEM\CurrentControlSet\Services\\Environment. + +The contents of this environment block will be merged into the system +environment before the service starts. + +Note, however, that the merged environment will be sorted alphabetically +before being processed. This means that in practice you cannot set, +for example, DIR=%PROGRAMFILES% in the Environment block because the +environment passed to the service will not have defined %PROGRAMFILES% +by the time it comes to define %DIR%. Environment variables defined in +AppEnvironmentExtra do not suffer from this limitation. + +As of version 2.25, NSSM can get and set the Environment block using +commands similar to: + + nssm get Environment + +It is worth reiterating that the Environment block is available to all +Windows services, not just NSSM services. + + +Service startup environment +--------------------------- +The environment NSSM passes to the application depends on how various +registry values are configured. The following flow describes how the +environment is modified. + +By default: + The service inherits the system environment. + +If \Environment is defined: + The contents of Environment are MERGED into the environment. + +If \Parameters\AppEnvironment is defined: + The service inherits the environment specified in AppEnvironment. + +If \Parameters\AppEnvironmentExtra is defined: + The contents of AppEnvironmentExtra are APPENDED to the environment. + +Note that AppEnvironment overrides the system environment and the +merged Environment block. Note also that AppEnvironmentExtra is +guaranteed to be appended to the startup environment if it is defined. + + +Event hooks +----------- +NSSM can run user-configurable commands in response to application events. +These commands are referred to as "hooks" below. + +All hooks are optional. Any hooks which are run will be launched with the +environment configured for the service. NSSM will place additional +variables into the environment which hooks can query to learn how and why +they were called. + +Hooks are categorised by Event and Action. Some hooks are run synchronously +and some are run asynchronously. Hooks prefixed with an *asterisk are run +synchronously. NSSM will wait for these hooks to complete before continuing +its work. Note, however, that ALL hooks are subject to a deadline after which +they will be killed, regardless of whether they are run asynchronously +or not. + + Event: Start - Triggered when the service is requested to start. + *Action: Pre - Called before NSSM attempts to launch the application. + Action: Post - Called after the application successfully starts. + + Event: Stop - Triggered when the service is requested to stop. + *Action: Pre - Called before NSSM attempts to kill the application. + + Event: Exit - Triggered when the application exits. + *Action: Post - Called after NSSM has cleaned up the application. + + Event: Rotate - Triggered when online log rotation is requested. + *Action: Pre - Called before NSSM rotates logs. + Action: Post - Called after NSSM rotates logs. + + Event: Power + Action: Change - Called when the system power status has changed. + Action: Resume - Called when the system has resumed from standby. + +Note that there is no Stop/Post hook. This is because Exit/Post is called +when the application exits, regardless of whether it did so in response to +a service shutdown request. Stop/Pre is only called before a graceful +shutdown attempt. + +NSSM sets the environment variable NSSM_HOOK_VERSION to a positive number. +Hooks can check the value of the number to determine which other environment +variables are available to them. + +If NSSM_HOOK_VERSION is 1 or greater, these variables are provided: + + NSSM_EXE - Path to NSSM itself. + NSSM_CONFIGURATION - Build information for the NSSM executable, + eg 64-bit debug. + NSSM_VERSION - Version of the NSSM executable. + NSSM_BUILD_DATE - Build date of NSSM. + NSSM_PID - Process ID of the running NSSM executable. + NSSM_DEADLINE - Deadline number of milliseconds after which NSSM will + kill the hook if it is still running. + NSSM_SERVICE_NAME - Name of the service controlled by NSSM. + NSSM_SERVICE_DISPLAYNAME - Display name of the service. + NSSM_COMMAND_LINE - Command line used to launch the application. + NSSM_APPLICATION_PID - Process ID of the primary application process. + May be blank if the process is not running. + NSSM_EVENT - Event class triggering the hook. + NSSM_ACTION - Event action triggering the hook. + NSSM_TRIGGER - Service control triggering the hook. May be blank if + the hook was not triggered by a service control, eg Exit/Post. + NSSM_LAST_CONTROL - Last service control handled by NSSM. + NSSM_START_REQUESTED_COUNT - Number of times the application was + requested to start. + NSSM_START_COUNT - Number of times the application successfully started. + NSSM_THROTTLE_COUNT - Number of times the application ran for less than + the throttle period. Reset to zero on successful start or when the + service is explicitly unpaused. + NSSM_EXIT_COUNT - Number of times the application exited. + NSSM_EXITCODE - Exit code of the application. May be blank if the + application is still running or has not started yet. + NSSM_RUNTIME - Number of milliseconds for which the NSSM executable has + been running. + NSSM_APPLICATION_RUNTIME - Number of milliseconds for which the + application has been running since it was last started. May be blank + if the application has not been started yet. + +Future versions of NSSM may provide more environment variables, in which +case NSSM_HOOK_VERSION will be set to a higher number. + +Hooks are configured by creating string (REG_EXPAND_SZ) values in the +registry named after the hook action and placed under +HKLM\SYSTEM\CurrentControlSet\Services\\Parameters\AppEvents\. + +For example the service could be configured to restart when the system +resumes from standby by setting AppEvents\Power\Resume to: + + %NSSM_EXE% restart %NSSM_SERVICE_NAME% + +To set a hook on the command line, use + + nssm set AppEvents / + +Note that NSSM will abort the startup of the application if a Start/Pre hook +returns exit code of 99. + +A service will normally run hooks in the following order: + + Start/Pre + Start/Post + Stop/Pre + Exit/Post + +If the application crashes and is restarted by NSSM, the order might be: + + Start/Pre + Start/Post + Exit/Post + Start/Pre + Start/Post + Stop/Pre + Exit/Post + + +If NSSM is redirecting stdout or stderr it can be configured to redirect +the output of any hooks it runs. Set AppRedirectHooks to 1 to enable +that functionality. A hook can of course redirect its own I/O independently +of NSSM. + + +Managing services using the GUI +------------------------------- +NSSM can edit the settings of existing services with the same GUI that is +used to install them. Run + + nssm edit + +to bring up the GUI. + +NSSM offers limited editing capabilities for services other than those which +run NSSM itself. When NSSM is asked to edit a service which does not have +the App* registry settings described above, the GUI will allow editing only +system settings such as the service display name and description. + + +Managing services using the command line +---------------------------------------- +NSSM can retrieve or set individual service parameters from the command line. +In general the syntax is as follows, though see below for exceptions. + + nssm get + + nssm set + +Parameters can also be reset to their default values. + + nssm reset + +The parameter names recognised by NSSM are the same as the registry entry +names described above, eg AppDirectory. + +NSSM offers limited editing capabilities for Services other than those which +run NSSM itself. The parameters recognised are as follows: + + Description: Service description. + DisplayName: Service display name. + Environment: Service merged environment. + ImagePath: Path to the service executable. + ObjectName: User account which runs the service. + Name: Service key name. + Start: Service startup type. + Type: Service type. + +These correspond to the registry values under the service's key +HKLM\SYSTEM\CurrentControlSet\Services\. + + +Note that NSSM will concatenate all arguments passed on the command line +with spaces to form the value to set. Thus the following two invocations +would have the same effect. + + nssm set Description "NSSM managed service" + + nssm set Description NSSM managed service + + +Non-standard parameters +----------------------- +The AppEnvironment, AppEnvironmentExtra and Environment parameters +recognise an additional argument when querying the environment. The +following syntax will print all extra environment variables configured +for a service + + nssm get AppEnvironmentExtra + +whereas the syntax below will print only the value of the CLASSPATH +variable if it is configured in the environment block, or the empty string +if it is not configured. + + nssm get AppEnvironmentExtra CLASSPATH + +When setting an environment block, each variable should be specified as a +KEY=VALUE pair in separate command line arguments. For example: + + nssm set AppEnvironment CLASSPATH=C:\Classes TEMP=C:\Temp + +Alternatively the KEY can be prefixed with a + or - symbol to respectively +add or remove a pair from the block. + +The following two lines set CLASSPATH and TEMP: + + nssm set AppEnvironment CLASSPATH=C:\Classes + nssm set AppEnvironment +TEMP=C:\Temp + +If the key is already present, specifying +KEY will override the value +while preserving the order of keys: + + nssm set AppEnvironment +CLASSPATH=C:\NewClasses + +The following syntax removes a single variable from the block while +leaving any other variables in place. + + nssm set AppEnvironment -TEMP + +Specifying -KEY=VALUE will remove the variable only if the existing +value matches. + +The following syntax would not remove TEMP=C:\Temp + + nssm set AppEnvironment -TEMP=C:\Work\Temporary + +The + and - symbols are valid characters in environment variables. +The syntax :KEY=VALUE is equivalent to KEY=VALUE and can be used to +set variables which start with +/- or to explicitly reset the block in +a script: + + nssm set AppEnvironment :CLASSPATH=C:\Classes + nssm set AppEnvironment +TEMP=C:\Temp + + +The AppExit parameter requires an additional argument specifying the exit +code to get or set. The default action can be specified with the string +Default. + +For example, to get the default exit action for a service you should run + + nssm get AppExit Default + +To get the exit action when the application exits with exit code 2, run + + nssm get AppExit 2 + +Note that if no explicit action is configured for a specified exit code, +NSSM will print the default exit action. + +To set configure the service to stop when the application exits with an +exit code of 2, run + + nssm set AppExit 2 Exit + + +The AppPriority parameter is used to set the priority class of the +managed application. Valid priorities are as follows: + + REALTIME_PRIORITY_CLASS + HIGH_PRIORITY_CLASS + ABOVE_NORMAL_PRIORITY_CLASS + NORMAL_PRIORITY_CLASS + BELOW_NORMAL_PRIORITY_CLASS + IDLE_PRIORITY_CLASS + + +The DependOnGroup and DependOnService parameters are used to query or set +the dependencies for the service. When setting dependencies, each service +or service group (preceded with the + symbol) should be specified in +separate command line arguments. For example: + + nssm set DependOnService RpcSs LanmanWorkstation + +Alternatively the dependency name can be prefixed with a + or - symbol to +respectively add or remove a dependency. + +The following two lines set dependencies on RpcSs and LanmanWorkstation: + + nssm set DependOnService RpcSs + nssm set DependOnService +LanmanWorkstation + +The follwing syntax removes the dependency on RpcSs: + + nssm set DependOnService -RpcSs + +Service groups should, strictly speaking, be prefixed with the + symbol. +To specify a single dependency on a group, the + symbol can be prefixed +with the : symbol. + +The following lines are equivalent, and each set a dependency ONLY on +NetBIOSGroup: + + nssm set DependOnGroup NetBIOSGroup + nssm set DependOnGroup :NetBIOSGroup + nssm set DependOnGroup :+NetBIOSGroup + +Whereas these lines add to any existing dependencies: + + nssm set DependOnGroup +NetBIOSGroup + nssm set DependOnGroup ++NetBIOSGroup + + +The Name parameter can only be queried, not set. It returns the service's +registry key name. This may be useful to know if you take advantage of +the fact that you can substitute the service's display name anywhere where +the syntax calls for . + + +The ObjectName parameter requires an additional argument only when setting +a username. The additional argument is the password of the user. + +To retrieve the username, run + + nssm get ObjectName + +To set the username and password, run + + nssm set ObjectName + +Note that the rules of argument concatenation still apply. The following +invocation is valid and will have the expected effect. + + nssm set ObjectName correct horse battery staple + +The following well-known usernames do not need a password. The password +parameter can be omitted when using them: + + "LocalSystem" aka "System" aka "NT Authority\System" + "LocalService" aka "Local Service" aka "NT Authority\Local Service" + "NetworkService" aka "Network Service" aka "NT Authority\Network Service" + Virtual service account "NT Service\" + + +The Start parameter is used to query or set the startup type of the service. +Valid service startup types are as follows: + + SERVICE_AUTO_START: Automatic startup at boot. + SERVICE_DELAYED_START: Delayed startup at boot. + SERVICE_DEMAND_START: Manual service startup. + SERVICE_DISABLED: The service is disabled. + +Note that SERVICE_DELAYED_START is not supported on versions of Windows prior +to Vista. NSSM will set the service to automatic startup if delayed start is +unavailable. + + +The Type parameter is used to query or set the service type. NSSM recognises +all currently documented service types but will only allow setting one of two +types: + + SERVICE_WIN32_OWN_PROCESS: A standalone service. This is the default. + SERVICE_INTERACTIVE_PROCESS: A service which can interact with the desktop. + +Note that a service may only be configured as interactive if it runs under +the LocalSystem account. The safe way to configure an interactive service +is in two stages as follows. + + nssm reset ObjectName + nssm set Type SERVICE_INTERACTIVE_PROCESS + + +Controlling services using the command line +------------------------------------------- +NSSM offers rudimentary service control features. + + nssm start + + nssm restart + + nssm stop + + nssm status + + nssm statuscode + +The output of "nssm status" and "nssm statuscode" is a string +representing the service state, eg SERVICE_RUNNING. + +The exit code of "nssm status" will be 0 if the status was +succesfully retrieved. If the exit code is not zero there was +an error. + +The exit code of "nssm statuscode" will be the numeric value +of the service state, eg 4 for SERVICE_RUNNING. Zero is not a +valid service state code. If the exit code is zero there was +an error. + + +Removing services using the GUI +------------------------------- +NSSM can also remove services. Run + + nssm remove + +to remove a service. You will prompted for confirmation before the service +is removed. Try not to remove essential system services... + + +Removing service using the command line +--------------------------------------- +To remove a service without confirmation from the GUI, run + + nssm remove confirm + +Try not to remove essential system services... + + +Logging +------- +NSSM logs to the Windows event log. It registers itself as an event log source +and uses unique event IDs for each type of message it logs. New versions may +add event types but existing event IDs will never be changed. + +Because of the way NSSM registers itself you should be aware that you may not +be able to replace the NSSM binary if you have the event viewer open and that +running multiple instances of NSSM from different locations may be confusing if +they are not all the same version. + + +Listing managed services +------------------------ +The following command will print the names of all services managed by NSSM: + + nssm list + +To see all services on the system, not just NSSM's, use list all: + + nssm list all + + +Showing processes started by a service +-------------------------------------- +The following command will print the process ID and executable path of +processes started by a given service: + + nssm processes + +Note that if 32-bit NSSM is run on a 64-bit system running an older version of +Windows than Vista it will not be able to query the paths of 64-bit processes. + + +Exporting service configuration +------------------------------- +NSSM can dump commands which would recreate the configuration of a service. +The output can be pasted into a batch script to back up the service or +transfer to another computer. + + nssm dump + +Because the service configuration may contain characters which need to be +quoted or escaped from the command prompt, NSSM tries hard to produce +output which will work correctly when run as a script, by adding quotes +and caret escapes as appropriate. + +To facilitate copying a service, the dump command accepts a second +argument which specifies the name of the service to be used in the output. + + nssm dump + +Lines in the dump will reference the service while showing the +configuration of . + + +Example usage +------------- +To install an Unreal Tournament server: + + nssm install UT2004 c:\games\ut2004\system\ucc.exe server + +To run the server as the "games" user: + + nssm set UT2004 ObjectName games password + +To configure the server to log to a file: + + nssm set UT2004 AppStdout c:\games\ut2004\service.log + +To restrict the server to a single CPU: + + nssm set UT2004 AppAffinity 0 + +To remove the server: + + nssm remove UT2004 confirm + +To find out the service name of a service with a display name: + + nssm get "Background Intelligent Transfer Service" Name + + +Building NSSM from source +------------------------- +NSSM is known to compile with Visual Studio 2008 and later. Older Visual +Studio releases may or may not work if you install an appropriate SDK and +edit the nssm.vcproj and nssm.sln files to set a lower version number. +They are known not to work with default settings. + +NSSM will also compile with Visual Studio 2010 but the resulting executable +will not run on versions of Windows older than XP SP2. If you require +compatiblity with older Windows releases you should change the Platform +Toolset to v90 in the General section of the project's Configuration +Properties. + + +Credits +------- +Thanks to Bernard Loh for finding a bug with service recovery. +Thanks to Benjamin Mayrargue (www.softlion.com) for adding 64-bit support. +Thanks to Joel Reingold for spotting a command line truncation bug. +Thanks to Arve Knudsen for spotting that child processes of the monitored +application could be left running on service shutdown, and that a missing +registry value for AppDirectory confused NSSM. +Thanks to Peter Wagemans and Laszlo Keresztfalvi for suggesting throttling +restarts. +Thanks to Eugene Lifshitz for finding an edge case in CreateProcess() and for +advising how to build messages.mc correctly in paths containing spaces. +Thanks to Rob Sharp for pointing out that NSSM did not respect the +AppEnvironment registry value used by srvany. +Thanks to Szymon Nowak for help with Windows 2000 compatibility. +Thanks to François-Régis Tardy and Gildas le Nadan for French translation. +Thanks to Emilio Frini for spotting that French was inadvertently set as +the default language when the user's display language was not translated. +Thanks to Riccardo Gusmeroli and Marco Certelli for Italian translation. +Thanks to Eric Cheldelin for the inspiration to generate a Control-C event +on shutdown. +Thanks to Brian Baxter for suggesting how to escape quotes from the command +prompt. +Thanks to Russ Holmann for suggesting that the shutdown timeout be configurable. +Thanks to Paul Spause for spotting a bug with default registry entries. +Thanks to BUGHUNTER for spotting more GUI bugs. +Thanks to Doug Watson for suggesting file rotation. +Thanks to Арслан Сайдуганов for suggesting setting process priority. +Thanks to Robert Middleton for suggestion and draft implementation of process +affinity support. +Thanks to Andrew RedzMax for suggesting an unconditional restart delay. +Thanks to Bryan Senseman for noticing that applications with redirected stdout +and/or stderr which attempt to read from stdin would fail. +Thanks to Czenda Czendov for help with Visual Studio 2013 and Server 2012R2. +Thanks to Alessandro Gherardi for reporting and draft fix of the bug whereby +the second restart of the application would have a corrupted environment. +Thanks to Hadrien Kohl for suggesting to disable the console window's menu. +Thanks to Allen Vailliencourt for noticing bugs with configuring the service to +run under a local user account. +Thanks to Sam Townsend for noticing a regression with TerminateProcess(). +Thanks to Barrett Lewis for suggesting the option to skip terminating the +application's child processes. +Thanks to Miguel Angel Terrón for suggesting copy/truncate rotation. +Thanks to Yuriy Lesiuk for suggesting setting the environment before querying +the registry for parameters. +Thanks to Gerald Haider for noticing that installing a service with NSSM in a +path containing spaces was technically a security vulnerability. +Thanks to Scott Ware for reporting a crash saving the environment on XP 32-bit. +Thanks to Stefan and Michael Scherer for reporting a bug writing the event messages source. +Thanks to Paul Baxter for help with Visual Studio 2015. +Thanks to Mathias Breiner for help with Visual Studio and some registry fixes. +Thanks to David Bremner for general tidyups. +Thanks to Nabil Redmann for suggesting redirecting hooks' output. +Thanks to Bader Aldurai for suggesting the process tree. +Thanks to Christian Long for suggesting virtual accounts. +Thanks to Marcin Lewandowski for spotting a bug appending to large files. +Thanks to Nicolas Ducrocq for suggesting timestamping redirected output. +Thanks to Meang Akira Tanaka for suggestion and initial implementation of +the statuscode command. +Thanks to Kirill Kovalenko for reporting a crash with NANO server. +Thanks to Connor Reynolds for spotting a potential buffer overflow. + +Licence +------- +NSSM is public domain. You may unconditionally use it and/or its source code +for any purpose you wish. diff --git a/install/SMWinservice.py b/service-direct/SMWinservice.py similarity index 100% rename from install/SMWinservice.py rename to service-direct/SMWinservice.py diff --git a/install/debug.bat b/service-direct/debug.bat similarity index 100% rename from install/debug.bat rename to service-direct/debug.bat diff --git a/service-direct/install.bat b/service-direct/install.bat new file mode 100644 index 0000000..e6e4225 --- /dev/null +++ b/service-direct/install.bat @@ -0,0 +1,12 @@ +cd /D "%~dp0" +pip install -r requirements.txt +pip install -r requirements-windows.txt +pip install -e ..\ +python windows_service.py install + +mkdir "C:\Program Files\BAPSicle" +cd "C:\Program Files\BAPSicle\" +mkdir state + +copy "C:\Program Files\Python37\Lib\site-packages\pywin32_system32\pywintypes37.dll" "C:\Program Files\Python37\Lib\site-packages\win32\" +TIMEOUT 10 \ No newline at end of file diff --git a/install/windows_service.py b/service-direct/windows_service.py similarity index 100% rename from install/windows_service.py rename to service-direct/windows_service.py From 90ae71463d21e27a2e09b629c18c22be9aae2ceb Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Mon, 26 Oct 2020 20:00:31 +0000 Subject: [PATCH 03/16] Actually add nssm.exe --- .gitignore | 2 +- install/nssm/nssm.exe | Bin 0 -> 368640 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 install/nssm/nssm.exe diff --git a/.gitignore b/.gitignore index e27003f..085e8ff 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,6 @@ state/ build/build-exe-config.json -*.exe +install/*.exe *.pyo diff --git a/install/nssm/nssm.exe b/install/nssm/nssm.exe new file mode 100644 index 0000000000000000000000000000000000000000..b81399d8ea553d3c5111b15d342ebd5514ce7c2b GIT binary patch literal 368640 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ⅆR?QZ#xZMncx?` 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 literal 0 HcmV?d00001 From d1103e66cf6d5d312161aa7ea973fa18a8f394fb Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Mon, 26 Oct 2020 21:15:28 +0000 Subject: [PATCH 04/16] Initial Root logging --- __init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/__init__.py b/__init__.py index e69de29..cb45bae 100644 --- a/__init__.py +++ b/__init__.py @@ -0,0 +1,5 @@ +# see +import logging +logging.getLogger(__name__).addHandler(logging.NullHandler()) +logging.basicConfig(filename='bapsicle_log.log', level=logging.INFO) +logging.info('Started Logging') From 4c11378ff239f68b237d09af32f31f15631f479d Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Wed, 28 Oct 2020 22:03:48 +0000 Subject: [PATCH 05/16] Add initial OS environment helpers --- helpers/os_environment.py | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 helpers/os_environment.py diff --git a/helpers/os_environment.py b/helpers/os_environment.py new file mode 100644 index 0000000..c1497c9 --- /dev/null +++ b/helpers/os_environment.py @@ -0,0 +1,42 @@ +import sys +import os + +# Check if we're running inside a pyinstaller bundled (it's an exe) + + +def isBundelled(): + return getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS') + + +def isWindows(): + return sys.platform.startswith('win32') + + +def isLinux(): + return sys.platform.startswith('linux') + + +def isMacOS(): + return sys.platform.startswith('darwin') + +# This must be used to that relative file paths resolve inside the bundled versions. + + +def resolve_local_file_path(relative_path): + """ Get absolute path to resource, works for dev and for PyInstaller """ + try: + # PyInstaller creates a temp folder and stores path in _MEIPASS + base_path = sys._MEIPASS + except Exception: + base_path = os.path.abspath(".") + + return os.path.join(base_path, relative_path) + +# Use this to resolve paths to resources not bundled within the bundled exe. + + +def resolve_external_file_path(relative_path): + if (not relative_path.startswith("/")): + relative_path = "/" + relative_path + # Pass through abspath to correct any /'s with \'s on Windows + return os.path.abspath(os.getcwd() + relative_path) From eefa9f4a5d916f438959804f0e72d24ad873816e Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Wed, 28 Oct 2020 22:04:11 +0000 Subject: [PATCH 06/16] Use relative path for state file locations. --- state_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/state_manager.py b/state_manager.py index 139bdaa..e81cffd 100644 --- a/state_manager.py +++ b/state_manager.py @@ -1,5 +1,6 @@ import json import os +from helpers.os_environment import resolve_external_file_path class StateManager: @@ -7,7 +8,7 @@ class StateManager: __state = {} def __init__(self, name, default_state=None): - self.filepath = "C:\Program Files\BAPSicle\state\\" + name + ".json" + self.filepath = resolve_external_file_path("/state/" + name + ".json") if not os.path.isfile(self.filepath): self.log("No file found for " + self.filepath) try: From 867e05781157755d44189ad69650133caf193b50 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Wed, 28 Oct 2020 22:07:13 +0000 Subject: [PATCH 07/16] Add vscode debug launch configuration --- .gitignore | 2 +- .vscode/launch.json | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .vscode/launch.json diff --git a/.gitignore b/.gitignore index 085e8ff..a0dc422 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -.vscode/ + __pycache__/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8d0100f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Launch Server Standalone", + "type": "python", + "request": "launch", + "program": "./launch_standalone.py", + "console": "integratedTerminal" + } + ] +} \ No newline at end of file From cac357c403887b71a97d73846e73fd77968ca1c2 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 01:41:01 +0000 Subject: [PATCH 08/16] Fix windows installer and add uninstaller. --- .gitignore | 8 +++++ build/build-exe-config.template.json | 4 +-- build/build-exe.bat | 10 +++++- build/build-exe.py | 43 ++++++++++++++++++++++++ build/generate-build-exe-config.py | 6 ++-- install/install.bat | 49 ++++++++++++++++++++++++---- install/uninstall.bat | 11 +++++++ 7 files changed, 117 insertions(+), 14 deletions(-) create mode 100644 build/build-exe.py create mode 100644 install/uninstall.bat diff --git a/.gitignore b/.gitignore index a0dc422..1bbdfbd 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,11 @@ build/build-exe-config.json install/*.exe *.pyo + +*.spec + +build/build-exe-pyinstaller-command.bat + +build/build/BAPSicle/ + +build/output/ diff --git a/build/build-exe-config.template.json b/build/build-exe-config.template.json index 2ac7d21..147e9f0 100644 --- a/build/build-exe-config.template.json +++ b/build/build-exe-config.template.json @@ -7,7 +7,7 @@ }, { "optionDest": "filenames", - "value": "../launch_standalone.py" + "value": "\\launch_standalone.py" }, { "optionDest": "onefile", @@ -19,7 +19,7 @@ }, { "optionDest": "icon_file", - "value": "\\icon.ico" + "value": "\\build\\icon.ico" }, { "optionDest": "name", diff --git a/build/build-exe.bat b/build/build-exe.bat index 3c7c410..a2cf6e0 100644 --- a/build/build-exe.bat +++ b/build/build-exe.bat @@ -3,8 +3,16 @@ pip install -r requirements.txt pip install -r requirements-windows.txt pip install -e ..\ +: Generate the json config in case you wanted to use the gui to regenerate the command below manually. python generate-build-exe-config.py -auto-py-to-exe -c build-exe-config.json -o ../install +: auto-py-to-exe -c build-exe-config.json -o ../install +python build-exe.py + +build-exe-pyinstaller-command.bat + +del *.spec /q + +echo "Output file should be located in 'output/' folder." TIMEOUT 5 \ No newline at end of file diff --git a/build/build-exe.py b/build/build-exe.py new file mode 100644 index 0000000..d9dc3ea --- /dev/null +++ b/build/build-exe.py @@ -0,0 +1,43 @@ +import sys +import json + +file = open('build-exe-config.json', 'r') +config = json.loads(file.read()) +file.close() + +cmd_str = "pyinstaller " +json_dests = ["icon_file", "clean_build"] +pyi_dests = ["icon", "clean"] + +for option in config["pyinstallerOptions"]: + + option_dest = option["optionDest"] + + # The json is rather inconsistent :/ + if option_dest in json_dests: + print("in") + option_dest = pyi_dests[json_dests.index(option_dest)] + + option_dest = option_dest.replace("_", "-") + + if option_dest == "datas": + cmd_str += '--add-data "' + option["value"] + '" ' + elif option_dest == "filenames": + filename = option["value"] + elif option["value"] == True: + cmd_str += "--" + str(option_dest) + " " + elif option["value"] == False: + pass + else: + cmd_str += "--" + str(option_dest) + ' "' + str(option["value"]) + '" ' + + +command = open('build-exe-pyinstaller-command.bat', 'w') + +if filename == "": + print("No filename data was found in json file.") + command.write("") +else: + command.write(cmd_str + ' --distpath "output/" --workpath "build/" "' + filename + '"') + +command.close() diff --git a/build/generate-build-exe-config.py b/build/generate-build-exe-config.py index b84a501..5fc1e0d 100644 --- a/build/generate-build-exe-config.py +++ b/build/generate-build-exe-config.py @@ -9,10 +9,8 @@ config = json.loads(in_file.read()) in_file.close() for option in config["pyinstallerOptions"]: - if option["optionDest"] == "icon_file": - option["value"] = dir_path + option["value"] - if option["optionDest"] == "datas": - option["value"] = parent_path + option["value"] + if option["optionDest"] in ["datas", "filenames", "icon_file"]: + option["value"] = os.path.abspath(parent_path + option["value"]) out_file = open('build-exe-config.json', 'w') out_file.write(json.dumps(config, indent=2)) diff --git a/install/install.bat b/install/install.bat index 5b38a1a..8e3b330 100644 --- a/install/install.bat +++ b/install/install.bat @@ -1,9 +1,44 @@ -mkdir "C:\Program Files\BAPSicle" -cd "C:\Program Files\BAPSicle\" -mkdir state +set install_path="C:\Program Files\BAPSicle" +set exe_name="BAPSicle.exe" +set exe_path=%install_path%\\%exe_name% +set service_name="BAPSicle" -copy /Y "%~dp0\BAPSicle.exe" "BAPSicle.exe" +mkdir %install_path% +mkdir "%install_path%\state" -%~dp0nssm\nssm.exe remove BAPSicle confirm -%~dp0nssm\nssm.exe install BAPSicle .\BAPSicle.exe -TIMEOUT 5 \ No newline at end of file + +cd %~dp0\nssm +nssm stop %service_name% +nssm remove %service_name% confirm +sc.exe delete %service_name% + +cd %install_path% + + +copy /Y "%~dp0\uninstall.bat" . +copy /Y "%~dp0\..\build\output\%exe_name%" %exe_name% + +mkdir nssm +cd nssm +copy /Y "%~dp0\nssm\nssm.exe" . +nssm install %service_name% %exe_path% +nssm set %service_name% AppDirectory %install_path% +nssm set %service_name% AppExit Default Restart +nssm set %service_name% AppStopMethodConsole 5000 +nssm set %service_name% AppStopMethodWindow 5000 +nssm set %service_name% AppStopMethodThreads 5000 +nssm set %service_name% DisplayName "BAPSicle Server" +nssm set %service_name% Description "The next gen Broadcast and Presenting Suite server! Access settings on port 5000." +nssm set %service_name% ObjectName LocalSystem +nssm set %service_name% Start SERVICE_AUTO_START +nssm set %service_name% Type SERVICE_INTERACTIVE_PROCESS + +: usefull tools are edit and dump: + +: nssm edit %service_name% +: nssm dump %service_name% +nssm start %service_name% + +timeout 4 /nobreak + +explorer "http://localhost:5000/" diff --git a/install/uninstall.bat b/install/uninstall.bat new file mode 100644 index 0000000..2b66ee1 --- /dev/null +++ b/install/uninstall.bat @@ -0,0 +1,11 @@ + +set service_name="BAPSicle" + +cd %~dp0\nssm +nssm stop %service_name% +nssm remove %service_name% confirm +sc.exe delete %service_name% + +del "C:\Program Files\BAPSicle\" /q /s /f + +PAUSE \ No newline at end of file From 91339174b63a08db1be56cc859a5bd8c791af180 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 01:41:17 +0000 Subject: [PATCH 09/16] Remove bodged load commands. --- server.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/server.py b/server.py index 302fbb9..05d9001 100644 --- a/server.py +++ b/server.py @@ -120,7 +120,6 @@ def seek(channel, pos): @app.route("/player//output/") def output(channel, name): channel_to_q[channel].put("OUTPUT:" + name) - channel_to_q[channel].put("LOAD:test"+str(channel)+".mp3") return ui_status() @@ -151,7 +150,6 @@ def startServer(): for channel in range(3): channel_to_q.append(multiprocessing.Queue()) channel_from_q.append(multiprocessing.Queue()) - # channel_to_q[-1].put_nowait("LOAD:test"+str(channel)+".mp3") channel_p.append( multiprocessing.Process( target=player.Player, From 097429d7c3398cb74d3a7f920af898de08f8d020 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 19:23:33 +0000 Subject: [PATCH 10/16] Fix creating a C:\Program folder instead of /state --- install/install.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/install.bat b/install/install.bat index 8e3b330..e582c70 100644 --- a/install/install.bat +++ b/install/install.bat @@ -4,7 +4,7 @@ set exe_path=%install_path%\\%exe_name% set service_name="BAPSicle" mkdir %install_path% -mkdir "%install_path%\state" +mkdir %install_path%\state cd %~dp0\nssm From 1add44f6ce82714dba659be2504a96098ce3ed5b Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 19:24:00 +0000 Subject: [PATCH 11/16] Fix uninstaller to 100% clear up. --- install/uninstall.bat | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/install/uninstall.bat b/install/uninstall.bat index 2b66ee1..d0dd0e0 100644 --- a/install/uninstall.bat +++ b/install/uninstall.bat @@ -1,11 +1,15 @@ set service_name="BAPSicle" -cd %~dp0\nssm -nssm stop %service_name% -nssm remove %service_name% confirm -sc.exe delete %service_name% +: We can't 'nssm stop because' we're about to delete it. +: The file will remain open, so you'll get access denied. +net stop %service_name% +sc delete %service_name% + +: We cd out of the folder, just in case we're about to delete +: out PWD. +cd \ +rmdir "C:\Program Files\BAPSicle\" /q /s -del "C:\Program Files\BAPSicle\" /q /s /f PAUSE \ No newline at end of file From 3c201395975222d3019729a297bca474a4d801d8 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 19:58:57 +0000 Subject: [PATCH 12/16] Add githook install script --- dev/install-githook.bat | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 dev/install-githook.bat diff --git a/dev/install-githook.bat b/dev/install-githook.bat new file mode 100644 index 0000000..1db15ca --- /dev/null +++ b/dev/install-githook.bat @@ -0,0 +1,2 @@ +cd %~dp0 +copy /Y ".\pre-commit" "..\.git\hooks\" \ No newline at end of file From 2623c75627aa0ccf2f24963e21088c676433f2b8 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 19:59:08 +0000 Subject: [PATCH 13/16] Fill readme with instructions --- README.md | 48 +++++++++++++++++++++++++++++++++++++++++++++++- dev/logo.png | Bin 0 -> 53925 bytes 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 dev/logo.png diff --git a/README.md b/README.md index 84a8833..cf15246 100644 --- a/README.md +++ b/README.md @@ -1 +1,47 @@ -bapsicle +# Bapsicle +### AKA The Next Gen BAPS server + +!["BAPSicle logo, a pink melting ice lolly."](/dev/logo.png "BAPSicle Logo") + +Welcome! This is BAPS. More acurately, this is yet another attempt at a BAPS3 server. + +## Installing + +Just want to install BAPSicle? + +### Windows + +Currently there's just a batch script. Simply run ``install.bat`` as administrator. If you've just built BAPSicle youself, it'll be in ``/install`` folder. + +This will: +* Copy BAPSicle into ``C:\Program Files\BAPSicle`` +* Install BAPSicle.exe as a Windows Service with NSSM. +* If all goes well, open [http://localhost:5000](localhost:5000) for the server UI. + +### Linux + +Installed service for linux is comming soon. Testing is primarily on Ubuntu 20.04. Your milage with other distros will vary. + +### MacOS + +Support for MacOS will be the last to come, sorry about that. + +## Developing + +### Requirements + +* Python 3.7 (3.8 may also work, 3.9 is unlikely to.) +* Git (Obviously) + +### Running +To just run the server standaline without installing, run ``python ./launch_standalone.py``. + +### Building + +Currently mostly Windows focused. + +To build a BAPSicle.exe, run ``build\build-exe.py``. The resulting file will appear in ``build\output``. You can then use the install instructions above to install it, or just run it standalone. + +### Other bits + +Provided is a VScode debug config to let you debug live, as well as ``dev\install-githook.bat`` that will help git to clean your code up as you're committing! \ No newline at end of file diff --git a/dev/logo.png b/dev/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d708fe91e9ecb7937c3a5a258b2bb44f025355 GIT binary patch literal 53925 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

qbz@{Zj3XO$*`#=@#1Q( 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 From 32a074cfe88f4ce06af1691d3bc6e0554c85fb89 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 20:06:55 +0000 Subject: [PATCH 16/16] VScode being bad, putting comments in json. --- .vscode/launch.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 8d0100f..c96ed4c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,7 +1,4 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ {

qbz@{Zj3XO$*`#=@#1Q( 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 literal 0 HcmV?d00001 From e8d9a7492b35d3f944afbee061a51711d4855dea Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 19:59:26 +0000 Subject: [PATCH 14/16] Remove old service script folder. --- service-direct/SMWinservice.py | 98 ------------------------------- service-direct/debug.bat | 2 - service-direct/install.bat | 12 ---- service-direct/windows_service.py | 36 ------------ 4 files changed, 148 deletions(-) delete mode 100644 service-direct/SMWinservice.py delete mode 100644 service-direct/debug.bat delete mode 100644 service-direct/install.bat delete mode 100644 service-direct/windows_service.py diff --git a/service-direct/SMWinservice.py b/service-direct/SMWinservice.py deleted file mode 100644 index def79ca..0000000 --- a/service-direct/SMWinservice.py +++ /dev/null @@ -1,98 +0,0 @@ -''' -SMWinservice -by Davide Mastromatteo - -Base class to create winservice in Python ------------------------------------------ - -Instructions: - -1. Just create a new class that inherits from this base class -2. Define into the new class the variables - _svc_name_ = "nameOfWinservice" - _svc_display_name_ = "name of the Winservice that will be displayed in scm" - _svc_description_ = "description of the Winservice that will be displayed in scm" -3. Override the three main methods: - def start(self) : if you need to do something at the service initialization. - A good idea is to put here the inizialization of the running condition - def stop(self) : if you need to do something just before the service is stopped. - A good idea is to put here the invalidation of the running condition - def main(self) : your actual run loop. Just create a loop based on your running condition -4. Define the entry point of your module calling the method "parse_command_line" of the new class -5. Enjoy -''' - -import socket - -import win32serviceutil - -import servicemanager -import win32event -import win32service - - -class SMWinservice(win32serviceutil.ServiceFramework): - '''Base class to create winservice in Python''' - - _svc_name_ = 'pythonService' - _svc_display_name_ = 'Python Service' - _svc_description_ = 'Python Service Description' - - @classmethod - def parse_command_line(cls): - ''' - ClassMethod to parse the command line - ''' - win32serviceutil.HandleCommandLine(cls) - - def __init__(self, args): - ''' - Constructor of the winservice - ''' - win32serviceutil.ServiceFramework.__init__(self, args) - self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) - socket.setdefaulttimeout(60) - - def SvcStop(self): - ''' - Called when the service is asked to stop - ''' - self.stop() - self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) - win32event.SetEvent(self.hWaitStop) - - def SvcDoRun(self): - ''' - Called when the service is asked to start - ''' - self.start() - servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, - servicemanager.PYS_SERVICE_STARTED, - (self._svc_name_, '')) - self.main() - - def start(self): - ''' - Override to add logic before the start - eg. running condition - ''' - pass - - def stop(self): - ''' - Override to add logic before the stop - eg. invalidating running condition - ''' - pass - - def main(self): - ''' - Main class to be ovverridden to add logic - ''' - pass - - -# entry point of the module: copy and paste into the new module -# ensuring you are calling the "parse_command_line" of the new created class -if __name__ == '__main__': - SMWinservice.parse_command_line() diff --git a/service-direct/debug.bat b/service-direct/debug.bat deleted file mode 100644 index a140f65..0000000 --- a/service-direct/debug.bat +++ /dev/null @@ -1,2 +0,0 @@ -python C:\Users\matth\Documents\GitHub\bapsicle\install\windows_service.py debug -TIMEOUT 10 \ No newline at end of file diff --git a/service-direct/install.bat b/service-direct/install.bat deleted file mode 100644 index e6e4225..0000000 --- a/service-direct/install.bat +++ /dev/null @@ -1,12 +0,0 @@ -cd /D "%~dp0" -pip install -r requirements.txt -pip install -r requirements-windows.txt -pip install -e ..\ -python windows_service.py install - -mkdir "C:\Program Files\BAPSicle" -cd "C:\Program Files\BAPSicle\" -mkdir state - -copy "C:\Program Files\Python37\Lib\site-packages\pywin32_system32\pywintypes37.dll" "C:\Program Files\Python37\Lib\site-packages\win32\" -TIMEOUT 10 \ No newline at end of file diff --git a/service-direct/windows_service.py b/service-direct/windows_service.py deleted file mode 100644 index f0df182..0000000 --- a/service-direct/windows_service.py +++ /dev/null @@ -1,36 +0,0 @@ -from server import BAPSicleServer -from pathlib import Path -from SMWinservice import SMWinservice -import time -import multiprocessing - -import sys -sys.path.append("..\\") - - -class BAPScileAsAService(SMWinservice): - _svc_name_ = "BAPSicle" - _svc_display_name_ = "BAPSicle Server" - _svc_description_ = "BAPS development has been frozen for a while, but this new spike of progress is dripping." - - def start(self): - self.isrunning = True - self.server = multiprocessing.Process(target=BAPSicleServer).start() - - def stop(self): - print("stopping") - self.isrunning = False - try: - self.server.terminate() - self.server.join() - except: - pass - - def main(self): - while self.isrunning: - time.sleep(1) - print("BAPSicle is running.") - - -if __name__ == '__main__': - BAPScileAsAService.parse_command_line() From 51559c4311ba9f9eaa7a145e10d148e9fdc1615f Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Thu, 29 Oct 2020 20:01:47 +0000 Subject: [PATCH 15/16] Fix readme image and aka --- README.md | 2 +- dev/logo.png | Bin 53925 -> 51976 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf15246..025393e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Bapsicle -### AKA The Next Gen BAPS server +### a.k.a. The Next-Gen BAPS server !["BAPSicle logo, a pink melting ice lolly."](/dev/logo.png "BAPSicle Logo") diff --git a/dev/logo.png b/dev/logo.png index c5d708fe91e9ecb7937c3a5a258b2bb44f025355..f8d1e66338a558758da7dfdcbb30f34b9221d2f2 100644 GIT binary patch literal 51976 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