Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Just a sneak peek! NanoCP - Page 2
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Just a sneak peek! NanoCP

2

Comments

  • AnthonySmithAnthonySmith Member, Patron Provider

    Nice one :)

  • fully functional one is www.revengewaronline.com ( this is v2 standard php loads of files ) the one im currently making is like 1 file handles everything and some what like a framework.

  • @AnthonySmith said:
    Nice one :)

    Thanks. :)

  • @VPSRAIDSolutions said:
    Thanks. :)

    It wasn't for you, I think. But if it was for you, he was being sarcastic.

    @AutoSnipe Good job!

  • @cassa said:

    Thanks for ruining it though :)

  • @VPSRAIDSolutions said:
    Thanks for ruining it though :)

    No problem mate ;-)

  • Back on topic.. Good luck with making a control panel dude, I know from personal experience it's not easy! I bet it'll be great by the time we see it on your brands :)

  • I'd probably be good if you setup a private repo where people can contribute. Get work done faster than way.

  • SplitIceSplitIce Member, Host Rep

    The first thing I would say is don't let the webserver connect to the nodes, utilize a backend service to do the work. That way the SSH keys to communicate the with nodes can be kept on a server that doesn't run on a web node which is a recipe for disaster.

    Its not too difficult, a good job manager should abstract most of the complexity for you.

    Thanked by 2vRozenSch00n Leechum
  • @Zen said

    The best solution is message queue style system, but that's a more advanced technique that no current cheap publicly for-sale virtualization panel is currently using.

    This point which you mentioned , basically my understanding about this is

    server1(master) -> send command to rest api -> server2(slave) / server1(slave) -> command is sanitised and stored in db -> cronjob running per min executed -> throws a message -> server1 (master) -> here nodeJS can do live notification sort of thing ??

  • @Zen said:
    Your guess on the NodeJS part was close but still far off. You don't need to use NodeJS for frontend<=>backend messaging - Websocket implementations are available in all high level languages (php - http://socketo.me - python - https://pypi.python.org/pypi/websockets - ruby - https://github.com/faye/faye-websocket-ruby - nodejs - http://socket.io), and HTTP streaming (http://en.wikipedia.org/wiki/Push_technology#Examples), or actual MQ systems (http://www.rabbitmq.com) are available and implemented too.

    I planned on using nodeJS.

  • AnthonySmithAnthonySmith Member, Patron Provider

    cassa said: he was being sarcastic.

    I was?

  • looks awesome!!!

  • Well at current im having multiple setups to see which is the best way of doing it all (since there are hundreds of ways to do it this may take some time)

    But i can tell you, custom php based api (on slave) is looking quite well. Easy to understand.
    With encoded variables and access keys/ip addresses

    I litterally wrote ~200 lines on my galaxy s5 last night while in bed which wasnt fun, but my laptop was busy lol

    Now, i have to ask. Can anyone confirm (as it looks) that feathur direct connects via ssh from master to slave.
    It is what it looks like through their code.

    Anyway its a fairly big day today gotta do stuff with the kids. So keep these suggestions coming. :)

    Regards,

    Ryan

  • Basically looking at their setup code you get a SSH RSA key when you finish the setup



    public static function server_connect($sServer, $sAPI = 0){


    this function uses NET_SSH2 to connect to servers using their ip address later on

        if($sServer->sPassword == 0){<br />
            $sKey = new Crypt_RSA();
            $sKey->loadKey(file_get_contents('/var/feathur/data/keys/'.$sServer->sKey));<br />
        } else {<br />
            $sKey = file_get_contents('/var/feathur/data/keys'.$sServer->sKey);
        }<br />
        try {<br />
            if (!$sSSH->login($sServer->sUser, $sKey)) {<br />
    

    this makes the connection work

  • Feathur executes the commands over SSH, all commands are stored in a MySQL database as an array and then they are also sent over as one command every minute (executed via cron) (I assume since they want to be near instant) over SSH. Uptime monitoring is also executed via cron/SSH on each slave server. They store RSA private keys for each of the slaves so that the master is able to connect and execute the commands later. From what I can tell the client (frontend) executes an AJAX call to the backend which then adds the command array to the database and waits for the cron to complete in which the AJAX call is successful and the frontend displays it as successful.

  • perennateperennate Member, Host Rep
    edited October 2014

    @definedcode the cron seems to only be used for background tasks like resetting bandwidth, synchronizing templates, etc. VM actions are performed instantly without involving cron (see for example vps.kvm.class.php:193), it doesn't make much sense to wait a minute.

  • @perennate said:
    definedcode the cron seems to only be used for background tasks like resetting bandwidth, synchronizing templates, etc. VM actions are performed instantly without involving cron, it doesn't make much sense to wait a minute.

    Ah yes, correct.

    Shown by these lines: https://github.com/BlueVM/Feathur/blob/Testing/feathur/view.php#L99-L118 and this for example: https://github.com/BlueVM/Feathur/blob/Testing/feathur/includes/functions/vps.openvz.class.php#L226

  • I like the design. I hope you win over SolusVM and Feathur customers, and that this is something that you continue to improve and doesn't just collect dust.

    Just some questions/suggestions:

    • What programming language is this coded in (PHP, Perl, etc)?
    • Is the VPS root password stored in the database as plain text or with some two way encryption?
    • Does it send emails for things like people logging in?
    • Does it use proper hashing for user passwords (like Blowfish?
    • Are you considering adding two factor authentication?
    • I don't see an option to access the VPS through VNC. Is this something that you're considering?
    • You may want to have it tell users and you that a node is down. I hate when SolusVM or WHMCS just comes up and says "Connection timed out" when I try to access a VPS that is down because the node is down.
  • Its basically an instant call according to the code as soon as a request is made it execute the function through static method. So , basically its like instant. Its okay for master to exeecute commands within its self but when it comes to slave point of view like @AutoSnipe said depending on the connection things might slow down its upto us to figure that part out.

  • @ub3rstar

    i doubt this will become a project that gathers dust, as i am planning to use it for all nanovz/megavz/budgetvz Customers as the panel for it.

    1) PHP
    2) there is two way encryption in place for Passwords stored in DB
    3) no it doesnt but if people want this, i can surely add functionality for Mandrill or other SMTP Services easy enough
    4) as above
    5) unsure as of yet, but it may be likely this will be a feature added later on
    6) VNC is a work in Progress. and will probably added later on too
    7) Yes, that is exactly what is going to happen, you wouldn't believe how much it frustrates me when i see that, and if there is people requesting it, i could add feature for it to send a mass mail saying the node is offline or something.

    @vpsraidsolutions
    Trust me on this, PHP API is the Way to go with Contacting Slaves.. it is so much faster, just a problem since you need to be running php as a root user to be able to use vz* Commands which may cause some problems. but surely will find a work around soon enough.

    Regards,

    Ryan

  • edited November 2014

    @AutoSnipe said:

    I want to achieve the same with pure php mysql ajax without the need for python or other languages you get a work through let me know I'll appreciate the help ! , are you going framework / standard ?

  • Looks good good luck with your project :)

  • Emails to Beta testers have been sent off :)

  • @AutoSnipe said:
    ub3rstar

    i doubt this will become a project that gathers dust, as i am planning to use it for all nanovz/megavz/budgetvz Customers as the panel for it.

    1) PHP
    2) there is two way encryption in place for Passwords stored in DB
    3) no it doesnt but if people want this, i can surely add functionality for Mandrill or other SMTP Services easy enough
    4) as above
    5) unsure as of yet, but it may be likely this will be a feature added later on
    6) VNC is a work in Progress. and will probably added later on too
    7) Yes, that is exactly what is going to happen, you wouldn't believe how much it frustrates me when i see that, and if there is people requesting it, i could add feature for it to send a mass mail saying the node is offline or something.

    vpsraidsolutions
    Trust me on this, PHP API is the Way to go with Contacting Slaves.. it is so much faster, just a problem since you need to be running php as a root user to be able to use vz* Commands which may cause some problems. but surely will find a work around soon enough.

    Regards,

    Ryan

    Simple and secure solution. Configure sudoers with limited commands on a non-root user. Upside as well is no chance to exploit the daemon/script with elevated permissions.

  • @pcfreak30 you are a mind reader as that is exactly what i have done :)
    Just needed a good nights sleep before i thought of it :p

  • AutoSnipeAutoSnipe Member
    edited November 2014

    New Template with some features that have been finished up..

    New Features are:

    Bit Cleaner Code (YAY!)
    Rage4 Anycast DNS (with GeoDNS Support)
    Snapshot Tools (Active for 24 Hours before File is Deleted)
    IPv4 AND IPv6 Traffic Monitoring
    Ability to Create Dedicated IPv4, NAT IPv4 + IPv6, IPV4 ONLY and IPv6 ONLY  VPS Containers.
    Ability to Create Custom Port Requirements.
    
    
    And going to be working on Migrate to New Server feature, unsure how it will go but it will happen :)
    

    Check out some Pics

    http://imgur.com/a/jvSx4

    For the Beta Testers, in the next day or two, this version will replace the current version that you see. and will come live with the NAT IPv4 VPS Trials.

    Thanked by 2trexos netomx
  • @AutoSnipe

    Looks nice, lookijg forward to the update :)

  • You're welcome Trexos :)

    I even got around to making the "node not responding" script to shutdown the interface for containers on specific nodes. so all is going well i think :)

    Just one or two "Urgent" things i need to do to it before it goes up, but since i'm busy tomorrow thought i would add a bit more of a peek on here :)

    and for reference, ALL Forms on this version are working 100% :)

    Hopefully i don't have more ideas to put into it.. at least not yet.. i'm starting to miss going out for random drives :-P

  • @trexos @wych @petabyet @netomx @brad @trewq

    First of all, you all should have a New VPS Server showing in the Panel. This Extra VPS is the NAT IPv4 VPS as Promised. You're passwords can be found within the Panel.
    Location for NAT VPS Testing is Datashack, Kansas City, MO


    New Version is online, has added features of Rage4 DNS. and Snapshots (only available on the NAT IPv4 Systems currently, due to the amount of space i've allocated to the Dedicated IPv4 Containers

    Migrate tool is under Construction.

    Regards,
    Ryan

Sign In or Register to comment.