Code Monkey home page Code Monkey logo

uhppoted-httpd's Introduction

build

uhppoted implements a set of cross-platform building blocks for access control systems based on the UHPPOTE UT0311-L0x TCP/IP Wiegand access control boards. Currently available components include:

The components supplement the manufacturer supplied application which is 'Windows-only' and provides limited support for integration with other systems.

FYA, after much discussion it has been decided that uhppoted is pronounced u-hop-id-ay-d (juː hɒp ɪt eɪd).

Operating systems

Supported operating systems:

  • Linux
  • MacOS
  • Windows
  • ARM and ARM7 (e.g. RaspberryPi)

Language Bindings

The primary development language for this repository is Go, but code generated native bindings for the following languages also exist:

shared-lib/dylib/DLL

uhppoted-dll implements a shared-lib/DLL for interop with languages other than Go. The implementation includes bindings to:

  • C
  • C++
  • C#
  • Python
  • Clozure Common Lisp

3rd party integrations

Compatible Hardware

As per this issue [Question] Compatible Hardware, UHPPOTE appears to be a specific branding (or distributor) for the access control boards manufactured by Shenzhen Wiegand Industrial Co., Ltd.

The software in this repository has been tested and is known to work with these specific boards:

Source Item
Amazon UHPPOTE Professional Wiegand 26-40 Bit TCP IP Network Access Control Board with Software For 4 Door 4 Reader
AliExpress TCP/IP RFID ACCESS CONTROL SYSTEM Wiegand 26

Firmware versions

