
    ihU                        d dl Z d dlZd dlZd dlZd Z G d dej
                        Z G d d      Zedk(  red dl	Z	d dl
Z
 G d d	e
j                        Z e       Ze j                  d
d D ]  Zej!                  e        dZes	 ej%                          dZesyyy# e$ r/  e j&                         d
   j(                  \  ZZ edez          Y 9w xY w)    Nc                     t         j                  j                  |        t         j                  j                  d       y )N
)sysstderrwrite)args    |/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/../../../share/doc/pycurl/examples/linksys.pyprint_stderrr
   %   s&    JJSJJT    c                       e Zd Zd Zy)LinksysErrorc                     || _         y N)args)selfr   s     r	   __init__zLinksysError.__init__*   s	    	r   N)__name__
__module____qualname__r    r   r	   r   r   )   s    r   r   c                      e Zd ZdZdZdZdZdZdZdZ	dd	d
dddZ
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Z d$ Z!d% Z"d& Z#d' Z$d( Z%d) Z&d* Z'd+ Z(d, Z)d- Z*d. Z+d/ Z,d0 Z-d1 Z.d2 Z/y3)4LinksysSessionz/Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec123456zbasic setup functionszFor security reasons,z-You can configure the router to act as a DHCPz3There are some log settings and lists in this page.z5Port forwarding can be used to set up public services) 
Passwd.htmz	DHCP.htmlzLog.htmlzForward.htmc                 <    g | _         d| _        d| _        i | _        y )Nzhttp://192.168.1.1F)actionshost	verbosity	pagecacher   s    r	   r   zLinksysSession.__init__A   s    (	r   c                     || _         y r   )r$   r   flags     r	   set_verbosityzLinksysSession.set_verbosityG   s	    r   c                    || j                   vrt        j                  | j                        }|j	                  | j
                         |j                  |       |j                         | j                   |<   |j                  d      rt        dd      |j                  t        j                  |         sD| j                   |= t        dt        j                  j                  | j                  |      z  d      |j                          y y )N401zauthorization failure.Tz!check string for page %s missing!F)r%   curlCurlr#   r*   r$   getbodyansweredr   r   check_stringsospathjoinclose)r   pagefetchs      r	   
cache_loadzLinksysSession.cache_loadL   s    t~~%IIdii(E/IIdO#(::<DNN4 ~~e$"#;TBB^^N$@$@$FGNN4("#FVZV_V_aeIf#fhmnnKKM &r   c                     i | _         y r   )r%   r&   s    r	   cache_flushzLinksysSession.cache_flushX   s	    r   c                     | j                  |       t        j                  |      j                  | j                  |         }|r|j                  d      }|S d }|S N   )r9   recompilesearchr%   group)r   r7   templatematchresults        r	   screen_scrapezLinksysSession.screen_scrape\   sS    

8$++DNN4,@A[[^F  Fr   c                 ,    | j                  d|dz         S )Nr   z:[^M]*\(MAC Address: *([^)]*))rF   )r   r7   prefixs      r	   get_MAC_addresszLinksysSession.get_MAC_addressd   s    !!"f-M&MNNr   c                 ~    |r| j                   j                  ||d       y | j                   j                  ||d       y )Nr   0r"   append)r   r7   r)   values       r	   set_flagzLinksysSession.set_flagf   s1    LLdC0LLdC0r   c           
          d}|j                  d      D ]5  }| j                  j                  dd|t        |dz         z   |f       |dz  }7 y )Nr   .r   F1r>   )splitr"   rM   repr)r   r7   cgiroleipindoctets          r	   set_IP_addresszLinksysSession.set_IP_addressk   sO    XXc] 	ELLT4$s1u++=u EF1HC	r   c                 N    | j                  ddt        j                  z   dz         S )Nr   z>([0-9.v]*, (z)[^<]*)<)rF   r   monthsr&   s    r	   get_firmware_versionz#LinksysSession.get_firmware_versionr   s4     !!"o"0"7"7'8:D'E H 	Hr   c                 &    | j                  dd      S )Nr   zLAN IP AddressrI   r&   s    r	   get_LAN_MACzLinksysSession.get_LAN_MACx   s    ##B(9::r   c                 &    | j                  dd      S )Nr   Wirelessr_   r&   s    r	   get_Wireless_MACzLinksysSession.get_Wireless_MACz   s    ##B44r   c                 &    | j                  dd      S )Nr   zWAN Connection Typer_   r&   s    r	   get_WAN_MACzLinksysSession.get_WAN_MAC|   s    ##B(>??r   c                 @    | j                   j                  dd|f       y )Nr   hostNamerL   r   names     r	   set_host_namezLinksysSession.set_host_name   s    RT23r   c                 @    | j                   j                  dd|f       y )Nr   
