shell bypass 403

Cubjrnet7 Shell


name : sysconfig.cpython-39.pyc
a

puh��@sddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
mZddlm
Z
mZddlmZmZmZmZmZddlmZe�e�Zgd�Zdd	d
�Zdd�Zd
d�ZGdd�d�ZGdd�de�ZGdd�de�Z Gdd�dej!�Z!dd�Z"d dd�Z#d!dd�Z$d"dd�Z%dS)#�N)�Dict�Optional)�subp�util)�networkmanager_conf�resolv_conf)�IPV6_DYNAMIC_TYPES�is_ipv6_address�net_prefix_to_ipv4_mask�renderer�subnet_is_ipv6)�NetworkState)Z	almalinuxZcentosZ
cloudlinuxZ	eurolinuxZfedoraZmiraclelinuxZ	openeulerZOpenCloudOSZopenmandriva�rhelZrocky�suseZ	TencentOSZ	virtuozzo�#cCsJddg}tt|��D]*}||r6|d||||<q|||<qd�|�S)Nz1Created by cloud-init automatically, do not edit.�� �
)�range�len�join)�sep�lines�i�r�;/usr/lib/python3.9/site-packages/cloudinit/net/sysconfig.py�_make_header)s�
rcCsd}|ddko|d|vS)N)z::z0.0.0.0�prefixr�networkr)�routeZdefault_netsrrr�_is_default_route6sr cCs6t�d|�r.|�d�r$|�d�r$|Sd|Sn|SdS)Nz\s�"z"%s")�re�search�
startswith�endswith)�valuerrr�_quote_value;s

r'c@sjeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	ConfigMapz!Sysconfig like dictionary object.�yes�no)TFcCs
i|_dS�N��_conf��selfrrr�__init__OszConfigMap.__init__cCs||j|<dSr+r,)r/�keyr&rrr�__setitem__RszConfigMap.__setitem__cCs
|j|Sr+r,�r/r1rrr�__getitem__UszConfigMap.__getitem__cCs|j�|�Sr+)r-�getr3rrrr5Xsz
ConfigMap.getcCs
||jvSr+r,r3rrr�__contains__[szConfigMap.__contains__cCs|j�|d�dSr+)r-�popr3rrr�drop^szConfigMap.dropcCs
t|j�Sr+)rr-r.rrr�__len__aszConfigMap.__len__cCsdS)z6Skip the pair key, value if it matches a certain rule.Fr�r/r1�valrrr�skip_key_valuedszConfigMap.skip_key_valuecCs�t��}|�t��|jr$|�d�t|j���D]X}|j|}|�||�rNq2t|t	�rb|j
|}t|t�stt|�}|�d|t|�f�q2|�
�S)Nr�%s=%s
)�io�StringIO�writerr-�sorted�keysr<�
isinstance�bool�	_bool_map�strr'�getvalue)r/�bufr1r&rrr�	to_stringhs




