1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-11-13 22:00:10 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
51b59ae103
settings: add button to get logs 2021-12-30 17:54:27 +00:00
8888807780
remove debug print, add another 2021-12-30 17:30:29 +00:00
9 changed files with 35 additions and 2 deletions

11
api.go
View File

@ -536,6 +536,8 @@ func (app *appContext) newUser(req newUserDTO, confirmed bool) (f errorFunc, suc
} else { } else {
app.info.Println("Created Ombi user") app.info.Println("Created Ombi user")
} }
} else {
app.debug.Printf("Skipping Ombi: Profile \"%s\" was empty", invite.Profile)
} }
} }
} }
@ -2845,6 +2847,15 @@ func (app *appContext) restart(gc *gin.Context) {
} }
} }
// @Summary Returns the last 100 lines of the log.
// @Router /log [get]
// @Success 200 {object} LogDTO
// @Security Bearer
// @tags Other
func (app *appContext) GetLog(gc *gin.Context) {
gc.JSON(200, LogDTO{lineCache.String()})
}
// no need to syscall.exec anymore! // no need to syscall.exec anymore!
func (app *appContext) Restart() error { func (app *appContext) Restart() error {
if TRAY { if TRAY {

View File

@ -614,7 +614,6 @@ func (emailer *Emailer) deletedValues(reason string, app *appContext, noSub bool
template["reason"] = reason template["reason"] = reason
template["message"] = app.config.Section("messages").Key("message").String() template["message"] = app.config.Section("messages").Key("message").String()
} }
fmt.Println("TTTT", template)
return template return template
} }

View File

@ -71,6 +71,12 @@
<pre class="monospace">{{ .license }}</pre> <pre class="monospace">{{ .license }}</pre>
</div> </div>
</div> </div>
<div id="modal-logs" class="modal">
<div class="modal-content wide content card">
<span class="heading">{{ .strings.logs }}<span class="modal-close">&times;</span></span>
<pre class="monospace" id="log-area"></pre>
</div>
</div>
<div id="modal-modify-user" class="modal"> <div id="modal-modify-user" class="modal">
<form class="modal-content card" id="form-modify-user" href=""> <form class="modal-content card" id="form-modify-user" href="">
<span class="heading"><span id="header-modify-user"></span> <span class="modal-close">&times;</span></span> <span class="heading"><span id="header-modify-user"></span> <span class="modal-close">&times;</span></span>
@ -635,6 +641,7 @@
</label> </label>
</div> </div>
<div> <div>
<span class="button ~info !normal" id="settings-logs">{{ .strings.logs }}</span>
<span class="button ~neutral !normal" id="settings-restart">{{ .strings.settingsRestart }}</span> <span class="button ~neutral !normal" id="settings-restart">{{ .strings.settingsRestart }}</span>
<span class="button ~urge !normal unfocused" id="settings-save">{{ .strings.settingsSave }}</span> <span class="button ~urge !normal unfocused" id="settings-save">{{ .strings.settingsSave }}</span>
</div> </div>

View File

@ -48,6 +48,7 @@
"profile": "Profile", "profile": "Profile",
"unknown": "Unknown", "unknown": "Unknown",
"label": "Label", "label": "Label",
"logs": "Logs",
"announce": "Announce", "announce": "Announce",
"templates": "Templates", "templates": "Templates",
"subject": "Subject", "subject": "Subject",

View File

@ -341,3 +341,7 @@ type InternalPWR struct {
ID string `json:"id"` ID string `json:"id"`
Expiry time.Time `json:"expiry"` Expiry time.Time `json:"expiry"`
} }
type LogDTO struct {
Log string `json:"log"`
}

View File

@ -180,6 +180,7 @@ func (app *appContext) loadRoutes(router *gin.Engine) {
api.GET(p+"/config", app.GetConfig) api.GET(p+"/config", app.GetConfig)
api.POST(p+"/config", app.ModifyConfig) api.POST(p+"/config", app.ModifyConfig)
api.POST(p+"/restart", app.restart) api.POST(p+"/restart", app.restart)
api.GET(p+"/logs", app.GetLog)
if telegramEnabled || discordEnabled || matrixEnabled { if telegramEnabled || discordEnabled || matrixEnabled {
api.GET(p+"/telegram/pin", app.TelegramGetPin) api.GET(p+"/telegram/pin", app.TelegramGetPin)
api.GET(p+"/telegram/verified/:pin", app.TelegramVerified) api.GET(p+"/telegram/verified/:pin", app.TelegramVerified)

View File

@ -87,6 +87,8 @@ window.availableProfiles = window.availableProfiles || [];
window.modals.matrix = new Modal(document.getElementById("modal-matrix")); window.modals.matrix = new Modal(document.getElementById("modal-matrix"));
window.modals.logs = new Modal(document.getElementById("modal-logs"));
if (window.telegramEnabled) { if (window.telegramEnabled) {
window.modals.telegram = new Modal(document.getElementById("modal-telegram")); window.modals.telegram = new Modal(document.getElementById("modal-telegram"));
} }

View File

@ -634,6 +634,13 @@ export class settingsList {
} }
}); });
private _showLogs = () => _get("/logs", null, (req: XMLHttpRequest) => {
if (req.readyState == 4 && req.status == 200) {
(document.getElementById("log-area") as HTMLPreElement).textContent = req.response["log"] as string;
window.modals.logs.show();
}
});
constructor() { constructor() {
this._sections = {}; this._sections = {};
this._buttons = {}; this._buttons = {};
@ -645,7 +652,7 @@ export class settingsList {
}; };
this._saveButton.onclick = this._save; this._saveButton.onclick = this._save;
document.addEventListener("settings-requires-restart", () => { this._needsRestart = true; }); document.addEventListener("settings-requires-restart", () => { this._needsRestart = true; });
document.getElementById("settings-logs").onclick = this._showLogs;
const advancedEnableToggle = document.getElementById("settings-advanced-enabled") as HTMLInputElement; const advancedEnableToggle = document.getElementById("settings-advanced-enabled") as HTMLInputElement;
advancedEnableToggle.onchange = () => { advancedEnableToggle.onchange = () => {
document.dispatchEvent(new CustomEvent("settings-advancedState", { detail: advancedEnableToggle.checked })); document.dispatchEvent(new CustomEvent("settings-advancedState", { detail: advancedEnableToggle.checked }));

View File

@ -107,6 +107,7 @@ declare interface Modals {
discord: Modal; discord: Modal;
matrix: Modal; matrix: Modal;
sendPWR?: Modal; sendPWR?: Modal;
logs: Modal;
} }
interface Invite { interface Invite {