DomainNamerL   rh   s     r	   set_domain_namezLinksysSession.set_domain_name   s    Rt45r   c                 *    | j                  dd|       y )Nr   ipAddrrZ   r   rW   s     r	   
set_LAN_IPzLinksysSession.set_LAN_IP   s    B"-r   c                     |j                  d      st        |j                  d      d   }|dvrt        | j                  j	                  dd|       y )Nz255.255.255.rQ   )rK   128192240252r   netMask)
startswith
ValueErrorrS   r"   rM   )r   rW   lastquads      r	   set_LAN_netmaskzLinksysSession.set_LAN_netmask   sK    }}^,88C=$<<B	84r   c                 (    | j                  dd       y )Nr   wirelessStatusrO   r(   s     r	   set_wirelesszLinksysSession.set_wireless   s    b*+r   c                 @    | j                   j                  dd|f       y )Nr   wirelessESSIDrL   )r   ssids     r	   set_SSIDzLinksysSession.set_SSID   s    R$78r   c                 (    | j                  dd       y )Nr   broadcastSSIDr   r(   s     r	   set_SSID_broadcastz!LinksysSession.set_SSID_broadcast   s    b/*r   c                 @    | j                   j                  dd|f       y )Nr   wirelessChannelrL   )r   channels     r	   set_channelzLinksysSession.set_channel   s    R!2G<=r   c                 (    | j                  dd       y )Nr   WepTyper   r(   s     r	   set_WEPzLinksysSession.set_WEP   s    b)$r   c                 @    | j                   j                  dd|f       y )Nr   WANConnectionTyperL   )r   types     r	   set_connection_typez"LinksysSession.set_connection_type   s    R!4d;<r   c                 *    | j                  dd|       y )Nr   aliasIPrp   rq   s     r	   
set_WAN_IPzLinksysSession.set_WAN_IP   s    B	2.r   c                 *    | j                  dd|       y )Nr   aliasMaskIPrp   rq   s     r	   set_WAN_netmaskzLinksysSession.set_WAN_netmask   s    Br2r   c                 *    | j                  dd|       y )Nr   routerIPrp   rq   s     r	   set_WAN_gateway_addressz&LinksysSession.set_WAN_gateway_address   s    B
B/r   c                 6    | j                  ddd|   z   |       y )Nr   dnsABCrp   r   indexrW   s      r	   set_DNS_serverzLinksysSession.set_DNS_server   s    Be 4b9r   c                 x    | j                   j                  dd|       | j                   j                  dd|       y )Nr    	sysPasswdsysPasswdConfirmrL   )r   strs     r	   set_passwordzLinksysSession.set_password   s/    Lc:L);SAr   c                 (    | j                  dd       y )Nr    	UPnP_Workr   r(   s     r	   set_UPnPzLinksysSession.set_UPnP   s    lK0r   c                 <    | j                   j                  dd       y )Nr    FactoryDefaultsrL   r&   s    r	   resetzLinksysSession.reset   s    L*;<r   c                 ~    |r| j                   j                  ddd       y | j                   j                  ddd       y )NDHCP.htm
dhcpStatusEnableDisablerL   r(   s     r	   set_DHCPzLinksysSession.set_DHCP   s1    LL
<ALL
<	Br   c                 P    | j                   j                  ddt        |             y )Nr   dhcpS4r"   rM   r   r   vals     r	   set_DHCP_starting_IPz#LinksysSession.set_DHCP_starting_IP   s    JxS:r   c                 P    | j                   j                  ddt        |             y )Nr   dhcpLenr   r   s     r	   set_DHCP_userszLinksysSession.set_DHCP_users   s    Jy#c(;r   c                 P    | j                   j                  ddt        |             y )Nr   	leaseTimer   r   s     r	   set_DHCP_lease_timez"LinksysSession.set_DHCP_lease_time       J{CH=r   c                 6    | j                  ddd|   z   |       y )Nr   r   r   rp   r   s      r	   set_DHCP_DNS_serverz"LinksysSession.set_DHCP_DNS_server   s    Je(<bAr   c                 ~    |r| j                   j                  ddd       y | j                   j                  ddd       y )NzLog.htmrLogr   r   rL   r(   s     r	   set_loggingzLinksysSession.set_logging   s1    LL	68<LL	69=r   c                 P    | j                   j                  ddt        |             y )Nr   	trapAddr3r   r   s     r	   set_log_addresszLinksysSession.set_log_address   r   r   c           
      F   | j                   rg }| j                          | j                   D ]  \  }}}| j                  |       | j                  |   j	                  |      dk(  r;t        d|dt        j                  j                  | j                  |      d       t|j                  ||f        g | _         t        j                  | j                        }|j                  | j                         |j                  dt!        |             |j#                          yy)z+Write configuration changes to the Linksys.rt   zlinksys: field z" not found where expected in page !z
