aboutsummaryrefslogblamecommitdiffhomepage
path: root/shared/models/server/custom-config.model.ts
blob: 6ffe3a676a4a732d57544411fe14be25832fc07b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                                           
                                                                      
 
                                 
                 




                  
                  


                  
                               

                
                            

                       

                         
                          



                                 
                               



                        
                   
                                     

                              
 



                         

   



                   




                          













                                             

   



                  



                  



                  




                    
                             
                                      
                      





                 



                    
         




                        
                      
                           

   



                      

                    
 
                                      
                            
 
                   
                       


                   
                                                      
 

                                              



                      


                      
   
 


                    
                        
 



                      
                       

                            
 


                      
                     
                                    
                                                


     
                


                    

             

                         

                        
       

                        

       



                                  
   
 








                         







                        

               
                      
                             


     











                        






                                













                                 
 
 
import { NSFWPolicyType } from '../videos/nsfw-policy.type'
import { BroadcastMessageLevel } from './broadcast-message-level.type'

export type ConfigResolutions = {
  '144p': boolean
  '240p': boolean
  '360p': boolean
  '480p': boolean
  '720p': boolean
  '1080p': boolean
  '1440p': boolean
  '2160p': boolean
}

export interface CustomConfig {
  instance: {
    name: string
    shortDescription: string
    description: string
    terms: string
    codeOfConduct: string

    creationReason: string
    moderationInformation: string
    administrator: string
    maintenanceLifetime: string
    businessModel: string
    hardwareInformation: string

    languages: string[]
    categories: number[]

    isNSFW: boolean
    defaultNSFWPolicy: NSFWPolicyType

    defaultClientRoute: string

    customizations: {
      javascript?: string
      css?: string
    }
  }

  theme: {
    default: string
  }

  services: {
    twitter: {
      username: string
      whitelisted: boolean
    }
  }

  client: {
    videos: {
      miniature: {
        preferAuthorDisplayName: boolean
      }
    }

    menu: {
      login: {
        redirectOnSingleExternalAuth: boolean
      }
    }
  }

  cache: {
    previews: {
      size: number
    }

    captions: {
      size: number
    }

    torrents: {
      size: number
    }
  }

  signup: {
    enabled: boolean
    limit: number
    requiresApproval: boolean
    requiresEmailVerification: boolean
    minimumAge: number
  }

  admin: {
    email: string
  }

  contactForm: {
    enabled: boolean
  }

  user: {
    history: {
      videos: {
        enabled: boolean
      }
    }
    videoQuota: number
    videoQuotaDaily: number
  }

  videoChannels: {
    maxPerUser: number
  }

  transcoding: {
    enabled: boolean

    allowAdditionalExtensions: boolean
    allowAudioFiles: boolean

    threads: number
    concurrency: number

    profile: string

    resolutions: ConfigResolutions & { '0p': boolean }

    alwaysTranscodeOriginalResolution: boolean

    webtorrent: {
      enabled: boolean
    }

    hls: {
      enabled: boolean
    }
  }

  live: {
    enabled: boolean

    allowReplay: boolean

    latencySetting: {
      enabled: boolean
    }

    maxDuration: number
    maxInstanceLives: number
    maxUserLives: number

    transcoding: {
      enabled: boolean
      threads: number
      profile: string
      resolutions: ConfigResolutions
      alwaysTranscodeOriginalResolution: boolean
    }
  }

  videoStudio: {
    enabled: boolean
  }

  import: {
    videos: {
      concurrency: number

      http: {
        enabled: boolean
      }
      torrent: {
        enabled: boolean
      }
    }
    videoChannelSynchronization: {
      enabled: boolean
      maxPerUser: number
    }
  }

  trending: {
    videos: {
      algorithms: {
        enabled: string[]
        default: string
      }
    }
  }

  autoBlacklist: {
    videos: {
      ofUsers: {
        enabled: boolean
      }
    }
  }

  followers: {
    instance: {
      enabled: boolean
      manualApproval: boolean
    }
  }

  followings: {
    instance: {
      autoFollowBack: {
        enabled: boolean
      }

      autoFollowIndex: {
        enabled: boolean
        indexUrl: string
      }
    }
  }

  broadcastMessage: {
    enabled: boolean
    message: string
    level: BroadcastMessageLevel
    dismissable: boolean
  }

  search: {
    remoteUri: {
      users: boolean
      anonymous: boolean
    }

    searchIndex: {
      enabled: boolean
      url: string
      disableLocalSearch: boolean
      isDefaultSearch: boolean
    }
  }

}