Skip to content

Commit b5d0281

Browse files
Thomas Kpenouclaude
authored andcommitted
docs: update README for fork, Python 3.12 and clean up dead links
- Add fork notice with credits to original author bugy/script-server - Remove dead links: Travis CI badge (404), Gitter badge/room (shut down in 2023), demo server script-server.net (unreachable) - Fix double-parenthesis typo in XSS wiki link (line 132 in original) - Update requirements: Python 3.9+ minimum (3.12 recommended), tornado >=6.1, requests >=2.28; document optional ldap3/bcrypt deps with install instructions - Add "What's new in this fork" section documenting 2025-05-27 changes - Update contribution section to point to this fork's issue tracker Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 4b78650 commit b5d0281

1 file changed

Lines changed: 80 additions & 61 deletions

File tree

README.md

Lines changed: 80 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
[![Build Status](https://travis-ci.com/bugy/script-server.svg?branch=master&status=passed)](https://travis-ci.com/bugy/script-server) [![Gitter](https://badges.gitter.im/script-server/community.svg)](https://gitter.im/script-server/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
1+
> **Fork** — This is a community-maintained fork of [bugy/script-server](https://github.com/bugy/script-server) (original author: [@bugy](https://github.com/bugy)). The upstream project is no longer actively maintained. See [What's new in this fork](#whats-new-in-this-fork) for the changes made here.
22
33
# script-server
4-
Script-server is a Web UI for scripts.
4+
5+
Script-server is a Web UI for scripts.
56

67
As an administrator, you add your existing scripts into Script server and other users would be able to execute them via a web interface.
78
The UI is very straightforward and can be used by non-tech people.
89

9-
No script modifications are needed - you configure each script in Script server and it creates the corresponding UI with parameters and takes care of validation, execution, etc.
10-
11-
[DEMO server](https://script-server.net/)
10+
No script modifications are needed - you configure each script in Script server and it creates the corresponding UI with parameters and takes care of validation, execution, etc.
1211

1312
[Admin interface screenshots](https://github.com/bugy/script-server/wiki/Admin-interface)
1413

@@ -32,15 +31,31 @@ or [how to configure the server](https://github.com/bugy/script-server/wiki/Serv
3231

3332
### Server-side
3433

35-
Python 3.7 or higher with the following modules:
34+
Python 3.9 or higher (Python 3.12 recommended) with the following modules:
35+
36+
* tornado >= 6.1
37+
* requests >= 2.28
38+
39+
Optional modules (required only for specific features):
40+
41+
| Module | Feature |
42+
|--------|---------|
43+
| `ldap3 >= 2.9` | LDAP authentication |
44+
| `bcrypt >= 4.0` | bcrypt password support in htpasswd auth |
3645

37-
* Tornado 5 / 6
46+
Install all dependencies at once:
47+
```bash
48+
pip install -r requirements.txt
49+
```
3850

39-
Some features can require additional modules. Such requirements are specified in a corresponding feature description.
51+
Install with optional dependencies:
52+
```bash
53+
pip install -r requirements.txt ldap3>=2.9 bcrypt>=4.0
54+
```
4055

4156
OS support:
4257

43-
- Linux (main). Tested and working on Debian 10,11
58+
- Linux (main). Tested and working on Debian 10, 11
4459
- Windows (additional). Light testing
4560
- macOS (additional). Light testing
4661

@@ -52,104 +67,108 @@ Internet connection is **not** needed. All the files are loaded from the server.
5267

5368
## Installation
5469
### For production
55-
1. Download script-server.zip file from [Latest release](https://github.com/bugy/script-server/releases/latest) or [Dev release](https://github.com/bugy/script-server/releases/tag/dev)
56-
2. Create script-server folder anywhere on your PC and extract zip content to this folder
70+
1. Download script-server.zip from [Latest release](https://github.com/bugy/script-server/releases/latest) (last upstream release: v1.18.0)
71+
2. Create a script-server folder anywhere on your machine and extract the zip content into it
72+
3. Install dependencies: `pip install -r requirements.txt`
5773

58-
(For detailed steps on linux with virtualenv, please see [Installation guide](https://github.com/bugy/script-server/wiki/Installing-on-virtualenv-(linux)))
74+
For detailed steps on Linux with virtualenv, see the [Installation guide](https://github.com/bugy/script-server/wiki/Installing-on-virtualenv-(linux)).
5975

60-
##### As a docker container
61-
Please find pre-built images here: https://hub.docker.com/r/bugy/script-server/tags
62-
For the usage please check [this ticket](https://github.com/bugy/script-server/issues/171#issuecomment-461620836)
76+
##### As a Docker container
77+
Pre-built images are available on [Docker Hub](https://hub.docker.com/r/bugy/script-server/tags).
78+
For usage instructions, see [this ticket](https://github.com/bugy/script-server/issues/171#issuecomment-461620836).
6379

6480
### For development
65-
1. Clone/download the repository
66-
2. Run 'tools/init.py --no-npm' script
81+
1. Clone this repository
82+
2. Run `tools/init.py --no-npm`
6783

68-
`init.py` script should be run after pulling any new changes
84+
`init.py` should be run after pulling any new changes.
6985

70-
If you are making changes to web files, use `npm run build` or `npm run serve`
86+
If you are making changes to web files, use `npm run build` or `npm run serve`.
7187

72-
### A issue running on OpenBSD and maybe other UNIX systems
73-
See [A issue running on OpenBSD and maybe other UNIX systems](https://github.com/bugy/script-server/wiki/OpenBSD-process-termination-issues).
88+
### A note on OpenBSD and some other UNIX systems
89+
See [OpenBSD process termination issues](https://github.com/bugy/script-server/wiki/OpenBSD-process-termination-issues).
7490

7591

7692
## Setup and run
77-
1. Create configurations for your scripts in *conf/runners/* folder (see [script config page](https://github.com/bugy/script-server/wiki/Script-config) for details)
78-
2. Launch launcher.py from script-server folder
79-
* Windows command: launcher.py
80-
* Linux command: ./launcher.py
93+
1. Create configurations for your scripts in the *conf/runners/* folder (see [script config page](https://github.com/bugy/script-server/wiki/Script-config) for details)
94+
2. Launch launcher.py from the script-server folder
95+
* Windows: `launcher.py`
96+
* Linux/macOS: `./launcher.py`
8197
3. Add/edit scripts on the admin page
8298

8399
By default, the server will run on http://localhost:5000
84100

85101
### Server config
86-
All the features listed above and some other minor features can be configured in *conf/conf.json* file.
87-
It is allowed not to create this file. In this case, default values will be used.
88-
See [server config page](https://github.com/bugy/script-server/wiki/Server-configuration) for details
102+
All the features listed above and some other minor features can be configured in *conf/conf.json*.
103+
It is allowed not to create this filedefault values will be used in that case.
104+
See [server config page](https://github.com/bugy/script-server/wiki/Server-configuration) for details.
89105

90106
### Admin panel
91-
Admin panel is accessible on admin.html page (e.g. http://localhost:5000/admin.html)
107+
Admin panel is accessible at admin.html (e.g. http://localhost:5000/admin.html)
92108

93109
## Logging
94110

95-
All web/operating logs are written to the *logs/server.log*
96-
Additionally each script logs are written to separate file in *logs/processes*. File name format is
97-
{script\_name}\_{client\_address}\_{date}\_{time}.log.
111+
All web/operating logs are written to *logs/server.log*.
112+
Each script's logs are written to a separate file in *logs/processes*. File name format:
113+
`{script_name}_{client_address}_{date}_{time}.log`
98114

99115
## Testing/demo
100116

101-
Script-server has bundled configs/scripts for testing/demo purposes, which are located in samples folder. You can
102-
link/copy these config files (samples/configs/\*.json) to server config folder (conf/runners).
117+
Script-server has bundled configs/scripts for testing/demo purposes, located in the samples folder. You can
118+
link/copy these config files (`samples/configs/*.json`) to the server config folder (`conf/runners`).
103119

104120
## Security
105121

106-
I do my best to make script-server secure and invulnerable to attacks, injections or user data security. However to be
107-
on the safe side, it's better to run Script server only on a trusted network.
108-
Any security leaks report or recommendations are greatly appreciated!
122+
Script-server is designed to be secure and invulnerable to attacks, injections or user data leaks. However, to be
123+
on the safe side, it's better to run Script server only on a trusted network.
109124

110125
### Shell commands injection
111126

112127
Script server guarantees that all user parameters are passed to an executable script as arguments and won't be executed
113-
under any conditions. There is no way to inject fraud command from a client-side. However, user parameters are not
114-
escaped, so scripts should take care of not executing them also (general recommendation for bash is at least to wrap all
115-
arguments in double-quotes). It's recommended to use typed parameters when appropriate, because they are validated for
116-
proper values and so they are harder to be subject of commands injection. Such attempts would be easier to detect also.
128+
under any conditions. There is no way to inject a fraudulent command from the client side. However, user parameters are not
129+
escaped, so scripts should take care of not executing them directly (the general recommendation for bash is to wrap all
130+
arguments in double-quotes). Using typed parameters is recommended when appropriate, as they are validated for
131+
proper values and are harder to exploit.
117132

118-
_Important!_ Command injection protection is fully supported for Linux, but _only_ for .bat and .exe files on Windows
133+
_Important!_ Command injection protection is fully supported for Linux, but _only_ for .bat and .exe files on Windows.
119134

120135
### XSS and CSRF
121136

122-
_(v1.0 - v1.16)_
137+
_(v1.0 - v1.16)_
123138
Script server _is_ vulnerable to these attacks.
124139

125-
_(v1.17+)_
126-
Script server is protected against XSRF attacks via a special token.
140+
_(v1.17+)_
141+
Script server is protected against XSRF attacks via a special token.
127142
XSS protection: the code is written according to
128143
[OWASP Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html)
129144
and the only **known** vulnerabilities are:
130145

131146
* `output_format`=`html_iframe`, see the reasoning in the
132-
linked [Wiki page]((https://github.com/bugy/script-server/wiki/Script-config#output_format))
147+
linked [Wiki page](https://github.com/bugy/script-server/wiki/Script-config#output_format)
133148

134-
## Contribution
149+
## What's new in this fork
150+
151+
### 2025-05-27 — Python 3.12 compatibility
152+
153+
**Python version support:** updated minimum from Python 3.7 (end-of-life since June 2023) to **Python 3.9+** (Python 3.12 recommended).
135154

136-
If you like the project and think you could help with making it better, there are many ways you can do it:
155+
**Fixes:**
156+
- Replaced invalid string escape sequences (`\d`, `\w`, `\/`, `\ `, `\|`, `\p`, `\[`, `\.`) with raw strings (`r'...'`) in test files — these would become `SyntaxError` in Python 3.14
157+
- Replaced deprecated `thread.setDaemon(True)` with `thread.daemon = True` in `user_file_storage.py` and `auth_abstract_oauth.py`
137158

138-
- Create a new issue for new feature proposal or a bug
139-
- Implement existing issues (there are quite some of them: frontend/backend, simple/complex, choose whatever you like)
140-
- Help with improving the documentation
141-
- Set up a demo server
142-
- Spread a word about the project to your colleagues, friends, blogs or any other channels
143-
- Any other things you could imagine
159+
**Dependencies (`requirements.txt`):**
160+
- Raised Tornado floor from `>=4` to `>=6.1` (Tornado 4/5 are incompatible with Python 3.12)
161+
- Added `requests>=2.28` as an explicit dependency (used by HTTP notification destinations)
162+
- Documented optional dependencies (`ldap3`, `bcrypt`) with install instructions
163+
164+
## Contribution
144165

145-
Any contribution would be of great help and I will highly appreciate it!
146-
If you have any questions, please create a new issue, or contact me via buggygm@gmail.com
166+
If you find a bug or want to propose a feature, please [open an issue](https://github.com/knep/script-server/issues) on this fork.
147167

148-
## Asking questions
149-
If you have any questions, feel free to:
150-
- Ask in gitter: https://gitter.im/script-server/community
151-
- or [create a ticket](https://github.com/bugy/script-server/issues/new)
152-
- or contact me via email: buggygm@gmail.com (for some non-shareable questions)
168+
Contributions are welcome:
169+
- Bug reports and feature proposals
170+
- Pull requests (fixes, features, documentation)
171+
- Any other improvements you can think of
153172

154173
## Special thanks
155174
![JetBrains logo](https://github.com/JetBrains/logos/blob/master/web/jetbrains/jetbrains.svg)

0 commit comments

Comments
 (0)