zConfigMap.to_stringcCs|j�|�dSr+)r-�update)r/ZupdatesrrrrJxszConfigMap.updateN)�__name__�
__module__�__qualname__�__doc__rEr0r2r4r5r6r8r9r<rIrJrrrrr(Fs�r(csReZdZdZ�fdd�Zdd�Zedd��Zedd	��Zd
d�Z	dd
d�Z
�ZS)�Routez!Represents a route configuration.cs<tt|���d|_d|_d|_||_||_||_||_	dS)N�F)
�superrOr0�last_idx�has_set_default_ipv4�has_set_default_ipv6�_route_name�_base_sysconf_dir�route_fn_tpl_ipv4�route_fn_tpl_ipv6)r/Z
route_name�base_sysconf_dir�ipv4_tpl�ipv6_tpl��	__class__rrr0szRoute.__init__cCs>t|j|j|j|j�}|j��|_|j|_|j|_|j	|_	|Sr+)
rOrUrVrWrXr-�copyrRrSrT)r/�rrrrr^�s�z
Route.copycCs|j|j|jd�S�N)�base�name)rWrVrUr.rrr�	path_ipv4�s�zRoute.path_ipv4cCs|j|j|jd�Sr`)rXrVrUr.rrr�	path_ipv6�s�zRoute.path_ipv6cCsd|vS)N�:r)r/�addressrrr�
is_ipv6_route�szRoute.is_ipv6_route�ipv4c	Cs�|dvrtdt|���t��}|�t��|jr<|�d�d}t|j���D�]p}d|vr^qN|�	dd�}t|j|�}t|jd|�}|dk�rV|�
|��sVt|jd	|�}|d
}|�ddt|�t|�f�|�ddt|�t|�f�|�dd	t|�t|�f�d|}	|	|jv�r�t|j|	�}
|�ddt|�t|
�f�qN|d
krN|�
|�rNt|jd|���}d||jv�r�dt|jd|�nd}
|�d||||
|jf�qN|�
�S)N)rh�ipv6zUnknown protocol '%s'r����ADDRESSr�GATEWAYrh�NETMASKrPr=�METRICri�PREFIXzmetric z%s/%s via %s %s dev %s
)�
ValueErrorrFr>r?r@rr-rArB�replacergr'rUrG)r/�protorHZreindexr1�indexZ
address_valueZ
gateway_valueZ
netmask_valueZ
metric_keyZmetric_valueZprefix_valuerrrrI�sp
�������������zRoute.to_string)rh)rKrLrMrNr0r^�propertyrcrdrgrI�
__classcell__rrr\rrO|s



rOcs�eZdZdZdddddd�Zd�fd	d
�	Zedd��Zejd
d��Zedd��Z	e	jdd��Z	edd��Z
ddd�Zdd�Z�Z
S)�NetInterfacezERepresents a sysconfig/networking-script (and its config + children).ZEthernetZBondZBridgeZ
InfiniBand�Vlan)�ethernet�bond�bridge�
infiniband�vlanrxcsrtt|���g|_||_|j�d�}t|||�d�|�d�d�|_|j�d�|_||_	||_
||jd<||_dS)N�route_templatesrhri)rZr[�iface_templates�DEVICE)
rQrvr0�children�	templatesr5rO�routes�iface_fn_tpl�kind�_iface_namer-rV)r/�
iface_namerYr�r�Z	route_tplr\rrr0�s�
zNetInterface.__init__cCs|jSr+)r�r.rrrrb	szNetInterface.namecCs||_||jd<dS)Nr)r�r-)r/r�rrrrb
scCs|jSr+)�_kindr.rrrr�szNetInterface.kindcCs,||jvrt|��||_|j||jd<dS)N�TYPE)�iface_typesrpr�r-)r/r�rrrr�s
cCs|j|j|jd�Sr`)r�rVrbr.rrr�paths�zNetInterface.pathFcCsHt|j|j|j|jd�}|j��|_|r4t|j�|_|rD|j	��|_	|S)N)r�)
rvrbrVr�r�r-r^�listr�r�)r/Z
copy_childrenZcopy_routes�crrrr^#s�zNetInterface.copycCs|dkr|dkrdSdS)Nr�rwTFrr:rrrr<.szNetInterface.skip_key_value)rx)FF)rKrLrMrNr�r0rtrb�setterr�r�r^r<rurrr\rrv�s*�	�





