Archive

Archive for November, 2008

What happened to this free space-themed game?

November 29th, 2008

It was a free space-themed action MMO, but not like those cheap web based hacks that are complete garbage.  It had PVE and plenty of PVP.  Ok, it wasn’t all that great, and I only played a little, but it was the only MMO I liked.  I can’t stand World of Warcraft or any of those types of games.  Maybe someone should coin the phrase, “mmo-lite”.  There I just did.  All I can find now is a generic description of it.  If anyone recognizes this, they should be able to tell me what the heck happened to it.


Anonymous MMO Online is an action based Massive Multiplayer Online (MMO) 3D Space Shooter. In Anonymous MMO Online, players can pilot their own space fighter ships (Gears) on an imaginary planet and upgrade skills or the Gear itself.

3D Space Shooting MMO

In Anonymous MMO, gamers have full control over the Gear’s control making it very different from the traditional RPG’s mouse click control method. This is a game based on Role-Playing Game (RPG) level concepts, but the fun and action of a First Person Shooter (FPS).

Diverse Selection of Fighting Gears

There are 4 kinds of Gears available to choose from, with each Gear having it’s individual unique characteristics. These characteristics differ in skill and items giving the player the opportunity to choose which items to equip to suit the player’s preferences. Gears can be upgraded to change color, performance, weapons, and so on in order to satisfy the gamer’s growth of the character.

Battle Formation/Brigade System

A formation system is possible that is similar to the generic party concept of a Role-Playing Game. There can be a maximum of 6 players in a formation (triangle formation, reverse triangle formation, X form formation, etc.) dependant on the formation leader at the center of the formation during battle. The performance of the formation depends on the player’s ability to work together and different formations require different skills and playing styles.

In addition to the formation, there is a brigade concept that is the equivalent to the guild term from other Massive Multiplayer Online games. A brigade can consist of 40 members, and have a specific brigade mark specified by the brigade leader to identify the brigade.

Battle/Large-Scale Battle

Anonymous MMO Online has an intense battle system including Player vs Environment (PVE) and Player vs Player (PVP) elements. PVE elements are used for standard leveling from experience points, while PVP elements can be seen through 1 on 1 battles, formation (party) battles, and even brigade battles. As opposing nations exist, there will be large scale nation wars throughout the game servers resulting in a possibility of occupying enemy forces and increasing profits for ones own nation. The 3-D aerial and ground battles will bring a whole new experience to the user.

Mission

A large number of missions are available which bring the storyline into perspective depending on the player’s chosen nation and have it’s share of rewards.

games , , ,

How to automate just about anything using cron jobs

November 24th, 2008

Cron is so simple yet so useful I think it’s often unappreciated! Being able to toss a command into a cron, or execute a script at specific times of the day, days of the week, etc. That’s good stuff!

You could call a script that checks your mail once an hour, cleans out a temporary directory, or archives a special directory where you dump files to get saved without ever having to visit the server manually and tar/gzip the files yourself.

My latest use for cron is a nightly build script for building code checked out of subversion.  I’m doing this on my system for personal use, but also at work along with a python script i’m writing that also runs from a cron a few hours later.  It parses the build log looking for errors.  If it sees errors, it sends them out in email.  Python is wonderful… /off topic.

# +———— minute (0 - 59)
# | +———- hour (0 - 23)
# | | +——– day of month (1 - 31)
# | | | +—— month (1 - 12)
# | | | | +—- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * command to be executed

If you want to run a script called check-for-rootkits.sh every 10 minutes, its as easy as:

*/10 * * * * /root/check-for-rootkits.sh

You could also get fancy and use “run as” to run crons as specific users.  Users can do this on their own (”crontab -e”), but you could force things to happen for them with your root crons if you wanted.  Fedora makes use of this for running hourly and nightly cron directories.  If you want anything to run along with the standard Fedora cron jobs, you just drop your script into those directories and they fire off alongside the defaults.

Linux , , ,

How to install a specific version of some rpm with YUM

November 23rd, 2008

You want to install a special version of openssl that’s not the latest release, but some other app requires that specific one — how do you do it?

