Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   Code Gallery (https://forums.graalonline.com/forums/forumdisplay.php?f=179)
-   -   GScript FTP Server (https://forums.graalonline.com/forums/showthread.php?t=134261400)

cbk1994 12-25-2010 07:17 AM

GScript FTP Server
 
1 Attachment(s)
Remember how I said I wasn't going to do any more scripts in GScript?

Out of my obsession with backing up servers on Graal, I've made GBall, a system for compressing and expanding files on Graal servers. I've gone a step further now and written a complete FTP server for Graal, supporting file downloads and uploads, as well as complex rights control systems.



The server binds to a random port (it's not possible to specify a port to bind to with TSocket unless it's enabled by Stefan) and listens for incoming FTP connections. You can connect using any FTP client. I've tested the FTP client built into Windows Explorer, Filezilla, Transmit, and Cyberduck.

The port will change every time the server restarts or the FTP DBNPC is updated. You can use "/npc ftp" in RC to get the new port and host.

Features
  • Download files or entire folders (easy backups)
  • Compatible with virtually any FTP client, tested in several (see above; be sure to report unsupported FTP clients so I can fix the error)
  • Complex rights control based on the player's folder rights, prevents accidently giving a user too many rights (see below)
  • Writing is supported (see below for issues with uploading), and can be disabled for any user or for every user easily
  • Move, rename, or create directories

Active transfer mode is not supported; you must use passive mode.

Disclaimer
I wrote this out of sheer boredom, since I have no use for it now since I don't run a server, but I hope this may be useful. Keep in mind that while I have tested this as much as possible and can't find any security holes, they may exist. Please report any bugs and I will release a fix as fast as I can.

A note about uploads
Due to my nemesis, the flood alert, it's not possible to upload too much data. If you do, no scripts on the server will be able to write (or read?) to/from files. It is to your advantage not to cross this limit. There is no limit for reading. You shouldn't run into this problem unless you are uploading more than 10 MB of files in a short time. GScript also can not write to some file extensions. I don't have a list of allowed extensions, but most, such as txt, will work. Some folders also cannot be written to by script, such as logs and all script folders (weapons, scripts, npcs).

Rights system
Folder rights are inherited from the folder rights of the account of the user being used. If the NPC-server doesn't have rights to a folder, that user won't be able to upload or download files there. You can also completely disable writing in the script. If you are worried about security, don't give the NPC-server rights to any folders with confidential files, or just don't use this script.

Setup instructions
  1. Download the attached file and unzip it
  2. Create classes for each of the files named ftp_*.txt in the zip folder, and copy the scripts into them.
  3. Create a new DBNPC named FTP and place the script inside FTP.txt into it.
  4. Give your NPC-server folder rights to any folders you want to be able to access. You can give read or read/write rights. Note that it is a security risk to give the NPC-server rights, so do this with care. You can give rights to specific folders or blanket (e.g. rw */*, rw */*/*)
  5. Setup users in the DBNPC FTP. Follow the format in there and be sure to remove me. The users must be the account name of a player, and they will share that player's folder rights. Community names are not supported for obvious reasons.
  6. Use the command "/npc ftp" in RC to see where the FTP server is currently listening. If your client separates the host and port fields, the host is before the colon and the port is after.

Please report any bugs. Feedback is appreciated.

Thanks to death_striker for lending me his server to develop this on.

Fulg0reSama 12-25-2010 07:22 AM

That's very impressive :oo:

WhiteDragon 12-25-2010 07:25 AM

Wow.

Matt 12-25-2010 07:28 AM

Very impressive, nice work man. :) This will be more than useful to a lot of people. Chris for GST?! :p

fowlplay4 12-25-2010 07:43 AM

Neat, wasn't aware that you could use TSockets without getting Stefan to enable the socket.

zephirot 12-25-2010 08:11 AM

Man you get **** done.

12171217 12-25-2010 08:30 AM

This is very cool o.o

You could assign users a public FTP space for uploads and whatnot, their own little folder.. Very awesome.

adam 12-25-2010 08:48 AM

Very awesome, very wow. ;) Nice job.

Crow 12-25-2010 09:26 AM

Quote:

Originally Posted by WhiteDragon (Post 1618044)
Wow.

My thought exactly. On a side note, I have to spread rep.

Fulg0reSama 12-25-2010 09:34 AM

Quote:

Originally Posted by Crow (Post 1618056)
My thought exactly. On a side note, I have to spread rep.

I have to wait twenty four hours :(

Twinny 12-25-2010 09:56 AM

Awesome work! I would have repp'd except the rep window hides behind the video =x

LordSquirt 12-25-2010 11:16 AM

wow, I don't understand anything you just said, but just wow

Seich 12-25-2010 11:20 AM

Quote:

Originally Posted by WhiteDragon (Post 1618044)
Wow.

^Ditto.

cyan3 12-25-2010 11:57 AM

Nice work.

Deas_Voice 12-25-2010 01:04 PM

wow :megaeek:


All times are GMT +2. The time now is 12:59 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.