Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. MiroTalk
  3. Email as default username since update to new config set-up is NOT great :)

Email as default username since update to new config set-up is NOT great :)

Scheduled Pinned Locked Moved Solved MiroTalk
40 Posts 7 Posters 408 Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • MiroTalkM MiroTalk

    @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

    do you think it would make sense to still expose this file in the file manager?

    I recently created MiroTalk Admin, tailored specifically for MiroTalk projects (SFU/P2P/C2C/BRO/WEB). ๐Ÿ™‚

    01-mirotalk-admin-projects.png

    The Dashboard UI allows you to easily edit both the .env file and the config.js file as needed.

    06-mirotalk-sfu-config.png

    05-mirotalk-sfu-env.png

    GitHub Repo: https://github.com/miroslavpejic85/mirotalk-admin

    avatar1024A Offline
    avatar1024A Offline
    avatar1024
    wrote last edited by avatar1024
    #13

    @MiroTalk Looks great! Actually I had just seen this earlier today in your discord channel! I didn't think it'd come handy that quickly for my use case though ๐Ÿ˜‰

    I guess this will have to be packaged somehow so it integrates with the MiroTalk apps on Cloudron?

    MiroTalkM 1 Reply Last reply
    1
    • avatar1024A avatar1024

      @MiroTalk Looks great! Actually I had just seen this earlier today in your discord channel! I didn't think it'd come handy that quickly for my use case though ๐Ÿ˜‰

      I guess this will have to be packaged somehow so it integrates with the MiroTalk apps on Cloudron?

      MiroTalkM Offline
      MiroTalkM Offline
      MiroTalk
      wrote last edited by MiroTalk
      #14

      @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

      Looks great! Actually I had just seen this earlier today in your discord channel! I didn't think it'd come handy that quickly for my use case though

      Thank you!

      You can also use MiroTalk Admin directly from your local PC by adding your serverโ€™s SSH credentials to the .env file.
      Then, simply edit the backend/config.index.js file (see the APP_CONFIG section) to configure it for MiroTalk SFU, or other variants.

      I've been using it myself for several days to manage and update my demo instances โ€” and so far, it's working great!

      avatar1024A 1 Reply Last reply
      2
      • MiroTalkM MiroTalk

        @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

        Looks great! Actually I had just seen this earlier today in your discord channel! I didn't think it'd come handy that quickly for my use case though

        Thank you!

        You can also use MiroTalk Admin directly from your local PC by adding your serverโ€™s SSH credentials to the .env file.
        Then, simply edit the backend/config.index.js file (see the APP_CONFIG section) to configure it for MiroTalk SFU, or other variants.

        I've been using it myself for several days to manage and update my demo instances โ€” and so far, it's working great!

        avatar1024A Offline
        avatar1024A Offline
        avatar1024
        wrote last edited by avatar1024
        #15

        @MiroTalk said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

        I've been using it myself for several days to manage and update my demo instances

        Amazing! Just to make sure, do you mean your demo instances also hosted on Cloudron? I'm asking because I fear the apps are more isolated using Cloudron than if installed directly as docker containers. For e.g. we don't easily access the config.index.js file on Cloudron (app packages are read only and get overridden with each updates AFAIK).

        Maybe that's one for @staff to look into?

        MiroTalkM 1 Reply Last reply
        1
        • avatar1024A avatar1024

          @MiroTalk said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

          I've been using it myself for several days to manage and update my demo instances

          Amazing! Just to make sure, do you mean your demo instances also hosted on Cloudron? I'm asking because I fear the apps are more isolated using Cloudron than if installed directly as docker containers. For e.g. we don't easily access the config.index.js file on Cloudron (app packages are read only and get overridden with each updates AFAIK).

          Maybe that's one for @staff to look into?

          MiroTalkM Offline
          MiroTalkM Offline
          MiroTalk
          wrote last edited by MiroTalk
          #16

          @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

          Amazing! Just to make sure, do you mean your demo instances also hosted on Cloudron?

          No, our official live demo is hosted on a Hetzner VPS.

          I also have a self-hosted version of Cloudron. From what I can see, using the File Manager, you can edit both the .env and config.js files to tailor the setup to your needs.

          env-config.png

          avatar1024A 1 Reply Last reply
          1
          • MiroTalkM MiroTalk

            @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

            Amazing! Just to make sure, do you mean your demo instances also hosted on Cloudron?

            No, our official live demo is hosted on a Hetzner VPS.

            I also have a self-hosted version of Cloudron. From what I can see, using the File Manager, you can edit both the .env and config.js files to tailor the setup to your needs.

            env-config.png

            avatar1024A Offline
            avatar1024A Offline
            avatar1024
            wrote last edited by avatar1024
            #17

            @MiroTalk said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

            From what I can see, using the File Manager, you can edit both the .env and config.js files to tailor the setup to your needs.

            You can see the config-lagacy.js because your instance was upgraded from a previous version. The file is there just so you can see your old config and migrate them using the env file, but the config-lagacy.js file itself is not used by the app. On a fresh install of the app this file is not there. Just as a test/try I have manually created a config.js file in that directory and added the lines you mentioned:

            oidc: {
                // ...
                peer_name: {
                    force: true,
                    email: false, // --> set to false
                    name: true, // --> display the user's name from OIDC instead of their email
                },
                // ...
            }
            

            ...but this has no effect.

            MiroTalkM 1 Reply Last reply
            1
            • avatar1024A avatar1024

              @MiroTalk said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

              From what I can see, using the File Manager, you can edit both the .env and config.js files to tailor the setup to your needs.

              You can see the config-lagacy.js because your instance was upgraded from a previous version. The file is there just so you can see your old config and migrate them using the env file, but the config-lagacy.js file itself is not used by the app. On a fresh install of the app this file is not there. Just as a test/try I have manually created a config.js file in that directory and added the lines you mentioned:

              oidc: {
                  // ...
                  peer_name: {
                      force: true,
                      email: false, // --> set to false
                      name: true, // --> display the user's name from OIDC instead of their email
                  },
                  // ...
              }
              

              ...but this has no effect.

              MiroTalkM Offline
              MiroTalkM Offline
              MiroTalk
              wrote last edited by MiroTalk
              #18

              @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

              You can see the config-lagacy.js because your instance was upgraded from a previous version. The file is there just so you can see your old config and migrate them using the env file, but the config-lagacy.js file itself is not used by the app.

              OK, I think I understand the issue now. Cloudron retains the upstream config.js file as the default. To make changes, you're expected to use only the .env file. However, not all configuration options are currently supported there. For instance, setting the displayed username when OIDC is enabled can only be configured in config.js for now.

              To address the issue with the OIDC display name, I need to make it configurable via the .env file.

              avatar1024A 1 Reply Last reply
              3
              • MiroTalkM MiroTalk

                @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                You can see the config-lagacy.js because your instance was upgraded from a previous version. The file is there just so you can see your old config and migrate them using the env file, but the config-lagacy.js file itself is not used by the app.

                OK, I think I understand the issue now. Cloudron retains the upstream config.js file as the default. To make changes, you're expected to use only the .env file. However, not all configuration options are currently supported there. For instance, setting the displayed username when OIDC is enabled can only be configured in config.js for now.

                To address the issue with the OIDC display name, I need to make it configurable via the .env file.

                avatar1024A Offline
                avatar1024A Offline
                avatar1024
                wrote last edited by avatar1024
                #19

                @MiroTalk said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                OK, I think I understand the issue now. Cloudron retains the upstream config.js file as the default. To make changes, you're expected to use only the .env file. However, not all configuration options are currently supported there. For instance, setting the displayed username when OIDC is enabled can only be configured in config.js for now.

                Exactly!

                @MiroTalk said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                To address the issue with the OIDC display name, I need to make it configurable via the .env file.

                If you could that's great. Otherwise perhaps @staff can allow changes to config.js file again. I think they understood that in your new approach to configuration (since MiroTalk SFU 1.8.0), changes by users should only be made via the .env file, and that editing the config.js would never be needed.

                1 Reply Last reply
                2
                • MiroTalkM Offline
                  MiroTalkM Offline
                  MiroTalk
                  wrote last edited by MiroTalk
                  #20

                  Coming in MiroTalk SFU v1.8.57
                  Youโ€™ll be able to configure the OIDC username behavior directly from your .env file. Simply add or update the following entries:

                  OIDC_FORCE_USERNAME=false
                  OIDC_EMAIL_AS_USERNAME=false
                  OIDC_NAME_AS_USERNAME=true
                  

                  These settings give you full control over how usernames are derived from the OIDC provider, but allowing you to edit before join room.

                  Cheers,
                  Miroslav

                  avatar1024A 1 Reply Last reply
                  4
                  • MiroTalkM MiroTalk

                    Coming in MiroTalk SFU v1.8.57
                    Youโ€™ll be able to configure the OIDC username behavior directly from your .env file. Simply add or update the following entries:

                    OIDC_FORCE_USERNAME=false
                    OIDC_EMAIL_AS_USERNAME=false
                    OIDC_NAME_AS_USERNAME=true
                    

                    These settings give you full control over how usernames are derived from the OIDC provider, but allowing you to edit before join room.

                    Cheers,
                    Miroslav

                    avatar1024A Offline
                    avatar1024A Offline
                    avatar1024
                    wrote last edited by avatar1024
                    #21

                    @MiroTalk Amazing, thank you so much for your engagement here and for such a swift fix!

                    Cheers

                    Gauthier

                    MiroTalkM 1 Reply Last reply
                    2
                    • avatar1024A avatar1024

                      @MiroTalk Amazing, thank you so much for your engagement here and for such a swift fix!

                      Cheers

                      Gauthier

                      MiroTalkM Offline
                      MiroTalkM Offline
                      MiroTalk
                      wrote last edited by
                      #22

                      @avatar1024 You're very welcome!
                      I just fixed the typoโ€”see my previous message.

                      Time to get some sleep now, it's pretty late here ๐Ÿ˜ด
                      Thanks again for using MiroTalk, and have a great night! ๐ŸŒ™

                      1 Reply Last reply
                      3
                      • avatar1024A Offline
                        avatar1024A Offline
                        avatar1024
                        wrote last edited by avatar1024
                        #23

                        @staff Thanks for pushing the update that quickly. In addition (maybe next time you push an update) I would suggest making the suggested changes in the .env file so that by default (i.e. on the fresh install of the package) the OIDC behaviour is to use name instead of email as display name and allow display name editing.

                        1 Reply Last reply
                        1
                        • avatar1024A Offline
                          avatar1024A Offline
                          avatar1024
                          wrote last edited by avatar1024
                          #24

                          Unfortunately something isn't working...

                          I have made the changes so my env file looks like that (first 5 lines are there by default):

                          All config options at https://github.com/miroslavpejic85/mirotalksfu/blob/main/.env.template
                          
                          PRESENTERS=admin@cloudron.local
                          EMAIL_SEND_TO=admin@cloudron.local
                          STATS_ENABLED=false
                          
                          OIDC_FORCE_USERNAME=false
                          OIDC_EMAIL_AS_USERNAME=false
                          OIDC_NAME_AS_USERNAME=true
                          

                          I have restarted the app, cleared browser's cache, but I still have the same behaviour.

                          Either something in the changes @mirotalk-57bab571 made didn't work, or another thing I noticed is that in Cloudron package the file is called env and not .env. When I rename env to .env and restart the app, a new env file is automatically created, and it still doesn't work. @staff?

                          1 Reply Last reply
                          2
                          • jamesJ Offline
                            jamesJ Offline
                            james
                            Staff
                            wrote last edited by
                            #25

                            Hello @avatar1024
                            I am taking a look right now.
                            The file name /app/data/env is correct. If that file is missing, it will be created again.
                            Since you moved the file from env to .env the file was missing and got created again.

                            I am now trying to reproduce your issue with the latest version.

                            1 Reply Last reply
                            1
                            • jamesJ Offline
                              jamesJ Offline
                              james
                              Staff
                              wrote last edited by
                              #26

                              I can confirm this seems to have no impact.
                              Added the following lines to /app/data/env

                              OIDC_FORCE_USERNAME=false
                              OIDC_EMAIL_AS_USERNAME=false
                              OIDC_NAME_AS_USERNAME=true
                              

                              Cloudron writes this to /run/mirotalksfu/env and /run/mirotalksfu/env is symlinked to /app/code/.env.
                              So everything in that /app/data/env => /run/mirotalksfu/env => /app/code/.env is loaded, otherwise all the other settings would be missing.

                              But now when checking the /app/code/app/src/config.js I see:

                              peer_name: {
                                              force: process.env.OIDC_USERNAME_FORCE !== 'false', // Require identity provider authentication
                                              email: process.env.OIDC_USERNAME_AS_EMAIL !== 'false', // Request email claim
                                              name: process.env.OIDC_USERNAME_AS_NAME === 'true', // Don't require full name
                                          }
                              

                              So from that I can conclude the env vars should be:

                              OIDC_USERNAME_FORCE=false
                              OIDC_USERNAME_AS_EMAIL=false
                              OIDC_USERNAME_AS_NAME=true
                              

                              This now had the desired effect.

                              I assume what @mirotalk-57bab571 wrote https://forum.cloudron.io/post/107999 was simply a typo or first draft of that variable names.


                              Solution

                              Use the following variables in /app/data/env

                              OIDC_USERNAME_FORCE=false
                              OIDC_USERNAME_AS_EMAIL=false
                              OIDC_USERNAME_AS_NAME=true
                              
                              avatar1024A MiroTalkM 3 Replies Last reply
                              4
                              • jamesJ james

                                I can confirm this seems to have no impact.
                                Added the following lines to /app/data/env

                                OIDC_FORCE_USERNAME=false
                                OIDC_EMAIL_AS_USERNAME=false
                                OIDC_NAME_AS_USERNAME=true
                                

                                Cloudron writes this to /run/mirotalksfu/env and /run/mirotalksfu/env is symlinked to /app/code/.env.
                                So everything in that /app/data/env => /run/mirotalksfu/env => /app/code/.env is loaded, otherwise all the other settings would be missing.

                                But now when checking the /app/code/app/src/config.js I see:

                                peer_name: {
                                                force: process.env.OIDC_USERNAME_FORCE !== 'false', // Require identity provider authentication
                                                email: process.env.OIDC_USERNAME_AS_EMAIL !== 'false', // Request email claim
                                                name: process.env.OIDC_USERNAME_AS_NAME === 'true', // Don't require full name
                                            }
                                

                                So from that I can conclude the env vars should be:

                                OIDC_USERNAME_FORCE=false
                                OIDC_USERNAME_AS_EMAIL=false
                                OIDC_USERNAME_AS_NAME=true
                                

                                This now had the desired effect.

                                I assume what @mirotalk-57bab571 wrote https://forum.cloudron.io/post/107999 was simply a typo or first draft of that variable names.


                                Solution

                                Use the following variables in /app/data/env

                                OIDC_USERNAME_FORCE=false
                                OIDC_USERNAME_AS_EMAIL=false
                                OIDC_USERNAME_AS_NAME=true
                                
                                avatar1024A Offline
                                avatar1024A Offline
                                avatar1024
                                wrote last edited by
                                #27

                                @james Brilliant, thank you looking into this, for explaining the logic and for finding the fix!

                                Gauthier

                                1 Reply Last reply
                                1
                                • avatar1024A Offline
                                  avatar1024A Offline
                                  avatar1024
                                  wrote last edited by avatar1024
                                  #28

                                  @james Do you think in the future it would make sense:

                                  1. for the behaviour described here re display name to become the default on the Cloudron package?
                                  2. for users to also have a way to modify the config.js file as it seems like not all options can be changed via the env file?
                                  1 Reply Last reply
                                  1
                                  • jamesJ james

                                    I can confirm this seems to have no impact.
                                    Added the following lines to /app/data/env

                                    OIDC_FORCE_USERNAME=false
                                    OIDC_EMAIL_AS_USERNAME=false
                                    OIDC_NAME_AS_USERNAME=true
                                    

                                    Cloudron writes this to /run/mirotalksfu/env and /run/mirotalksfu/env is symlinked to /app/code/.env.
                                    So everything in that /app/data/env => /run/mirotalksfu/env => /app/code/.env is loaded, otherwise all the other settings would be missing.

                                    But now when checking the /app/code/app/src/config.js I see:

                                    peer_name: {
                                                    force: process.env.OIDC_USERNAME_FORCE !== 'false', // Require identity provider authentication
                                                    email: process.env.OIDC_USERNAME_AS_EMAIL !== 'false', // Request email claim
                                                    name: process.env.OIDC_USERNAME_AS_NAME === 'true', // Don't require full name
                                                }
                                    

                                    So from that I can conclude the env vars should be:

                                    OIDC_USERNAME_FORCE=false
                                    OIDC_USERNAME_AS_EMAIL=false
                                    OIDC_USERNAME_AS_NAME=true
                                    

                                    This now had the desired effect.

                                    I assume what @mirotalk-57bab571 wrote https://forum.cloudron.io/post/107999 was simply a typo or first draft of that variable names.


                                    Solution

                                    Use the following variables in /app/data/env

                                    OIDC_USERNAME_FORCE=false
                                    OIDC_USERNAME_AS_EMAIL=false
                                    OIDC_USERNAME_AS_NAME=true
                                    
                                    avatar1024A Offline
                                    avatar1024A Offline
                                    avatar1024
                                    wrote last edited by
                                    #29

                                    @james said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                                    But now when checking the /app/code/app/src/config.js

                                    Also sorry, I feel I should know this by now, but where are the the app code directories? I can't seem to find them when I ssh on the server. In that case how can I would like to view the content of this file.

                                    jamesJ 1 Reply Last reply
                                    0
                                    • jamesJ james

                                      I can confirm this seems to have no impact.
                                      Added the following lines to /app/data/env

                                      OIDC_FORCE_USERNAME=false
                                      OIDC_EMAIL_AS_USERNAME=false
                                      OIDC_NAME_AS_USERNAME=true
                                      

                                      Cloudron writes this to /run/mirotalksfu/env and /run/mirotalksfu/env is symlinked to /app/code/.env.
                                      So everything in that /app/data/env => /run/mirotalksfu/env => /app/code/.env is loaded, otherwise all the other settings would be missing.

                                      But now when checking the /app/code/app/src/config.js I see:

                                      peer_name: {
                                                      force: process.env.OIDC_USERNAME_FORCE !== 'false', // Require identity provider authentication
                                                      email: process.env.OIDC_USERNAME_AS_EMAIL !== 'false', // Request email claim
                                                      name: process.env.OIDC_USERNAME_AS_NAME === 'true', // Don't require full name
                                                  }
                                      

                                      So from that I can conclude the env vars should be:

                                      OIDC_USERNAME_FORCE=false
                                      OIDC_USERNAME_AS_EMAIL=false
                                      OIDC_USERNAME_AS_NAME=true
                                      

                                      This now had the desired effect.

                                      I assume what @mirotalk-57bab571 wrote https://forum.cloudron.io/post/107999 was simply a typo or first draft of that variable names.


                                      Solution

                                      Use the following variables in /app/data/env

                                      OIDC_USERNAME_FORCE=false
                                      OIDC_USERNAME_AS_EMAIL=false
                                      OIDC_USERNAME_AS_NAME=true
                                      
                                      MiroTalkM Offline
                                      MiroTalkM Offline
                                      MiroTalk
                                      wrote last edited by MiroTalk
                                      #30

                                      @james said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                                      I assume what @mirotalk-57bab571 wrote https://forum.cloudron.io/post/107999 was simply a typo or first draft of that variable names.

                                      Yes, you're absolutely right โ€” the way you explained it is correct. I actually updated it in my last commit to make it more readable.

                                      OIDC_USERNAME_FORCE=false
                                      OIDC_USERNAME_AS_EMAIL=false
                                      OIDC_USERNAME_AS_NAME=true
                                      

                                      And hereโ€™s a quick explanation of each default setup:

                                      OIDC_USERNAME_FORCE=true        # Forces the username to match the OIDC email or name. 
                                                                      # If true, the user won't be able to change their name when joining a room.
                                      
                                      OIDC_USERNAME_AS_EMAIL=true     # Uses the OIDC email as the username.
                                      OIDC_USERNAME_AS_NAME=false     # Uses the OIDC name as the username.
                                      

                                      These options give you full control over how usernames are assigned during OIDC authentication for the meeting.

                                      Note

                                      By default, the email is used as the username when OIDC is enabled. This helps maintain user identity and trust, and also ensures that the correct Gravatar is displayed in the room (especially if the camera is off).

                                      In this default setup, the username cannot be edited by the user when joining a room.

                                      However, since MiroTalk SFU is designed to be flexible, this behavior is fully configurable. You can choose whether to use the email, the name, or allow users to set their own name โ€” depending on your needs...

                                      1 Reply Last reply
                                      4
                                      • avatar1024A avatar1024

                                        @james said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                                        But now when checking the /app/code/app/src/config.js

                                        Also sorry, I feel I should know this by now, but where are the the app code directories? I can't seem to find them when I ssh on the server. In that case how can I would like to view the content of this file.

                                        jamesJ Offline
                                        jamesJ Offline
                                        james
                                        Staff
                                        wrote last edited by james
                                        #31

                                        @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                                        Also sorry, I feel I should know this by now, but where are the the app code directories? I can't seem to find them when I ssh on the server. In that case how can I would like to view the content of this file.

                                        That is in the app itself.
                                        You can view that via the web terminal of the app itself.

                                        avatar1024A 1 Reply Last reply
                                        2
                                        • jamesJ james

                                          @avatar1024 said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                                          Also sorry, I feel I should know this by now, but where are the the app code directories? I can't seem to find them when I ssh on the server. In that case how can I would like to view the content of this file.

                                          That is in the app itself.
                                          You can view that via the web terminal of the app itself.

                                          avatar1024A Offline
                                          avatar1024A Offline
                                          avatar1024
                                          wrote last edited by
                                          #32

                                          @james said in Email as default username since update to new config set-up is NOT great ๐Ÿ™‚:

                                          That is in the app itself.
                                          You can view that via the web terminal of the app itself.

                                          Oh yes of course, thanks!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Bookmarks
                                          • Search