The GOP Server is an open-source web server for Linux and Windows systems that handles HTTP requests to scripts programmed in Go returning the result of the execution to the client. The software is able to, depending on the requested path, return static files or execute Go scripts, which are compiled on the fly and have specific functionality.

Related tags

GOP-Server
Overview

Golang Preprocessor for Web Services - GOP Server

Introduction

The GOP Server is an open-source web server for Linux and Windows systems that handles HTTP requests to scripts programmed in Go returning the result of the execution to the client.

The software is able to, depending on the requested path, return static files or execute Go scripts, which are compiled on the fly and have specific functionality. This functionality is transparently embedded by the GOP Server into the script files to provide them with functions inherent to web application development such as URL parameter management, cookie management, session management, includes a library of basic functions and database support.

GOP scripts are .gop files coded in Go but that follow the GOP specification, a superset of Go defined to integrate the extra functionality provided by the server.

In summary, the server allows to easily develop web applications programmed in Go with the comfort and functionality analogous to PHP, which makes it a multipurpose tool capable of being used both in educational environments to learn the language and in development and production environments for web applications or HTTP APIs.

Disclaimer

The software has just been released an has to be considered as beta, as might contain bugs and/or security vulnerabilities. Audit the code before using it in production enviroments. The software is provided as is without warranty of any kind.

How to run

The steps are simple: install Golang, clone the repository and execute from source (go run).

Then, place your files under the /public directory and access them from http://localhost:80.

Windows Prerequisites

Install Golang from https://golang.org/doc/install

Clone the repository.

Edit the configuration if needed (config/configuration.json)

Open a terminal inside the GOP-Server folder.

Linux Prerequisites

sudo apt update
sudo apt install golang
git clone https://github.com/i-rme/GOP-Server.git
cd GOP-Server
nano config/configuration.json

Linux

sudo go run src/main.go

Windows

go run src/main.go

WSL

wsl sudo go run src/main.go

Optional Settings

Enable database support by setting MySQLSupportEnabled to true in the config file.

Enable privilege downgrade by setting RunScriptsAsNobody to true in the config file.

Important paths

Configuration file: ./config/configuration.json

Default document root: ./public

Default log directory: ./logs

Default uploads directory: ./private/uploads

CMS Example database details: ./public/examples/cms/components/repository.gop

Troubleshooting

Error: CreateFile src/main.go: The system cannot find the path specified. when launching the GOP Server with go run.

Solution: Navigate to the GOP-Server directory before launching. cd GOP-Server

Error: "no required module provides package" when MySQL support is enabled.

Solution: Install the missing package using go get github.com/go-sql-driver/mysql

Error: "listen tcp 127.0.0.1:80: bind: permission denied" when starting the server on linux.

Solution: Run the server with root privileges sudo go run src/main.go

Architecture

Architecture

Owner
Raúl Martínez (RME)
Find me on Twitter @ RME
Raúl Martínez (RME)
:tophat: Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support

Web server with built-in support for QUIC, HTTP/2, Lua, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, BoltDB (built-in, stores the databas

Alexander F. Rødseth 1.8k Jul 13, 2021
A local webserver for developers

devd: a local webserver for developers Install Go to the releases page, download the package for your OS, and copy the binary to somewhere on your PAT

Aldo Cortesi 3.1k Jul 18, 2021
High Performance, Kubernetes Native Object Storage

MinIO Quickstart Guide MinIO is a High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storag

High Performance, Kubernetes Native Object Storage 28.6k Jul 26, 2021
Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

SFTPGo Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support, written in Go. Several storage backends are supporte

Nicola Murino 2.8k Jul 24, 2021
Async management of servers, containers, workstations...basically anything that runs an operating system.

steward What is it ? Command And Control anything asynchronously. Send shell commands to control your servers by passing a message that will have guar

RaaLabs 12 Jul 10, 2021
ready-to-use RTSP / RTMP server and proxy that allows to read, publish and proxy video and audio streams

rtsp-simple-server is a simple, ready-to-use and zero-dependency RTSP / RTMP server and proxy, a software that allows users to publish, read and proxy live video and audio streams. RTSP is a specification that describes how to perform these operations with the help of a server, that is contacted by both publishers and readers and relays the publisher's streams to the readers.

Alessandro Ros 1.4k Jul 19, 2021
A push notification server written in Go (Golang).

A push notification micro server using Gin framework written in Go (Golang)

Bo-Yi Wu 5.6k Jul 21, 2021
A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it. 🎛️

??️ go-feature-flag A feature flag solution, with YAML file in the backend (S3, GitHub, HTTP, local file ...). No server to install, just add a file i

Thomas Poignant 344 Jul 17, 2021
Distributed reliable key-value store for the most critical data of a distributed system

etcd Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in order

etcd-io 36.6k Jul 20, 2021
Fast, multi-platform web server with automatic HTTPS

a project Every site on HTTPS Caddy is an extensible server platform that uses TLS by default. Releases · Documentation · Get Help Menu Features Insta

Caddy 34k Jul 24, 2021
The Galène videoconferencing server

The Galène videoconferencing server

Juliusz Chroboczek 389 Jul 21, 2021
Reverse proxy with automatically obtains TLS certificates from Let's Encrypt

Русскоязычное описание ниже (Russian below). English description Home page: https://github.com/rekby/lets-proxy2 Features: http-01 and tls-alpn-01 val

Timofey Koolin 57 Jul 16, 2021
A simple SHOUTcast server.

DudelDu DudelDu is a simple audio/video streaming server using the SHOUTcast protocol. Features Supports various streaming clients: VLC, ServeStream,

Matthias Ladkau 129 Jul 12, 2021
An open-source, on-prem feature flag solution

An open-source, on-prem feature flag solution Documentation | Features | Values | Examples | Enterprise Flipt is an open source, on-prem feature flag

Mark Phelps 1.5k Jul 16, 2021