diff options
Diffstat (limited to 'python-checkip.spec')
-rw-r--r-- | python-checkip.spec | 481 |
1 files changed, 481 insertions, 0 deletions
diff --git a/python-checkip.spec b/python-checkip.spec new file mode 100644 index 0000000..36853cc --- /dev/null +++ b/python-checkip.spec @@ -0,0 +1,481 @@ +%global _empty_manifest_terminate_build 0 +Name: python-checkip +Version: 1.2.0 +Release: 1 +Summary: Resolves public (WAN) IP from supported providers. +License: MIT License +URL: https://github.com/tsredanovic/checkip +Source0: https://mirrors.aliyun.com/pypi/web/packages/ec/ea/dd0a0efd09c1674569a473361a3c916a32575a4d80aad10ce41575eb3944/checkip-1.2.0.tar.gz +BuildArch: noarch + +Requires: python3-requests + +%description +# CheckIP + +Resolves public (WAN) IP from supported providers. + + +## Providers + +| Code | URL | +| -------------- | -------------------------------------------- | +| cloudflare | https://cloudflare.com/cdn-cgi/trace | +| dyndns | http://checkip.dyndns.org/ | +| freedns | https://freedns.afraid.org/dynamic/check.php | +| googledomains | https://domains.google.com/checkip | +| he | http://checkip.dns.he.net/ | +| httpbin | https://httpbin.org/ip | +| ip4only | http://ip4only.me/api/ | +| ipfy | https://api.ipify.org/ | +| loopia | http://dns.loopia.se/checkip/checkip.php | +| myip | https://api.myip.com | +| myonlineportal | https://myonlineportal.net/checkip | +| noip | http://ip1.dynupdate.no-ip.com/ | +| nsupdate | http://ipv4.nsupdate.info/myip | +| zoneedit | http://dynamic.zoneedit.com/checkip.html | + + +## Installation + +```bash +pip install checkip +``` + + +## Usage + +### Get IP +Use provider's code to fetch your public IP from that provider. + +```python +from checkip import get_ip + +get_ip('cloudflare') +``` + +### Resolve IP +Use multiple provider's codes to resolve your most commonly returned public IP. + +```python +from checkip import resolve_ip + +resolve_ip(['cloudflare', 'dyndns', 'freedns']) +``` + +### Register Custom Provider +You can create your own custom providers by extending the `BaseProvider` base class. + +Attribute `code` must be defined on each custom provider which can not match any already registered code. + +To succesfully get an IP from a custom provider you can either: + +1. Define attribute `URL` on your custom provider class. By default the IP address will be parsed from that URL's response. + +```python +from checkip.providers import BaseProvider, register_provider +from checkip import get_ip + +class MyProvider(BaseProvider): + code = 'myprovider' + url = 'https://example.com/ip' + +register_provider(MyProvider) + +get_ip('myprovider') +``` + +2. Overwrite the provider's `get_ip` method for even more customization: + +```python +from checkip.providers import BaseProvider, register_provider +from checkip import get_ip + +class MyProvider(BaseProvider): + code = 'myprovider' + + def get_ip(self): + response = requests.get('https://example.com/ip.json') + response.raise_for_status() + return response.json()['ip'] + +register_provider(MyProvider) + +get_ip('myprovider') +``` + + +## CLI Usage + +### Get IP +Use provider's code to fetch your public IP from that provider. + +```bash +$ checkip get cloudflare +``` + +### Resolve IP +Use multiple provider's codes to resolve your most commonly returned public IP. + +```bash +$ checkip resolve cloudflare dyndns freedns +``` + + +## License + +**CheckIP** is a free software under terms of the `MIT License`. + +Copyright (C) 2021 by [Toni Sredanović](https://tsredanovic.github.io/), toni.sredanovic@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + + +%package -n python3-checkip +Summary: Resolves public (WAN) IP from supported providers. +Provides: python-checkip +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-checkip +# CheckIP + +Resolves public (WAN) IP from supported providers. + + +## Providers + +| Code | URL | +| -------------- | -------------------------------------------- | +| cloudflare | https://cloudflare.com/cdn-cgi/trace | +| dyndns | http://checkip.dyndns.org/ | +| freedns | https://freedns.afraid.org/dynamic/check.php | +| googledomains | https://domains.google.com/checkip | +| he | http://checkip.dns.he.net/ | +| httpbin | https://httpbin.org/ip | +| ip4only | http://ip4only.me/api/ | +| ipfy | https://api.ipify.org/ | +| loopia | http://dns.loopia.se/checkip/checkip.php | +| myip | https://api.myip.com | +| myonlineportal | https://myonlineportal.net/checkip | +| noip | http://ip1.dynupdate.no-ip.com/ | +| nsupdate | http://ipv4.nsupdate.info/myip | +| zoneedit | http://dynamic.zoneedit.com/checkip.html | + + +## Installation + +```bash +pip install checkip +``` + + +## Usage + +### Get IP +Use provider's code to fetch your public IP from that provider. + +```python +from checkip import get_ip + +get_ip('cloudflare') +``` + +### Resolve IP +Use multiple provider's codes to resolve your most commonly returned public IP. + +```python +from checkip import resolve_ip + +resolve_ip(['cloudflare', 'dyndns', 'freedns']) +``` + +### Register Custom Provider +You can create your own custom providers by extending the `BaseProvider` base class. + +Attribute `code` must be defined on each custom provider which can not match any already registered code. + +To succesfully get an IP from a custom provider you can either: + +1. Define attribute `URL` on your custom provider class. By default the IP address will be parsed from that URL's response. + +```python +from checkip.providers import BaseProvider, register_provider +from checkip import get_ip + +class MyProvider(BaseProvider): + code = 'myprovider' + url = 'https://example.com/ip' + +register_provider(MyProvider) + +get_ip('myprovider') +``` + +2. Overwrite the provider's `get_ip` method for even more customization: + +```python +from checkip.providers import BaseProvider, register_provider +from checkip import get_ip + +class MyProvider(BaseProvider): + code = 'myprovider' + + def get_ip(self): + response = requests.get('https://example.com/ip.json') + response.raise_for_status() + return response.json()['ip'] + +register_provider(MyProvider) + +get_ip('myprovider') +``` + + +## CLI Usage + +### Get IP +Use provider's code to fetch your public IP from that provider. + +```bash +$ checkip get cloudflare +``` + +### Resolve IP +Use multiple provider's codes to resolve your most commonly returned public IP. + +```bash +$ checkip resolve cloudflare dyndns freedns +``` + + +## License + +**CheckIP** is a free software under terms of the `MIT License`. + +Copyright (C) 2021 by [Toni Sredanović](https://tsredanovic.github.io/), toni.sredanovic@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + + +%package help +Summary: Development documents and examples for checkip +Provides: python3-checkip-doc +%description help +# CheckIP + +Resolves public (WAN) IP from supported providers. + + +## Providers + +| Code | URL | +| -------------- | -------------------------------------------- | +| cloudflare | https://cloudflare.com/cdn-cgi/trace | +| dyndns | http://checkip.dyndns.org/ | +| freedns | https://freedns.afraid.org/dynamic/check.php | +| googledomains | https://domains.google.com/checkip | +| he | http://checkip.dns.he.net/ | +| httpbin | https://httpbin.org/ip | +| ip4only | http://ip4only.me/api/ | +| ipfy | https://api.ipify.org/ | +| loopia | http://dns.loopia.se/checkip/checkip.php | +| myip | https://api.myip.com | +| myonlineportal | https://myonlineportal.net/checkip | +| noip | http://ip1.dynupdate.no-ip.com/ | +| nsupdate | http://ipv4.nsupdate.info/myip | +| zoneedit | http://dynamic.zoneedit.com/checkip.html | + + +## Installation + +```bash +pip install checkip +``` + + +## Usage + +### Get IP +Use provider's code to fetch your public IP from that provider. + +```python +from checkip import get_ip + +get_ip('cloudflare') +``` + +### Resolve IP +Use multiple provider's codes to resolve your most commonly returned public IP. + +```python +from checkip import resolve_ip + +resolve_ip(['cloudflare', 'dyndns', 'freedns']) +``` + +### Register Custom Provider +You can create your own custom providers by extending the `BaseProvider` base class. + +Attribute `code` must be defined on each custom provider which can not match any already registered code. + +To succesfully get an IP from a custom provider you can either: + +1. Define attribute `URL` on your custom provider class. By default the IP address will be parsed from that URL's response. + +```python +from checkip.providers import BaseProvider, register_provider +from checkip import get_ip + +class MyProvider(BaseProvider): + code = 'myprovider' + url = 'https://example.com/ip' + +register_provider(MyProvider) + +get_ip('myprovider') +``` + +2. Overwrite the provider's `get_ip` method for even more customization: + +```python +from checkip.providers import BaseProvider, register_provider +from checkip import get_ip + +class MyProvider(BaseProvider): + code = 'myprovider' + + def get_ip(self): + response = requests.get('https://example.com/ip.json') + response.raise_for_status() + return response.json()['ip'] + +register_provider(MyProvider) + +get_ip('myprovider') +``` + + +## CLI Usage + +### Get IP +Use provider's code to fetch your public IP from that provider. + +```bash +$ checkip get cloudflare +``` + +### Resolve IP +Use multiple provider's codes to resolve your most commonly returned public IP. + +```bash +$ checkip resolve cloudflare dyndns freedns +``` + + +## License + +**CheckIP** is a free software under terms of the `MIT License`. + +Copyright (C) 2021 by [Toni Sredanović](https://tsredanovic.github.io/), toni.sredanovic@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + + +%prep +%autosetup -n checkip-1.2.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-checkip -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.0-1 +- Package Spec generated |