Lets assume you don’t have the right repository installed, and you need to set that up first.  If you’re looking for some package that you know is in freshrpms or livna, then right out of the box, the default fedora installation won’t look in those repositories.  So import the GPG key and add the repo file.

rpm –import http://freshrpms.net/RPM-GPG-KEY-freshrpms
rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/8/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm

The –import lets the gpg check pass, and will fail if someone tries to stick a bad package in their repo, unless they’ve gotten ahold of their key a-la the fedora fiasco a few months ago.  But don’t worry about any of that right now.  Just import the key or else yum will complain when you try to install anything.  The 2nd line “rpm -ivh”, that’s going to install a package.  The package will have the .repo file, and it will put it in /etc/yum.repos.d/  that’s what really enables you to search in freshrpms.

Here’s another one, installing livna this time (livna is great for nvidia and ati drivers.  They compile the video drivers for specific kernels and package them for you.)

rpm –import http://livna-dl.reloumirrors.net/RPM-LIVNA-GPG-KEY
rpm -ivh http://rpm.livna.org/livna-release-8.rpm

Now onto installing a specific version of something.  If you know what you’re looking for, say openssl for example, put the version after the package name when you install it from the command line.  You can also specify the architecture and distribution release version too.  But when that doesn’t work, try this:

  • Open a browser and go to http://mirrors.fedoraproject.org/publiclist
  • Find a mirror somewhat geographically close to you, or one that you know will serve your requests fast, and click on “http”.  I’ll choose mirrors.kernel.org.  At this point you’ll be in a basic directory browsing mode.
Name                    Last modified      Size

Parent Directory - core/ 17-Oct-2006 12:46 - development/ 23-Nov-2008 06:30 - extras/ 18-Jun-2007 21:00 - releases/ 18-Nov-2008 22:12 - updates/ 21-Nov-2008 19:16
  • From here I clicked updates, then 9, then x86_64.newkey and ended up here: http://mirrors.kernel.org/fedora/updates/9/x86_64.newkey/  with a huge list of packages.
  • Find this file in a terminal.  It’s probably going to download to your home directory, or ~/Desktop but that all depends on how your browser is set up.  Once you’re there, here’s the line to install it properly.

$ sudo yum localinstall openssl-0.9.8g-9.fc9.i686.rpm

  • The end result is exactly the same as if you installed from the repository.

Linux , , , ,

Top 5 reasons why Gears of War sucks

November 21st, 2008

First off, don’t be afraid of insane mode.  It just means you shoot from a little further back than normal most of the time and don’t bother trying to get up close to chainsaw anyone.  So you’re left with the multiplayer and the horde.  The horde mode really is the shining star here, but it’s too bad this is where things also began to fall apart.

Top 5 reasons why Gears of War 2 sucks

  1. It will take forever to form groups on xbox live.  And when you see your group fill up and you think it’s about to start, don’t count your chickens yet.  It will probably reset and start trying to find players all over again.  When you’ve played a full round of multiplayer in public xbox live and the round is finishes, you will get kicked out to the main screen and have to start matchmaking all over again.  The only save here is that if you’re in a party with friends, at least your group will stay together, but you’ll still have to wait forever to find another group to play against!
  2. If you join a multiplayer or horde match using public xbox live, you’ll start from wave one with no choice.  If, at any time in the middle of playing, someone leaves the match, a new person can’t join.  So you’re basically screwed.  This has a much worse effect in multiplayer.  If a player or two on your team leaves, too bad so sad.  Your team is probably going to lose.  It won’t balance the teams between matches, or let a new person join in the middle of a fight, a la call of duty style.
  3. The whole roll up on someone and blast them with a shotgun to the face trick from the first Gears of War hasn’t been fixed.  So forget the lancer or the rifle.  The shotgun is your best choice from your starting arsenal in multiplayer.  If you can get your hands on a bow or boomshot, by all means take it.  But it’s just too bad there are no modes where people get different guns, or where everyone only gets a specific gun.  It would have been nice to have a pistol+sniper battle with no machine guns allowed.
  4. Oooo, check out my gold lancer or gold rifle.  woop-dee-doo.  How about different models of each type of gun or a few more choices?  Sure there’s three different pistols, but there’s only 1 rifle, 1 lancer, 1 bow, 1 boomshot, and 1sniper rifle.  While the weapon types vary tremendously, the selection is rather limited.
  5. Be prepared to get stuck taking cover, or going into cover facing the wrong way.  It’s just too bad that Geow2 is basically Geow1 all over again with new maps and a few new guns!

