Giter Site home page Giter Site logo

minecraftservertools's Introduction

#Minecraft Server Tools

A set of tools for maintaining and interfacing with Minecraft server instances.

###Goals/Features

  • minecraftd
    • Watchdog daemon
      • Monitor running server instances for problems
      • Notify Administrators and Clients of problems
      • Restart failed instances automatically if applicable
    • Instance management
      • Create, delete, and edit server instances
      • Start/stop/restart individual or multiple instances
      • Stream instance I/O to authenticated connections
      • Each instance runs in a separate thread/process
      • Each instance is sandboxed in a chroot jail or similar
    • Communicates with User Interfaces (UIs) over Unix sockets and TCP/IP
      • Traffic over TCP/IP is encrypted
    • User and Group facilities with permissions system
      • Administration
        • SuperAdmin (root)
          • Manages minecraftd itself, users, groups, permissions, all instances, etc. (Unlimited access)
          • Requires machine level access to use (IE: Physical access, SSH terminal, etc.)
          • Machine-level user account must be 'root' or have administrative access (IE: Access through sudo)
          • Should only be used for initial configuration and disaster recovery
        • Group: Admin
          • Manage most of minecraftd and all instances
          • root may customize some permissions given to this group
        • Group: Bot
          • For automatic/triggered management
          • Severely limited access to minecraftd, no access to instances' I/O streams
          • Example: Automatic creation of instances triggered by purchase of a new instance
        • Custom Groups
          • Customized groups with customized permissions can be added by members of Admin and by root
          • Allows for customized delegation of responsibilities to fit operating entities' needs.
        • Administrative users
          • May be explicitly given or explicitly denied individual permissions
          • Unconfigured permissions are implicitly denied
      • Client
        • Can only see and manage instances they own
        • No access to minecraftd itself
        • May register staff accounts for Client's staff
        • May create staff groups and assign Client-level permissions as desired to fit Client's needs
        • Staff accounts, staff groups are stored in the Client's account information directly.
  • minecraftctl
    • Console-based User Interface to minecraftd
      • communicates with minecraftd over Unix sockets or TCP/IP
    • One-shot mode to allow single commands to, and scripting of minecraftd
    • Interactive/Shell mode to act as a command shell for minecraftd
  • MinecraftWebAdmin
    • Web-based Graphical User Interface to minecraftd
    • Written in HTML5/CSS/jQuery, PHP if necessary

minecraftservertools's People

Contributors

kd0bpv avatar

Watchers

James Cloos avatar  avatar

minecraftservertools's Issues

Linker errors: Undefined references to my own code?

I'm completely stuck at this point. I've never seen this problem before. I must be missing something, but I have no idea what. Any help would be appreciated.

Trying to compile minecraftd with

clang++ -std=c++14 minecraftd.cc MCInstance.cc lib/event/libevent.cc -lsystemd -lpthread -latomic -o build/minecraftd -v

or

g++ -std=c++14 minecraftd.cc MCInstance.cc lib/event/libevent.cc -lsystemd -lpthread -latomic -o build/minecraftd -v

results in

/tmp/MCInstance-1ec08b.o: In function `MCInstance::stop(bool)':
MCInstance.cc:(.text+0x2df): undefined reference to `MCInstance::FailEvent'
MCInstance.cc:(.text+0x2f5): undefined reference to `Events::Event<MCInstance>::fire(MCInstance*)'

Full output by clang:

clang version 3.6.2 (tags/RELEASE_362/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/5.2.0
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0
Found candidate GCC installation: /usr/lib64/gcc/x86_64-unknown-linux-gnu/5.2.0
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name minecraftd.cc -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.25.0 -v -dwarf-column-info -resource-dir /usr/bin/../lib/clang/3.6.2 -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0 -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/x86_64-unknown-linux-gnu -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/backward -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.6.2/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++14 -fdeprecated-macro -fdebug-compilation-dir /home/mark/Projects/MinecraftServerTools/minecraftd -ferror-limit 19 -fmessage-length 106 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/minecraftd-5532af.o -x c++ minecraftd.cc
clang -cc1 version 3.6.2 based upon LLVM 3.6.2 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/x86_64-unknown-linux-gnu
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/backward
 /usr/local/include
 /usr/bin/../lib/clang/3.6.2/include
 /usr/include
End of search list.
minecraftd.cc:69:30: warning: format string is not a string literal (potentially insecure)
      [-Wformat-security]
                sd_journal_print(LOG_CRIT, e.what());
                                           ^~~~~~~~
/usr/include/systemd/sd-journal.h:55:153: note: expanded from macro 'sd_journal_print'
  ..."CODE_FILE=" __FILE__, "CODE_LINE=" _SD_STRINGIFY(__LINE__), __func__, __VA_ARGS__)
                                                                            ^
1 warning generated.
 "/usr/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name MCInstance.cc -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.25.0 -v -dwarf-column-info -resource-dir /usr/bin/../lib/clang/3.6.2 -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0 -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/x86_64-unknown-linux-gnu -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/backward -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.6.2/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++14 -fdeprecated-macro -fdebug-compilation-dir /home/mark/Projects/MinecraftServerTools/minecraftd -ferror-limit 19 -fmessage-length 106 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/MCInstance-a9e707.o -x c++ MCInstance.cc
clang -cc1 version 3.6.2 based upon LLVM 3.6.2 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/x86_64-unknown-linux-gnu
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/backward
 /usr/local/include
 /usr/bin/../lib/clang/3.6.2/include
 /usr/include
End of search list.
 "/usr/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name libevent.cc -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.25.0 -v -dwarf-column-info -resource-dir /usr/bin/../lib/clang/3.6.2 -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0 -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/x86_64-unknown-linux-gnu -internal-isystem /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/backward -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.6.2/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++14 -fdeprecated-macro -fdebug-compilation-dir /home/mark/Projects/MinecraftServerTools/minecraftd -ferror-limit 19 -fmessage-length 106 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/libevent-d82c93.o -x c++ lib/event/libevent.cc
clang -cc1 version 3.6.2 based upon LLVM 3.6.2 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/x86_64-unknown-linux-gnu
 /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../include/c++/5.2.0/backward
 /usr/local/include
 /usr/bin/../lib/clang/3.6.2/include
 /usr/include
End of search list.
 "/usr/bin/ld" --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o build/minecraftd /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64/crt1.o /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64/crti.o /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbegin.o -L/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0 -L/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64 -L/usr/bin/../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../.. -L/usr/bin/../lib -L/lib -L/usr/lib /tmp/minecraftd-5532af.o /tmp/MCInstance-a9e707.o /tmp/libevent-d82c93.o -lsystemd -lpthread -latomic -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/crtend.o /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64/crtn.o
/tmp/MCInstance-a9e707.o: In function `MCInstance::stop(bool)':
MCInstance.cc:(.text+0x2df): undefined reference to `MCInstance::FailEvent'
MCInstance.cc:(.text+0x2f5): undefined reference to `Events::Event<MCInstance>::fire(MCInstance*)'

Parse CLI options and config files

Make sure to defer to CLI options when given, as they're explicitly set by user on launch. Probably should be implemented as functions or a class.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.