diff --git a/factoriocp.conf.sample b/factoriocp.conf.sample index c6fd02b..0ea2366 100644 --- a/factoriocp.conf.sample +++ b/factoriocp.conf.sample @@ -12,6 +12,7 @@ static_files=/path/to/static/files host=localhost port=8000 debug=True +fqdn=factorio.socialnerds.org [factorio] path=/path/to/factorio/servers diff --git a/factoriocp.py b/factoriocp.py index 28fc7e8..7894c25 100644 --- a/factoriocp.py +++ b/factoriocp.py @@ -41,15 +41,16 @@ def log_in(username, password): # get a list of server dicts def get_servers(): pass - return [{ "name": "Creative fun", "version": "0.14.20", "status": "online" }, - { "name": "Mad enemies", "version": "0.14.19", "status": "offline" }] + return [{ "name": "Creative fun", "version": "0.14.20", "status": "online", "port": "43564" }, + { "name": "Mad enemies", "version": "0.14.19", "status": "offline", "port": "65432" }, + { "name": "Mad enemies2", "version": "0.14.19", "status": "offline", "port": "65431" }] # routing # render main page @get('/') -def home(): +def view_home(): username = logged_in() message = request.get_cookie(config['DEFAULT']['cookie_name'] + "_message", secret=config['DEFAULT']['cookie_secret']) @@ -70,7 +71,7 @@ def home(): # get login credentials @post('/login') -def post_login(): +def login(): username = request.forms.get('username') password = request.forms.get('password') if log_in(username, password): @@ -90,7 +91,6 @@ def post_login(): # delete cookie @get('/logout') -@get('/logout/') def logout(): if logged_in(): response.delete_cookie(config['DEFAULT']['cookie_name']) @@ -108,6 +108,42 @@ def logout(): def send_static(filename): return static_file(filename, root=config['DEFAULT']['static_files']) +# render server page +@get('/server/') +def view_server(port): + username = logged_in() + message = request.get_cookie(config['DEFAULT']['cookie_name'] + "_message", + secret=config['DEFAULT']['cookie_secret']) + if username: + servers = get_servers() + server = [ server for server in servers if int(server['port']) == int(port) ] + if server: + return template('server', + app_name=config['DEFAULT']['app_name'], + server=server[0], + username=username, + fqdn=config['server']['fqdn'], + message=message) + else: + message = { "message": "Server does not exist", "alert": "danger" } + response.set_cookie(config['DEFAULT']['cookie_name'] + "_message", + message, + secret=config['DEFAULT']['cookie_secret'], + max_age=5, + path="/") + redirect("/") + else: + redirect("/") + + +# create new server +@get('/create') +def create_server(): + pass + + + + # run webserver if __name__ == "__main__": diff --git a/static/favicon.ico b/static/favicon.ico index d6bb62b..6fd60a6 100644 Binary files a/static/favicon.ico and b/static/favicon.ico differ diff --git a/views/default.tpl b/views/default.tpl index f5027f5..56305e1 100644 --- a/views/default.tpl +++ b/views/default.tpl @@ -1,71 +1,66 @@ - - - - - - - - - - +%include('header.tpl', app_name=app_name, message=message) + +
+
+
+

Servers

+
+
+
+ + +
+
+
+

Control your Factorio game servers from here.

- {{ app_name }} - - - - - - - - - - -
-

- %if message: -

+ + + + + + + + + + + + %for server in servers: + %if server['status'] == "online": + + + + + + + + %else: + + + + + + + %end -

- - - -
-
-

{{ app_name }}

-
-

{{ username }} (logout)

-

This is your Factorio server control panel.

-

It is free software and its code is hosted here.

- - -

Servers

-
- %for server in servers: - %if server['status'] == "online": -

{{ server['name'] }} {{ server['status'] }}

- %else: -

{{ server['name'] }} {{ server['status'] }}

%end - Version: {{ server['version'] }} -

- %end -
- -
-
- factoriocp v0.1 -
-
- - - - - - - - - + +
NameVersionPortStatusActions
{{ server['name'] }}{{ server['version'] }}{{ server['port'] }}{{ server['status'] }} + Stop + Edit +
{{ server['name'] }}{{ server['version'] }}{{ server['port'] }}{{ server['status'] }} + Start + Delete + Edit +
+
+%include('footer.tpl', username=username) diff --git a/views/footer.tpl b/views/footer.tpl new file mode 100644 index 0000000..b9f15f9 --- /dev/null +++ b/views/footer.tpl @@ -0,0 +1,17 @@ +
+
+
+ factoriocp v0.1 +
+
+
+ + + + + + + + + diff --git a/views/header.tpl b/views/header.tpl new file mode 100644 index 0000000..75dabb8 --- /dev/null +++ b/views/header.tpl @@ -0,0 +1,31 @@ + + + + + + + + + + + + {{ app_name }} + + + + + + + + + +
+

+ %if message: +

+ %end +

+
diff --git a/views/login.tpl b/views/login.tpl index 568be9b..3cea904 100644 --- a/views/login.tpl +++ b/views/login.tpl @@ -20,15 +20,7 @@ -
- - %if message: - - %end -
+
- - - -
+
diff --git a/views/server.tpl b/views/server.tpl new file mode 100644 index 0000000..e9b9b27 --- /dev/null +++ b/views/server.tpl @@ -0,0 +1,98 @@ +%include('header.tpl', app_name=app_name, message=message) + +
+
+
+ %if server['status'] == "online": +

{{ server['name'] }}Online

+ %else: +

{{ server['name'] }}Offline

+ %end +
+
+
+ + +
+
+
+

Some fon server description goes here.

+ + + + + + + + %if server['status'] == "online": + + + + + + %else: + + + + + + %end +
AddressVersionActions
{{ fqdn }}:{{ server['port'] }}{{ server['version'] }} + Stop +
{{ fqdn }}:{{ server['port'] }}{{ server['version'] }} + Start + Delete +
+ +

+

Settings

+
+
+ +
+

+ +

+

Backups

+
+
+ +
+

+ +

+

Mods

+
+
+ +
+

+ +

+

Screenshots

+
+
+ +
+

+ +

+

Console

+
+
+ +
+

+ + +
+%include('footer.tpl', username=username)