And my bonus gripe:  In the campaign mode, you’ll find yourself running around as a group of 4, sometimes splitting into 2 and 2.  Why couldn’t they have made it FOUR PLAYER CO-OP?!  Tweak the story a little here and there and wam, it would have been great.  I give this game a 7 out of 10.  And no, i’m not paid to rate this game at all.  After the initial wow factor wears off, you’re left with just “meh”.  Screw this, i’m going back to Call of Duty 4…

Uncategorized , , , , ,

Why is the number 2012 such a big deal?

November 20th, 2008

I was in Borders or Barnes and Nobles the other day and I saw a bunch of books with the number 2012 on the cover.  I’m sure there are tons of people trying to cash in on the next big end-of-the-world scenario which is sometime around the equinox on December 21st in the year 2012.  So here’s a bunch of interesting facts about the number 2012.

It’s a year in which there are five Wednesdays in February. The last time this happened was 1984 and the next would will be in 2040.

It’s a Canyon Number. The structure of the digits represents a canyon. The first and last digits are the same, but all the digits inbetween are progressively smaller as you get toward the center position.  The biggest number that matches this pattern is 9876543210123456789.  If you laid this out on a scantron, it would look like a giant V.

a(n)=1/120*n*(n^4+10*n^3+35*n^2+50*n+144). This sequence starts like this: 2, 8, 24, 60, 131, 258, 469, 800, 1296, 2012, 3014.  I’m sure somewhere to someone, this means something crazy.

Number of binary sequences of length n containing exactly one subsequence 001.  Come on now, doesn’t this sound like there should be a spooky reasoning behind this?  Ok there’s not, it just is what it is.

Triangle read by rows: T(n,k) is number of paths from (0,0) to (3n,0) that stay in the first quadrant (but may touch the horizontal axis), consisting of steps u=(2,1),U=(1,2), or d=(1,-1), and having sum of the heights of its pyramids equal to k (a pyramid is a sequence u^pd^p or U^pd^(2p) for some positive integer p, starting at the x-axis; p is the height of the pyramid). So now you’re asking where the heck did he get all these stupid facts?

No, I didn’t look all these up in a bunch of books.  I found a site where you can plug in any sequence of number(s) and it will tell you all about them.  Freaking great when you run across a sequence you know you recognize but don’t know the name of, or that you need the formula for!!!  Freaking amazing, I know right?

Online Encyclopedia of Integer Sequences

http://www.research.att.com/~njas/sequences/Seis.html

Uncategorized ,

Hydrogen anyone?

November 18th, 2008

Mmm… Hydrogen. Leave a comment if you’re an HHO’er. If you don’t know what HHO refers to, or you disagree with the definition. I’m curious to see if anyone stops by!

Uncategorized

How to start or stop a process that’s slow to respond

November 18th, 2008

Got a process that you want to restart in a script but it doesn’t respond nicely?  Use the sleep command in your script and check its status after you start, stop, or kill it.  After incrementally backing off a few times, waiting longer and longer, I give up and exit with an error.  But you could come back later, or basically raise an exception by saving the value of “$?”. You can do this as you start a process and want to make sure it’s fully up and running before moving on because it dies sometimes unexpectedly.  There’s a ton of uses for sleep.

DAEMON=myapp
sudo /etc/rc.d/init.d/$DAEMON start
sleep 1
if [ `sudo ps -ef | grep -c $DAEMON` == "1" ]; then
sleep 2
if [ `sudo ps -ef | grep -c $DAEMON` == "1" ]; then
sleep 3
if [ `sudo ps -ef | grep -c $DAEMON` == "1" ]; then
sleep 3
if [ `sudo ps -ef | grep -c $DAEMON` == "1" ]; then
echo
echo “ERROR: $DAEMON did not restart.”
echo “Quitting Early!…”
exit 1
fi
fi
fi
fi

