Introduction
Introduction Statistics Contact Development Disclaimer Help
Merge pull request #15 from renaudallard/master - fiche - A pastebin adjusted f…
git clone git://vernunftzentrum.de/fiche.git
Log
Files
Refs
LICENSE
---
commit a0bbd2fa28625f03f41778f815572e4aa05dce02
parent a85e04d8160a30c2a6e365b59189842fc5bca670
Author: solusipse <[email protected]>
Date: Sat, 29 Aug 2015 16:12:12 +0200
Merge pull request #15 from renaudallard/master
Multiple fixes
Diffstat:
fiche.c | 42 +++++++++++++++++++------------
fiche.h | 8 +++++---
2 files changed, 31 insertions(+), 19 deletions(-)
---
diff --git a/fiche.c b/fiche.c
@@ -9,11 +9,13 @@ Live example: http://code.solusipse.net/
-------------------------------------------------------------------------------
-usage: fiche [-pbsdolBuw].
- [-d domain] [-p port] [-s slug size]
+usage: fiche [-epbsdolBuw].
+ [-e] [-d domain] [-p port] [-s slug size]
[-o output directory] [-B buffer size] [-u user name]
[-l log file] [-b banlist] [-w whitelist]
+-e option is for using an extended character set for the URL
+
Compile with Makefile or manually with -O2 and -pthread flags.
To install use `make install` command.
@@ -24,6 +26,7 @@ $ cat fiche.c | nc localhost 9999
-------------------------------------------------------------------------------
*/
+#include <sys/param.h>
#include "fiche.h"
int main(int argc, char **argv)
@@ -57,7 +60,7 @@ void *thread_connection(void *args)
char buffer[BUFSIZE];
bzero(buffer, BUFSIZE);
- int status = recv(connection_socket, buffer, BUFSIZE, MSG_WAITALL);
+ int status = recv(connection_socket, buffer, BUFSIZE, MSG_DONTWAIT);
if (WHITELIST != NULL)
if (check_whitelist(data.ip_address) == NULL)
@@ -107,8 +110,8 @@ void perform_connection(int listen_socket)
pthread_t thread_id;
struct sockaddr_in client_address;
- int address_lenght = sizeof(client_address);
- int connection_socket = accept(listen_socket, (struct sockaddr *) &client_…
+ int address_length = sizeof(client_address);
+ int connection_socket = accept(listen_socket, (struct sockaddr *) &client_…
struct timeval timeout;
timeout.tv_sec = 5;
@@ -271,13 +274,21 @@ void generate_url(char *buffer, char *slug, size_t slug_l…
for (i = 0; i <= SLUG_SIZE - 1; i++)
{
+#if defined(BSD)
+ int symbol_id = arc4random() % strlen(symbols);
+#else
int symbol_id = rand_r(&time_seed) % strlen(symbols);
+#endif
slug[i] = symbols[symbol_id];
}
while (create_directory(slug) == -1)
{
+#if defined(BSD)
+ int symbol_id = arc4random() % strlen(symbols);
+#else
int symbol_id = rand_r(&time_seed) % strlen(symbols);
+#endif
slug[strlen(slug)] = symbols[symbol_id];
}
@@ -286,10 +297,9 @@ void generate_url(char *buffer, char *slug, size_t slug_le…
int create_directory(char *slug)
{
- char *directory = malloc(strlen(BASEDIR) + strlen(slug) + 1);
+ char *directory = malloc(strlen(BASEDIR) + strlen(slug) + sizeof(char) + 1…
- strcpy(directory, BASEDIR);
- strcat(directory, slug);
+ snprintf(directory, strlen(BASEDIR) + strlen(slug) + sizeof(char) + 1, "%s…
mkdir(BASEDIR, S_IRWXU | S_IRGRP | S_IROTH | S_IXOTH | S_IXGRP);
int result = mkdir(directory, S_IRWXU | S_IRGRP | S_IROTH | S_IXOTH | S_IX…
@@ -303,10 +313,9 @@ int create_directory(char *slug)
void save_to_file(char *slug, char *buffer, struct client_data data)
{
- char *directory = malloc(strlen(BASEDIR) + strlen(slug) + strlen("/index.t…
- strcpy(directory, BASEDIR);
- strcat(directory, slug);
- strcat(directory, "/index.txt");
+ char *directory = malloc(strlen(BASEDIR) + strlen(slug) + 11 * sizeof(char…
+
+ snprintf(directory, strlen(BASEDIR) + strlen(slug) + 11 * sizeof(char) + 1…
FILE *fp;
fp = fopen(directory, "w");
@@ -348,7 +357,7 @@ int check_protocol(char *buffer)
void set_basedir()
{
BASEDIR = getenv("HOME");
- strcat(BASEDIR, "/code/");
+ strncat(BASEDIR, "/code", 5 * sizeof(char));
}
void startup_message()
@@ -364,9 +373,12 @@ void parse_parameters(int argc, char **argv)
{
int c;
- while ((c = getopt (argc, argv, "p:b:s:d:o:l:B:u:w:")) != -1)
+ while ((c = getopt (argc, argv, "ep:b:s:d:o:l:B:u:w:")) != -1)
switch (c)
{
+ case 'e':
+ snprintf(symbols, sizeof symbols, "%s", "abcdefghijklmnopqrstu…
+ break;
case 'd':
snprintf(DOMAIN, sizeof DOMAIN, "%s%s%s", "http://", optarg, "…
break;
@@ -387,8 +399,6 @@ void parse_parameters(int argc, char **argv)
break;
case 'o':
BASEDIR = optarg;
- if((BASEDIR[strlen(BASEDIR) - 1]) != '/')
- strcat(BASEDIR, "/");
break;
case 'l':
LOG = optarg;
diff --git a/fiche.h b/fiche.h
@@ -9,11 +9,13 @@ Live example: http://code.solusipse.net/
-------------------------------------------------------------------------------
-usage: fiche [-pbsdolBuw].
- [-d domain] [-p port] [-s slug size]
+usage: fiche [-epbsdolBuw].
+ [-e] [-d domain] [-p port] [-s slug size]
[-o output directory] [-B buffer size] [-u user name]
[-l log file] [-b banlist] [-w whitelist]
+-e option is for using an extended character set for the URL
+
Compile with Makefile or manually with -O2 and -pthread flags.
To install use `make install` command.
@@ -54,9 +56,9 @@ int SLUG_SIZE = 4;
int BUFSIZE = 32768;
int QUEUE_SIZE = 500;
char DOMAIN[128] = "http://localhost/";
+char symbols[67] = "abcdefghijklmnopqrstuvwxyz0123456789";
unsigned int time_seed;
-const char *symbols = "abcdefghijklmnopqrstuvwxyz0123456789";
struct thread_arguments
{
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.