News:

want some cool sounds while you browse the boards.... see the new collapsable web radio section on the LHS, below birthdays, on the Front page

Main Menu

local proxy

Started by burper, March 04, 2004, 05:46:52 PM

Previous topic - Next topic

burper

I am writing a local fibs proxy. My primary reason for doing so is to provide a solution for the ChouetteBot client-side issues, but there are plenty of other things it can do as well. For instance, all sorts of uniform features across all the clients.

The proxy would be installed as a daemon on the users machine,  or otherwise started up before any client. The client software needs to be re-configured to access localhost instead of fibs.com, afterwhich all communication to and from the client and fibs will pass through the proxy.

The proxy is written to do more than simple filtering. It is task based, so that arbitrary things can be done with text on both the upstream and downstream sides. For instance, when an invitation is submitted by the user on the upstream side, the permanent task for detecting this is triggered which replaces the invitation with a repbot query string and inserts a task on the downstream side to listen for it's reply. When that task is triggered, it either submits the invitation (as a task back on the upstream side) or inserts a downstream notification to the user on the downstream side. This task-based "filtering" is very flexible and powerful.

The local proxy would have a GUI that would allow the user to customize it's behaviour and to provide additional features not currently found in all GUI clients. For instance, the non-playing bots TourneyBot and RepBot suffer from the lack of a rich interface, being restricted to text lines. A local proxy could provide a GUI for these. This is also along the lines of what ChouetteBot could benefit from.

So, if you've read this far and understand what I am writing, go ahead and comment, especially if you have ideas for features or designs of what the GUI could look like. What features are missing, underimplemented or not uniform across the available clients? As far as the GUI goes, I'm thinking it is just an icon-sized menu that allows users to pop-up the various other GUI pieces when they want and also shows status and perhaps can do visual/audible notifications

webrunner

#1
How about:

- autoreject on bad rep
- complete gag possibility (shouts, tell, invite, kibitz, everything)
- tourneybot interface
- profile
- peer to peer file transfer
- playing of sounds.
- smiley implementation
- picture or avatar icon
- link to the fibsboard profile (info and picture sharing, clickable)
- online rating posting to the fibsboard (i can make a field for that in the profile)
- different games.( I would like to play chess or Go sometime against one of you guys. ;) )

Just so you guys know.. i could set up a server on a 800 mbit connection (wow!).
Not for free but very cheap.
This can create extra possibilities. It wouldn't have to be a local proxy but we can host it. This way it is easier to manage and also easier for users.
Also we can expand with extra games or servers  (rooms if you like).
or am i taking it too far now??
:wacko:
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper

Great ideas all, keep them coming!

"autoreject on bad rep": actually, as fas as CLIP goes, you just ignore the invitation. Is it annoying in some clients to get a popup you have to whack? In that case, yes, this proxy could fix that. Any other filter for invitations? Low experience?

"complete gag": yes. make them totally disappear. no messages either.

"tourneybot interface": yes. lots to do here, both for users and TD's. track users, do notifications, tell to each player in tourney, setup a tourney from saved prefs

"profile": i plan to implement the javafibs profile thingie so gender and country show up. I'm also dabbling with the idea that if the address field of a user contains a suitable URL, and that URL is reachable and contains certain (small) files, all sorts of extra things can be done.

"P2P": hmmm, doesn't seem like the job of a fibs client. explain.

"sounds": sure. if other users of the proxy are detected, lots of things can happen here.

"rooms": yes, if other users detected. what to do with non proxy users, nothing?

"preferred matches": yes. can be plenty fancy here. auto-suggest maybe, when ready is on. auto-reply to invitations outside your range.

others i have on the list:

-auto-wait for saved match opponents and tourney opponents (TB and fibsleagu), and a persistent list if you want. don't use the waitfor command, just do local notifications.

-repbot stuff: auto-vouch based on finishes, list tracking-notification when changes, warnings, automatically check if *you* are inviting a bad rep player (stifle invitation until rep is checked)

