2017-11-16 05:42:22 +00:00
<!-- Portal Auth by sud0nick (C) 2016 -->
< style >
.PA_topbuffer {
margin-top: 13px;
}
< / style >
< script >
$(document).on('mouseenter', '.pa_hoverSuccess', function() {
$(this).addClass("btn-success");
}).on('mouseleave', '.pa_hoverSuccess', function(){
$(this).removeClass("btn-success");
});
$(document).on('mouseenter', '.pa_hoverPrimary', function() {
$(this).addClass("btn-primary");
}).on('mouseleave', '.pa_hoverPrimary', function(){
$(this).removeClass("btn-primary");
});
$(document).on('mouseenter', '.pa_hoverInfo', function() {
$(this).addClass("btn-info");
}).on('mouseleave', '.pa_hoverInfo', function(){
$(this).removeClass("btn-info");
});
$(document).on('mouseenter', '.pa_hoverDanger', function() {
$(this).addClass("btn-danger");
}).on('mouseleave', '.pa_hoverDanger', function(){
$(this).removeClass("btn-danger");
});
< / script >
< div class = "row" id = "portalAuthModule" ng-controller = "PortalAuthController" >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading" >
< h3 class = "panel-title" > Portal Auth Status< / h3 >
< / div >
< div class = "panel-body" >
< div class = "container-fluid" >
< div class = "pull-right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('status.help','help');" > ?< / button >
< / div >
< div >
< span ng-show = "tServerConfig && dependsInstalled" ng-hide = "!tServerConfig && !online || !dependsInstalled" >
< strong > {{ portalStatus }} < / strong > < br / >
< strong > PASS Status:< / strong > {{ passStatus }}
< img ng-show = "checkingPortal" ng-hide = "!checkingPortal" src = '/img/throbber.gif' / >
< / span >
< span ng-show = "!online" ng-hide = "online" >
< br / >
< span style = "color:red" > < strong > WiFi Pineapple must be online to detect and clone portals.< / strong > < / span >
< br / >
< / span >
< span ng-show = "!tServerConfig" ng-hide = "tServerConfig" >
< strong > Both < span style = 'color:red' > Test Site< / span > and < span style = 'color:red' > Data Expected< / span > must be configured before using Portal Auth< / strong > < br / >
*Click the help icon in the Settings panel for more information.
< / span >
< / div > < br / >
< div ng-show = "portalExists && tServerConfig && online && dependsInstalled" ng-hide = "!portalExists || !tServerConfig || !online || !dependsInstalled" >
< button type = "button" class = "btn btn-success" data-toggle = "modal" data-target = "#clonerOptions" ng-click = "prepareOptsModal();" > Clone Portal< / button >
< br / > < br / >
< / div >
< div >
< strong > Dependencies< / strong > < br / >
< button type = "button" class = "btn btn-success" ng-show = "!dependsInstalled" ng-disabled = "dependsProcessing" ng-hide = "dependsInstalled" ng-click = "depends('-install');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-182-download-alt.png" / > Install< / button >
< button type = "button" class = "btn papers_hoverDanger" ng-show = "dependsInstalled" ng-disabled = "dependsProcessing" ng-hide = "!dependsInstalled" ng-click = "depends('-remove');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-198-remove-circle.png" / > Uninstall< / button >
< img ng-show = "dependsProcessing" ng-hide = "!dependsProcessing" src = '/img/throbber.gif' / >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading pointer" data-toggle = "collapse" data-target = "#pa_settings" >
< table style = "width: 100%" >
< tr > < td align = "left" >
< h3 class = "panel-title" > Settings
< img ng-show = "showSettingsThrobber" ng-hide = "!showSettingsThrobber" src = '/img/throbber.gif' / > < / h3 >
< / table >
< / div >
< div id = "pa_settings" class = "panel-body panel-collapse collapse" >
< div class = "container-fluid" >
< div class = "pull-right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('settings.help','help');" > ?< / button >
< / div >
< div class = "form-group" >
< label class = "col-md-5 control-label" > Test Site< / label >
< div class = "col-md-10" >
< input type = "text" ng-model = "testSite" class = "form-control" >
< / div >
< / div >
< div class = "form-group" >
< label class = "col-md-5 control-label PA_topbuffer" > Data Expected< / label >
< div class = "col-md-10" >
< input type = "text" ng-model = "dataExpected" class = "form-control" >
< / div >
< / div >
< div class = "form-group" >
< label class = "col-md-5 control-label PA_topbuffer" > Portal Archive< / label >
< div class = "col-md-10" >
< input type = "text" ng-model = "portalArchive" class = "form-control" >
< / div >
< / div >
< div class = "form-group" >
< div class = "col-md-12 PA_topbuffer" >
< button type = "button" class = "btn pa_hoverInfo" ng-click = "updateSettings('default');" > Use Default< / button >
< button type = "button" class = "btn pa_hoverSuccess" ng-click = "updateSettings();" > Save< / button >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< div id = "clonerOptions" class = "modal fade" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< button type = "button" class = "close" data-dismiss = "modal" > × < / button >
< h3 > Cloner Options< / h3 >
< / div >
< div class = "modal-body" >
< div class = "container-fluid" >
< div class = "pull-right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('cloner.help','help');" > ?< / button >
< / div >
< div style = "text-align: center" ng-show = "showClonerThrobber" ng-hide = "!showClonerThrobber" >
< h4 > Cloning Portal< / h4 >
< p > Please do not close this window until cloning has finished.< br / > This can take a few minutes.< / p >
< img src = '/img/throbber.gif' / >
< / div >
< form role = "form" ng-show = "!showClonerThrobber" ng-hide = "showClonerThrobber" >
< div class = "form-group" >
< label class = "col-md-5 control-label" > Portal Name< / label >
< div class = "col-md-12" >
< input type = "text" ng-model = "cloner_portalName" class = "form-control" >
< / div >
< / div >
< div class = "form-group" >
< div class = "col-md-12 PA_topbuffer" >
< label > Injection Set< / label >
< select class = "form-control" ng-model = "cloner_injectionSet" ng-options = "set for set in injectionSets" > < / select >
< / div >
< / div >
< div class = "form-group" ng-hide = "cloner_injectionSet != 'Payloader'" ng-show = "cloner_injectionSet == 'Payloader'" >
< div class = "col-md-12 PA_topbuffer" >
< hr / >
< div class = "col-md-6" >
< label > Windows< / label >
< select class = "form-control" ng-model = "cloner_windowsPayload" ng-change = "updateDefaultPayload();" ng-options = "payload.fileName for payload in payloads" > < / select >
< / div >
< div class = "col-md-6" >
< label > OS X< / label >
< select class = "form-control" ng-model = "cloner_osxPayload" ng-change = "updateDefaultPayload();" ng-options = "payload.fileName for payload in payloads" > < / select >
< / div >
< / div >
< div class = "col-md-12 PA_topbuffer" >
< div class = "col-md-6" >
< label > Android< / label >
< select class = "form-control" ng-model = "cloner_androidPayload" ng-change = "updateDefaultPayload();" ng-options = "payload.fileName for payload in payloads" > < / select >
< / div >
< div class = "col-md-6" >
< label > iOS< / label >
< select class = "form-control" ng-model = "cloner_iosPayload" ng-change = "updateDefaultPayload();" ng-options = "payload.fileName for payload in payloads" > < / select >
< / div >
< / div >
< div class = "col-md-12 PA_topbuffer" >
< div class = "col-md-6 col-md-offset-3" >
< label > Default Payload< / label >
< select class = "form-control" ng-model = "cloner_defaultPayload" ng-options = "os for os in cloner_OSes" > < / select >
< / div >
< / div >
< / div >
< div class = "form-group" >
< div class = "col-md-12 PA_topbuffer" >
< hr / >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_stripLinks" > < strong > Strip Links< / strong >
< / label >
< / div >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_injectJS" > < strong > Inject JS< / strong >
< / label >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_stripJS" > < strong > Strip Inline JS< / strong >
< / label >
< / div >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_injectCSS" > < strong > Inject CSS< / strong >
< / label >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_stripCSS" > < strong > Strip Inline CSS< / strong >
< / label >
< / div >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_injectHTML" > < strong > Inject HTML< / strong >
< / label >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_stripForms" > < strong > Strip Forms< / strong >
< / label >
< / div >
2018-07-17 02:21:02 +00:00
< div class = "col-md-6" >
< label class = "checkbox-inline" >
< input type = "checkbox" ng-model = "cloner_targetedPortal" > < strong > Targeted Portal< / strong >
< / label >
< / div >
2017-11-16 05:42:22 +00:00
< / div >
< div class = "col-md-12" style = "margin-top: 20px; text-align: center" >
< button class = "btn btn-success btn-block" ng-click = "clonePortal();" > Clone Portal< / button >
< / div >
< / div >
< / form >
< / div >
< / div >
< / div >
< / div >
< / div >
< div id = "pa_viewLogInfo" class = "modal fade" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< button type = "button" class = "close" data-dismiss = "modal" > × < / button >
< h3 > {{ currentLogTitle }}< / h3 >
< / div >
< div class = "modal-body" >
< p ng-bind-html = "currentLogData" > < / p >
< / div >
< / div >
< / div >
< / div >
<!--
This block of JavaScript is used to allow tab characters within a textarea.
Without this it would be crazy annoying to format code properly.
-->
< script >
$('#portalAuthModule').delegate('.pa_codeEditorContainer', 'keydown', function(e){
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
var start = $(this).get(0).selectionStart;
var end = $(this).get(0).selectionEnd;
// set textarea value to: text before caret + tab + text after caret
$(this).val($(this).val().substring(0, start) + "\t" + $(this).val().substring(end));
// put caret at right position again
$(this).get(0).selectionEnd = start + 1;
}
});
< / script >
< div id = "pa_editCode" class = "modal fade" role = "dialog" >
< div class = "modal-dialog" style = "width: 800px" >
< div class = "modal-content" >
< div class = "modal-header" >
< button type = "button" class = "close" data-dismiss = "modal" > × < / button >
< div style = "text-align: left; display:inline-block" >
< button type = "button" class = "btn btn-danger" ng-click = "backupEditorCode('pass');" > Backup< / button >
< button type = "button" class = "btn btn-info" ng-click = "restoreEditorCode('pass');" > Restore< / button >
< button type = "button" class = "btn btn-success" ng-click = "saveEditorCode('pass');" > Save< / button >
< / div >
< / div >
< div class = "modal-body" >
< textarea class = "pa_codeEditorContainer" ng-model = "editorCode" style = "height: 700px; width: 100%" wrap = "off" spellcheck = "false" > < / textarea >
< / div >
< / div >
< / div >
< / div >
< div id = "pa_newInjectionSetView" class = "modal fade" role = "dialog" >
< div class = "modal-dialog" style = "width: 800px" >
< div class = "modal-content" >
< div class = "modal-header" >
< h3 > New Injection Set< / h3 >
< / div >
< div class = "modal-body" >
< input type = "text" class = "form-control" ng-model = "newInjectSetName" placeholder = "Injection Set Name" / > < br / >
< button type = "button" class = "btn btn-danger" data-dismiss = "modal" > Cancel< / button >
< button type = "button" class = "btn btn-success" ng-disabled = "newInjectSetName.length == 0" data-dismiss = "modal" ng-click = "newInjectionSet();" > Create< / button >
< / div >
< / div >
< / div >
< / div >
< div ng-show = "tServerConfig" ng-hide = "!tServerConfig" >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading pointer" data-toggle = "collapse" data-target = "#PA_payload_collapse" >
< h3 class = "panel-title" > Payload< / h3 >
< / div >
< div id = "PA_payload_collapse" class = "panel-body panel-collapse collapse" >
< div style = "text-align:center" >
< div class = "btn-group" data-toggle = "buttons" >
< button type = "button" class = "btn btn-primary" ng-class = "{'active' : showPASSDiv}" ng-click = "swapDiv('pass');" > PASS< / button >
< button type = "button" class = "btn btn-primary" ng-class = "{'active' : showNetClientDiv}" ng-click = "swapDiv('netclient');" > Payloads< / button >
< / div >
< / div >
< div class = "col-md-19" ng-show = "showPASSDiv" ng-hide = "!showPASSDiv" >
< table style = "width: 100%" >
< tr > < td align = "left" >
< button type = "button" class = "btn btn-success" ng-class = "{'btn-danger' : passEnabled}" ng-click = "toggleServer(passStatus);" > {{ passButton }} Server< / button >
< button type = "button" class = "btn pa_hoverInfo" data-toggle = "modal" data-target = "#pa_editCode" ng-click = "getCode();" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-151-edit.png" / > Edit Server< / button >
< / td > < td align = "right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('pass.help','help');" > ?< / button >
< / td > < / tr >
< / table >
< br / > < br / >
< div >
< h4 > Activity Log< / h4 >
< textarea ng-model = "activityLogData" style = "width: 100%; height: 220px" readonly > < / textarea >
< div style = "text-align: right" >
< button type = "button" class = "btn pa_hoverDanger" ng-click = "clearLog('activity');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > Clear< / button >
< button type = "button" class = "btn pa_hoverInfo" ng-click = "download('activity');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-201-download.png" / > Download< / button >
< / div >
< / div >
< br / >
< div >
< h4 > Available Targets< / h4 >
< textarea ng-model = "availableTargets" style = "width: 100%; height: 220px" readonly > < / textarea >
< div style = "text-align: right" >
< button type = "button" class = "btn pa_hoverDanger" ng-click = "clearLog('targets');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > Clear< / button >
< button type = "button" class = "btn pa_hoverInfo" ng-click = "download('targets');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-201-download.png" / > Download< / button >
< / div >
< / div >
< / div >
< div class = "col-md-19" ng-show = "showNetClientDiv" ng-hide = "!showNetClientDiv" >
< button type = "button" class = "btn pull-right" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('payloads.help','help');" > ?< / button > < br / >
< h4 > Payload Templates< / h4 >
< div style = "text-align:center; outline: 1px solid grey; padding-top: 20px; padding-bottom: 20px;" >
< button type = "button" class = "btn btn-sm pa_hoverInfo" ng-click = "download('networkclient_cs_api');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-201-download.png" / > C# Payload API< / button >
< button type = "button" class = "btn btn-sm pa_hoverInfo" ng-click = "download('networkclient_windows');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-201-download.png" / > Win Py Payload< / button >
< button type = "button" class = "btn btn-sm pa_hoverInfo" ng-click = "download('networkclient_osx');" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-201-download.png" / > OS X Py Payload< / button >
< / div >
< br / > < br / >
< table width = "100%" >
< tr > < td >
< h4 > Manage Payloads< / h4 >
< / td > < td align = "right" >
< img ng-show = "uploadLimitThrobber" ng-hide = "!uploadLimitThrobber" src = '/img/throbber.gif' / >
< a href = "" ng-show = "!uploadLimitThrobber" ng-hide = "uploadLimitThrobber" ng-click = "configUploadLimit();" > Configure Upload Limit< / a >
< / td > < / tr >
< / table >
< div style = "outline: 1px solid grey; padding-top: 20px; padding-bottom: 20px;" >
< table class = "table" >
< thead >
< th > Payload< / th >
< th > Path< / th >
< th > Actions< / th >
< / thead >
< tbody >
< tr ng-repeat = "payload in payloads" ng-if = "payload.fileName != 'None'" >
< td > {{ payload.fileName }}< / td >
< td > {{ payload.filePath }}< / td >
< td > < button class = "btn pa_hoverDanger" ng-click = "deletePayload(payload);" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > < / button >
< td > < / td >
< / tr >
< / tbody >
< / table >
< div style = "text-align:center" >
< button class = "btn pa_hoverInfo" data-toggle = "modal" data-target = "#pa_importInjectionSetView" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-202-upload.png" / > Upload Payload< / button >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading pointer" data-toggle = "collapse" data-target = "#pa_injections_collapse" >
< h3 class = "panel-title" > Injection Sets< / h3 >
< / div >
< div id = "pa_injections_collapse" class = "panel-body panel-collapse collapse" >
< div style = "text-align:center" >
< div class = "btn-group" data-toggle = "buttons" >
< button type = "button" class = "btn btn-primary" ng-class = "{'active' : showInjectManagerDiv}" ng-click = "swapDiv('injectManager');" > Manage Injects< / button >
< button type = "button" class = "btn btn-primary" ng-class = "{'active' : showInjectEditorDiv}" ng-click = "swapDiv('injectEditor');" > Edit Injects< / button >
< / div >
< / div >
< div class = "col-md-19" ng-show = "showInjectManagerDiv" ng-hide = "!showInjectManagerDiv" >
< br / >
< div >
< button type = "button" class = "btn btn-md pa_hoverSuccess" data-toggle = "modal" data-target = "#pa_newInjectionSetView" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-433-plus.png" / > New Injection Set< / button >
< button type = "button" class = "btn btn-sm pa_hoverSuccess" data-toggle = "modal" data-target = "#pa_importInjectionSetView" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-202-upload.png" / > Import Injection Set< / button >
< hr / >
< / div >
< div class = "table-responsive table-dropdown" >
< table class = "table" >
< thead >
< tr >
< th > Injection Set< / th >
< th > Actions< / th >
< / tr >
< / thead >
< tbody >
< tr ng-repeat = "set in injectionSets" ng-if = "set != 'Select...'" >
< td > {{ set }}< / td >
< td >
< button type = "button" class = "btn pa_hoverInfo" ng-click = "downloadInjectSet(set);" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-201-download.png" / > < / button >
< button type = "button" class = "btn pa_hoverDanger" ng-click = "deleteInjectSet(set);" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > < / button >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< div class = "col-md-19" ng-show = "showInjectEditorDiv" ng-hide = "!showInjectEditorDiv" >
< div style = "text-align: center" >
< h3 > Current Injection Set< / h3 >
< div style = "width: 25%; margin: 0 auto;" >
< select class = "form-control" ng-model = "editor_injectionSet" ng-options = "set for set in injectionSets" ng-change = "getInjectCode(editor_injectionSet)" > < / select >
< / div >
< / div >
< div class = "col-md-12" >
< table style = "width: 100%" > < tr > < td >
< h3 > InjectPHP< / h3 >
< / td > < td align = "right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('injectphp.help','help');" > ?< / button >
< / td > < / tr >
< / table >
< textarea class = "pa_codeEditorContainer" ng-model = "pa_injectPHPEditor" style = "height: 300px; width: 100%" wrap = "off" spellcheck = "false" > < / textarea >
< table style = "width: 100%" >
< tr > < td >
< button type = "button" class = "btn btn-danger" ng-click = "backupEditorCode('injectPHP');" > Backup< / button >
< button type = "button" class = "btn btn-info" ng-click = "restoreEditorCode('injectPHP');" > Restore< / button >
< / td > < td align = "right" >
< button type = "button" class = "btn btn-success" ng-click = "saveEditorCode('injectPHP');" > Save PHP< / button >
< / td > < / tr >
< / table >
< / div > < br / >
< div class = "col-md-12" >
< table style = "width: 100%" > < tr > < td >
< h3 > InjectJS< / h3 >
< / td > < td align = "right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('injectjs.help','help');" > ?< / button >
< / td > < / tr >
< / table >
< textarea class = "pa_codeEditorContainer" ng-model = "pa_injectJSEditor" style = "height: 300px; width: 100%" wrap = "off" spellcheck = "false" > < / textarea >
< table style = "width: 100%" >
< tr > < td >
< button type = "button" class = "btn btn-danger" ng-click = "backupEditorCode('injectJS');" > Backup< / button >
< button type = "button" class = "btn btn-info" ng-click = "restoreEditorCode('injectJS');" > Restore< / button >
< / td > < td align = "right" >
< button type = "button" class = "btn btn-success" ng-click = "saveEditorCode('injectJS');" > Save JS< / button >
< / td > < / tr >
< / table >
< / div > < br / >
< div class = "col-md-12" >
< table style = "width: 100%" > < tr > < td >
< h3 > InjectCSS< / h3 >
< / td > < td align = "right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('injectcss.help','help');" > ?< / button >
< / td > < / tr >
< / table >
< textarea class = "pa_codeEditorContainer" ng-model = "pa_injectCSSEditor" style = "height: 300px; width: 100%" wrap = "off" spellcheck = "false" > < / textarea >
< table style = "width: 100%" >
< tr > < td >
< button type = "button" class = "btn btn-danger" ng-click = "backupEditorCode('injectCSS');" > Backup< / button >
< button type = "button" class = "btn btn-info" ng-click = "restoreEditorCode('injectCSS');" > Restore< / button >
< / td > < td align = "right" >
< button type = "button" class = "btn btn-success" ng-click = "saveEditorCode('injectCSS');" > Save CSS< / button >
< / td > < / tr >
< / table >
< / div > < br / >
< div class = "col-md-12" >
< table style = "width: 100%" > < tr > < td >
< h3 > InjectHTML< / h3 >
< / td > < td align = "right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('injecthtml.help','help');" > ?< / button >
< / td > < / tr >
< / table >
< textarea class = "pa_codeEditorContainer" ng-model = "pa_injectHTMLEditor" style = "height: 300px; width: 100%" wrap = "off" spellcheck = "false" > < / textarea >
< table style = "width: 100%" >
< tr > < td >
< button type = "button" class = "btn btn-danger" ng-click = "backupEditorCode('injectHTML');" > Backup< / button >
< button type = "button" class = "btn btn-info" ng-click = "restoreEditorCode('injectHTML');" > Restore< / button >
< / td > < td align = "right" >
< button type = "button" class = "btn btn-success" ng-click = "saveEditorCode('injectHTML');" > Save HTML< / button >
< / td > < / tr >
< / table >
< / div > < br / >
< div class = "col-md-12" >
< table style = "width: 100%" > < tr > < td >
< h3 > MyPortal.php< / h3 >
< / td > < td align = "right" >
< button type = "button" class = "btn" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog('myportal.help','help');" > ?< / button >
< / td > < / tr >
< / table >
< textarea class = "pa_codeEditorContainer" ng-model = "pa_injectMyPortalPHPEditor" style = "height: 300px; width: 100%" wrap = "off" spellcheck = "false" > < / textarea >
< table style = "width: 100%" >
< tr > < td >
< button type = "button" class = "btn btn-danger" ng-click = "backupEditorCode('MyPortal');" > Backup< / button >
< button type = "button" class = "btn btn-info" ng-click = "restoreEditorCode('MyPortal');" > Restore< / button >
< / td > < td align = "right" >
< button type = "button" class = "btn btn-success" ng-click = "saveEditorCode('MyPortal');" > Save MyPortal.php< / button >
< / td > < / tr >
< / table >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading pointer" data-toggle = "collapse" data-target = "#pa_collapse_authlog" >
< h3 class = "panel-title" > Captured Credentials< / h3 >
< / div >
< div id = "pa_collapse_authlog" class = "panel-body panel-collapse collapse" >
< pre > {{capturedCreds}}< / pre >
< div style = "text-align: right" >
< button type = "button" class = "btn pa_hoverDanger" ng-click = "clearCapturedCreds();" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > Clear< / button >
< / div >
< / div >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading pointer" data-toggle = "collapse" data-target = "#errorlog" >
< h3 class = "panel-title" > Error Logs< / h3 >
< / div >
< div id = "errorlog" class = "panel-body panel-collapse collapse" >
< table class = "table" >
< thead >
< tr >
< th > Log Name< / th >
< th > Actions< / th >
< / thead >
< tbody >
< tr ng-repeat = "log in errorlogs" >
< td > {{ log }}< / td >
< td >
< button type = "button" class = "btn pa_hoverInfo" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog(log, 'error');" > View< / button >
< button type = "button" class = "btn pa_hoverDanger" ng-click = "deleteLog(log);" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > < / button >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< / div >
< div class = "col-md-12" >
< div class = "panel panel-default" >
< div class = "panel-heading pointer" data-toggle = "collapse" data-target = "#pa_collapse_changelog" >
< h3 class = "panel-title" > Change Log< / h3 >
< / div >
< div id = "pa_collapse_changelog" class = "panel-body panel-collapse collapse" >
< table class = "table" >
< thead >
< tr >
< th > Version< / th >
< th > Actions< / th >
< / thead >
< tbody >
< tr ng-repeat = "version in changelogs" >
< td > {{ version }}< / td >
< td >
< button type = "button" class = "btn btn-sm pa_hoverInfo" data-toggle = "modal" data-target = "#pa_viewLogInfo" ng-click = "readLog(version, 'change');" > View< / button >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< / div >
< div id = "pa_importInjectionSetView" class = "modal fade" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< button type = "button" class = "close" data-dismiss = "modal" > × < / button >
< div class = "btn btn-primary" >
< label for = "pa_selectedFiles" style = "cursor: pointer" > Add files< / label >
< / div >
< / div >
< div class = "modal-body" >
< table class = "table" >
< thead >
< th > File< / th >
< th > Actions< / th >
< / thead >
< tbody >
< tr ng-repeat = "file in pa_selectedFiles" >
< td > {{ file.name }}< / td >
< td > < button class = "btn pa_hoverDanger" ng-click = "removeSelectedFile(file);" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-17-bin.png" / > < / td >
< / tr >
< / tbody >
< / table >
< div style = "text-align:center" >
< input type = "file" id = "pa_selectedFiles" onchange = "angular.element(this).scope().setSelectedFiles()" style = "visibility: hidden;" multiple >
< img ng-show = "uploading" ng-hide = "!uploading" src = '/img/throbber.gif' / >
< button class = "btn" ng-show = "!uploading" ng-hide = "uploading" ng-class = "{'pa_hoverInfo' : pa_selectedFiles.length > 0}" ng-disabled = "pa_selectedFiles.length == 0" ng-click = "uploadFile();" > < img src = "/modules/PortalAuth/includes/icons/glyphicons-202-upload.png" / > Upload< / button >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >