FIBS Board backgammon forum

local proxy

Author Topic: local proxy  (Read 14081 times)

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« on: March 04, 2004, 05:46:52 PM »
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

FIBS Board backgammon forum

local proxy
« on: March 04, 2004, 05:46:52 PM »

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #1 on: March 06, 2004, 04:41:05 PM »
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:
« Last Edit: April 19, 2004, 07:59:44 PM by webrunner »
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

FIBS Board backgammon forum

local proxy
« Reply #1 on: March 06, 2004, 04:41:05 PM »

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #2 on: March 06, 2004, 07:22:37 PM »
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.

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #3 on: March 08, 2004, 03:27:45 PM »
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.

FIBS Board backgammon forum

local proxy
« Reply #3 on: March 08, 2004, 03:27:45 PM »

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #4 on: March 11, 2004, 11:48:34 PM »
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).
 
« Last Edit: March 11, 2004, 11:50:29 PM by webrunner »
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #5 on: March 12, 2004, 12:24:48 PM »
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.

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #6 on: March 12, 2004, 08:20:13 PM »
:yes:  :yes: Now you're talking :)
 :yes:  :yes:  
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #7 on: March 18, 2004, 03:33:29 PM »

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.

FIBS Board backgammon forum

local proxy
« Reply #7 on: March 18, 2004, 03:33:29 PM »

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #8 on: March 21, 2004, 05:47:44 PM »
function: delayed tell. leave a message for someone who is currently playing, to be delivered when their match is complete.

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #9 on: March 21, 2004, 11:33:00 PM »
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 |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #10 on: March 31, 2004, 09:17:49 PM »
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.

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #11 on: April 19, 2004, 03:44:55 PM »
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.

FIBS Board backgammon forum

local proxy
« Reply #11 on: April 19, 2004, 03:44:55 PM »

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #12 on: April 19, 2004, 07:42:07 PM »
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 |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #13 on: April 19, 2004, 09:51:33 PM »
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:
« Last Edit: April 19, 2004, 10:06:41 PM by burper »

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #14 on: April 19, 2004, 11:31:50 PM »
even more
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #15 on: April 20, 2004, 12:55:39 AM »
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!

FIBS Board backgammon forum

local proxy
« Reply #15 on: April 20, 2004, 12:55:39 AM »

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #16 on: April 20, 2004, 11:49:58 PM »
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 |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #17 on: April 21, 2004, 03:23:45 PM »
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/
« Last Edit: April 21, 2004, 04:08:30 PM by burper »

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #18 on: April 21, 2004, 04:46:31 PM »
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!

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #19 on: April 23, 2004, 03:28:18 PM »
Here is a diagram to help understand the companions' role in your fibs connection:

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #20 on: April 23, 2004, 03:48:37 PM »
Sorry, seems like this has been close for a long time right? Am I just stringing you guys along?
It's just so hard to find a few minutes here and there within which to make meaningful progress.
And funny how when you are about to put your code in front of other peoples' eyes how there is suddenly a hundred things to do! I am ripping the heart out of the networking code and re-doing it right now ;) Otherwise, I am just pushing to get the initial version of the code onto the project site. Here is my plan:
-network recode and test
-a little bit of config gui stuff, saving properties etc...
-more testing with various clients and repalert demo plugin
-push the code up
-publish a pre-alpha jar for anyone who wants to test
-i18n coding
-take a pass at doc/web/javadoc/programmers guide
-improve the ant build.xml
-better packing for win/mac/linux

I hope people don't think there is going to be all sorts of wonderful functionality soon. The initial stuff is ONLY the platform for building the wonderful stuff later. The RepAlert demo plugin doesn't do very much, and in fact, it might not be doing the right thing. It's really for developers to see how to build a plugin.

I hope the TB GUI plugin is not too far behind this. I am hoping that if the companion is solid and out there, that people will discuss plugin's and start building them. Channels/rooms is a good one. The UTC/GMT/FIBS time thing might be a great idea (Click on a user and see their time, if that's possible), all sorts of things. But, the TB GUI is the ONLY plugin I have in the works and on the horizon at all. I have some ideas for the ChouetteBot GUI, and that is where I am headed.

Offline webrunner

  • Fibsboard Executive VIP Donor 2014
  • Advanced Fibsboarder
  • *
  • Posts: 1,335
    • Orion Pax
local proxy
« Reply #21 on: April 23, 2004, 07:30:09 PM »
Does it make coffee yet?  ;)  
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #22 on: April 30, 2004, 03:04:25 PM »
I've done most of the things on that list, but am still tweaking here and there before making it publically available. Maybe another week or so.

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
local proxy
« Reply #23 on: May 05, 2004, 02:55:48 PM »
Status report, in case anyone still cares: I was tempted to put a pre-alpha up last night as it all works well with telnet, but I still need to do some debugging with javafibs. Once that works all other clip clients *should* work. I also need to put a security policy file in place so prevent any other machine connecting to the proxy than the localhost.

The API doc is up at:
http://fibscompanion.sourceforge.net/api/

The code (cvs) can be viewed online:
http://cvs.sourceforge.net/viewcvs.py/fibs.../fibscompanion/

Offline sixty_something

  • Pops
  • Fibsboard Executive VIP Donor 2014
  • Fibsboarder ++
  • *
  • Posts: 910
  • facts? mere enemies of truth
    • Shiva Nataraja
Re: local proxy
« Reply #24 on: August 07, 2007, 01:02:46 PM »
hey, burper, what's the status of fibscompanion?

i've just looked at the documentation at SourceForge and it appears to not yet be implented for installation

Quote
Installation hasn't been designed yet, but the target platforms are the various versions of windows, mac's and unix/linuxes that are typically used by FIBS users
link=https://sourceforge.net/docman/display_doc.php?docid=22386&group_id=106961

i'm running JavaFIBS 2001 v 1.009 on a Win XP platform .. i'm new to fibs related coding projects, but am looking for an entry point .. i'm a semi-retired old burned out programmer fart with a desire to get into coding again for some fibs related projects .. if this isn't a starting point any suggestions would be welcome
A little inaccuracy sometimes saves tons of explanation. -- Unknown
e-mail me

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
Re: local proxy
« Reply #25 on: August 09, 2007, 03:42:58 AM »
I kind of let go of that one, and restarted what I thought might be an improved local proxy called FLiPS, which I dump into the stepfibs project also on sf.net. Working on using a minimal perfect hash as a core (sort of a FibsCookieMonster on steroids), with modified bipart buffers on both streams (to handle processing segments in addition to the usual I/O).

I was envisioning it as a sort of message bus for a highly modular client using socket streams to connect the pieces rather than the classloading scheme FC used.

If FC is really what you are interested in, it was semi-usable at one point in time. I thought inim or someone like that told me they had used it for something or other, and maybe had a couple bugfixes, but they never committed them.

Offline burper

  • Fibsboarder ++
  • ****
  • Posts: 837
Re: local proxy
« Reply #26 on: August 27, 2007, 12:54:36 AM »

Tags:
 

anything