Skip to content

Commit

Permalink
more attempt at sharemounter integration
Browse files Browse the repository at this point in the history
  • Loading branch information
twocanoes committed Jan 12, 2024
1 parent d0b70c3 commit 18e44d1
Show file tree
Hide file tree
Showing 9 changed files with 425 additions and 184 deletions.
2 changes: 1 addition & 1 deletion Profile Manifest/com.twocanoes.xcreds.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<key>pfm_app_url</key>
<string>https://github.com/twocanoes/xcreds</string>
<key>pfm_description</key>
<string>XCreds 4.0 (6226) OAuth Settings</string>
<string>XCreds 4.0 (6231) OAuth Settings</string>
<key>pfm_documentation_url</key>
<string>https://twocanoes.com/knowledge-base/xcreds-admin-guide/#preferences</string>
<key>pfm_domain</key>
Expand Down
34 changes: 21 additions & 13 deletions ShareMounterMenu.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,16 @@ class ShareMounterMenu: NSObject {

@objc func updateShares(connected: Bool=false, tickets: Bool=false) {

guard let kerbUser = PasswordUtils().kerberosPrincipalFromCurrentLoggedInUser() else {

return
}

if (sharePrefs?.integer(forKey: "Version") ?? 0) >= 1 {
shareMounterQueue.sync(execute: {
self.myShareMounter.connectedState = connected
self.myShareMounter.tickets = tickets
self.myShareMounter.userPrincipal = defaults.string(forKey: PrefKeys.userPrincipal.rawValue)!
self.myShareMounter.userPrincipal = kerbUser
self.myShareMounter.getMountedShares()
self.myShareMounter.getMounts()
self.myShareMounter.mountShares()
Expand All @@ -47,18 +52,21 @@ class ShareMounterMenu: NSObject {

klistUtil.klist()

if !klistUtil.state {
myLogger.logit(.debug, message: "No valid ticket, not attempting to mount shares.")

// NotificationQueue.default.enqueue(updateNotification, postingStyle: .now)

return NSMenu.init()
}

if defaults.object(forKey: PrefKeys.userShortName.rawValue) == nil {
myLogger.logit(.debug, message: "No user name, not attempting to mount shares.")
return NSMenu.init()
}
// if !klistUtil.state {
// myLogger.logit(.debug, message: "No valid ticket, not attempting to mount shares.")
//
//// NotificationQueue.default.enqueue(updateNotification, postingStyle: .now)
//
// return NSMenu.init()
// }
// guard let user = try? PasswordUtils.getLocalRecord(getConsoleUser()) else {
//
// return NSMenu()
// }
// if defaults.object(forKey: PrefKeys.userShortName.rawValue) == nil {
// myLogger.logit(.debug, message: "No user name, not attempting to mount shares.")
// return NSMenu.init()
// }

if myShareMounter.all_shares.count > 0 {
// Menu Items and Menu
Expand Down
6 changes: 5 additions & 1 deletion XCreds/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, DSQueryable {
var screenIsLocked=true
var isDisplayAsleep=true
var waitForScreenToWake=false
// @IBOutlet var shareMounterMenu: ShareMounterMenu?
@IBOutlet weak var statusMenu: NSMenu!

var shareMenu:NSMenu?
var statusBarItem:NSStatusItem?

func updateStatusMenuIcon(showDot:Bool){
Expand All @@ -44,6 +45,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, DSQueryable {
statusBarItem?.isVisible=true
statusBarItem?.menu = statusMenu
self.statusBarItem?.button?.image=NSImage(named: "xcreds menu icon")
// shareMounterMenu = ShareMounterMenu()
// shareMounterMenu?.updateShares()
// shareMenu = shareMounterMenu?.buildMenu()

let defaultsPath = Bundle.main.path(forResource: "defaults", ofType: "plist")

Expand Down
12 changes: 12 additions & 0 deletions XCreds/PasswordUtils.swift
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,18 @@ class PasswordUtils: NSObject {

}

func kerberosPrincipalFromCurrentLoggedInUser() -> String? {
guard let user = try? PasswordUtils.getLocalRecord(getConsoleUser()),
let kerbPrincArray = user.value(forKey: "dsAttrTypeNative:_xcreds_activedirectory_kerberosPrincipal") as? Array <String>,
let kerbPrinc = kerbPrincArray.first else
{
return nil
}
return kerbPrinc
}



/// Searches DSLocal for an account short name and returns the `ODRecord` for the user if found.
///
/// - Parameter shortName: The name of the user to search for as a `String`.
Expand Down

0 comments on commit 18e44d1

Please sign in to comment.