[14374] 2019-07-21_思科DCNM多个漏洞细节分析

文档创建者:s7ckTeam
浏览次数:13
最后更新:2025-01-18
2019-07-21_思科DCNM多个漏洞细节分析 D C N M K r i s t o n   F r e e B u f   2 0 1 9 - 0 7 - 2 1 C i s c o   D a t a   C e n t e r   N e t w o r k   M a n a g e r D C N M C i s c o W i n d o w s R e d   H a t   L i n u x D C N M D C N M   1 1 . 1 1 4 1 0 . 4 2 1 1 . 0 1 1 1 . 1 1 C i s c o s e r v l e t 1 1 . 2 1 T o m c a t   w e b a p p s w a r A p a c h e   T o m c a t r o o t J a v a   s h e l l r o o t C i s c o ® D a t a   C e n t e r   N e t w o r k   M a n a g e r D C N M N X - O S C i s c o L A N S A N I P I P F M D C N M   1 1 C i s c o   N e x u s ® C i s c o M D S D C N M   1 1 C i s c o   N e x u s D C N M 使 C i s c o   M D S   9 0 0 0 C i s c o   N e x u s D C N M   1 1 S A N S A N 1 V u l n e r a b i l i t y :   A u t h e n t i c a t i o n   B y p a s s C V E - 2 0 1 9 - 1 6 1 9 A t t a c k   V e c t o r :   R e m o t e C o n s t r a i n t s :   N o n e A f f e c t e d   p r o d u c t s   /   v e r s i o n s : C i s c o   D a t a   C e n t e r   N e t w o r k   M a n a g e r   1 0 . 4 ( 2 )   D C N M u r l / f m / p m r e p o r t r e p o r t s e r v l e t s e r v l e t W e b s e r v l e t c o m . c i s c o . d c b u . w e b . c l i e n t . p e r f o r m a n c e . R e p o r t S e r v l e t     p u b l i c   v o i d   d o G e t ( H t t p S e r v l e t R e q u e s t   r e q u e s t ,   H t t p S e r v l e t R e s p o n s e   r e s p o n s e )   t h r o w s   S e r v l e t E x c e p t i o n ,   I O E x c e p t i o n   {         C r e d e n t i a l s   c r e d   =   ( C r e d e n t i a l s ) r e q u e s t . g e t S e s s i o n ( ) . g e t A t t r i b u t e ( " c r e d e n t i a l s " ) ;         i f ( ( c r e d   = =   n u l l   | |   ! c r e d . i s A u t h e n t i c a t e d ( ) )   & &   ! " f e t c h " . e q u a l s ( r e q u e s t . g e t P a r a m e t e r ( " c o m m a n d " ) )   & &   ! t h i s . v e r i f y T o k e n ( r e q u e s t ) )   {             r e q u e s t . s e t A t t r i b u t e ( " p o p U p S e s s i o n T O " ,   " t r u e " ) ;         }         t h i s . d o I n t e r a c t i v e C h a r t ( r e q u e s t ,   r e s p o n s e ) ;     }
v e r i f y T o k e n f m U s e r B a s e   f m U s e r B a s e = i s c . v e r i f y s s o t o k e n H T T P t o k e n i s c r i f . v e r i f y s s o t o k e n i s c r i f . v e r i f y s s o t o k e n     p r i v a t e   b o o l e a n   v e r i f y T o k e n ( H t t p S e r v l e t R e q u e s t   h t t p S e r v l e t R e q u e s t )   {         S t r i n g   t o k e n   =   h t t p S e r v l e t R e q u e s t . g e t P a r a m e t e r ( " t o k e n " ) ;         i f ( t o k e n   = =   n u l l )   {             r e t u r n   f a l s e ;         }   e l s e   {             t r y   {                 F M S e r v e r R i f   s e r v e r R i f   =   S Q L L o a d e r . g e t S e r v e r M a n a g e r ( ) ;                 I s c R i f   i s c   =   s e r v e r R i f . g e t I s c ( S t r i n g E n c r y p t e r . e n c r y p t S t r i n g ( " D E S e d e " ,   ( n e w   D a t e ( ) ) . t o S t r i n g ( ) ) ) ;                 t o k e n   =   U R L D e c o d e r . d e c o d e ( t o k e n ,   " U T F - 8 " ) ;                 t o k e n   =   t o k e n . r e p l a c e ( '   ' ,   ' + ' ) ;                 F M U s e r B a s e   f m U s e r B a s e   =   i s c . v e r i f y S S o T o k e n ( t o k e n ) ;                 i f ( f m U s e r B a s e   = =   n u l l )   {                     r e t u r n   f a l s e ;                 }   e l s e   {                     C r e d e n t i a l s   n e w C r e d   =   n e w   C r e d e n t i a l s ( ) ;                     i n t   i d x   =   f m U s e r B a s e . g e t U s e r n a m e ( ) . i n d e x O f ( 6 4 ) ;                     n e w C r e d . s e t U s e r N a m e ( i d x   = =   - 1 ? f m U s e r B a s e . g e t U s e r n a m e ( ) : f m U s e r B a s e . g e t U s e r n a m e ( ) . s u b s t r i n g ( 0 ,   i d x ) ) ;                     n e w C r e d . s e t P a s s w o r d ( S t r i n g E n c r y p t e r . D E S e d e D e c r y p t ( f m U s e r B a s e . g e t E n c r y p t e d P a s s w o r d ( ) ) ) ;                     n e w C r e d . s e t R o l e ( f m U s e r B a s e . g e t R o l e ( ) ) ;                     n e w C r e d . s e t A u t h e n t i c a t e d ( t r u e ) ;                     h t t p S e r v l e t R e q u e s t . g e t S e s s i o n ( ) . s e t A t t r i b u t e ( " c r e d e n t i a l s " ,   n e w C r e d ) ;                     r e t u r n   t r u e ;                 }             }   c a t c h   ( E x c e p t i o n   v a r 8 )   {                 v a r 8 . p r i n t S t a c k T r a c e ( ) ;                 r e t u r n   f a l s e ;             }         }     }   p u b l i c   F M U s e r B a s e   v e r i f y S S o T o k e n ( S t r i n g   s s o T o k e n )   {
u s e r N a m e   =   g e t S S o T o k e n U s e r N a m e ( s s o T o k e n ) ;         r e t u r n   S e c u r i t y M a n a g e r . v e r i f y S S o T o k e n ( s s o T o k e n ) ;     }   p u b l i c   s t a t i c   F M U s e r B a s e   v e r i f y S S o T o k e n ( S t r i n g   s s o T o k e n )   {         S t r i n g   u s e r N a m e   =   n u l l ;         F M U s e r B a s e   f m U s e r B a s e   =   n u l l ;         F M U s e r   f m U s e r   =   n u l l ;         t r y   {             u s e r N a m e   =   g e t S S o T o k e n U s e r N a m e ( s s o T o k e n ) ;             i f ( c o n f i r m S S O T o k e n ( s s o T o k e n ) )   {                 f m U s e r   =   U s e r M a n a g e r . g e t I n s t a n c e ( ) . f i n d U s e r ( u s e r N a m e ) ;                 i f ( f m U s e r   ! =   n u l l )   {                     f m U s e r B a s e   =   n e w   F M U s e r B a s e ( u s e r N a m e ,   f m U s e r . g e t H a s h e d P w d ( ) ,   f m U s e r . g e t R o l e s ( ) ) ;                 }                 i f ( f m U s e r B a s e   = =   n u l l )   {                     f m U s e r B a s e   =   D C N M U s e r I m p l . g e t F M U s e r B a s e ( u s e r N a m e ) ;                 }                 i f ( f m U s e r B a s e   = =   n u l l )   {                     f m U s e r B a s e   =   F M S e s s i o n M a n a g e r . g e t I n s t a n c e ( ) . g e t F M U s e r ( g e t S e s s i o n I d B y T o k e n ( s s o T o k e n ) ) ;                 }             }         }   c a t c h   ( E x c e p t i o n   v a r 5 )   {             _ L o g g e r . i n f o ( " v e r i f y S S o T o k e n :   " ,   v a r 5 ) ;         }         r e t u r n   f m U s e r B a s e ;     } p u b l i c   s t a t i c   S t r i n g   g e t S S o T o k e n U s e r N a m e ( S t r i n g   s s o T o k e n )   {         r e t u r n   g e t S S o T o k e n D e t a i l s ( s s o T o k e n ) [ 3 ] ;     }     p r i v a t e   s t a t i c   S t r i n g [ ]   g e t S S o T o k e n D e t a i l s ( S t r i n g   s s o T o k e n )   {         S t r i n g [ ]   r e t   =   n e w   S t r i n g [ 4 ] ;         S t r i n g   s e p a r a t o r   =   g e t T o k e n S e p a r a t o r ( ) ;
s e c u r i t y M a n a g e r . v e r i f y s s o t o k e n g e t s s o t o k e n u s e r n a m e c o n f i r m s s o t o k e n :         S t r i n g T o k e n i z e r   s t   =   n e w   S t r i n g T o k e n i z e r ( s s o T o k e n ,   s e p a r a t o r ) ;         i f ( s t . h a s M o r e T o k e n s ( ) )   {             r e t [ 0 ]   =   s t . n e x t T o k e n ( ) ;             r e t [ 1 ]   =   s t . n e x t T o k e n ( ) ;             r e t [ 2 ]   =   s t . n e x t T o k e n ( ) ;             f o r ( r e t [ 3 ]   =   s t . n e x t T o k e n ( ) ;   s t . h a s M o r e T o k e n s ( ) ;   r e t [ 3 ]   =   r e t [ 3 ]   +   s e p a r a t o r   +   s t . n e x t T o k e n ( ) )   {                 ;             }         }         r e t u r n   r e t ;     }   p u b l i c   s t a t i c   F M U s e r B a s e   v e r i f y S S o T o k e n ( S t r i n g   s s o T o k e n )   {                                 ( . . . )             u s e r N a m e   =   g e t S S o T o k e n U s e r N a m e ( s s o T o k e n ) ;             i f ( c o n f i r m S S O T o k e n ( s s o T o k e n ) )   {                 f m U s e r   =   U s e r M a n a g e r . g e t I n s t a n c e ( ) . f i n d U s e r ( u s e r N a m e ) ;                 i f ( f m U s e r   ! =   n u l l )   {                     f m U s e r B a s e   =   n e w   F M U s e r B a s e ( u s e r N a m e ,   f m U s e r . g e t H a s h e d P w d ( ) ,   f m U s e r . g e t R o l e s ( ) ) ;                 }                                 ( . . . )                 }     p u b l i c   s t a t i c   b o o l e a n   c o n f i r m S S O T o k e n ( S t r i n g   s s o T o k e n )   {         S t r i n g   u s e r N a m e   =   n u l l ;         i n t   s e s s i o n I d   =   f a l s e ;         l o n g   s y s T i m e   =   0 L ;         S t r i n g   d i g e s t   =   n u l l ;         i n t   c o u n t   =   f a l s e ;         b o o l e a n   r e t   =   f a l s e ;         t r y   {             S t r i n g [ ]   d e t a i l   =   g e t S S o T o k e n D e t a i l s ( s s o T o k e n ) ;             u s e r N a m e   =   d e t a i l [ 3 ] ;             i n t   s e s s i o n I d   =   I n t e g e r . p a r s e I n t ( d e t a i l [ 0 ] ) ;
s e s s i o n i d + s e p a r a t o r + s y s t i m e + s e p a r a t o r + d i g e s t + s e p a r a t o r + u s e r n a m e d i g e s t ( ) g e t M e s s a g e D i g e s t M D 5 ' . ' u s e r N a m e   +   s e s s i o n i d   +   s y s T i m e   +   S E C R E T K E Y S E C R E T K E Y " P O s V w v 6 V B I n S O t Y Q d 9 r 2 p F R s S e 1 c E e V F Q u T v D f N 7 n J 5 5 Q w 8 f M m 5 Z G v j m I r 8 7 G E F " ; r e p o r t s e r v l e t s e s s i o n I d . s y s T i m e . M D 5 ( u s e r N a m e   +   s e s s i o n i d   +   s y s T i m e   +   S E C R E T K E Y ) . u s e r n a m e s e s s i o n i d H T T P s e c r e t k e y G E T   / f m / p m r e p o r t ? t o k e n = 1 3 3 7 . 1 5 3 5 9 3 5 6 5 9 0 0 0 . u p j V g Z Q m x N N g a X o 5 G a 6 j v Q = = . a d m i n s e r v l e t 5 0 0 j s e s s i o n i d   c o o k i e a d m i n 1 1 . 0 1 1 1 . 0 1 r e p o r t s e r v l e t . v e r i f y t o k e n             i n t   s e s s i o n I d   =   I n t e g e r . p a r s e I n t ( d e t a i l [ 0 ] ) ;             s y s T i m e   =   ( n e w   L o n g ( d e t a i l [ 1 ] ) ) . l o n g V a l u e ( ) ;             i f ( S y s t e m . c u r r e n t T i m e M i l l i s ( )   -   s y s T i m e   >   6 0 0 0 0 0 L )   {                 r e t u r n   r e t ;             }             d i g e s t   =   d e t a i l [ 2 ] ;             i f ( d i g e s t   ! =   n u l l   & &   d i g e s t . e q u a l s ( g e t M e s s a g e D i g e s t ( " M D 5 " ,   u s e r N a m e ,   s e s s i o n I d ,   s y s T i m e ) ) )   {                 r e t   =   t r u e ;                 u s e r N a m e T L C . s e t ( u s e r N a m e ) ;             }         }   c a t c h   ( E x c e p t i o n   v a r 9 )   {             _ L o g g e r . i n f o ( " c o n f i r m S S o T o k e n :   " ,   v a r 9 ) ;         }         r e t u r n   r e t ;     } p r i v a t e   s t a t i c   S t r i n g   g e t M e s s a g e D i g e s t ( S t r i n g   a l g o r i t h m ,   S t r i n g   u s e r N a m e ,   i n t   s e s s i o n i d ,   l o n g   s y s T i m e )   t h r o w s   E x c e p t i o n   {             S t r i n g   i n p u t   =   u s e r N a m e   +   s e s s i o n i d   +   s y s T i m e   +   S E C R E T K E Y ;             M e s s a g e D i g e s t   m d   =   M e s s a g e D i g e s t . g e t I n s t a n c e ( a l g o r i t h m ) ;             m d . u p d a t e ( i n p u t . g e t B y t e s ( ) ) ;             r e t u r n   n e w   S t r i n g ( B a s e 6 4 . e n c o d e B a s e 6 4 ( ( b y t e [ ] ) m d . d i g e s t ( ) ) ) ;         } p r i v a t e   b o o l e a n   v e r i f y T o k e n ( H t t p S e r v l e t R e q u e s t   h t t p S e r v l e t R e q u e s t )   {
c o m . c i s c o . d c b u . l i b . u t i l . S t r i n g E n c r y p t e r $ E n c r y p t i o n E x c e p t i o n : j a v a x . c r y p t o . b a d p a d d i n g E x c e p t i o n : g i v e n   f i n a l   b l o c k   n o t   p r o p e r l y   p a d d e d c a t c h f a l s e J S e s s i o n I D   c o o k i e 使 r e p o r t s e r v l e t 1 1 . 0 1 w a r   x m l r e p o r t s e r v l e t U R L H T T P 4 0 4 2 V u l n e r a b i l i t y :   A r b i t r a r y   F i l e   U p l o a d   ( l e a d i n g   t o   r e m o t e   c o d e   e x e c u t i o n ) C V E - 2 0 1 9 - 1 6 2 0 A t t a c k   V e c t o r :   R e m o t e C o n s t r a i n t s :   A u t h e n t i c a t i o n   t o   t h e   w e b   i n t e r f a c e   a s   a n   u n p r i v i l e g e d   u s e r   r e q u i r e d   E X C E P T   f o r   v e r s i o n   1 1 . 1 ( 1 ) ,   w h e r e   i t   c a n   b e   e x p l o i t e d   b y   a n   u n a u t h e n t i c a t e d u s e r A f f e c t e d   p r o d u c t s   /   v e r s i o n s : C i s c o   D a t a   C e n t e r   N e t w o r k   M a n a g e r   1 1 . 1 ( 1 )   D C N M / f m / f i l e   u p l o a d s e r v l e t f i l e u p l o a d s e r v l e t s e r v l e t s e r v l e t p r i v a t e   b o o l e a n   v e r i f y T o k e n ( H t t p S e r v l e t R e q u e s t   h t t p S e r v l e t R e q u e s t )   {                 ( . . . )                     C r e d e n t i a l s   n e w C r e d   =   n e w   C r e d e n t i a l s ( ) ;                     i n t   i d x   =   f m U s e r B a s e . g e t U s e r n a m e ( ) . i n d e x O f ( 6 4 ) ;                     n e w C r e d . s e t U s e r N a m e ( i d x   = =   - 1 ? f m U s e r B a s e . g e t U s e r n a m e ( ) : f m U s e r B a s e . g e t U s e r n a m e ( ) . s u b s t r i n g ( 0 ,   i d x ) ) ;                     n e w C r e d . s e t P a s s w o r d ( S t r i n g E n c r y p t e r . D E S e d e D e c r y p t ( f m U s e r B a s e . g e t E n c r y p t e d P a s s w o r d ( ) ) ) ;                                         < - - -   e x c e p t i o n   o c c u r s   h e r e                     n e w C r e d . s e t R o l e ( f m U s e r B a s e . g e t R o l e ( ) ) ;                     n e w C r e d . s e t A u t h e n t i c a t e d ( t r u e ) ;                     h t t p S e r v l e t R e q u e s t . g e t S e s s i o n ( ) . s e t A t t r i b u t e ( " c r e d e n t i a l s " ,   n e w C r e d ) ;                     r e t u r n   t r u e ;                 }             }   c a t c h   ( E x c e p t i o n   v a r 8 )   {                 v a r 8 . p r i n t S t a c k T r a c e ( ) ;                 r e t u r n   f a l s e ;             }                 ( . . . )     } c o m . c i s c o . d c b u . w e b . c l i e n t . r e p o r t s . F i l e U p l o a d S e r v l e t     p u b l i c   v o i d   d o P o s t ( H t t p S e r v l e t R e q u e s t   r e q u e s t ,   H t t p S e r v l e t R e s p o n s e   r e s p o n s e )   t h r o w s   S e r v l e t E x c e p t i o n ,   I O E x c e p t i o n   {         t h i s . d o G e t ( r e q u e s t ,   r e s p o n s e ) ;     }     p u b l i c   v o i d   d o G e t ( H t t p S e r v l e t R e q u e s t   r e q u e s t ,   H t t p S e r v l e t R e s p o n s e   r e s p o n s e )   t h r o w s   S e r v l e t E x c e p t i o n ,   I O E x c e p t i o n   {         C r e d e n t i a l s   c r e d   =   ( C r e d e n t i a l s ) ( ( O b j e c t ) r e q u e s t . g e t S e s s i o n ( ) . g e t A t t r i b u t e ( " c r e d e n t i a l s " ) ) ;
h a n d l e u p l o a d         i f   ( c r e d   = =   n u l l   | |   ! c r e d . i s A u t h e n t i c a t e d ( ) )   {             t h r o w   n e w   S e r v l e t E x c e p t i o n ( " U s e r   n o t   l o g g e d   i n   o r   S e s s i o n   t i m e d   o u t . " ) ;         }         t h i s . h a n d l e U p l o a d ( r e q u e s t ,   r e s p o n s e ) ;     } p r i v a t e   v o i d   h a n d l e U p l o a d ( H t t p S e r v l e t R e q u e s t   r e q u e s t ,   H t t p S e r v l e t R e s p o n s e   r e s p o n s e )   t h r o w s   S e r v l e t E x c e p t i o n ,   I O E x c e p t i o n   {         r e s p o n s e . s e t C o n t e n t T y p e ( C O N T E N T _ T Y P E ) ;         P r i n t W r i t e r   o u t   =   n u l l ;         A r r a y L i s t < S t r i n g >   a l l o w e d F o r m a t s   =   n e w   A r r a y L i s t < S t r i n g > ( ) ;         a l l o w e d F o r m a t s . a d d ( " j p e g " ) ;         a l l o w e d F o r m a t s . a d d ( " p n g " ) ;         a l l o w e d F o r m a t s . a d d ( " g i f " ) ;         a l l o w e d F o r m a t s . a d d ( " j p g " ) ;         a l l o w e d F o r m a t s . a d d ( " c e r t " ) ;         F i l e   d i s k   =   n u l l ;         F i l e I t e m   i t e m   =   n u l l ;         D i s k F i l e I t e m F a c t o r y   f a c t o r y   =   n e w   D i s k F i l e I t e m F a c t o r y ( ) ;         S t r i n g   s t a t u s M e s s a g e   =   " " ;         S t r i n g   f n a m e   =   " " ;         S t r i n g   u p l o a d D i r   =   " " ;         L i s t I t e r a t o r   i t e r a t o r   =   n u l l ;         L i s t   i t e m s   =   n u l l ;         S e r v l e t F i l e U p l o a d   u p l o a d   =   n e w   S e r v l e t F i l e U p l o a d ( ( F i l e I t e m F a c t o r y ) f a c t o r y ) ;         T r a n s f o r m e r H a n d l e r   h d   =   n u l l ;         t r y   {             o u t   =   r e s p o n s e . g e t W r i t e r ( ) ;             S t r e a m R e s u l t   s t r e a m R e s u l t   =   n e w   S t r e a m R e s u l t ( o u t ) ;             S A X T r a n s f o r m e r F a c t o r y   t f   =   ( S A X T r a n s f o r m e r F a c t o r y ) S A X T r a n s f o r m e r F a c t o r y . n e w I n s t a n c e ( ) ;             i t e m s   =   u p l o a d . p a r s e R e q u e s t ( r e q u e s t ) ;             i t e r a t o r   =   i t e m s . l i s t I t e r a t o r ( ) ;             h d   =   t f . n e w T r a n s f o r m e r H a n d l e r ( ) ;             T r a n s f o r m e r   s e r i a l i z e r   =   h d . g e t T r a n s f o r m e r ( ) ;
            s e r i a l i z e r . s e t O u t p u t P r o p e r t y ( " e n c o d i n g " ,   " U T F - 8 " ) ;             s e r i a l i z e r . s e t O u t p u t P r o p e r t y ( " d o c t y p e - s y s t e m " ,   " r e s p o n s e . d t d " ) ;             s e r i a l i z e r . s e t O u t p u t P r o p e r t y ( " i n d e n t " ,   " y e s " ) ;             s e r i a l i z e r . s e t O u t p u t P r o p e r t y ( " m e t h o d " ,   " x m l " ) ;             h d . s e t R e s u l t ( s t r e a m R e s u l t ) ;             h d . s t a r t D o c u m e n t ( ) ;             A t t r i b u t e s I m p l   a t t s   =   n e w   A t t r i b u t e s I m p l ( ) ;             h d . s t a r t E l e m e n t ( " " ,   " " ,   " r e s p o n s e " ,   a t t s ) ;             w h i l e   ( i t e r a t o r . h a s N e x t ( ) )   {                 a t t s . c l e a r ( ) ;                 i t e m   =   ( F i l e I t e m ) i t e r a t o r . n e x t ( ) ;                 i f   ( i t e m . i s F o r m F i e l d ( ) )   {                     i f   ( i t e m . g e t F i e l d N a m e ( ) . e q u a l s I g n o r e C a s e ( " f n a m e " ) )   {                         f n a m e   =   i t e m . g e t S t r i n g ( ) ;                     }                     i f   ( i t e m . g e t F i e l d N a m e ( ) . e q u a l s I g n o r e C a s e ( " u p l o a d D i r " )   & &   ( u p l o a d D i r   =   i t e m . g e t S t r i n g ( ) ) . e q u a l s ( D E F A U L T _ T R U S T _ S T O R E _ U P L O A D D I R ) )   {                         u p l o a d D i r   =   C l i e n t C a c h e . g e t J B o s s H o m e ( )   +   F i l e . s e p a r a t o r   +   " s e r v e r "   +   F i l e . s e p a r a t o r   +   " f m "   +   F i l e . s e p a r a t o r   +   " c o n f " ;                     }                     a t t s . a d d A t t r i b u t e ( " " ,   " " ,   " i d " ,   " C D A T A " ,   i t e m . g e t F i e l d N a m e ( ) ) ;                     h d . s t a r t E l e m e n t ( " " ,   " " ,   " f i e l d " ,   a t t s ) ;                     h d . c h a r a c t e r s ( i t e m . g e t S t r i n g ( ) . t o C h a r A r r a y ( ) ,   0 ,   i t e m . g e t S t r i n g ( ) . l e n g t h ( ) ) ;                     h d . e n d E l e m e n t ( " " ,   " " ,   " f i e l d " ) ;                     a t t s . c l e a r ( ) ;                     c o n t i n u e ;                 }                 I m a g e I n p u t S t r e a m   i m a g e I n p u t S t r e a m   =   I m a g e I O . c r e a t e I m a g e I n p u t S t r e a m ( i t e m . g e t I n p u t S t r e a m ( ) ) ;                 I t e r a t o r < I m a g e R e a d e r >   i m a g e R e a d e r s   =   I m a g e I O . g e t I m a g e R e a d e r s ( i m a g e I n p u t S t r e a m ) ;                 I m a g e R e a d e r   i m a g e R e a d e r   =   n u l l ;                 i f   ( i m a g e R e a d e r s . h a s N e x t ( ) )   {                     i m a g e R e a d e r   =   i m a g e R e a d e r s . n e x t ( ) ;                 }                 t r y   {                     S t r i n g   i m a g e F o r m a t   =   i m a g e R e a d e r . g e t F o r m a t N a m e ( ) ;                     S t r i n g   n e w F i l e N a m e   =   f n a m e   +   " . "   +   i m a g e F o r m a t ;
                    S t r i n g   n e w F i l e N a m e   =   f n a m e   +   " . "   +   i m a g e F o r m a t ;                     i f   ( a l l o w e d F o r m a t s . c o n t a i n s ( i m a g e F o r m a t . t o L o w e r C a s e ( ) ) )   {                         F i l e F i l t e r   f i l e F i l t e r   =   n e w   F i l e F i l t e r ( ) ;                         f i l e F i l t e r . s e t I m a g e T y p e s ( a l l o w e d F o r m a t s ) ;                         F i l e [ ]   f i l e L i s t   =   n e w   F i l e ( u p l o a d D i r ) . l i s t F i l e s ( f i l e F i l t e r ) ;                         f o r   ( i n t   i   =   0 ;   i   <   f i l e L i s t . l e n g t h ;   + + i )   {                             n e w   F i l e ( f i l e L i s t [ i ] . g e t A b s o l u t e P a t h ( ) ) . d e l e t e ( ) ;                         }                         d i s k   =   n e w   F i l e ( u p l o a d D i r   +   F i l e . s e p a r a t o r   +   f n a m e ) ;                         i t e m . w r i t e ( d i s k ) ;                         C a l e n d a r   c a l e n d a r   =   C a l e n d a r . g e t I n s t a n c e ( ) ;                         S i m p l e D a t e F o r m a t   s i m p l e D a t e F o r m a t   =   n e w   S i m p l e D a t e F o r m a t ( " M M . d d . y y   h h : m m : s s   a a a " ) ;                         s t a t u s M e s s a g e   =   " F i l e   s u c c e s s f u l l y   w r i t t e n   t o   s e r v e r   a t   "   +   s i m p l e D a t e F o r m a t . f o r m a t ( c a l e n d a r . g e t T i m e ( ) ) ;                     }                     i m a g e R e a d e r . d i s p o s e ( ) ;                     i m a g e I n p u t S t r e a m . c l o s e ( ) ;                     a t t s . a d d A t t r i b u t e ( " " ,   " " ,   " i d " ,   " C D A T A " ,   n e w F i l e N a m e ) ;                 }                 c a t c h   ( E x c e p t i o n   e x )   {                     t h i s . p r o c e s s U p l o a d e d F i l e ( i t e m ,   u p l o a d D i r ,   f n a m e ) ;                     C a l e n d a r   c a l e n d a r   =   C a l e n d a r . g e t I n s t a n c e ( ) ;                     S i m p l e D a t e F o r m a t   s i m p l e D a t e F o r m a t   =   n e w   S i m p l e D a t e F o r m a t ( " M M . d d . y y   h h : m m : s s   a a a " ) ;                     s t a t u s M e s s a g e   =   " F i l e   s u c c e s s f u l l y   w r i t t e n   t o   s e r v e r   a t   "   +   s i m p l e D a t e F o r m a t . f o r m a t ( c a l e n d a r . g e t T i m e ( ) ) ;                     a t t s . a d d A t t r i b u t e ( " " ,   " " ,   " i d " ,   " C D A T A " ,   f n a m e ) ;                 }                 h d . s t a r t E l e m e n t ( " " ,   " " ,   " f i l e " ,   a t t s ) ;                 h d . c h a r a c t e r s ( s t a t u s M e s s a g e . t o C h a r A r r a y ( ) ,   0 ,   s t a t u s M e s s a g e . l e n g t h ( ) ) ;                 h d . e n d E l e m e n t ( " " ,   " " ,   " f i l e " ) ;             }             h d . e n d E l e m e n t ( " " ,   " " ,   " r e s p o n s e " ) ;             h d . e n d D o c u m e n t ( ) ;             o u t . c l o s e ( ) ;         }         c a t c h   ( E x c e p t i o n   e )   {
h a n d l e u p l o a d u p l o a d d i r f n a m e H T T P u p l o a d d i r / f n a m e : T r y - C a t c h I m a g e R e a d e r c a t c h u p l o a d   d i r p r o c e s s u p l o a d e d f i l e             o u t . p r i n t l n ( e . g e t M e s s a g e ( ) ) ;         }     } a l l o w e d F o r m a t s . a d d ( " j p e g " ) ; a l l o w e d F o r m a t s . a d d ( " p n g " ) ; a l l o w e d F o r m a t s . a d d ( " g i f " ) ; a l l o w e d F o r m a t s . a d d ( " j p g " ) ; a l l o w e d F o r m a t s . a d d ( " c e r t " ) ; t r y   {                     S t r i n g   i m a g e F o r m a t   =   i m a g e R e a d e r . g e t F o r m a t N a m e ( ) ;     . . . c a t c h   ( E x c e p t i o n   e x )   {                     t h i s . p r o c e s s U p l o a d e d F i l e ( i t e m ,   u p l o a d D i r ,   f n a m e ) ;                     C a l e n d a r   c a l e n d a r   =   C a l e n d a r . g e t I n s t a n c e ( ) ;                     S i m p l e D a t e F o r m a t   s i m p l e D a t e F o r m a t   =   n e w   S i m p l e D a t e F o r m a t ( " M M . d d . y y   h h : m m : s s   a a a " ) ;                     s t a t u s M e s s a g e   =   " F i l e   s u c c e s s f u l l y   w r i t t e n   t o   s e r v e r   a t   "   +   s i m p l e D a t e F o r m a t . f o r m a t ( c a l e n d a r . g e t T i m e ( ) ) ;                     a t t s . a d d A t t r i b u t e ( " " ,   " " ,   " i d " ,   " C D A T A " ,   f n a m e ) ;     . . . p r i v a t e   v o i d   p r o c e s s U p l o a d e d F i l e ( F i l e I t e m   i t e m ,   S t r i n g   u p l o a d D i r ,   S t r i n g   f n a m e )   t h r o w s   E x c e p t i o n   {         t r y   {             i n t   o f f s e t ;             i n t   c o n t e n t L e n g t h   =   ( i n t ) i t e m . g e t S i z e ( ) ;             I n p u t S t r e a m   r a w   =   i t e m . g e t I n p u t S t r e a m ( ) ;             B u f f e r e d I n p u t S t r e a m   i n   =   n e w   B u f f e r e d I n p u t S t r e a m ( r a w ) ;             b y t e [ ]   d a t a   =   n e w   b y t e [ c o n t e n t L e n g t h ] ;             i n t   b y t e s R e a d   =   0 ;             f o r   ( o f f s e t   =   0 ;   o f f s e t   <   c o n t e n t L e n g t h   & &   ( b y t e s R e a d   =   i n . r e a d ( d a t a ,   o f f s e t ,   d a t a . l e n g t h   -   o f f s e t ) )   ! =   - 1 ;   o f f s e t   + =   b y t e s R e a d )   {             }             i n . c l o s e ( ) ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则