-I heard that some clients are not so good at saved match import/export. maybe theres work to be done here.

burper

Agreed Matt. For this kind of stuff, I think open sourcing futureproofs the deal. RepBot proves it. I lost interest, but someone else was able to pick it up and run with very succesfully. You did the right thing with TourneyBot, and I plan to do that with this.

I also agree about starting small and basic. I only wanted to get an idea of the kind of things that might happen down the road, in order to lay the right sort of architectural foundation. The first release will probably include the ChouetteBot required functions and a couple other easier-to-implement items.

In order to best interface with RepBot, I foresee getting involved in that open source project again in order to implement the design Avi has on the books. A CLIP-alike protocol for TourneyBot is another thing I would probably want to get done before interfacing on the client/proxy end.

One easier to implement item might be the implementation of the profile protocol. I would leave everything untouched except the last character which defines the client. I would set the highest order (ascii) bit to indicate that the proxy is in use, so that ascii 'a' would indicate JavaFibs+LP. I would then translate the remaining known clients into using this protocol. Review:

JavaFibs: 33-39
3DFibs: 40-43
MacFibs: 44-47
RealFibs: 48-51
BBGT: 52-53
C4Fibs: 54-54
KFibs: 55-56
PP: 57-58
WinFibs: 59
FIBS/W: 60
TkFibs: 61
MobileFibs: 62-63
FibsCE: 64-65

All these would have the LP bit added in. The actively maintained clients would be invited to use the above numbers.

webrunner

#4
Quote

"P2P": hmmm, doesn't seem like the job of a fibs client. explain.

If you want to use sounds, it's nice that we can send funny sounds to eachother.
This way you can play new sounds and keep it funny.
If the user on the other side doesn't hear the sound, i can send ity to him/her.

One of the first chat clients called powwow worked like that (this was befor icq, yahoo, aol and msn messenger).
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper

Okay, gotcha. Actually, if 2 clients can establish a connection, then any private chat between the two could be conducted over that connection instead of via fibs, thus offloading that small amount of bandwidth from the server. Perhaps full featured jabber clients could even be used.

webrunner

:yes:  :yes: Now you're talking :)
:yes:  :yes:  
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper


Here is a look at the "Fitlers" GUI I am planning for the local proxy:
http://www.fibsboard.com/chouettebot/filters.html

I still need to build in a way to exchange filters between users by name.
I.e. after chatting with user abc, I want to upload their cool filter they have named coolfilter.
The GUI has some easy way to do this, and the extended protocol (both users are using the proxy) can make it happen.

Filters are automatically persistent.

I also forgot to draw in event options for game events, and actions for playing sounds etc...
Another action is to log in a file by username, or otherwise as appropriate.

burper

function: delayed tell. leave a message for someone who is currently playing, to be delivered when their match is complete.

webrunner

A lot of pleople have more users playing on the same computer.
It would be nice if there where user profiles wich have different settings.
^_^

"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper

That's a good question. But, it's one I'm going to defer for awhile while I focus on the core bit I'm trying to get into the first release, which will be the beginnings of the TB GUI.

burper

I am almost ready for a pre-alpha version. See: http://fibscompanion.sourceforge.net. I think within a week or so.

This first release will not include very much for end users, I am simply trying to lay down a solid framework for the plugins. It will only include a small repbot gui for example purposes mostly. It's working pretty well for me, and I have taken to using it regularly. The pre-alpha version will only be a jar file, as I haven't thought about packaging for various platforms at all. Maybe JavaWebStart?

If anyone is so inclined, they are welcome to join the project and help out with coding or documentation. Another simpler way to help is improved the graphics/icons. I am a bit weak in that department ;) Also, testing on the various platforms will become important. At some point, I would like to localize for several laguages, which will only involved translating a simple file. I have my daughter working on Espanol already. That work could be done here in the forum even.

webrunner

