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

Kai Reinhard
19.30.2021 7a9de4f71100a3809532ae02c642d48edd38cd72
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.LoggerFactory
import java.awt.Desktop
import java.util.*
 
object RunningMode {
    private val log = LoggerFactory.getLogger(RunningMode::class.java)
    private var osType: OSType? = null
    var webDevelopment: Boolean = false
        internal set
    val headlessMode: Boolean = System.getProperty("java.awt.headless") == "true"
    val desktopSupported = !headlessMode && Desktop.isDesktopSupported()
    val desktopSupportsBrowse = desktopSupported && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)
    @JvmStatic
    val dockerMode = System.getProperty("docker") == "true"
 
    @JvmStatic
    val userManagement = UserManagement.SINGLE
 
    @JvmStatic
    val oSType: OSType?
        get() {
            if (osType == null) {
                val osTypeString = System.getProperty("os.name")
                osType = if (osTypeString == null) {
                    OSType.OTHER
                } else if (osTypeString.toLowerCase().contains("mac")) {
                    OSType.MAC_OS
                } else if (osTypeString.toLowerCase().contains("win")) {
                    OSType.WINDOWS
                } else if (osTypeString.toLowerCase().contains("linux")) {
                    OSType.LINUX
                } else if (osTypeString.toLowerCase().contains("freebsd")) {
                    OSType.FREEBSD
                } else {
                    OSType.OTHER
                }
            }
            return osType
        }
 
    val runningInIDE: Boolean
        get() {
            if (!webBundled()) {
                log.warn("*** BorgButler seems to run inside an IDE. ***")
                return true
            } else {
                return false
            }
        }
 
    /**
     * After setting all values you should call this method for a logging output with all current settings.
     */
    fun logMode() {
        log.info(
            "Starting ${Version.getInstance().appName} ${Version.getInstance().version} ("
                    + Version.getInstance().formatBuildDateISO(TimeZone.getDefault())
                    + ") with: webDevelopment=$webDevelopment, desktopSupported=$desktopSupported, javaVersion='"
                    + System.getProperty("java.version") + "'."
        )
    }
 
    fun webBundled(): Boolean {
        var available = false
        RunningMode::class.java.getResourceAsStream("/webapp/index.html")?.use {
        //RunningMode::class.java.getResourceAsStream("/logback-spring.xml")?.use {
            log.info("Web app found (is bundled).")
            available = true
        }
        if (!available) {
            log.info("Web app isn't bundled (running in IDE?)")
        }
        return available
    }
 
    enum class UserManagement {
        SINGLE
    }
 
    enum class OSType {
        MAC_OS, WINDOWS, LINUX, FREEBSD, OTHER
    }
}