github.com/troglobit / lipify

C API for http://ipify.org

Commit log
fe2a15b ⎇ masterUpdate author last name Joachim Wiberg 4 years ago
4a5e99d Update copyright years Joachim Wiberg 4 years ago
4a92ae0 .github: help for first time contributors Joachim Wiberg 4 years ago
cfdda12 Use IPIFY_HOST in main() Joachim Nilsson 7 years ago
e1203be Move IPIFY_HOST define to public header Joachim Nilsson 7 years ago
c9e6221 Only use stddef.h in ipify.h public header Joachim Nilsson 7 years ago
c8f0744 Use new API and expose optional host argument Joachim Nilsson 7 years ago
fd81f91 Add ipify_connect2() to select API endpoint/host as well Joachim Nilsson 7 years ago
638bfdb Minor coding style Joachim Nilsson 7 years ago
5cd6153 Add basic option handling Joachim Nilsson 7 years ago

C library for api.ipify.org

lipify connects to http://api.ipify.org to query your current IP address. Both IPv4 and IPv6 is supported, for connecting to the ipify server and returning your address.

The library weighs in at 14 kiB. A versioned tarball can be downloaded from GitHub: https://github.com/troglobit/lipify/releases

Build & Install

By default, lipify installs to /usr/local:

make
make install

The default can be changed by setting the prefix= variable at install:

make install prefix=/opt

The DESTDIR= variable is also supported, for the benefit of packagers.

Example

The simplest example of lipify looks like this:

    #include <stdio.h>
    #include <ipify.h>

    int main(void)
    {
            char addr[256];

            if (ipify(addr, sizeof(addr)))
                    return 1;

            printf("%s\n", addr);

            return 0;
    }

You can also get a descriptor, to use with poll() or an event loop library like libuEv, like this:

    #include <ipify.h>

    int main(void)
    {
            int sd;
            char addr[256];

            sd = ipify_connect();
            if (sd < 0)
                    return 1;

            if (!ipify_query(sd, addr, sizeof(addr)))
                    printf("%s\n", addr);

            return ipify_disconnect(sd);
    }

License

lipify is free software, licensed to you under the very permissive ISC license. See the file LICENSE in the lipify distribution for details.

Origin & References

lipify is written by Joachim Wiberg, post bug reports and pull requests to the project's GitHub repository at https://github.com/troglobit/lipify