Merge branch 'develop' into rework-ui

# Conflicts:
#	package.json
#	ui/App/components/Header.jsx
#	ui/App/components/Mods/ModLoadSave.jsx
#	ui/App/components/Mods/ModManager.jsx
#	ui/App/components/Mods/ModOverview.jsx
#	ui/App/components/Mods/ModUpload.jsx
#	ui/App/components/Mods/packs/ModPackOverview.jsx
#	ui/App/components/Mods/search/ModSearch.jsx
#	ui/App/components/ModsContent.jsx
#	ui/App/components/Saves/SavesList.jsx
#	ui/App/components/ServerCtl/ServerCtl.jsx
#	ui/App/components/Sidebar.jsx
#	ui/App/components/Users/AddUser.jsx
#	ui/App/components/Users/UserTable.jsx
#	ui/index.js
#	ui/index.scss
#	ui/js/customSwal.js
#	ui/scss/_variables.scss
#	ui/scss/customizations/adminLTE3-skin-blue.scss
#	ui/scss/customizations/sidebar.scss
#	ui/scss/customizations/sweetalert.scss
This commit is contained in:
Jan Naahs 2020-08-21 22:40:45 +02:00
commit dc99208fdf
10 changed files with 373 additions and 99 deletions

View File

@ -22,7 +22,7 @@ jobs:
go: 1.x
os: linux
before_install:
- curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
- curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
- sudo apt-get install -y nodejs
script:
- make gen_release
@ -37,4 +37,4 @@ jobs:
tags: true
file:
- ~/factorio-server-manager-linux-${TRAVIS_TAG}.zip
- ~/factorio-server-manager-windows-${TRAVIS_TAG}.zip
- ~/factorio-server-manager-windows-${TRAVIS_TAG}.zip

153
CHANGELOG.md Normal file
View File

