Added default config file
This commit is contained in:
parent
5b5c3d069d
commit
beb0a4eb98
7 changed files with 118 additions and 68 deletions
|
@ -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
12
config.example.ini
Normal 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
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue