Giter Site home page Giter Site logo

jcadmin's Introduction

jcadmin

A web-based interface to administrate Walter S. Heath's jcblock junk call blocker program.

Jcadmin is a Node.js server designed to run on the same machine as jcblock. It provides a browser-based interface that machines on your home network can use to view caller ID and easily block annoying phone calls from telemarketers and scammers.

Jcadmin makes maintaining jcblock much easier, eliminating the need to manually edit files. It also provides an easy way to see how often and when calls have been received from a given phone number.

Installation

See the Installation wiki page.

Screen shots

  • Home screen displays a list of recent calls.

Call history

  • Click on any call to see detailed info about that caller.

Caller details

  • Sortable phone book shows known callers.

Phone book

jcadmin's People

Contributors

cosinekitty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

corbeaublanc

jcadmin's Issues

RaspberryPi

Does not run on raspberry pi. Installed dependencies node.js and npm.
Fails syntax for use of => in function and also use of 'of' in "var line of SplitString..."
Not portable.

Make errors use node Error class?

Investigate the right way to make consistent error objects to return to clients. It feels goofy to mix Error objects from Node callbacks with plain strings.

Manual entry of phone numbers

Sometimes the modem caller ID does not work (not sure why). In those cases, I would like to be able to read the phone number from my phone's caller ID and manually add it. While there, should be able to edit its name and classify it as safe, blocked, neutral.

Idea: add something new to click on from the history page. This will bring up an admin page with options like add new number?

Provide edit box for phone number comments

When user clicks on a phone number, in addition to changing its state (safe, neutral, blocked), provide an edit box for supplying a comment. This comment can be used to provide a recognizable (or just more cosmetic) name for the caller, especially if they are on the safe list.

Back button should go back to previous screen.

Now the back button in the Target Number view always goes back to the history page. But it is possible to get there from manually entering a new number. In that case, the back button should go back to the page where the number is entered. Either that or I should rename "Back" to "Home" or "History" or something like that.

Rework polling and fetching data to be monolithic

It is starting to look like everything would be simpler if the client could fetch the entire data model in one call: the entire database of callers with status, name, and call history of each phone number. This would make polling need to check only a single modification date.

Allow unblocking a blocked phone number, adding phone numbers to whitelist

Each phone number may be in one of 3 states: neutral, whitelisted, blocked. Allow any number to transition to other states. Not sure yet whether it makes sense to allow any state transition. The following might be helpful:

  • neutral to blocked (already implemented)
  • blocked to neutral
  • neutral to whitelisted
  • whitelisted to neutral

May want to be able to edit the entire whitelist at once, to pre-emptively add things to it, instead of waiting for somebody to call.

Security - allow read-only or administrator levels

There should be a server configuration option to allow some users to have read-only access: they can see caller ID data but not change the status of any callers.
Other users (with username/password?) would be allowed to change status.
Figure out how to enable authentication (and https?).

Inconsistent rules for displaying caller status

The rules for showing a phone number as blocked, safe, or neutral are different in the phone book list and the caller history list. The caller history list emulates jcblock: search caller ID and phone number for substring matches. For example, I have blocked any call from "TOLL FREE CALL". This is very useful because the vast majority of numbers with this ID are unwanted callers. In the caller ID history, they show up as blocked callers. However, each such number is not blocked and therefore shows up as neutral. Need to figure out how to resolve this inconsistency in display.

More concise date/time column

The "When" column is too verbose and uses up too much horizontal space on a mobile device. Instead of this:
2016-06-03 13:45

How about one of these (depending on how recent the call was):
Fri 13:45
06-03 13:45

This is a step back from international support, but I'm not sure whether jcblock works for non-USA telephone caller ID anyway.

This change will be client-side, allowing each user to independently configure preferred format. Server will always send full date/time string to client.

Browse all unreceived callers

On the New Entry page, also show a list of all callers. Should show name, caller ID, phone number, call count. Each entry should link to target page.

Enhance caller ID using comment fields in whitelist.dat

When reporting a call or inspecting a phone number from someone in the whitelist, it would be nice to display the comment field. For example, I have someone in my whitelist who shows up in caller ID as "TOLL FREE CALLER". It would be much nicer to see their actual name instead of the raw caller ID string, just like my home phone does with its internal phone book feature.

Allow deleting any unreceived caller.

Now that user can manually enter a number, there is no way to get rid of a mistake. On the caller details page there should be some kind of Delete button. It only needs to be enabled when a name has been entered or when the status is other than Neutral. (Is that confusing?) It should never be enabled if any calls have been received, because the caller exists by virtue of being in the caller ID log.

UI improvements for color-blind users

Using color alone to indicate caller state (safe, blocked, neutral) is problematic for color-blind users. Also provide some kind of icon (check mark, big X, or blank) to the left of each phone number.

Toggle display of blocked calls.

This feature might be helpful for filtering out all the junk and seeing the callers we care about.
Should base the filter on callers that are currently blocked, not calls that were blocked at the time they happened.

Add support for managing patterns that match caller IDs (instead of phone numbers)

Allow user to mark caller ID text as blocked, safe, neutral. This should be considered an advanced feature. Could have 2 sets of radio buttons, one for a caller's number, another for the caller's caller ID text. The text matching feature is more dangerous because it can block a whole category of callers, especially if the caller ID is a short string.

Consistent state codes for REST API

Throughout the REST API and JavaScript code, use the following symbols consistently for the 3 states:

  • safe
  • neutral
  • blocked

Remove all internal use of W, B, -.
The goal is to make jcadmin something people could use for their own front-end applications, including native clients if they want.

Back button should restore vertical scroll offset

When clicking on an entry in the phone book, user sees the details page. When back button is clicked from the details page, it takes us back to the top of the phone book, which is counterproductive because the user probably has to scroll back down and find where he was to look through more phone numbers. The back button should always restore the vertical scroll of the page it is going back to.

Found element.scrollTop property:
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop

Indicate when server is unreachable. Recover when it comes back.

When polling, specify a timeout (2 to 5 seconds?). If timeout exceeded, show a special "lost contact" screen. Automatically recover and resume normal operation when contact is restored.

When in edit mode (changing state or comment for a caller) disable all controls when command submitted, and re-enable them when response comes back. If timeout, go into same "lost contact" mode. Re-enable all controls every time we go into edit mode to help recovery from lost contact mode.

Phone book: cycle through filtering by various statuses

When user clicks on the status icon column header in the phone book screen, should cycle through the following states:

  • show all entries (default)
  • show blocked entries only
  • show safe entries only
  • show neutral entries only

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.