Added default config file

This commit is contained in:
Bazsalanszky 2019-10-28 16:58:09 +01:00
parent 5b5c3d069d
commit beb0a4eb98
Signed by: Bazsalanszky
GPG key ID: 214701A3BD4B06F2
7 changed files with 118 additions and 68 deletions

View file

@ -1,6 +1,6 @@
# P2P-chat
A projekem célja (ahogy a neve is mondja) egy Peer to Peer chat alkalmazás létrehozása. A lénye az, hogy több gép egy hálózatot alkotva kommunikál egymással,azaz nincs egy központi szerver,ami az üzeneteket továbbítja a klienseknek,hanem minden üzenet közvetlenül megy a feladótól a címzettig.
A projektem célja (ahogy a neve is mondja) egy Peer to Peer chat alkalmazás létrehozása. A lénye az, hogy több gép egy hálózatot alkotva kommunikál egymással,azaz nincs egy központi szerver,ami az üzeneteket továbbítja a klienseknek,hanem minden üzenet közvetlenül megy a feladótól a címzettig.
## Szükséges könyvtárak

12
config.example.ini Normal file
View file

@ -0,0 +1,12 @@
#Becenév
#nickname=Pelda
#A program által használt port (Alapértelmezett: 6381)
port=6327
#Letiltja a külső csatlakozást (Alapértelmezett: false)
localmode=false
#Ezne a porton lesz elérhető a felhasználói felület (Alapértelmezett: 5381)
interface-port=5381
#Ebben a mappában vannak tárolva a html fájlok a felhasználói felülethez (Alapértelmezett: htdocs/)
interface-folder=htdocs/
#A felhasználói felület csak ezen a gépen érhető elő (Alapértelmezett: true;Ajánlott)
interface-local=true

View file

