meguca

module
v4.4.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2017 License: AGPL-3.0, AGPL-3.0-or-later

README

GoDoc

Platforms: Linux, OSX, Win64

License: GNU AGPL

Features

Posts and posting
  • Character by character post updates
  • Hovering quick reply for post authoring
  • Dice roll, coin flip and eightball commands
  • Desktop notifications and "(You)" links on quote
  • Post link hover previews, including cross-thread
  • Inline post link expansion
  • Optional relative post timestamps
  • 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 100 posts in a thread
  • Optional automatic deletion of unused threads and boards
  • Automatic URL linkification
  • Automatic intelligent quoting of selected text, when quoting a post
  • Live programming code tags with syntax highlighting
  • Automatic open post recovery after a disconnect
  • Toggleable non-live post creation
  • Keyboard post navigation
  • Explicitly visible sage
  • Responsive seen post detection
  • Score-based antispam system
  • Optional recursive post hiding
Files and images
  • JPEG, PNG, APNG, WEBM, MP3, FLAC, MP4, OGG, PDF, ZIP, 7Z, TAR.GZ, TAR.XZ, TXT are 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
  • Title metadata extraction
  • Gallery mode
Performance
  • Low memory and CPU usage
  • No frameworks and optimized code on both client and server
  • File upload processing written in C with GraphicsMagick and ffmpeg
  • Inbuilt custom multi-level LRU cache
Client UI
  • Works with all modern and most outdated browsers (such as PaleMoon)
  • Works with JavaScript disabled browsers
  • Multiple themes
  • Custom user-set backgrounds and CSS
  • Mascots
  • 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/moderation
  • Support for both centralized and 8chan-style board ownership
  • Global admin -> users notification system
  • User board creation and configuration panels
  • 4 tier staff system
  • Board-level and global bans
  • Transparent post deletion
  • Viewing of all post made by same IP
  • Deleting all posts with same IP
  • Option to disable search indexing on board
  • Sticky threads
  • Public ban list
  • Public moderation log
  • Mod image spoilering
  • Image banners
  • Custom per-board loading image
  • Default board theme setting
  • Optional poster country flag display
  • Option to hide NSFW boards from /all/
Internationalization
  • Client almost entirely localized in multiple languages
  • More languages can be added by editing simple JSON files
Miscellaneous
  • Documented public JSON API
  • Optional R/a/dio Now Playing banner
  • Synchronized time counters (for group watching sessions and such)
  • Thread-level connected unique IP counter
  • Internal captcha system

Runtime dependencies

Building from source

A reference list of commands can be found in ./docs/installation.md

Build dependencies

  • Go >=1.8 (for building server)
  • Node.js >=5.0 (for building client)
  • GCC or Clang
  • make
  • pkg-config
  • pthread
  • ffmpeg >= 3.1 libraries (libavcodec, libavutil, libavformat, libswscale) compiled with:
    • libvpx
    • libvorbis
    • libopus
    • libtheora
    • libx264
    • libmp3lame
  • GraphicsMagick compiled with:
    • zlib
    • libpng
    • libjpeg
    • postscript
  • git
  • zip

Linux and OSX

  • Run make

Windows

  • Install MSYS2
  • Open MSYS2 shell
  • Install dependencies listed above with the mingw-w64-x86_64- prefix with pacman
  • 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
  • To enable country flags on posts download and place GeoLite2-Country.mmdb into the root directory

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
  • To enable using Go tools in the project add the absolute path of ./go to your $GOPATH environment variable

Directories

Path Synopsis
go
src/meguca/auth
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.
src/meguca/cache
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
src/meguca/common
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
src/meguca/config
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.
src/meguca/db
Package db handles all core database interactions of the server
Package db handles all core database interactions of the server
src/meguca/imager
Package imager handles image, video, etc.
Package imager handles image, video, etc.
src/meguca/imager/assets
Package assets manages imager file asset allocation and deallocation
Package assets manages imager file asset allocation and deallocation
src/meguca/parser
Package parser parses and verifies user-sent post data
Package parser parses and verifies user-sent post data
src/meguca/server
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
src/meguca/templates
Package templates generates and stores HTML templates
Package templates generates and stores HTML templates
src/meguca/test
Package test contains utility functions used throughout the project in tests
Package test contains utility functions used throughout the project in tests
src/meguca/util
Package util contains various general utility functions used throughout the project.
Package util contains various general utility functions used throughout the project.
src/meguca/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
src/meguca/websockets/feeds
Package feeds manages client synchronization to update feeds and provides a thread-safe interface for propagating messages to them and reassigning feeds to and from clients.
Package feeds manages client synchronization to update feeds and provides a thread-safe interface for propagating messages to them and reassigning feeds to and from clients.
scripts

Jump to

Keyboard shortcuts

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