Gozila.cgiN)r"   r;   r9   r%   findr
   r3   r4   r5   r#   rM   r-   r.   r*   r$   r/   tupler6   )r   fieldsr7   fieldrN   transactions         r	   	configurezLinksysSession.configure   s    <<F(, 2$ue%>>$',,U3r9 ]bdfdkdkdpdpquqzqz  }A  eB  "C  DMM5%.12 DL))DII.K%%dnn5OOL%-8! r   N)0r   r   r   r\   WAN_CONNECT_AUTOWAN_CONNECT_STATICWAN_CONNECT_PPOEWAN_CONNECT_RASWAN_CONNECT_PPTPWAN_CONNECT_HEARTBEATr2   r   r*   r9   r;   rF   rI   rO   rZ   r]   r`   rc   re   rj   rm   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   -   s   >FO
 .-EKM
M
O1
H;5@46.5,9+>%=/30:B1=C
;<>B
>
> r   r   __main__c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLyK)LLinksysInterpreterz:Interpret commands to perform LinkSys programming actions.c                    t         j                  j                  |        t               | _        t        j                  d      r*t        d       | j                  j                  dz   | _	        y d| _	        t        d       y )Nr   zType ? or `help' for help.: r   Bar1)
cmdCmdr   r   sessionr3   isattyprintr#   promptr&   s    r	   r   zLinksysInterpreter.__init__   sV    GGT")+DLyy|23"ll//$6 fr   c                     |j                         dv r	 |d       y|j                         dv r	 |d       yt        d       y)N)onenableyesT)offdisablenoFzlinksys: unknown switch valuer   )stripr
   )r   funclines      r	   flag_commandzLinksysInterpreter.flag_command   sH    zz|66T

 	 !99U  <=r   c                     |j                         }|rJ|| j                  _        | j                  j                          | j                  j                  dz   | _        yt        | j                  j                         y)Nr   r   )r   r   r#   r;   r   r   )r   r   newhosts      r	   
do_connectzLinksysInterpreter.do_connect   s^    jjlG$+!((*"ll//$6  dll''(r   c                 F    t        d       t        d       t        d       y )Nz!Usage: connect [<hostname-or-IP>]z+Connect to a Linksys by name or IP address.z0If no argument is given, print the current host.r   r&   s    r	   help_connectzLinksysInterpreter.help_connect   s    56?@DEr   c                    | j                   j                  d       d| j                   j                  v rt        d| j                   j	                                t        d| j                   j                                t        d| j                   j                                t        d| j                   j                                t        d       y)Nr   z	Firmware:zLAN MAC:zWireless MAC:zWAN MAC:rQ   r   )r   r9   r%   r   r]   r`   rc   re   r   r   s     r	   	do_statuszLinksysInterpreter.do_status  s    LL##B'T\\+++k4<<#D#D#FGj$,,":":"<=ot||'D'D'FGj$,,":":"<=c
r   c                 \    t        d       t        d       t        d       t        d       y )NzUsage: statusz3The status command shows the status of the Linksys.z2It is mainly useful as a sanity check to make surez the box is responding correctly.r   r&   s    r	   help_statuszLinksysInterpreter.help_status  s%    /"GHFG45r   c                 P    | j                  | j                  j                  |       y r   )r   r   r*   r   s     r	   
do_verbosezLinksysInterpreter.do_verbose  s    dll88$?r   c                 0    t        d       t        d       y )Nz-Usage: verbose {on|off|enable|disable|yes|no}z!Enables display of HTTP requests.r   r&   s    r	   help_verbosezLinksysInterpreter.help_verbose  s    AB56r   c                 :    | j                   j                  |       yNr   )r   rj   r   s     r	   do_hostzLinksysInterpreter.do_host  s    LL&&t,r   c                 0    t        d       t        d       y )NzUsage: host <hostname>z-Sets the Host field to be queried by the ISP.r   r&   s    r	   	help_hostzLinksysInterpreter.help_host  s    *+ABr   c                 P    t        d       | j                  j                  |       y)NzUsage: host <domainname>r   )r   r   rm   r   s     r	   	do_domainzLinksysInterpreter.do_domain  s     ,-LL((.r   c                     t        d       y )Nz/Sets the Domain field to be queried by the ISP.r   r&   s    r	   help_domainzLinksysInterpreter.help_domain#  s    CDr   c                 :    | j                   j                  |       yr   )r   rr   r   s     r	   do_lan_addressz!LinksysInterpreter.do_lan_address&      LL##D)r   c                 0    t        d       t        d       y )NzUsage: lan_address <ip-address>zSets the LAN IP address.r   r&   s    r	   help_lan_addressz#LinksysInterpreter.help_lan_address)      34,-r   c                 :    | j                   j                  |       yr   )r   r}   r   s     r	   do_lan_netmaskz!LinksysInterpreter.do_lan_netmask-      LL((.r   c                 0    t        d       t        d       y )NzUsage: lan_netmask <ip-mask>Sets the LAN subnetwork mask.r   r&   s    r	   help_lan_netmaskz#LinksysInterpreter.help_lan_netmask0      0112r   c                 P    | j                  | j                  j                  |       yr   )r   r   r   r   s     r	   do_wirelesszLinksysInterpreter.do_wireless4  s    dll77>r   c                 0    t        d       t        d       y )Nz.Usage: wireless {on|off|enable|disable|yes|no}z.Switch to enable or disable wireless features.r   r&   s    r	   help_wirelessz LinksysInterpreter.help_wireless7  s    BCBCr   c                 :    | j                   j                  |       yr   )r   r   r   s     r	   do_ssidzLinksysInterpreter.do_ssid;  s    LL!!$'r   c                 0    t        d       t        d       y )NzUsage: ssid <string>z.Sets the SSID used to control wireless access.r   r&   s    r	   	help_ssidzLinksysInterpreter.help_ssid>  s    ()BCr   c                 P    | j                  | j                  j                  |       yr   )r   r   r   r   s     r	   do_ssid_broadcastz$LinksysInterpreter.do_ssid_broadcastB  s    dll==tDr   c                 0    t        d       t        d       y )Nz4Usage: ssid_broadcast {on|off|enable|disable|yes|no}z+Switch to enable or disable SSID broadcast.r   r&   s    r	   help_ssid_broadcastz&LinksysInterpreter.help_ssid_broadcastE  s    HI?@r   c                 :    | j                   j                  |       yr   )r   r   r   s     r	   
do_channelzLinksysInterpreter.do_channelI  s    LL$$T*r   c                 0    t        d       t        d       y )NzUsage: channel <number>zSets the wireless channel.r   r&   s    r	   help_channelzLinksysInterpreter.help_channelL  s    +,./r   c                 P    | j                  | j                  j                  |       yr   )r   r   r   r   s     r	   do_wepzLinksysInterpreter.do_wepP  s    dll22D9r   c                 0    t        d       t        d       y )Nz)Usage: wep {on|off|enable|disable|yes|no}z)Switch to enable or disable WEP security.r   r&   s    r	   help_wepzLinksysInterpreter.help_wepS  s    =>=>r   c                     	 t        d|j                         j                         z         }| j                  j	                  |       y# t
        $ r t        d       Y yw xY w)NzLinksysSession.WAN_CONNECT_z!linksys: unknown connection type.r   )evalr   upperr   r   r{   r
   )r   r   r   s      r	   do_wan_typezLinksysInterpreter.do_wan_typeW  s]    B7

