Kill user session button added
This commit is contained in:
parent
05d7462a79
commit
696884ab28
3 changed files with 49 additions and 1 deletions
|
@ -91,6 +91,14 @@ new Vue({
|
|||
],
|
||||
rows: [],
|
||||
actions: [
|
||||
{
|
||||
name: 'u-kill',
|
||||
label: 'Kill',
|
||||
class: 'btn-warning',
|
||||
showWhenStatus: 'Connected',
|
||||
showForServerRole: ['master', 'slave'],
|
||||
showForModule: ["core"],
|
||||
},
|
||||
{
|
||||
name: 'u-change-password',
|
||||
label: 'Change password',
|
||||
|
@ -186,6 +194,15 @@ new Vue({
|
|||
created() {
|
||||
var _this = this;
|
||||
|
||||
_this.$root.$on('u-kill', function (msg) {
|
||||
var data = new URLSearchParams();
|
||||
data.append('username', _this.username);
|
||||
axios.request(axios_cfg('api/user/kill', data, 'form'))
|
||||
.then(function(response) {
|
||||
_this.getUserData();
|
||||
_this.$notify({title: 'User ' + _this.username + ' session killed!', type: 'warn'})
|
||||
});
|
||||
})
|
||||
_this.$root.$on('u-revoke', function (msg) {
|
||||
var data = new URLSearchParams();
|
||||
data.append('username', _this.username);
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>ovpn-admin</title>
|
||||
<title>OpenVPN Admin Panel</title>
|
||||
<meta http-equiv="refresh" content="30" />
|
||||
</head>
|
||||
<body>
|
||||
<script src="dist/style.min.js"></script>
|
||||
|
@ -25,6 +26,19 @@
|
|||
</div>
|
||||
<template slot="table-row" slot-scope="props">
|
||||
<span v-if="props.column.field == 'actions'">
|
||||
<button
|
||||
class="btn btn-sm el-square modal-el-margin"
|
||||
type="button"
|
||||
:title="action.label"
|
||||
:data-username="props.row.Identity"
|
||||
:data-name="action.name"
|
||||
:data-text="action.label"
|
||||
@click.left.stop="rowActionFn"
|
||||
v-for="action in actions"
|
||||
v-bind:class="action.class"
|
||||
v-if="action.showWhenStatus == props.row.ConnectionStatus">
|
||||
{{ action.label }}
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-sm el-square modal-el-margin"
|
||||
type="button"
|
||||
|
|
17
main.go
17
main.go
|
@ -238,6 +238,11 @@ func (oAdmin *OvpnAdmin) userCreateHandler(w http.ResponseWriter, r *http.Reques
|
|||
}
|
||||
}
|
||||
|
||||
func (oAdmin *OvpnAdmin) userKillHandler(w http.ResponseWriter, r *http.Request) {
|
||||
r.ParseForm()
|
||||
fmt.Fprintf(w, "%s", oAdmin.userKill(r.FormValue("username")))
|
||||
}
|
||||
|
||||
func (oAdmin *OvpnAdmin) userRevokeHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if oAdmin.role == "slave" {
|
||||
http.Error(w, `{"status":"error"}`, http.StatusLocked)
|
||||
|
@ -426,6 +431,7 @@ func main() {
|
|||
http.Handle("/", static)
|
||||
http.HandleFunc("/api/server/settings", ovpnAdmin.serverSettingsHandler)
|
||||
http.HandleFunc("/api/users/list", ovpnAdmin.userListHandler)
|
||||
http.HandleFunc("/api/user/kill", ovpnAdmin.userKillHandler)
|
||||
http.HandleFunc("/api/user/create", ovpnAdmin.userCreateHandler)
|
||||
http.HandleFunc("/api/user/change-password", ovpnAdmin.userChangePasswordHandler)
|
||||
http.HandleFunc("/api/user/revoke", ovpnAdmin.userRevokeHandler)
|
||||
|
@ -867,6 +873,17 @@ func (oAdmin *OvpnAdmin) getUserStatistic(username string) clientStatus {
|
|||
return clientStatus{}
|
||||
}
|
||||
|
||||
func (oAdmin *OvpnAdmin) userKill(username string) string {
|
||||
userConnected, userConnectedTo := isUserConnected(username, oAdmin.activeClients)
|
||||
if userConnected {
|
||||
oAdmin.mgmtKillUserConnection(username, userConnectedTo)
|
||||
fmt.Printf("User \"%s\" session killed", username)
|
||||
return fmt.Sprintf("User \"%s\" session killed", username)
|
||||
}
|
||||
fmt.Printf("User \"%s\" is not connected", username)
|
||||
return fmt.Sprintf("User \"%s\" is not connected", username)
|
||||
}
|
||||
|
||||
func (oAdmin *OvpnAdmin) userRevoke(username string) string {
|
||||
if checkUserExist(username) {
|
||||
// check certificate valid flag 'V'
|
||||
|
|
Loading…
Reference in a new issue