rvc@s,eZdZUdZddddd�ddd	�d
�Zddd
dddd�dddddd�d
�Zegd��ZiZe	e
d<d8dd�Zedd��Z
edd��Zed d!��Zed"d#��Zed$d%��Zed&d'��Zed(d)��Zed9d*d+��Zed:d,d-��Zeed.�d/d0��Zed1d2��Zed;ed.�d3d4��Zd<eee	dd5�d6d7�ZdS)=�Rendererz7Renders network information in a /etc/sysconfig format.TF�none�x)�ONBOOTZUSERCTL�	BOOTPROTOZAUTOCONNECT_PRIORITY�static�auto)r��	STARTMODE)rr�IPV6_FORCE_ACCEPT_RAZSTPZAGEINGZPRIOZHWADDR�MTU)�	accept-ra�
bridge_stp�
bridge_ageing�bridge_bridgeprio�mac_address�mtu�
BRIDGE_STPZBRIDGE_AGEINGTIMEZBRIDGE_PRIORITY�LLADDR)r�r�r�r�r�))Z	bond_modezmode=%s)Zbond_xmit_hash_policyzxmit_hash_policy=%s)Zbond_miimonz	miimon=%s)Zbond_min_linkszmin_links=%s)Zbond_arp_intervalzarp_interval=%s)Zbond_arp_ip_targetzarp_ip_target=%s)Zbond_arp_validatezarp_validate=%s)Zbond_ad_selectzad_select=%s)Zbond_num_grat_arpznum_grat_arp=%s)Zbond_downdelayzdowndelay=%s)Zbond_updelayz
updelay=%s)Zbond_lacp_ratezlacp_rate=%s)Zbond_fail_over_maczfail_over_mac=%s)Zbond_primaryz
primary=%s)Zbond_primary_reselectzprimary_reselect=%sr�NcCsv|si}|�dd�|_|�dd�|_|�dd�|_d}|�d|�|_|�d	�|�d
�|�d�d�|_|�d
d�|_dS)N�sysconf_dirz
etc/sysconfig�
netrules_pathz(etc/udev/rules.d/70-persistent-net.rules�dns_pathzetc/resolv.confz,etc/NetworkManager/conf.d/99-cloud-init.conf�networkmanager_conf_path�controlr~r})r�r~r}�flavorr)r5r�r�r�r�r�r�)r/Zconfig�nm_conf_pathrrrr0qs ���zRenderer.__init__cCs�t�|j�|i��}|�|�dD]H}|�|�}|dur"|dkrN|ddvrNq"|j|�|�}|r"|||<q"d|vr�|dr�|ddkr�d|d<dS)	N)r�r�r�r��type)�physicalr{Z	wakeonlanr�zwol gZETHTOOL_OPTS)r^�deepcopy�iface_defaultsr5rJ�cfg_key_maps)�cls�iface�	iface_cfgr�Zflavor_defaults�old_key�	old_value�new_keyrrr�_render_iface_shared�s"


��
�zRenderer._render_iface_sharedcCs�|dkr,d|d<d|vr4d|d<|�d�nd|d<t|t|j�d�D�]�\}}d}|�d	�}|d
ksn|dkr�|dkr�|ddvr�d|d<nd
|d<d
|d<nB|dkr�|dkr�d|d<d|d<d|d<d|d<nd|d<d|d<�n�|dk�rF|dk�r"|ddv�rd|d<nd
|d<d|d<n d|d<d|d<d|d<d|d<�n�|dk�r�|dk�r�|ddv�rrd|d<nd
|d<d|d<nd|d<d|d<�nD|dv�r�|d}	d|d<|dk�r�|	dv�r�d|d<�n
|dv�r�t|��r�|dk�r�d}d|d<d|v�rtt||v�o |d||k�}
|
�rDt�d |j	|||d�t|��rh|dk�rZn|d||<n|d||<t|��r�|dk�r�d|d!<d|d<nB|d"k�r�|dk�r�t�
d#|�n||v|d$<ntd%||j	f��|�d&�d"krF|dk�r�d"|d'<qFd|d$<qFd(}d(}t|t|j�d�D�]x\}}|�d	�}d)|v�r�|dk�rpt|��rb|d)|d*<n|d)|d+<n|dk�r�|d)|d,<|d-v�r�|dk�r"|�r"|ddk�r"d|d.<�q"�q"|tv�rАq"�q"|dv�r"t|��r~|d/}d0|d1|d2f}
|d3k�r(|dk�r|
|d4<n|
|d5<nT|d/k�rP|dk�rF|
|d6<n|
|d7<n,|dk�rh|
|d8|<n|d7d9|
7<nB|d/}|d3k�r�d:nt
|�}|d1|d;|<t|d2�|d<|<d=|v�r|dk�rd|d><t|d=��r�|d=|d?<n|d=|d@<dA|v�r*|dk�r*d9�|dA�|dB<dC|v�r"|dk�r"t|dC�dDk�rht�
dE|j	t|dC��t|dCddD�d/�D]\}}||dFt
|�<�q~�q"dS)GNrr�r��BRIDGE�dhcpr���startr�r��dhcp6zipv6_dhcpv6-stateful)�dhcp4r�ZmanagedZDHCLIENT6_MODErTZDHCPV6CZIPV6INITF�
IPV6_AUTOCONFZIPV6_FAILURE_FATALzipv6_dhcpv6-stateless�infoz-SZDHCPV6C_OPTIONSZ
ipv6_slaac)r�r�r�)r�Zstatic6ZIPV6_MTUr�zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r�Zmanualz Unknown subnet type setting "%s"r�z1Unknown subnet type '%s' found for interface '%s'r�r�rj�metric�IPV6_ROUTE_METRIC�IPV4_ROUTE_METRICrn�r�r��DHCLIENT_SET_DEFAULT_ROUTErPz%s/%srfrrZIPADDR6ZIPV6ADDRZ	IPADDR6_1ZIPV6ADDR_SECONDARIESz
IPADDR6_%drrZIPADDRrm�gateway�DEFROUTE�IPV6_DEFAULTGWrl�
dns_searchZDOMAIN�dns_nameservers�z6%s has %d entries in dns_nameservers. Only 3 are used.ZDNS)r8�	enumeraterr�r5rrD�LOGZwarningrb�debugrprrFr
r	r)r�r��subnets�has_default_router�r�subnetZmtu_key�subnet_typeZbootproto_inZmtu_mismatchZ
ipv4_indexZ
ipv6_indexZ	ipv6_cidrZsuff�krrr�_render_subnets�s