8J8J8LLM006   B@ABs   AA AAc                 0    t        d       t        d       y )Nz5Usage: wan_type {auto|static|ppoe|ras|pptp|heartbeat}zSet the WAN connection type.r   r&   s    r	   help_wan_typez LinksysInterpreter.help_wan_type^  s    IJ01r   c                 :    | j                   j                  |       yr   )r   r   r   s     r	   do_wan_addressz!LinksysInterpreter.do_wan_addressb  r  r   c                 0    t        d       t        d       y )NzUsage: wan_address <ip-address>zSets the WAN IP address.r   r&   s    r	   help_wan_addressz#LinksysInterpreter.help_wan_addresse  r  r   c                 :    | j                   j                  |       yr   )r   r   r   s     r	   do_wan_netmaskz!LinksysInterpreter.do_wan_netmaski  r  r   c                 0    t        d       t        d       y )NzUsage: wan_netmask <ip-mask>zSets the WAN subnetwork mask.r   r&   s    r	   help_wan_netmaskz#LinksysInterpreter.help_wan_netmaskl  r  r   c                 :    | j                   j                  |       yr   )r   set_WAN_gatewayr   s     r	   do_wan_gatewayz!LinksysInterpreter.do_wan_gatewayp  r  r   c                 0    t        d       t        d       y )NzUsage: wan_gateway <ip-address>r  r   r&   s    r	   help_wan_gatewayz#LinksysInterpreter.help_wan_gateways  s    3412r   c                     |j                         \  }}|dv r&| j                  j                  t        |      |       yt	        d       yN)r   r   r   z$linksys: server index out of bounds.r   )rS   r   r   r(  r
   r   r   r   addresss       r	   do_dnszLinksysInterpreter.do_dnsw  sE    #zz|UG'++DKA  CDr   c                 0    t        d       t        d       y )NzUsage: dns {1|2|3} <ip-mask>z:Sets a primary, secondary, or tertiary DNS server address.r   r&   s    r	   help_dnszLinksysInterpreter.help_dns~  s    01NOr   c                 :    | j                   j                  |       yr   )r   r   r   s     r	   do_passwordzLinksysInterpreter.do_password  s    LL%%d+r   c                 0    t        d       t        d       y )NzUsage: password <string>zSets the router password.r   r&   s    r	   help_passwordz LinksysInterpreter.help_password  s    ,--.r   c                 P    | j                  | j                  j                  |       yr   )r   r   r   r   s     r	   do_upnpzLinksysInterpreter.do_upnp  s    dll33T:r   c                 0    t        d       t        d       y )Nz*Usage: upnp {on|off|enable|disable|yes|no}z4Switch to enable or disable Universal Plug and Play.r   r&   s    r	   	help_upnpzLinksysInterpreter.help_upnp  s    >?HIr   c                 8    | j                   j                          y r   )r   r   r   s     r	   do_resetzLinksysInterpreter.do_reset  s    LL r   c                 0    t        d       t        d       y )NzUsage: resetz+Reset Linksys settings to factory defaults.r   r&   s    r	   
help_resetzLinksysInterpreter.help_reset  s    .!?@r   c                 P    | j                  | j                  j                  |       y r   )r   r   r   r   s     r	   do_dhcpzLinksysInterpreter.do_dhcp  s    dll33T:r   c                 0    t        d       t        d       y )Nz*Usage: dhcp {on|off|enable|disable|yes|no}z*Switch to enable or disable DHCP features.r   r&   s    r	   	help_dhcpzLinksysInterpreter.help_dhcp  s    >?>?r   c                 :    | j                   j                  |       y r   )r   r   r   s     r	   do_dhcp_startz LinksysInterpreter.do_dhcp_start  s    LL--d3r   c                 0    t        d       t        d       y )NzUsage: dhcp_start <number>z'Set the start address of the DHCP pool.r   r&   s    r	   help_dhcp_startz"LinksysInterpreter.help_dhcp_start  s    ./;<r   c                 :    | j                   j                  |       y r   )r   r   r   s     r	   do_dhcp_usersz LinksysInterpreter.do_dhcp_users      LL''-r   c                 0    t        d       t        d       y )NzUsage: dhcp_users <number>9Set number of address slots to allocate in the DHCP pool.r   r&   s    r	   help_dhcp_usersz"LinksysInterpreter.help_dhcp_users      ./MNr   c                 :    | j                   j                  |       y r   )r   set_DHCP_leaser   s     r	   do_dhcp_leasez LinksysInterpreter.do_dhcp_lease  rW  r   c                 0    t        d       t        d       y )NzUsage: dhcp_lease <number>rY  r   r&   s    r	   help_dhcp_leasez"LinksysInterpreter.help_dhcp_lease  r[  r   c                     |j                         \  }}|dv r&| j                  j                  t        |      |       yt	        d       yr;  )rS   r   r   r(  r
   r<  s       r	   do_dhcp_dnszLinksysInterpreter.do_dhcp_dns  sE    #zz|UG'00egF  CDr   c                 0    t        d       t        d       y )Nz!Usage: dhcp_dns {1|2|3} <ip-mask>z8Sets primary, secondary, or tertiary DNS server address.r   r&   s    r	   help_dhcp_dnsz LinksysInterpreter.help_dhcp_dns  s    56LMr   c                 P    | j                  | j                  j                  |       y r   )r   r   r   r   s     r	   
