PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
import logging from pyroute2.ndb.main import NDB log = logging.getLogger(__name__) class ObjectProxy(dict): def __init__(self, obj): self._obj = obj def __getattribute__(self, key): if key[:4] == 'set_': def set_value(value): self[key[4:]] = value return self return set_value try: return self[key] except KeyError: return super(ObjectProxy, self).__getattribute__(key) def __setattr__(self, key, value): if key == '_obj': super(ObjectProxy, self).__setattr__(key, value) else: super(ObjectProxy, self).__getattribute__('_obj')[key] = value def __getitem__(self, key): return super(ObjectProxy, self).__getattribute__('_obj')[key] def __setitem__(self, key, value): super(ObjectProxy, self).__getattribute__('_obj')[key] = value def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): if hasattr(self, 'commit'): self.commit() def __repr__(self): return repr(super(ObjectProxy, self).__getattribute__('_obj')) def __contains__(self, key): return key in super(ObjectProxy, self).__getattribute__('_obj') def get_ndb_object(self): return self._obj def keys(self): return self._obj.keys() def items(self): return self._obj.items() def values(self): return self._obj.values() def __iter__(self): return self._obj.__iter__() @property def _mode(self): return 'implicit' class Interface(ObjectProxy): def add_ip(self, *argv, **kwarg): self._obj.add_ip(*argv, **kwarg) return self def del_ip(self, *argv, **kwarg): self._obj.del_ip(*argv, **kwarg) return self def add_port(self, *argv, **kwarg): self._obj.add_port(*argv, **kwarg) return self def del_port(self, *argv, **kwarg): self._obj.del_port(*argv, **kwarg) return self def commit(self, *argv, **kwarg): self._obj.commit(*argv, **kwarg) return self def up(self): self._obj.set('state', 'up') return self def down(self): self._obj.set('state', 'down') return self def remove(self): self._obj.remove() return self @property def if_master(self): return self._obj.get('master', None) @property def ipaddr(self): return tuple(self._obj.ipaddr.dump().select('address', 'prefixlen')) class Interfaces(ObjectProxy): text_create = ''' When `create().commit()` fails, the failed interface object behaves differently in IPDB and NDB. IPDB saves the failed object in the database, while the NDB database contains only the system reflection, and the failed object may stay only being referenced by a variable. `KeyError: 'object exists'` vs. `CreateException` ''' def __getitem__(self, key): return Interface(super(Interfaces, self).__getitem__(key)) def __iter__(self): return iter(self.keys()) def add(self, *argv, **kwarg): return self.create(*argv, **kwarg) def create(self, *argv, **kwarg): log.warning(self.text_create) return Interface(self._obj.create(*argv, **kwarg)) def keys(self): ret = [] for record in self._obj.dump(): ret += [record.ifname, record.index] return ret def has_key(self, key): return key in self.keys() class NoIPDB(object): text_create = ''' IPDB has a shortcut method to create interfaces: `ipdb.create(...)`. NDB has `create()` methods only under respective views: `ndb.interfaces.create(...)`, `ndb.addresses.create(...)` etc. ''' text_nl = ''' Unlike IPDB, NDB can work with many netlink sources. The default one referenced as `localhost`:: # # these two statements are equivalent: # ndb.sources['localhost'].nl.get_links() ipdb.nl.get_links() ''' def __init__(self, *argv, **kwarg): if argv or kwarg: log.warning( '%s does not support IPDB parameters, ignoring', self.__class__.__name__, ) if len(argv) > 0 or 'nl' in kwarg: log.warning( '%s does not support shared netlink sources,' ' ignoring `nl` and starting with local IPRoute', self.__class__.__name__, ) self._ndb = NDB() self.interfaces = Interfaces(self._ndb.interfaces) @property def nl(self): log.warning(self.text_nl) return self._ndb.sources['localhost'].nl @property def ipaddr(self): ret = dict([(x.index, []) for x in self._ndb.interfaces.dump()]) for record in self._ndb.addresses.dump(): ret[record.index].append((record.address, record.prefixlen)) return ret def create(self, *argv, **kwarg): log.warning(self.text_create) return self.interfaces.create(*argv, **kwarg) def release(self): self._ndb.close()