Terminal Emulation

More
08 Mar 2019 01:09 #1 by aldie
Hi,

I think I found some issue with the negotiation of the terminal type using the telnet protocol.
AFAIK (checked with the RFC), mud sends IAC DO TERMINAL-TYPE (i can negotiate on that) and asks
to a terminal type: IAC SB TERMINAL-TYPE SEND IAC SE
or: ff fd 18 ff fa 18 01 ff f0

The client (see attached pcap files for the portal app or putty; here, 1st example putty) answers
with IAC SB TERMINAL-TYPE IS ... IAC SE

In case of putty: ff fa 18 00 58 54 45 52 4d ff f0 Or: type is XTERM


Mudportal - however - always sends two, different types. A second, unsolicited reply is attached:

ff fa 18 00 6d 75 64 70 6f 72 74 61 6c 2e 63 6f ....mudp ortal.co
6d ff f0 ff fb 18 ff fa 18 00 58 54 45 52 4d 2d m....... ..XTERM-
32 35 36 63 6f 6c 6f 72 ff f0 256color

This is not good, esp. as some clients to negotiate and change the terminal
emulation each time when the mud asks for a new type (by IAC SB TERMINAL-TYPE SEND IAC SE)
and the client switches to and returns the name of the next terminal emulation.

I do not think the portal app does this, but if it were the case, when the mud says:
Hey, type=mudportal.com is it, continue to use it.. well then the client just flips over to xterm-256col

Talking about xterm. xterm is a full superset of vt100, including even mouse control and window title setup.
Neither this nor any of the real vt100 features like cursor control, graphical line chars, larger/double
sized characters are supported. I think a basic type with colour codes, like ansi, would be a more
realistic reply than xterm.

File Attachment:

File Name: termnegpcap.zip
File Size:2 KB


Best regards.
Attachments:

Please Log in or Create an account to join the conversation.

More
08 Mar 2019 01:24 #2 by aldie
Hi,