do_loggingzLinksysInterpreter.do_logging  s    dll66=r   c                 0    t        d       t        d       y )Nz-Usage: logging {on|off|enable|disable|yes|no}z,Switch to enable or disable session logging.r   r&   s    r	   help_loggingzLinksysInterpreter.help_logging  s    AB@Ar   c                 :    | j                   j                  |       y r   )r   set_Log_addressr   s     r	   do_log_addressz!LinksysInterpreter.do_log_address  s    LL((.r   c                 0    t        d       t        d       y )NzUsage: log_address <number>z1Set the last quad of the address to which to log.r   r&   s    r	   help_log_addressz#LinksysInterpreter.help_log_address  s    /0EFr   c                 8    | j                   j                          yr   )r   r   r   s     r	   do_configurezLinksysInterpreter.do_configure  s    LL""$r   c                 0    t        d       t        d       y )NzUsage: configurez(Writes the configuration to the Linksys.r   r&   s    r	   help_configurez!LinksysInterpreter.help_configure  s    $%<=r   c                 B    t        | j                  j                         y r   )r   r   r%   r   s     r	   do_cachezLinksysInterpreter.do_cache  s    $,,(()r   c                 0    t        d       t        d       y )NzUsage: cachezDisplay the page cache.r   r&   s    r	   
help_cachezLinksysInterpreter.help_cache  s    .!+,r   c                      yr=   r   r   s     r	   do_quitzLinksysInterpreter.do_quit  s    r   c                 0    t        d       t        d       y )Nz2The quit command ends your linksys session withoutz-writing configuration changes to the Linksys.r   r   s     r	   	help_quitzLinksysInterpreter.help_quit  s    FGABr   c                 N    t        d       | j                  j                          y)Nr   r>   )r   r   r   r   s     r	   do_EOFzLinksysInterpreter.do_EOF  s    "ILL""$r   c                 0    t        d       t        d       y )Nz7The EOF command writes the configuration to the linksyszand ends your session.r   r&   s    r	   help_EOFzLinksysInterpreter.help_EOF  s    KL*+r   c                 .    t        j                  |       y)z5Pass the command through to be executed by the shell.r   )r3   systemr   s     r	   defaultzLinksysInterpreter.default  s    IIdOr   c                 0    t        d       t        d       y )Nz/On-line help is available through this command.z"? is a convenience alias for help.r   r&   s    r	   	help_helpzLinksysInterpreter.help_help  s    CD67r   c                     t        d       y )Na  
This program supports changing the settings on Linksys blue-box routers.  This
capability may come in handy when they freeze up and have to be reset.  Though
it can be used interactively (and will command-prompt when standard input is a
terminal) it is really designed to be used in batch mode. Commands are taken
from the command line first, then standard input.

