Jump to content

KeyWorld

Members
  • Content Count

    95
  • Joined

  • Last visited

  • Days Won

    8

Posts posted by KeyWorld


  1. Don't say something I didn't write.
     
    It's not because I post a list of technologies than all have to be used, even if it's a base from a good framework, the pros and crons have to be studied before writing a piece of code.
    If I had enough time to write a CP, it will be already done for years but I already have some problems to regularly work on my personal projects to add a new one to the queue.
     
    The exploits i were talking are already in discussion with Xantara and CalciumKid to find the better approach to fix it without potentially provoke a massive hack of a big part of pservers. The main problem of this exploit : it required some fix on templates folder but no servers are using the default one because of theirs custom design (so it's an update that will break all current servers).
     
    I'm not here to promote myself, just to discuss but it seems like when an opinion diverges from yours we just are the bad guys and you need to spit on me to discredit myself and all I said, just grow up guys, I think you are enough older to have a discussion without bashing the guy in front of you.

  2. @Gepard
    Rewriting an emulator from scratch is a lot of work, you can't compare it to a CP. Yeah FluxCP is the most advanced CP currently available for RO (talking about structure, organization, documentation and support), but it's not for this reason it's the best code ever.
    It was a list for general reasons to rewrite a code, not specialy related to FluxCP. Just talking about technologies and organization (not about features since it can be add at all time) :

    • HMVC
    • ORM
    • Namespace
    • Anonymous function/Closures
    • Optionnal ajax support
    • Optionnal Template Engine
    • Hook system


    And of course I investigated FluxCP source code, that's why I complain about it, its structure and its exploits.

    @Haru
    Well I have to agree, if you don't have a talented web developer (and specialized in security audit), there is no point to create a new CP from scratch, you will just create a complete copy of others CP with maybe some more hacks.


  3. Re-writing this pieces of software allow to get better performance, cleaner code, maintainable code, knowing what can be avoid or optimized, using latest technologies features for better experiences or speed up the process, remove deprecated element...

     

    A lot of big softwares are rewriting from scratch from a version to another (just in PHP framework for example: Laravel, Symfony, ...), and they never get so optimized and easy to use.

     

    To finish, it's not because you don't know or heard about exploits that they don't exist.

    Lucky admins, RO hackers seems to have a pretty bad level and just know about SQLI, LFI (and DDOS of course) :)


  4. in that case i'd recommend you go visit your eye doctor, because that has not been said here.

    We saw many of our users struggling with their fluxcp installations and, since the fluxcp repos have failed to help them, we decided to step in and fork to help these users ourselves. and that is all there is to it. I myself like ceres better, but our users were struggling with flux and not ceres, so we're forking flux to help these users.

    No need to be unpleasant with my awesomes greens eyes :D it's what I personally feel when reading this topic.

    To be honest there is no officials control panel suitable for Ragnarok Online, that's why I think it's better to start a new one from scratch instead of using an outdated one, with some conception fails and criticals exploits.

    Did I hear from the past than Hercules was build to look further ? FluxCP is definitively from the past (as ceres, stargame, rudra, etc.).


  5. Am I alone to see this post as an advertising : "Hercules recommend you to use FluxCP, the best CP ever, for your website, and you will get cookies <3 !".

    In my opinion it would be better to create your own CP, or at least, create repositories for others CP (maybe it's planned ?), currently it's a little unfair competition, forcing users to switch to FluxCP when there are some other alternatives (not so good alternatives yeah I know...).

     

    Just my two cents.

     

    PS: Yes I wrote this post just because I don't love FluxCP lol


  6. @hemagx
    You should at least check what you wrote in the configs, the error is from you, not from me.

    @all
    Fix an error on the lastest version with doridori and body animation.
    Add a generator, to create your own characters, can be used in a char simulator for example:
    Just complete the url: /generate/body=M-0-0/hair=0-0-0/hats=0-0-0/equip=0-0-0/option=0/actdir=0-0-0
    Info: /generate/body=<sex>-<job>-<clothes color>/hair=<hair style>-<hair color>-<doridori>/hats=<hat top>-<hat middle>-<hat bottom>/equip=<weapon>-<shield>-<robe>/option=<option>/actdir=<direction>-<action>-<animation>

    Have fun~


  7. Updates :

    • [*]Correct 3rd job file name. [*]Robes are now fully working (it was missing the inherent job list). [*]Background color can be change in RORender::$background_color. [*]Add htaccess to avoid access to client directory (if you have content you don't want to share...)

     

    Suggestions ? Bugs ? Problems ? Report it :)


  8. Hmmm...

     

    The guild notice is send with some others guild informations to the client before some parameters to avoid some display problems.

    All npc events runs after all this parameters.

     

    So... It can be done, but there is high chances to have big problems with data not initialized before running the scripts so I don't recommend to do this modification.

     

     

    Or you have to send guild informations without the notice, and send it after running script event, but I'm not sure if the function is used somewhere else.

     

    It will look to something like:

     

    src/map/guild.c

    	if(sd->state.connect_new)	{	//Note that this works because it is invoked in parse_LoadEndAck before connect_new is cleared.		clif->guild_belonginfo(sd,g);-		clif->guild_notice(sd,g);+		//clif->guild_notice(sd,g);		sd->guild_emblem_id = g->emblem_id;	}
    src/map/clif.c
    		//Login Event		npc_script_event(sd, NPCE_LOGIN);++		if(sd->status.guild_id) {+			struct guild *g = guild_search(sd->status.guild_id);+			if(g!=NULL) {+				clif_guild_notice(sd,g);+			}+		}

  9. Awesome! Thank you very much KeyWorld!

    You're welcome !

     

     

    I forget to talk about three known problems related to PHP GD (it sucks !).

    I show you this problems in only one monster : The Bloody Knight !

     1268.png

    [*]Do you see the fire ? There is a white rectangle around. this problems occurs on RGBA images in Sprite files when you try to merge them with the main image.

    [*]Check the shield, there is a white border around it. When rotating an image it's possible to have this problem : the image border is merging with the transparent background (which is white) and cause this bug. I replace the transparent background by a transparent white background to avoid getting a magenta border (or other flashy border).

    [*]Check the shield again, poor quality ! Due to image rotation + image scale.

    The problem n°1 just occurred in some monsters (effects), I don't think there is one hat or character using RGBA frames for now in RO.

    The problem n°2 and 3 can occurred in all monsters/characters, depend of the scale and rotation.

     

     

    To conclude, PHP GD sucks, I have noone of this problems in javascript (<3).


  10. GMs accounts are supported but don't render the GM skin (just the basic job).

    Try to remove the cache (index.php) during the test:

    Cache::$time = 15 * 60 ; // cache for 15 mins (set to 0 if you want to disable cache).

     

    Set it to 0, so if there is a change, you will see it in an instant instead of waiting 15 minutes.

    Try to check that your data files are in the proper location.

     

    You can also add a little check on core/class.Client.php to see if some files are not properly loaded:

    Replace:

     return "data://application/octet-stream;base64," . base64_encode($content);
    }
    }
    
    return false;
    }

     

    By

     return "data://application/octet-stream;base64," . base64_encode($content);
    }
    }
    header('Content-type:text/plain');
    exit("Exiting. File not found {$local_path}.");
    return false;
    }


  11. why i cant see the avatar of my character?

     

    Maybe it can't connect to your DB, or you don't have any files set in the client folder ?

    Try using the debug mode, uncomment the two lines in index.php to know if there is an error:

    ini_set('display_errors', 1);
    error_reporting(E_ALL);


  12. Happy to see you like it ! :)

     

     

    where can i put the custom display can someone teach me

     

    Without using the core files and controllers, you have to do this (good to build a char simulator as ratemyserver has) :

    <?php
     
    define('__ROOT__', dirname(__FILE__) . '/'); 
     
     
    // Loading CORE files
    require_once( __ROOT__ . 'core/class.Controller.php');
    require_once( __ROOT__ . 'core/class.Cache.php');
    require_once( __ROOT__ . 'core/class.Client.php');
    require_once( __ROOT__ . 'core/class.DB.php');
     
     
    // Initialize the client (load GRF, load DB, etc.)
    Client::init();
     
     
    // What do you want to display ?
    // Full Character ?
    // So include the render needed
    require_once(  __ROOT__ . 'render/class.CharacterRender.php' );
     
     
    // Set up the header
    header('Content-type:image/png');
     
    // Since you use class.CharacterRender, use it :
    $chargen                 = new CharacterRender();
     
    // Set your datas here
    $chargen->action         = CharacterRender::ACTION_READYFIGHT;   // You can see constants in
    $chargen->direction      = CharacterRender::DIRECTION_SOUTHEAST; // render/class.RORender.php
    $chargen->body_animation = 0;
    $chargen->doridori       = 0;
    $chargen->sex            = "M";
    $chargen->class          = 4002;
    $chargen->clothes_color  = 0;
    $chargen->hair           = 5;
    $chargen->hair_color     = 12;
    $chargen->head_top       = 0;
    $chargen->head_mid       = 0;
    $chargen->head_bottom    = 0;
    $chargen->weapon         = 0;
    $chargen->shield         = 0;
    $chargen->robe           = 0;
    $chargen->option         = 0;
     
     
    // Generate the image and display it
    $img = $chargen->render();
    imagepng($img);
     
    ?>


  13. What ? Session don't protect from Brute force attack.

     

    Session: give a key stored in a cookie to reference some variables on the server. If you clean cookie (or just don't create it), server will not recognize you.

     

    The best ways I see:

    • Use RECaptcha.
    • Send a mail with a key to confirm registration (avoid getting invalid mail), and maybe checking the mail in a black list.
    • Store IP adress for some times in a database, to block the next registration with the same IP the next time until a specify date.
    • Just chek in your ragnarok database the IP stored in login and login_log to avoid creating an account if the IP is present more than x times.

    CRONS:

    • Captcha can be bypass if you pay some guys on china (or somewhere else) to resolve captcha you send to them (but I still recommend RECaptcha it's the best in the market).
    • IP restriction is totally useless in case of proxy or botnet.

     

    Hope it help.

×
×
  • Create New...

Important Information

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