-
Notifications
You must be signed in to change notification settings - Fork 0
Requirements
-
Client app can connect to Server app (R)
-
Auto negotiate encryption key exchange (R): Have the server and client agree on a shared key for encrypting data sent between the two.
-
Allow a user defied pre-shared key (password) (R): Rather than the server and client picking an encryption key, allow the user to create one themselves.
-
Encryption of data sent between client and server (R): Encrypt the traffic between the client and server application
-
Rest API server side (R): API endpoints for client to send data to.
- New device pairing endpoints (R): The endpoints required to initiate device pairing, negotiate a key
- Device rename, config changes, unpair (delete) requests. /api/v1/client/{clientId} (R): Allows the client to send data notifying the server of configuration changes (name, settings) and to unpair/remove the client.
- Encryption negotiation endpoint /api/v1/client/encryption (R): Used to negotiate a key and check/test encryption settings.
- Pair request /api/v1/pair (R): Allows the client to initiate pairing, agree on "ids" and other pairing related details.
- Notification endpoint(s) /api/v1/notifications/{clientId}}#{notificationId} (R): Endpoints required to receive notification details, icons, etc
- POST: new notification data
- PUT: update notification
- DELETE: remove
- File endpoints (D): Endpoints required for receiving files and notifying the server on successful download
- Notify of incoming file, send file metadata /api/v1/files/{clientId}/incoming (D): Endpoint for the client to tell the server of an incoming file, share data about the file
- Actual file upload endpoint /api/v1/files/{clientId}/upload (D): Where the client would send the file data
- Clipboard endpoints (D): Same as above, for receiving clipboard data (text, separate for "file" data (think photos and files)).
- Send text clipboard data, notify of incoming clipboard contents /api/v1/clipboard/{clientId}/incoming (D): Endpoint for the client to tell the server of an incoming file, share data about the file
- Actual file upload endpoint /api/v1/clipboard/{clientId}/upload (D): Where the client would send file data if required (photos and files)
- New device pairing endpoints (R): The endpoints required to initiate device pairing, negotiate a key
-
Rest API client side (R): API endpoints for server to send data to.
- New device pairing endpoints (R): The endpoints required to initiate device pairing, negotiate a key
- Device rename, config changes, unpair (delete) requests. /api/v1/server /{serverId} (R): Allows the server to send data notifying the client of configuration changes (name, settings) and to unpair/remove the server.
- Encryption negotiation endpoint /api/v1/server/encryption (R): Used to negotiate a key and check/test encryption settings.
- Pair request /api/v1/pair (R): Allows the server to initiate pairing, agree on "ids" and other pairing related details.
- Notification endpoint(s) /api/v1/notifications/{serverId}#{notificationId} (R): Endpoints required to tell the client to dismiss, activate or any other interaction with notifications
- POST: interact with notification (inline reply, clicked, button clicked, etc)
- DELETE: dismiss notification
- File endpoints (D): Endpoints required for receiving files and notifying the client on successful download
- Notify of incoming file, send file metadata /api/v1/files/{serverId}/incoming (D): Endpoint for the client to tell the client of an incoming file, share data about the file
- Actual file upload endpoint /api/v1/files/{serverId}/upload (D): Where the server would send the file data
- Clipboard endpoints (D): Same as above, for receiving clipboard data (text, separate for "file" data (think photos and files)).
- Send text clipboard data, notify of incoming clipboard contents /api/v1/clipboard/{serverId}/incoming (D): Endpoint for the server to tell the client of an incoming file, share data about the file
- Actual file upload endpoint /api/v1/clipboard/{serverId}/upload (D): Where the server would send file data if required (photos and files)
- New device pairing endpoints (R): The endpoints required to initiate device pairing, negotiate a key
-
-
Sends client notifications to server (R)
- Basic details (title, notification body) (R): Be able to receive basic details on the server side
- Receives notifications on server (R)
- Able to change which app's notifications your client app sends (R)
- Activate notification (D): When you click (activate) a notification on the server, simulate a "tap" (activate) on the client side
- Send "dismissed" action to client (D): When you dismiss (remove/clear) a notification on the server, simulate that on the client side
- Update on notification removal (client -> server) (D): When the notification is removed, activated, or otherwise gone on the client side remove it from the server side. (dev note: this requires remembering the notification ids on server side).
- Notification history on server (D): On the right side of the home screen for the server application there was a list of the "recent device notifications"
- Send client battery life to server (A)
- Ability to use inline reply function of notifications (A): Android allows replies to be sent via notifications. Allow this to be done on the server side and send that data to the client.
-
Send files from client app (D): Allow the user to choose whether they would like to allow file sharing between the client and server app.
- Receive files on server (D)
- Allow user to choose the destination folder of the sent files (D)
- Notify the user upon file received (D): Allow the user to choose whether they wish to receive notifications upon receiving a file or not.
- Automatically accept files sent to the server by client (A): The user has the choice of automatically accepting files sent to them by connected clients or approving/disapproving files sent to them by connected clients.
- Automatically accept files sent to the server by client (A): The user has the choice of automatically accepting files sent to them by connected clients or approving/disapproving files sent to them by connected clients.
- Receive files on server (D)
-
Send file from server application (D): Allow the user to choose whether they would like to allow file sharing between the server app and client app.
- Receive those files on the client side (D)
- Allow user to choose the destination folder of the sent files (D)
- Notify the user upon file received (D): Allow the user to choose whether they wish to receive notifications upon receiving a file or not.
- Automatically accept files sent to the server by client (A): The user has the choice of automatically accepting files sent to them by connected clients or approving/disapproving files sent to them by connected clients.
- Automatically accept files sent to the server by client (A): The user has the choice of automatically accepting files sent to them by connected clients or approving/disapproving files sent to them by connected clients.
- Receive those files on the client side (D)
-
Send clipboard data from client app (D): Send clipboard contents to the server. Allow the user to choose whether they wish to use the clipboard or not.
- Receive clipboard data on server (D): Receive and act on that clipboard data (put into server's clipboard).
- Text data (D): Send text data to the server and have the server put that into its clipboard
- Picture data (D): If a picture is in the client's clipboard, send the photo itself to the server
- Send clipboard data upon clicking the send clipboard button (D): Tells the client to update its clipboard with the data sent by the server.
- Receive clipboard data upon clicking the receive clipboard button (D): Requests the clipboard data be sent from the client to the server.
- Automatically send clipboard data (A): Allow the user to choose between automatically sending clipboard data (send when updated) and manually sending clipboard data using the send clipboard button.
- Receive clipboard data on server (D): Receive and act on that clipboard data (put into server's clipboard).
-
Send clipboard data from server application (D): Send clipboard contents to the client. Allow the user to choose whether they wish to use the clipboard or not.
- Receive those files on the client side (D): Receive and act on that clipboard data (put into client's clipboard)
- Text data (D): Send text data to the client and have the client put that into its clipboard
- Picture data (D): If a picture is in the server's clipboard, send the photo itself to the client
- Send clipboard data upon clicking the send clipboard button (D): Tells the server to update its clipboard with the data sent by the client.
- Receive clipboard data upon clicking the receive clipboard button (D): Requests the clipboard data be sent from the server to the client.
- Automatically send clipboard data (A): Allow the user to choose between automatically sending clipboard data (send when updated) and manually sending clipboard data using the send clipboard button .
- Receive those files on the client side (D): Receive and act on that clipboard data (put into client's clipboard)
-
Add new devices (R)
- Add new servers to your client app (R).
- Able to connect to new client devices on server app (R)
- Add new servers to your client app (R).
-
Rename devices (D)
- Able to rename client device (D): Be able to change the friendly name of the client device.
- Able to rename server device (D): Be able to change the friendly name of the server instance.
- Able to rename client device (D): Be able to change the friendly name of the client device.
-
Remove devices (R)
- Able to remove devices from the client side upon clicking the delete device button.
- Able to remove devices from the server side by clicking the delete button.
- Able to remove devices from the client side upon clicking the delete device button.
-
Allow user to open "Server Settings" page (R): While in the server app, the user can click on the "File" tab in the top left of the screen followed by the "Server Settings" tab to see information including the server device's name and listening IP address.
- Users can send a sample notification using the test notification button (D).
- Users can exit the "Server Settings" page by clicking the exit button (R).
-
Allow the user to open the "Device Connection Details" page (R): While in the server app the user can click on the "File" tab at the top left of the screen followed by the "Device Connection Details" tab to see information about the currently connected and selected device.
- Users can test connection latency using the ping button (D).
- Users can exit the "Device Connection Details" page upon clicking the exit button (R).
-
Allow the user to open the "About" page to learn information about the project (D): While in the server application, the user can click on the help tab at the top of the screen and click about. This will display a page with the name of the project, version info, a link to the GitHub repository, and our names.