@ -0,0 +1,153 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Added
- Updated adminLTE to v3 with bootstrap 4. - Thanks to @knoxfighter
- Autostart factorio, when starting the server-manager - Thanks to @Psychomantis71
### Fixed
- Console page is know working correctly (directly reloading still bugged until new UI) - Thanks to @jannaahs
## [0.8.2] - 2020-01-08
Many bugfixes and a few small features in this release.
- Adds a flag for a custom glibc version, required on some distros such as CentOS
- bugfixes with file handling
- UI fixes and improvements
- CI bug fixes and build improvements
- and more bugfixes
Special thanks to @knoxfighter for all the contributions.
### Added
- Support for 0.17 server-adminlist.json
- Support for custom glibc location (RHEL/CENTOS)
### Changed
- Use bootstrap-fileinputs for savefile upload
- Login-Page uses bootstrap 4
### Fixed
- Login Page Design
- Sweetalert2 API changes
- allow_commands not misinterpreted as boolean anymore
- Fixed some filepaths on windows
- Fixed hardcoded Settings Path
- Fixed Upgrading, Removing Mods on Windows results in error
## [0.8.1] - 2019-03-01
### Fixed
- Fixed redirect, when not logged in
- Fixed login page completely white
## [0.8.0] - 2019-02-27
This release contains many bug fixes and features. Thanks to @knoxfighter @sean-callahan for the contributions!
- Fixes error in Factorio 0.17 saves
- Refactors and various bug fixes
## [0.7.5] - 2018-08-08
## Fixed
- fixes crash when mods have no basemodversion defined
## [0.7.4] - 2018-08-04
- Ability to auto download mods used in a save file courtesy @knoxfighter
- Fix bug in mod logging courtesy @c0nnex
## [0.7.3] - 2018-06-02
- Fixes fields in the settings dialog unable to be set to false. Courtesy @winadam.
- Various bugfixes in the mod settings page regarding version compatability. Courtesy @knoxfighter.
## [0.7.2] - 2018-05-02
### Fixed
- Fixes an error when searching in the mod portal.
## [0.7.1] - 2018-02-11
### Fixed
- Fixes an error in the configuration form where some fields were not editable.
## [0.7.0] - 2018-01-21
- Rewritten mods section now supporting installing mods directly from the Factorio mod portal and many other features courtesy @knoxfighter
- Various bug fixes
## [0.6.1] - 2017-12-22
- Adds the ability to specify the IP address for the Factorio game server to bind too.
- Updates the --rcon-password flag
- Small fixes
## [0.6.0] - 2017-01-25
This release adds a console feature using rcon to send commands and chat from the management interface.
## [0.5.2] - 2016-11-01
This release moves the server-settings.json config file. It will now save the file in the factorio/config directory.
## [0.5.1] - 2016-10-31
- Fixed bug where server-settings.json file is overwritten with default settings
- Started adding UI for editing the server-settings.json file
## [0.5.0] - 2016-10-11
- This release adds beta support for Windows users.
- Various updates for Factorio 0.14 are also included.
## [0.4.3] - 2016-09-15
This release has some small bug fixes in order to support Factorio server 0.14.
- Made the --latency-ms optional as it is removed in version 0.14
- Improved some error handling messages when starting the server.
## [0.4.2] - 2016-07-13
This release fixes a bug with Factorio 0.13 where the full path for save files must be specified when launching the server.
## [0.4.1] - 2016-05-15
This release fixes a bug where the UI reports an error when the Factorio Server was successfully started.
## [0.4.0] - 2016-05-15
### New features
- Abillity to create modpacks for easy distribution of mods
- Multiple users are now supported, create and delete users in the settings menu
### Features
- Allows control of the Factorio Server, starting and stopping the Factorio binary.
- Allows the management of save files, upload, download and delete saves.
- Manage installed mods, upload new ones, delete uneeded mods. Enable or disable individual mods.
- Allow viewing of the server logs and current configuration.
- Authentication for protecting against unauthorized users
- Available as a Docker container
- Abillity to create modpacks for easy distribution of mods
- Multiple users are now supported, create and delete users in the settings menu
## [0.3.1] - 2016-05-03
### Fixed
Fixes bug in #24 where Docker container cannot find conf.json file.
## [0.3.0] - 2016-05-01
### New features
- This release adds an authentication feature in Factorio Server Manager.
- Now able to be installed as a Docker container.
- Admin user credentials are configured in the conf.json file included in the release zip file.
### Features
- Allows control of the Factorio Server, starting and stopping the Factorio binary.
- Allows the management of save files, upload, download and delete saves.
- Manage installed mods, upload new ones, delete uneeded mods. Enable or disable individual mods.
- Allow viewing of the server logs and current configuration.
- Authentication for protecting against unauthorized users
- Available as a Docker container
## [0.2.0] - 2016-04-27
This release adds the ability to control the Factorio server. Allows stopping and starting of the server binary with advanced options.
### Features
- Allows control of the Factorio Server, starting and stopping the Factorio binary.
- Allows the management of save files, upload, download and delete saves.
- Manage installed mods, upload new ones, delete uneeded mods. Enable or disable individual mods.
- Allow viewing of the server logs and current configuration.
## [0.1.0] - 2016-04-25
First release of Factorio Server Manager
### Features
- Managing save files, create, download, delete saves
- Managing installed mods
- Factorio log tailing
- Factorio server configuration viewing

View File

@ -66,7 +66,10 @@ Usage of ./factorio-server-manager:
Path to the glibc ld.so file (default "/opt/glibc-2.18/lib/ld-2.18.so")
-glibc-lib-loc
Path to the glibc lib folder (default "/opt/glibc-2.18/lib")
-autostart
Autostarts Factorio Server when FSM is starting. Default false [true/false]
(If no IP and/or port provided at startup, it will bind the factorio server to all interfaces
and set the server port to the default 34197, always loads latest save)
Example:
./factorio-server-manager --dir /home/user/.factorio --host 10.0.0.1
@ -100,7 +103,7 @@ All api actions are accessible with the /api route. The frontend is accessible
#### Requirements
+ Go 1.11
+ NodeJS
+ NodeJS >10.13.0
#### Building Releases
Creates a release zip for windows and linux: (this will install the dependencies listed in gopkgdeps)
@ -175,6 +178,7 @@ go build
1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Add your changes a in human readable way into CHANGELOG.md
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

View File

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="./index.css">
</head>
<body class="hold-transition skin-blue sidebar-mini">
<body class="hold-transition skin-blue sidebar-mini layout-fixed ">
<div id="app"></div>
<!-- Main application -->

View File

