meguca

command module
v3.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2016 License: AGPL-3.0, AGPL-3.0-or-later Imports: 1 Imported by: 0

README

GoDoc Build Status Dependency Status

Platforms: Linux, OSX, Win64

License: GNU AGPL

##Features

  • Posts and posting
    • Character by character post updates
    • Can edit entire line while writing
    • Hovering quick reply for post authoring
    • Dice roll, coin flip and eightball commands
    • Desktop notifications, post highlighting and "(You)" on quote
    • Post link hover previews, including cross-thread
    • Inline post link expansion
    • Optional relative post timestamps
    • Image spoilering after closing a post
    • Non-temporal and recursive post linking
    • No posts per thread or threads per board limit
    • Forced anonymity display mode
    • Post hiding
    • Option to display only the last 50 posts in a thread
    • Optional automatic deletion of unused threads and boards
    • Automatic HTTP(S) and magnet URL linkification
    • Automatic quoting of selected text, when quoting a post
    • Automatic quoting of multiline pastes, if line starts with >
  • Files and images
    • JPEG, PNG, APNG, WEBM, MP3, MP4, OGG, PDF, ZIP, 7Z, TAR.GZ and TAR.XZ supported
    • Transparent PNG and GIF thumbnails
    • Configurable size limits
    • Inbuilt reverse image search
    • No file is ever thumbnailed or stored twice, reducing server load and disk space usage
    • Any file already present on the server is "uploaded and thumbnailed" instantly
  • Performance
    • Low memory and CPU usage
    • High vertical and easy horizontal scaling
    • No frameworks and optimized code on both client and server
    • File upload processing written in C with GraphicsMagick and ffmpeg
    • On-demand lazy client module loading and rendering
    • Inbuilt custom LRU cache
  • Client UI
    • Works with all modern and most outdated browsers (such as PaleMoon)
    • Read-only functionality preserved with JavaScript disabled
    • Scrolling compensation prevents post updates from moving the viewport
    • Inbuilt DOM update batching to reduce redraws
    • Multiple themes
    • Custom user-uploaded backgrounds
    • Configurable keyboard shortcuts
    • Work mode aka Boss key
    • Customisable top banner board link list
    • Optional animated GIF thumbnails
    • Settings export/import to/from JSON file
  • Board administration
    • User board creation and configuration panels
  • Internationalization
    • Client almost entirely localized in multiple languages
    • More languages can be added by editing simple JSON files
  • Miscellaneous
    • Documented public JSON API and WebSocket protocol
    • Optional R/a/dio Now Playing banner

##Runtime dependencies

  • RethinkDB. On Linux RethinkDB does not enable a configuration file by default. If you don't want to configure anything, just copy /etc/rethinkdb/default.conf.sample into /etc/rethinkdb/instances.d/instance1.conf.

##Building from source A reference list of commands can be found in docs/installation.md

###All Platforms

###Linux and OSX

  • Install
    • GCC or Clang
    • make
    • pkg-config
    • pthread
    • ffmpeg >= 3.0 libraries (libavcodec, libavutil, libavformat) compiled with:
      • libvpx
      • libvorbis
      • libopus
      • libtheora
      • libx264
      • libmp3lame
    • GraphicsMagick compiler with:
      • zlib
      • libpng
      • libjpeg
      • postscript
    • git
    • zip
  • Run make

###Windows

  • Install MSYS2
  • Open MSYS2 shell
  • Install with pacman
    • mingw-w64-x86_64-ffmpeg
    • mingw-w64-x86_64-graphicsmagick
    • mingw-w64-x86_64-gcc
    • mingw-w64-x86_64-pkg-config
    • mingw-w64-x86_64-libwinpthread-git
    • git
    • make
    • zip
  • Navigate to the meguca root directory
  • Run make

##Setup

  • See ./meguca help for server operation
  • Login into the "admin" account via the infinity symbol in the top banner with the password "password"
  • Change the default password
  • Create a board from the administration panel
  • Configure server from the administration panel

##Development

  • See /docs/ for more documentation
  • ./meguca or ./meguca debug run the server in development mode
  • make server and make client build the server and client separately
  • make watch watches the file system for changes and incrementally rebuilds the client
  • make update_deps updates all dependencies
  • make clean removes files from the previous compilation
  • make dist_clean in addition to the above removes uploaded files and their thumbnails

###Linux only

  • make creates a Go workspace in the .build subdirectory. If you don't have a proper Go workspace set up, you can simply export GOPATH=$(pwd)/.build to temporarily assign .build as your Go workspace in the current shell. This will allow you to use native go commands such as go test and go build.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package auth determines and asserts client permissions to access and modify server resources.
Package auth determines and asserts client permissions to access and modify server resources.
Package cache provides an in-memory LRU cache for reducing the duplicate workload of database requests and post HTML and JSON generation
Package cache provides an in-memory LRU cache for reducing the duplicate workload of database requests and post HTML and JSON generation
Package common contains common shared types, variables and constants used throughout the project
Package common contains common shared types, variables and constants used throughout the project
Package config stores and exports the configuration for server-side use and the public availability JSON struct, which includes a small subset of the server configuration.
Package config stores and exports the configuration for server-side use and the public availability JSON struct, which includes a small subset of the server configuration.
Package db handles all core database interactions of the server
Package db handles all core database interactions of the server
Package imager handles image, video, etc.
Package imager handles image, video, etc.
assets
Package assets manages imager file asset allocation and deallocation
Package assets manages imager file asset allocation and deallocation
Package parser parses and verifies user-sent post data
Package parser parses and verifies user-sent post data
Package server handles client requests for HTML page rendering, JSON and websocket connections
Package server handles client requests for HTML page rendering, JSON and websocket connections
websockets
Package websockets manages active websocket connections and messages received from and sent to them
Package websockets manages active websocket connections and messages received from and sent to them
Package templates generates and stores HTML templates
Package templates generates and stores HTML templates
Package test contains utility functions used throughout the project in tests
Package test contains utility functions used throughout the project in tests
Package util contains various general utility functions used throughout the project.
Package util contains various general utility functions used throughout the project.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL