Removed the store_links function, use the standard \033 escape

sequences. And created config.c which contains configuration file
related functions.
master 2.1
qorg11 2022-06-21 16:18:07 +02:00
parent 3aa6ba02a7
commit 7c8ebde582
6 changed files with 72 additions and 65 deletions

View File

@ -1,5 +1,5 @@
PROG = sakisafecli
SRCS += funcs.c sakisafecli.c
SRCS += funcs.c sakisafecli.c config.c
MAN = sakisafecli.1 sakisafeclirc.5
LDADD = -lssl -lz -lpthread -lnghttp2 -lcurl -lconfig -lcrypto -L/usr/local/lib
PREFIX = /usr/local

39
sakisafecli/config.c Normal file
View File

@ -0,0 +1,39 @@
#include <libconfig.h>
#include <stdbool.h>
#include "options.h"
void
parse_config_file(FILE *config)
{
config_t runtime_config;
config_init(&runtime_config);
config_read(&runtime_config, config);
config_setting_t *cur;
cur = config_lookup(&runtime_config, "server");
if(config != NULL) {
if(cur != NULL)
server = (char *)config_setting_get_string(cur);
cur = config_lookup(&runtime_config, "socks_proxy");
if(cur != NULL)
socks_proxy_url = (char *)config_setting_get_string(cur);
cur = config_lookup(&runtime_config, "http_proxy");
if(cur != NULL)
http_proxy_url = (char *)config_setting_get_string(cur);
cur = config_lookup(&runtime_config, "use_socks_proxy");
if(cur != NULL)
socks_proxy_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "use_http_proxy");
if(cur != NULL)
http_proxy_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "silent");
if(cur != NULL)
silent_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "force_ipv6");
if(cur != NULL)
ipv6_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "force_ipv4");
if(cur != NULL)
ipv4_flag = config_setting_get_bool(cur);
}
}

View File

@ -19,28 +19,14 @@ print_usage()
return;
}
int
store_link(const char *path, const char *buf)
{
FILE *fp = fopen(path,"a+");
if(fp == NULL) {
fprintf(stderr,"Error opening file %i: %s\n",errno,
strerror(errno));
return -1;
}
fwrite(buf,strlen(buf),1,fp);
fputc('\n',fp);
fclose(fp);
return 0;
}
void
print_help()
{
printf("--server <server>: specifies the sakisafe server\n%s\n%s\n%s\n%s\n%s\n%s\n%s",
"-t|--token: Authentication token (https://u.kalli.st)",
"--tor: uses tor.",
"--i2p: uses i2p.",
"--http-proxy|P: http proxy to use e.g. http://127.0.0.1:4444",
"--socks-proxy|p: SOCK proxy to use e.g. 127.0.0.1:9050.",
"-6|--ipv6: uses IPv6 only.",
"-4|--ipv6: uses IPv4 only.",
"--silent: doesn't print progress.",
@ -58,7 +44,7 @@ progress(void *clientp,
/* So I don't get a warning */
dltotal += 1;
dlnow += 1;
printf("\r%0.f uploaded of %0.f (\E[32;1m%0.f%%\E[30;0m)",ulnow,ultotal,
printf("\r%0.f uploaded of %0.f (\033[32;1m%0.f%%\033[30;0m)",ulnow,ultotal,
ulnow*100/ultotal);
fflush(stdout);

View File

@ -1,8 +1,11 @@
#pragma once
#ifndef OPTIONS_H
#define OPTIONS_H
#include <libconfig.h>
/* clainsafecli options */
/* Default server you'll upload files to */
char *server = "https://lainsafe.kalli.st";
extern char *server;
/* proxy urls, socks and http. in that order, by default they're
* configured to be used for tor and i2p, but if you have another
@ -11,7 +14,18 @@ char *server = "https://lainsafe.kalli.st";
/* Enable "history" files and where to store that file */
char history_file_path[256];
const int enable_links_history = 1;
const char *path = ".cache/lainsafelinks";
extern char history_file_path[256];
extern const int enable_links_history;
extern const char *path;
/* Config file variables */
extern char *socks_proxy_url, *http_proxy_url;
extern bool socks_proxy_flag;
extern bool http_proxy_flag;
extern bool ipv6_flag;
extern bool ipv4_flag;
extern bool silent_flag;
extern config_t runtime_config;
#endif /* OPTIONS_H */

View File

@ -12,13 +12,16 @@
#include "sakisafecli.h"
/* Config variables */
char *socks_proxy_url, *http_proxy_url;
bool socks_proxy_flag = false, http_proxy_flag = false;
bool ipv6_flag = false, ipv4_flag = false;
bool silent_flag = false;
bool ipv6_flag = false, ipv4_flag = false, http_proxy_flag = false,
socks_proxy_flag = false, silent_flag = false;
char *http_proxy_url, *socks_proxy_url;
config_t runtime_config;
char *server = "https://lainsafe.delegao.moe";
const char *path = ".cache/sakisafelinks";
int
main(int argc, char **argv)
{
@ -29,8 +32,6 @@ main(int argc, char **argv)
}
#endif
char *form_key = "file";
char *buffer = (char *)calloc(1024, sizeof(char));
@ -205,38 +206,3 @@ main(int argc, char **argv)
return 0;
}
void
parse_config_file(FILE *config)
{
config_init(&runtime_config);
config_read(&runtime_config, config);
config_setting_t *cur;
cur = config_lookup(&runtime_config, "server");
if(config != NULL) {
if(cur != NULL)
server = (char *)config_setting_get_string(cur);
cur = config_lookup(&runtime_config, "socks_proxy");
if(cur != NULL)
socks_proxy_url = (char *)config_setting_get_string(cur);
cur = config_lookup(&runtime_config, "http_proxy");
if(cur != NULL)
http_proxy_url = (char *)config_setting_get_string(cur);
cur = config_lookup(&runtime_config, "use_socks_proxy");
if(cur != NULL)
socks_proxy_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "use_http_proxy");
if(cur != NULL)
http_proxy_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "silent");
if(cur != NULL)
silent_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "force_ipv6");
if(cur != NULL)
ipv6_flag = config_setting_get_bool(cur);
cur = config_lookup(&runtime_config, "force_ipv4");
if(cur != NULL)
ipv4_flag = config_setting_get_bool(cur);
}
}

View File

@ -1,4 +1,5 @@
#pragma once
#ifndef SAKISAFECLI_H
#define SAKISAFECLI_H
#include <stdlib.h>
#include <stdio.h>
@ -20,3 +21,4 @@ progress(
void
parse_config_file(FILE *config);
#endif /* SAKISAFECLI_H */