Server for 'Find My Device' android app, implemented in Django/Python
Project description
Django Find My Device
Find My Device client and server implemented in Python using Django. Usable for the Andorid App FindMyDevice by Nnulide:
Note: For command notifications, you also need to install a https://unifiedpush.org/ app like "ntfy":
Django "Find My Device" server for YunoHost
State
Server implementation
What worked:
- App can register the device
- App can send a new location
- App can delete all server data by unregister the device
- The Web page can fetch the location of a device
- Paginate between locations in Web page
- Push notification of commands
Server TODOs:
- Pictures
Client implementation
See demo: https://gitlab.com/jedie/django-find-my-device/-/blob/main/fmd_client_demo.py
What worked:
- Register on server
- Send location to server
- Get location from server
- Delete device on server
Client implementation TODOs:
- A usable CLI
- notification
- Pictures
Start hacking:
~$ git clone https://gitlab.com/jedie/django-find-my-device.git
~$ cd django-find-my-device
~/django-find-my-device$ ./devshell.py
...
(findmydevice) run_testserver
credits
The FindMyDevice concept and the App/Web pages credits goes to Nnulide the creator of the app FindMyDevice.
Currently, we store a copy of html/js/css etc. files from findmydeviceserver/web/ (GNU GPLv3) into our project repository here: django-find-my-device/findmydevice/web/ with the update_fmdserver_files.sh script.
Some external files are added to this git repository, e.g.:
crypto-js
(MIT License) - https://github.com/brix/crypto-jsJSEncrypt
(MIT License) - https://github.com/travist/jsencryptLeaflet
(BSD 2-Clause "Simplified" License) - http://leafletjs.com - https://github.com/Leaflet/Leaflettoastedjs
(MIT License) - https://github.com/shakee93/toastedjs
versions
- dev
- TBC
- v0.3.1 - 10.08.2022
- Bugfix static files for YunoHost
- v0.3.0 - 10.08.2022
- WIP: FMD python client (TODO: Add a CLI)
- Replace the device
UUID
with a short random string - Include external JS/CSS files
- v0.2.0 - 19.07.2022
- Store User-Agent in Device and LocationData
- Implement command push notifications
- v0.1.3 - 12.07.2022
- Remove "@Nulide FMDServer" from index.html
- Lower 'No "IDT"' error log.
- v0.1.2 - 12.07.2022
- Enhance Device change list: LocationData count + last update info and LocationData filter
- Add login page for anonymous users
- v0.1.1 - 12.07.2022
- Fix pagination on FMD web page.
- Deny store locations too often (by
settings.FMD_MIN_LOCATION_DATE_RANGE_SEC
- default: 30sec.) - Display device date in admin in human-readable format.
- Allow
location
delete in admin ifDEBUG
mode is on. - More tolerant
/requestAccess
view. - Enhance
TracingMiddleware
for debugging.
- v0.1.0 - 12.07.2022
- Serve fmd page "index.html" with own view and only for authenticated users
- Enhance Django Admin
- Add optional "name" for Devices (Only for django admin)
- v0.0.4 - 11.07.2022
- Bugfix
logic.js
requests, if installed not in root URL. - Bugfix location view from
logic.js
and undefined variable.
- Bugfix
- v0.0.3 - 11.07.2022
- Bugfix store location because of too large
raw_date
field value
- Bugfix store location because of too large
- v0.0.2 - 11.07.2022
- Support Python 3.7 (for current YunoHost version)
- Setup Gitlab CI pipeline
- Update README
- v0.0.1 - 05.07.2022
- init project
- App can register the device
- App can send a new location
- App can delete all server data from the device
- The Web page can fetch the location of a devi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_fmd-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76f62cb4972d2ef52721b792c9eca70ad6e9daf4f64d64938d6089e81ca473cd |
|
MD5 | aa263fc87e6a2f244f8c8a54d15889a6 |
|
BLAKE2b-256 | d1788694ffc3cb6131640f73755f4ccac3842e030c6027857c923651d1fc1e7c |