Skip to main content

Server for 'Find My Device' android app, implemented in Django/Python

Project description

Django Find My Device

django-fmd @ PyPi Python Versions License GPL V3+

Find My Device client and server implemented in Python using Django. Usable for the Andorid App FindMyDevice by Nnulide:

Get FindMyDevice on F-Droid

Note: For command notifications, you also need to install a https://unifiedpush.org/ app like "ntfy":

Get ntfy on F-Droid

Django "Find My Device" server for YunoHost

Integration level Working status Maintenance status Install django-fmd with 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

e.g.:

~/django-find-my-device$ ./manage.py fmd --get-location --device-id 2gvp8d --password your-password

Start hacking:

~$ git clone https://gitlab.com/jedie/django-find-my-device.git
~$ cd django-find-my-device
~/django-find-my-device$ ./manage.py
...
(findmydevice) run_dev_server

There is also a docker dev. setup, e.g.:

~/django-find-my-device$ make up

Notes:

  • The app will not accept self-signed certificates! So you need to use non-https URLs for testing.
  • Django dev server and docker compose will bind to 0.0.0.0:8000 by default! So it's accessible from other devices in your network!

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:

This is done by update_fmdserver_files.sh script.

versions

  • v0.9.2
    • 2026-01-24 - Update requirements
    • 2025-11-08 - Fix adb_grant_fmd_rights.sh - permission must be set one by one!
    • 2025-11-01 - Enhance ADB script and try to set all permissions at once
  • v0.9.1
    • 2025-10-30 - Enhance admin around picture
    • 2025-10-30 - Remove the index for picture data to fix #9
    • 2025-10-30 - Remove brackets from admin link
    • 2025-10-30 - Add a link on the FMD web page into the Django Admin
    • 2025-10-30 - Redirect to login page directly
    • 2025-10-30 - Update requirements
  • v0.9.0
    • 2025-10-27 - Fix publishing
    • 2025-10-27 - NEW: Support to store and fetch pictures
    • 2025-10-27 - fix commands by storing all data and return it
    • 2025-10-27 - Add GetAllLocationsView
    • 2025-10-27 - fix push notification
    • 2025-10-27 - Fix broken html
    • 2025-10-27 - Update static html files (patched) from origin project
    • 2025-10-27 - Add test for PUT command
    • 2025-10-27 - Update PUT command: Seems that "Data" can't be None
    • 2025-10-27 - Fix dev. usage: We need the cache!
    • 2025-10-27 - fix web page access and tests
    • 2025-10-27 - gitlab.com/Nulide/findmydeviceserver/ -> gitlab.com/fmd-foss/fmd-server/
    • 2025-10-27 - expand logging if password is OK
    • 2025-10-27 - add "(Django Find My Device)" suffix to version, so it's displayed in the app
    • 2025-10-26 - Update client: Use correct /api/v1/ prefix
    • 2025-10-26 - comment deny_any_real_request() because of LiveServerTestCase
    • 2025-10-26 - Update PyCharm configs
    • 2025-10-26 - Bump version to v0.9.0 because is't the min. version
    • 2025-10-26 - fix docker setup
    • 2025-10-26 - Bugfix docker image build via "make build"
    • 2025-10-26 - cleanup: remove obsolete files
    • 2025-10-26 - Fix api/v1 prefix and serve ds.html page
    • 2025-10-26 - Update snapshot files
    • 2025-10-26 - Add PyCharm run config files
    • 2025-10-26 - Update project setup
    • 2024-07-03 - Use getpass() in CLI
  • v0.4.1
    • 2024-06-18 - fix CI
    • 2024-06-18 - Manually append slash redirect only for /admin/
    • 2024-06-18 - Fix WebPageRedirectView: Use full url
    • 2024-06-18 - Update history
