Jump to content

Habilis

Members
  • Content Count

    225
  • Joined

  • Last visited

  • Days Won

    20

Everything posted by Habilis

  1. The only other thing I can say is , review your char-server.conf and map-server.conf ...
  2. Did you diff your client? using like a NEMO patcher? put a checkmark neaar this in NEMO Disable Packet Encryption Sorry, that's about all I can say...
  3. ... Step ??? You put the date of your client? you need to diff your client.
  4. When you recompiled your server did you run ./configure with the date of your client? like so ? ./configure --enable-packetver=YYYYMMDD make clean make sql Also when you diff your client try to apply following diffs Disable Packet Encryption What else?
  5. You are running your emulator as root. This is unnecessary and more than that, it is illadvised... If you are using Debian/Ubuntu as operating system for your VPS you can check out guide in my signature, a decent way of installing Hercules emulator.
  6. Try guide in my signature, installed a fresh server off of it few weeks ago. It is for linux setup (Debian), but the config part should be ok no matter the OS.
  7. Day 4 2/2 : One more little thing in client graphics Using this free character selection screen available here in Herc Downloads, made myself a new character selection screen Decided not to change the default theme of the interface as Over the years it became almost a RO's business card....
  8. Day 4 2/2: SQL security work takes form I moved forward with the SQL security work So basically here is the main idea of how It works and here are some pieces of my SQL code DECLARE _ragDBWebUserViewer VARCHAR(32); DECLARE _ragDBWebUserViewerPass VARCHAR(32); SET _ragDBWebUserViewer = 'ragdbwebviewer'; SET _ragDBWebUserViewerPass = 'huji' ALTER TABLE login ADD COLUMN emailverrif VARCHAR(32) NOT NULL DEFAULT '' AFTER pincode_change; DELIMITER // CREATE PROCEDURE WebRegisterNewRagPlayerOne ( IN login VARCHAR(23) , IN email VARCHAR(39) , IN password VARCHAR(32) , IN sex ENUM('M','F') , IN emailverrifhash VARCHAR(32) , OUT returnparam INT(1) ) proc_webreg:BEGIN -- -1 Unhandled error DECLARE EXIT HANDLER FOR SQLEXCEPTION SET returnparam = -1; SELECT userid INTO @loginalreadyexists FROM login WHERE userid = login; SELECT email INTO @emailalreadyexists FROM login WHERE email = email; IF @loginalreadyexists NOT NULL THEN -- -2 Login already exists SET returnparam = -2; LEAVE proc_webreg; END IF; IF @emailalreadyexists NOT NULL THEN -- -3 Email already exists SET returnparam = -3; LEAVE proc_webreg; END IF; -- 4085943947 (2099-06-24) INSERT INTO login (userid, email, user_pass, sex, emailverrif, unban_time) VALUES (login, email, password, sex, emailverrif, 4085943947); END // DELIMITER ; GRANT EXECUTE ON PROCEDURE ragdb.WebRegisterNewRagPlayerOne TO _ragDBWebUserViewer@'localhost'; DELIMITER // CREATE PROCEDURE WebRegisterNewRagPlayerTwo ( IN emailverrifhash VARCHAR(32) , OUT returnparam INT(1) ) BEGIN -- Hey it's not a tutorial ;) END // DELIMITER ; GRANT EXECUTE ON PROCEDURE ragdb.WebRegisterNewRagPlayerTwo TO _ragDBWebUserViewer@'localhost'; DELIMITER // CREATE PROCEDURE RsetPasswordRagPlayerOne ( IN login VARCHAR(23) , IN emailverrifhash VARCHAR(32) , OUT email VARCHAR(39) ) BEGIN -- Hey it's not a tutorial ;) END // DELIMITER ; GRANT EXECUTE ON PROCEDURE ragdb.RsetPasswordRagPlayerOne TO _ragDBWebUserViewer@'localhost'; DELIMITER // CREATE PROCEDURE RsetPasswordRagPlayerTwo ( IN password VARCHAR(32) , IN emailverrifhash VARCHAR(32) , OUT returnparam INT(1) ) BEGIN -- Hey it's not a tutorial ;) END // DELIMITER ; GRANT EXECUTE ON PROCEDURE ragdb.RsetPasswordRagPlayerTwo TO _ragDBWebUserViewer@'localhost'; So basically as you can see there is ragdbwebviewer that has access only to the stored procedures and I will add some views it will have access to like Create View AS SELECT nicnake, level, left join job.... whatever (note I'm not doing select * nor selecting login, email, passwords) The password reset part is a security weakness, but if my website is hacked and ragdbwebviewer credentials obtained, hacker will have to know account login to reset the password... in theory in real life there will be some more layers of security...
  9. Light erotica. While not completely NSFW, Allows room for imagination, to imagine the rest..... and the rest of the story...... (Basically another mind game that I love so much playing with people)
  10. Day 4 1/2: minor adjustments to the graphics Improved that banner, even-though, I don't expect to pay $ to the tops to be able to put it.... Added a little credit to the graphical content made mostly from Daifuku's graphical content (Will work some more later to make it blend better...) Improved a little Watermark see on screenshot
  11. Okay, dans ce cas utilise FluxCP...
  12. En fait, les checks comme ca, ya pas de protocole. Fonction utiliséé c'est fsockopen pas mal standart.... Essai de rouler ce script vraiment minimaliste (Fait par quelq'un pour eAthena OMG...) que j'ai adapté en 2 secondes <?php $Status = ServerStatus(); ?> <table border="0"> <tr> <td><?php echo $Str_Loginsrv; ?></td> <td><?php echo $Status[0]; ?></td> </tr> <tr> <td><?php echo $Str_Charsrv; ?></td> <td><?php echo $Status[1]; ?></td> </tr> <tr> <td><?php echo $Str_Mapsrv; ?></td> <td><?php echo $Status[2]; ?></td> </tr> </table> <?php /* * Server Status (Return Array of Login,Char,Map State) */ function ServerStatus() { $Srv_Host = "127.0.0.1"; // Login, Char, Map Server Port $Srv_Login = 6900; $Srv_Char = 6121; $Srv_Map = 5121; // Status Text $Str_Loginsrv = "Login Server:"; $Str_Charsrv = "Char Server:"; $Str_Mapsrv = "Map Server:"; $Str_onlinepl = "Player Online:"; $Str_Online = '<font color="green">Online</font>'; $Str_Offline = '<font color="red">Offline</font>'; // Disable Error Reporting (for this function) error_reporting(0); $Status = array(); $LoginServer = fsockopen($Srv_Host, $Srv_Login, $errno, $errstr, 1); $CharServer = fsockopen($Srv_Host, $Srv_Char, $errno, $errstr, 1); $MapServer = fsockopen($Srv_Host, $Srv_Map, $errno, $errstr, 1); if(!$LoginServer){ $Status[0]= $Str_Offline; } else { $Status[0] = $Str_Online; }; if(!$CharServer){ $Status[1] = $Str_Offline; } else { $Status[1] = $Str_Online; }; if(!$MapServer){ $Status[2] = $Str_Offline; } else { $Status[2] = $Str_Online; }; return $Status; } ?> Si la probleme est vraiment la même tu peux commencer a debugger et a jouer avec error_reporting(0); Sinon 90% je suis certain que c'est un port qui n'accepte pas de connexions
  13. D'habitude si le serveur est configuré correctement Autrement dit, les usagers peuvent se connecter. C'est alors lié au probleme avec les ports il faut assurer que tout les ports sont ouverts de cote de ton serveur RO acceptant les connections entrantes de l'exterieur ET de cote de ton ServeurWeb acceptant les connections sortantes sur ces ports...
  14. Dude like..... If you speak French don't struggle! Just Écris le enfrancais.. Ya du monde qui comprennent la langue ici.... I'll check...
  15. Habilis

    Getting time

    well..... 2995424936 secs is 34669 days . 2995424936 / 60 / 60 / 24 = 34669 Maybe it's miliseconds? I'm not that familiar with scripting language..
  16. Habilis

    Getting time

    Ok if it works... You don't at this point ... You do it when you retrieve using something like this Select @Days = (online_time / 60 / 60 / 24) FROM ... WHERE... UPD: Disregard my last, don't perform any calculations at select just do a Simple select into your script Select online_time FROM ... WHERE... then inside your script convert this logic into Herc scripting function GetTimeDiff($online_time) { $how_log_ago = ''; $minutes = (int)($online_time / 60); $hours = (int)($minutes / 60); $days = (int)($hours / 24); if ($days >= 1) { $how_log_ago = $days . ' day' . ($days != 1 ? 's' : ''); } else if ($hours >= 1) { $how_log_ago = $hours . ' hour' . ($hours != 1 ? 's' : ''); } else if ($minutes >= 1) { $how_log_ago = $minutes . ' minute' . ($minutes != 1 ? 's' : ''); } else { $how_log_ago = $online_time . ' second' . ($online_time != 1 ? 's' : ''); } return $how_log_ago; } If you implement it should give you XX day XX hour XX minute XX second
  17. Still Day 3: Alright, I've done one more little thing. The banner made from free banner found at RA... I din't bother with animations, as most places where this banner would go require $ But good thing to do if I really have nothing else to do, would be: - Scale properly logo (remake it with lower font-weight) - Scale features text and animate it Next-up: SQL Security work.... Idea to create a tiny SQL script that would create a DataBaseWebUser in my Ragnarok Database. - Create few SQL views returning player names, scores, levels (obviously not password nor login) Information to make TOPs - Crate 2-3 SQL stored procedures (new user register, password reset, email reset) - make password reset, email reset stored procedures tricky so that they cannot be executed to reset password just like that... and give my DataBaseWebUser access just to those Stored procedures and SQL views in my ragnarok server databse This way if a hacker, somehow breaches into my website and obtains usaername and password of DataBaseWebUser, all he will be able to do to my RO server database is - register an account - select information that already appears in the tops
  18. Habilis

    New life for RO

    Possibly, that's how 2D pic (sprite) might look in high-end 3D environment ?
  19. I've decided not to go with a free hosting as they are all pile of crap. What I'm going to do with free hosting is host my patches and patcher news. As most free hosting forbid to use their services only for file hosting. I don't care, patcher news page looks like a website to me...
  20. Day 3 from new beginning: Some 12 loading screens..... Some of them are really ugly, but they were made from free stuff. And starting from loading screen 8 I begun loosing my imagination. Anyways guys, I really don't know what else should I do for my server client of a Minimal $ investment server?
  21. just create a directory inside Hercules/sql-files call it something like bak mkdir ~/Hercules/sql-files/bak (I don't know where is your emulator in the filesystem... so I made a relative path to users home directory...) Next, dump your databases in that directory using a user with access to your database(s) If you don't know such user or you don't have it, use root (Attention, not the system root, the MySQL root user password) Then just dump database(s) mysqldump -u root -p hercrodb > ~/Hercules/sql-files/bak/hercrodb_backup.sql If you store logs in a separate Database you may dump that too: mysqldump -u root -p hercrolog > ~/Hercules/sql-files/bak/hercrolog_backup.sql then just archive your emulator directory with your backup inside of it tar -cvf HerculesEmulator.tar ~/Hercules I like to use SCP now you can use either SCP or FTP to transfer that archive to your new debian VPS On the other side just unarchive it tar -xf HerculesEmulator.tar -C ~ And Import files from bak directory in your extracted emulator cd ~/Hercules/sql-files/bak Import main database mysql -u root -p hercrodb < hercrodb_backup.sql import logs database if you have it in separate databases mysql -u root -p hercrolog < hercrolog_backup.sql And like Meko said install all dependencies and recompile... After you successfully imported your database(s) and tested server is running just rm -rf ~/Hercules/sql-files/bak for a good measure....
  22. UPDATE: Now That I have the Logo I can start doing stuff with it Like Creating a login screen and Making a screenshot watermark (Thingy that appears in the bottom right corner on screenshots) Nextup, some loading screens.....
  23. 1st of all I want to ask it says [MyWanIP] (there was an actual ip that you changed to this ???) If there were an actual Ip, try using local network ip insted of wan ip If not..... then you need to replace [MyWanIP] to the actual ip adress x.x.x.x (where x sets of numbers...)
  24. ... run those 2 commands inside your emulator directory and paste the output here whoami ls -la for ls -la no need to paste all of it just sysinfogen.sh line and few lines before and after...
×
×
  • Create New...

Important Information

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