2022-02-28 13:34:46 -05:00
( function ( ) { let configuration _interval ; let configuration _timeout = 0 ; let $progress _bar = $ ( ".progress-bar" ) ; let bootstrapModalConfig = { keyboard : false , backdrop : "static" } ; let addModal = new bootstrap . Modal ( document . getElementById ( "add_modal" ) , bootstrapModalConfig ) ; let deleteBulkModal = new bootstrap . Modal ( document . getElementById ( "delete_bulk_modal" ) , bootstrapModalConfig ) ; let ipModal = new bootstrap . Modal ( document . getElementById ( "available_ip_modal" ) , bootstrapModalConfig ) ; let qrcodeModal = new bootstrap . Modal ( document . getElementById ( "qrcode_modal" ) , bootstrapModalConfig ) ; let settingModal = new bootstrap . Modal ( document . getElementById ( "setting_modal" ) , bootstrapModalConfig ) ; let deleteModal = new bootstrap . Modal ( document . getElementById ( "delete_modal" ) , bootstrapModalConfig ) ; $ ( "[data-toggle='tooltip']" ) . tooltip ( ) ; $ ( "[data-toggle='popover']" ) . popover ( ) ; function configurationAlert ( response ) { if ( response . listen _port === "" && response . status === "stopped" ) { let configAlert = document . createElement ( "div" ) ; configAlert . classList . add ( "alert" ) ; configAlert . classList . add ( "alert-warning" ) ; configAlert . setAttribute ( "role" , "alert" ) ; configAlert . innerHTML = "Peer QR Code and configuration file download required a specified <strong>Listen Port</strong>." ; document . querySelector ( "#config_info_alert" ) . appendChild ( configAlert ) } if ( response . conf _address === "N/A" ) { let configAlert = document . createElement ( "div" ) ; configAlert . classList . add ( "alert" ) ; configAlert . classList . add ( "alert-warning" ) ; configAlert . setAttribute ( "role" , "alert" ) ; configAlert . innerHTML = "Configuration <strong>Address</strong> need to be specified to have peers connect to it." ; document . querySelector ( "#config_info_alert" ) . appendChild ( configAlert ) } } function configurationHeader ( response ) { let $conf _status _btn = document . getElementById ( "conf_status_btn" ) ; if ( response . checked === "checked" ) { $conf _status _btn . innerHTML = ` <a href="#" id=" ${ response . name } " ${ response . checked } class="switch text-primary"><i class="bi bi-toggle2-on"></i> ON</a> ` } else { $conf _status _btn . innerHTML = ` <a href="#" id=" ${ response . name } " ${ response . checked } class="switch text-primary"><i class="bi bi-toggle2-off"></i> OFF</a> ` } $conf _status _btn . classList . remove ( "info_loading" ) ; document . querySelectorAll ( "#sort_by_dropdown option" ) . forEach ( ele => ele . removeAttribute ( "selected" ) ) ; document . querySelector ( ` #sort_by_dropdown option[value=" ${ response . sort _tag } "] ` ) . setAttribute ( "selected" , "selected" ) ; document . querySelectorAll ( ".interval-btn-group button" ) . forEach ( ele => ele . classList . remove ( "active" ) ) ; document . querySelector ( ` button[data-refresh-interval=" ${ response . dashboard _refresh _interval } "] ` ) . classList . add ( "active" ) ; document . querySelectorAll ( ".display-btn-group button" ) . forEach ( ele => ele . classList . remove ( "active" ) ) ; document . querySelector ( ` button[data-display-mode=" ${ response . peer _display _mode } "] ` ) . classList . add ( "active" ) ; document . querySelector ( "#conf_status" ) . innerHTML = ` ${ response . status } <span class="dot dot- ${ response . status } "></span> ` ; document . querySelector ( "#conf_connected_peers" ) . innerHTML = response . running _peer ; document . querySelector ( "#conf_total_data_usage" ) . innerHTML = ` ${ response . total _data _usage [ 0 ] } GB ` ; document . querySelector ( "#conf_total_data_received" ) . innerHTML = ` ${ response . total _data _usage [ 2 ] } GB ` ; document . querySelector ( "#conf_total_data_sent" ) . innerHTML = ` ${ response . total _data _usage [ 1 ] } GB ` ; document . querySelector ( "#conf_public_key" ) . innerHTML = response . public _key ; document . querySelector ( "#conf_listen_port" ) . innerHTML = response . listen _port === "" ? "N/A" : response . listen _port ; document . querySelector ( "#conf_address" ) . innerHTML = response . conf _address ; document . querySelectorAll ( ".info h6" ) . forEach ( ele => ele . classList . remove ( "info_loading" ) ) } function configurationPeers ( response ) { let result = "" ; if ( response . peer _data . length === 0 ) { document . querySelector ( ".peer_list" ) . innerHTML = ` <div class="col-12" style="text-align: center; margin-top: 1.5rem"><h3 class="text-muted">Oops! No peers found ‘︿’</h3></div> ` } else { let display _mode = response . peer _display _mode === "list" ? "col-12" : "col-sm-6 col-lg-4" ; response . peer _data . forEach ( function ( peer ) { let total _r = 0 ; let total _s = 0 ; total _r += peer . cumu _receive ; t
< h5 class = "peerName" > $ { peer . name === "" ? "Untitled" : peer . name } < / h 5 >
< h6 class = "peerLightContainer" > < span class = "dot dot-${peer.status}" style = "margin-left: auto !important;" data - toggle = "tooltip" data - placement = "left" > < / s p a n > < / h 6 >
< / d i v > ` ; l e t p e e r _ t r a n s f e r = ` < d i v c l a s s = " c o l - 1 2 p e e r _ d a t a _ g r o u p " s t y l e = " " >
< p class = "text-primary" style = "" >
< small > < i class = "bi bi-arrow-down-right" > < / i > $ { r o u n d N ( p e e r . t o t a l _ r e c e i v e + t o t a l _ r , 4 ) } G B < / s m a l l >
< / p >
< p class = "text-success" >
< small > < i class = "bi bi-arrow-up-right" > < / i > $ { r o u n d N ( p e e r . t o t a l _ s e n t + t o t a l _ s , 4 ) } G B < / s m a l l >
< / p >
< / d i v > ` ; l e t p e e r _ k e y = ' < d i v c l a s s = " c o l - s m " > < s m a l l c l a s s = " t e x t - m u t e d " s t y l e = " d i s p l a y : f l e x " > < s t r o n g > P E E R < / s t r o n g > < s t r o n g s t y l e = " m a r g i n - l e f t : a u t o ! i m p o r t a n t ; o p a c i t y : 0 ; t r a n s i t i o n : 0 . 2 s e a s e - i n - o u t " c l a s s = " t e x t - p r i m a r y " > C L I C K T O C O P Y < / s t r o n g > < / s m a l l > < h 6 > < s a m p c l a s s = " m l - a u t o k e y " > ' + p e e r . i d + " < / s a m p > < / h 6 > < / d i v > " ; l e t p e e r _ a l l o w e d _ i p = ' < d i v c l a s s = " c o l - s m " > < s m a l l c l a s s = " t e x t - m u t e d " > < s t r o n g > A L L O W E D I P < / s t r o n g > < / s m a l l > < h 6 s t y l e = " t e x t - t r a n s f o r m : u p p e r c a s e ; " > ' + p e e r . a l l o w e d _ i p + " < / h 6 > < / d i v > " ; l e t p e e r _ l a t e s t _ h a n d s h a k e = ' < d i v c l a s s = " c o l - s m " > < s m a l l c l a s s = " t e x t - m u t e d " > < s t r o n g > L A T E S T H A N D S H A K E < / s t r o n g > < / s m a l l > < h 6 s t y l e = " t e x t - t r a n s f o r m : u p p e r c a s e ; " > ' + p e e r . l a t e s t _ h a n d s h a k e + " < / h 6 > < / d i v > " ; l e t p e e r _ e n d p o i n t = ' < d i v c l a s s = " c o l - s m " > < s m a l l c l a s s = " t e x t - m u t e d " > < s t r o n g > E N D P O I N T < / s t r o n g > < / s m a l l > < h 6 s t y l e = " t e x t - t r a n s f o r m : u p p e r c a s e ; " > ' + p e e r . e n d p o i n t + " < / h 6 > < / d i v > " ; l e t p e e r _ c o n t r o l = ' < d i v c l a s s = " c o l - s m " > < h r > < d i v c l a s s = " b u t t o n - g r o u p " s t y l e = " d i s p l a y : f l e x " > < b u t t o n t y p e = " b u t t o n " c l a s s = " b t n b t n - o u t l i n e - p r i m a r y b t n - s e t t i n g - p e e r b t n - c o n t r o l " i d = " ' + p e e r . i d + ' " d a t a - t o g g l e = " m o d a l " > < i c l a s s = " b i b i - g e a r - f i l l " d a t a - t o g g l e = " t o o l t i p " d a t a - p l a c e m e n t = " b o t t o m " t i t l e = " P e e r S e t t i n g s " > < / i > < / b u t t o n > < b u t t o n t y p e = " b u t t o n " c l a s s = " b t n b t n - o u t l i n e - d a n g e r b t n - d e l e t e - p e e r b t n - c o n t r o l " i d = " ' + p e e r . i d + ' " d a t a - t o g g l e = " m o d a l " > < i c l a s s = " b i b i - x - c i r c l e - f i l l " d a t a - t o g g l e = " t o o l t i p " d a t a - p l a c e m e n t = " b o t t o m " t i t l e = " D e l e t e P e e r " > < / i > < / b u t t o n > ' ; i f ( p e e r . p r i v a t e _ k e y ! = = " " ) { p e e r _ c o n t r o l + = ' < d i v c l a s s = " s h a r e _ p e e r _ b t n _ g r o u p " s t y l e = " m a r g i n - l e f t : a u t o ! i m p o r t a n t ; d i s p l a y : i n l i n e " > < b u t t o n t y p e = " b u t t o n " c l a s s = " b t n b t n - o u t l i n e - s u c c e s s b t n - q r c o d e - p e e r b t n - c o n t r o l " d a t a - i m g s r c = " / q r c o d e / ' + r e s p o n s e . n a m e + " ? i d = " + e n c o d e U R I C o m p o n e n t ( p e e r . i d ) + ' " > < s v g x m l n s = " h t t p : / / w w w . w 3 . o r g / 2 0 0 0 / s v g " v i e w B o x = " 0 0 2 4 2 4 " s t y l e = " w i d t h : 1 9 p x ; " f i l l = " # 2 8 a 7 4 5 " > < p a t h d = " M 3 1 1 h 8 V 3 H 3 v 8 z m 2 - 6 h 4 v 4 H 5 V 5 z M 3 2 1 h 8 v - 8 H 3 v 8 z m 2 - 6 h 4 v 4 H 5 v - 4 z M 1 3 3 v 8 h 8 V 3 h - 8 z m 6 6 h - 4 V 5 h 4 v 4 z M 1 3 1 3 h 2 v 2 h - 2 z M 1 5 1 5 h 2 v 2 h - 2 z M 1 3 1 7 h 2 v 2 h - 2 z M 1 7 1 7 h 2 v 2 h - 2 z M 1 9 1 9 h 2 v 2 h - 2 z M 1 5 1 9 h 2 v 2 h - 2 z M 1 7 1 3 h 2 v 2 h - 2 z M 1 9 1 5 h 2 v 2 h - 2 z " / > < / s v g > < / b u t t o n > < a h r e f = " / d o w n l o a d / ' + r e s p o n s e . n a m e + " ? i d = " + e n c o d e U R I C o m p o n e n t ( p e e r . i d ) + ' " c l a s s = " b t n b t n - o u t l i n e - i n f o b t n - d o w n l o a d - p e e r b t n - c o n t r o l " > < i c l a s s = " b i b i - d o w n l o a d " > < / i > < / a > < / d i v > ' } p e e r _ c o n t r o l + = " < / d i v > " ; l e t h t m l = ' < d i v c l a s s = " ' + d i s p l a y _ m o d e + ' " d a t a - i d = " ' + p e e r . i d + ' " > ' + ' < d i v c l a s s = " c a r d m b - 3 c a r d - ' + p e e r . s t a t u s + ' " > ' + ' < d i v c l a s s = " c a r d - b o d y " > ' + ' < d i v c l a s s = " r o w " > ' + p e e r _ n a m e + s p l i t e r + p e e r _ t r a n s f e r + p e e r _ k e y + p e e r _ a l l o w e d _ i p + p e e r _ l a t e s t _ h a n d s h a k e + s p l i t e r + p e e r _ e n d p o i n t + s p l i t e r + p e e r _ c o n t r o l + " < / d i v > " + " < / d i v > " + " < / d i v > " + " < / d i v > < / d i v > " ; r e s u l t + = h t m l } ) ; d o c u m e n t . q u e r y S e l e c t o r ( " . p e e r _ l i s t " ) . i n n e r H T M L = r e s u l t ; i f ( r e s p o n s e . d a s h b o a r d _ r e f r e s h _ i n t e r v a l ! = = c o n f i g u r a t i o n _ t i m e o u t ) { c o n f i g u r a t i o n _ t i m e o u t = r e s p o n s e . d a s h b o a r d _ r e f r e s h _ i n t e r v a l ; r e m o v e C o n f i g u r a t i o n I n t e r v a l ( ) ; s e t C o n f i g u r a t i o n I n t e r v a l ( ) } } } f u n c t i o n a d d P e e r s B y B u l k ( ) { l e t $ n e w _ a d d _ a m o u n t = $ ( " # n e w _ a d d _ a m o u n t " ) ; $ a d d _ p e e r . s e t A t t r i b u t e ( " d i s a b l e d " , " d i s a b l e d " ) ; $ a d d _ p e e r . i n n e r H T M L = ` A d d i n g $ { $ n e w _ a d d _ a m o u n t . v a l ( ) } p e e r s . . . ` ; l e t $ n e w _ a d d _ D N S = $ ( " # n e w _ a d d _ D N S " ) ; $ n e w _ a d d _ D N S . v a l ( w i n d o w . c o n f i g u r a t i o n s . c l e a n I p ( $ n e w _ a d d _ D N S . v a l ( ) ) ) ; l e t $ n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p = $ ( " # n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p " ) ; $ n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p . v a l ( w i n d o w . c o n f i g u r a t i o n s . c l e a n I p ( $ n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p . v a l ( ) ) ) ; l e t $ n e w _ a d d _ M T U = $ ( " # n e w _ a d d _ M T U " ) ; l e t $ n e w _ a d d _ k e e p _ a l i v e = $ ( " # n e w _ a d d _ k e e p _ a l i v e " ) ; l e t $ e n a b l e _ p r e s h a r e _ k e y = $ ( " # e n a b l e _ p r e s h a r e _ k e y " ) ; l e t d a t a _ l i s t = [ $ n e w _ a d d _ D N S , $ n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p , $ n e w _ a d d _ M T U , $ n e w _ a d d _ k e e p _ a l i v e ] ; i f ( $ n e w _ a d d _ a m o u n t . v a l ( ) > 0 & & ! $ n e w _ a d d _ a m o u n t . h a s C l a s s ( " i s - i n v a l i d " ) ) { i f ( $ n e w _ a d d _ D N S . v a l ( ) ! = = " " & & $ n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p . v a l ( ) ! = = " " ) { l e t c o n f = $ a d d _ p e e r . g e t A t t r i b u t e ( " c o n f _ i d " ) ; l e t k e y s = [ ] ; f o r ( l e t i = 0 ; i < $ n e w _ a d d _ a m o u n t . v a l ( ) ; i + + ) { k e y s . p u s h ( w i n d o w . w i r e g u a r d . g e n e r a t e K e y p a i r ( ) ) } $ . a j a x ( { m e t h o d : " P O S T " , u r l : " / a d d _ p e e r _ b u l k / " + c o n f , h e a d e r s : { " 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 " } , d a t a : J S O N . s t r i n g i f y ( { D N S : $ n e w _ a d d _ D N S . v a l ( ) , e n d p o i n t _ a l l o w e d _ i p : $ n e w _ a d d _ e n d p o i n t _ a l l o w e d _ i p . v a l ( ) , M T U : $ n e w _ a d d _ M T U . v a l ( ) , k e e p _ a l i v e : $ n e w _ a d d _ k e e p _ a l i v e . v a l ( ) , e n a b l e _ p r e s h a r e d _ k e y : $ e n a b l e _ p r e s h a r e _ k e y . p r o p ( " c h e c k e d " ) , k e y s : k e y s , a m o u n t : $ n e w _ a d d _ a m o u n t . v a l ( ) } ) , s u c c e