Documentation ¶
Overview ¶
Package models implements the types and structs needed in gophish.
Index ¶
- Constants
- Variables
- func DeleteCampaign(id int64) error
- func DeleteGroup(g *Group) error
- func DeletePage(id int64, uid int64) error
- func DeleteTemplate(id int64, uid int64) error
- func PostCampaign(c *Campaign, uid int64) error
- func PostGroup(g *Group) error
- func PostPage(p *Page) error
- func PostTemplate(t *Template) error
- func PutGroup(g *Group) error
- func PutPage(p *Page) error
- func PutTemplate(t *Template) error
- func PutUser(u *User) error
- func Setup() error
- type Attachment
- type Campaign
- type Event
- type Flash
- type Group
- type GroupTarget
- type Page
- type Response
- type Result
- type SMTP
- type SendTestEmailRequest
- type Target
- type Template
- type User
Constants ¶
const ( CAMPAIGN_IN_PROGRESS string = "In progress" CAMPAIGN_QUEUED string = "Queued" CAMPAIGN_EMAILS_SENT string = "Emails Sent" CAMPAIGN_COMPLETE string = "Completed" EVENT_SENT string = "Email Sent" EVENT_SENDING_ERROR string = "Error Sending Email" EVENT_OPENED string = "Email Opened" EVENT_CLICKED string = "Clicked Link" STATUS_SUCCESS string = "Success" STATUS_UNKNOWN string = "Unknown" ERROR string = "Error" )
Variables ¶
var ErrCampaignNameNotSpecified = errors.New("Campaign name not specified")
ErrCampaignNameNotSpecified indicates there was no template given by the user
var ErrEmailNotSpecified = errors.New("No email address specified")
ErrNoEmailSpecified is thrown when no email is specified for the Target
var ErrGroupNameNotSpecified = errors.New("Group name not specified")
ErrGroupNameNotSpecified is thrown when a group name is not specified
var ErrGroupNotFound = errors.New("Group not found")
ErrGroupnNotFound indicates a group specified by the user does not exist in the database
var ErrGroupNotSpecified = errors.New("No groups specified")
ErrGroupNotSpecified indicates there was no template given by the user
var ErrNoTargetsSpecified = errors.New("No targets specified")
ErrNoTargetsSpecified is thrown when no targets are specified by the user
var ErrPageNameNotSpecified = errors.New("Page Name not specified")
ErrPageNameNotSpecified is thrown if the name of the landing page is blank.
var ErrPageNotFound = errors.New("Page not found")
ErrPageNotFound indicates a page specified by the user does not exist in the database
var ErrPageNotSpecified = errors.New("No landing page specified")
ErrPageNotSpecified indicates a landing page was not provided for the campaign
var ErrTemplateMissingParameter = errors.New("Need to specify at least plaintext or HTML content")
ErrTemplateMissingParameter is thrown when a needed parameter is not provided
var ErrTemplateNameNotSpecified = errors.New("Template name not specified")
ErrTemplateNameNotSpecified is thrown when a template name is not specified
var ErrTemplateNotFound = errors.New("Template not found")
ErrTemplateNotFound indicates the template specified does not exist in the database
var ErrTemplateNotSpecified = errors.New("No email template specified")
ErrTemplateNotSpecified indicates there was no template given by the user
var ErrUsernameTaken = errors.New("username already taken")
ErrUsernameTaken is thrown when a user attempts to register a username that is taken.
Logger is a global logger used to show informational, warning, and error messages
Functions ¶
func DeleteCampaign ¶
DeleteCampaign deletes the specified campaign
func DeleteGroup ¶
DeleteGroup deletes a given group by group ID and user ID
func DeletePage ¶
DeletePage deletes an existing page in the database. An error is returned if a page with the given user id and page id is not found.
func DeleteTemplate ¶
DeleteTemplate deletes an existing template in the database. An error is returned if a template with the given user id and template id is not found.
func PostCampaign ¶
PostCampaign inserts a campaign and all associated records into the database.
func PostTemplate ¶
PostTemplate creates a new template in the database.
func PutPage ¶
PutPage edits an existing Page in the database. Per the PUT Method RFC, it presumes all data for a page is provided.
func PutTemplate ¶
PutTemplate edits an existing template in the database. Per the PUT Method RFC, it presumes all data for a template is provided.
Types ¶
type Attachment ¶
type Attachment struct { Id int64 `json:"-"` TemplateId int64 `json:"-"` Content string `json:"content"` Type string `json:"type"` Name string `json:"name"` }
Attachment contains the fields and methods for an email attachment
type Campaign ¶
type Campaign struct { Id int64 `json:"id"` UserId int64 `json:"-"` Name string `json:"name" sql:"not null"` CreatedDate time.Time `json:"created_date"` CompletedDate time.Time `json:"completed_date"` TemplateId int64 `json:"-"` Template Template `json:"template"` PageId int64 `json:"-"` Page Page `json:"page"` Status string `json:"status"` Results []Result `json:"results,omitempty"` Groups []Group `json:"groups,omitempty"` Events []Event `json:"timeline,omitemtpy"` SMTP SMTP `json:"smtp"` URL string `json:"url"` }
Campaign is a struct representing a created campaign
func GetCampaign ¶
GetCampaign returns the campaign, if it exists, specified by the given id and user_id.
func GetCampaigns ¶
GetCampaigns returns the campaigns owned by the given user.
func (*Campaign) UpdateStatus ¶
UpdateStatus changes the campaign status appropriately
type Event ¶
type Event struct { Id int64 `json:"-"` CampaignId int64 `json:"-"` Email string `json:"email"` Time time.Time `json:"time"` Message string `json:"message"` }
Event contains the fields for an event that occurs during the campaign
type Group ¶
type Group struct { Id int64 `json:"id"` UserId int64 `json:"-"` Name string `json:"name"` ModifiedDate time.Time `json:"modified_date"` Targets []Target `json:"targets" sql:"-"` }
Group contains the fields needed for a user -> group mapping Groups contain 1..* Targets
func GetGroupByName ¶
GetGroupByName returns the group, if it exists, specified by the given name and user_id.
type GroupTarget ¶
GroupTarget is used for a many-to-many relationship between 1..* Groups and 1..* Targets
type Page ¶
type Page struct { Id int64 `json:"id" gorm:"column:id; primary_key:yes"` UserId int64 `json:"-" gorm:"column:user_id"` Name string `json:"name"` HTML string `json:"html" gorm:"column:html"` ModifiedDate time.Time `json:"modified_date"` }
Page contains the fields used for a Page model
func GetPageByName ¶
GetPageByName returns the page, if it exists, specified by the given name and user_id.
type Response ¶
type Response struct { Message string `json:"message"` Success bool `json:"success"` Data interface{} `json:"data"` }
Response contains the attributes found in an API response
type Result ¶
type Result struct { Id int64 `json:"-"` CampaignId int64 `json:"-"` UserId int64 `json:"-"` RId string `json:"id"` Email string `json:"email"` FirstName string `json:"first_name"` LastName string `json:"last_name"` Status string `json:"status" sql:"not null"` IP string `json:"ip"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` }
Result contains the fields for a result object, which is a representation of a target in a campaign.
func (*Result) GenerateId ¶
func (r *Result) GenerateId()
GenerateId generates a unique key to represent the result in the database
func (*Result) UpdateGeo ¶
UpdateGeo updates the latitude and longitude of the result in the database given an IP address
func (*Result) UpdateStatus ¶
UpdateStatus updates the status of the result in the database
type SMTP ¶
type SMTP struct { SMTPId int64 `json:"-" gorm:"column:smtp_id; primary_key:yes"` CampaignId int64 `json:"-" gorm:"column:campaign_id"` Host string `json:"host"` Username string `json:"username,omitempty"` Password string `json:"password,omitempty" sql:"-"` FromAddress string `json:"from_address"` }
SMTP contains the attributes needed to handle the sending of campaign emails
type SendTestEmailRequest ¶
type SendTestEmailRequest struct { Template Template `json:"template"` Page Page `json:"page"` SMTP SMTP `json:"smtp"` URL string `json:"url"` Tracker string `json:"tracker"` TrackingURL string `json:"tracking_url"` Target }
SendTestEmailRequest is the structure of a request to send a test email to test an SMTP connection
func (*SendTestEmailRequest) Validate ¶
func (s *SendTestEmailRequest) Validate() error
Validate ensures the SendTestEmailRequest structure is valid.
type Target ¶
type Target struct { Id int64 `json:"-"` FirstName string `json:"first_name"` LastName string `json:"last_name"` Email string `json:"email"` Position string `json:"position"` }
Target contains the fields needed for individual targets specified by the user Groups contain 1..* Targets, but 1 Target may belong to 1..* Groups
func GetTargets ¶
GetTargets performs a many-to-many select to get all the Targets for a Group
type Template ¶
type Template struct { Id int64 `json:"id" gorm:"column:id; primary_key:yes"` UserId int64 `json:"-" gorm:"column:user_id"` Name string `json:"name"` Subject string `json:"subject"` Text string `json:"text"` HTML string `json:"html" gorm:"column:html"` ModifiedDate time.Time `json:"modified_date"` Attachments []Attachment `json:"attachments"` }
Template models hold the attributes for an email template to be sent to targets
func GetTemplate ¶
GetTemplate returns the template, if it exists, specified by the given id and user_id.
func GetTemplateByName ¶
GetTemplateByName returns the template, if it exists, specified by the given name and user_id.
func GetTemplates ¶
GetTemplates returns the templates owned by the given user.
type User ¶
type User struct { Id int64 `json:"id"` Username string `json:"username" sql:"not null;unique"` Hash string `json:"-"` ApiKey string `json:"api_key" sql:"not null;unique"` }
User represents the user model for gophish.
func GetUser ¶
GetUser returns the user that the given id corresponds to. If no user is found, an error is thrown.
func GetUserByAPIKey ¶
GetUserByAPIKey returns the user that the given API Key corresponds to. If no user is found, an error is thrown.
func GetUserByUsername ¶
GetUserByUsername returns the user that the given username corresponds to. If no user is found, an error is thrown.