Expand older history entries ...
  • v0.4.0
    • 2024-06-17 - Reimplement the client and manage command
    • 2024-06-17 - GET "/version" via FmdClient
    • 2024-06-17 - Update FmdClient.request_access()
    • 2024-06-17 - Test get_salt() via FmdClient()
    • 2024-06-17 - Patch by
    • 2024-06-17 - Use 'fmd_externals/favicon.ico' in admin, too.
    • 2024-06-17 - Add docker compose setup for development
    • 2024-06-17 - Handle Data="unused"
    • 2024-06-17 - Fix favicon.ico request
    • 2024-06-16 - Bugfix wrong password compare in /requestAccess (Don't lowercase!)
    • 2024-06-16 - Handle request location index "NaN"
    • 2024-06-16 - update PUT /key
    • 2024-06-16 - Update Device model
    • 2024-06-16 - Expand hashed_password model field
    • 2024-06-16 - Fix web lage static file urls
    • 2024-06-16 - +"argon2-cffi"
    • 2024-06-16 - Update API changes
    • 2024-06-16 - Update static web page files
    • 2024-06-16 - Refactor: "run_testserver" -> "run_dev_server"
    • 2024-06-13 - Update project setup
    • 2022-08-10 - Add script to grant FMD permission via adb
    • 2022-08-10 - Update README.md
  • v0.3.2
    • 2022-08-10 - Test project Autologin only for /admin/ requests
    • 2022-08-10 - Expand database field length
  • v0.3.1
    • 2022-08-10 - Bugfix static files for YunoHost
  • v0.3.0
    • 2022-08-10 - fix code style
    • 2022-08-10 - Add FMD client demo script
    • 2022-08-10 - remove logic.jspatches
    • 2022-08-08 - Bugfix classifiers
    • 2022-08-08 - update requirements
    • 2022-08-08 - Bugfix Client: Server accepts "Data" only as String.
    • 2022-08-08 - Log server error messages
    • 2022-08-08 - Log if key requested with "Data" != "0"
    • 2022-08-08 - Remove debug
    • 2022-08-04 - Implement a Python Client for FMD
    • 2022-08-03 - Move FMD web page static files to "real django static" files
    • 2022-07-31 - Add missing leaflet image files
    • 2022-07-31 - Replace device UUID with a short string
    • 2022-07-19 - Include external JS/CSS files
  • v0.2.0
    • 2022-07-19 - Remove unused "POST /push"
    • 2022-07-19 - Check push service calls
    • 2022-07-19 - Update README.md
    • 2022-07-19 - Implement command push notifications
    • 2022-07-19 - code refactoring
    • 2022-07-19 - Store User-Agent in Device and Location
    • 2022-07-19 - updates
  • v0.1.3
    • 2022-07-12 - remove obsolete publish.py file
    • 2022-07-12 - Run tests before publishing
    • 2022-07-12 - release 0.1.3
    • 2022-07-12 - Lower 'No "IDT"' error log.
    • 2022-07-12 - update tests
    • 2022-07-12 - Patch 'applicatoin/json' -> 'application/json'
    • 2022-07-12 - Remove "@Nulide FMDServer" from index.html
  • v0.1.2
    • 2022-07-12 - release v0.1.2
    • 2022-07-12 - Enhance Device change list: Location count + last update info
    • 2022-07-12 - Add login page for anonymous users
    • 2022-07-12 - Better Device.str() (for admin changelist filter etc.)
  • v0.1.1
    • 2022-07-12 - Bugfixes
  • v0.1.0
    • 2022-07-12 - Release v0.1.0
    • 2022-07-12 - Add optional name for Devices (Only for django admin)
    • 2022-07-12 - Update tests
    • 2022-07-12 - Pimp Location admin
    • 2022-07-12 - Pimp Devices admin
    • 2022-07-12 - Rename "Device User" to "Device"
    • 2022-07-12 - Serve fmd page "index.html" with own view and only for authenticated users
    • 2022-07-12 - Use settings.PATH_URL if exists for site_url
    • 2022-07-12 - Use own Admin Site class and expand admn tests
    • 2022-07-12 - Redirect to the FMD web page
    • 2022-07-12 - Add link to project page into page footer via version
  • v0.0.4
    • 2022-07-12 - Update logic.js - Make all requests "relative"
    • 2022-07-12 - Bugfix location put requests and not defined put_data
  • v0.0.3
    • 2022-07-12 - Bugfix store location because of too large raw_date field value
    • 2022-07-11 - Update README.md
  • v0.0.2
    • 2022-07-11 - Release v0.0.2
    • 2022-07-11 - Expand CI test matrix
    • 2022-07-11 - Support Python 3.7
    • 2022-07-05 - setup coverage report in CI
    • 2022-07-05 - fix darker
    • 2022-07-05 - fix tests
    • 2022-07-05 - setup gitlab CI
    • 2022-07-05 - Expand README
    • 2022-07-05 - add update_fmdserver_files.sh
  • v0.0.1
    • 2022-07-05 - init v0.0.1
    • 2022-07-05 - Configure SAST in .gitlab-ci.yml, creating this file if it does not already exist

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_fmd-0.9.2.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_fmd-0.9.2-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file django_fmd-0.9.2.tar.gz.

File metadata

  • Download URL: django_fmd-0.9.2.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for django_fmd-0.9.2.tar.gz
Algorithm Hash digest
SHA256 3c1372fc6e9ddfe242e9440172c90fe0a35172e61b677085255819bd9f183e40
MD5 927b34dd2df3b1a853f279bdd721b1c1
BLAKE2b-256 4da43fce0dade70ed04c69ffef2a11983f5bc4b041a1255b6001cb00342bfa80

See more details on using hashes here.

File details

Details for the file django_fmd-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: django_fmd-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for django_fmd-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c269df548036192d05b2f56689ec3be55bbd813c1db69ea9b3497dfdc5e08a9c
MD5 366d8f06caf0e3ee392a5cb85ce372fb
BLAKE2b-256 373ff8e055b086af4969fa801ab888806259808fa33c0737ef06094e48e295bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page