@ -23,7 +23,7 @@ A program ezekben az esetekben ír ki a képernyőre (és mindezt elmenti a `log
## Konfigurációs fájl
A konfigurációs fájl arra szolgál, hogy a felhasználó igényei szerint beállíthassa,hogy hogyan működjön a program.Ez a fájl a `config.txt`. Itt a különböző értékek soronként `kulcs=érték` formátumban vannak.
A konfigurációs fájl arra szolgál, hogy a felhasználó igényei szerint beállíthassa,hogy hogyan működjön a program.Ez a fájl a `config.ini`. Itt a különböző értékek soronként `kulcs=érték` formátumban vannak.
Ha egy sor kettős kereszttel(`#`) kezdődik,akkor azt a program kommentnek veszi.

View file

@ -8,16 +8,36 @@ config config_load(){
config cfg;
map_init(&cfg);
FILE * f;
f = fopen("config.txt","r");
f = fopen("config.ini","r");
if(f != NULL) {
char key[65], value[65];
while (fscanf(f, "%[^=]=%s\n", key, value) != EOF) {
//Comment in config
if (key[0] == '#') continue;
char buf[256], key[65], value[65];
while (fgets(buf, sizeof(buf), f) != NULL)
{
if (buf[0] == '#') continue;
sscanf(buf, "%[^=]=%s\n", key, value);
map_addPair(&cfg, map_make_pair(key, value));
ZeroMemory(key, 65);
ZeroMemory(value, 65);
ZeroMemory(buf, 256);
}
}else{
char* exampleConf= "#Becenév\n"
"#nickname=Pelda\n"
"#A program által használt port (Alapértelmezett: 6381)\n"
"port=6327\n"
"#Letiltja a külső csatlakozást (Alapértelmezett: false)\n"
"localmode=false\n"
"#Ezne a porton lesz elérhető a felhasználói felület (Alapértelmezett: 5381)\n"
"interface-port=5381\n"
"#Ebben a mappában vannak tárolva a html fájlok a felhasználói felülethez (Alapértelmezett: htdocs/)\n"
"interface-folder=htdocs/\n"
"#A felhasználói felület csak ezen a gépen érhető elő (Alapértelmezett: true;Ajánlott)\n"
"interface-local=true" ;
f = fopen("config.ini","w");
fprintf(f,exampleConf);
fclose(f);
}
return cfg;
}

View file

@ -5,30 +5,25 @@
#include "crypto.h"
#undef APPMACROS_ONLY
#include <openssl/applink.c>
RSA * createRSA(unsigned char * key,int public)
{
RSA *createRSA(unsigned char *key, int public) {
RSA *rsa = NULL;
BIO *keybio;
keybio = BIO_new_mem_buf(key, -1);
if (keybio==NULL)
{
printf( "Failed to create key BIO");
if (keybio == NULL) {
logger_log("Failed to create key BIO");
return 0;
}
if(public)
{
if (public) {
rsa = PEM_read_bio_RSA_PUBKEY(keybio, &rsa, NULL, NULL);
}
else
{
} else {
rsa = PEM_read_bio_RSAPrivateKey(keybio, &rsa, NULL, NULL);
}
if(rsa == NULL)
{
printf( "Failed to create RSA");
if (rsa == NULL) {
logger_log("Failed to create RSA");
}
return rsa;
@ -37,24 +32,19 @@ RSA * createRSA(unsigned char * key,int public)
RSA *createRSAfromFile(char *file, int pub) {
FILE *fp = fopen(file, "rb");
if(fp == NULL)
{
if (fp == NULL) {
return NULL;
}
RSA *rsa = RSA_new();
if(pub)
{
if (pub) {
rsa = PEM_read_RSA_PUBKEY(fp, &rsa, NULL, NULL);
}
else
{
} else {
rsa = PEM_read_RSAPrivateKey(fp, &rsa, NULL, NULL);
}
return rsa;
}
RSA *generate_key() {
int ret = 0;
RSA *r = NULL;
@ -125,6 +115,7 @@ void RSA_getPrivateKey(RSA *r, char *privkey) {
int re = BIO_read(bio, privkey, keylen);
BIO_free_all(bio);
}
int public_encrypt(unsigned char *data, int data_len, unsigned char *key, unsigned char *encrypted) {
RSA *rsa = createRSA(key, 1);
int result = RSA_public_encrypt(data_len, data, encrypted, rsa, RSA_PKCS1_PADDING);
@ -157,6 +148,7 @@ int base64Encode(const unsigned char* input ,size_t len, char** output) {
return 0;
}
size_t calcDecodeLength(const char *b64input) { //Calculates the length of a decoded string
size_t len = strlen(b64input),
padding = 0;

View file

@ -42,7 +42,33 @@ struct addrinfo* tcp_createIPv4Socket(SOCKET *s,int port,bool wildcard){
int tcp_bindnlisten(SOCKET s,struct addrinfo* addr,int conn_count){
int res = bind(s, addr->ai_addr, addr->ai_addrlen);
if (res == SOCKET_ERROR) {
logger_log("Error binding socket! Error: %d", WSAGetLastError());
logger_log("Error binding socket!");
switch(WSAGetLastError()){
case WSAENETDOWN:
logger_log("The network subsystem has failed.");
break;
case WSAEADDRINUSE:
logger_log("Port already in use.");
break;
case WSAEACCES:
logger_log("An attempt was made to access a socket in a way forbidden by its access permissions.");
break;
case WSAEADDRNOTAVAIL:
logger_log("The requested address is not valid in its context.");
break;
case WSAEFAULT:
logger_log("The system detected an invalid pointer address in attempting to use a pointer argument in a call.");
break;
case WSAEINPROGRESS:
logger_log("A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.");
break;
case WSAEINVAL:
logger_log("This socket is already bound to an address.");
break;
case WSAENOBUFS:
logger_log("Not enough buffers are available or there are too many connections!");
break;
}
freeaddrinfo(addr);
WSACleanup();
return 1;