and another issue: Setting colours and text effects with ANSI colour escape
sequences is supported. For example, you can do
ESC[32;44m for green text on black.

Alas, setting for and background colour in two commands like
ESC[32mESC[44m does not work. Or more precisely, the second
command resets the color setting of the first one. Just as if
a 0 (reset) parameter were included.. but it is not.

Funnily enough, combining with a bright attribute from a seperate ESC[ sequence
works.

Of course, supporting some more of the standard ANSI attributes like italics
underline reverse ((slow)blink? well this one is rare) would be rocking.

I had to disable all BG colour settings to get a readable screen display with the
portal app.

Best regards.

Please Log in or Create an account to join the conversation.

More
09 Mar 2019 17:39 - 09 Mar 2019 17:40 #3 by plamzi
Hi,

I've not been able to identify a place where the client sends an unsolicited TTYPE.

The relevant lines of code are found in the telnet proxy, lines 482-499: github.com/plamzi/MUDPortal-Web-App/blob...ter/proxy/wsproxy.js

Here's what TTYPE negotiation looks like when using KaVir's protocol snippet on a Circle MUD:

Sat Mar 9 11:34:22 :: ProtocolNegotiate entered, client is Unknown
Sat Mar 9 11:34:22 :: TTYPE ENTER with ttype string mudportal.com
Sat Mar 9 11:34:22 :: Looking for 256color support in mudportal.com
Sat Mar 9 11:34:22 :: REQUEST NEXT TTYPE
Sat Mar 9 11:34:22 :: CON_TTYPE wait is 4
Sat Mar 9 11:34:22 :: TTYPE ENTER with ttype string XTERM-256color
Sat Mar 9 11:34:22 :: Looking for 256color support in XTERM-256color
Sat Mar 9 11:34:22 :: Detected 256color support
Sat Mar 9 11:34:22 :: REQUEST NEXT TTYPE
Sat Mar 9 11:34:22 :: TTYPE ENTER with ttype string MTTS 141
Sat Mar 9 11:34:22 :: Looking for 256color support in MTTS 141
Sat Mar 9 11:34:22 :: REQUEST NEXT TTYPE
Sat Mar 9 11:34:22 :: ATCP: Received: var 'client', value 'mudportal.com'
Sat Mar 9 11:34:22 :: nanny: y
Sat Mar 9 11:34:22 :: ATCP: Received: var 'client_version', value '1.0'
Sat Mar 9 11:34:22 :: ATCP: Received: var 'client_ip', value '::ffff:XX.XX.XX.XX'
Sat Mar 9 11:34:22 :: sent MSDP: ▒▒ESERVER_IDBedlam▒▒

Of course, the Mudportal is lying about XTERM vt100, but that seems to be the only way that some games will identify it as being able to support 256 colors (that's the part of the ttype string we care about). End of the day, games using vt100 will find out pretty quickly that they're not playable on this client.
Last Edit: 09 Mar 2019 17:40 by plamzi.

Please Log in or Create an account to join the conversation.

More
09 Mar 2019 17:42 #4 by plamzi
Colors are handled here: github.com/plamzi/MUDPortal-Web-App/blob.../modules/Colorize.js

If you make fixes or expand support, I'd be happy to merge your changes.

Please Log in or Create an account to join the conversation.

More
02 May 2019 21:44 #5 by aldie
[Oh it does not sort in the replies directly after the post I'm referring too, so I could just have sent one...]

Yes, I noticed this already. [Where colour codes are interpreted]
After working through my list of priorities, I now came to the point where I wanted to make this work.
I had a first look at the source: hey look, Javascript easy to read
and to fix..GREAT!

But when I wanted to start it, I now realize, it won't work w/o
the Websocket proxy. My original plan was to install it on our
web page, make (ok, honestly: attempt to make) it work for us.
Share any findings / patches I do with you and the community.. if you take them,
cool. If you don't like them... I don't care.. works for me.

However, checking a few days, I don't have the slightest chance to
fulfil all the dependencies of the Websocket proxy at our hoster
together with the mud.
[and this is why I came back here and found your posts]
I'd have to maintain a separate server just for the proxy.
However, we don't have the ressources to do that, or at least, it
makes no sense when comparing benefits vs. efforts.

Now, I'm not sure how to proceed.. remarks / comments on this from
you are appreciated:

I could ask you to allow our origin on your websockets server, so
we just use that one (I tend to use mud.tap.de since that is the
shortest and oldest alias) - at that point I'm slightly ignoring
the TTYPE issue might come from the telnet proxy - it's not that
unlikely, actually. (BTW: just, if I forgot to mention, I already
recoded our login routines to ignore the second TTYPE, of course)

But I don't really dare to and I dunno
how you would think about that. Even worse: While good for quick
and dirty testing, I cannot run our site this way. All player
traffic and even login credentials go through your server, and
by German personal privacy laws I'd be personnally liable for whatever
US law institutions may want to do with this data (and when it
collides with German laws). Basically, I'd go to
jail for that or get really, really badly fined (the law suit speaks
about minimum fines in the area of millions $). Just to clarify: If
I host the mud connector client in Germany and it connects to your proxy,
I am liable. If people access the client on your site, which goes to your
proxy which then connects to our site, it does not affect me.

Yeah I know, this is just a tiny game - non profit org, hobbyists side,
no one harmed, likely no one complains.
But you never know.. I just cannot risk it. There are also
some other persons personally and legal liable for the server instance
and they'll will also never agree.

I could setup a small VM, containing all the tools required on my
'private' systems and do all the debugging - if I succeed... (no
promise I will and esp. not in which timeline) - I contribute it,
you incorporate (yeah, I don't expect you to warrant it)
and we all - may - have a good experience. That's
a way.. but if there is no chance for it... You see, I just don't have
enough (life) time to work for the dust bin.

Also.. the client is written in JS, the proxy in JS.. for my purpose,
I don't really need the proxy... It would be so much cooler if the client
would just connect directly. Yes, I know.. some network may block
access to the mud.. But really, if they block random port xxx, they'll
surely allow port 6200? My work network blocks games?: Hmm, Cisco
Umbrella / OpenDNS categorizes mudportal.com as 'Games', so my employer
will certainly allow it? I'd challenge that assumption. It may help
if an 'average' talented network admin manually blocks ips of some server, but
it won't bypass any decent corporate security solution.

But the last chapter is only phantasizing, I didn't dig deep enough
into WebSockets yet to see if it can really do what is needed for
telnet from within a browser or how much effort it is to code that and if I can do it..

Again, I'm not really sure how or if *I* will procede. I like coding as
a hobby (just that) as well as hunting, finding and fixing bugs.
I really love it.. but I also have other RL responsibilities.

I'm not sure..

Best regards,
aldie.

Please Log in or Create an account to join the conversation.

More
04 May 2019 11:09 #6 by aldie
I managed to setup a small test VM last eve.

I had some challenges getting the proxy to run as I had to use a new node implementation (8.15.1) and it uses an incompatible iconv-lite version, or the
one used by proxy.js is no longer available, however you want to see it.

I had to change the source, though straight forward, I may have f* up. I also had to install a bunch of node modules. Not just websocket.

Also, it complains about a missing chat.json file in chatlog = require(__dirname + '/chat.json');
That does not seem to relate to any known node.js module,
I setup a .json file '{}' to shut it up.. I dunno what I screwed by doing this.

I got the proxy to run, and the front end client connects to it.
(got log message from proxy that a client connected). However,
It does not connect through to the mud.

At the moment I don't have any clue where it hangs and no idea where to look at.

Actually it looks the same when I use the client js but point it to your
websocket proxy (oh, btw.. I realized the current Webproxy / Socket
Implementation in JavaScript in Browsers does not support a direct tcp
connection.. some say because it is to dangerous?.. ok.). I thougt this might
be because you blocked my origin, but maybe I was wrong.

I wonder if it's something with the client JS. I tried a bunch of browsers
(Chrome, Firefox, Edge, IE) all the same. I got the source from Github,
the files seem old.. maybe the code on your production site differs? I might
try to get the modules from there directly.

Any suggestion how to get beyond the:

Setting websocket proxy to ws://192.168.132.129:6200.

in the client and:

Sat May 04 2019 08:34:41 GMT-0400 (EDT) []: (ws) server listening: port 6200
Sat May 04 2019 08:35:25 GMT-0400 (EDT) []: (ws) new connection
Sat May 04 2019 08:35:25 GMT-0400 (EDT) []: (ws) connection count: 1

Yes, I specified a host and port, of course.

Reconnect just gives a:
Attempting to reconnect...

and

Sat May 04 2019 08:36:15 GMT-0400 (EDT) []: Sat May 04 2019 08:36:15 GMT-0400 (EDT)(ws) peer ::ffff:192.168.132.1 disconnected.
Sat May 04 2019 08:36:15 GMT-0400 (EDT) []: closing socket: ::ffff:192.168.132.1
Sat May 04 2019 08:36:15 GMT-0400 (EDT) []: active sockets: 0
Sat May 04 2019 08:36:15 GMT-0400 (EDT) []: (ws) new connection
Sat May 04 2019 08:36:15 GMT-0400 (EDT) []: (ws) connection count: 1

msg.

I just don't see the client JS even trying to connect or sending such a request over through the
websocket link (checked with wireshark). It just shows the hostname / port in its window.

Regards,
Aldie.

Please Log in or Create an account to join the conversation.

More
04 May 2019 11:17 #7 by aldie
While wading through the proxy.js, I think I saw the reason for the duplicate or unexpected TTYPE being send - albeit I cannot
explicitly check it due to the connection issue above.

The wsproxy already sends a 'first SB TTYPE', right after the protocol has been negotiated with a 'do TTYPE' and this is logged with
srv.log('IAC DO TTYPE <- IAC FIRST TTYPE', s);.

Our mud uses that autoneg code since about 15 years at least, I have never seen any telnet client (various OS, linux, IBM AIX, all common mudclients) doing that. The terminal server always has to ask explicitly for a terminal type being send.

I checked the Telnet TTYPE negotiation RFC (aka 884) it does not say that a TTYPE is sent after "DO TTYPE". However, it does say it can be
send at ANY time, deliberately at will. This would include right after "DO TTYPE", between any two ascii characters.. etc.

Still, it is uncommon. Just right now, I came across RFC 1091 See here at ietf.org , which deals with TTYPE as well. It describes how a server might choose between available TTYPEs in the client and how to cycle through the list of TTYPEs.
That one says:

Once the two hosts have exchanged a WILL and a DO, the sender of the
DO TERMINAL-TYPE (the server) is free to request type information.
Only the server may send requests (IAC SB TERMINAL-TYPE SEND IAC SE)
and only the client may transmit actual type information (within an
IAC SB TERMINAL-TYPE IS ... IAC SE command). Terminal type
information may not be sent spontaneously, but only in response to a
request.


There are some other RFCs listed in between, I did not read all of them.
After I first thought sending Terminal Types all the time is apparently
uncommon - but allowed and I have to live with it, I now think RFC 1091 supports my interpretation of
the protocol and the experience with telnet clients in the wild.

However I'm not sure if you are willing to change it. It may break some other muds expection,
as I said, I already coded a work around for additional TTYPE msgs during login (but it
would break if mudportal send them all the time deliberately).

The background/foreground colour issues are of much higher impact for me.

Regards,
Aldie

Please Log in or Create an account to join the conversation.

More
05 May 2019 16:24 #8 by plamzi
I tried replying with WILL TTYPE and not sending TTYPE info before I receive a request, but it broke the negotiation on my MUD, which uses a circa-2012 version of the KaVir protocol snippet: github.com/Xavious/MSDP_Protocol_Handler

I have modified that snippet in various ways and would have to spend more time figuring out if I modded it wrong back in the day, if it deviates from the RFC, etc. Unfortunately, I don't know when I'll have that time.

If your copy of wsproxy.js has trouble connecting to your MUD, make sure the server on which it is running can resolve your MUD hostname, e. g. "dig mymud.org". It may actually not resolve properly without some additional /etc/hosts entry if both are running on the same server. Then see if you can connect to the game using its hostname from the instance running wsproxy.js.

If that test passes, see if you can intercept the exact connection error in net.createConnection for more hints.

Please Log in or Create an account to join the conversation.

More
05 May 2019 19:39 #9 by aldie
Hmm, no. At first {} turned ot to be a bad choice for chat.json, [] is better. More importantly Socket.js contained references to cloudgamer which made the module fail whenever a proxy different from cloudgamer is used (including www.mudportal.com ). Of course the version active on www.mudportal.com differs in this respect, which helped me to check my assumption.

As this might help other people fighting to get the portal running, I detailed this in a note on the installation issues discussion channel.

I seem to be able to run a full working portal now. I saw a few tiny changes between the scripts on mudportal and Github. If I send patches/diffs I think it will be more helpful to base them on the ones on www.mudportal.com .

I will prepare, test for me, then send you a patch of wsproxy.js, just to clarify what I mean exactly. If that fails with your mud, I'd assume there will be problems with ttype detection with other clients, esp. common telnet clients (not special mud clients).

Again.. if anyone connecting to your mud just uses mudportal.. who would care. I just wanted to point the effect out. For us, I made the terminal handshake ignore the second TTYPE already, just might happen some other side locks up too (w/o my login patch, our mud would interprete the terminal type as part of the password so you could not login (except when prefixing the username with ! to enforce a dumb telnet mode w/o any negot.))

Unfortunately I'll have to do some work related travels in RL this week, and I'll also go on vacation end of this month.. so this is likely to keep me busy and slow me down...

Regards,
aldie

Please Log in or Create an account to join the conversation.

More
11 May 2019 13:46 #10 by aldie
Hi, attached is the TTYPE patch/diff I promised for clarification. For me it works well. I'd also suggest to add 'ansi' to the proposed terminal types.
vt100 does not know about colours also a bunch of vt100 goodies are missing and probably are impossible to implement in a browser anyway.
xterm-256color is FAR to specific.. MTTS is also pretty uncommon. (none of the clients I used supports it).

I think supporting ANSI will help many muds to interact, but I may be wrong.

I understand this might cause interop issues with your mud. Ok, I'd expect ttype negot to fail in your mud with other terminal clients then as well, but if you use only the portal that might be fine.

For our mud both things don't matter!! I added a specific mudportal terminal profile and I managed to ignore the unsolicity ttype response during the negotiation phase already.

As you referred to your mud code base, some info from me: Our mud is based on an Amylaar LPmud driver originating from Oct 1994.
I added the telnet negotations for TTYPE and NAWS and also MXP in July 2007 after reading bunchs of specs und experiments with countless clients (mud and generic) and OS types. I think it needed about 1-2 years to implement from the first ideas. There are few (since the code is very complex and badly documented) changes in the game driver accompanied with several in game extensions in LPC.

The major efforts were to add it into the mudlib behind the scenes s.t. all the existing code base and areas are automatically enhanced with context-based MXP menus. I dunno, from others I heard it is a pretty decent & complete implementation. Anyway, I was a bit disappointed when I learned the mudclients implemented only parts of mxp and also tended to be a bit buggy.

Regards,
Aldie

Please Log in or Create an account to join the conversation.

More
11 May 2019 14:15 #11 by aldie
A bit more on colors. I started working on it, and I made it first recognize all Ansi Sequences (at least those we use). I learned there is
quite a mixture of deprecated tags (<u>) or unused parts (variable flip) in it. Using the attached reference from a 'real' xterm emulation (yes,
it DOES blink (currently off in the screen shot) , from old portal screen it now went to the new screen . I also modified the color values, background light cyan being just white (frost color) just didn't do it. I also attach the screen shot.

I'll continue to work on it, and share when I'm done. However, two questions:
  • Would you accept 'real' blinking text? Replacing with italics is fairly common, but I think I can make it blink with limited effort.
  • Apart from that, the real issue is, that ansi code has no open/closing tag semantics. Things like underline on/off, color changes and reset to default are all intermixed and must be combinable. That means, I need a status somewhere holding THE current terminal state. I'm thinking about statics in colorize (easy) or attributes in the ScrollView object. I need to analyze the code a bit more to understand how to do it right.

    Is it actually possible that there is more than one ScrollView instance in a browser session? If so, I'd have to add a bit more effort.

Finally a comment, I find the xterm variable and multicolor semantics a bit odd. once xterm 256 colors are used, you cannot get back to simple colors. of course, the fact that colorize currently has no global effects mitigates this issue.. I'm not going to change this though as we are not going to use these colours in our mud.

Regards,
Aldie
Attachments:

Please Log in or Create an account to join the conversation.

More
11 May 2019 17:33 #12 by aldie
I think I'm beyond that point with local vars per Colorize object. I'm too much in a rush to send screen shots right now... I had to reorganize a bit.. Funny approach to reorder and unify the interpretation of colorcodes. I understand the optimization idea behind it, but it does not interact when there is a state in the terminal... I start getting a working ansi emulation. I#d still like to have a comment on real blink vs italics.

Please Log in or Create an account to join the conversation.

More
14 May 2019 16:47 - 14 May 2019 16:50 #13 by aldie
Just as a quick report where I am standing... this is not meant as a final submission, though I think I made some substantial progress as the attached screen shots show. I had to reorganize the whole logic of colorize.js. Somehow I think it used an xml style of thinking, where each terminal sequence can be replace with an html tag which all need to be closed in an orderly and reverse fashion. I added a real blink and to me it looks awesome. Also, background colours when used for text graphics should fill the whole cell.
I'm unsure if I also do that for reverse (it is in the screenshots, but I also had it different). I understand there was a large linespacing, probably for increased readability, however it looked very odd with the background colours. So I reduced it a tiny bit.. kind of a compromise.. we'll see how it looks with
line graphics chars... if I decide to add them.
Apart from the issues with mixing colour codes in random orders, colorize could not deal with ESC sequences when split over consecutive calls (you see this as artefacts like [44m in the printout; I think using a buffer I found a cool yet simple solution.). There are still issues with randomly added </SPAN><SPAN> tags into the text that return to default colours where it is not expected. I think they come from ScrollView.js, but are also used during scrolling and first tests did not seem to deal with the issues.
I also did not thoroughly test all features (if that's at all possible). Again, this is just an update where I stand. I'm about to go in vacation next week, and my gf might hit me if I code something during vacation.. so I may not send an update for a while.

Also, after I fixed the issue in Socket.js, I can also use your telnet proxy, if I really want to. However, there are still some legal issues with that and I'm not sure if thats feasable and what legal disclaimers I need to add with that. I spent some more time to get a working node.js, even tried 5 year old sources or binary packages, but I just miss too many requirements on the game server.

Here are some before / after screenshots of "graphically challenging" parts of our mud(more are attached):


Regards,
Aldie.
Last Edit: 14 May 2019 16:50 by aldie. Reason: Attachments garbled during upload.

Please Log in or Create an account to join the conversation.

More
15 May 2019 10:55 #14 by Jamesgoams
He knew it was Geno Smith's team and understood that he was an insurance policy, a veteran who could step in seamlessly if needed.
"I'm just glad he's <a href=http://www.kankenbackpacksaleuk.com/>Kanken Backpack Sale UK</a> our quarterback," coach Chuck Pagano said recently. "The only thing he wants to do is win football games. That's all that really matters to him."
It's an aggressive bunch, with <a href=http://www.cheapnhljerseys.ru/>Cheap Hockey Jerseys From China</a> <a href=http://www.ukshoescheap.com/>Shoes Clearance Sale Uk</a> a knack for being in the right place at the right time, and <a href=http://www.cheapchinajerseys.us.org/>Cheap Jerseys 2019</a> there's an obvious chemistry to the unit, too.
"Lots of questions were asked, but there were no negotiations," Grubman said.
"You always think, 'Oh man, it would be awesome if I was there,'" Marquez said. "But everything happens for a reason. Those guys deserve it, it's been a long time <a href=http://www.fansramsteamstore.com/>Cheap Rams Jerseys For Sale</a> coming."
That bombardment hasn't much abated in 2015, with at least eight players arrested, a star suspended, an agent indicted and a Hall of Famer fired.

Please Log in or Create an account to join the conversation.

More
16 May 2019 11:31 #15 by Jamesgoams
The league said in a statement Thursday that McClain would be suspended without pay and eligible to return for Dallas' Week 5 game against New England. He can participate in training camp and all four preseason games.
He even disagreed with the analysis of some reporters who suggested on Twitter that left tackle Michael Oher was struggling in pass-blocking drills.
Online fan voting opened Wednesday and runs through July 15 at ESPN.com.
"We've talked about it," <a href=http://www.authenticjerseysnfl.us.com/Authentic-Nike-Carolina-Panthers-Football-Jerseys/> www.authenticjerseysnfl.us.com/Authentic...rs-Football-Jerseys/ </a> Arians said. "This week is hands off anyways."
Patrick D'Amico had a goal and an assist for the Pats, who outscored Swift Current 16-8 in the best-of-seven matchup, while Connor Hobbs added the other.
Verducci also will coach the running <a href=http://www.cheapjerseyschina.us.org/>Cheap Basketball Jerseys China</a> backs at UConn, which finished 2-10 last season while averaging just 15陆 points and 277 yards a game.

Please Log in or Create an account to join the conversation.

More
16 May 2019 13:30 #16 by Jamesgoams
The Northern Irishman is already undergoing rehabilitation, with doubts over his participation at the British Open later this month.
The Broncos had three Pro <a href=http://www.cheapairmax720sale.com/>Discount Air Max 720</a> Bowl players in the secondary: cornerbacks Aqib Talib and Chris Harris and safety T.J. Ward.
"I just think we're too close to him getting out," Pettine said after the Browns held their first practice with rookies and undrafted free agents. "I just think it's <a href=http://www.wholesalejerseysstitchedchina.com/>Cheap Basketball Jerseys Authentic</a> too early to start expanding what we're asking him to do and what we're wanting him to get involved in. It's <a href=http://www.mlbfansedge.us.com/Cincinnati-Reds-Anthony-Desclafani/>Anthony DeSclafani Jersey</a> baby steps here at this point.
NEW YORK <a href=http://www.cheapnhljerseys.ru/>Cheap Hockey Jerseys</a> (AP) 锟?The New England Patriots will host the Pittsburgh Steelers to open the NFL season on Thursday night, Sept. 10.
"I try to be a leader because I'm an older guy. I try to set an example of how we play."
Cignetti, 49, has been with the Rams for three seasons. Before that he was <a href=http://www.authenticbasketball.us.com/Authentic-Nike-Al-Horford-Boston-Celtics/>Al Horford Jersey</a> offensive coordinator for several college programs, most recently Rutgers, in 2011.

Please Log in or Create an account to join the conversation.

More
17 May 2019 11:55 #17 by Jamesgoams
OUTLOOK: With last pick in first round, Patriots could see plenty of players they want go off board. They must restock at CB after losing Revis and Browner. DT a priority with Vince Wilfork leaving after 11 seasons and 2014 first-round pick Dominique Easley ending season on injured reserve. Loss of Stevan Ridley and Shane Vereen to free agency leaves Patriots thin at RB. OL could use depth with G Dan Connolly <a href=http://www.airforcescontate.it/>Scarpe Air Force Just Do It</a> exploring free agency after subpar season.
His predecessor as team president, Bob Harlan, also used to say that that Lambeau should never get tagged with a corporate title. Still, the Packers 锟?one of the most popular teams in the league 锟?do look <a href=http://www.baseballauthenticonline.com/Boston-Red-Sox-Cyber-Monday-Babe-Ruth-Jersey-Black-Friday/>Babe Ruth Jersey</a> for other ways to add revenue.
Abby Wambach of the Women's World Cup champion U.S. team, former winner and WNBA star Candace Parker, retired soccer star Julie Foudy and DeMarco Murray of the Philadelphia Eagles announced the girls' award. Parker grabbed the trophy with both hands and held it up while Hill thanked her parents, coaches and teammates in videotaped comments.
In an interview Thursday, Lafferty said the team never asked her to endorse or advocate for the name. She said <a href=http://www.wholesalejerseysstitchedchina.com/>Cheap Basketball Jerseys Authentic</a> the tribal council was aware of both the signed football, which went to her son-in-law, and the trip, which came after the tribe responded to a survey from the team's Original Americans Foundation asking about tribal needs. The foundation donated three vans, two <a href=http://www.chinacheapjerseys.us.org/>Cheap Jerseys USA</a> of which have arrived.
Musgrave played for San Francisco <a href=http://www.cheapcollegejerseys.us/Miami-Hurricanes-Michael-Irvin-Jersey/>Michael Irvin Jersey</a> and Denver as <a href=http://www.cheapclearancejerseys.com/>Wholesale China Jerseys Free Shpping</a> a backup quarterback.
DAVIE, Fla. (AP) 锟?The NFL says it will take no action against Miami Dolphins defensive tackle Ndamukong Suh after he dislodged an opponent's helmet at Washington.

Please Log in or Create an account to join the conversation.