draft basics

This commit is contained in:
Dennis Eichhorn 2022-09-16 23:34:48 +02:00
parent e04f1c06c2
commit 67d101074f
9 changed files with 113 additions and 4 deletions

4
.gitignore vendored
View File

@ -3,4 +3,6 @@ obj/
*.cache
.directory
bin/Debug
x64/Debug
x64/Debug
app/server/Libraries
.vscode

View File

@ -2,5 +2,10 @@ cmake_minimum_required(VERSION 2.8)
project( OnlineResourceWatcherServerApp )
add_executable( OnlineResourceWatcherServerApp main.cpp )
# SQLite3
include_directories( /usr/include )
link_directories( /usr/lib )
target_link_libraries( OnlineResourceWatcherServerApp sqlite3 )
# cmake -DCMAKE_BUILD_TYPE=Debug -DOMS_DEBUG=true
# cmake -DCMAKE_BUILD_TYPE=Release -DOMS_DEMO=true

26
app/server/Models/Db.h Normal file
View File

@ -0,0 +1,26 @@
/**
* Karaka
*
* @package Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://karaka.app
*/
#ifndef MODELS_DB_H
#define MODELS_DB_H
namespace Models {
class Db {
private:
public:
static inline
int setup_connection (char *cfg)
{
return 0;
}
};
}
#endif

0
app/server/Models/File.h Normal file
View File

View File

@ -0,0 +1,7 @@
#!/bin/bash
sudo apt-get install sqlite3 libsqlite3-dev
sudo apt install default-libmysqlclient-dev
sudo apt-get install libxml2-dev
# install maria db https://mariadb.com/docs/connect/programming-languages/cpp/install/

@ -1 +1 @@
Subproject commit cd71fb74b146e1fffefafe6f8f053ec4ef4a1096
Subproject commit 6f9f0c03aa5edab86b7c9eec9efa69367997b0d9

0
app/server/config.json Normal file
View File

View File

@ -9,8 +9,17 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <curl/curl.h>
#include "cOMS/Utils/ArrayUtils.h"
#include "cOMS/Utils/FileUtils.h"
#include "cOMS/Hash/MeowHash.h"
#include "cOMS/Utils/Parser/Json.h"
#include "Models/Db.h"
#ifndef OMS_DEMO
#define OMS_DEMO false
@ -33,19 +42,74 @@ void printVersion()
printf("Version: 1.0.0\n");
}
void parseConfigFile()
{
FILE *fp = fopen("config.json");
nlohmann::json config = nlohmann::json::parse(fp);
}
bool isResourceModified(char *filename, time_t last_change)
{
return oms_abs(Utils::FileUtils::last_modification(filename) - last_change) > 1;
}
bool hasResourceContentChanged(char *filename1, char *filename2)
{
Utils::FileUtils::file_body f1 = Utils::FileUtils::read_file(filename1);
Utils::FileUtils::file_body f2 = Utils::FileUtils::read_file(filename2);
Hash::Meow::meow_u128 h1 = Hash::Meow::MeowHash(Hash::Meow::MeowDefaultSeed, f1.size, f1.content);
Hash::Meow::meow_u128 h2 = Hash::Meow::MeowHash(Hash::Meow::MeowDefaultSeed, f2.size, f2.content);
bool areHashesEqual = Hash::Meow::MeowHashesAreEqual(h1, h2);
free(f1.content);
free(f2.content);
return areHashesEqual;
}
void saveResourceChange()
{
}
MYSQL *con = null;
int main(int argc, char **argv)
{
bool hasHelpCmd = Utils::ArrayUtils::has_arg("-h", argv, argc);
bool hasHelpCmd = Utils::ArrayUtils::has_arg("-h", argv, argc);
if (hasHelpCmd) {
printHelp();
return 0;
}
bool hasVersionCmd = Utils::ArrayUtils::has_arg("-v", argv, argc);
bool hasVersionCmd = Utils::ArrayUtils::has_arg("-v", argv, argc);
if (hasVersionCmd) {
printVersion();
return 0;
}
if (!Utils::FileUtils::file_exists("config.json")) {
printf("No config file available.");
return -1;
}
unsigned long resourceId = (unsigned long) Utils::ArrayUtils::get_arg("-r", argv, argc);
// read config file
// create database connection (either mariadb or sqlite)
// @todo create wrapper for sqlite, mysql and postgresql
con = mysql_init(NULL);
if (mysql_real_connect(con, "localhost", "root", "root_passwd", NULL, 0, NULL, 0) == NULL) {
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
}

View File

@ -303,6 +303,11 @@
"type": "VARCHAR(255)",
"null": false
},
"resource_xpath": {
"name": "resource_xpath",
"type": "VARCHAR(255)",
"null": false
},
"resource_hash": {
"name": "resource_hash",
"type": "BLOB(64)",