ó C…#Wc@sždZddlZddlZddlZddlZddlmZdZdZ dZ dZ dZ dZ d Zd Zd Zd Zd ZdZe e e eeeeegZe e e eeeegZe e e eeegZe e e eeegZe e eeegZe e eeegZe e eeeegZeegZeegZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,ej-dd d!e.ƒj/Z0d"Z1d#Z2ej3e1ej4ƒZ5ej3e2ej4ƒZ6d$e7fd%„ƒYZ8d&e7fd'„ƒYZ9d(e7fd)„ƒYZ:d*„Z;d+„Z<d,„Z=d-„Z>d.„Z?e.d/„Z@d0„ZAd1„ZBd2„ZCdS(3s! utility functions for sysconfig iÿÿÿÿN(t InstallEnginet sc_groupst groupingstidentitytnetworktnaming_servicestkeyboardt date_timetlocationtuserstsupporttsystemssvc:/network/install:defaultssvc:/network/physical:defaultssvc:/network/nis/domainssvc:/network/nis/clientssvc:/network/ldap/clientssvc:/network/dns/clientssvc:/system/name-service/switchssvc:/system/name-service/caches!svc:/system/fm/asr-notify:defaultssvc:/system/ocm:defaulttDIRECTtPROXYtHUBt0t1s/usr/share/sysconfig/helptsolaris_install_systemconfigs/usr/share/localetfallbacks/usr/lib/ocm/ccr/bin/ocmadms/usr/sbin/asradmtPasswordInvalidcBseZRS((t__name__t __module__(((sutil.pyR†stUsernameInvalidcBseZRS((RR(((sutil.pyRŠst LoginInvalidcBseZRS((RR(((sutil.pyRŽscCsGtjƒj}|jjdtƒj}|dkr7tS|j |t ƒS(sW function to check to see if the requested group name is to be (un)configured. tnameN( Rt get_instancetdoct persistenttget_first_childtSC_GROUPS_LABELt data_dicttNonetTruetgettFalse(t group_nameRt group_dict((sutil.pyt group_check’s  cCs?|jdkr"|jdtƒnttƒr;t|ƒndS(swDoes a final check on the network settings and prunes based on what is set at the conclusion of the sysconfig. t AutomaticRN(R&N(t sc_networkRtdelete_childrent NET_INSTALLR%t SC_GROUP_NStprune_naming_svcs(tsc((sutil.pyt prune_networkŸs cCsî|js.d|_d|_|jdtƒn|jsj|jdtƒ|jdtƒ|jdt ƒn€|jdkrª|jdtƒ|j sêd|_ d|_ qên@|jdkrê|jdt ƒ|j sÞd|_qêd|_ndS(s}Does a final check on the naming services and prunes the doc based on what is set at the conclusion of the sysconfig RtLDAPtNISN(tdnsRtsc_dns_nameservert sc_dns_searchR(t DNS_CLIENTtalt_nameservicet NIS_DOMAINt NIS_CLIENTt LDAP_CLIENTtldap_proxy_bindtsc_ldap_cred_bind_dntsc_ldap_cred_bind_psswdtnis_autotsc_nis_ypserverstsc_ypcmd_broadcast(R,((sutil.pyR+«s$        cCs6|jtkr2|jdtƒ|jdtƒndS(s~Does a final check on the support services and prunes the doc based on what is set at the conclusion of the sysconfig RN(t sup_netcfgtNOCFGNETR(t SUPPORT_ASRtOCM(R,((sutil.pyt prune_supportÌscCs\ttƒrt|ƒn&ttƒr?ttƒ r?t|ƒnttƒrXt|ƒndS(sæThis function does a final cleanup on the sysconfig labels that have been populated. There are two reasons this is required: - The user can move forward and back between screens. It is possible that the final summary screen won't match what is stored in the sc doc labels, without a final check on the settings. - Some of the groupings, such as naming_services, include multiple services. The user can choose to configure some, all, or none of them. N(R%tSC_GROUP_NETWORKR-R*R+tSC_GROUP_SUPPORTRB(R,((sutil.pytprune_sysconfigÕs    cCs‚|r| rtS|s,ttdƒƒ‚n|djƒsQttdƒƒ‚ntjd|ƒdkr~ttdƒƒ‚ntS(sAEnsure username complies with following rules - username can contain characters from set of alphabetic characters, numeric characters, period (.), underscore (_), and hyphen (-). - username starts with a letter. Raises UsernameInvalid if provided user name is not valid, otherwise returns True sUsername must not be blankis!Username must start with a letters^[a-zA-Z][\w\-.]*$s&Username contains an invalid characterN(R Rt_tisalphatretsearchR(tuser_strtblank_ok((sutil.pytvalidate_usernameés cCssdddg}ytj|ƒj}Wntk r9tSX|dksR||krkttd|ƒƒ‚ntSdS(s¾Ensure the username is not one of the names already in /etc/passwd Raises LoginInvalid if login_str is an already existent user (e.g., 'root' or 'nobody') otherwise returns True tnobodytnoaccesstnobody4ics'%s' cannot be usedN(tpwdtgetpwnamtpw_uidtKeyErrorR RRF(t login_strtforbidden_loginstuid((sutil.pytvalidate_logins cCsæ| st|ƒdkr.ttdƒƒ‚n't|ƒdkrUttdƒƒ‚nt}}}x>|D]6}|jƒr…t}qj|jƒršt}qjt}qjW|s¿ttdƒƒ‚n#| râ| râttdƒƒ‚ntS(svalidates the password enteredisPassword must be entered.is,Password must contain at least 6 characters.s/Password must contain 1 alphabetical character.s0Password must contain 1 digit/special character.(tlenRRFR"RGR tisdigit(tpasswordthas_chart has_digitt has_specialtchar((sutil.pytvalidate_passwords       cCssd„}tƒ}ttƒr>||dtdƒ|jƒnttƒrn|jdƒ|jtdƒƒ|jdkr’||dtdƒƒn|jdIkrº||dtdƒƒqn|jd krâ||dtd ƒƒqn|jd krn||dtd ƒ|j ƒ|jtd ƒ|j ƒ|jtdƒ|j ƒ|j rk|jtdƒ|j ƒqkqnntt ƒrçt|ddIƒdJkrç|jr÷|jtdƒƒ|jtdƒdj|jƒƒ|jtdƒdj|jƒƒn|jdkrÄ|jtdƒ|jƒ|jtdƒ|jƒ|jtdƒ|jƒ|jtdƒ|jƒ|jtdƒ|jƒ|jrä|jtdƒ|jƒ|jtdƒƒqäqç|jdkrç|jtdƒ|jƒ|jtdƒ|jƒ|js&|jtdƒƒn5t|d ƒr[|jtd!ƒdj|jƒƒn|jrä|jdƒ|jtd"ƒƒ|jtd#ƒƒ|jd$ƒ|jd%ƒ|jd&ƒ|jd'ƒ|jtd(ƒƒqäqçnttƒrd|jdƒ|jtd)ƒ|jƒ|jtd*ƒƒ|jtd+ƒ|jƒ|jtd,ƒ|j ƒntt!ƒr|jtd-ƒ|j"ƒntt#ƒrÅt|d.ƒrÅ|jtd/ƒ|j$ƒntt%ƒr|j&rú||dtd0ƒ|j&ƒq||dtd1ƒƒntt'ƒro|jdƒ|jtd2ƒƒ|j(t)krg||dtd3ƒƒqodI}dI}|j*rÄ|j+sŽ|j,r—d4}nt-r¦d5}n|j.s¸|j/rÄd4}qÄn|dIkrõ|dIkrõ||dtd6ƒƒn||d5krC||dtd7ƒƒ||d8|j*ƒ||dtd9ƒƒn.|dIk rh||dtd:ƒƒn|dIk r||dtd;ƒƒn||dtd<ƒƒ||d8|j*ƒ|j,rØ||dtd=ƒƒnt-r÷||dtd>ƒƒn|j/r||dtd?ƒƒnt0r8||dtd@ƒƒnt-rH|j, sXt0rq|j/ rq||dtdAƒƒn|j(t1kr|j2r×||dtdBƒi|j3dC6|j4dD6ƒ||dtdE|j2ƒƒql||dtdFƒi|j3dC6|j4dD6ƒqo|j(t5kro|j6r@||dtdG|j6ƒƒn|j7rl||dtdH|j7ƒƒqlqon|S(Ks` function to build a summary of sysconfig options for both sysconfig and text-installer cSs|j|d|ƒS(Nt (tappend(tltpts((sutil.pyt?sisComputer name: %stsNetwork:R&s Network Configuration: AutomaticsNetwork Configuration: Nonetfromgzs1Network Configuration: Mandated from global zonet DefaultFixedsManual Configuration: %ssIP Address: %ss Netmask: %ss Router: %sR'RsName service: DNSsDNS servers: %ss, sDNS Domain search list: %sR.sName service: %ss Domain: %ssLDAP profile: %s sLDAP server's IP: %ssLDAP search base: %ss&LDAP proxy bind distinguished name: %ss%LDAP proxy bind password: [concealed]R/sNIS server: broadcastR<sNIS server's IP: %ss?Note: DNS will be configured to resolve host and IP node names.s9This setting can be modified upon rebooting. For example:s+# svccfg -s svc:/system/name-service/switchsDsvc:/system/name-service/switch> setprop config/host="files nis dns"s%svc:/system/name-service/switch> quits0# svcadm refresh svc:/system/name-service/switchs/See nsswitch.conf(4), svccfg(1M) and nscfg(1M).s Time Zone: %ssLocale:sDefault Language: %ssLanguage Support: %ss Keyboard: %st timestamps Timestamp: %ss Username: %ssNo user accountsSupport configuration:sKNot generating a Support profile as OCM and ASR services are not installed.tauthtunauths'No telemetry will be sent automaticallys=OCM telemetry will be sent and associated with email address:isVTelemetry will not be registered with My Oracle Support because no password was saved.sOCM telemetry will be sent.sASR telemetry will be sent.sHTelemetry will be registered with My Oracle Support using email address:s!MOS credentials validated for OCMs)MOS credentials NOT yet validated for OCMs!MOS credentials validated for ASRs)MOS credentials NOT yet validated for ASRsBValidation will be attempted again on (re)boot of target system(s)s9Secure proxy specified: Host and port: %(host)s:%(port)s thosttportsUser: %ss2Proxy specified: Host and port: %(host)s:%(port)s s OCM hub: %ss ASR hub: %sN(s AutomaticsNone(8tlistR%tSC_GROUP_IDENTITYRFt sc_hostnameRCRaR'Rt sc_ipv4_nametsc_ipv4_addresstnetmaskt sc_ipv4_routeR*tgetattrR0tjoinR1R2R4tsc_nis_domainnametsc_ldap_profiletsc_ldap_serverstsc_ldap_searchbaseR8R9R;thasattrR<tSC_GROUP_LOCATIONt sc_timezonetsc_lang_supporttsc_loc_descriptiontSC_GROUP_KEYBOARDt sc_keymaptSC_GROUP_DATETIMERitSC_GROUP_USERSt sc_user_nameRDR>tNOSVCt sup_mos_emailtsc_ocm_passwordt sc_ocm_ciphert OCM_AVAILABLEtsc_asr_passwordtsc_asr_privkeyt ASR_AVAILABLER tsup_proxy_usertsup_proxy_hosttsup_proxy_portRt sc_ocm_hubt sc_asr_hub(R,tpadt summary_textt ocm_levelt asr_level((sutil.pytbuild_sc_summary8sö         #                                    &(Dt__doc__tgettexttosRPRHtsolaris_install.engineRRtLOGGERRtGROUPINGS_LABELRoRCR*R€R‚R|RƒRDtSC_GROUP_SYSTEMtSC_ALL_CONFIG_GROUPStSC_ALL_PROFILE_GROUPStSC_ALL_CONFIG_GROUPS_EXtSC_ALL_PROFILE_GROUPS_EXtSC_ALL_CONFIG_GROUPS_SHAREDtSC_ALL_PROFILE_GROUPS_SHAREDtSC_ALL_CONFIG_GROUPS_GUItSC_VALID_CONFIG_GROUPStSC_VALID_PROFILE_GROUPSR)t NET_PHYSICALR5R6R7R3t NS_SWITCHtNS_CACHER@RAR R RR…R?tSCI_HELPt translationR tugettextRFtOCM_AUTHENTICATORtASR_AUTHENTICATORtaccesstX_OKR‰RŒt ExceptionRRRR%R-R+RBRERLRWR_R–(((sutil.pyts’                  !