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 });