This commit is contained in:
2018-07-27 20:34:49 +00:00
parent c631ada380
commit c4a9e27b5f
7 changed files with 268 additions and 199 deletions

View File

@@ -26,137 +26,163 @@ namespace rockfishCore.Controllers
//status of ops //status of ops
[HttpGet("status")] [HttpGet("status/{service}")]
public dtoOpsStatus GetOpsStatus() public dtoOpsStatus GetOpsStatus([FromRoute] string service)
{ {
dtoOpsStatus Ret = new dtoOpsStatus(); dtoOpsStatus Ret = new dtoOpsStatus();
// //TESTING
// Ret.OpsCheckError="Fake error message\r\nwith more fake text\r\neot";
// Ret.MailMirrorOK=true;
// Ret.ContactFormOK=true;
try try
{ {
Ret.MailMirrorOK = RfMail.MailIsMirroringProperly(); switch (service)
{
case "MailMirror":
Ret.Status = true;//RfMail.MailIsMirroringProperly();
break;
case "AyaNovaSite":
Ret.Status = false;//OpsDiagnostics.CheckWebsite("https://www.ayanova.com/", "Ground Zero Tech-Works Inc.");
break;
case "APISite":
Ret.Status = true;// OpsDiagnostics.CheckWebsite("https://api.ayanova.com/", "WorkorderTypes Enumeration");
break;
case "ContactForm":
Ret.Status = false; //OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/contact", "Contact.Email");
break;
case "RequestForm":
Ret.Status = true;// OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/request", "Contact.Email");
break;
case "RequestLiteForm":
Ret.Status = false; //OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/requestlite", "Contact.Email");
break;
case "Subversion":
Ret.Status = true; //OpsDiagnostics.CheckWebsite("http://svn.helloayanova.com:3343/csvn/login/auth", "Subversion Edge");
break;
case "Forum":
Ret.Status = false; //OpsDiagnostics.CheckWebsite("http://forum.ayanova.com/", "AyaNova support resources");
break;
case "DevOps":
Ret.Status = true; //OpsDiagnostics.CheckWebsite("https://test.helloayanova.com/api/v8/", "AyaNova server");
break;
case "Backup":
Ret.Status = false;//OpsDiagnostics.VerifyBackups();
break;
default:
Ret.Status = false;
Ret.ServiceCheckError=$"Unknown service: \"{service}\"";
break;
}
} }
catch (Exception ex) catch (Exception ex)
{ {
Ret.OpsCheckError += $"Mail mirror: {ex.Message}\r\n"; Ret.ServiceCheckError += $"{service}: {ex.Message}\r\n";
} }
try Ret.ServiceCheckError=$"test {service} error";
{
Ret.AyaNovaSiteOK = OpsDiagnostics.CheckWebsite("https://www.ayanova.com/", "Ground Zero Tech-Works Inc.");
}
catch (Exception ex)
{
Ret.OpsCheckError += $"AyaNova site: {ex.Message}\r\n";
}
try // try
{ // {
Ret.APISiteOK = OpsDiagnostics.CheckWebsite("https://api.ayanova.com/", "WorkorderTypes Enumeration"); // Ret.MailMirrorOK = RfMail.MailIsMirroringProperly();
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"API site: {ex.Message}\r\n"; // Ret.OpsCheckError += $"Mail mirror: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.ContactFormOK = OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/contact", "Contact.Email"); // Ret.AyaNovaSiteOK = OpsDiagnostics.CheckWebsite("https://www.ayanova.com/", "Ground Zero Tech-Works Inc.");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"Contact form: {ex.Message}\r\n"; // Ret.OpsCheckError += $"AyaNova site: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.RequestFormOK = OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/request", "Contact.Email"); // Ret.APISiteOK = OpsDiagnostics.CheckWebsite("https://api.ayanova.com/", "WorkorderTypes Enumeration");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"Request form: {ex.Message}\r\n"; // Ret.OpsCheckError += $"API site: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.RequestLiteFormOK = OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/requestlite", "Contact.Email"); // Ret.ContactFormOK = OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/contact", "Contact.Email");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"RequestLite form: {ex.Message}\r\n"; // Ret.OpsCheckError += $"Contact form: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.SubversionOK = OpsDiagnostics.CheckWebsite("http://svn.helloayanova.com:3343/csvn/login/auth", "Subversion Edge"); // Ret.RequestFormOK = OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/request", "Contact.Email");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"Subversion: {ex.Message}\r\n"; // Ret.OpsCheckError += $"Request form: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.ForumOK = OpsDiagnostics.CheckWebsite("http://forum.ayanova.com/", "AyaNova support resources"); // Ret.RequestLiteFormOK = OpsDiagnostics.CheckWebsite("https://contact.ayanova.com/requestlite", "Contact.Email");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"Forum: {ex.Message}\r\n"; // Ret.OpsCheckError += $"RequestLite form: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.DevOpsOK = OpsDiagnostics.CheckWebsite("https://test.helloayanova.com/api/v8/", "AyaNova server"); // Ret.SubversionOK = OpsDiagnostics.CheckWebsite("http://svn.helloayanova.com:3343/csvn/login/auth", "Subversion Edge");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"DevOps: {ex.Message}\r\n"; // Ret.OpsCheckError += $"Subversion: {ex.Message}\r\n";
} // }
try // try
{ // {
Ret.BackupOK = OpsDiagnostics.VerifyBackups(); // Ret.ForumOK = OpsDiagnostics.CheckWebsite("http://forum.ayanova.com/", "AyaNova support resources");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Ret.OpsCheckError += $"Backup: {ex.Message}\r\n"; // Ret.OpsCheckError += $"Forum: {ex.Message}\r\n";
} // }
// try
// {
// Ret.DevOpsOK = OpsDiagnostics.CheckWebsite("https://test.helloayanova.com/api/v8/", "AyaNova server");
// }
// catch (Exception ex)
// {
// Ret.OpsCheckError += $"DevOps: {ex.Message}\r\n";
// }
// try
// {
// Ret.BackupOK = OpsDiagnostics.VerifyBackups();
// }
// catch (Exception ex)
// {
// Ret.OpsCheckError += $"Backup: {ex.Message}\r\n";
// }
return Ret; return Ret;
} }
public class dtoOpsStatus public class dtoOpsStatus
{ {
public bool MailMirrorOK; public bool Status;
public bool ForumOK; public string ServiceCheckError;
public bool AyaNovaSiteOK;
public bool APISiteOK;
public bool ContactFormOK;
public bool RequestFormOK;
public bool RequestLiteFormOK;
public bool SubversionOK;
public bool DevOpsOK;
public bool BackupOK;
public string OpsCheckError;
public dtoOpsStatus() public dtoOpsStatus()
{ {
MailMirrorOK = false; Status = false;
ForumOK = false; ServiceCheckError = string.Empty;
AyaNovaSiteOK = false;
APISiteOK = false;
ContactFormOK = false;
RequestFormOK = false;
RequestLiteFormOK = false;
SubversionOK = false;
DevOpsOK = false;
BackupOK = false;
OpsCheckError = string.Empty;
} }
} }

