PKh)7“×2EGG-INFO/dependency_links.txt PKh)7‡Å>>EGG-INFO/entry_points.txt[trac.plugins] serverdownmacro.macro = serverdownmacro.macro PKh)7¶‰Ò­--EGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: TracServerDownMacro Version: 1.0 Summary: UNKNOWN Home-page: http://trac-hacks.org/wiki/ServerDownMacroPlugin Author: Noah Kantrowitz Author-email: coderanger@yahoo.com License: BSD Description: UNKNOWN Keywords: trac plugin Platform: UNKNOWN Classifier: Framework :: Trac PKh)7Ó‘šEGG-INFO/requires.txtTracPKh)7r``EGG-INFO/SOURCES.txtsetup.py TracServerDownMacro.egg-info/PKG-INFO TracServerDownMacro.egg-info/SOURCES.txt TracServerDownMacro.egg-info/dependency_links.txt TracServerDownMacro.egg-info/entry_points.txt TracServerDownMacro.egg-info/requires.txt TracServerDownMacro.egg-info/top_level.txt serverdownmacro/__init__.py serverdownmacro/db_default.py serverdownmacro/macro.py PKh)7ßî§&EGG-INFO/top_level.txtserverdownmacro PKh)7“×2EGG-INFO/zip-safe PKü(7serverdownmacro/__init__.pyPKh)7Ö<ˆvŽŽserverdownmacro/__init__.pyc;ò }§cGc@sdS(N((((s>build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/__init__.pys?sPKü(7[K¯§LLserverdownmacro/db_default.py# Created by Noah Kantrowitz on 2007-12-15. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. from trac.db import Table, Column name = 'serverdown' version = 1 tables = [ Table('serverdown', key=('host', 'port'))[ Column('host'), Column('port'), Column('ts'), Column('value'), ], ]PKh)7•¡*žÇÇserverdownmacro/db_default.pyc;ò }§cGc@sfdklZlZdZdZeddddfƒedƒedƒedƒedƒfgZdS( (sTablesColumns serverdowniskeyshostsportstssvalueN(strac.dbsTablesColumnsnamesversionstables(sColumnsTablesversionsnamestables((s@build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/db_default.pys?sPKü(7æ†Gˆ**serverdownmacro/macro.py# Created by Noah Kantrowitz on 2007-12-14. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. import socket import time from trac.core import * from trac.wiki.macros import WikiMacroBase from trac.config import IntOption from trac.env import IEnvironmentSetupParticipant import db_default class ServerDownMacro(WikiMacroBase): """A macro to check if a server is online.""" default_timeout = IntOption('serverdown', 'default_timeout', default=60, doc='Default refresh timeout for the ServerDown macro') default_port = IntOption('serverdown', 'default_port', default=80, doc='Default por for the ServerDown macro') implements(IEnvironmentSetupParticipant) def expand_macro(self, formatter, name, content): # Parse arguments args = [v.strip() for v in content.split(',')] if len(args) == 1: args.append(self.default_port) if len(args) == 2: args.append(self.default_timeout) host, port, timeout = args port = int(port) timeout = int(timeout) # Check for cached value now = int(time.time()) db = self.env.get_db_cnx() cursor = db.cursor() cursor.execute('SELECT ts, value FROM serverdown WHERE host=%s AND port=%s', (host, port)) row = cursor.fetchone() if row is not None and now - int(row[0]) < timeout: # Cache still valid value = row[1] else: # Check for new value try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((host, port)) except socket.error, e: if e[1] == 'Connection refused': value = 'Offline' elif e[0] == 7 or e[0] == 11001: value = 'Host %s not found'%host else: raise else: value = 'Online' finally: s.close() # Update the cache cursor.execute('UPDATE serverdown SET ts=%s, value=%s WHERE host=%s AND port=%s', (now, value, host, port)) if not cursor.rowcount: cursor.execute('INSERT INTO serverdown (ts, value, host, port) VALUES (%s, %s, %s, %s)', (now, value, host, port)) db.commit() # Output return value # IEnvironmentSetupParticipant methods def environment_created(self): self.found_db_version = 0 self.upgrade_environment(self.env.get_db_cnx()) def environment_needs_upgrade(self, db): cursor = db.cursor() cursor.execute("SELECT value FROM system WHERE name=%s", (db_default.name,)) value = cursor.fetchone() if not value: self.found_db_version = 0 return True else: self.found_db_version = int(value[0]) #self.log.debug('WeatherWidgetSystem: Found db version %s, current is %s' % (self.found_db_version, db_default.version)) return self.found_db_version < db_default.version def upgrade_environment(self, db): # 0.10 compatibility hack (thanks Alec) try: from trac.db import DatabaseManager db_manager, _ = DatabaseManager(self.env)._get_connector() except ImportError: db_manager = db # Insert the default table old_data = {} # {table_name: (col_names, [row, ...]), ...} cursor = db.cursor() if not self.found_db_version: cursor.execute("INSERT INTO system (name, value) VALUES (%s, %s)",(db_default.name, db_default.version)) else: cursor.execute("UPDATE system SET value=%s WHERE name=%s",(db_default.version, db_default.name)) for tbl in db_default.tables: try: cursor.execute('SELECT * FROM %s'%tbl.name) old_data[tbl.name] = ([d[0] for d in cursor.description], cursor.fetchall()) cursor.execute('DROP TABLE %s'%tbl.name) except Exception, e: if 'OperationalError' not in e.__class__.__name__: raise e # If it is an OperationalError, just move on to the next table for tbl in db_default.tables: for sql in db_manager.to_sql(tbl): cursor.execute(sql) # Try to reinsert any old data if tbl.name in old_data: data = old_data[tbl.name] sql = 'INSERT INTO %s (%s) VALUES (%s)' % \ (tbl.name, ','.join(data[0]), ','.join(['%s'] * len(data[0]))) for row in data[1]: try: cursor.execute(sql, row) except Exception, e: if 'OperationalError' not in e.__class__.__name__: raise e PKh)7zˆ·’ÛÛserverdownmacro/macro.pyc;ò }§cGc@scdkZdkZdkTdklZdklZdklZdk Z defd„ƒYZ dS(N(s*(s WikiMacroBase(s IntOption(sIEnvironmentSetupParticipantsServerDownMacrocBsrtZdZeddddddƒZedddddd ƒZeeƒd „Zd „Z d „Z d „Z RS(s'A macro to check if a server is online.s serverdownsdefault_timeoutsdefaulti<sdocs0Default refresh timeout for the ServerDown macros default_portiPs$Default por for the ServerDown macrocCs9gi}|idƒD]}||iƒƒq~}t|ƒdjo|i|i ƒnt|ƒdjo|i|i ƒn|\} }}t|ƒ}t|ƒ}ttiƒƒ} |iiƒ} | iƒ}|id| |fƒ|iƒ}|tj o| t|dƒ|jo|d} nz¢tititiƒ}y|i| |fƒWnftij oW} | ddjo d} qÑ| ddjp| dd jod | } qÑ‚nXd } Wd|i!ƒX|id | | | |fƒ|i" o |id | | | |fƒn| i#ƒ| SdS(Ns,iis:SELECT ts, value FROM serverdown WHERE host=%s AND port=%sisConnection refusedsOfflineiiù*sHost %s not foundsOnlines?UPDATE serverdown SET ts=%s, value=%s WHERE host=%s AND port=%ssFINSERT INTO serverdown (ts, value, host, port) VALUES (%s, %s, %s, %s)($sappends_[1]scontentssplitsvsstripsargsslensselfs default_portsdefault_timeoutshostsportstimeoutsintstimesnowsenvs get_db_cnxsdbscursorsexecutesfetchonesrowsNonesvaluessocketsAF_INETs SOCK_STREAMsssconnectserrorsesclosesrowcountscommit(sselfs formattersnamescontentsvsportsrowscursorsargssdbshostsnowsesvalues_[1]ssstimeout((s;build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/macro.pys expand_macrosF6    ( "      cCs#d|_|i|iiƒƒdS(Ni(sselfsfound_db_versionsupgrade_environmentsenvs get_db_cnx(sself((s;build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/macro.pysenvironment_createdLs cCsn|iƒ}|idtifƒ|iƒ}| od|_t Sn$t |dƒ|_|iti jSdS(Ns&SELECT value FROM system WHERE name=%si( sdbscursorsexecutes db_defaultsnamesfetchonesvaluesselfsfound_db_versionsTruesintsversion(sselfsdbsvaluescursor((s;build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/macro.pysenvironment_needs_upgradePs   c CsRy,dkl}||iƒiƒ\}} Wntj o |}nXh}|i ƒ}|i o |i dt it ifƒnÓ|i dt it ifƒx³t iD]¨} ym|i d| iƒgi}|iD]}||dƒqÙ~|iƒf|| i<|i d| iƒWq«tj o&}d|iijo |‚qSq«Xq«Wxôt iD]é} x$|i| ƒD]} |i | ƒqwW| i|jo¬|| i} d| id i| dƒd id gt| dƒƒf} x_| d D]O} y|i | | ƒWqótj o&}d|iijo |‚qBqóXqóWqaqaWdS( N(sDatabaseManagers0INSERT INTO system (name, value) VALUES (%s, %s)s(UPDATE system SET value=%s WHERE name=%ssSELECT * FROM %sis DROP TABLE %ssOperationalErrorsINSERT INTO %s (%s) VALUES (%s)s,s%si(!strac.dbsDatabaseManagersselfsenvs_get_connectors db_managers_s ImportErrorsdbsold_datascursorsfound_db_versionsexecutes db_defaultsnamesversionstablesstblsappends_[1]s descriptionsdsfetchalls Exceptionses __class__s__name__sto_sqlssqlsdatasjoinslensrow(sselfsdbs_[1]sold_datasesds db_managerscursorsDatabaseManagerstblssqlsdatas_srow((s;build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/macro.pysupgrade_environment\sD      A  = ( s__name__s __module__s__doc__s IntOptionsdefault_timeouts default_ports implementssIEnvironmentSetupParticipants expand_macrosenvironment_createdsenvironment_needs_upgradesupgrade_environment(((s;build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/macro.pysServerDownMacro s     4  ( ssocketstimes trac.corestrac.wiki.macross WikiMacroBases trac.configs IntOptionstrac.envsIEnvironmentSetupParticipants db_defaultsServerDownMacro(s WikiMacroBasessockets IntOptions db_defaultsIEnvironmentSetupParticipantstimesServerDownMacro((s;build/bdist.darwin-8.11.1-i386/egg/serverdownmacro/macro.pys?s      PKh)7“×2¤EGG-INFO/dependency_links.txtPKh)7‡Å>>¤<EGG-INFO/entry_points.txtPKh)7¶‰Ò­--¤±EGG-INFO/PKG-INFOPKh)7Ó‘š¤ EGG-INFO/requires.txtPKh)7r``¤DEGG-INFO/SOURCES.txtPKh)7ßî§&¤ÖEGG-INFO/top_level.txtPKh)7“×2¤EGG-INFO/zip-safePKü(7¤Jserverdownmacro/__init__.pyPKh)7Ö<ˆvŽŽ¤ƒserverdownmacro/__init__.pycPKü(7[K¯§LL¤Kserverdownmacro/db_default.pyPKh)7•¡*žÇǤÒserverdownmacro/db_default.pycPKü(7æ†Gˆ**¤Õserverdownmacro/macro.pyPKh)7zˆ·’ÛÛ¤5serverdownmacro/macro.pycPK G2