Linux, Solaris , , , ,

How to unban my Google Adsense account

November 18th, 2008

The evil google empire has singled out my website and banned me for no apparent reason what-so-ever.  Those pricks couldn’t handle stroking the big $11 check once every few months for my super duperest blog.

The Google Team is out to get you, how to make them pay in 4 easy steps:

My Adsense account got banned.  Help!

  1. Take a deep breath, calm down, and try to figure out why your account was banned. Know thy enemy.  You’re going to want to find evidence that there has been a mistake and to do that you’re going to need to know what the problem was in the first place.  While reading this, in your head it should sound something like, “well duh”.  Google might just tell you there were invalid clicks and that doesn’t exactly say much.  If you get slashdotted, dugg, or any variation of those with all the other social networking sites out there, you may get an influx of clicks.  If you’re under shared hosting, there’s probably a bunch of miscreants among you, physically sharing your server.  If you’ve ever had a VISA or American Express credit card, you’ve probably been hit with the hold on your account because of irregular usage patterns.  Your problem with google could be this simple in the end.
  2. Contact Google Adsense. After you’ve calmed down!  Be professional and courteous to them.  Treat the problem with a cold and calculating seriousness that makes no bones about it.  It’s nothing personal, just business.  Don’t acuse, assault, or in any other terms annoy the people you’re asking to help you out.
  3. Do you homework. If you have logs or other forms of evidence that you think proves you and your websites innocence, then by all means send it to them.  Include this type of information in your initial contact.  Don’t wait until your follow up to provide any proof or it might look made-up.
  4. Patience Danielson. You may not get an instant response.  And by instant, I mean any time soon.  If you don’t hear anything after a few days, send a follow up message to them.  Wait a few more days and try again.  It would be better to have patience than to irk or otherwise annoy.

Uncategorized , , , ,

Add your public SSH keys to a remote host’s authorized_keys in a single command

November 14th, 2008

[user@localhost ~]$  cat ~/.ssh/id_rsa.pub ~/.ssh/id_dsa.pub | ssh user@remotehost ’sh -c “cat - >> ~/.ssh/authorized_keys”‘

You’ll be prompted for the password just this one last time.  This is perfect for running a script that runs several remote commands through ssh.  Here’s a script that checks for your keys and adds them if they’re not there.  You’ll get prompted for a password twice if the keys didn’t already exist, and then no more.

#!/bin/sh
MY_NAME=`hostname`
MY_IPADDR=`hostname -i`

CHECK_KEYS=`ssh user@remotehost “touch ~/.ssh/authorized_keys > /dev/null 2> /dev/null; \
chmod 700 ~/.ssh/authorized_keys; grep -e $MY_NAME ~/.ssh/authorized_keys”`

LENGTH=`expr $CHECK_KEYS” : ‘.*’`
if [ $LENGTH -lt 3 ]; then
# cat the keys
else
# they already exist
fi

Another way around the password prompting issue from running a bunch of ssh commands is to branch the script and have one branch check your hostname to make sure you’re not the remote host and then start running all your commands.  When you get to the stuff you want to do remotely, echo the script across your ssh tunnel and execute it.  Now in the script, go into the 2nd branch that only runs if the hostname check matches the remote host, and it will skip down to this part on the remote run.  This gets around having a 2nd script with all your remote commands in it.  It might not be elegant, but it works!

#!/bin/sh
if [ `hostname` != $1 ]; then
# you ran this script with the remote host as the 1st argument, so it’s not going to be equal, and it will run these commands
# do a bunch of local stuff here
cat $0 | ssh user@remotehost /bin/bash `hostname`

else

# i’m here because i’ve been called on the remote host
REMOTEHOST=$2
# now i can run commands as if they were local.  executing `hostname` now would now return the remotehost name.  So any variables you want to carry over to the remote host, such as where I was called from, just add them as additional arguments when you cat the script and grab them from $2, $3, … etc. when you enter this else clause!
fi

