x[hUddlZddlZddlZddlZddlmZddlZddlmZm Z  ddl Z e jZ eje je je Zeed<ej,eZGdd ej2j4j6ZGd d eZy#eef$r% ddlmZej*Zn#e$rdZYnwxYwYrwxYw) N)Any)subputil)salt blowfish_hash)bcryptctd)zRaise when called so that importing this module doesn't throw ImportError when this module is not used. In this case, crypt and passlib are not needed. z/crypt and passlib not found, missing dependency) ImportError)_s :/usr/lib/python3/dist-packages/cloudinit/distros/netbsd.pyrrs A cteZdZdZdZdgZgdZfdZdZde fdZ dd Z d Z d Z dd ZdZd ddZxZS)NetBSDzS Distro subclass for NetBSD. (N.B. OpenBSD inherits from this class.) z*/usr/pkg/etc/sudoers.d/90-cloud-init-usersgroupadd)z ^{username}::z'^{username}:\*\*\*\*\*\*\*\*\*\*\*\*\*:z1^{username}:\*LOCKED\*\*\*\*\*\*\*\*\*\*\*\*\*\*:ct||||tjj dr%gd|_gd|_gd|_gd|_yddg|_dg|_y) Nz/usr/pkg/bin/pkgin)pkgin-yinstall)rrremove)rrupdate)rrz full-upgradepkg_addz-U pkg_delete) super__init__ospathexistspkg_cmd_install_prefixpkg_cmd_remove_prefixpkg_cmd_update_prefixpkg_cmd_upgrade_prefix)selfnamecfgpaths __class__s r rzNetBSD.__init__?s\ sE* 77>>. /*DD ')BD &)BD &*ID '+4d*;D '*6D &r cdd||gS)Nusermod-G)r" member_name group_names r _get_add_member_to_group_cmdz#NetBSD._get_add_member_to_group_cmdJs4[99r returnc tj|rtjd|ydg}dg}dddddd }d d d d }|j D]b\}}||vr)|r't |t r|j|||g3||vs8|s;|j|||j||dd|vsd|vr |dgz }|dgz }||gz }||gz }tjd| tj|||jdd} | |j|| dy#t$rtjtd|wxYw)z~ Add a user to the system using standard tools Returns False if user already exists, otherwise True. z!User %s already exists, skipping.Fuseraddz-dz-cz-gr)z-s)homedirgecos primary_groupgroupsshellz--no-user-groupz--systemz --no-log-init) no_user_groupsystem no_log_initno_create_homer7z-mzAdding user %s) logstringzFailed to create user %spasswdNT)hashed)ris_userLOGinfoitems isinstancestrextendappendr Exceptionlogexcget set_passwd) r"r#kwargs adduser_cmdlog_adduser_cmd adduser_opts adduser_flagskeyval passwd_vals r add_userzNetBSD.add_userMs <<  HH8$ ? k $+!  / *   ;HCl"sz#s/C""L$5s#;< %#""=#56&&}S'9:  ; 6 )XV-C D6 !K v %Ov D6! !4(  IIk_ = ZZ$/  ! OOD*TO :  KK7 >  s -D--&EFc|r|}n t|} tjdd||g|j |y#t$rtjt d|wxYw)Nr(z-pzFailed to set password for %s)rrrErrFr> unlock_passwd)r"userr;r< hashed_pws r rHzNetBSD.set_passwdsc I%f-I  IIy$ 48 9 4   KKr"r#s r lock_passwdzNetBSD.lock_passwds?  IIy$t4 5  KK5t <   &Ac tjddd|gy#t$rtjtd|wxYw)Nr(rWnozFailed to unlock user %srYrZs r rSzNetBSD.unlock_passwds?  IIy$d3 4  KK7 >  r\c.tjdy)NzCannot set the locale.)r>debug)r"localeout_fns r apply_localezNetBSD.apply_locales *+r chtj}tj}dd|d|diS)z9Return env vars used in NetBSD package_command operationsPKG_PATHz1http://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD//z/All)platformreleasemachine)r" os_releaseos_archs r _get_pkg_cmd_environzNetBSD._get_pkg_cmd_environsB%%' ""$ 9Aj\/  r )forcecyNr*)r"rms r update_package_sourceszNetBSD.update_package_sourcess r )Fro)__name__ __module__ __qualname____doc__ ci_sudoers_fngroup_add_cmd_prefix#shadow_empty_locked_passwd_patternsrr-boolrQrHr[rSrcrlrp __classcell__)r&s@r rr*s_ AM&<+' 8:7$7r !,  /4  r rc eZdZy)DistroN)rqrrrsr*r r r{r{sr r{) functoolsloggingrrgtypingrcloudinit.distros.bsd cloudinitrrcryptMETHOD_BLOWFISHrpartialmksaltr__annotations__r AttributeError passlib.hashrhash getLoggerrqr>distrosbsdBSDrr{r*r r rs     D*** U\\$ M3*g!F Y   " " & &F R V { ^$ '     s6AB//C7C  C CCCCC