added base UI changes

This commit is contained in:
2023-03-02 23:30:58 +00:00
parent 66d53490c7
commit df911ee456
3 changed files with 415 additions and 240 deletions

View File

@@ -56,6 +56,15 @@ type ServerSpecs struct {
GPU string `form:"GPU" binding:"required" bson:GPU` GPU string `form:"GPU" binding:"required" bson:GPU`
} }
// BarrierIP Barrier connection information
type BarrierIP struct {
ID string `bson: ID`
BarrierIP string `form:"BarrierIP" binding:"required" bson:hostname`
MachineName string `form:"MachineName" binding:"required" bson:hostname`
UserID string `json:"UserID"`
User Users `gorm:"foreignKey:UserID;references:UserID" json:"ServerInformation"`
}
// CreateTables CreateDB Add tables to the database // CreateTables CreateDB Add tables to the database
func CreateTables(db *gorm.DB) (*gorm.DB, error) { func CreateTables(db *gorm.DB) (*gorm.DB, error) {
// Creates table to store login sessions // Creates table to store login sessions
@@ -66,6 +75,8 @@ func CreateTables(db *gorm.DB) (*gorm.DB, error) {
db.AutoMigrate(GameSession{}) db.AutoMigrate(GameSession{})
// Creates table of type ServerSpecs // Creates table of type ServerSpecs
db.AutoMigrate(ServerSpecs{}) db.AutoMigrate(ServerSpecs{})
// Creates table of type BarrierIP
db.AutoMigrate(BarrierIP{})
// returns variable DB of type *gorm.DB and error // returns variable DB of type *gorm.DB and error
// which is nil at the current moment // which is nil at the current moment
return db, nil return db, nil
@@ -348,3 +359,60 @@ func GetUserInformation(db *gorm.DB, SessionID string) (*Users, error) {
return nil, errors.New("Session not found. ") return nil, errors.New("Session not found. ")
} }
// AddBarrierIP Adds barrierIP information to barrier table
func AddBarrierIP(db *gorm.DB, SessionID string, barrierIP string, MachineName string) (*BarrierIP, error) {
// Get User Information
user, err := GetUserInformation(db, SessionID)
if err != nil {
return nil, err
}
// Check if the barrier IP exists
exists, err := CheckIfBarrierAddressExists(db, barrierIP)
if err != nil {
return nil, err
}
if exists == false {
var NewBarrierIP BarrierIP
NewBarrierIP.BarrierIP = barrierIP
NewBarrierIP.UserID = user.UserID
NewBarrierIP.MachineName = MachineName
// creates barrier table with info
db.Create(NewBarrierIP)
return &NewBarrierIP, nil
}
return nil, errors.New("BarrierIP already exists. ")
}
// CheckIfBarrierAddressExists Check if the barrier ip
// address with port exists
func CheckIfBarrierAddressExists(db *gorm.DB, barrierIP string) (bool, error) {
BarrierRows, err := db.Model(&BarrierIP{}).Where("barrier_ip = ? ", barrierIP).Rows()
if err != nil {
return false, err
}
defer BarrierRows.Close()
// Checks if there is more than one entry and returns
// true if that entry exists.
if BarrierRows.Next() {
return true, nil
}
return false, nil
}
// RemoveBarrierIP Remove barrier row based on the IP address provided
func RemoveBarrierIP(db *gorm.DB, barrierIP string) error {
// Delete session from the database
err := db.Where("barrier_ip = ?", barrierIP).Delete(BarrierIP{})
if err != nil {
return err.Error
}
return nil
}

View File

@@ -181,6 +181,44 @@ func Server(port string) error {
} }
}) })
// route to add barrier IP information
r.POST("/AddBarrierIP", func(c *gin.Context) {
// Get client session ID
session, err := c.Cookie("SessionID")
if err != nil {
c.Redirect(http.StatusFound, "/login")
}
barrierIP := c.PostForm("BarrierIP")
MachineName := c.PostForm("MachineName")
BarrierIP, err := AddBarrierIP(connect, session, barrierIP, MachineName)
if err != nil {
c.String(http.StatusOK, fmt.Sprint(err))
}
c.JSON(http.StatusOK, BarrierIP)
})
// Removes barrier ip information from the table
// based on the barrier ip address provided.
r.POST("RemoveBarrierIP", func(c *gin.Context) {
// Get client session ID
_, err = c.Cookie("SessionID")
if err != nil {
c.Redirect(http.StatusFound, "/login")
}
barrierIP := c.PostForm("BarrierIP")
// Remove Barrier IP
err = RemoveBarrierIP(connect, barrierIP)
if err != nil {
c.String(http.StatusOK, fmt.Sprint(err))
}
c.String(http.StatusOK, "BarrierIP removed successfully")
})
go CheckIfGameSessionIsActiveOrRemove(connect) go CheckIfGameSessionIsActiveOrRemove(connect)
// Run gin server on the specified port // Run gin server on the specified port

