{"id":16406749,"url":"https://github.com/jmercouris/ipsrc","last_synced_at":"2025-03-21T03:30:53.585Z","repository":{"id":146230288,"uuid":"135733285","full_name":"jmercouris/IPSRC","owner":"jmercouris","description":"IPSRC helps you find your server from anywhere.","archived":false,"fork":false,"pushed_at":"2020-06-06T20:26:51.000Z","size":18,"stargazers_count":48,"open_issues_count":1,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-02-14T21:43:39.055Z","etag":null,"topics":["dyndns","home-service","server-management"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmercouris.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-01T15:18:14.000Z","updated_at":"2024-08-01T16:32:45.391Z","dependencies_parsed_at":null,"dependency_job_id":"1758b9f5-d841-48a1-ba28-c8011698399e","html_url":"https://github.com/jmercouris/IPSRC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2FIPSRC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2FIPSRC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2FIPSRC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2FIPSRC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmercouris","download_url":"https://codeload.github.com/jmercouris/IPSRC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221811375,"owners_count":16884305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dyndns","home-service","server-management"],"created_at":"2024-10-11T06:10:45.902Z","updated_at":"2024-10-28T09:13:44.141Z","avatar_url":"https://github.com/jmercouris.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"IPSRC\n========================================================================\nIPSRC is a program that allows you to keep track of your home\ncomputer's IP. It allows your server to automatically get its IP,\nencrypt it, and broadcast it on a platform of your choice. The currently\nsupported platforms are GIT and Disk.\n\nRequirements\n------------------------------------------------------------------------\n+ Python 3.4+\n+ Git\n+ Public/Private Key Pairs\n\nUsage\n------------------------------------------------------------------------\nTo use IPSRC, clone it to both your server and your client machine. To\nconfigure the server, you might do something like the following (for\nan example, please see server_configuration.ini):\n\n.. code-block:: ini\n\n   [public-key]\n   path = /path/to/public/key/id_rsa.pub\n   [platform-configuration]\n   type = git\n   repository-path = /path/to/repository\n\nIn the above configuration, we have set the platform to be Git. This\nmeans that the server will obtain its IP address, encrypt it, and push\nit to a Git repository. The public key must be the client's public\nkey.\n\nYour client configuration will look something like the following (for\nan example, please see client_configuration.ini):\n\n.. code-block:: ini\n\n   [private-key]\n   path = /path/to/private/key/id_rsa\n   [platform-configuration]\n   type = git\n   repository-path = /path/to/repository\n\nIn the above configuration, we have again set the platform to be Git,\nand we have created a repository located at \"path/to/repository\". It\nis important that the platform information on the server/client match\nso that the server may broadcast to a location that the client will\nlook in. In this case, this is where the client will pull from, and\ndecrypt the IP of the server.\n\nIn the above example, you will have to configure the repository\nto have a remote origin that it may push/pull to, otherwise the data\nwill have nowhere to go (to be hosted).\n\nInstalling Dependencies\n------------------------------------------------------------------------\nThe python dependencies are listed in requirements.txt. You can install them\nwith pip via:\n\n    python3 -m pip install -r requirements.txt\n\nAdditionally, if this breaks other dependencies on your system, consider\ncreating a venv:\n\n    # Create a python virtual environment.\n    python3 -m venv path/to/IPSRC/venv\n\n    # Enter the virtual environment.\n    source path/to/IPSRC/venv/bin/activate\n\n    # Install the requirements in this virtual environment.\n    python3 -m pip install -r requirements.txt\n\n    # Execute IPSRC code (python3 server_broadcast.py or client_source.py) with\n    the dependencies installed in the venv.\n    \n    # To exit the venv, run \"deactivate\"\n    deactivate\n\nUsage: On the Server\n------------------------------------------------------------------------\nYou'll want to install all the dependencies located in the\nrequirements file. You'll then wish to set up a cron job to run\n:code:`python server_broadcast.py` at some interval of your choice.\n\nUsage: On the Client\n------------------------------------------------------------------------\nYou'll want to install all the dependencies located in the\nrequirements file. You'll then want to run :code:`python client_source.py`\nwhenever you wish to update your server's address on the client.\n\nHow it works:\n------------------------------------------------------------------------\nThe server will periodically encrypt its IP and broadcast it to some\nsource. The place it will be broadcast depends upon the\n:code:`[platform-configuration]`. In the above example, we are broadcasting\nto a Git repository. \n\nThe server will use the client's public key to encrypt its IP\naddress. This is so that nobody else may peek inside and see what your\nserver's IP address is.\n\nThe client, when ready, will read from wherever the server is\nbroadcasting to. In the above example, the client will pull (read)\nfrom a Git repository. The client will then use its private key to\nread the encrypted IP.\n\nExtending IPSRC\n------------------------------------------------------------------------\nTo extend IPSRC and add your own platforms, you have to do a few\nthings. Firstly you must edit :code:`platform_constants.py` to include\nyour new platform. After, you must create a new platform file, ideally\nwith the naming convention :code:`platform_new_name`. Within your new\nplatform, you must implement two functions :code:`broadcast_data` and\n:code:`read_data`.\n\nYou can include your own directives within the INI file that the user\nmust include for your new broadcast and read functionality. To see\nan example of this, please look at :code:`platform_git.py`.\n\nYou should be able to extend IPSRC to use almost any kind of broadcast\nor existing service, you might use email, ftp servers, ssh, etc. Any\npull requests for new platforms are always welcome, thanks!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmercouris%2Fipsrc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmercouris%2Fipsrc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmercouris%2Fipsrc/lists"}