By default, it is assumed that the Linksys is at http://192.168.1.1, the
default LAN address.  You can connect to a different address or IP with the
'connect' command.  Note that your .netrc must contain correct user/password
credentials for the router.  The entry corresponding to the defaults is:

machine 192.168.1.1
    login ""
    password admin

Most commands queue up changes but don't actually send them to the Linksys.
You can force pending changes to be written with 'configure'.  Otherwise, they
will be shipped to the Linksys at the end of session (e.g.  when the program
running in batch mode encounters end-of-file or you type a control-D).  If you
end the session with `quit', pending changes will be discarded.

For more help, read the topics 'wan', 'lan', and 'wireless'.r   r&   s    r	   help_introductionz$LinksysInterpreter.help_introduction  s     @ Ar   c                     t        d       y )NzThe `lan_address' and `lan_netmask' commands let you set the IP location of
the Linksys on your LAN, or inside.  Normally you'll want to leave these
untouched.r   r&   s    r	   help_lanzLinksysInterpreter.help_lan  s      r   c                     t        d       y )Na{  The WAN commands become significant if you are using the BEFSR41 or any of
the other Linksys boxes designed as DSL or cable-modem gateways.  You will
need to use `wan_type' to declare how you expect to get your address.

If your ISP has issued you a static address, you'll need to use the
`wan_address', `wan_netmask', and `wan_gateway' commands to set the address
of the router as seen from the WAN, the outside. In this case you will also
need to use the `dns' command to declare which remote servers your DNS
requests should be forwarded to.

Some ISPs may require you to set host and domain for use with dynamic-address
allocation.r   r&   s    r	   help_wanzLinksysInterpreter.help_wan  s      r   c                     t        d       y )NzWThe channel, ssid, ssid_broadcast, wep, and wireless commands control
wireless routing.r   r&   s    r	   help_wireless_descz%LinksysInterpreter.help_wireless_desc  s      r   c                 F    t        d       t        d       t        d       y )Nz8Switches may be turned on with 'on', 'enable', or 'yes'.z:Switches may be turned off with 'off', 'disable', or 'no'.z2Switch commands include: wireless, ssid_broadcast.r   r&   s    r	   help_switchesz LinksysInterpreter.help_switches  s    LMNOFGr   c                 F    t        d       t        d       t        d       y )Nz/An address argument must be a valid IP address;z-four decimal numbers separated by dots, each zbetween 0 and 255.r   r&   s    r	   help_addressesz!LinksysInterpreter.help_addresses!  s    CDAB&'r   c                      y r   r   r&   s    r	   	emptylinezLinksysInterpreter.emptyline&  s    r   N)Mr   r   r   __doc__r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  r  r  r  r  r   r"  r$  r&  r*  r,  r.  r0  r2  r4  r7  r9  r>  r@  rB  rD  rF  rH  rJ  rL  rN  rP  rR  rT  rV  rZ  r^  r`  rb  rd  rf  rh  rk  rm  ro  rq  rs  ru  rw  ry  r{  r}  r  r  r  r  r  r  r  r  r  r   r   r	   r   r      s   H				F
		6	@	7		C		E		.		3		D		D		A		0		?		2		.		3		3		P		/		J	!	A	;	@	4	=	.	O	.	O		N	>	B	/	G		>	*	-		C		,	
	8	A4			
	H
	(
	r   r   r>   FTz	linksys: )r   r?   r-   
exceptionsr
   	Exceptionr   r   r   r3   r   r   r   interpreterargvr   onecmdfatalcmdloopexc_infor   messager   r   r   r	   <module>r     s   F !  :'' n  n ` zGSWW GR
 %&Kxx|  3 E	)!E a
 h
  	))S\\^A.33NGU+'(	)s   B 1CC