View File

@@ -5,7 +5,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin - Free Bulma template</title> <title>Xplane WebRTC</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet">
<!-- Bulma Version 0.9.0--> <!-- Bulma Version 0.9.0-->
@@ -15,8 +15,8 @@
<body> <body>
<!-- START NAV --> <!-- START NAV -->
<nav class="navbar is-white"> <nav class="navbar is-white">
<div class="container"> <div class="container">
<div class="navbar-brand"> <div class="navbar-brand">
<a class="navbar-item brand-text" href="/"> <a class="navbar-item brand-text" href="/">
@@ -40,9 +40,9 @@
</div> </div>
</div> </div>
</nav> </nav>
<!-- END NAV --> <!-- END NAV -->
<div class="container"> <div class="container">
<div class=""> <div class="">
<div class=""> <div class="">
<section class="hero is-info welcome is-small"> <section class="hero is-info welcome is-small">
@@ -59,16 +59,85 @@
</div> </div>
</section> </section>
<section class="info-tiles"> <section class="info-tiles">
<div class="column is-6 row is-multiline">
<iframe src="https://www.youtube.com/embed/WVDSVhMW7o4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen style="width: 100%; height: 100%"></iframe>
</div>
<div class="column is-6 row is-multiline">
<div class="field is-horizontal">
<div class="field-label is-medium">
<label class="label">Barrier IP Address</label>
</div>
<div class="field-body">
<div class="field">
<div class="control">
<input class="input is-medium" type="text" placeholder="Barrier IP address">
</div>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-medium">
<label class="label">Machine Name</label>
</div>
<div class="field-body">
<div class="field">
<div class="control">
<input class="input is-medium" type="text" placeholder="Machine name">
</div>
</div>
</div>
</div>
<center><button class="button is-black" style="font-weight:700">Add Barrier Information</button>
</center>
</div>
<div class="column is-6 row is-multiline">
<div class="card events-card">
<header class="card-header">
<p class="card-header-title">
Barrier Session information
</p>
<a href="#" class="card-header-icon" aria-label="more options">
<span class="icon">
<i class="fa fa-angle-down" aria-hidden="true"></i>
</span>
</a>
</header>
<div class="card-table">
<div class="content">
<table class="table is-fullwidth is-striped">
<tbody>
<tr>
<td width="5%"></td>
<td>Barrier IP address and HostName</td>
<td class="level-right"><a class="button is-small bg-danger"
href="#">Remove</a></td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- <footer class="card-footer">
<a href="#" class="card-footer-item">Add Barrier session</a>
</footer> -->
</div>
</div>
<div class="tile is-ancestor has-text-centered row columns is-multiline"> <div class="tile is-ancestor has-text-centered row columns is-multiline">
{{ range .GameSessions }} {{ range .GameSessions }}
<div class="column is-4 tile is-parent"> <div class="column is-4 tile is-parent">
<article class="tile is-child box"> <article class="tile is-child box">
<p class="title">{{ .Server.GPU }}</p> <p class="title">{{ .Server.GPU }}</p>
<p style="color: #8F99A3; margin-top:-1.25rem; font-weight: 300; font-size: 1.25rem">RAM: {{ .Server.RAM }} MB</p> <p style="color: #8F99A3; margin-top:-1.25rem; font-weight: 300; font-size: 1.25rem">
<p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">Rate: {{ .Rate }}$/hr </p> RAM: {{ .Server.RAM }} MB</p>
<p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">CPU: {{ .Server.CPU }} </p> <p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">Rate: {{ .Rate }}$/hr
<p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">Disk: {{ .Server.Disk }} MB</p> </p>
<p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">Platform: {{ .Server.Platform }}</p> <p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">CPU: {{ .Server.CPU }}
</p>
<p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">Disk: {{ .Server.Disk }}
MB</p>
<p style="color: #8F99A3; font-weight: 300; font-size: 1.25rem">Platform: {{
.Server.Platform }}</p>
<br> <br>
<a href="{{ .Link }}" class="button is-block is-success is-fullwidth is-medium">Play</a> <a href="{{ .Link }}" class="button is-block is-success is-fullwidth is-medium">Play</a>
</article> </article>
@@ -78,8 +147,8 @@
</section> </section>
</div> </div>
</div> </div>
</div> </div>
<script async type="text/javascript" src="assets/js/bulma.js"></script> <script async type="text/javascript" src="assets/js/bulma.js"></script>
</body> </body>
</html> </html>