View File

@@ -2,7 +2,7 @@ namespace rockfishCore.Util
{ {
public static class RfVersion public static class RfVersion
{ {
public const string NumberOnly="6.5"; public const string NumberOnly="6.6";
public const string Full = "Rockfish server " + NumberOnly; public const string Full = "Rockfish server " + NumberOnly;
} }
} }

View File

@@ -11,69 +11,69 @@
<title>Rockfish loading....</title> <title>Rockfish loading....</title>
<!-- ICONS / MANIFEST --> <!-- ICONS / MANIFEST -->
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?rfv=6.5"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?rfv=6.6">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?rfv=6.5"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?rfv=6.6">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?rfv=6.5"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?rfv=6.6">
<link rel="manifest" href="/manifest.json?rfv=6.5"> <link rel="manifest" href="/manifest.json?rfv=6.6">
<link rel="mask-icon" href="/safari-pinned-tab.svg?rfv=6.5" color="#5bbad5"> <link rel="mask-icon" href="/safari-pinned-tab.svg?rfv=6.6" color="#5bbad5">
<meta name="theme-color" content="#ffffff"> <meta name="theme-color" content="#ffffff">
<!-- 3rd party components fonts and icons --> <!-- 3rd party components fonts and icons -->
<link href="css/materialdesignicons.min.css?rfv=6.5" media="all" rel="stylesheet" type="text/css" /> <link href="css/materialdesignicons.min.css?rfv=6.6" media="all" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="css/bootstrap.min.css?rfv=6.5" type="text/css" /> <link rel="stylesheet" href="css/bootstrap.min.css?rfv=6.6" type="text/css" />
<link rel="stylesheet" href="css/app.css?rfv=6.5" type="text/css" /> <link rel="stylesheet" href="css/app.css?rfv=6.6" type="text/css" />
<link rel="stylesheet" href="css/mdi-bs4-compat.css?rfv=6.5" type="text/css" /> <link rel="stylesheet" href="css/mdi-bs4-compat.css?rfv=6.6" type="text/css" />
<!-- third-party javascript --> <!-- third-party javascript -->
<script src="js/lib/jquery-3.3.1.min.js?rfv=6.5"></script> <script src="js/lib/jquery-3.3.1.min.js?rfv=6.6"></script>
<script src="js/lib/page.js?rfv=6.5"></script> <script src="js/lib/page.js?rfv=6.6"></script>
<script src="js/lib/jquery.event.gevent.js?rfv=6.5"></script> <script src="js/lib/jquery.event.gevent.js?rfv=6.6"></script>
<script src="js/lib/jquery.gzserialize.js?rfv=6.5"></script> <script src="js/lib/jquery.gzserialize.js?rfv=6.6"></script>
<script src="js/lib/handlebars.runtime-v4.0.5.js?rfv=6.5"></script> <script src="js/lib/handlebars.runtime-v4.0.5.js?rfv=6.6"></script>
<script src="js/lib/store.min.js?rfv=6.5"></script> <script src="js/lib/store.min.js?rfv=6.6"></script>
<script src="js/lib/jquery.autocomplete.min.js?rfv=6.5"></script> <script src="js/lib/jquery.autocomplete.min.js?rfv=6.6"></script>
<script src="js/lib/moment.min.js?rfv=6.5"></script> <script src="js/lib/moment.min.js?rfv=6.6"></script>
<!-- our javascript --> <!-- our javascript -->
<script src="js/index.js?rfv=6.5"></script> <script src="js/index.js?rfv=6.6"></script>
<script src="js/app.util.js?rfv=6.5"></script> <script src="js/app.util.js?rfv=6.6"></script>
<script src="js/app.api.js?rfv=6.5"></script> <script src="js/app.api.js?rfv=6.6"></script>
<script src="js/app.utilB.js?rfv=6.5"></script> <script src="js/app.utilB.js?rfv=6.6"></script>
<script src="js/app.nav.js?rfv=6.5"></script> <script src="js/app.nav.js?rfv=6.6"></script>
<script src="js/app.shell.js?rfv=6.5"></script> <script src="js/app.shell.js?rfv=6.6"></script>
<script src="js/app.fourohfour.js?rfv=6.5"></script> <script src="js/app.fourohfour.js?rfv=6.6"></script>
<script src="js/app.authenticate.js?rfv=6.5"></script> <script src="js/app.authenticate.js?rfv=6.6"></script>
<script src="js/app.customers.js?rfv=6.5"></script> <script src="js/app.customers.js?rfv=6.6"></script>
<script src="js/app.customerEdit.js?rfv=6.5"></script> <script src="js/app.customerEdit.js?rfv=6.6"></script>
<script src="js/app.customerSites.js?rfv=6.5"></script> <script src="js/app.customerSites.js?rfv=6.6"></script>
<script src="js/app.customerSiteEdit.js?rfv=6.5"></script> <script src="js/app.customerSiteEdit.js?rfv=6.6"></script>
<script src="js/app.purchases.js?rfv=6.5"></script> <script src="js/app.purchases.js?rfv=6.6"></script>
<script src="js/app.purchaseEdit.js?rfv=6.5"></script> <script src="js/app.purchaseEdit.js?rfv=6.6"></script>
<script src="js/app.license.js?rfv=6.5"></script> <script src="js/app.license.js?rfv=6.6"></script>
<script src="js/app.licenseTemplates.js?rfv=6.5"></script> <script src="js/app.licenseTemplates.js?rfv=6.6"></script>
<script src="js/app.licenseRequestEdit.js?rfv=6.5"></script> <script src="js/app.licenseRequestEdit.js?rfv=6.6"></script>
<script src="js/app.licenses.js?rfv=6.5"></script> <script src="js/app.licenses.js?rfv=6.6"></script>
<script src="js/app.licenseView.js?rfv=6.5"></script> <script src="js/app.licenseView.js?rfv=6.6"></script>
<script src="js/app.reportData.js?rfv=6.5"></script> <script src="js/app.reportData.js?rfv=6.6"></script>
<script src="js/app.reportDataProdEmail.js?rfv=6.5"></script> <script src="js/app.reportDataProdEmail.js?rfv=6.6"></script>
<script src="js/app.reportDataExpires.js?rfv=6.5"></script> <script src="js/app.reportDataExpires.js?rfv=6.6"></script>
<script src="js/app.search.js?rfv=6.5"></script> <script src="js/app.search.js?rfv=6.6"></script>
<script src="js/app.subscription.js?rfv=6.5"></script> <script src="js/app.subscription.js?rfv=6.6"></script>
<script src="js/app.subnotify.js?rfv=6.5"></script> <script src="js/app.subnotify.js?rfv=6.6"></script>
<script src="js/app.templates.js?rfv=6.5"></script> <script src="js/app.templates.js?rfv=6.6"></script>
<script src="js/app.templateEdit.js?rfv=6.5"></script> <script src="js/app.templateEdit.js?rfv=6.6"></script>
<script src="js/app.inbox.js?rfv=6.5"></script> <script src="js/app.inbox.js?rfv=6.6"></script>
<script src="js/app.mailEdit.js?rfv=6.5"></script> <script src="js/app.mailEdit.js?rfv=6.6"></script>
<script src="js/app.rfcaseEdit.js?rfv=6.5"></script> <script src="js/app.rfcaseEdit.js?rfv=6.6"></script>
<script src="js/app.rfcases.js?rfv=6.5"></script> <script src="js/app.rfcases.js?rfv=6.6"></script>
<script src="js/app.rfsettings.js?rfv=6.5"></script> <script src="js/app.rfsettings.js?rfv=6.6"></script>
<script src="js/app.ops.js?rfv=6.5"></script> <script src="js/app.ops.js?rfv=6.6"></script>
<!-- handlebars templates --> <!-- handlebars templates -->
<script src="js/templates/templates.js?rfv=6.5"></script> <script src="js/templates/templates.js?rfv=6.6"></script>
<script> <script>
@@ -103,7 +103,7 @@ window.onerror = function ( error ) {
<body class="rf-body"> <body class="rf-body">
<div id="app" class="container"></div> <div id="app" class="container"></div>
<script src="js/lib/bootstrap.min.js?rfv=6.5"></script> <script src="js/lib/bootstrap.min.js?rfv=6.6"></script>
</body> </body>
</html> </html>

View File

@@ -27,7 +27,7 @@ app.api = (function() {
generateFromRequest, generateFromRequest,
licenseEmailResponse; licenseEmailResponse;
RockFishVersion = "6.5"; RockFishVersion = "6.6";
////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////
// NOT AUTHORIZED ERROR HANDLER // NOT AUTHORIZED ERROR HANDLER

View File

@@ -12,7 +12,7 @@ app.ops = (function() {
//---------------- BEGIN MODULE SCOPE VARIABLES -------------- //---------------- BEGIN MODULE SCOPE VARIABLES --------------
var stateMap = {}, var stateMap = {},
configModule, configModule,
generateItem, checkService,
initModule; initModule;
//----------------- END MODULE SCOPE VARIABLES --------------- //----------------- END MODULE SCOPE VARIABLES ---------------
@@ -20,19 +20,41 @@ app.ops = (function() {
////////////////// //////////////////
//Generate list item //Generate list item
// //
generateItem = function(okStatus, label) { checkService = function(service) {
// var okClassFragment = okStatus
// ? "mdi-check-circle text-success"
// : "mdi-alert text-danger";
var okClassFragment = okStatus // return (
? "mdi-check-circle text-success" // '<h4><i class="mdi mdi-36px ' +
: "mdi-alert text-danger"; // okClassFragment +
// '"></i> ' +
// label +
// "</h4>"
// );
return ( app.api.get("ops/status/" + service, function(res) {
'<h4><i class="mdi mdi-36px ' + if (res.error) {
okClassFragment + $.gevent.publish("app-show-error", res.msg);
'"></i> ' + } else {
label + if (res.ServiceCheckError) {
"</h4>" var errorText = $("#rf-ops-error").text();
); errorText += "\r\n";
errorText += res.ServiceCheckError;
$("#rf-ops-error").text(errorText);
}
var serviceElement = $("#" + service);
serviceElement.removeClass("mdi-help-circle-outline text-warning");
if (res.status == true) {
serviceElement.addClass("mdi-check-circle text-success");
} else {
serviceElement.addClass("mdi-alert text-danger");
}
//remove ? class and warning class
//add appropriate icon and text color class
}
});
}; };
//-------------------- END UTILITY METHODS ------------------- //-------------------- END UTILITY METHODS -------------------
@@ -59,37 +81,17 @@ app.ops = (function() {
} }
$container.html(Handlebars.templates["app.ops"]({})); $container.html(Handlebars.templates["app.ops"]({}));
$("#rf-ops-error").text(""); $("#rf-ops-error").text("");
$("#rf-ops-status").html("<h4>Checking...</h4>"); // $("#rf-ops-status").html("<h4>Checking...</h4>");
//Context menu //Context menu
app.nav.contextClear(); app.nav.contextClear();
app.api.get("ops/status/", function(res) { checkService("MailMirror");
if (res.error) { checkService("AyaNovaSite");
$.gevent.publish("app-show-error", res.msg); checkService("APISite");
} else { checkService("ContactForm");
if (res.opsCheckError) { checkService("RequestForm");
$("#rf-ops-error").text(res.opsCheckError); checkService("Backup");
}
var generatedHtml = "";
generatedHtml += generateItem(res.mailMirrorOK, "Mail & mirror");
generatedHtml += generateItem(res.ayaNovaSiteOK, "AyaNova site");
generatedHtml += generateItem(res.backupOK, "Backup");
generatedHtml += generateItem(res.contactFormOK, "Contact form");
generatedHtml += generateItem(res.requestFormOK, "Request form");
generatedHtml += generateItem(
res.requestLiteFormOK,
"Request lite form"
);
generatedHtml += generateItem(res.forumOK, "Forum");
generatedHtml += generateItem(res.subversionOK, "Subversion");
generatedHtml += generateItem(res.devOpsOK, "Devops site");
generatedHtml += generateItem(res.apiSiteOK, "API site");
$("#rf-ops-status").html(generatedHtml);
}
});
}; };
//PUBLIC METHODS //PUBLIC METHODS

View File

@@ -1,5 +1,46 @@
<div> <div>
<pre id="rf-ops-error" class="text-danger"></pre> <pre id="rf-ops-error" class="text-danger"></pre>
<div id="rf-ops-status"> <div id="rf-ops-status">
<h4>
<i id="MailMirror" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Mail / mirror
</h4>
<h4>
<i id="AyaNovaSite" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
AyaNova site
</h4>
<h4>
<i id="Backup" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Backup
</h4>
<h4>
<i id="ContactForm" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Contact form
</h4>
<h4>
<i id="RequestForm" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Request form
</h4>
<h4>
<i id="RequestLiteForm" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Request lite form
</h4>
<h4>
<i id="Forum" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Forum
</h4>
<h4>
<i id="Subversion" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
Subversion
</h4>
<h4>
<i id="DevOps" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
DevOps server
</h4>
<h4>
<i id="APISite" class="mdi mdi-36px mdi-help-circle-outline text-warning"></i>
API site
</h4>
</div> </div>
</div> </div>

File diff suppressed because one or more lines are too long