�














��




��





















��
�zRenderer._render_subnetsc
Cs||dkrdSt|t|j�d�D�]V\}}|�d�}|�dg�D�]4}|�d�pXt|d�}	t|��r2|tv�r2|�d�r~|js�|�d�r�|jr�t	d|j
��d	|d
<|ddvr�d	|d
<d|vr�|	r�|d|d<d	|_n|d|d<d	|_d|v�rt|dk�r$t|��r|d|d<n|d|d<n|d|d<q>dD].\}
}|
|v�r6|�|j��}||
||<�q6|jd7_q>qdS)Nrr�r�r�rir�rhz?Duplicate declaration of default route found for interface '%s'Tr�r�r�r�r�rlr�rr�r�rn))r�rl)r�rn)rro)�netmaskrm)rrkrP)
r�rr�r5r	r rrSrTrprbrrR)
r�r��	route_cfgr�r��_r�r�rZis_ipv6r��new_namer�rrr�_render_subnet_routesksb
���������	


�
�

zRenderer._render_subnet_routesc	Cs�g}|jD]\\}}||�dd�g}|D]>}||vr&||}t|ttf�rRd�|�}|�||�q
q&q
|r�|dkr�d�|�|d<nd�|�|d<dS)Nr��-rrZBONDING_MODULE_OPTSZBONDING_OPTS)�
bond_tpl_optsrqrC�tupler�r�append)	r�r�r�r�Z	bond_optsZbond_keyZ	value_tplZ	bond_keysZ
bond_valuerrr�_render_bonding_opts�s
zRenderer._render_bonding_optsc
Cshtj}|�|�D]R}|�d�p$|d}|�dg�}||}|j}	|�|||j|�|�||	||�qdS)N�	config_idrbr�)rZfilter_by_physical�iter_interfacesr5r�r�r�r�)
r��
network_state�iface_contentsr�Zphysical_filterr�r��
iface_subnetsr�r�rrr�_render_physical_interfaces�s��z$Renderer._render_physical_interfacescsdt�d�}t�d�}|�|�D�]>}|d�|�}|�|||�|g}|�|j�|D]}	d|	d<|dkrXd|	_qX|�d�r�|dkr�|�d�|d<n|�d�|d	<|�d
g�}
|j	}|�
||
|j|�|�|||
|�t
�fdd�|�|�D��}t|�D]`\}
}|dk�rd
|
}nd|
}|||<||}|dk�rLd|d<d|d<q��|d<d|d<q�qdS)Nry�bond-masterrbTZBONDING_MASTERrr�r��MACADDRr�cs g|]}|d�kr|d�qS)r�rbr)�.0Zslave_iface�r�rr�
<listcomp>
s�z4Renderer._render_bond_interfaces.<locals>.<listcomp>zBONDING_SLAVE_%szBONDING_SLAVE%sr�r�Zhotplugr�ZMASTERZSLAVE)r�filter_by_typeZfilter_by_attrr�r��extendr�r�r5r�r�r�r�rAr�)r�r�r�r�Zbond_filterZslave_filterr�r�Zmaster_cfgsZ
master_cfgr�r�Zbond_slavesrsZ
bond_slaveZslavestrZ	slave_cfgrr�r�_render_bond_interfaces�sZ


��
���




z Renderer._render_bond_interfacesc
	Cs�t�d�}|�|�D]�}|d}||}|dkr^|�d�}|rF||d<|d|�d��|d<nJd|d	<d|_|d
}	t|	|d�}
||
vr�t�d||	d�	|
��|	|d
<|�dg�}|j
}|�|||j|�|�
||||�qdS)Nr|rbr�vlan_idZVLAN_ID�.ZETHERDEVICETZVLANzvlan-raw-devicezIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %srZPHYSDEVr�)rr�r�r5�rfindr��_supported_vlan_namesr�r�rr�r�r�r�)
r�r�r�r�Zvlan_filterr�r�r�r��rdevZ	supportedr�r�rrr�_render_vlan_interfaces"s@

���z Renderer._render_vlan_interfacesc	sng�g�|��D]�}|dD]0}d|vr6��|d�d|vr��|d�qd|vr��fdd�|ddD�7���fdd�|dd	D�7�q|jr���fd
d�|jD�7�|jrЈ�fdd�|jD�7�tt��t��g�s�dSt�d�}|�rtj	�
|��rt�t�|��}�D]}|�
|��q�D]}|�|��q0td
�}t|�}|�|��sj|d|}|S)Nr�r�r��dnscsg|]}|�vr|�qSrr)r�r���found_nameserversrrr�Ys�z(Renderer._render_dns.<locals>.<listcomp>�nameserverscsg|]}|�vr|�qSrr�r�r#��found_dns_searchrrr�^s�r#csg|]}|�vr|�qSrr)r��
nameserverr�rrr�is�csg|]}|�vr|�qSrrr�r�rrr�os�r�;r)r�r�r��dns_searchdomains�anyrrZ
ResolvConf�osr��isfiler�load_text_fileZadd_nameserverZadd_search_domainrrFr$)	r��existing_dns_pathr�r��contentr�Zsearchdomain�headerZcontent_strr)r�r�r�_render_dnsIsV
�
�

����
�zRenderer._render_dnscCs�d}t�d�}|��D]V}|dD]}d|vs6d|vr"d}q@q"|sd|vr|ddsd|dd	rd}qnq|js~|js~|r�|�d
dd�t|�dkr�dSd�t�d
d
�|�	��d
g�}|S)NFrr�r�r�Tr�r�r#�mainr�rr)
rZNetworkManagerConfr�r�r�Zset_section_keypairrrrr@)r�r�Z	iface_dnsr�r�r��outrrr�_render_networkmanager_conf�s8
��
�
����z$Renderer._render_networkmanager_conf)r�cCs�dd�|j|��D�}t�d�}|�|�D�]P}|d}||}|dkrPd|_|��D]\}	}
|	|vrX||	||
<qX|dkr�d|vr�|�d�r�d|d<nd|d<|�d	�r�d
}|dkr�d}|�d	�||<|dkr�|�dg�r�d
d�|�d��|d<|�dg�D]F}||}
|
g}|�|
j	�|D] }|}|dk�r:d}||d<�q$�q|�dg�}|j
}|�|||j|�|�
||||�q,dS)NcSs i|]\}}|�d�r||�qS)rz)r$)r�Zold_kZnew_krrr�
<dictcomp>�s
�z6Renderer._render_bridge_interfaces.<locals>.<dictcomp>rzrbrr�ZonZoffr�r�Z	LLADDRESSZbridge_portsz%srZBRIDGE_PORTSr)r�r�)r��itemsrr�r�r�r5rr�r�r�r�r�r�)r�r�r�r�Zbridge_key_mapZ
bridge_filterr�r�r�r�r�r1Zbridged_iface_nameZbridged_cfgZbridged_cfgsZ
bridge_cfgZbridge_valuer�r�rrr�_render_bridge_interfaces�s^�



�

��z"Renderer._render_bridge_interfacesc
Csht�d�}|�|�D]N}|d}||}d|_|�dg�}|j}	|�|||j|�|�||	||�qdS)Nr{rbr�)	rr�r�r�r5r�r�r�r�)
r�r�r�r�Z	ib_filterr�r�r�r�r�rrr�_render_ib_interfaces�s 
��zRenderer._render_ib_interfacesc
Cs\|s
|j}i}|��D]f}|ddkr(q|�d�p8|d}t|d||�}|dkrf|�d�|�d�|�|||�|||<q|�|||�|�|||�|�|||�|�	|||�|�
|||�i}	|��D]�\}
}|s�|j�r|�
�|	|j<|jD]}|r�|�
�|	|j<q�|jr�t|jj|jjgdd	g�D]$\}}||	v�r0|j�
|�|	|<�q0q�|	S)
z3Given state, return /etc/sysconfig files + contentsr�Zloopbackr�rbrrr�rhri)r�r�r5rvr8r�r�r�r�rrrr�rIr�r��ziprcrd)
r�rYr�r�r�r�r�r�r��contentsr�Zcpathrrrrr�_render_sysconfigsF	
�



�
zRenderer._render_sysconfig)r�r��returncs�|s
|j}d}t�||j�}|j|||j|d���D]\}}t�|||�q4|j	r�t�||j	�}|j
||d�}	|	r�t�||	|�|jr�t�||j�}
|�||�}|r�t�|
||�|j
r�|�|�}t�||j
�}
tj|
||dd�t�||�d��}|�d��r�t�tj�|��t�dg}|j�r8|�d	�|�d
�tj�|��r�t�|���D]8�t�fdd�d
D���sT�t���v�rT|����qTt�|d�|�d|�dS)Ni�)r�)r�T)r��modeZ
preserve_moder�rzNETWORKING=yeszNETWORKING_IPV6=yeszIPV6_AUTOCONF=noc3s|]}|�vVqdSr+r)r�Zsetting��linerr�	<genexpr>hs�z0Renderer.render_network_state.<locals>.<genexpr>)Z
NETWORKINGZNETWORKING_IPV6r�r)r�r�target_pathr�rr�rrZ
write_filer�r�r�rr�Z_render_persistent_netr5r%Z
ensure_dirr�r��dirnamerZuse_ipv6r��existsr��
splitlinesr�r)r/r�r��targetZ	file_moderYr��datar�Zresolv_contentr�Znm_conf_contentZnetrules_contentr�Zsysconfig_pathZnetcfgrrr�render_network_state2sh
����
�


��	��zRenderer.render_network_state)N)N)N)N)NN)rKrLrMrNr�r�r�r�r��dict�__annotations__r0�classmethodr�r�r�r�r�r�r��staticmethodr�rr
rrrrrrrrrr�4s~
	���	���


M
G


>
&B%�>
��0��r�cs��fdd�dD�S)ziReturn list of supported names for vlan devices per RHEL doc
    11.5. Naming Scheme for VLAN Interfaces.csg|]}|j�t��d��qS)�r�Zvid)�format�int)r��vrrrr�|s�z)_supported_vlan_names.<locals>.<listcomp>)z{rdev}{vid:04}z{rdev}{vid}z{rdev}.{vid:04}z{rdev}.{vid}rrrrrr�ys�r�cCs0t��dtvrdSt|�r dSt|�r,dSdS)NZvariantFT)rZsystem_info�
KNOWN_DISTROS�available_sysconfig�available_nm_ifcfg_rh�rrrr�	available�sr!cCst�t�|d��S)Nz;usr/lib*/NetworkManager/*/libnm-settings-plugin-ifcfg-rh.so)�globrrr rrrr�s��rcCs`ddg}ddg}|D]}tj|||d�sdSqddg}|D]}tj�t�||��r<d	Sq<dS)
NZifupZifdownz/sbinz	/usr/sbin)r#rFz/etc/sysconfig/network-scripts/network-functionszetc/sysconfig/configT)r�whichr�r�r�r)rZexpectedr#�pZexpected_pathsrrrr�s�r)r)N)N)N)&r^r"r>Zloggingr�r"�typingrrZ	cloudinitrrZcloudinit.distros.parsersrrZ
cloudinit.netrr	r
rrZcloudinit.net.network_stater
Z	getLoggerrKr�rrr r'r(rOrvr�r�r!rrrrrr�<module>s:


6nJK




© 2025 Cubjrnet7