github.com/glennzw/gophish@v0.8.1-0.20190824020715-24fe998a3aa0/static/js/src/app/gophish.js (about)

     1  function errorFlash(message) {
     2      $("#flashes").empty()
     3      $("#flashes").append("<div style=\"text-align:center\" class=\"alert alert-danger\">\
     4          <i class=\"fa fa-exclamation-circle\"></i> " + message + "</div>")
     5  }
     6  
     7  function successFlash(message) {
     8      $("#flashes").empty()
     9      $("#flashes").append("<div style=\"text-align:center\" class=\"alert alert-success\">\
    10          <i class=\"fa fa-check-circle\"></i> " + message + "</div>")
    11  }
    12  
    13  function modalError(message) {
    14      $("#modal\\.flashes").empty().append("<div style=\"text-align:center\" class=\"alert alert-danger\">\
    15          <i class=\"fa fa-exclamation-circle\"></i> " + message + "</div>")
    16  }
    17  
    18  function query(endpoint, method, data, async) {
    19      return $.ajax({
    20          url: "/api" + endpoint,
    21          async: async,
    22          method: method,
    23          data: JSON.stringify(data),
    24          dataType: "json",
    25          contentType: "application/json",
    26          beforeSend: function (xhr) {
    27              xhr.setRequestHeader('Authorization', 'Bearer ' + user.api_key);
    28          }
    29      })
    30  }
    31  
    32  function escapeHtml(text) {
    33      return $("<div/>").text(text).html()
    34  }
    35  window.escapeHtml = escapeHtml
    36  
    37  function unescapeHtml(html) {
    38      return $("<div/>").html(html).text()
    39  }
    40  
    41  /**
    42   * 
    43   * @param {string} string - The input string to capitalize
    44   * 
    45   */
    46  var capitalize = function (string) {
    47      return string.charAt(0).toUpperCase() + string.slice(1);
    48  }
    49  
    50  /*
    51  Define our API Endpoints
    52  */
    53  var api = {
    54      // campaigns contains the endpoints for /campaigns
    55      campaigns: {
    56          // get() - Queries the API for GET /campaigns
    57          get: function () {
    58              return query("/campaigns/", "GET", {}, false)
    59          },
    60          // post() - Posts a campaign to POST /campaigns
    61          post: function (data) {
    62              return query("/campaigns/", "POST", data, false)
    63          },
    64          // summary() - Queries the API for GET /campaigns/summary
    65          summary: function () {
    66              return query("/campaigns/summary", "GET", {}, false)
    67          }
    68      },
    69      // campaignId contains the endpoints for /campaigns/:id
    70      campaignId: {
    71          // get() - Queries the API for GET /campaigns/:id
    72          get: function (id) {
    73              return query("/campaigns/" + id, "GET", {}, true)
    74          },
    75          // delete() - Deletes a campaign at DELETE /campaigns/:id
    76          delete: function (id) {
    77              return query("/campaigns/" + id, "DELETE", {}, false)
    78          },
    79          // results() - Queries the API for GET /campaigns/:id/results
    80          results: function (id) {
    81              return query("/campaigns/" + id + "/results", "GET", {}, true)
    82          },
    83          // complete() - Completes a campaign at POST /campaigns/:id/complete
    84          complete: function (id) {
    85              return query("/campaigns/" + id + "/complete", "GET", {}, true)
    86          },
    87          // summary() - Queries the API for GET /campaigns/summary
    88          summary: function (id) {
    89              return query("/campaigns/" + id + "/summary", "GET", {}, true)
    90          }
    91      },
    92      // groups contains the endpoints for /groups
    93      groups: {
    94          // get() - Queries the API for GET /groups
    95          get: function () {
    96              return query("/groups/", "GET", {}, false)
    97          },
    98          // post() - Posts a group to POST /groups
    99          post: function (group) {
   100              return query("/groups/", "POST", group, false)
   101          },
   102          // summary() - Queries the API for GET /groups/summary
   103          summary: function () {
   104              return query("/groups/summary", "GET", {}, true)
   105          }
   106      },
   107      // groupId contains the endpoints for /groups/:id
   108      groupId: {
   109          // get() - Queries the API for GET /groups/:id
   110          get: function (id) {
   111              return query("/groups/" + id, "GET", {}, false)
   112          },
   113          // put() - Puts a group to PUT /groups/:id
   114          put: function (group) {
   115              return query("/groups/" + group.id, "PUT", group, false)
   116          },
   117          // delete() - Deletes a group at DELETE /groups/:id
   118          delete: function (id) {
   119              return query("/groups/" + id, "DELETE", {}, false)
   120          }
   121      },
   122      // templates contains the endpoints for /templates
   123      templates: {
   124          // get() - Queries the API for GET /templates
   125          get: function () {
   126              return query("/templates/", "GET", {}, false)
   127          },
   128          // post() - Posts a template to POST /templates
   129          post: function (template) {
   130              return query("/templates/", "POST", template, false)
   131          }
   132      },
   133      // templateId contains the endpoints for /templates/:id
   134      templateId: {
   135          // get() - Queries the API for GET /templates/:id
   136          get: function (id) {
   137              return query("/templates/" + id, "GET", {}, false)
   138          },
   139          // put() - Puts a template to PUT /templates/:id
   140          put: function (template) {
   141              return query("/templates/" + template.id, "PUT", template, false)
   142          },
   143          // delete() - Deletes a template at DELETE /templates/:id
   144          delete: function (id) {
   145              return query("/templates/" + id, "DELETE", {}, false)
   146          }
   147      },
   148      // pages contains the endpoints for /pages
   149      pages: {
   150          // get() - Queries the API for GET /pages
   151          get: function () {
   152              return query("/pages/", "GET", {}, false)
   153          },
   154          // post() - Posts a page to POST /pages
   155          post: function (page) {
   156              return query("/pages/", "POST", page, false)
   157          }
   158      },
   159      // pageId contains the endpoints for /pages/:id
   160      pageId: {
   161          // get() - Queries the API for GET /pages/:id
   162          get: function (id) {
   163              return query("/pages/" + id, "GET", {}, false)
   164          },
   165          // put() - Puts a page to PUT /pages/:id
   166          put: function (page) {
   167              return query("/pages/" + page.id, "PUT", page, false)
   168          },
   169          // delete() - Deletes a page at DELETE /pages/:id
   170          delete: function (id) {
   171              return query("/pages/" + id, "DELETE", {}, false)
   172          }
   173      },
   174      // SMTP contains the endpoints for /smtp
   175      SMTP: {
   176          // get() - Queries the API for GET /smtp
   177          get: function () {
   178              return query("/smtp/", "GET", {}, false)
   179          },
   180          // post() - Posts a SMTP to POST /smtp
   181          post: function (smtp) {
   182              return query("/smtp/", "POST", smtp, false)
   183          }
   184      },
   185      // SMTPId contains the endpoints for /smtp/:id
   186      SMTPId: {
   187          // get() - Queries the API for GET /smtp/:id
   188          get: function (id) {
   189              return query("/smtp/" + id, "GET", {}, false)
   190          },
   191          // put() - Puts a SMTP to PUT /smtp/:id
   192          put: function (smtp) {
   193              return query("/smtp/" + smtp.id, "PUT", smtp, false)
   194          },
   195          // delete() - Deletes a SMTP at DELETE /smtp/:id
   196          delete: function (id) {
   197              return query("/smtp/" + id, "DELETE", {}, false)
   198          }
   199      },
   200      // users contains the endpoints for /users
   201      users: {
   202          // get() - Queries the API for GET /users
   203          get: function () {
   204              return query("/users/", "GET", {}, true)
   205          },
   206          // post() - Posts a user to POST /users
   207          post: function (user) {
   208              return query("/users/", "POST", user, true)
   209          }
   210      },
   211      // userId contains the endpoints for /users/:id
   212      userId: {
   213          // get() - Queries the API for GET /users/:id
   214          get: function (id) {
   215              return query("/users/" + id, "GET", {}, true)
   216          },
   217          // put() - Puts a user to PUT /users/:id
   218          put: function (user) {
   219              return query("/users/" + user.id, "PUT", user, true)
   220          },
   221          // delete() - Deletes a user at DELETE /users/:id
   222          delete: function (id) {
   223              return query("/users/" + id, "DELETE", {}, true)
   224          }
   225      },
   226      // import handles all of the "import" functions in the api
   227      import_email: function (req) {
   228          return query("/import/email", "POST", req, false)
   229      },
   230      // clone_site handles importing a site by url
   231      clone_site: function (req) {
   232          return query("/import/site", "POST", req, false)
   233      },
   234      // send_test_email sends an email to the specified email address
   235      send_test_email: function (req) {
   236          return query("/util/send_test_email", "POST", req, true)
   237      },
   238      reset: function () {
   239          return query("/reset", "POST", {}, true)
   240      }
   241  }
   242  window.api = api
   243  
   244  // Register our moment.js datatables listeners
   245  $(document).ready(function () {
   246      // Setup nav highlighting
   247      var path = location.pathname;
   248      $('.nav-sidebar li').each(function () {
   249          var $this = $(this);
   250          // if the current path is like this link, make it active
   251          if ($this.find("a").attr('href') === path) {
   252              $this.addClass('active');
   253          }
   254      })
   255      $.fn.dataTable.moment('MMMM Do YYYY, h:mm:ss a');
   256      // Setup tooltips
   257      $('[data-toggle="tooltip"]').tooltip()
   258  });