Update Makefile, change build
This commit is contained in:
parent
1430c2f33c
commit
a952a10759
8
Makefile
8
Makefile
|
@ -1,5 +1,9 @@
|
|||
CC=gcc
|
||||
CFLAGS=-lcurl -lcjson
|
||||
SRCDIR=src
|
||||
OBJDIR=bin
|
||||
|
||||
# Use variables for source and object files
|
||||
ip-lookup: $(SRCDIR)/main.c
|
||||
$(CC) -o $(OBJDIR)/ip-lookup $(SRCDIR)/main.c $(CFLAGS)
|
||||
|
||||
ip-lookup: main.c
|
||||
$(CC) -o ip-lookup main.c $(CFLAGS)
|
||||
|
|
86
main.c
86
main.c
|
@ -1,86 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <curl/curl.h>
|
||||
#include <cjson/cJSON.h>
|
||||
|
||||
static size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) {
|
||||
size_t realsize = size * nmemb;
|
||||
((char *)userp)[realsize] = 0;
|
||||
strcat(userp, contents);
|
||||
return realsize;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 2) {
|
||||
printf("Usage: %s <IP_ADDRESS>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
char url[256] = "http://ip-api.com/json/";
|
||||
strcat(url, argv[1]);
|
||||
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
char buffer[2048] = {0};
|
||||
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
curl = curl_easy_init();
|
||||
|
||||
if (!curl) {
|
||||
fprintf(stderr, "Error: Failed to initialize libcurl.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
|
||||
if (res != CURLE_OK) {
|
||||
fprintf(stderr, "Error: Failed to fetch data from ip-api.com: %s\n", curl_easy_strerror(res));
|
||||
curl_easy_cleanup(curl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
curl_easy_cleanup(curl);
|
||||
curl_global_cleanup();
|
||||
|
||||
cJSON *json = cJSON_Parse(buffer);
|
||||
if (!json) {
|
||||
fprintf(stderr, "Error: Failed to parse JSON data.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
cJSON *status = cJSON_GetObjectItem(json, "status");
|
||||
if (status && cJSON_IsString(status) && strcmp(status->valuestring, "fail") == 0) {
|
||||
fprintf(stderr, "Error: Failed to fetch data for IP address %s\n", argv[1]);
|
||||
cJSON_Delete(json);
|
||||
return 1;
|
||||
}
|
||||
|
||||
cJSON *city = cJSON_GetObjectItem(json, "city");
|
||||
cJSON *regionName = cJSON_GetObjectItem(json, "regionName");
|
||||
cJSON *country = cJSON_GetObjectItem(json, "country");
|
||||
cJSON *timezone = cJSON_GetObjectItem(json, "timezone");
|
||||
cJSON *zip = cJSON_GetObjectItem(json, "zip");
|
||||
cJSON *isp = cJSON_GetObjectItem(json, "isp");
|
||||
cJSON *org = cJSON_GetObjectItem(json, "org");
|
||||
cJSON *as = cJSON_GetObjectItem(json, "as");
|
||||
cJSON *hostname = cJSON_GetObjectItem(json, "hostName");
|
||||
|
||||
|
||||
printf("Hostname: %s\n", hostname ? hostname->valuestring : "Unknown");
|
||||
printf("City: %s\n", city ? city->valuestring : "Unknown");
|
||||
printf("Region: %s\n", regionName ? regionName->valuestring : "Unknown");
|
||||
printf("Country: %s\n", country ? country->valuestring : "Unknown");
|
||||
printf("Time Zone: %s\n", timezone ? timezone->valuestring : "Unknown");
|
||||
printf("ZIP: %s\n", zip ? zip->valuestring : "Unknown");
|
||||
printf("ISP: %s\n", isp ? isp->valuestring : "Unknown");
|
||||
printf("Organization: %s\n", org ? org->valuestring : "Unknown");
|
||||
printf("AS: %s\n", as ? as->valuestring : "Unknown");
|
||||
|
||||
cJSON_Delete(json);
|
||||
return 0;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
/home/sweat/gitprojects/ip-lookup/main.c
|
|
@ -0,0 +1,86 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <curl/curl.h>
|
||||
#include <cjson/cJSON.h>
|
||||
|
||||
static size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) {
|
||||
size_t realsize = size * nmemb;
|
||||
((char *)userp)[realsize] = 0;
|
||||
strcat(userp, contents);
|
||||
return realsize;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 2) {
|
||||
printf("Usage: %s <IP_ADDRESS>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
char url[256] = "http://ip-api.com/json/";
|
||||
strcat(url, argv[1]);
|
||||
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
char buffer[2048] = {0};
|
||||
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
curl = curl_easy_init();
|
||||
|
||||
if (!curl) {
|
||||
fprintf(stderr, "Error: Failed to initialize libcurl.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
|
||||
if (res != CURLE_OK) {
|
||||
fprintf(stderr, "Error: Failed to fetch data from ip-api.com: %s\n", curl_easy_strerror(res));
|
||||
curl_easy_cleanup(curl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
curl_easy_cleanup(curl);
|
||||
curl_global_cleanup();
|
||||
|
||||
cJSON *json = cJSON_Parse(buffer);
|
||||
if (!json) {
|
||||
fprintf(stderr, "Error: Failed to parse JSON data.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
cJSON *status = cJSON_GetObjectItem(json, "status");
|
||||
if (status && cJSON_IsString(status) && strcmp(status->valuestring, "fail") == 0) {
|
||||
fprintf(stderr, "Error: Failed to fetch data for IP address %s\n", argv[1]);
|
||||
cJSON_Delete(json);
|
||||
return 1;
|
||||
}
|
||||
|
||||
cJSON *city = cJSON_GetObjectItem(json, "city");
|
||||
cJSON *regionName = cJSON_GetObjectItem(json, "regionName");
|
||||
cJSON *country = cJSON_GetObjectItem(json, "country");
|
||||
cJSON *timezone = cJSON_GetObjectItem(json, "timezone");
|
||||
cJSON *zip = cJSON_GetObjectItem(json, "zip");
|
||||
cJSON *isp = cJSON_GetObjectItem(json, "isp");
|
||||
cJSON *org = cJSON_GetObjectItem(json, "org");
|
||||
cJSON *as = cJSON_GetObjectItem(json, "as");
|
||||
cJSON *hostname = cJSON_GetObjectItem(json, "hostName");
|
||||
|
||||
|
||||
printf("Hostname: %s\n", hostname ? hostname->valuestring : "Unknown");
|
||||
printf("City: %s\n", city ? city->valuestring : "Unknown");
|
||||
printf("Region: %s\n", regionName ? regionName->valuestring : "Unknown");
|
||||
printf("Country: %s\n", country ? country->valuestring : "Unknown");
|
||||
printf("Time Zone: %s\n", timezone ? timezone->valuestring : "Unknown");
|
||||
printf("ZIP: %s\n", zip ? zip->valuestring : "Unknown");
|
||||
printf("ISP: %s\n", isp ? isp->valuestring : "Unknown");
|
||||
printf("Organization: %s\n", org ? org->valuestring : "Unknown");
|
||||
printf("AS: %s\n", as ? as->valuestring : "Unknown");
|
||||
|
||||
cJSON_Delete(json);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue