These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
12Next page
 

Armada - Small gang tool

First post
Author
Carol Krabit
School of Applied Knowledge
Caldari State
#1 - 2014-05-06 14:34:52 UTC  |  Edited by: Carol Krabit
Howdy

I'd like to share with you a pet project of mine that intends to polyfill some lacking features of the fleet UI in-game. Armada is a tool that lets players create a sort of meta fleet, where its members have access to each others HTTP-header info as exposed by the IGB. This is packed in a compact view that resembles the 'composition' window for FC's, but with added info and convience features like hotlinks to a characters eve-kill page, or the ability to set destination to a members location with a single click.

There is also a feature to share directional scan results with the members of your armada, very similar to other tools, but with the push functionality and persistence of the armada.

The app is really simple to use, just visit http://armada.herokuapp.com in the IGB and it should hopefully be self explanatory. Just create an armada and share the URL that you are being directed to. Alternatively you see the key of your current armada in the bottom left corner, and you can share that for people to insert at the start page.

As soon as the armada has been joined you need to keep the browser window open (or minimized) to broadcast your data to armada members. If you close it you have a grace period of about half a minute to reopen until your session times out and you are removed from the armada. When the last member leaves or times out, the armada will be disbanded.

Of course trust needs to be enabled for any of this to work, and you will be prompted for that as you enter the app.

It would be fantastic if you tried it out and gave some feedback!

Screens:
Main member list
Scan results
Minimal window size (responsive)

Code:
Bitbucket
Carol Krabit
School of Applied Knowledge
Caldari State
#2 - 2014-05-16 17:19:17 UTC
No one?
Rob Crowley
State War Academy
#3 - 2014-05-16 18:44:39 UTC
Looks very useful and quite pretty while not using too much screen real estate.

Are you planning to release the source code so people can run their own server? Cause tbh I see rather serious security issues when whole fleets are live-broadcasting their complete intel to a 3rd party site.
CCP FoxFour
C C P
C C P Alliance
#4 - 2014-05-16 21:06:02 UTC
That is super cool! How are you getting scan results? People copy and pasting?

@CCP_FoxFour // Technical Designer // Team Tech Co

Third-party developer? Check out the official developers site for dev blogs, resources, and more.

Altrue
Exploration Frontier inc
Tactical-Retreat
#5 - 2014-05-16 21:17:20 UTC
Looks cool!

Can't wait to try this out.

Signature Tanking Best Tanking

[Ex-F] CEO - Eve-guides.fr

Ultimate Citadel Guide - 2016 EVE Career Chart

Carol Krabit
School of Applied Knowledge
Caldari State
#6 - 2014-05-17 08:29:12 UTC
Rob Crowley wrote:
Looks very useful and quite pretty while not using too much screen real estate.

Are you planning to release the source code so people can run their own server? Cause tbh I see rather serious security issues when whole fleets are live-broadcasting their complete intel to a 3rd party site.


Yes, I definitely will if there seems to be enough interest. As with most hobby projects (were a part goal is to learn new stuff), the code feels a bit hacky, so I'd like to take some time to clean it up before making it public.

CCP FoxFour wrote:
That is super cool! How are you getting scan results? People copy and pasting?


Yup, copy and paste into the box that pops up when you click the scan button in the bottom bar. It's a bit of a manual step, but I've tried to reduce the interaction by ensuring input box focus when opening, and that enter submits. So as soon as the scan data is in the clipboard [ click button ] > [ ctrl/cmd-v ] > [ enter ].
Myopic Thyne
Accounts Payable.
#7 - 2014-05-23 03:14:19 UTC
Looks neat.

How about longpolling so you can do fleet cloak timers? Also any chance we can see the source?
Carol Krabit
School of Applied Knowledge
Caldari State
#8 - 2014-05-23 06:01:13 UTC
Myopic Thyne wrote:
How about longpolling so you can do fleet cloak timers?


I originally intended to use socket.io for real time communications between the client and server. There are two reasons why I chose not to. Firstly, my original hosting provider (before setting up shop in heroku) didn't allow long polling or socket connections. Secondly, since the relevant data is supplied in the HTTP headers by the IGB, some sort of client side polling would have to take place anyway. You could probably do this by somehow letting the client do ajax requests to itself or something, but it wouldn't be as simple as to inform the server of any state change through a socket.

Myopic Thyne wrote:
Also any chance we can see the source?


Coming up any day now!
Vittoros
Evolution
Northern Coalition.
#9 - 2014-05-23 07:17:05 UTC
Arf.. name collision! https://eve-armada.com/ :)
Swiftstrike1
Swiftstrike Incorporated
#10 - 2014-05-23 21:11:46 UTC
This is very cool, but like someone already pointed out... I wouldn't ever willingly provide this kind of intel to a 3rd party that I am not personally affiliated with.

Casual Incursion runner & Faction Warfare grunt, ex-Wormholer, ex-Nullbear.

Carol Krabit
School of Applied Knowledge
Caldari State
#11 - 2014-05-24 09:48:02 UTC
Vittoros wrote:
Arf.. name collision! https://eve-armada.com/ :)


Oh noes! I guess we'll just have to get along!

Swiftstrike1 wrote:
This is very cool, but like someone already pointed out... I wouldn't ever willingly provide this kind of intel to a 3rd party that I am not personally affiliated with.


I have now made the code public, it's on Bitbucket. I hope I haven't wrecked anything during the clean up process! Gonna add installation instructions ASAP, but anyone who knows Node.js should feel right at home. If you want to change stuff or add features please do so through pull requests!

