diff --git a/README.md b/README.md index 1d9bfd5..33d491a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,5 @@ # OSDA -## Org Secure Data Accessor -Essentially just a wrapper for sshfs. - -Built in Kotlin, and utilizes [Jexer](https://git.ouroboros.group/limepotato/jexer) +Wrapper for sshfs, built in Kotlin, and utilizes [Jexer](https://git.ouroboros.group/limepotato/jexer) ## Installation Instructions: diff --git a/build.gradle.kts b/build.gradle.kts index e16da0e..6613caa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,4 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import groovy.xml.dom.DOMCategory.attributes plugins { kotlin("jvm") version "1.9.22" diff --git a/src/main/kotlin/org/bm00/DataAccessor/Application.kt b/src/main/kotlin/org/bm00/DataAccessor/Application.kt index 5d2b55b..55e8a87 100644 --- a/src/main/kotlin/org/bm00/DataAccessor/Application.kt +++ b/src/main/kotlin/org/bm00/DataAccessor/Application.kt @@ -5,6 +5,7 @@ import jexer.demos.DemoApplication import org.bm00.DataAccessor.windows.WelcomeWindow import java.util.* +//// OS CHECKER //// enum class OS { WINDOWS, LINUX, MAC } @@ -34,6 +35,7 @@ val osName = OS.LINUX -> "LINUX" else -> throw Exception("Operating System could not be detected!") } +//// OS CHECKER //// // Set Jexer backend type // Possible answers: SWING, XTERM, ECMA48 diff --git a/src/main/kotlin/org/bm00/DataAccessor/windows/LoginWindow.kt b/src/main/kotlin/org/bm00/DataAccessor/windows/LoginWindow.kt index a97ddb5..f17aec9 100644 --- a/src/main/kotlin/org/bm00/DataAccessor/windows/LoginWindow.kt +++ b/src/main/kotlin/org/bm00/DataAccessor/windows/LoginWindow.kt @@ -7,7 +7,7 @@ import jexer.layout.StretchLayoutManager import org.bm00.DataAccessor.osName import java.util.* - +//// OS CHECKER //// enum class OS { WINDOWS, LINUX, MAC } @@ -37,7 +37,7 @@ val osName = OS.LINUX -> "LINUX" else -> throw Exception("Operating System could not be detected!") } - +//// OS CHECKER //// class LoginWindow private constructor(parent: TApplication, flags: Int) : TWindow(parent, "Login", 0, 0, 36, 19, flags) { @@ -54,7 +54,7 @@ class LoginWindow private constructor(parent: TApplication, flags: Int) : loginActivityWindows() } else { - TODO() + throw Exception ("The Operating-System you are on is not recognized, and thus this program cannot be run!") } } }, @@ -77,7 +77,7 @@ class LoginWindow private constructor(parent: TApplication, flags: Int) : loginActivityWindows() } else { - TODO() + throw Exception ("The Operating-System you are on is not recognized, and thus this program cannot be run!") } } }, @@ -89,15 +89,18 @@ class LoginWindow private constructor(parent: TApplication, flags: Int) : } ); + + //Called if on Linux and the login has been initiated fun loginActivityLinux() { var usernameDetail = loginField.text var serverDetail = serverField.text - //openssh-askpass as well + // Create directory using bash ProcessBuilder("mkdir", "/tmp/osda_mount") .redirectOutput(ProcessBuilder.Redirect.INHERIT) .redirectError(ProcessBuilder.Redirect.INHERIT) .start() .waitFor() + // mount remote directory via sshfs ProcessBuilder( "sshfs", "$usernameDetail@$serverDetail:/home/$usernameDetail", @@ -109,25 +112,20 @@ class LoginWindow private constructor(parent: TApplication, flags: Int) : .waitFor() } + //Called if on Windows and the login has been initiated fun loginActivityWindows() { var usernameDetail = loginField.text var serverDetail = serverField.text + // Due to the way sshfs-win works, we will additionally ask the user for a password var passwordBox = inputBox("Password", "Please enter your remote password") var passwordDetail = passwordBox.text - //TODO: https://github.com/winfsp/sshfs-win for sshfs? - // and https://github.com/git-ecosystem/git-credential-manager/ for askpass???? - // `net use X: \\sshfs\username@servername` + // use the windows network mount command to mount via sshfs-win ProcessBuilder( "net", "use", "O:", - "\\\\sshfs\\$usernameDetail@$serverDetail", + "\\\\sshfs\\$usernameDetail@$serverDetail:/home/$usernameDetail", "$passwordDetail" - /* - "net", - "use", - "X:", - "\\\\sshfs\\$usernameDetail@$serverDetail:/home/$usernameDetail"*/ ) .redirectOutput(ProcessBuilder.Redirect.INHERIT) .redirectError(ProcessBuilder.Redirect.INHERIT) @@ -143,8 +141,10 @@ class LoginWindow private constructor(parent: TApplication, flags: Int) : ) ) - addCheckBox( CENTERED + 4, CENTERED + 5, "Shared Folder?",false) + var sharedCheck = addCheckBox( CENTERED + 4, CENTERED + 5, "Shared Folder?",false) + //TODO: Login to shared folder?... hmmm + // Initiates login process after determining OS addButton("Login", CENTERED + 9, CENTERED + 8, object : TAction() { override fun DO() { @@ -155,12 +155,14 @@ class LoginWindow private constructor(parent: TApplication, flags: Int) : loginActivityWindows() } else { - TODO() + //TODO: Research Mac Support, will be difficult without a Mac for testing... + throw Exception ("The Operating-System you are on is not recognized, and thus this program cannot be run!") } } } ) + // Closes login window addButton("Back...", CENTERED + 8, CENTERED + 10, object : TAction() { override fun DO() { diff --git a/src/main/kotlin/org/bm00/DataAccessor/windows/WelcomeWindow.kt b/src/main/kotlin/org/bm00/DataAccessor/windows/WelcomeWindow.kt index b2a5433..bf83e45 100644 --- a/src/main/kotlin/org/bm00/DataAccessor/windows/WelcomeWindow.kt +++ b/src/main/kotlin/org/bm00/DataAccessor/windows/WelcomeWindow.kt @@ -26,6 +26,7 @@ class WelcomeWindow private constructor(parent: TApplication, flags: Int) : } ) + // Close program, after detecting OS and unmounting the filesystem if necessary. addButton("Exit...", CENTERED + 28, CENTERED, object : TAction() { override fun DO() {