[15842] 2020-09-12_一次opencanary自定义实践

文档创建者:s7ckTeam
浏览次数:24
最后更新:2025-01-18
2020-09-12_一次opencanary自定义实践 o p e n c a n a r y q i x i n g y u e   F r e e B u f   2 0 2 0 - 0 9 - 1 2 o p e n c a n a r y   p y h t o n g i t h u b :     h t t p s : / / g i t h u b . c o m / t h i n k s t / o p e n c a n a r y o p e n c a n a r y   I P i p t a b l e s   o p e n c a n r y   I P t r u n k   I P t r u n k : I P o p e n c a n a r y d   c o p y c o n f i g       d e v i c e . l i s t e n _ a d d r     0 . 0 . 0 . 0       o p e n c a n r y / l o g g e r . p y   ,   使   P y L o g g e r       l o g   ,   : V L A N = y e s T Y P E = v l a n D E V I C E = e t h 0 . 1 0 0 1 P H Y S D E V = e t h 0 V L A N _ I D = 1 0 0 1 R E O R D E D _ H D R = 0 B O O T P R O T O = s t a t i c N A M E = e t h 0 . 1 0 0 1 O N B O O T = y e s I P A D D R = 1 0 . 2 1 1 . 1 . 1 0 N E T M A S K = 2 5 5 . 2 5 5 . 2 5 5 . 0 d e f   p o s t 2 s e r v e r ( s e l f ,   s e r v e r i p ,   j s o n d a t a ) :                 t r y :                                 i m p o r t   u r l l i b 2                                 u r l   =   ' h t t p : / / ' + s e r v e r i p + ' / l o g / '                                 r e q     =   u r l l i b 2 . R e q u e s t ( u r l ,   j s o n d a t a ,   { ' C o n t e n t - T y p e ' : ' a p p l i c a t i o n / j s o n ' } )                                 f   =   u r l l i b 2 . u r l o p e n ( r e q )                                 r e s p o n s e   =   f . r e a d ( )                                 s e l f . l o g g e r . w a r n ( r e s p o n s e )                                 f . c l o s e ( )                               e x c e p t   u r l l i b 2 . U R L E r r o r ,   e :                                 s e l f . l o g g e r . e r r o r ( e )         d e f   l o g ( s e l f ,   l o g d a t a ,   r e t r y = T r u e ) :                 l o g d a t a   =   s e l f . s a n i t i z e L o g ( l o g d a t a )                 j s o n d a t a   =   j s o n . d u m p s ( l o g d a t a ,   s o r t _ k e y s = T r u e )               s e r v e r i p   =   " 1 0 . 2 1 0 . 2 4 5 . 2 2 "   #                     i f   l o g d a t a [ ' s r c _ h o s t ' ] ! = ' 1 2 7 . 0 . 0 . 1 '   a n d   l o g d a t a [ ' d s t _ h o s t ' ] ! = ' ' :                         i m p o r t   u u i d                         s c h e d u l e r   =   T w i s t e d S c h e d u l e r ( )                         s c h e d u l e r . a d d _ j o b ( s e l f . p o s t 2 s e r v e r ,   a r g s = [ s e r v e r i p ,   j s o n d a t a ] ,   i d = s t r ( u u i d . u u i d 1 ( ) ) )                         s c h e d u l e r . s t a r t ( )                 e l i f   l o g d a t a [ ' s r c _ h o s t ' ] ! = ' 1 2 7 . 0 . 0 . 1 ' :                         s e l f . l o g g e r . w a r n ( j s o n d a t a )
i p t a b l e s     i p t a b l e s   r s y s l o g     / v a r / l o g / k e r n . l o g   F i l e S y s t e m W a t c h e r   F i l e S y s t e m W a t c h e r       f s n o t i f y     r s y l s o g     s y s l o g   i p t a b l e s   5 0 i   k e r n . *   @ 1 2 7 . 0 . 0 . 1 : 7 7 8 8   7 7 8 8     s y s l o g   c a n a r y L o g g e r   =   l o g g i n g . g e t L o g g e r ( ) L O G _ H O S T   =   " 1 2 7 . 0 . 0 . 1 " L O G _ P O R T   =   7 7 8 8 c l a s s   S y s l o g H a n d l e r ( S o c k e t S e r v e r . B a s e R e q u e s t H a n d l e r ) :         d e f   h a n d l e ( s e l f ) :                 a d d r   =   s e l f . c l i e n t _ a d d r e s s                 d a t a   =   s e l f . r e q u e s t [ 0 ]                 s e l f . h a n d l e L i n e ( d a t a )         d e f   h a n d l e L i n e ( s e l f ,   l i n e ) :                 g l o b a l   c a n a r y L o g g e r                 s e l f . l o g g e r   =   c a n a r y L o g g e r                 t r y :                         i f   ' c a n a r y f w :   '   i n   l i n e :                                 l o g t y p e   =   s e l f . l o g g e r . L O G _ P O R T _ S Y N                                 ( r u b b i s h ,   l o g )   =   l i n e . s p l i t ( ' c a n a r y f w :   ' )                         e l i f   " c a n a r y n m a p N U L L "   i n   l i n e :                                 l o g t y p e   =   s e l f . l o g g e r . L O G _ P O R T _ N M A P N U L L                                 ( r u b b i s h ,   l o g )   =   l i n e . s p l i t ( ' c a n a r y n m a p N U L L :   ' )                         e l i f   " c a n a r y n m a p X M A S "   i n   l i n e :                                 l o g t y p e   =   s e l f . l o g g e r . L O G _ P O R T _ N M A P X M A S                                 ( r u b b i s h ,   l o g )   =   l i n e . s p l i t ( ' c a n a r y n m a p X M A S :   ' )                         e l i f   " c a n a r y n m a p F I N "   i n   l i n e :                                 l o g t y p e   =   s e l f . l o g g e r . L O G _ P O R T _ N M A P F I N                                 ( r u b b i s h ,   l o g )   =   l i n e . s p l i t ( ' c a n a r y n m a p F I N :   ' )                         e l i f   ' c a n a r y n m a p :   '   i n   l i n e :                                 l o g t y p e   =   s e l f . l o g g e r . L O G _ P O R T _ N M A P O S                                 ( r u b b i s h ,   l o g )   =   l i n e . s p l i t ( ' c a n a r y n m a p :   ' )                 e x c e p t   V a l u e E r r o r :                         r e t u r n                 t a g s   =   l o g . s p l i t ( '   ' )                 k v   =   { }                 f o r   t a g   i n   t a g s :                         i f   t a g . f i n d ( ' = ' )   > =   0 :                                 ( k e y ,   v a l )   =   t a g . s p l i t ( ' = ' )                         e l s e :                                 k e y   =   t a g                                 v a l   =   ' '                         k v [ k e y ]   =   v a l                 t r y :                         k v . p o p ( ' ' )                 e x c e p t :                         p a s s                 d a t a   =   { }                 d a t a [ ' s r c _ h o s t ' ]   =   k v . p o p ( ' S R C ' )                 d a t a [ ' s r c _ p o r t ' ]   =   k v . p o p ( ' S P T ' )                 d a t a [ ' d s t _ h o s t ' ]   =   k v . p o p ( ' D S T ' )                 d a t a [ ' d s t _ p o r t ' ]   =   k v . p o p ( ' D P T ' )                 d a t a [ ' l o g t y p e ' ]   =   l o g t y p e                 d a t a [ ' l o g d a t a ' ]   =   k v
                c a n a r y L o g g e r . l o g ( d a t a ) c l a s s   L o g C o l l e c t :         d e f   s t a r t ( s e l f ,   l o g g e r ) :                 g l o b a l   c a n a r y L o g g e r                 c a n a r y L o g g e r   =   l o g g e r                 l o g g i n g . b a s i c C o n f i g (                         l e v e l = l o g g i n g . D E B U G ,   f o r m a t = ' % ( a s c t i m e ) s   % ( f i l e n a m e ) s [ l i n e : % ( l i n e n o ) d ]   % ( l e v e l n a m e ) s   % ( m e s s a g e ) s ' ,   d a t e f m t = ' % a ,   % d   % b   % Y   % H : % M : % S ' )                 t r y :                         l o g g i n g . d e b u g ( " s l o g   s t a r t   a t   % s   :   % d   " ,   L O G _ H O S T ,   L O G _ P O R T )                         s e r v e r   =   S o c k e t S e r v e r . T h r e a d i n g U D P S e r v e r (                                 ( L O G _ H O S T ,   L O G _ P O R T ) ,   S y s l o g H a n d l e r )                         s e r v e r . a l l o w _ r e u s e _ a d d r e s s   =   T r u e                         # s e r v e r . r e q u e s t _ q u e u e _ s i z e   =   6 0                         s e r v e r . s e r v e _ f o r e v e r ( p o l l _ i n t e r v a l = 0 . 5 )                 e x c e p t   E x c e p t i o n   a s   e x :                         l o g g i n g . d e b u g ( " e r r o r   s t a r t   ,   e x i t   . . . . . " )                 e x c e p t   K e y b o a r d I n t e r r u p t :                         p r i n t   ( " C r t l + C   P r e s s e d .   S h u t t i n g   d o w n . " ) #   c o d i n g = u t f - 8 #   / u s r / l i b / p y t h o n 2 . 7 / s i t e - p a c k a g e s / o p e n c a n a r y / m o d u l e s / h o s t . p y f r o m   o p e n c a n a r y . m o d u l e s   i m p o r t   C a n a r y S e r v i c e f r o m   t w i s t e d . i n t e r n e t   i m p o r t   r e a c t o r f r o m   d a t e t i m e   i m p o r t   d a t e t i m e f r o m   a p s c h e d u l e r . s c h e d u l e r s . t w i s t e d   i m p o r t   T w i s t e d S c h e d u l e r i m p o r t   p s u t i l i m p o r t   o s i m p o r t   j s o n c l a s s   C a n a r y H o s t ( C a n a r y S e r v i c e ) :         N A M E   =   " h o s t "         d e f   _ _ i n i t _ _ ( s e l f ,   c o n f i g = N o n e ,   l o g g e r = N o n e ) :                 C a n a r y S e r v i c e . _ _ i n i t _ _ ( s e l f ,   c o n f i g ,   l o g g e r )                 s e l f . h o s t n a m e   =   c o n f i g . g e t V a l ( ' d e v i c e . n o d e _ i d ' )                 s e l f . l o c a l i p   =   c o n f i g . g e t V a l ( ' d e v i c e . l i s t e n _ a d d r ' )                 s e l f . s e r v e r i p   =   c o n f i g . g e t V a l ( ' s e r v e r . i p ' )                 s e l f . l a s t _ t i m e   =   d a t e t i m e . n o w ( ) . s t r f t i m e ( " % Y - % m - % d   % H : % M : % S . % f " )                 s e l f . s t a t u s   =   " o n l i n e "                 s e l f . l o g t y p e   =   l o g g e r . L O G _ H O S T         d e f   h o s t s t a t u s ( s e l f ) :                 h o s t j s o n   =   j s o n . d u m p s ( {                         " l a s t t i m e " :   d a t e t i m e . n o w ( ) . s t r f t i m e ( " % Y - % m - % d   % H : % M : % S . % f " ) ,                         " h o s t n a m e " :   s e l f . h o s t n a m e ,                         " i p " :   s e l f . l o c a l i p ,                         " s t a t u s " :   s e l f . s t a t u s ,                         " b i n d I p " :   s e l f . b i n d I p ( )                 } )                 t r y :                         i m p o r t   u r l l i b 2                         u r l   =   ' h t t p : / / '   +   s e l f . s e r v e r i p   +   ' / h o s t / '                         r e q   =   u r l l i b 2 . R e q u e s t (                                 u r l ,   h o s t j s o n ,   { ' C o n t e n t - T y p e ' :   ' a p p l i c a t i o n / j s o n ' } )                         f   =   u r l l i b 2 . u r l o p e n ( r e q )                         r e s p o n s e   =   f . r e a d ( )                         f . c l o s e ( )                 e x c e p t   u r l l i b 2 . U R L E r r o r ,   e :                         e   =   { " H o s t s t a t u s   u r l l i b 2   E r r o r : " :   s t r ( e ) }
                        e   =   { " H o s t s t a t u s   u r l l i b 2   E r r o r : " :   s t r ( e ) }                         s e l f . l o g g e r . e r r o r ( e )         d e f   b i n d I p ( s e l f ) :                 n e t c a r d _ i n f o   =   [ ]                 i n f o   =   p s u t i l . n e t _ i f _ a d d r s ( )                 f o r   k ,   v   i n   i n f o . i t e m s ( ) :                         f o r   i t e m   i n   v :                                 i f   i t e m [ 0 ]   = =   2   a n d   i t e m [ 1 ]   ! =   ' 1 2 7 . 0 . 0 . 1 ' :                                         n e t c a r d _ i n f o . a p p e n d ( {                                                 " n a m e " :   s t r ( k ) ,                                                 " i p " :   s t r ( i t e m [ 1 ] )                                         } )                 r e t u r n   j s o n . d u m p s ( n e t c a r d _ i n f o )         d e f   s t a r t Y o u r E n g i n e s ( s e l f ) :                 s c h e d   =   T w i s t e d S c h e d u l e r ( )                 s c h e d . s t a r t ( )                 i f   n o t   s c h e d . g e t _ j o b ( ' h o s t _ s t a t u s ' ) :                         s c h e d . a d d _ j o b ( s e l f . h o s t s t a t u s ,   ' i n t e r v a l ' ,                                                     s e c o n d s = 1 0 ,   i d = ' h o s t _ s t a t u s ' ) C a n a r y S e r v i c e F a c t o r y   =   C a n a r y H o s t

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则