Jump to content

arrestedgames

Registered
  • Posts

    0
  • Joined

  • Last visited

Posts posted by arrestedgames

  1. that is weird.

    please note this:

     

    "*** DO NOT USE ROOT ... not even on your dev box. Crap has a way of leaking out to the public..."

     

    so - do not install this into root's homedir

    do not run this as root

     

    create a new user to run atavism under

    become that user

    then follow those instructions.

  2. UPDATE NOTE: This is antiquated; the setup steps in the official documentation work well.  You might still get some use from hacking this setup, and can probably use some of this in an Ansible playbook, but I defer to the 201n.x setup guide.

     

    Again; not a plugin - but this will let you take a bare ubuntu 16.04 box and automagically configure it for running atavism.

    The assumption is that you have either a VM or a standalone linux box you use for devel, and you want to blow it away and rebuild at will.

    This script may be able to be hacked to use for production deployments, or to use with another linux flavor.

    YMMV.

     

    Pre-req:

    * Knowledge of Linux. Please. This is so unsupported, but it so freaking useful to me, I thought I would share.

    * Fresh Ubuntu 16.04LTS server (not desktop.. may work, don't know)

    * Install Oracle Java 8

    - add-apt-repository ppa:webupd8team/java && apt-get update && apt-get install oracle-java8-installer

    * Install MySQL

    - apt-get install mysql-server

     

    Use:

     

    unrar atavism server into some directory.

    copy this script into the atavism_server directory (i call it setup.sh)

    edit the setup.sh file and change the following vars appropriately:

     

    MY_IP=`ifconfig | head -2 | grep inet\ addr | awk -F: '{ print $2 }' | awk '{ print $1 }'`

    #MY_IP=10.10.10.2

    MY_NETWORK=192.168.1

     

    You can either use the uncommented MY_IP which will find your first network address, or comment that, and uncomment the second one - which you will want to edit to your linux box's IP.

    MY_NETWORK is the first 3 octet of your MY_IP (ie: 192.168.1.5 is MY_IP, then MY_NETWORK would be 192.168.1)

     

    chmod 0755 ./setup.sh

    sudo ./setup.sh USERNAME PASSWORD

    where USERNAME = the db username you want to use and PASSWORD = the password for that user

    *** DO NOT USE ROOT ... not even on your dev box. Crap has a way of leaking out to the public...

     

    Follow the prompts.

     

    Then, you should be able to cd into atavism_server/bin and launch auth.sh and world.sh

     

     

    #!/bin/bash
    
    if [ "$#" -lt 2 ]; then
      echo "Usage: $0 DB_USERNAME DB_PASSWORD"
      exit
    fi
    
    echo "Setting up Atavism development server..."
    echo "Setting Variables..."
    DTU_FILES="auth.sh auth.properties world.sh world.properties"
    FIX_BASH="auth.sh world.sh"
    SET_WORLD_DB="atavism.db_password= atavism.admin.db_password= atavism.content.db_password= atavism.auth.db_password="
    SET_WORLD_DB_USER="atavism.db_user= atavism.admin.db_user= atavism.content.db_user= atavism.auth.db_user="
    
    MY_IP=`ifconfig | head -2 | grep inet\ addr | awk -F: '{ print $2 }' | awk '{ print $1 }'`
    #MY_IP=10.1.24.212
    MY_NETWORK=10.1.24
    DATABASES="admin master atavism world_content"
    
    
    export db_user=$1
    export db_pass=$2
    
    echo -n "Fixing EOL terminators: "
    for i in `echo $DTU_FILES` ; do dos2unix bin/$i ; done
    echo "[Done]"
    echo -n "Setting Permissions: "
    for i in `echo $FIX_BASH` ; do chmod +x bin/$i ; done
    echo "[Done]"
    echo -n "Fixing bin/bash: "
    for i in `echo $FIX_BASH` ; do sed -i '1 s/^.*$/\#\!\/bin\/bash/g' bin/$i ; done
    echo "[Done]"
    echo -n "Fixing prop2sh: "
    sed -i 's/:space:/[:space:]/g' bin/prop2sh.awk
    echo "[Done]"
    echo -n "Setting Auth DB Username: "
    sed -i "s/atavism.db_user=root/atavism.db_user=${db_user}/g" bin/auth.properties
    echo "[Done]"
    echo -n "Setting Auth DB Password: "
    sed -i "s/atavism.db_password=test/atavism.db_password=${db_pass}/g" bin/auth.properties
    echo "[Done]"
    echo -n "Setting World DB Passwords: "
    for i in `echo $SET_WORLD_DB` ; do sed -i "s/${i}test/${i}${db_pass}/g" bin/world.properties ; done
    echo "[Done]"
    echo -n "Setting World DB Usernames: "
    for i in `echo $SET_WORLD_DB_USER` ; do sed -i "s/${i}root/${i}${db_user}/g" bin/world.properties ; done
    echo "[Done]"
    echo -n "Changing bind IP Address to ${MY_IP}: "
    sed -i "s/atavism.login.bindaddress=localhost/atavism.login.bindaddress=${MY_IP}/g" bin/world.properties
    sed -i "s/atavism.proxy.bindaddress=localhost/atavism.proxy.bindaddress=${MY_IP}/g" bin/world.properties
    sed -i "s/atavism.db_hostname=localhost/atavism.db_hostname=${MY_IP}/g" bin/world.properties
    sed -i "s/atavism.db_hostname=localhost/atavism.db_hostname=${MY_IP}/g" bin/auth.properties
    echo "[Done]"
    echo "Setting up the database - using [root] password for MySQL:"
    mysql_config_editor set --login-path=local --host=localhost --user=root --password
    echo "Disabling strict sql mode..."
    mysql --login-path=local -e "set sql_mode = '';"
    echo "Editing mysql.cnf..."
    echo "[mysql]" > /etc/mysql/conf.d/mysql.cnf
    echo "[mysqld]" >> /etc/mysql/conf.d/mysql.cnf
    echo "sql_mode=\"\"" >> /etc/mysql/conf.d/mysql.cnf
    echo "Editing /etc/mysql/mysql.conf.d/mysqld.cnf..."
    sed -i "s/127.0.0.1/${MY_IP}/g" /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "Restarting MySQL..."
    service mysql restart
    echo "Dropping Old Databases..."
    mysql --login-path=local -e "drop database admin; drop database atavism; drop database master; drop database world_content;"
    echo "Dropping db users..."
    mysql --login-path=local -e "drop user ${db_user}@'localhost'; drop user ${db_user}@'${MY_NETWORK}.%';"
    for slurpdb in `ls -1 sql/*.sql` ; do echo "Importing ${slurpdb} ... " ; mysql --login-path=local < ${slurpdb} ; done
     mysql --login-path=local -e "CREATE USER ${db_user}@localhost IDENTIFIED BY '${db_pass}';"
     mysql --login-path=local -e "CREATE USER ${db_user}@'${MY_NETWORK}.%' IDENTIFIED BY '${db_pass}';"
     for i in `echo $DATABASES`
      do
        echo "Creating user: ${db_user} in DB: ${i} ..."
        mysql --login-path=local -e "GRANT ALL PRIVILEGES ON ${i}.* TO ${db_user}@localhost identified by '${db_pass}';"
        mysql --login-path=local -e "GRANT ALL PRIVILEGES ON ${i}.* TO ${db_user}@'${MY_NETWORK}.%' identified by '${db_pass}';"
        mysql --login-path=local -e "FLUSH PRIVILEGES;"
      done
    unset db_pass
    unset db_user
    echo "Database setup complete."
    
     
  3. I think there are a few folks who can contrib to this list.. when I was searching, I wanted something cheap, fast, and dedicated. S3 will ultimately fit that bill for production hosting, however, I don't want to spend a ton of cash during the dev phases.

     

    Your own box. Not a shared system or VPS. (except in the case of AWS or Azure - thats ok)

    Unlimited bandwidth - truly.

    Enough disk for client files

    Able to bounce at will

    Must not be in Bob's Garage

     

    ------

     

    Canada: https://www.soyoustart.com/us/essential-servers/

     

    ^^ Not only did this fit the bill, but holy cow were they awesome nice on the phone. I wanted to clarify the EULA to make sure I could use #/Mbps sustained and not deal with capping or shaping.

  4. This is assuming Linux, I have no clue if this is valid on a windows machine...

    Probably going to rewrite this in python; so that it is more live/realtime - but for testing purposes I use this for showing the status of the test box:

     

    #!/bin/bash
    world_status="UP"
    auth_status="UP"
    system_status="UP"
    auth_color="green"
    system_color="green"
    world_color="green"
    
    function get_world()
    {
     for worldlist in `./world.sh -v -C status | awk '{ print $(NF-1)}'`
     do
     if [ "$worldlist" = "NOT" ]; then
     world_status="DOWN"
     world_color="red"
     fi
     done
    }
    
    function get_auth()
    {
     for authlist in `./auth.sh -v -C status | awk '{ print $(NF-1)}'`
     do
     if [ "$authlist" != "NOT" ]; then
     auth_status="DOWN"
     auth_color="red"
     fi
     done
    }
    
    function get_total()
    {
     for totallist in $auth_status $world_status
     do
     if [ "$totallist" != "UP" ]; then
     system_status="DOWN"
     system_color="red"
     fi
     done
    }
    
    get_world
    get_auth
    get_total
    
    current_date=`date +%D`
    current_time=`date +%T`
    function print_html()
    {
     cat < /path_to_web_root_healthcheck/index.html
    DATE: $current_date
    
    TIME: $current_time
    
    WORLD: $world_status
    
    AUTH: $auth_status
    
    OVERALL: $system_status
    EOF
    }
    
    function print_text()
    {
     cat < /path_to_web_root_healthcheck/index.txt
    DATE: $current_date
    TIME: $current_time
    WORLD: $world_status
    AUTH: $auth_status
    OVERALL: $system_status
    EOF
    }
    
    print_html
    print_text

     

    added this to the atavism user crontab:

     

    crontab -e

    then add:

    */15 * * * * /Path_To_Server/atavism_server/bin/check_status.sh
    

     

    it runs every 15 minutes, and spits out a pair of files that can be curled/wget/included whatever.

    probably not the best thing to run in a production env, but for testing it gives you a quick look at the health of all the services.

  5. So - I am curious; what are the top 5 things folks want to know/have? I'll start.

     

    • HOWTO - Creating a whole new race in UMA; something non-human based, like a Centaur Player
    • CODE - Guilds. - I am working on this, but its def. something I want.
    • CODE - Ghostrunning - from graveyard to corpse.
    • HOWTO - Morph - like a dual-race (Werewolf or werechicken)
    • CODE - a better System Options menu / more granular control (Gamma, volume, resolution, etc) - the Unity one is so obvious, and not very much control.. maybe this is not code - maybe its actually a HOWTO?

     

    Maybe is we can find a crossection of interests, we can get this stuff together ourselves and contribute back.

  6. yeah - i turn it off when i log in. the three times i tried using it; it was kind of useless - if its not open, the person get no notification.

    why not just use slack and have channels for real comms?

  7. I run this way.

     

    I have a EC2 instance running the web frontend to my user signup, etc.

    An EC2 instance running the world/auth servers

    RDS Aurora running the DB

     

    This works really well.. no latency..

    If you plan to run a dev box, having everything in one place is certainly the way to go.. if you plan to run "production" / customer facing, I would not recommend putting it all in one place.

    post-442-15095638820008_thumb.png

  8. ok. im agreeing with you.

     

    The only reason I'm not on the vet license - I have so much of the gruntwork to do, I don't want to get sidetracked into code - which is the fun part for me... example; my entire backend web stuff (marketing mail, user sign up, profile views, forum integration, atavism admin console, etc) took me like a weekend to do.. easy peasy, and i could see myself stopping the drudgery of adding items, quests, dialogs, etc to go down a never ending rabbithole of plugin madness .... I only stopped adding fluff to the web backend because of the schema changes in the upcoming releases.

  9. Maybe but if you buy a Veteran licence + it not legal to diffuse part of the source code in public.

     

    Yep, but, they have the ability to lift some of those restrictions to allow the posting of snippets.. although that would become a logistical nightmare.. so.. I concede

  10. seems like making this stuff public, would increase interest in upgrading to the next level ;) I know if I see a lot of activity around coding the features, I would probably jump in a little sooner than I plan. (Currently, my plan is getting all the boring crap done - loading in items, mobs, blah blah... then upping my license)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.