@@ -72,6 +72,25 @@ func (s *Store) ListCAByNetwork(networks []string) ([]*CA, error) {
7272 return cas , nil
7373}
7474
75+ func (s * Store ) ListCAByNetworkNotExpired (networks []string ) ([]* CA , error ) {
76+ txn := s .db .NewTransaction (false )
77+ defer txn .Discard ()
78+
79+ cas , err := s .listCAByNetwork (txn , networks )
80+ if err != nil {
81+ return nil , err
82+ }
83+
84+ validCas := make ([]* CA , 0 )
85+ for _ , ca := range cas {
86+ if ca .Status != CA_Expired {
87+ validCas = append (validCas , ca )
88+ }
89+ }
90+
91+ return validCas , nil
92+ }
93+
7594func (s * Store ) ListCRLByNetwork (networks []string ) ([]* protocol.NetworkCRL , error ) {
7695 txn := s .db .NewTransaction (false )
7796 defer txn .Discard ()
@@ -296,6 +315,37 @@ func (s *Store) RenewCAs() error {
296315 return nil
297316}
298317
318+ func (s * Store ) UpdateExpiredCAs () error {
319+ txn := s .db .NewTransaction (true )
320+ defer txn .Discard ()
321+
322+ networks , err := s .listNetworks (txn )
323+ if err != nil {
324+ return fmt .Errorf ("failed to get networks %s" , err )
325+ }
326+
327+ for _ , network := range networks {
328+ cas , err := s .listCAByNetwork (txn , []string {network .Name })
329+ if err != nil {
330+ return fmt .Errorf ("failed to get CA` for network: %s" , network )
331+ }
332+
333+ for _ , ca := range cas {
334+ _ , err := s .expireCA (txn , ca )
335+ if err != nil {
336+ return fmt .Errorf ("failed to expire CA: %s" , err )
337+ }
338+ }
339+ }
340+
341+ err = txn .Commit ()
342+ if err != nil {
343+ return fmt .Errorf ("failed to commit UpdateExpiredCAs: %v" , err )
344+ }
345+
346+ return nil
347+ }
348+
299349func (s * Store ) expireCA (txn * badger.Txn , ca * CA ) (bool , error ) {
300350 publicKey , _ , err := cert .UnmarshalNebulaCertificateFromPEM (ca .PublicKey )
301351 if err != nil {
0 commit comments