The app should run fine on free single node solutions on platforms such as Heroku, AWS, Openshift etc. MongoDB persistence is optional, and the app can be run using only in-memory storage (which of course is unreliable unless you know the instance is gonna be running without interruption).

Please report if you have tried to set it up and tell me how it went!
Tarei
Sebiestor Tribe
Minmatar Republic
#12 - 2014-05-29 20:58:23 UTC
This is really cool.

I was able to get it deployed out to my own heroku instance pretty easily, but it doesn't seem to be fully functional. Visiting my heroku link with the IGB didn't redirect properly to the armada link (although the logs show the key being made).

Are there uncommited changes you have that aren't on bitbucket? Also, y u no github.
Carol Krabit
School of Applied Knowledge
Caldari State
#13 - 2014-05-29 22:58:41 UTC
Tarei wrote:
This is really cool.

I was able to get it deployed out to my own heroku instance pretty easily, but it doesn't seem to be fully functional. Visiting my heroku link with the IGB didn't redirect properly to the armada link (although the logs show the key being made).

Are there uncommited changes you have that aren't on bitbucket? Also, y u no github.


Glad you like it, and thanks for trying it out!

Do you use MongoDB or memory storage? I know from experience that Heroku does silent, sporadic reloads of their web dynos, so I would not suggest using the memory option there. Do you use a configuration file or environment variables? Does it work locally?

The master branch is what is running on my Heroku instance. For storage I use a free MongoDB Heroku add-on from MongoLab that seem to work fine. I don't use Github because they do not (afaik) allow multiple private repos for free, Bitbucket does.
Myopic Thyne
Accounts Payable.
#14 - 2014-05-30 05:02:48 UTC
Thank you for releasing the source, I've been wanting to fiddle with Node and this seems like a really cool way to learn about it.
Tarei
Sebiestor Tribe
Minmatar Republic
#15 - 2014-05-30 14:52:35 UTC  |  Edited by: Tarei
Carol Krabit wrote:

Glad you like it, and thanks for trying it out!

Do you use MongoDB or memory storage? I know from experience that Heroku does silent, sporadic reloads of their web dynos, so I would not suggest using the memory option there. Do you use a configuration file or environment variables? Does it work locally?

The master branch is what is running on my Heroku instance. For storage I use a free MongoDB Heroku add-on from MongoLab that seem to work fine. I don't use Github because they do not (afaik) allow multiple private repos for free, Bitbucket does.


I'm using the free MongoHQ addon for my heroku app. It's set via heroku config:set variables. Also, locally I'm using a .env file so that foreman can handle those.

But I am seeing the same functionality locally versus on heroku. It tries to create an armada link, but just never redirects the browser to it. Fair point about github, private repos are a premium.

Here's what it's doing:
http://pastie.org/pastes/9239756/text
Tarei
Sebiestor Tribe
Minmatar Republic
#16 - 2014-05-30 18:28:58 UTC
Actually, it looks like nothing is being written into the database. Is there something up with the storage engine? Memory doesn't seem to be working either.
Carol Krabit
School of Applied Knowledge
Caldari State
#17 - 2014-05-31 12:10:31 UTC
Tarei wrote:


My guess is that there is something wonky with your session handling. Could be that your session signing variables are off somehow. My secrets are like this (with one character replaced):

COOKIE_SECRET: 'DAw23PWDxdSWD'
SESSION_SECRET: 'Kjh5RKSA34lf9'

Try matching that and see if it helps. If not, see what the actual API HTTP responses looks like.

About the data not showing up in mongo; as soon as an armada expires, all related data is removed from there as well. An armada expires immediately when the last member times out. This means that if the session stuff is indeed borked, the armada data in mongo only lives for less than a minute.

Also pull.
Tarei
Sebiestor Tribe
Minmatar Republic
#18 - 2014-05-31 20:16:09 UTC  |  Edited by: Tarei
Carol Krabit wrote:
Tarei wrote:


My guess is that there is something wonky with your session handling. Could be that your session signing variables are off somehow. My secrets are like this (with one character replaced):

COOKIE_SECRET: 'DAw23PWDxdSWD'
SESSION_SECRET: 'Kjh5RKSA34lf9'

Try matching that and see if it helps. If not, see what the actual API HTTP responses looks like.

About the data not showing up in mongo; as soon as an armada expires, all related data is removed from there as well. An armada expires immediately when the last member times out. This means that if the session stuff is indeed borked, the armada data in mongo only lives for less than a minute.

Also pull.


Spot on. Things are working great now.

You might be getting a pull request from me soon with some d3 map action.
Carol Krabit
School of Applied Knowledge
Caldari State
#19 - 2014-06-02 19:28:37 UTC
Tarei wrote:
Spot on. Things are working great now.

Awesome! I hope you find good use for it! I also updated the readme to reflect more in detail what the different variables do.

Tarei wrote:
You might be getting a pull request from me soon with some d3 map action.

Looking forward to it!
Casper Indiron
BeatsWorking
#20 - 2014-06-05 19:40:45 UTC
You mentioned Socket.io for realtime communications. I'm working on an IGB app of my own, and I have yet to find a library (SignalR, socket.io) that works reliably. I have found some chat demos that work in the IGB, but nothing I do locally works. Have you found a library/config that allows you to push data/call client methods from the server into the IGB consistently? Thanks!
12Next page