[Project] An extensible (plugin based) windows service that performs actions for NFC events

  • Package updated.
    "Update 4: Attempted to support having multiple readers plugged in simultaneously. I only have one reader so I can't test if its fixed but it still works with a single reader."

    I need other people to test.

    I've also added some very basic upgrade instructions. Let me know if it works any better (or worse).

  • Community Helper

    *EDIT - belay that, it works perfectly. Even with all the readers plugged in. I just can't follow simple upgrade instructions and have lost my compute priveleges for the day.

  • Community Helper

    Any idea why the service would be stopping after 5 minutes on lockscreen, dude?

  • The service is supposed to go into a suspend state as soon as it gets a "OnSessionChange" message from the OS. The whole time it's locked, the service should be essentially not doing anything, but still set as "Running".
    In the "NFCRingServiceHost.exe.config" file is an isDebug setting near the bottom of the file. Set that to "True" and then lock the pc for 5 mins. Attach the log.txt file here if the service stopped. At the moment it just logs what events it got and startup / shutdown signals so theres no private data in it (human readable if you want to check it out). That'll be able to tell me what is going on.

  • @Lokki
    Also, I just left mine locked for about 3 hours while i was out and it was still running when I came back. So we'll have to troubleshoot for cause (i cant immediately replicate it).

  • Community Helper

    I saw it happen this time - I don't use a screen saver or anything but the screen blinked black. Then no login.

    16-02-17 17:49:05 Core starting
    16-02-17 17:49:05 Core started
    16-02-17 17:49:05 NFC Reading started
    16-02-17 17:49:05 Plugins loading
    16-02-17 17:49:05 Plugins loaded
    16-02-17 17:49:05 Service started
    16-02-17 17:49:10 Session state changed: SessionLock
    16-02-17 17:49:10 Core stopping
    16-02-17 17:49:10 NFC Reading stopped
    16-02-17 17:49:10 Core stopped
    16-02-17 17:49:10 Workstation Locked
    16-02-17 17:54:51 Session state changed: SessionUnlock
    16-02-17 17:54:51 Workstation unlocking or logging on
    16-02-17 17:54:53 Core starting
    16-02-17 17:54:53 Core started

  • Package updated. Now with even more logging.
    Also, I tested it on win 7 and 10 tonight so I can confirm it works on everything since win7 and its just specific configurations that have problems that I need to look at.

  • Apologies to anyone who is in the process of updating, I just remembered that I needed to handle bad data from a card reader better than just crashing the whole system. So I've just added update 6.

  • Okay. Update 7 is the last for the night. Could other users with windows 10 please test and see if the credential provider / unlock part fails if the machine is left locked for 5 minutes. I need to find out if it is specific hardware that is causing it or windows 10 in general.

  • Random question. Does anyone actually need a 32-bit version?
    I just had a quick look and I don't think there is any reason it can't be made except that I don't have a single 32-bit machine anywhere (not even among friends and family) so I'm not sure its worth any effort.

  • Community Helper

    There'll be someone out there who is stuck running 32 bit. I have a 32 bit win10 machine here for testing.

  • I am alive. I made it to the USA and i have my nfc reader with me. Unfortunately, I don't have a PC yet but I can continue development using my laptop (and windows 7).
    If people could use the issue tracker on https://github.com/mclear/Sesame that'd give my work a bit more direction.

  • NFC Ring Team

    Welcome to the US Maz! We hope you settle in well!

  • I was just tinkering and found a neat feature. Because my credential provider talks to the service, I can have it suspend the services normal functions when a credential window is active. Which means I can use my ring to log into remote servers etc. its just a matter of getting the name of the server from the context of the credential provider (im sure its there somewhere. otherwise it sends my usual username and password).
    Anyway. just thought that was cool.

  • NFC Ring Team

    @maz_net_au haha yeah that is awesome!! Video coming soon? :p

  • I'm in Japan again for a while. Hopefully today I can go and source some tiny NFC reader from Akihabara and then continue working on it this weekend (its a long weekend in Japan). I'll definitely post a video when i've made some more progress. I'll also update the github. But now that I've got this idea, I'm going to move the credential provider part of the service as a main part, rather than as a plugin so that it makes more sense to use this so suspend plugin processing (so that swiping a ring with an RDP credential prompt up doesnt lock your local machine instead of passing the login). Otherwise i'd have to make a more complex rules engine for processing plugins

    i.e. you'd "activate" a plugin to run "only when the machine is logged in" and set the order that they ran and also make one be able to stop processing all of the others. and this might have to be registered on a "per ring" basis.
    check ring
    -> get list of plugins
    -> get machine state (locked, unlocked, awaiting credential)
    -> run plugins in order
    -> check plugin result, and stop processing plugins if required

    Its all doable. I'll work on it and post an update when i've made a decision for how I want to do things.