Skip to content
6 changes: 6 additions & 0 deletions src/config/VafConfigStructure.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import VafWordlist

type
VafConfigStructure* = object
DefaultWordlist*: int
Wordlists*: seq[VafWordlist]
5 changes: 5 additions & 0 deletions src/config/VafWordlist.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

type
VafWordlist* = object
Id*: int
Path*: string
24 changes: 24 additions & 0 deletions src/config/importVafConfig.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import json
import os
import strutils

import initVafConfig
import parseVafConfig

import VafConfigStructure

var homeDir: string = os.getHomeDir()

proc importVafConfig*(): VafConfigStructure =
var configExists: bool = fileExists(homedir & "/.vaf.json")
var configContents = readFile(homedir & "/.vaf.json")
var jsonData: JsonNode


if configExists:
jsonData = parseJson(configContents)
# else:
# jsonData = initVafConfig()

return parseVafConfig(jsonData)

17 changes: 17 additions & 0 deletions src/config/initVafConfig.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import os
import strutils

var homeDir: string = os.getHomeDir()
var defaultJson: string = """{}"""

proc initVafConfig*(): int =
var configExists: bool = fileExists(homedir & "/.vaf.json")
var configFile = open(homedir & "/.vaf.json", fmWrite)

defer: configFile.close()

if configExists:
return 1
else:
for i in defaultJson.split("\n"):
configFile.writeLine(i)
36 changes: 36 additions & 0 deletions src/config/parseVafConfig.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import json
import os
import strutils

import VafWordlist
import VafConfigStructure

proc parseWordlist(data: JsonNode): VafWordlist =
var wordlistObject: VafWordlist = VafWordlist()

if data{"Id"} != nil:
wordlistObject.Id = data{"Id"}.getInt()

if data{"Path"} != nil:
wordlistObject.Path = data{"Path"}.getStr()

return wordlistObject

proc parseVafConfig*(data: JsonNode): VafConfigStructure =
var configObject: VafConfigStructure = VafConfigStructure()

echo data

if data{"DefaultWordlist"} == nil:
configObject.DefaultWordlist = -1
else:
configObject.DefaultWordlist = data{"DefaultWordlist"}.getInt()

if data{"Wordlists"} != nil:
for wordlist in data{"Wordlists"}:
configObject.Wordlists.add( parseWordlist( wordlist ))


echo configObject

return configObject
18 changes: 18 additions & 0 deletions src/config/readVafConfig.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import json
import os
import strutils
import initVafConfig

var homeDir: string = os.getHomeDir()

proc readVafConfig*(): int =
var configExists: bool = fileExists(homedir & "/.vaf.json")
var configContents = readFile(homedir & "/.vaf.json")
var jsonNode = parseJson(configContents)

discard initVafConfig()

if configExists:
return 0
else:
echo jsonNode
1 change: 0 additions & 1 deletion src/utils/VafHttpClient.nim
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import httpclient
import VafResponse
import json

var client = newHttpClient()

Expand Down
4 changes: 4 additions & 0 deletions src/vaf.nim
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import os
import argparse
import utils/VafFuzzResult
import utils/VafColors
import config/initVafConfig

let p = newParser("vaf - very advanced fuzzer"):
option("-u", "--url", help="choose url, replace area to fuzz with []")
Expand All @@ -23,6 +24,9 @@ let p = newParser("vaf - very advanced fuzzer"):
flag("-pu", "--printurl", help="prints the url that has been requested")

try:

# discard initVafConfig()

var parsedArgs = p.parse(commandLineParams())

var url: string = parsedArgs.url
Expand Down
Binary file added vaf.exe
Binary file not shown.