Linux , ,

OpenLDAP + Replica + StartTLS encryption on Fedora in 10 minutes

November 12th, 2008

I wouldn’t do it this way for a production network, but i’ve set up similar configurations for testing in vmware, in a research environment, and in a production environment.  So instead of a step by step, here’s a quick run through… It should clear up some of the missing pieces when you try to go from a basic ldap server to multiple servers with startTLS encryption.

If you haven’t done this before, you might want to break it into pieces like getting just the primary LDAP  server up with no encryption first.  But you can find those how-to’s anywhere.  Go big or go home right?

On the Server, become root and install OpenLDAP packages.

The machine you designate as the ’server’ will need “openldap-servers” and “openldap-clients” because you’ll want the server to be a client of itself. You’ll also need “nss_ldap” which, from yum info, allows LDAP to be used as a primary source of aliases, ethers, groups, hosts, networks, protocol, users, RPCs, services, and shadow passwords, and contains PAM support for password changes, V2 clients, Netscape’s SSL, ypldapd, Netscape Directory Server password policies, access authorization, and crypted hashes.

$ sudo su -
# yum install openldap-server openldap-clients nss_ldap

Generate a master password using slappasswd, copy and paste this password into slapd.conf

# /usr/sbin/slappasswd
New password:
Re-enter new password:
{SSHA}kc20D+e1Q25OXi39YnfVvj8zSrSto3TT

My LDAP primary server’s hostname is “server1″.  I’ll also set up a replica server named “server2″.  My network’s domain is “mydomain.com”.  So your /etc/openldap/slapd.conf.  I’m going to setup both servers and the encryption all at the same time.  If you run into issues after all this, you might not know which part you’ve messed up at, but starting ldap using lots of logging will let us figure out where it’s hung up.  This should all come out fine and work like a charm, so just go for it. But if you really don’t like that approach, feel free to skip the encyption and/or replica server parts (comment them out and delete the “tls_ssf=256″ parts iin slapd.conf) and come back to them later.  Only the last section stating with comment “Replica” will be different on your replica server2.  They’ll point to your primary server, server1, of course!

The finished version of /etc/openldap/slapd.conf should look like this:

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/misc.schema
allow bind_v2
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

TLSRandFile /dev/random
TLSCipherSuite HIGH:MEDIUM:+SSLv2:+SSLv3:RSA
TLSCACertificateFile  /etc/openldap/cacerts/slapd1.pem
TLSCertificateFile    /etc/openldap/cacerts/slapd1.pem
TLSCertificateKeyFile /etc/openldap/cacerts/slapd1.pem

access to attrs=shadowLastChange,userPassword,shadowMax,shadowWarning
by tls_ssf=256 ssf=256 self write
by tls_ssf=256 ssf=256 anonymous auth
by * none
access to *
by tls_ssf=256 ssf=256 users read
by tls_ssf=256 ssf=256 self write
by tls_ssf=256 ssf=256 * read
by * none

database        bdb
suffix          “dc=mydomain.com”
rootdn          “cn=Manager,dc=mydomain.com”
rootpw  {SSHA}kc20D+e1Q25OXi39YnfVvj8zSrSto3TT
directory       /var/lib/ldap

timeout 30
cachesize 2500
checkpoint 256 30
searchstack 8

# Indices to maintain
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

# Replicas
replica uri=ldap://server2.mydomain.com:389
bindmethod=simple
binddn=”cn=Manager,dc=mydomain.com”
credentials=PlainTextPassword
replogfile /var/lib/ldap/master-replog

The replica’s slapd.conf will include this part instead of the last section:

updatedn "uid=Manager,dc=mydomiain.com"
updateref ldaps://server1.mydomain.com

Create a self signed certificate on server1 and do it again on server2.

Put both pem files on both servers and on all clients.  Clients need the public part so they can talk to either server in case one goes kaboom! and a replica server has to take over for awhile.  Make sure you use the server’s hostname for “Common Name” when you’re creating them.  You can fill in the rest with whatever junk you want.