@ -4,6 +4,55 @@ import (
"testing"
)
// 0.18 Binary seems equal to 0.17 binary, just the default values changed
func Test0_18(t *testing.T) {
file, err := OpenArchiveFile("factorio_save_testfiles/test_0_18.zip", "level.dat")
if err != nil {
t.Fatalf("Error opening level.dat: %s", err)
}
defer file.Close()
var header SaveHeader
err = header.ReadFrom(file)
if err != nil {
t.Fatalf("Error reading header: %s", err)
}
testHeader := SaveHeader{
FactorioVersion: Version{0, 18, 2, 2},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 1,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: false,
AllowNonAdminDebugOptions: true,
LoadedFrom: Version{0, 18, 2},
LoadedFromBuild: 49204,
AllowedCommands: 1,
Mods: []Mod{
{
Version: Version{0, 18, 2},
Name: "base",
},
{
Version: Version{2, 0, 0},
Name: "belt-balancer",
},
{
Version: Version{2, 0, 1},
Name: "train-station-overview",
},
},
}
header.Equals(testHeader, t)
}
func Test0_17(t *testing.T) {
file, err := OpenArchiveFile("factorio_save_testfiles/test_0_17.zip", "level.dat")
if err != nil {
@ -18,29 +67,29 @@ func Test0_17(t *testing.T) {
}
testHeader := SaveHeader{
FactorioVersion: Version{0,17,1,1},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 0,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
FactorioVersion: Version{0, 17, 1, 1},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 0,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
AllowNonAdminDebugOptions: true,
LoadedFrom: Version{0,17,1},
LoadedFromBuild: 43001,
AllowedCommands: 1,
Mods: []Mod {
LoadedFrom: Version{0, 17, 1},
LoadedFromBuild: 43001,
AllowedCommands: 1,
Mods: []Mod{
{
Version: Version{0,2,0},
Name: "Warehousing",
Version: Version{0, 2, 0},
Name: "Warehousing",
},
{
Version: Version{0,17,1},
Name: "base",
Version: Version{0, 17, 1},
Name: "base",
},
},
}
@ -62,29 +111,29 @@ func Test0_16(t *testing.T) {
}
testHeader := SaveHeader{
FactorioVersion: Version{0,16,51,0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 0,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
FactorioVersion: Version{0, 16, 51, 0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 0,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
AllowNonAdminDebugOptions: true,
LoadedFrom: Version{0,16,51},
LoadedFromBuild: 36654,
AllowedCommands: 1,
Mods: []Mod {
LoadedFrom: Version{0, 16, 51},
LoadedFromBuild: 36654,
AllowedCommands: 1,
Mods: []Mod{
{
Version: Version{0,1,3},
Name: "Warehousing",
Version: Version{0, 1, 3},
Name: "Warehousing",
},
{
Version: Version{0,16,51},
Name: "base",
Version: Version{0, 16, 51},
Name: "base",
},
},
}
@ -106,28 +155,28 @@ func Test0_15(t *testing.T) {
}
testHeader := SaveHeader{
FactorioVersion: Version{0,15,40,0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 0,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FactorioVersion: Version{0, 15, 40, 0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 0,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
LoadedFrom: Version{0,15,40},
LoadedFromBuild: 30950,
AllowedCommands: 1,
Mods: []Mod {
SavingReplay: true,
LoadedFrom: Version{0, 15, 40},
LoadedFromBuild: 30950,
AllowedCommands: 1,
Mods: []Mod{
{
Version: Version{0,0,13},
Name: "Warehousing",
Version: Version{0, 0, 13},
Name: "Warehousing",
},
{
Version: Version{0,15,40},
Name: "base",
Version: Version{0, 15, 40},
Name: "base",
},
},
}
@ -149,28 +198,28 @@ func Test0_14(t *testing.T) {
}
testHeader := SaveHeader{
FactorioVersion: Version{0,14,23,0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 1,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FactorioVersion: Version{0, 14, 23, 0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 1,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
LoadedFrom: Version{0,14,23},
LoadedFromBuild: 25374,
AllowedCommands: 1,
Mods: []Mod {
SavingReplay: true,
LoadedFrom: Version{0, 14, 23},
LoadedFromBuild: 25374,
AllowedCommands: 1,
Mods: []Mod{
{
Version: Version{0,0,11},
Name: "Warehousing",
Version: Version{0, 0, 11},
Name: "Warehousing",
},
{
Version: Version{0,14,23},
Name: "base",
Version: Version{0, 14, 23},
Name: "base",
},
},
}
@ -192,28 +241,28 @@ func Test0_13(t *testing.T) {
}
testHeader := SaveHeader{
FactorioVersion: Version{0,13,20,0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 1,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FactorioVersion: Version{0, 13, 20, 0},
Campaign: "transport-belt-madness",
Name: "level-01",
BaseMod: "base",
Difficulty: 1,
Finished: false,
PlayerWon: false,
NextLevel: "",
CanContinue: false,
FinishedButContinuing: false,
SavingReplay: true,
LoadedFrom: Version{0,13,20},
LoadedFromBuild: 24011,
AllowedCommands: 1,
Mods: []Mod {
SavingReplay: true,
LoadedFrom: Version{0, 13, 20},
LoadedFromBuild: 24011,
AllowedCommands: 1,
Mods: []Mod{
{
Version: Version{1,1,0},
Name: "Extra-Virtual-Signals",
Version: Version{1, 1, 0},
Name: "Extra-Virtual-Signals",
},
{
Version: Version{0,13,20},
Name: "base",
Version: Version{0, 13, 20},
Name: "base",
},
},
}
@ -234,7 +283,7 @@ func (h *SaveHeader) Equals(other SaveHeader, t *testing.T) {
if h.BaseMod != other.BaseMod {
t.Errorf("BaseMod not equal: %s --- %s", h.BaseMod, other.BaseMod)
}
if h.Difficulty != other.Difficulty {
if h.Difficulty != other.Difficulty {
t.Errorf("Difficulty not equal: %d --- %d", h.Difficulty, other.Difficulty)
}
if h.Finished != other.Finished {

Binary file not shown.

View File

@ -43,6 +43,27 @@ func randomPort() int {
return rand.Intn(45000-40000) + 40000
}
func autostart() {
var err error
if FactorioServ.BindIP == "" {
FactorioServ.BindIP = "0.0.0.0"
}
if FactorioServ.Port == 0 {
FactorioServ.Port = 34197
}
FactorioServ.Savefile = "Load Latest"
err = FactorioServ.Run()
if err != nil {
log.Printf("Error starting Factorio server: %+v", err)
return
}
}
func initFactorio() (f *FactorioServer, err error) {
f = new(FactorioServer)
f.Settings = make(map[string]interface{})
@ -161,6 +182,10 @@ func initFactorio() (f *FactorioServer, err error) {
}
}
if config.autostart == "true" {
go autostart()
}
return
}

View File

@ -38,6 +38,7 @@ type Config struct {
glibcCustom string
glibcLocation string
glibcLibLoc string
autostart string
}
var (
@ -79,8 +80,10 @@ func parseFlags() {
glibcCustom := flag.String("glibc-custom", "false", "By default false, if custom glibc is required set this to true and add glibc-loc and glibc-lib-loc parameters")
glibcLocation := flag.String("glibc-loc", "/opt/glibc-2.18/lib/ld-2.18.so", "Location glibc ld.so file if needed (ex. /opt/glibc-2.18/lib/ld-2.18.so)")
glibcLibLoc := flag.String("glibc-lib-loc", "/opt/glibc-2.18/lib", "Location of glibc lib folder (ex. /opt/glibc-2.18/lib)")
autostart := flag.String("autostart", "false", "Autostart factorio server on bootup of FSM, default false [true/false]")
flag.Parse()
config.autostart = *autostart
config.glibcCustom = *glibcCustom
config.glibcLocation = *glibcLocation
config.glibcLibLoc = *glibcLibLoc

View File

@ -0,0 +1,34 @@
.card {
.btn-tool {
&:not(.btn-collapse) {
margin-left: 10px;
margin-right: 10px;
}
&.btn-danger {
@extend .btn-danger;
color: white;
}
&.btn-collapse {
display: inline-block;
}
}
.card-header {
display: flex;
align-items: center;
.card-title {
display: inline-block;
}
.card-tools {
top: unset;
}
.btn-tool.active {
@extend .btn-tool:hover
}
}
}

View File

@ -64,7 +64,13 @@ module.exports = (env, argv) => {
}
},
"resolve-url-loader",
"sass-loader?sourceMap"
{
loader: "sass-loader",
options: {
// always make sourceMap. resolver-url-loader is needing it
"sourceMap": true,
}
}
]
},
{