Version Notes
6.56 Minimum firmware version (cf. carbonsphere/UHPPOTE
6.62 Lowest firmware version in use
8.92 Latest tested firmware version

Notes:

  1. Firmware v6.62 sends anomalous listen events with 0x19 as the start of message identifier. This appears to have been fixed in later firmware versions but patches to support these events are included in:

Readers

Almost any reader with a Wiegand-26 interface should probably work (there have been reports of offbrand readers that don't) but the readers below are in active use:

Reader Notes
HID ProxPoint Plus 6500 Old stock and/or refurbished readers are often available on ebay
IKeys barcode and QR code scanner Ref. Put Card - Date with Time
Newland FM430L barcode and QR code scanner Ref. Put Card - Date with Time

Release Notes

Current Release

v0.8.8 - 2024-03-28

  1. Added uhppoted-app-home-assistant experimental Home Assistant integration.
  2. restore-default-parameters function across all subprojects.
  3. Added public Docker images for uhppote-simulator, uhppoted-rest, uhppoted-mqtt, and uhppoted-httpd to ghcr.io.
  4. Bumped Go version to 1.22.
  5. Reworked uhppoted-app-wild-apricot member/group resolution logic.

Modules

Module Description
uhppote-core core library, implements the UP interface to UT0311-L0x controllers
uhppoted-lib common utility function library
uhppote-simulator UT0311-L04 simulator for development use
uhppote-cli command line interface
uhppoted-rest daemon/service with REST API for remote access to UT0311-L0x controllers
uhppoted-mqtt daemon/service with MQTT endpoint for remote access to UT0311-L0x controllers
uhppoted-app-s3 cron'able utility to download/upload access control lists from/to AWS S3
uhppoted-app-sheets cron'able utility to download/upload access control lists from/to Google Sheets
uhppoted-app-db cron'able utility to download/upload access control lists from/to a SQL DB
uhppoted-app-wild-apricot cron'able utility to manage access control lists from Wild Apricot
uhppoted-app-home-assistant Home Assistant custom component
node-red-contrib-uhppoted NodeJS nodes for Node-RED low code environment
uhppoted-nodejs Standalone NodeJS module
uhppoted-python Standalone Python package for PyPI
uhppoted-dll shared-lib/DLL for cross-language interop
uhppoted-codegen Model based code generator for native language bindings
uhppoted-tunnel UDP tunnel for remote access

Integrations

Module Description
uhppoted-app-db cron'able utility to download/upload access control lists from/to a SQL DB
uhppoted-app-s3 cron'able utility to download/upload access control lists from/to AWS S3
uhppoted-app-sheets cron'able utility to download/upload access control lists from/to Google Sheets
uhppoted-app-wild-apricot cron'able utility to manage access control lists from/t Wild Apricot
uhppoted-app-home-assistant Home Assistant custom component
node-red-contrib-uhppoted NodeJS nodes for Node-RED low code environment
kBrausew/ioBroker.wiegand-tcpip ioBroker

UI

Module Description
uhppote-cli Command line interface
uhppoted-httpd HTML browser interface

Installation

Binaries for Linux, Windows, MacOS and Raspbian/ARM7 are distributed in the tarball for each release. To install the binaries, download and extract the tarball to a directory of your choice.

The NodeRED, NodeJS and Python packages are installable from the public repositories:

Building from source

uhppoted is the parent project for the individual components which are referenced as git submodules - to clone the entire source tree:

git clone --recurse-submodules https://github.com/uhppoted/uhppoted.git

The supplied Makefile has targets to build binaries for all the supported operating systems:

make build

or

make release

To pull upstream changes for all submodules:

git submodule update --remote

Donations

If you like the project and you really want to 🙂:

References and Related Projects

  1. carbonsphere/UHPPOTE PHP
  2. carbonsphere/DoorControl PHP
  3. andrewvaughan/uhppote-rfid Python
  4. tachoknight/uhppote-tools: Go
  5. jjhuff/uhppote-go: Go
  6. pawl/Chinese-RFID-Access-Control-Library
  7. Dallas Makerspace:Reverse Engineering RFID Reader
  8. wemakerspace/wiegand-daemon
  9. wemakerspace/weigeng-js
  10. realashleybailey/DoorControl
  11. kBrausew/ioBroker.wiegand-tcpip
  12. TCP/IP Wiegand Access Controller (Zutrittskontrolle)
  13. YouTube: UHPPOTE 2 door basic set-up
  14. wouterdebie/uhppote-rs

uhppoted-httpd's People

Contributors

dependabot[bot] avatar twystd avatar uhppoted avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

uhppoted-httpd's Issues

cardholder.js

Hey there.

I didnt create a fork so I couldnt make a pull request. I was noticing that the UI for adding a card adds an additional column for the controls causing the temporary row to misaligned...

I would like to suggest a small fix for this.

in cardholder.js for onNew()...

I would slightly adjust the controls to a DIV and make it part of the NAME column...

See below my change...

export function onNew (event) {
  const tbody = document.getElementById('cardholders').querySelector('table tbody')

  if (tbody) {
    const row = tbody.insertRow()
    const name = row.insertCell()
    const controls = document.createElement('div'); //row.insertCell()
    const card = row.insertCell()
    const from = row.insertCell()
    const to = row.insertCell()
    const groups = []
    const uuid = 'U' + uuidv4()

    name.append(controls); // added line

    // 'constants' is a global object initialised by the Go template
    for (let i = 0; i < constants.groups.length; i++) {
      groups.push(row.insertCell())
    }

    row.id = uuid
    row.classList.add('new')

    name.style = 'border-right:0;'
    name.classList.add('rowheader')

    controls.style = 'border-left:0;float:right;'
    controls.classList.add('controls')
    
    controls.innerHTML = '<span id="' + uuid + '-commit"   class="control commit"   onclick="onCommit(event,\'add\')"   data-record="' + uuid + '" data-enabled="false">&#9745;</span>' +
                     '<span id="' + uuid + '-rollback" class="control rollback" onclick="onRollback(event,\'delete\')" data-record="' + uuid + '" data-enabled="false">&#9746;</span>'
    
    name.innerHTML = name.innerHTML + '<img class="flag" src="images/corner.svg" />' +
                     '<input id="' + uuid + '-name" class="field name" type="text" value="" onchange="onEdited(event)" data-record="' + uuid + '" data-original="" data-value="" placeholder="-" />'

 

error: failed to update card

Hey, currently getting an error when trying to create a card from the user interface

uhppoted-httpd  | 2024/04/23 00:58:29 WARN   423137505  failed to update card 1234567

I went to cards, clicked +, added a user name, card number, end date, and hit check. then got this in the console. I haven't been able to find a working combination (I've tried others). I can confirm that users created in the stock web UI and the CLI show up eventually.

as a comparison, I set up the uhppoted-cli as well and was able to successfully add a card that way.

running using docker compose, with image

ghcr.io/uhppoted/httpd   latest    e47723788c1c   3 weeks ago   30.3MB

What kind of information would be helpful to provide?

Allow /tmp and /var to be on different partitions - invalid cross-device link

My system is setup with /var on its own partition, along with /tmp being a tmpfs

Whenever trying to use uhppoted-httpd when it tries to write to the files, it always gives a rename : invalid cross-device link error

My understand is you need to use move instead of rename to account for them being separate partitions.

raspberrypi installation

did anyone has build for raspberry pi? i'm having a lot of problems :-(

When i try to make build return: 'OptionParser::InvalidOption: invalid option: --no-source-map' but i have Sass 3.7.4 installed

If i remove --no-source-map param in makefile the give me this error:
'Errno::EISDIR: Is a directory @ io_fread - sass/themes/light'

if i remove all sass compilation lines then:

ESLint couldn't find the config "standard" to extend from. Please check that the name of the config is correct.

The config "standard" was referenced from the config file in "/home/pi/Desktop/uhppoted-httpd/.eslintrc.js".

and if y try unsing 'Without using make' version, go build -trimpath -o bin ./... returns
go: cannot write multiple packages to non-directory bin

Manage cards without valid start/end dates

Ref.:

The UHPPOTE controller only accepts cards with a valid start and end date but there is a valid use case for uhppoted-httpd to allow a card to be created ahead-of-time without a start or end date. Assigning a default start/end date is not a solution because it potentially allows a temporary card to have unexpected access.

  • Highlight incomplete cards in the UI
  • Only load valid'ish cards to the controller
  • ACL ????
  • Update simulator to reject cards without a valid start/end date
  • Add simulator REST API to create cards without valid start/end dates for testing
  • Optional default start date ?
  • Optional default end date ?

Unable to run as service on RPI.

I'm unable to run this as a service. This is the error I get when trying so. When running it with the normal ./uhppoted-httpd --console command it runs fine but when running it as that the default login does not work.

Jul 05 16:06:11 itisasecret systemd[1]: Started UHPPOTE UTO311-L0x access card controllers HTTPD service/daemon.
Jul 05 16:06:11 itisasecret uhppoted-httpd[1685]: 2022/07/05 16:06:11 uhppoted-httpd service v0.8.0 - Linux (PID 1685)
Jul 05 16:06:11 itisasecret uhppoted-httpd[1685]: ERROR: Error checking PID lockfile '/var/uhppoted/uhppoted-httpd.pid' (stat /var/uhppoted/uhppoted-httpd.pid: permission denied)
Jul 05 16:06:11 itisasecret systemd[1]: uhppoted-httpd.service: Main process exited, code=exited, status=1/FAILURE
Jul 05 16:06:11 itisasecret systemd[1]: uhppoted-httpd.service: Failed with result 'exit-code'.

auth.json

Not sure where to locate a sample auth.json or what command to run to create this file...

[Enhancement] Cards | remove placeholder date for From and To inputs

This was extremely confusing to me as a user that these were not default values (see #27). Instead, these fields should have no placeholder or a placeholder that is blank like mm/dd/yyyy to signify that it is not automatically filled with a value

Or, make the default value today. Because as it is currently, if you use the arrow keys it will act as if the value was null / 0. i.e. if you hit the up arrow on 2024 you get 0001 instead of 2025

image

Edit: I realize this is a Safari / WebKit issue. I just so happened to be using Chrome this time and see that it is not an issue / it is much more obvious the date isn't set

Debian 11 installation problem

Hi, I'm running on debian 11 amd64
these are my step:
apt install git make wget -y

##Install Go
cd /tmp
wget https://golang.org/dl/goxxx.linux-amd64.tar.gz
tar -zxvf goxxx.linux-amd64.tar.gz -C /usr/local/
echo "export PATH=/usr/local/go/bin:${PATH}" | tee /etc/profile.d/go.sh
source /etc/profile.d/go.sh
##Verify
go version

##Install nodejs-npm
apt install nodejs npm -y
##Verify
node -v
npm -v

##Install sass
npm install -g sass

##Install eslint
npm install eslint

##Install eslint-config-standard
npm install eslint-config-standard

then:
cd /opt
git clone https://github.com/uhppoted/uhppoted-httpd.git
cd uhppoted-httpd
make build

This is output:
go fmt ./...
mkdir -p httpd/html/images/default
sass --no-source-map sass/themes/light:httpd/html/css/default
sass --no-source-map sass/themes/light:httpd/html/css/light
sass --no-source-map sass/themes/dark:httpd/html/css/dark
cp httpd/html/images/light/* httpd/html/images/default
npx eslint --fix httpd/html/javascript/*.js

Oops! Something went wrong! :(

ESLint: 8.23.0

ESLint couldn't find the config "standard" to extend from. Please check that the name of the config is correct.

The config "standard" was referenced from the config file in "/opt/uhppoted-httpd/.eslintrc.js".

If you still have problems, please stop by https://eslint.org/chat/help to chat with the team.

npm ERR! code 2
npm ERR! path /opt/uhppoted-httpd
npm ERR! command failed
npm ERR! command sh -c eslint "--fix" "httpd/html/javascript/cards.js" "httpd/html/javascript/combobox.js" "httpd/html/javascript/controllers.js" "httpd/html/javascript/db.js" "httpd/html/javascript/doors.js" "httpd/html/javascript/events.js" "httpd/html/javascript/groups.js" "httpd/html/javascript/interfaces.js" "httpd/html/javascript/login.js" "httpd/html/javascript/logs.js" "httpd/html/javascript/overview.js" "httpd/html/javascript/password.js" "httpd/html/javascript/schema.js" "httpd/html/javascript/tabular.js" "httpd/html/javascript/timezones.js" "httpd/html/javascript/uhppoted.js" "httpd/html/javascript/users.js"

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-09-02T08_34_59_721Z-debug.log
make: *** [Makefile:48: build] Errore 2

this is /root/.npm/_logs/2022-09-02T08_34_59_721Z-debug.log:
0 verbose cli [
0 verbose cli '/usr/bin/node',
0 verbose cli '/usr/share/nodejs/npm/bin/npm-cli.js',
0 verbose cli 'exec',
0 verbose cli '--',
0 verbose cli 'eslint',
0 verbose cli '--fix',
0 verbose cli 'httpd/html/javascript/cards.js',
0 verbose cli 'httpd/html/javascript/combobox.js',
0 verbose cli 'httpd/html/javascript/controllers.js',
0 verbose cli 'httpd/html/javascript/db.js',
0 verbose cli 'httpd/html/javascript/doors.js',
0 verbose cli 'httpd/html/javascript/events.js',
0 verbose cli 'httpd/html/javascript/groups.js',
0 verbose cli 'httpd/html/javascript/interfaces.js',
0 verbose cli 'httpd/html/javascript/login.js',
0 verbose cli 'httpd/html/javascript/logs.js',
0 verbose cli 'httpd/html/javascript/overview.js',
0 verbose cli 'httpd/html/javascript/password.js',
0 verbose cli 'httpd/html/javascript/schema.js',
0 verbose cli 'httpd/html/javascript/tabular.js',
0 verbose cli 'httpd/html/javascript/timezones.js',
0 verbose cli 'httpd/html/javascript/uhppoted.js',
0 verbose cli 'httpd/html/javascript/users.js'
0 verbose cli ]
1 info using [email protected]
2 info using [email protected]
3 timing config:load:defaults Completed in 3ms
4 timing config:load:file:/usr/share/nodejs/npm/npmrc Completed in 5ms
5 timing config:load:builtin Completed in 5ms
6 timing config:load:cli Completed in 3ms
7 timing config:load:env Completed in 0ms
8 timing config:load:file:/opt/uhppoted-httpd/.npmrc Completed in 1ms
9 timing config:load:project Completed in 2ms
10 timing config:load:file:/root/.npmrc Completed in 0ms
11 timing config:load:user Completed in 0ms
12 timing config:load:file:/etc/npmrc Completed in 0ms
13 timing config:load:global Completed in 1ms
14 timing config:load:cafile Completed in 0ms
15 timing config:load:validate Completed in 1ms
16 timing config:load:setUserAgent Completed in 1ms
17 timing config:load:setEnvs Completed in 2ms
18 timing config:load Completed in 21ms
19 verbose npm-session 98a6973a40df3d61
20 timing npm:load Completed in 48ms
21 timing command:exec Completed in 1243ms
22 verbose stack Error: command failed
22 verbose stack at ChildProcess. (/usr/share/nodejs/@npmcli/promise-spawn/index.js:64:27)
22 verbose stack at ChildProcess.emit (events.js:314:20)
22 verbose stack at maybeClose (internal/child_process.js:1022:16)
22 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5)
23 verbose pkgid [email protected]
24 verbose cwd /opt/uhppoted-httpd
25 verbose Linux 5.10.0-15-amd64
26 verbose argv "/usr/bin/node" "/usr/share/nodejs/npm/bin/npm-cli.js" "exec" "--" "eslint" "--fix" "httpd/html/javascript/cards.js" "httpd/html/javascript/combobox.js" "httpd/html/javascript/controllers.js" "httpd/html/javascript/db.js" "httpd/html/javascript/doors.js" "httpd/html/javascript/events.js" "httpd/html/javascript/groups.js" "httpd/html/javascript/interfaces.js" "httpd/html/javascript/login.js" "httpd/html/javascript/logs.js" "httpd/html/javascript/overview.js" "httpd/html/javascript/password.js" "httpd/html/javascript/schema.js" "httpd/html/javascript/tabular.js" "httpd/html/javascript/timezones.js" "httpd/html/javascript/uhppoted.js" "httpd/html/javascript/users.js"
27 verbose node v12.22.12
28 verbose npm v7.5.2
29 error code 2
30 error path /opt/uhppoted-httpd
31 error command failed
32 error command sh -c eslint "--fix" "httpd/html/javascript/cards.js" "httpd/html/javascript/combobox.js" "httpd/html/javascript/controllers.js" "httpd/html/javascript/db.js" "httpd/html/javascript/doors.js" "httpd/html/javascript/events.js" "httpd/html/javascript/groups.js" "httpd/html/javascript/interfaces.js" "httpd/html/javascript/login.js" "httpd/html/javascript/logs.js" "httpd/html/javascript/overview.js" "httpd/html/javascript/password.js" "httpd/html/javascript/schema.js" "httpd/html/javascript/tabular.js" "httpd/html/javascript/timezones.js" "httpd/html/javascript/uhppoted.js" "httpd/html/javascript/users.js"
33 verbose exit 2

Can you help me to fix?
Thank you

device config does not seem to be honored

I have tried setting up via docker compose following the steps in the README. I am running into an issue where it seems that the service is not honoring the devices that I have configured in my uhppoted.conf file

here is the console out:

/opt/uhppoted # /opt/uhppoted/uhppoted-httpd --config /usr/local/etc/uhppoted/uhppoted.conf --console --debug
2024/04/22 13:59:48 uhppoted-httpd service v0.8.8 - Linux (PID 179)
2024/04/22 13:59:48 INFO   HTTPD    HTTPS server starting on port :8443
2024/04/22 13:59:48 INFO   HTTPD    HTTP  server starting on port :8080
2024/04/22 13:59:52 INFO   303986753: refreshing LAN controller status
2024/04/22 13:59:52 INFO   405419896: refreshing LAN controller status
2024/04/22 13:59:53 WARN   not found: no device found for device ID <nil>
2024/04/22 13:59:53 WARN   not found: no device found for device ID <nil>
2024/04/22 13:59:54 WARN   timeout waiting for reply
2024/04/22 13:59:54 WARN   timeout waiting for reply
2024/04/22 13:59:55 WARN   internal server error: error retrieving number of cards from 303986753 (timeout waiting for reply)
2024/04/22 13:59:55 WARN   internal server error: error retrieving number of cards from 405419896 (timeout waiting for reply)

but here is my config file

/opt/uhppoted # cat /usr/local/etc/uhppoted/uhppoted.conf
# SYSTEM
# bind.address = 0.0.0.0:0
# broadcast.address = 255.255.255.255:60000
# listen.address = 0.0.0.0:60001

# HTTPD
httpd.html = /usr/local/etc/uhppoted/httpd/html
httpd.http.enabled = true
httpd.http.port = 8080
httpd.https.enabled = true
httpd.https.port = 8443
httpd.tls.ca = /usr/local/etc/uhppoted/httpd/ca.cert
httpd.tls.certificate = /usr/local/etc/uhppoted/httpd/uhppoted.cert
httpd.tls.key = /usr/local/etc/uhppoted/httpd/uhppoted.key
httpd.tls.client.certificates.required = false
; httpd.security.auth = basic
httpd.security.local.db = /usr/local/etc/uhppoted/httpd/auth.json
; httpd.security.cookie.max-age = 24
; httpd.security.login.expiry = 1m
; httpd.security.session.expiry = 60m
; httpd.security.otp.issuer = uhppoted-httpd
; httpd.security.otp.login = allow
; httpd.request.timeout = 5s
httpd.system.interfaces = /usr/local/etc/uhppoted/httpd/system/interfaces.json
httpd.system.controllers = /usr/local/etc/uhppoted/httpd/system/controllers.json
httpd.system.doors = /usr/local/etc/uhppoted/httpd/system/doors.json
httpd.system.groups = /usr/local/etc/uhppoted/httpd/system/groups.json
httpd.system.cards = /usr/local/etc/uhppoted/httpd/system/cards.json
httpd.system.events = /usr/local/etc/uhppoted/httpd/system/events.json
httpd.system.logs = /usr/local/etc/uhppoted/httpd/system/logs.json
httpd.system.users = /usr/local/etc/uhppoted/httpd/system/users.json
httpd.system.history = /usr/local/etc/uhppoted/httpd/system/history.json
; httpd.system.refresh = 30s
; httpd.system.windows.ok = 1m0s
; httpd.system.windows.uncertain = 5m0s
; httpd.system.windows.systime = 5m0s
; httpd.system.windows.expires = 2m0s
httpd.db.rules.acl = /usr/local/etc/uhppoted/httpd/acl.grl
httpd.db.rules.interfaces = /usr/local/etc/uhppoted/httpd/grules/interfaces.grl
httpd.db.rules.controllers = /usr/local/etc/uhppoted/httpd/grules/controllers.grl
httpd.db.rules.doors = /usr/local/etc/uhppoted/httpd/grules/doors.grl
httpd.db.rules.groups = /usr/local/etc/uhppoted/httpd/grules/groups.grl
httpd.db.rules.cards = /usr/local/etc/uhppoted/httpd/grules/cards.grl
httpd.db.rules.users = /usr/local/etc/uhppoted/httpd/grules/users.grl
httpd.db.rules.events =  /usr/local/etc/uhppoted/httpd/grules/events.grl
httpd.db.rules.logs = /usr/local/etc/uhppoted/httpd/grules/logs.grl
httpd.audit.file = /usr/local/etc/uhppoted/httpd/audit/audit.log
; httpd.retention = 6h0m0s
; httpd.timezones =
httpd.with-pin = true


# DEVICES
UT0311-L0x.423137505.address = 192.168.1.157:60000
UT0311-L0x.423137505.door.1 = Top Door
UT0311-L0x.423137505.door.2 = Bottom Door
UT0311-L0x.423137505.door.3 = Unused
UT0311-L0x.423137505.door.4 = Unused

If I point it to an incorrect file via --config then it errors. if I update the http port to 8081, it also obliges. But, for some reason, it will not search for my device that I added here.

Events Server.

I was curious if perhaps we can make the events server over websocket? I see the events periodically in the console so I would imagine its possible to have some sort of websocket server push that to the UI.

Is this something that might be on your roadmap?

Retrieve events over multiple missing events boundary

There appears to be a bug in the UHPPOTE controller firmware around power on events:

If record special events is enabled, at power-on the controller should record a POWER ON event. It probably does because the event is viewable in the manufacturer AccessControl application event logs, but retrieving the event at the expected index using the get-event function in the public API returns 'no event':

 ... request
 ...          00000000  17 b0 00 00 2d 55 39 19  2c 28 03 00 00 00 00 00  |....-U9.,(......|
 ...          00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 ...          00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 ...          00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 ...          

 ... response
 ...          00000000  17 b0 00 00 2d 55 39 19  00 00 00 00 00 00 00 00  |....-U9.........|
 ...          00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 ...          00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 ...          00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 ...          

   ERROR: 423187757:  no event at index: 206892

Ordinarily, the uhppoted-httpd event retrieval logic will skip the missing event and continue fetching any events after the missing POWER ON event - except in the case where there are 5 or more consecutive missing events in which case it gives up forever.

Ref. uhppoted/uhppoted#13 (reply in thread)

default auth doesn't work

The default username of admin password of uhppoted doesn't seem to work. In the auth.json file the users array is generated as empty and there doesn't seem to be documentation of how to create a user account, how do you do that? thank you!

[Enhancement] Cards | add delete button to each row

I figured out that you can delete a card by removing the name and the card number. This is not very intuitive and it would be much more convenient if there was a button to delete a user (with a confirmation alert especially).
image

Cannot access web interface

Hello! I successfully installed the uhppoted-httpd service which is in running status. Although I cannot access the web interface. What is the default URL to access the web server? Thank you.

[Bug] Cards | save button does not always update card group membership

Description

updating a card's group membership will sometimes not work if the only attribute changed is a group membership

Steps to reproduce

  1. create a new card without any priviilges
image 2. observe: the user is created without any privileges image image 3. add a group to the card and hit the check mark to "save" 4. observe: the "modified" corner is still present 5. observe: in the web controller, the doors still say forbid

notes:

  • if you update the name of the user, it appears to save a lot quicker
  • if you let the UI sit, eventually it seems to collect the changes and eventually persist them
  • if you refresh the page, the changes might never be persisted to the controller

I plan to give this to non-technical individuals and an issue like this could be extremely confusing / catastrophic for the adoption of a new interface

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.