# cd /etc/openldap/cacerts/
# openssl req -newkey rsa:2048 -x509 -nodes \
-out server.pem -keyout server.pem -days 3650

You’ll get a server.pem file with the private key and certificate together.  The clients only need the certificate part in their /etc/openldap/cacerts/ directory in order to communicate with the servers.  If you want to save time and it’s just for demo installation, you can just leave the keys in there and copy the files to everyone.  NO I DO NOT RECOMMEND THIS FOR ANY TYPE OF PRODUCTION ENVIRONMENT!  I’m just saying that if you want to save time and you’re just testing this stuff out in virtual machines or a private network, then it will work!

Import the local accounts into the LDAP database.

It’s easiest if you just create all the local accounts you want to start with, using whatever method you normally use to make them.  I use useradd from the commandline.

# useradd -u 1234 -g 1234 -G wheel zerocool

Run the migration script to fill the ldap database with your accounts.

# /usr/share/openldap/migration/migrate_all_offline.sh
Creating naming context entries…
Migrating groups…
Migrating hosts…

Don’t panic!  They’re not actually migrating, they’re replicating.  Your local accounts will still be there and they’ll actually be looked at first on any machine because you’ll put “ldap” at the end of any lines in /etc/nsswitch.conf.  This means ldap will be considered after everything lese defined.  Think of it like how /etc/hosts supercedes DNS lookups.

Make sure the ldap user (automatically created by your openldap package installation) owns the files in your database directory and the certificates.

# chown -R ldap:ldap /var/lib/ldap
# chown ldap:ldap /etc/openldap/cacerts/*.pem

Edit /etc/sysconfig/ldap

You want to make it start LDAP and LDAPS so it will listen on ports 389 and 689.  It’s probably not necessary, but maybe you’ll run into a legacy application that uses encryption but doesn’t like StartTLS.

# cat /etc/sysconfig/ldap

# At least one of SLAPD_LDAP, SLAPD_LDAPI and SLAPD_LDAPS must be set to ‘yes’!
#
# Run slapd with -h “… ldap:/// …”
#   yes/no, default: yes
SLAPD_LDAP=yes

# Run slapd with -h “… ldapi:/// …”
#   yes/no, default: no
SLAPD_LDAPI=no

# Run slapd with -h “… ldaps:/// …”
#   yes/no, default: no
SLAPD_LDAPS=yes

Copy DB_CONFIG.example to the database directory.

If you don’t have this file or something like it, renamed to “DB_CONFIG” in there, you will see warnings when you try to start the ldap service.  So just copy and forget about it.

# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/

At this point, the server side of things is done, however, you won’t be able to verify this until you set up the server as a client.  So continue on with server1.  Edit /etc/ldap.conf and tell it the server, where in the tree to start searching from, and where to get encryption info from.  Or you can just run /usr/bin/authconfig-tui which is provided by package “authconfig”.  This will prompt you for all the fields necessary to configure the machine for ldap.  I use “localhost” for the server, but the actual dns name or ip address for the server for the clients.

Configure /etc/ldap.conf on the clients (and the server so it can be a client of itself)

# cat /etc/ldap.conf
base dc=mydomain.com
uri ldap://localhost
timelimit 3
bind_timelimit 3
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,tomcat,radiusd,news,mailman,nscd
ssl start_tls
tls_checkpeer yes
tls_cacertfile /etc/openldap/cacerts/slapd.pem
tls_randfile /dev/random
tls_cacertdir /etc/openldap/cacerts
pam_password md5

Configure the OS to actually acknowledge LDAP’s existence

Add “ldap” to the passwd, shadow, and group lines in /etc/nsswitch.conf and edit PAM settings. If you used authconfig-tui, this will get added automagically for you. When you’re done nsswitch should include this:

# grep ldap /etc/nsswitch.conf
passwd:     files ldap
shadow:     files ldap
group:      files ldap

Start the ldap service on the primary and replica servers.  You should see the primary server start both slapd and slurpd while the replica just starts slapd.  That’s it.

Linux , , , ,