mirror of https://github.com/micromata/borgbackup-butler.git

...
Kai Reinhard
19.12.2018 3167498290b9b988b8adbafc7a9c5faba73ba833
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package de.micromata.borgbutler.server;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.io.File;
import java.util.TimeZone;
 
public class RunningMode {
    private static Logger log = LoggerFactory.getLogger(RunningMode.class);
    private static OSType osType;
 
    public enum Mode {PRODUCTION, DEVELOPMENT}
 
    public enum ServerType {DESKTOP, SERVER}
 
    public enum UserManagement {SINGLE}
 
    public enum OSType {MAC_OS, WINDOWS, LINUX, OTHER}
 
    private static boolean running;
    private static File baseDir;
    private static Boolean development;
    private static ServerType serverType;
    private static UserManagement userManagement = UserManagement.SINGLE;
 
    public static Mode getMode() {
        return isDevelopmentMode() ? Mode.DEVELOPMENT : Mode.PRODUCTION;
    }
 
    public static boolean isDevelopmentMode() {
        if (development == null) {
            development = new File(ServerConfiguration.getApplicationHome(), "borgbutler-core").exists();
            if (development) {
                log.warn("*** Starting BorgButler server in development mode. This mode shouldn't be used in production environments. ***");
            }
        }
        return development;
    }
 
    public static OSType getOSType() {
        if (osType == null) {
            String osTypeString = System.getProperty("os.name");
            if (osTypeString == null) {
                osType = OSType.OTHER;
            } else if (osTypeString.toLowerCase().contains("mac")) {
                osType = OSType.MAC_OS;
            } else if (osTypeString.toLowerCase().contains("win")) {
                osType = OSType.WINDOWS;
            } else if (osTypeString.toLowerCase().contains("linux")) {
                osType = OSType.LINUX;
            } else {
                osType = OSType.OTHER;
            }
        }
        return osType;
    }
 
    public static ServerType getServerType() {
        return serverType;
    }
 
    public static void setServerType(ServerType serverType) {
        if (RunningMode.serverType != null && serverType != RunningMode.serverType) {
            throw new IllegalArgumentException("Can't set server-type twice with different values: new='"
                    + serverType + "', old='" + RunningMode.serverType + "'.");
        }
        RunningMode.serverType = serverType;
    }
 
    public static UserManagement getUserManagement() {
        return userManagement;
    }
 
    /**
     * After setting all values you should call this method for a logging output with all current settings.
     */
    public static void logMode() {
        log.info("Starting " + Version.getInstance().getAppName() + " " + Version.getInstance().getVersion()
                + " (" + Version.getInstance().formatBuildDateISO(TimeZone.getDefault())
                + ") with: mode='" + RunningMode.getMode() + "', serverType='" + RunningMode.serverType
                + "', home dir='" + ServerConfiguration.getApplicationHome() + "', javaVersion='"
                + System.getProperty("java.version") + "'.");
    }
}