| ... | ... |
@@ -0,0 +1,16 @@ |
| 1 |
+{
|
|
| 2 |
+ "server": {
|
|
| 3 |
+ "address": "127.0.0.1", |
|
| 4 |
+ "csv": "output.csv", |
|
| 5 |
+ "csvMax": 1000, |
|
| 6 |
+ "csvTemp": "output.temp", |
|
| 7 |
+ "cachedir": "cache", |
|
| 8 |
+ "debug": 0, |
|
| 9 |
+ "logfile": "output.log", |
|
| 10 |
+ "name": "newsProxy", |
|
| 11 |
+ "port": 8081, |
|
| 12 |
+ "version": "1.0", |
|
| 13 |
+ "pageStart": "pageBegin.skel", |
|
| 14 |
+ "pageEnd": "pageEnd.skel" |
|
| 15 |
+ } |
|
| 16 |
+} |
| ... | ... |
@@ -0,0 +1,79 @@ |
| 1 |
+# |
|
| 2 |
+# Copyright (C) Actility, SA. All Rights Reserved. |
|
| 3 |
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER |
|
| 4 |
+# |
|
| 5 |
+# This program is free software; you can redistribute it and/or |
|
| 6 |
+# modify it under the terms of the GNU General Public License version |
|
| 7 |
+# 2 only, as published by the Free Software Foundation. |
|
| 8 |
+# |
|
| 9 |
+# This program is distributed in the hope that it will be useful, but |
|
| 10 |
+# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 12 |
+# General Public License version 2 for more details (a copy is |
|
| 13 |
+# included at /legal/license.txt). |
|
| 14 |
+# |
|
| 15 |
+# You should have received a copy of the GNU General Public License |
|
| 16 |
+# version 2 along with this work; if not, write to the Free Software |
|
| 17 |
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA |
|
| 18 |
+# 02110-1301 USA |
|
| 19 |
+# |
|
| 20 |
+# Please contact Actility, SA., 4, rue Ampere 22300 LANNION FRANCE |
|
| 21 |
+# or visit www.actility.com if you need additional |
|
| 22 |
+# information or have any questions. |
|
| 23 |
+# |
|
| 24 |
+import json |
|
| 25 |
+from userio import * |
|
| 26 |
+import os |
|
| 27 |
+import sys |
|
| 28 |
+ |
|
| 29 |
+server = None |
|
| 30 |
+ |
|
| 31 |
+def get_server(): |
|
| 32 |
+ global server |
|
| 33 |
+ if server == None: |
|
| 34 |
+ with open("config.json") as config:
|
|
| 35 |
+ json_data = json.load(config) |
|
| 36 |
+ server = json_data["server"] |
|
| 37 |
+ return server |
|
| 38 |
+ |
|
| 39 |
+default_config = {
|
|
| 40 |
+ "server": {
|
|
| 41 |
+ "port": 8081, |
|
| 42 |
+ "address": "0.0.0.0", |
|
| 43 |
+ "logfile": "output.log", |
|
| 44 |
+ "csv": "output.csv", |
|
| 45 |
+ "cachedir": "cache", |
|
| 46 |
+ "csvTemp": "output.temp", |
|
| 47 |
+ "csvMax": 10, |
|
| 48 |
+ "name": "MyProxy", |
|
| 49 |
+ "version": "1.0", |
|
| 50 |
+ "debug": 1, |
|
| 51 |
+ "pageStart": "pageBegin.skel", |
|
| 52 |
+ "pageEnd": "pageEnd.skel" |
|
| 53 |
+ } |
|
| 54 |
+} |
|
| 55 |
+ |
|
| 56 |
+def get_debug(): |
|
| 57 |
+ return server['debug'] |
|
| 58 |
+ |
|
| 59 |
+def get_logfile(): |
|
| 60 |
+ return server['logfile'] |
|
| 61 |
+ |
|
| 62 |
+def get_pageBegin(): |
|
| 63 |
+ return server['pageStart'] |
|
| 64 |
+ |
|
| 65 |
+def get_pageEnd(): |
|
| 66 |
+ return server['pageEnd'] |
|
| 67 |
+ |
|
| 68 |
+# Generate the default config. Will override existing config. |
|
| 69 |
+def generate_config(): |
|
| 70 |
+ warn("Generating default config...")
|
|
| 71 |
+ with open("config.json", "w") as config:
|
|
| 72 |
+ json.dump(default_config, config, indent=2, sort_keys=True) |
|
| 73 |
+ ok("Generated default config!")
|
|
| 74 |
+ |
|
| 75 |
+if not os.path.exists("config.json"):
|
|
| 76 |
+ warn("No configuration file found!")
|
|
| 77 |
+ generate_config() |
|
| 78 |
+ say("Please edit the configuration file. ThingPark Status Server will now shutdown.")
|
|
| 79 |
+ sys.exit(1) |
| ... | ... |
@@ -0,0 +1,78 @@ |
| 1 |
+# |
|
| 2 |
+# Copyright (C) Actility, SA. All Rights Reserved. |
|
| 3 |
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER |
|
| 4 |
+# |
|
| 5 |
+# This program is free software; you can redistribute it and/or |
|
| 6 |
+# modify it under the terms of the GNU General Public License version |
|
| 7 |
+# 2 only, as published by the Free Software Foundation. |
|
| 8 |
+# |
|
| 9 |
+# This program is distributed in the hope that it will be useful, but |
|
| 10 |
+# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 12 |
+# General Public License version 2 for more details (a copy is |
|
| 13 |
+# included at /legal/license.txt). |
|
| 14 |
+# |
|
| 15 |
+# You should have received a copy of the GNU General Public License |
|
| 16 |
+# version 2 along with this work; if not, write to the Free Software |
|
| 17 |
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA |
|
| 18 |
+# 02110-1301 USA |
|
| 19 |
+# |
|
| 20 |
+# Please contact Actility, SA., 4, rue Ampere 22300 LANNION FRANCE |
|
| 21 |
+# or visit www.actility.com if you need additional |
|
| 22 |
+# information or have any questions. |
|
| 23 |
+# |
|
| 24 |
+from colorama import Fore, Back, Style |
|
| 25 |
+from time import gmtime, strftime |
|
| 26 |
+import configuration |
|
| 27 |
+ |
|
| 28 |
+name = "newsProxy" |
|
| 29 |
+ |
|
| 30 |
+def say(message): |
|
| 31 |
+ date_string = strftime("%Y-%m-%d %H:%M:%S %z", gmtime())
|
|
| 32 |
+ prefix = Fore.CYAN + name + " " + Fore.RESET + date_string + " " |
|
| 33 |
+ with open(configuration.get_logfile(), "a+") as f: |
|
| 34 |
+ f.write(prefix + Style.DIM + message + Style.RESET_ALL+"\n") |
|
| 35 |
+ f.close() |
|
| 36 |
+ |
|
| 37 |
+ print(prefix + Style.DIM + message + Style.RESET_ALL) |
|
| 38 |
+ |
|
| 39 |
+ |
|
| 40 |
+def ok(message, detail=""): |
|
| 41 |
+ date_string = strftime("%Y-%m-%d %H:%M:%S %z", gmtime())
|
|
| 42 |
+ level = Fore.GREEN + "[OK] " + Fore.RESET |
|
| 43 |
+ prefix = Fore.CYAN + name + " " + Fore.RESET + date_string + " " |
|
| 44 |
+ with open(configuration.get_logfile(), "a+") as f: |
|
| 45 |
+ f.write(prefix + level + Style.BRIGHT + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL+"\n") |
|
| 46 |
+ f.close() |
|
| 47 |
+ print(prefix + level + Style.BRIGHT + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL) |
|
| 48 |
+ |
|
| 49 |
+ |
|
| 50 |
+def warn(message, detail=""): |
|
| 51 |
+ date_string = strftime("%Y-%m-%d %H:%M:%S %z", gmtime())
|
|
| 52 |
+ prefix = Fore.CYAN + name + " " + Fore.RESET + date_string + " " |
|
| 53 |
+ level = Fore.YELLOW + "[WARN] " + Fore.RESET |
|
| 54 |
+ with open(configuration.get_logfile(), "a+") as f: |
|
| 55 |
+ f.write(prefix + level + Style.BRIGHT + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL+"\n") |
|
| 56 |
+ f.close() |
|
| 57 |
+ print(prefix + level + Style.BRIGHT + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL) |
|
| 58 |
+ |
|
| 59 |
+ |
|
| 60 |
+def error(message, detail=""): |
|
| 61 |
+ date_string = strftime("%Y-%m-%d %H:%M:%S %z", gmtime())
|
|
| 62 |
+ prefix = Fore.CYAN + name + " " + Fore.RESET + date_string + " " |
|
| 63 |
+ level = Fore.RED + "[ERR] " + Fore.RESET |
|
| 64 |
+ with open(configuration.get_logfile(), "a+") as f: |
|
| 65 |
+ f.write(prefix + level + Style.BRIGHT + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL+"\n") |
|
| 66 |
+ f.close() |
|
| 67 |
+ print(prefix + level + Style.BRIGHT + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL) |
|
| 68 |
+ |
|
| 69 |
+ |
|
| 70 |
+def debug(message, detail=""): |
|
| 71 |
+ if configuration.get_debug() != 0: |
|
| 72 |
+ date_string = strftime("%Y-%m-%d %H:%M:%S %z", gmtime())
|
|
| 73 |
+ prefix = Fore.CYAN + name + " " + Fore.RESET + date_string + " " |
|
| 74 |
+ level = Fore.MAGENTA + "[DEBUG] " + Fore.RESET |
|
| 75 |
+ with open(configuration.get_logfile(), "a+") as f: |
|
| 76 |
+ f.write(prefix + level + Style.DIM + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL+"\n") |
|
| 77 |
+ f.close() |
|
| 78 |
+ print(prefix + level + Style.DIM + message + Style.RESET_ALL + " " + detail + Style.RESET_ALL) |