X-Git-Url: https://git.saurik.com/apt-legacy.git/blobdiff_plain/ca652fea491ea061114ffb1c21acd0fb99d8c4cb..f23a31abf292fafa4e46772d15cf65e98042e6c9:/methods/http.cc diff --git a/methods/http.cc b/methods/http.cc index f27408e..1a7e7c9 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -61,6 +61,7 @@ extern "C" { /*}}}*/ using namespace std; +CFStringRef Firmware_; const char *Machine_; const char *SerialNumber_; @@ -1124,15 +1125,6 @@ int HttpMethod::Loop() URI uri = std::string(url); std::string hs = uri.Host; - struct hostent *he = gethostbyname(hs.c_str()); - if (he == NULL || he->h_addr_list[0] == NULL) { - _error->Error(hstrerror(h_errno)); - Fail(true); - free(url); - } - - uri.Host = inet_ntoa(* (struct in_addr *) he->h_addr_list[0]); - std::string urs = uri; CFStringRef sr = CFStringCreateWithCString(kCFAllocatorDefault, urs.c_str(), se); @@ -1156,6 +1148,9 @@ int HttpMethod::Loop() CFRelease(sr); } + if (Firmware_ != NULL) + CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("X-Firmware"), Firmware_); + sr = CFStringCreateWithCString(kCFAllocatorDefault, Machine_, se); CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("X-Machine"), sr); CFRelease(sr); @@ -1166,10 +1161,6 @@ int HttpMethod::Loop() CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("User-Agent"), CFSTR("Telesphoreo APT-HTTP/1.0.98")); - sr = CFStringCreateWithCString(kCFAllocatorDefault, hs.c_str(), se); - CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("Host"), sr); - CFRelease(sr); - CFReadStreamRef rs = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, hm); CFRelease(hm); @@ -1397,6 +1388,23 @@ int main() sysctlbyname("hw.machine", machine, &size, NULL, 0); Machine_ = machine; + const char *path = "/System/Library/CoreServices/SystemVersion.plist"; + CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); + + CFPropertyListRef plist; { + CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); + CFReadStreamOpen(stream); + plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListImmutable, NULL, NULL); + CFReadStreamClose(stream); + } + + CFRelease(url); + + if (plist != NULL) { + Firmware_ = (CFStringRef) CFRetain(CFDictionaryGetValue((CFDictionaryRef) plist, CFSTR("ProductVersion"))); + CFRelease(plist); + } + if (CFMutableDictionaryRef dict = IOServiceMatching("IOPlatformExpertDevice")) if (io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, dict)) { if (CFTypeRef serial = IORegistryEntryCreateCFProperty(service, CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0)) {