I've got about 3000 icons right here.
Just tell me where you want them.
Also i can help you with some other graphics if you want.

And.. of you want a seperate forum for this.. just let me know!
(would be a great i dea in my opinion.. since i know the forum of sourceforge isn't exactly fantastic).

"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper

#13
Okay, here are the images I am using so far. Mostly, they are png files, indexed, with alpha Channel. I like the look of transparency, but the downside is you cannot control the background in some situtations. The menu choices are 32x32.

When the proxy (called FibsCompanion) comes up, it is in a native frame, but internally is just a menu target (JLabel):



The icon in the title bar, and when minimized is:


When you click on the target, you get a menu with the following icons in vertical order:
Configuration
Connection
Quit

There will also be a Help choice ahead of Quit. Note that when a client connects, the Connection menu item is enabled and switches to look like the frame icon. I hope it's ok to borrow the fibs/fibsboard L&F? The Configuration, Quit and Help icons are the highest priority.

Oh yeah, when the connection is active, the added features are in the Connection submenu. At first, only the sample plugin "RepAlert" will be included, and that menu item looks like:


which is, of course, borrowed from alef. See how the community is already helping me out? ;)

The tourneybot GUI will also need an icon, maybe a trophy or something?

I am open to any and all opinions and comments. I am not a graphic artist (obviously), so you can not insult me, at least on this issue.

Putting it all together, on a windows desktop, it would look something like:


The Configuration dialog looks like:

webrunner

"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper

Out of all those images, I only got what two of them would be used for: the TourneyBot icon (love it!) and the help icon. Thanks webrunner!

webrunner

just tell me if you need more.. and what you need them for.
I will look for specific images. ;)  
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

burper

#17
Here is my first messages resource bundle for the Fibs Companion. Any comments on the phrasing (in english) are welcome, as well as any translations. If you have never done software localization work before, it is only the stuff on the right of the = that should change :) The .tooltip version for each one will help you understand what the thing is, as well as looking at the pictures above. A tooltip is the little bit of text that pops up when you hover your mouse over something. If you have any questions, please ask. Oh yes, you will be given full credit for your translation work of course! ;) And if you want to add a language not listed in the bundle yet, go for it.

The way this will eventually work, I think, is that the OS's locale will be read and the default configuration for both language and country will be adjusted automatically. The configuration dialog will allow you to change either one, and will be a selection by flag icon, even for language (unless anyone has a better idea).

