From 62258ba3b4737432a95c3af8d0e03ed3fb7953e7 Mon Sep 17 00:00:00 2001
From: open-license-manager <rillf@maildrop.cc>
Date: 周一, 13 10月 2014 05:05:37 +0800
Subject: [PATCH] windows ok

---
 src/library/os/linux/os-linux.cpp |   99 +++++++++++++++----------------------------------
 1 files changed, 30 insertions(+), 69 deletions(-)

diff --git a/src/library/os/linux/os-linux.cpp b/src/library/os/linux/os-linux.cpp
index eb515b2..fffd816 100644
--- a/src/library/os/linux/os-linux.cpp
+++ b/src/library/os/linux/os-linux.cpp
@@ -1,5 +1,19 @@
-#include <paths.h>
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE     /* To get defns of NI_MAXSERV and NI_MAXHOST */
+#endif
+#include <arpa/inet.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <ifaddrs.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <linux/if_link.h>
+#include <sys/socket.h>
+#include <netpacket/packet.h>
+
+#include <paths.h>
+
 #include <stdlib.h>
 #include <cstring>
 #include <string>
@@ -8,8 +22,9 @@
 #include <sstream>
 #include <sys/ioctl.h>
 #include <sys/stat.h>
-#include "../os.hpp"
-#include "../../base/public-key.h"
+#include "../os-cpp.h"
+#include "public-key.h"
+
 #include <openssl/evp.h>
 #include <openssl/bio.h>
 #include <openssl/pem.h>
@@ -19,56 +34,12 @@
 
 using namespace std;
 
-vector<AdapterInfo> OsFunctions::getAdapterInfos() {
-	return vector<AdapterInfo>();
-}
-vector<DiskInfo> OsFunctions::getDiskInfos() {
-	struct stat filename_stat, mount_stat;
-	static char discard[1024];
-	char device[64], name[64], type[64];
-	FILE *mounts = fopen(_PATH_MOUNTED, "r");
-
-	while (fscanf(mounts, "%64s %64s %64s %1024[^\n]", device, name, type,
-			discard) != EOF) {
-		if (stat(device, &mount_stat) != 0)
-			continue;
-		if (filename_stat.st_dev == mount_stat.st_rdev)
-			fprintf(stderr, "device: %s; name: %s; type: %s\n", device, name,
-					type);
-	}
-
-	return vector<DiskInfo>();
-}
-
-string OsFunctions::getModuleName() {
-	char path[2048] = { 0 };
-	string strPath;
-	string result;
-	pid_t pid = getpid();
-	const string pidstr = to_string(((long) pid));
-	strPath = string("/proc/") + pidstr + "/exe";
-	const char * proc_path = strPath.c_str();
-	int ch = readlink(proc_path, path, 2048);
-	if (ch != -1) {
-		path[ch] = '\0';
-		result = string(path);
-	} else {
-		throw runtime_error(
-				string("Can't find: ") + strPath + " proc filesystem mounted?");
-	}
-	return result;
-}
-
-string OsFunctions::getUserHomePath() {
-	return "";
-}
 
 bool OsFunctions::verifySignature(const char* stringToVerify,
 		const char* signatureB64) {
 	EVP_MD_CTX *mdctx = NULL;
 
-	char *pubKey = PUBLIC_KEY
-	;
+	const char *pubKey = PUBLIC_KEY;
 
 	BIO* bio = BIO_new_mem_buf((void*) (pubKey), strlen(pubKey));
 	RSA *rsa = PEM_read_bio_RSAPublicKey(bio, NULL, NULL, NULL);
@@ -86,8 +57,8 @@
 	 PEM_read_bio_RSAPublicKey(bo, &key, 0, 0);
 	 BIO_free(bo);*/
 
-	//RSA* rsa = EVP_PKEY_get1_RSA( key );
-	//RSA * pubKey = d2i_RSA_PUBKEY(NULL, <der encoded byte stream pointer>, <num bytes>);
+//RSA* rsa = EVP_PKEY_get1_RSA( key );
+//RSA * pubKey = d2i_RSA_PUBKEY(NULL, <der encoded byte stream pointer>, <num bytes>);
 	unsigned char buffer[512];
 	BIO* b64 = BIO_new(BIO_f_base64());
 	BIO* encoded_signature = BIO_new_mem_buf((void *) signatureB64,
@@ -95,7 +66,7 @@
 	BIO* biosig = BIO_push(b64, encoded_signature);
 	BIO_set_flags(biosig, BIO_FLAGS_BASE64_NO_NL); //Do not use newlines to flush buffer
 	unsigned int len = BIO_read(biosig, (void *) buffer, strlen(signatureB64));
-	//Can test here if len == decodeLen - if not, then return an error
+//Can test here if len == decodeLen - if not, then return an error
 	buffer[len] = 0;
 
 	BIO_free_all(biosig);
@@ -107,14 +78,12 @@
 	if (1 != EVP_DigestVerifyInit(mdctx, NULL, EVP_sha256(), NULL, pkey)) {
 		throw new logic_error("Error initializing digest");
 	}
-	int en=strlen(stringToVerify);
-	if (1
-			!= EVP_DigestVerifyUpdate(mdctx, stringToVerify,
-					en)) {
+	int en = strlen(stringToVerify);
+	if (1 != EVP_DigestVerifyUpdate(mdctx, stringToVerify, en)) {
 		throw new logic_error("Error verifying digest");
 	}
 	bool result;
-	int res= EVP_DigestVerifyFinal(mdctx, buffer, len);
+	int res = EVP_DigestVerifyFinal(mdctx, buffer, len);
 	if (1 == res) {
 		result = true;
 	} else {
@@ -129,20 +98,12 @@
 	return result;
 }
 
-void OsFunctions::initialize() {
-	static bool initialized = false;
-	if (!initialized) {
-		initialized = true;
-		ERR_load_ERR_strings();
-		ERR_load_crypto_strings();
-		OpenSSL_add_all_algorithms();
-	}
-}
 
-VIRTUALIZATION OsFunctions::getVirtualization() {
-	//http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
-	//
-	bool rc = true;
+
+VIRTUALIZATION getVirtualization() {
+//http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
+//
+//bool rc = true;
 	/*__asm__ (
 	 "push   %edx\n"
 	 "push   %ecx\n"

--
Gitblit v1.9.1