mirror of
https://github.com/gophish/gophish
synced 2024-11-15 00:37:14 +00:00
Adding DB table for template attachments (coming soon)
Cleanup API docs for campaigns Added "omitempty" for Campaign model
This commit is contained in:
parent
20fe32fd4e
commit
b3e411c54c
4 changed files with 20 additions and 63 deletions
10
db/db.go
10
db/db.go
|
@ -40,11 +40,13 @@ func Setup() error {
|
||||||
`CREATE TABLE targets (id INTEGER PRIMARY KEY AUTOINCREMENT, email TEXT NOT NULL, UNIQUE(email));`,
|
`CREATE TABLE targets (id INTEGER PRIMARY KEY AUTOINCREMENT, email TEXT NOT NULL, UNIQUE(email));`,
|
||||||
`CREATE TABLE groups (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, modified_date TIMESTAMP NOT NULL);`,
|
`CREATE TABLE groups (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, modified_date TIMESTAMP NOT NULL);`,
|
||||||
`CREATE TABLE campaign_results (cid INTEGER NOT NULL, email TEXT NOT NULL, status TEXT NOT NULL, FOREIGN KEY (cid) REFERENCES campaigns(id), UNIQUE(cid, email, status))`,
|
`CREATE TABLE campaign_results (cid INTEGER NOT NULL, email TEXT NOT NULL, status TEXT NOT NULL, FOREIGN KEY (cid) REFERENCES campaigns(id), UNIQUE(cid, email, status))`,
|
||||||
|
`CREATE TABLE templates (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, modified_date TIMESTAMP NOT NULL, html TEXT NOT NULL, text TEXT NOT NULL);`,
|
||||||
|
`CREATE TABLE files (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, path TEXT NOT NULL);`,
|
||||||
`CREATE TABLE user_campaigns (uid INTEGER NOT NULL, cid INTEGER NOT NULL, FOREIGN KEY (uid) REFERENCES users(id), FOREIGN KEY (cid) REFERENCES campaigns(id), UNIQUE(uid, cid))`,
|
`CREATE TABLE user_campaigns (uid INTEGER NOT NULL, cid INTEGER NOT NULL, FOREIGN KEY (uid) REFERENCES users(id), FOREIGN KEY (cid) REFERENCES campaigns(id), UNIQUE(uid, cid))`,
|
||||||
`CREATE TABLE user_groups (uid INTEGER NOT NULL, gid INTEGER NOT NULL, FOREIGN KEY (uid) REFERENCES users(id), FOREIGN KEY (gid) REFERENCES groups(id), UNIQUE(uid, gid))`,
|
`CREATE TABLE user_groups (uid INTEGER NOT NULL, gid INTEGER NOT NULL, FOREIGN KEY (uid) REFERENCES users(id), FOREIGN KEY (gid) REFERENCES groups(id), UNIQUE(uid, gid))`,
|
||||||
`CREATE TABLE group_targets (gid INTEGER NOT NULL, tid INTEGER NOT NULL, FOREIGN KEY (gid) REFERENCES groups(id), FOREIGN KEY (tid) REFERENCES targets(id), UNIQUE(gid, tid));`,
|
`CREATE TABLE group_targets (gid INTEGER NOT NULL, tid INTEGER NOT NULL, FOREIGN KEY (gid) REFERENCES groups(id), FOREIGN KEY (tid) REFERENCES targets(id), UNIQUE(gid, tid));`,
|
||||||
`CREATE TABLE templates (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, modified_date TIMESTAMP NOT NULL, html TEXT NOT NULL, text TEXT NOT NULL);`,
|
|
||||||
`CREATE TABLE user_templates (uid INTEGER NOT NULL, tid INTEGER NOT NULL, FOREIGN KEY (uid) REFERENCES users(id), FOREIGN KEY (tid) REFERENCES templates(id), UNIQUE(uid, tid));`,
|
`CREATE TABLE user_templates (uid INTEGER NOT NULL, tid INTEGER NOT NULL, FOREIGN KEY (uid) REFERENCES users(id), FOREIGN KEY (tid) REFERENCES templates(id), UNIQUE(uid, tid));`,
|
||||||
|
`CREATE TABLE template_files (tid INTEGER NOT NULL, fid INTEGER NOT NULL, FOREIGN KEY (tid) REFERENCES templates(id), FOREIGN KEY(fid) REFERENCES files(id), UNIQUE(tid, fid));`,
|
||||||
}
|
}
|
||||||
Logger.Printf("Creating db at %s\n", config.Conf.DBPath)
|
Logger.Printf("Creating db at %s\n", config.Conf.DBPath)
|
||||||
//Create the tables needed
|
//Create the tables needed
|
||||||
|
@ -220,7 +222,7 @@ func GetGroup(id int64, uid int64) (models.Group, error) {
|
||||||
return g, nil
|
return g, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetGroup returns the group, if it exists, specified by the given name and user_id.
|
// GetGroupByName returns the group, if it exists, specified by the given name and user_id.
|
||||||
func GetGroupByName(n string, uid int64) (models.Group, error) {
|
func GetGroupByName(n string, uid int64) (models.Group, error) {
|
||||||
g := models.Group{}
|
g := models.Group{}
|
||||||
err := Conn.SelectOne(&g, "SELECT g.id, g.name, g.modified_date FROM groups g, user_groups ug, users u WHERE ug.uid=u.id AND ug.gid=g.id AND g.name=? AND u.id=?", n, uid)
|
err := Conn.SelectOne(&g, "SELECT g.id, g.name, g.modified_date FROM groups g, user_groups ug, users u WHERE ug.uid=u.id AND ug.gid=g.id AND g.name=? AND u.id=?", n, uid)
|
||||||
|
@ -338,6 +340,10 @@ func PostTemplate(t *models.Template, uid int64) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PutTemplate(t *models.Template, uid int64) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func insertTargetIntoGroup(t models.Target, gid int64) error {
|
func insertTargetIntoGroup(t models.Target, gid int64) error {
|
||||||
if _, err = mail.ParseAddress(t.Email); err != nil {
|
if _, err = mail.ParseAddress(t.Email); err != nil {
|
||||||
Logger.Printf("Invalid email %s\n", t.Email)
|
Logger.Printf("Invalid email %s\n", t.Email)
|
||||||
|
|
|
@ -40,8 +40,8 @@ type Campaign struct {
|
||||||
CompletedDate time.Time `json:"completed_date" db:"completed_date"`
|
CompletedDate time.Time `json:"completed_date" db:"completed_date"`
|
||||||
Template string `json:"template"` //This may change
|
Template string `json:"template"` //This may change
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
Results []Result `json:"results" db:"-"`
|
Results []Result `json:"results,omitempty" db:"-"`
|
||||||
Groups []Group `json:"groups" db:"-"`
|
Groups []Group `json:"groups,omitempty" db:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Result struct {
|
type Result struct {
|
||||||
|
|
|
@ -145,8 +145,8 @@
|
||||||
"Result": {
|
"Result": {
|
||||||
"id": "Result",
|
"id": "Result",
|
||||||
"properties": {
|
"properties": {
|
||||||
"target": {
|
"email": {
|
||||||
"$ref": "Target"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -192,66 +192,15 @@
|
||||||
"targets": {
|
"targets": {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"items" : {
|
"items" : {
|
||||||
"$ref" : "Target"
|
"email" : {
|
||||||
|
"type" : "string"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modified_date": {
|
"modified_date": {
|
||||||
"type" : "date"
|
"type" : "date"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"Pet": {
|
|
||||||
"id": "Pet",
|
|
||||||
"description": "A pet is a person's best friend",
|
|
||||||
"required": [
|
|
||||||
"name",
|
|
||||||
"id"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"tags": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "Tag"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"photoUrls": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int64"
|
|
||||||
},
|
|
||||||
"status": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "pet status in the store",
|
|
||||||
"enum": [
|
|
||||||
"available",
|
|
||||||
"pending",
|
|
||||||
"sold"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"category": {
|
|
||||||
"$ref": "Category"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Category": {
|
|
||||||
"id": "Category",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int64"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -69,9 +69,11 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" class="form-control" ng-model="group.name" placeholder="Group name" id="name" />
|
<input type="text" class="form-control" ng-model="group.name" placeholder="Group name" id="name" />
|
||||||
</div>
|
</div>
|
||||||
|
<fieldset disabled>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<button class="btn btn-danger"><i class="fa fa-plus"></i> Bulk Import Users</button>
|
<button class="btn btn-danger"><i class="fa fa-plus"></i> Bulk Import Users (Coming Soon!)</button>
|
||||||
</div>
|
</div>
|
||||||
|
</fieldset>
|
||||||
<label class="control-label" for="users">Users:</label>
|
<label class="control-label" for="users">Users:</label>
|
||||||
<form ng:submit="addTarget()">
|
<form ng:submit="addTarget()">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
|
|
Loading…
Reference in a new issue