A cool idea for a future plugin would be to make a horizontal row of (internationalized) icons for common phrases that generate the correct kibitz for the person you are playing (if they are using the FibsCompanion or JavaFibs, or any other client that implements the JavaFibs profile protocol thingie. It would start with these: http://fibs.com/languagesdictionary.html  but expand over time with input from users, or maybe via some fancy dynamic sharing mechanism.

On to the bundle:

// to close a window:
fc.general.close=Close

fc.title=FIBS Companion
fc.menu.tooltip=Click here for access to the features of the FIBS Companion
fc.menu.config=Configuration
fc.menu.config.tooptip=Configure the network and logging settings of FIBS Companion, and control your personal profile
// connection, as in a computer network connection
fc.menu.connection=Connection
fc.menu.connection.tooltip=Access connection features here when your client is active
// software help
fc.menu.help=Help
fc.menu.help.tooltip=Help topics for the Fibs Companion and installed plugins
fc.menu.quit=Quit
fc.menu.quit.tooltip=Stop the Fibs Companion and break all FIBS connections

fc.configuration.title=Configuration
fc.configuration.network.description=If you don't know what you are doing, do not change these. They should work just fine unless fibs.com has changed.
fc.configuration.file=File name
fc.configuration.file.tooltip=The local file where the configuration settings are stored
fc.configuration.network.targethost=FIBS host
fc.configuration.network.targethost.tooltip=This is the FIBS/CLIP compliant host you want your clients to use
fc.configuration.network.targetport=FIBS port
fc.configuration.network.targetport.tooltip=This is the port number of the target host you want to connect to, no matter what port your client uses
fc.configuration.network.localport=Local port
fc.configuration.network.localport.tooltip=This is the local port number that the Fibs Companion accepts, and must match the port number configured in your client

fc.configuration.profile.title=Profile
fc.configuration.profile.description=These settings will overwrite anything your client has set.
fc.configuration.profile.name=Your Name
fc.configuration.profile.name.tooltip=Your real life name (not your fibs username). This is optional.
fc.configuration.profile.gender=Gender
fc.configuration.profile.gender.tooltip=Your gender. This is optional
fc.configuration.profile.country=Country
fc.configuration.profile.country.tooltip=Select your country. This is optional, but recommended, since it helps localize the Fibs Companion for you.
// add country names perhaps later
fc.configuration.profile.language=Language
fc.configuration.profile.language.tooltip=Select your preferred language. This is optional, but recommended, since it helps localize the Fibs Companion for you.
fc.configuration.profile.language.english=English
fc.configuration.profile.language.french=French
fc.configuration.profile.language.german=German
fc.configuration.profile.language.italian=Italian
fc.configuration.profile.language.spanish=Spanish
fc.configuration.profile.language.portugese=Portugese
// more later

// logs, as in stored information
fc.configuration.logs.title=Logs
fc.configuration.logs.description=These logs display general information about the activity of the Fibs Companion as well as debugging information
// a directory, or a folder, in a computer filesystem
fc.configuration.logs.directory=Log Directory
fc.configuration.logs.level=Logging Level
fc.configuration.logs.level.tooltip=The logging level adjusts the amount of information you would like to display in the logs. SEVERE means that only the most serious messages will be captured. WARNING means that unusual occurances will be logged as well as the SEVERE messages. INFO means that all SEVERE and WARNING messages will be captured as messages that are generally informative.  INFO is the default setting. DEBUG will show every message available, and is generally not needed.
fc.configuration.logs.directory.tooltip=The local directory you want the Fibs Companion to store log files in
// meaning maximum number of files
fc.configuration.logs.nfiles=Maximum Files
fc.configuration.logs.nfiles.tooltip=The maximum number of (rotated) log files you want the Fibs Companion to store
fc.configuration.logs.maxsize=Maximum Filesize
fc.configuration.logs.maxsize.tooltip=The maximum allowed size for log files, in kilobytes
fc.configuration.logs.system=System
fc.configuration.logs.system.tooltip=General system-wide logging messages
fc.configuration.logs.downbound=Downbound
fc.configuration.logs.downbound.tooltip=Messages logging the downbound stream from FIBS to your client
fc.configuration.logs.upbound=Upbound
fc.configuration.logs.upbound.tooltip=Messages logging the upbound stream from your client to FIBS
fc.configuration.logs.downtasks=DownTasks
fc.configuration.logs.downtasks.tooltip=Logging messages from task handling on the downbound stream
fc.configuration.logs.uptasks=UpTasks
fc.configuration.logs.uptasks.tooltip=Logging messages from task handling on the upbound stream
fc.configuration.logs.plugin=Plugin
fc.configuration.logs.plugin.tooltip=Logging messages from the various plugins' activities

fc.configuration.close=Save and Close
fc.configuration.close.tooltip=Save the configuration settings and close the configuration window

fc.help.title=Fibs Companion Help
fc.help.close.tooltip=Close the Fibs Companion Help window

fc.plugin.repalert.title=Reputation Alerts
fc.plugin.repalert.description=RepBot reputations will be displayed in the window below, for users that you invite and users that invite you. For more information, see http://www.fibsboard.com/repbot/

burper

Awesome klic, that was fast!! Thank you
I've got my daughter on the case for Spanish. Now if we can get Tomawaky to do french, that's a very good start for the first version!

burper

Here is a diagram to help understand the companions' role in your fibs connection: