summaryrefslogtreecommitdiff
path: root/ws2a/newbug.c
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-05-29 20:52:17 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2016-05-29 20:52:17 -0400
commit15fcc190319a3deaaeaa544833ea07475e790585 (patch)
tree25b9ad86998682bb0d270521ef9efa00c0047d8a /ws2a/newbug.c
parent785ac61778829e572556f4c9f40026e6b624e81e (diff)
downloadwebpage-15fcc190319a3deaaeaa544833ea07475e790585.tar.gz
webpage-15fcc190319a3deaaeaa544833ea07475e790585.tar.bz2
webpage-15fcc190319a3deaaeaa544833ea07475e790585.zip
re-synching
Diffstat (limited to 'ws2a/newbug.c')
-rw-r--r--ws2a/newbug.c183
1 files changed, 0 insertions, 183 deletions
diff --git a/ws2a/newbug.c b/ws2a/newbug.c
deleted file mode 100644
index cda4e38..0000000
--- a/ws2a/newbug.c
+++ /dev/null
@@ -1,183 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-char* replaceHTML(char* str){
- //printf("Replaceing:%s\n",str);
- char* nstr = malloc((sizeof(char)*strlen(str)) + 1);
- if(nstr == NULL){
- printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
- printf("Failed to allocate memory!\n");
- }
-
- int strp = 0;
- int nstrp = 0;
- while(str[strp] != '\0'){
- //printf("Strp=%d nstrp=%d\n",strp,nstrp);
- if(str[strp] == '+'){
- nstr[nstrp] = ' ';
- strp++;
- nstrp++;
- }else if(str[strp] == '%'){
- //printf("Hit encodeing!\n");
- int hex = 0;
- sscanf(str+strp,"%%%2x",&hex);
- //printf("Was:%c(%d)\n",(char)hex,hex);
- if(hex == 0x0D){
- strp+=3;
- continue;
- }
- if(hex == 0x0A){
- nstr[nstrp] = '\\';
- nstr[nstrp+1] = 'n';
- nstrp+=2;
- strp+=3;
- continue;
- }
- nstr[nstrp] = (char)hex;
- nstrp++;
- strp+=3;
- }else if(str[strp] == '\n'){
- nstr[nstrp] = '\\';
- nstr[nstrp+1] = 'n';
- nstrp+=2;
- strp++;
- }else{
- nstr[nstrp] = str[strp];
- nstrp++;
- strp++;
- }
- }
- nstr[nstrp] = '\0';
- //printf("Done, str is now:%s\n",nstr);
- return nstr;
-}
-
-unsigned long hash(unsigned char *str){
- unsigned long hash = 5381;
- int c;
-
- while (c = *str++)
- hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
-
- return hash;
-}
-
-char* useridhash(char* str){
- char* hash = calloc(sizeof(char)*20,sizeof(char));
- int i = (int)str[0];
- int len = strlen(str);
- int tloop = i*20;
- unsigned int hashp = 0;
- unsigned int strp = 0;
- i = 0;
- while(i < tloop){
- //printf("i:%d hashp:%u strp:%u tloop:%d\n",i,hashp,strp,tloop);
- char tchar = str[strp%len];
- hash[hashp%20] += str[strp%len];
- str[strp%len]+=1;
- hashp+=(int)tchar;
- strp+=(int)(hashp*hashp);
- i++;
- }
- i = 0;
- //printf("Before characterizeing the hash, it was: %s\n",hash);
- while(i < 20){
- //printf("Normalizeing %c(%u) as %c(%u)\n",hash[i],(unsigned int)hash[i],(hash[i] % 92) + 32,(hash[i] % 92) + 32);
- unsigned int hashnum = hash[i];
- unsigned int modedhashnum = hashnum % 92;
- //printf("hashnum was %u, after mod it is:%u\n",hashnum,modedhashnum);
- hash[i] = modedhashnum + 32;
- i++;
- }
- //printf("Resulting hash was:%s\n",hash);
- return hash;
-}
-
-int main(){
- char* data = getenv("QUERY_STRING");
- //char data[20] = "?id=1";
- char* hardip = getenv("REMOTE_ADDR");
- //char data[] = "name=Apickx&id=test&shortdesc=This&longdesc=This+is+the+first+ever+test+bug+to+be+created!&captcha=proud+pain";
-
- char name[20];
- char userid[20];
- char shortdesc[128];
- char longdesc[4096];
- char captcha[30];
-
- char* iname = strtok(data,"&");
- char* iuserid = strtok(NULL,"&");
- char* ishortdesc = strtok(NULL,"&");
- char* ilongdesc = strtok(NULL,"&");
- char* icaptcha = strtok(NULL,"&");
-
- sscanf(iname,"name=%s",name);
- sscanf(iuserid,"id=%s",userid);
- sscanf(ishortdesc,"shortdesc=%s",shortdesc);
- sscanf(ilongdesc,"longdesc=%s",longdesc);
- sscanf(icaptcha,"captcha=%s",captcha);
-
- //printf("name:%s\nid:%s\nshort:%s\nlong:%s\ncaptcha:%s\n",name,userid,shortdesc,longdesc,captcha);
-
- //Check captcha
- char captchapath[100];
- char* captchadecoded = replaceHTML(captcha);
- sprintf(captchapath,"../ws2a/captchas/%s.txt",captchadecoded);
-
- FILE* captchafile = fopen(captchapath,"r");
- if(captchafile == NULL){
- printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
- printf("Captcha incorrect:No file found");
- return;
- }
- unsigned long inputhash = hash(captchadecoded);
- free(captchadecoded);
- unsigned long filehash = 0;
- fscanf(captchafile,"%lu",&filehash);
- if(filehash != inputhash){
- printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
- printf("Captcha incorrect:Bad hash");
- return;
- }
-
- //If we had the correct captcha, remove it.
- char command[100];
- sprintf(command,"rm \"%s\"",captchapath);
- system(command);
-
- //Create new bug
- FILE* lastbugfile = fopen("../ws2a/bugs/lastbug","r+");
- if(lastbugfile == NULL){
- printf("Unable to open LastBugFile!");
- }
- unsigned long long lastbug = 0;
- fscanf(lastbugfile,"%llu",&lastbug);
- fseek(lastbugfile,0,SEEK_SET);
- lastbug++;
- fprintf(lastbugfile,"%llu",lastbug);
- fclose(lastbugfile);
-
- char* dname = replaceHTML(name);
- char* duid = useridhash(userid);
- time_t rawtime;
- struct tm * timeinfo;
- time(&rawtime);
- timeinfo = localtime(&rawtime);
- char* dshortd = replaceHTML(shortdesc);
- char* dlongd = replaceHTML(longdesc);
- printf("Location: ../ws2a/bugview.html?id=%s\n\n",lastbug);
- //printf("Right before printing to file\n");
- char newfilepath[100];
- sprintf(newfilepath,"../ws2a/bugs/%llu",lastbug);
- FILE* newfile = fopen(newfilepath,"w");
- fprintf(newfile,"%s\n%s\n%s%s\n0:\n%s\n",dname,duid,asctime(timeinfo),dshortd,dlongd);
- fclose(newfile);
- free(dname);
- free(duid);
- free(dshortd);
- free(dlongd);
-
- return 0;
-}