I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Unverified Commit e136eebd authored by xalloc xzal's avatar xalloc xzal
Browse files

Added implementation of lainsafecli written in c, so it's faster or something

compile with gcc clainsafecli.c -lcurl -o clainsafecli
parent ffd96c69
No related branches found
No related tags found
No related merge requests found
#include <stdio.h>
#include <unistd.h>
#include <curl/curl.h>
#include <string.h>
#include <stdlib.h>
#include <getopt.h>
size_t static write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
memcpy(userp, buffer, nmemb*size);
return 0;
}
int
main(int argc, char **argv)
{
struct curl_httppost *post=NULL;
struct curl_httppost *last=NULL;
char *buffer = (char *)calloc(1024,sizeof(char));
char server[256] = "https://lainsafe.kalli.st";
CURL *easy_handle = curl_easy_init();
if(!easy_handle) {
fprintf(stderr,"Error initializing libcurl\n");
return -1;
}
if(argc == optind) {
printf("%s server file\n",argv[0]);
return -1;
}
int option_index = 0;
static struct option long_options[] = {
{"server",required_argument,0,'s'},
{0 ,0 ,0, 0 }
};
int c = 0;
while((c = getopt_long(argc,argv, "s:",long_options,&option_index)) != -1) {
switch(c) {
case 's':
strncpy(server,optarg,256);
break;
case '?':
fprintf(stderr,"Unrecognized argument\n");
return -1;
break;
default:
return -1;
break;
}
}
curl_easy_setopt(easy_handle, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(easy_handle,CURLOPT_WRITEDATA,buffer);
curl_easy_setopt(easy_handle,CURLOPT_URL,server);
curl_formadd(&post,&last,
CURLFORM_COPYNAME, "file",
CURLFORM_FILE,argv[optind],
CURLFORM_END);
curl_formadd(&post,&last,
CURLFORM_COPYNAME, "file",
CURLFORM_COPYCONTENTS,argv[optind],
CURLFORM_END);
curl_easy_setopt(easy_handle,CURLOPT_HTTPPOST,post);
curl_easy_perform(easy_handle);
puts(buffer);
free(buffer);
curl_formfree(post);
curl_easy_cleanup(easy_handle);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment