BYOND Hosting / Shell Server

by Xirre
A shell server (hosting service) for all of BYOND to use!
ID:1263021
 

Read before Applying for Services


This is a thank you message to SS4toby who helped me create this shell server utility. I was stuck on a few parts and he donated the sources which we worked on together to make this here. Thanks.

Specs
BYOND Version: v510.1345 (STABLE)
Operating System: Debian 7 Wheezy 64-bit
Processor: 3.1GHz Dual-Core
Memory: 2GB RAM
Network: 100Mbits/s(12.5MB/s) download & 100Mbits/s(12.5MB/s) upload



Terms of Services

By using this service/program, you agree to the following -

  • Administrators and Moderators, as listed in the Players tab when they log in, reserve the right to shutdown, start up, restart, delete, and modify your file paths and/or files at will.
  • All payments are final and refunds will be given in the form of credits per the refund formula presented within the program itself that distributes credits back to you based on how many days you have left.
  • You are aware that your hosting permissions may be revoked at any given time.
  • You agree to not abuse the program in any way.
  • You understand that you can be banned at any time without the option of a refund.
  • You agree that nobody besides yourself is held responsible for any loss or damage of data and/or loved ones in the usage of this program.
  • You agree that you have common sense and that Terms of Services are just a way to make sure you don't claim that you don't have common sense.
  • You understand that this ToS is getting more "trollish" as it goes on.


What Shell Server is:
Shell Server could best be described as a BYOND utility. Through this "utility" individuals have the ability to upload, start, and shutdown servers. In essence, it's a sort of hosting service.

How many servers can I have if I don't pay?:
Admins and moderators will appoint you 1 server to start up if you are a free user. No guest keys are allowed.

How do I donate or subscribe/buy credits?:
You can do so by clicking the donate or subscribe verb in the commands tab or visit here to purchase credits and here to donate.

Getting a Server:

Paid Services

It's as easy as visiting here. Once you have purchased a server, visit the hub and join a server of your choice and navigate to Controls > Purchase Subscription. Choose wisely as this will be the server you will have for the time being, unless you propose a refund and switch servers.

If you have any questions as to whether this is a legit service, you can easily join the servers presented in the hub and ask anyone of the customers in the servers tab who has "Subscriber" next to their name. However, do not pester them please.

Even after you pay for a server, there are still some rules.

  • Any uploaded files that break any U.S. Laws is against the rules.
  • Games that hog any resources are prohibited. (This means CPU and RAM to the point that other games are effected.)


Free Services

To apply for a free server you will be required to have a key and log on to any server at http://byond.com/games/Xirre/ShellServer.

Once logged in, follow these steps to submit an application and to make sure it is approved.

Before you follow these steps, be sure to note that the following games are no longer accepted:

RP Unlimited -- We have enough hosts for this game.
SS13 -- The file management isn't something I am very fond of for this game.
Anime, Cartoons, TV Shows, etc -- This includes, but is not limited to; Naruto, Digimon, Pokemon, Dragonball, and Bleach.
RIPs -- We don't support any stolen material. The only way you're allowed to host a game that someone else has owned is if you gained strict permission from them that you are allowed to host and develop this game.

While this is not disallowed, games that have not been updated for 6 months or more have a high potentiality to be declined. It will only be accepted if it is viewed as a game that can still survive. We are mainly looking for games that are being updated still or can still be updated.

Shell Server's free program is centered around improving the BYOND community's diversity in games. If a game is already hosted, it will, most likely, be declined. If a game has not been updated in forever and you are not the owner, it will most likely be declined. If a hub was just recently created and has no contently, it will most likely be declined. If an application lacks professionalism, it will most likely be declined.


  • 1. Click the Controls tab.
  • 2. Click the "Request Services" verb.
  • 3. Fill out the form. (Read the bullets in #3 for details on how to fill them out)

    • "Game Name" should be the name of the game itself and nothing more.
    • "Hub Link" should be the link to the hub. If you don't have one, make one, please. It's free and everyone has requested that it be free. So, take advantage of your privileges. An example as to how a hub link looks is above the input box.
    • "Game Description" should tell me what your game is actually about. IN DETAIL. Grammar is important when describing as well. You're applying for something. So, make it look nice. :)

  • Click the "Submit" button.
  • You may log off or stay online. Either way your application will be reviewed. If you choose to log off, the next time you log on your application's status will be displayed (if it was reviewed). You will either receive a declination letter with a reason as to why it was declined or you will receive an acceptance letter with details on what kind of server you have.


Managing your Server:

Uploading your files:

Once you have permission to host, click the controls tab and follow the bullets below:


  • Click Manage Files
  • Click Upload

    • Option 1:

      • Upload your .dmb file (looks like a TV with a red atom in it)
      • Upload your .rsc file IF you have one (Just looks like a white blank paper)

    • Option 2:

      • Upload a .zip file (.sav, .txt, .dmb, .rsc, and non file-types are ALWAYS accepted. Any other type must be requested.)


  • Open your folder by double clicking it. You can move them to a different directory by right clicking them. This can help you organize things.
  • Find your .dmb file.
  • Right click the .dmb file and click Start Server.
  • If you don't know what "threads" does, either read up on it or turn it off. Other than that, fill out the port and every other option and your server will be online!


Shutting down and Restarting your Server:

In the servers tab, locate your game. Now, right click your game and click shutdown or restart.


Updating your game:

Like before, upload your files. Upload your .dmb always. However, you don't need to always upload your .rsc file. You can choose not to upload it until you change your skins, map, icons, icon_states in a .dm file, etc. Things that pertain to images.Or until you see that the "Modified Date" has changed.

Once you have uploaded your files, just restart your server. No need to shutdown. This makes it easier on the server and also allows your game to start up a little faster if it has dynamic maps.


Sharing your hosting and using other's:

In the controls tab are two verbs; Share Hosting and Switch Users.

Share Hosting allows you either select or type in a user's key to add them to your sharing list. You can also remove them by clicking "Remove."

Switch Users is what people will use to access a server they have been allowed in to. They just need to click it and find your key. Once they switch users they can operate the verbs like you normally do.


Downloading your files:

Just right click anything and click download. Want to download multiple files? Put them in a folder. It'll auto-zip it for you.


Getting disconnected when uploading your files?

There has been an issue when some people get kicked off because their files are too big and their internet is slow. If this is the problem, zip your files and then upload them. This should solve the issue. Even if it's 1 file.
Why can't we just put servers up, freely. Add a limit to 2 servers per person, and no multi-keying.
We're working on fixing the Shutdown feature. Basically how this works is you click the Request Hosting Service verb in the Server Tab and enter a brief description of your server that you want hosted. Then send a link to the BYOND Hub of the game so we can check it out. Afterwards we will review your application and assign you how ever many servers you requested.

There are 2 ways to qualify for a server. 1: Your game can be an original game such as the new upcoming games you have listed, Flysbad. Or 2: You can buy a server from me and host whatever game you want. The money gained from the servers you buy goes towards my BYOND Membership Giveaway as I don't have a job to even support that myself. Lol. So that's all you have to do.

If you want to host more than 1 server at once state your reason. If you want to have more than 1 games UPLOADED(Not hosted. just saved in our files), state your reason why. We will have to review that.

Does that about sum it up? :)

I'll be needing some admins btw. So I'll choose some people to get admin. Preferably people I trust like you, Flys.
What happens when I click "Review Applications" in the Admin tab is that it shows me a list of people who applied for a server and it opens up a window that shows what they typed and the byond hub link they provided. I read it and then after making my decision I have 2 things to fill out. The amount of servers they can upload and the amount of servers they can host at once. Once that is done, regardless if the player is online or not they get a new tab with new verbs such as StartServer, UploadServer, Shutdown, etc. But we are currently fixing Shutdown. We're trying to get A.T.H.K. to help out since he helped me understand a bit of Unix and Shell scripting a while back.
Ahh, now I understand. This is a pretty good thing you and Toby are doing. The last person who attempted this was ssj4justdale, I wonder whatever happened to him.. We was like close friends, but then he just disappeared. I did think getting the server verified before hosting was a good way to prevent server spam, un-wanted servers, etc.. but, you have to wait for an admin to be there not AFK.
I tried working with SSj4JustDale when he did his. He lost his sources to the game. I asked him for the sources so I could help but he refused. So instead he just granted me free hosting.. But seeing as how he doesn't have the sources.. It's a failure now lol. He still comes online.

As for reviewing servers.. The fact that you can review it even when a player is offline is beneficial. And that's also why when we get this a bit more working properly we will be choosing more admins to make things a bit faster. Heck. I may even give out host files to some good hosts.
In response to Xirre
If host files are given out, alterations will need to be made to script ;p. It's currently customized to your system in some major ways.

Also, another point to make about the list is that applicants are put in order. Meaning, first come first served. When someone is accept or declined, they are removed from the list. Also, if declined they are displayed a pop-up window stating so, and giving a reason (if a reason is applied). If they aren't logged in, the next time they log in they will see the window. Also, if you click the request review verb while a review is pending, it states that you already have a review. So, as far as guess work goes, it's only a matter of time.

It is somewhat risky to allow any Tom, Dick, or Harry to run a game willy nilly. Potentially, there are thousands of people who can't host on BYOND, and those thousand will jump at a chance for a means to do so.

So, in the end, to prevent the server from bogging down (which in time it would be), a means of moderating is required. In an idea world this wouldn't be necessary, but we don't live in such a place.

Also, Xirre, I think we're just going to have to get together one of these weekends in order to work things out. Our schedules seem to conflict (I work 3 pm to 11 pm mon-fri, and typically am getting ready for work around 1:30 pm).
A while back on an older version of my game, Legend of Another World, I made a system if anything were to go wrong. What it does is it checks a hosted file on a website and that file includes IP addresses. If the host's IP address is in there or if the host can't even access the file(meaning if you try and block the game from accessing the page to bypass it) it will automatically shutdown the game. If they are a douche and want to keep changing their IP address then I can change the value of another file from 0 to 1 which will toggle the strict hostBlocking proc. This one will NOT allow anyone to host whose IP address is not present in a separate file. Meaning regardless of what you do, if your IP does not match then you're not hosting. I can also do it to CID's and BYOND Keys. :) So who will be hosting is not all that much of a problem.

As for who will be hosting. People like Flysbad can volunteer. It will never at all be given to a random person. I'm never the type of person to give out host files or let alone source files to anyone. In fact.. I've never released any source files to even the closest of friends. I just don't because over the computer you don't know if they're hacked or not. As for host files, I'm still strict about that. We have to either go way back or you have to have a reputation of responsibility and activeness in the community. Basically meaning you must be popular and well-known.

Whoever is the host will be shown the rules. Besides, Toby, we are still the only people who can release admin powers out. :) - As for the script with the byond world IP.. I think I can fix that with ease. I'll try and test it out now.

I'm still hoping A.T.H.K. will try and help us out in this matter though. I haven't talked to him since Monday if I remember correctly. He must be busy.
Also. Toby, if you want to you can either do it yourself or get someone else to do it --> Make some instructions on the Hub page. If not, I can do it Friday.
In response to Xirre
Instructions on what? Uploading and Running a game? Also, requesting hosting?

By the way, I've create a decent file explorer that I think we should implement into the game ;).

Kinda looks like a crappy windows file explorer(whatever it's called).
In response to Xirre
Oh, and by the way. The problem has to be either byond compatibility with Unix or perhaps the settings of your computer. It just doesn't make sense that it works perfectly on my PC but not yours, ya know? I do hope we get the shutdown issue resolved soon so the system can be used. Without the shutdown system I have a feeling your computer would be overrun with un-wanted servers.
Yeah.

And that sounds like a good idea. Just send the files over and I'll pop it in. :).

That's fine.

Unix uses shell scripts and stuff. Windows isn't like that. They are very much different. ATHK told me to look up a command called shell(). It has some parameters.
mob/verb/dir(Path as text)
shell("dir [Path] > dir.out")
usr << file2text("dir.out")


Format:
shell(Command)
Args:
Command: system command to run
Returns:
null on failure to execute command
exit code of command otherwise

Looks like it runs commands simply.
I'm going to construct a new environment and test "DreamDaemon [path] [port] [settings]" and see if it actually runs it on Unix.
shell("DreamDaemon './Xirre/LNYM/LNYM.dmb' 5009 -trusted")

Performs the same task as

DreamDaemon '[path of the current shellhosting game]/Xirre/LNYM/LNYM.dmb]' 5009 -trusted

in my Unix Terminal. So basically by including ./ it uses the current directory and then goes on. 5009 can be a variable called Port obviously. and the settings can be set by the admin themselves so people can't do anything stupid lol. I'll set it safe.

Now I'll be testing the output of the actual byond link of the hosted game.
And here's another update!

mob/verb/Test()
shell("DreamDaemon './Xirre/LNYM/LNYM.dmb' 5009 -trusted")
usr << "Started."
usr << "byond://[world.internet_address]:5009"

Outputs: Started.
byond://**.***.***.**:****

(I masked it for security reasons.)

The only problem here is finding the port. But in the server we have now, the port is already found. It was the IP that was the problem. I told ATHK, what if I created more DreamDaemon files and renamed them to "DD6000" and "DD6001" and so on. Then instead of doing shell("DreamDaemon [path] [port] [settings]") I do shell("DD[port] [path] [port] [setting]"). So that way it'll be easy to find using a shell command and then I can return the PID to the game and the game can use the kill shell command on it. :)


I've been using my old Shell Server codes to test this out btw. We don't need 'em as we've already surpassed all that we'll ever need from what I've done lol.
mob/verb/Shutdown()
shutdown("byond://[world.internet_address]:5009",1)
src << "Shutting down your server. byond://[world.internet_address]:5009"


Does not work. I tried seeing if we could store ports in a user variable list and then have the user choose which port he wants shutdown. That way we can't mess with other peoples ports. Then it runs the shutdown proc. But nah.. It did nothing. Lol. I'm going to look in deeper.
You need to store the proccess's PID this is the safest way if you have multiple worlds and makes everything cleaner.

Here's some documentation on getting a PID after/while starting a process in Linux - http://serverfault.com/questions/205498/ how-to-get-pid-of-just-started-process

As for used ports, just return the log file, grep the log file for an error or a simple python/bash script to check the PID's port.
So get the log file and grep "World opened on Port whateverportwasgiven"? Right?

I'll be reading up on the link you gave me.
grep is more of a hacky way bash or python script with the PID returning the port is the best way.
Sorry. Not to aggravate you.. But the way you worded that, even after going through rereading it 5 times I'm still at a loss. I've seen bash around and I know what python is used too, but I don't know exactly what their description is in terms of grep. So I'm at a loss.
Page: 1 2 3 4 5 6