vgchan

command module
v4.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2017 License: AGPL-3.0, AGPL-3.0-or-later Imports: 1 Imported by: 0

README

GoDoc Build Status

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, 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 100 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
  • 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
    • No frameworks and optimized code on both client and server
    • File upload processing written in C with GraphicsMagick and ffmpeg
    • 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-set backgrounds and CSS
    • 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

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

###Dependencies

  • Go >=1.7
  • Node.js >=5.0
  • Rust
  • GCC or Clang
  • make
  • pkg-config
  • pthread
  • lzma
  • ffmpeg >= 3.0 libraries (libavcodec, libavutil, libavformat) compiled with:
    • libvpx
    • libvorbis
    • libopus
    • libtheora
    • libx264
    • libmp3lame
  • GraphicsMagick compiler 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

##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
scripts
migration/3to4 command
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