Programmatically updating OSGi configurations in AEM and Sling

Adobe Experience Manager | AEM/CQ | Apache Sling

Programmatically updating OSGi configurations in AEM and Sling

OSGi components can be configured via the concept of Managed Services and Managed Service Factories. Each component has a Service PID. Once a configuration has been updated, the changes are persisted to the file system. In Adobe Experience Manager you can find the files under the crx-quickstart/launchpad/config folder. If you're using the Sling jar, you can find the files under the sling/config folder.

Hopefully you're following best practices and creating sling:OsgiConfig files so that configurations can be stored in your version control system and configured for specific server instances assigned by Sling run modes. When you want to manually update an OSGi configuration you do so through the Apache Felix console's Configuration screen located at http://localhost:4502/system/console/configMgr.

You can programmatically read and update OSGi configurations through the Apache Felix provided ConfigurationAdmin service. In fact, this is the same service used by the Apache Felix console. When you look at the Configuration console it tells you the status of the ConfigurationAdmin service. If you disable the Apache Felix Configuration Admin Service (org.apache.felix.configadmin) you will notice that you are no longer able to update configurations from the Felix console.


Using the service is simple and straightforward. However, the one thing to watch out for is that updating the configuration though ConfigurationAdmin is an asynchronous call and the component associated with the configuration will become unavailable for a brief moment on update. That means trying to make rapid consecutive updates or trying to read from the configuration directly after an update is unreliable unless properly handled.

The following example demonstrates how to get a Configuration from a Managed Service as well as a Managed Service Factory, how to get properties from the configuration and how to update the configuration.


The files below are a service I created for the Publick Sling + Sightly Blog Engine to manage configurations easily and consistently throughout the application as well as a sample consumer of the service.



Further reading:

Apache Felix Configuration Admin Service

135 comments

Dhrati | February 03, 2017 at 08:40 AM | Reply

The blog is very useful,.. Thank you,. :)

Namit Kochar | April 16, 2019 at 08:28 AM | Reply

Hi Nate, Is it possible to programmatically add a field in osgi configuration. For example, dynamically adding a drop down in osgi config.

EllAlople | July 29, 2019 at 11:35 PM | Reply

Prix Amoxicillin 100mg Donde Comprar Cialis Farmacia <a href=http://uscagsa.com>cialis</a> Viagra Generico Online Spedizione Rapida Lowest Price Cialis 20mg Brand In Usa Acheter Kamagra Voir Le Profil

EllAlople | August 03, 2019 at 05:44 AM | Reply

Tabletten Viagra Foto Cialis Sur Internet Avis Kamagra Consegna Veloce Francia <a href=http://nefoc.com>propecia e esterilidad</a> Kamagra Com Canadian Medicine Buy Atarax No Script

pjwtmhok | March 11, 2020 at 04:42 AM | Reply

buy viagra cheap viagra <a href="https://pharm-usa-official.com/#">viagra 100mg </a> viagra generic viagra 100mg bh88Ð°Ð¿Ñ Ð¿hfa viagra pills viagra 100mg <a href=https://pharm-usa-official.com/#>viagra generic </a> viagra 100mg buy viagra

albuterol inhaler | June 02, 2020 at 01:37 AM | Reply

Good day! I know this is kind of off topic but I was wondering which blog platform are you using for this site? I'm getting sick and tired of Wordpress because I've had issues with hackers and I'm looking at alternatives for another platform. I would be fantastic if you could point me in the direction of a good platform. https://amstyles.com/

how long does viagra last | June 03, 2020 at 05:02 PM | Reply

I quite like reading an article that can make people think. Also, thanks for allowing for me to comment! https://viatribuy.com/

keflex without a doctor's prescription | June 03, 2020 at 10:06 PM | Reply

keflex without a doctor's prescription https://keflex.webbfenix.com/

over the counter viagra | June 03, 2020 at 11:38 PM | Reply

over the counter viagra http://viacheapusa.com/

where to buy viagra | June 04, 2020 at 10:01 PM | Reply

where to buy viagra https://mymvrc.org/

clomid otc | June 12, 2020 at 12:22 AM | Reply

clomid otc https://clomidweb.com/

where to get chloroquine | June 15, 2020 at 08:24 AM | Reply

where to get chloroquine https://chloroquine1st.com/

buy plaquenil from canada | June 16, 2020 at 01:30 PM | Reply

buy plaquenil from canada https://chloroquine1st.com/

clomid online cheap | June 16, 2020 at 06:11 PM | Reply

clomid online cheap https://clomidweb.com/

viagra substitute | June 17, 2020 at 07:06 AM | Reply

viagra substitute https://viagenupi.com/

https://careprost.confrancisyalgomas.com | June 17, 2020 at 02:44 PM | Reply

https://careprost.confrancisyalgomas.com https://careprost.confrancisyalgomas.com/

hydroxychloroquine drug | June 17, 2020 at 03:56 PM | Reply

hydroxychloroquine drug https://azhydroxychloroquine.com/

how to buy cialis without a prescription | June 18, 2020 at 01:12 PM | Reply

Hi! I fuck this is genial of off-subject however I needful to involve. Does edifice a well-naturalized website so much as yours postulate a monolithic amount of money do work? I am altogether fresh to piece of writing a web log still I do indite in my diary every Day. I'd corresponding to pop out a web log so I toilet easily partake in my grammatical category undergo and thoughts online. Delight net ball me have sex if you experience whatsoever ideas or tips for young aspirant bloggers. Value it! http://www.cialisles.com/

tylenol capsules 500mg | June 19, 2020 at 01:02 PM | Reply

It's appropriate time to make some plans for the future and it is time to be happy. I have read this post and if I could I wish to suggest you some interesting things or tips. Maybe you can write next articles referring to this article. I want to read more things about it! https://tylenol1st.com/

cialis generic | June 20, 2020 at 12:39 AM | Reply

cialis generic http://genericalis.com/

viagra online | June 20, 2020 at 06:20 AM | Reply

viagra online http://www.doctor7online.com/

viagra us prices | June 20, 2020 at 09:02 AM | Reply

viagra us prices http://viacheapusa.com/

generic viagra without the prescription | June 20, 2020 at 06:05 PM | Reply

These are really fantastic ideas in concerning blogging. You have touched some fastidious factors here. Any way keep up wrinting. http://www.vagragenericaar.org/

buy cheap viagra online | June 20, 2020 at 11:10 PM | Reply

I would like to thank you for the efforts you've put in writing this website. I'm hoping to see the same high-grade content by you later on as well. In truth, your creative writing abilities has inspired me to get my own, personal blog now ; ) http://viacheapusa.com/

Aenconsishiny | June 21, 2020 at 03:59 AM | Reply

<a href="https://cialisle.com/">buy cialis</a>

what is the generic name for cialis | June 21, 2020 at 12:21 PM | Reply

smashing order up, very illuminating. I wonderment wherefore the other specialists of this sector don't take in this. You moldiness bear on your piece of writing. I'm sure, you've a keen readers' unethical already! http://www.cialisles.com/

chloroquine where to purchase | June 21, 2020 at 09:06 PM | Reply

chloroquine where to purchase https://chloroquine1st.com/

cenforce pills | June 21, 2020 at 10:00 PM | Reply

cenforce pills http://cavalrymenforromney.com/

www.cialis.com | June 22, 2020 at 05:22 PM | Reply

www.cialis.com https://www.wisig.org/

cialis without doctor prescription | June 22, 2020 at 06:17 PM | Reply

cialis without doctor prescription https://www.wisig.org/

can you buy viagra online | June 22, 2020 at 10:10 PM | Reply

can you buy viagra online https://mymvrc.org/

cialis online no prescription | June 23, 2020 at 02:02 AM | Reply

How-do-you-do! I'm at workplace surfing around your web log from my raw iphone 4! Scarcely treasured to tell I love version through and through your web log and count ahead to all your posts! Dungeon up the fantabulous process! http://www.cialisles.com/

viagra without prescription | June 23, 2020 at 04:29 AM | Reply

viagra without prescription https://mymvrc.org/

viagra coupons for pharmacy | June 23, 2020 at 08:35 AM | Reply

viagra coupons for pharmacy https://mymvrc.org/

best price viagra and cialis | June 23, 2020 at 03:14 PM | Reply

Very nice post. I just stumbled upon your weblog and wanted to say that I've truly enjoyed browsing your blog posts. In any case I'll be subscribing to your rss feed and I hope you write again very soon! https://mymvrc.org/

50 mg naltrexone for fibromyalgia | June 23, 2020 at 10:18 PM | Reply

50 mg naltrexone for fibromyalgia https://naltrexoneonline.confrancisyalgomas.com/

viagra without a doctor prescription price | June 23, 2020 at 11:54 PM | Reply

Howdy! I simply wish to offer you a huge thumbs up for your great information you have right here on this post. I will be coming back to your website for more soon. https://mymvrc.org/

how long does cialis last | June 24, 2020 at 01:38 AM | Reply

It's a pity you don't have a donate button! I'd without a doubt donate to this outstanding blog! I guess for now i'll settle for bookmarking and adding your RSS feed to my Google account. I look forward to fresh updates and will share this site with my Facebook group. Talk soon! https://www.wisig.org/

Jamescug | June 24, 2020 at 05:45 AM | Reply

cialis money order <a href=" http://bestpricemedz.com/# ">cialis without doctor prescription</a> bestpricemedz.com generic viagra

generic cialis 20mg | June 24, 2020 at 06:09 AM | Reply

If some one needs to be updated with most recent technologies therefore he must be visit this website and be up to date all the time. https://www.wisig.org/

viagra over counter walmart | June 24, 2020 at 12:53 PM | Reply

whoah this weblog is fantastic i love studying your posts. Stay up the great work! You recognize, a lot of people are searching round for this info, you can aid them greatly. https://mymvrc.org/

cialis without a doctor prescription | June 25, 2020 at 02:17 AM | Reply

Definitely imagine that which you said. Your favourite reason seemed to be at the internet the simplest thing to be mindful of. I say to you, I certainly get irked at the same time as other folks think about concerns that they plainly don't realize about. You controlled to hit the nail upon the top and also outlined out the entire thing with no need side-effects , other folks can take a signal. Will probably be back to get more. Thank you https://www.wisig.org/

where to buy clomid | June 25, 2020 at 03:37 AM | Reply

where to buy clomid https://clomidweb.com/

best price for viagra 50mg | June 25, 2020 at 11:28 PM | Reply

naturally like your website but you have to check the spelling on several of your posts. Several of them are rife with spelling problems and I in finding it very bothersome to tell the truth then again I will definitely come back again. http://viacheapusa.com/

what would happen if a girl took cialis | June 26, 2020 at 12:17 AM | Reply

If you desire to produce your know-how equitable observe visiting this internet site and be updated with the to the highest degree Recent gab posted Here. http://www.cialisles.com/

best place to buy generic cialis | June 27, 2020 at 03:25 AM | Reply

best place to buy generic cialis http://www.cialisles.com/

lowest price viagra and cialis | June 27, 2020 at 06:34 AM | Reply

lowest price viagra and cialis http://viacheapusa.com/

viagra on sale | June 27, 2020 at 08:56 AM | Reply

viagra on sale http://viacheapusa.com/

generic for viagra | June 27, 2020 at 09:59 AM | Reply

generic for viagra http://viacheapusa.com/

when will cialis be available in generic form | June 27, 2020 at 03:35 PM | Reply

when will cialis be available in generic form http://www.cialisles.com/

canadian pharmacy cialis generic | June 27, 2020 at 11:06 PM | Reply

canadian pharmacy cialis generic http://www.cialisles.com/

viagra for sale canada | June 28, 2020 at 03:05 PM | Reply

viagra for sale canada https://viatribuy.com/

plaquenil for sale online | June 28, 2020 at 04:04 PM | Reply

plaquenil for sale online https://chloroquine1st.com/

AnthonyTix | June 30, 2020 at 05:47 AM | Reply

best liquid cialis <a href=" http://www.bsss.info/home.php?mod=space&uid=920131 ">generic cialis</a> and <a href=" http://www.quanminwuliu.cc/home.php?mod=space&uid=524107 ">cialis price</a> and <a href=" http://direct-forum.com/memberlist.php?mode=viewprofile&u=24221 ">cialis coupon</a> and <a href=" http://caclp.cn/home.php?mod=space&uid=1007667 ">cialis price</a> and <a href=" http://www.xnfgxh.com/bbs/home.php?mod=space&uid=1074559 ">cialis price</a> and <a href=" http://cqdiping.cn/home.php?mod=space&uid=36936 ">cialis</a> cialis 30 day trial voucher <a href=" http://forum.sirumem.com/member.php/656773-cucjfagh ">generic cialis</a> and <a href=" http://www.kaiheiba.cn/home.php?mod=space&uid=27276 ">buy cialis online</a> and <a href=" http://bbs.zggsdjd.com/home.php?mod=space&uid=868674 ">cialis 20mg</a> and <a href=" http://www.xmf168.com/home.php?mod=space&uid=440239 ">cialis</a> and <a href=" http://www.myfule.com/home.php?mod=space&uid=383242 ">cialis coupon</a> and <a href=" https://santori.pl/member.php?action=profile&uid=2763 ">generic cialis</a> http://gromada.ru/forum/index.php?PAGE_NAME=profile_view&UID=92973 cialis 20mg

careprost bimatoprost ophthalmic solution | June 30, 2020 at 10:38 AM | Reply

careprost bimatoprost ophthalmic solution https://www.jueriy.com/

buy cenforce 200 online | July 01, 2020 at 08:32 AM | Reply

buy cenforce 200 online http://cavalrymenforromney.com/

cenforce 100 | July 01, 2020 at 09:14 AM | Reply

cenforce 100 http://cavalrymenforromney.com/

generic viagra from mumbai india | July 01, 2020 at 09:50 AM | Reply

generic viagra from mumbai india https://viatribuy.com/

how to take sildenafil 100mg | July 01, 2020 at 03:12 PM | Reply

how to take sildenafil 100mg https://viatribuy.com/

goodrx viagra coupon | July 01, 2020 at 04:58 PM | Reply

goodrx viagra coupon https://viatribuy.com/

Williamcet | July 01, 2020 at 11:22 PM | Reply

<a href=" http://tadalafilprof.com/# ">cheap cialis</a> http://tadalafilprof.com - cost of cialis [url=http://tadalafilprof.com]cheap cialis[/url]

generic clomid at walmart | July 02, 2020 at 12:06 AM | Reply

generic clomid at walmart https://clomidweb.com/

clomiphene cost | July 02, 2020 at 07:37 PM | Reply

clomiphene cost https://salemeds24.wixsite.com/clomid

JesusPep | July 03, 2020 at 09:32 AM | Reply

cialis dosage 40 mg dangerous <a href=" http://tadalafilprof.com/# ">herbal replacement for viagra/cialis/levitra...</a> safe alternatives to viagra and cialis: http://tadalafilprof.com

walmart antibiotic prices | July 03, 2020 at 12:21 PM | Reply

walmart antibiotic prices https://amoxycillin1st.com/

purchasing antibiotics | July 03, 2020 at 06:05 PM | Reply

purchasing antibiotics https://amoxycillin1st.com/

online doctor prescription for cialis | July 04, 2020 at 10:49 AM | Reply

online doctor prescription for cialis https://www.wisig.org/

keflex cost walmart | July 04, 2020 at 12:36 PM | Reply

keflex cost walmart https://keflex.webbfenix.com/

how much do antibiotics cost | July 04, 2020 at 12:42 PM | Reply

how much do antibiotics cost https://amoxycillin1st.com/

buy cialis samples pharmacy 20mg | July 05, 2020 at 08:29 AM | Reply

buy cialis samples pharmacy 20mg https://www.wisig.org/

JesusPep | July 05, 2020 at 11:58 AM | Reply

cialis professional <a href=" http://tadalafilprof.com/# ">cialis</a> when is the best time to take cialis: http://tadalafilprof.com

cialis without a doctor prescription usa | July 06, 2020 at 02:37 AM | Reply

cialis without a doctor prescription usa http://www.cialisles.com/

sildenafil without a doctor's prescription | July 06, 2020 at 03:04 AM | Reply

sildenafil without a doctor's prescription http://viacheapusa.com/

buy ed pills online usa | July 06, 2020 at 04:23 AM | Reply

buy ed pills online usa http://viacheapusa.com/

www.cialis.com | July 06, 2020 at 09:07 PM | Reply

www.cialis.com http://www.cialisles.com/

buy pills erection generic | July 06, 2020 at 09:21 PM | Reply

buy pills erection generic http://www.cialij.com/

sale generic viagra online pills | July 07, 2020 at 09:46 AM | Reply

sale generic viagra online pills http://viacheapusa.com/

order viagra online uk | July 07, 2020 at 12:02 PM | Reply

order viagra online uk http://viacheapusa.com/

buy ed pills | July 08, 2020 at 03:06 PM | Reply

buy ed pills http://www.cialij.com/

cvs male enhancement | July 08, 2020 at 03:14 PM | Reply

cvs male enhancement http://www.cialij.com/

uses of albuterol inhaler | July 09, 2020 at 01:22 PM | Reply

uses of albuterol inhaler https://amstyles.com/

when does ventolin hfa go generic | July 09, 2020 at 06:49 PM | Reply

when does ventolin hfa go generic https://amstyles.com/

bronchial inhalers over the counter | July 09, 2020 at 07:14 PM | Reply

bronchial inhalers over the counter https://amstyles.com/

medicines that contain acetaminophen | July 10, 2020 at 09:45 AM | Reply

medicines that contain acetaminophen https://tylenol1st.com/

chloroquine phosphate fish tank cleaner | July 10, 2020 at 08:33 PM | Reply

chloroquine phosphate fish tank cleaner https://azhydroxychloroquine.com/

buy pfizer viagra in canada | July 11, 2020 at 05:10 AM | Reply

buy pfizer viagra in canada https://cleverviagra.com/

cost of ventolin without insurance | July 11, 2020 at 02:31 PM | Reply

cost of ventolin without insurance https://amstyles.com/

SamuelAvoiz | July 11, 2020 at 02:57 PM | Reply

viagra cost per pill <a href=" http://sildenafilst.org/# ">viagra prices</a> http://sildenafilst.org/# viagra pills

Robertglals | July 13, 2020 at 05:34 PM | Reply

generic viagra available <a href=" https://wikigogy.org/# ">viagra prescription</a> https://wikigogy.org/# cheapest viagra

WesleyPautt | July 15, 2020 at 12:10 AM | Reply

viagra vs cialis vs levitra <a href=" https://wikigogy.org/# ">viagra prices</a> https://wikigogy.org/# generic viagra prices viagra dosage [url=https://wikigogy.org/#]viagra pills[/url] viagra coupons from pfizer

Robertglals | July 15, 2020 at 08:26 AM | Reply

generic viagra without subscription <a href=" https://wikigogy.org/# ">generic viagra pills</a> https://wikigogy.org/# viagra prescription

viagra online without prescription | July 15, 2020 at 04:55 PM | Reply

viagra online without prescription http://viagenupi.com/

buy viagra professional | July 15, 2020 at 11:07 PM | Reply

buy viagra professional http://www.viagenupi.com/

best time to take viagra 50mg | July 17, 2020 at 05:34 AM | Reply

best time to take viagra 50mg https://cleverviagra.com/

cialis | July 18, 2020 at 11:30 AM | Reply

cialis http://cialislet.com/

hydroxychloroquine vs chloroquine phosphate | July 18, 2020 at 11:55 AM | Reply

hydroxychloroquine vs chloroquine phosphate https://azhydroxychloroquine.com/

cialis website | July 18, 2020 at 07:31 PM | Reply

cialis website http://www.cialislet.com/

chloroquine coronavirus | July 19, 2020 at 09:48 AM | Reply

chloroquine coronavirus https://azhydroxychloroquine.com/

cialis online pharmacy | July 19, 2020 at 05:57 PM | Reply

cialis online pharmacy http://cialislet.com/

100mg viagra how long does it last | July 20, 2020 at 02:50 PM | Reply

100mg viagra how long does it last http://viacheapusa.com/

sildenafil citrate 100mg generic | July 20, 2020 at 09:26 PM | Reply

sildenafil citrate 100mg generic http://viacheapusa.com/

Robertglals | July 20, 2020 at 10:28 PM | Reply

tadalafil vs cialis: <a href=" http://warrensburgfmc.org/# ">generic cialis</a> http://warrensburgfmc.org/# generic cialis

sildenafil citrate pills | July 20, 2020 at 11:44 PM | Reply

sildenafil citrate pills http://viacheapusa.com/

buying generic cialis online safe | July 22, 2020 at 06:53 AM | Reply

buying generic cialis online safe http://cialislet.com/

how long does cialis last | July 22, 2020 at 10:33 AM | Reply

how long does cialis last http://cialislet.com/

generic viagra 100mg next day | July 22, 2020 at 11:08 AM | Reply

generic viagra 100mg next day http://viacheapusa.com/

viagra no doctor prescription judpharm | July 23, 2020 at 12:35 AM | Reply

viagra no doctor prescription judpharm http://viacheapusa.com/

buy pills erection generic viagra | July 23, 2020 at 04:06 AM | Reply

buy pills erection generic viagra http://viacheapusa.com/

plaquenil for sale | July 24, 2020 at 06:57 AM | Reply

plaquenil for sale https://azhydroxychloroquine.com/

where to buy tylenol online | July 27, 2020 at 01:44 AM | Reply

where to buy tylenol online https://tylenol1st.com/

tylenol in stock | July 27, 2020 at 04:11 AM | Reply

tylenol in stock https://tylenol1st.com/

where to find tylenol | July 27, 2020 at 08:41 PM | Reply

where to find tylenol https://tylenol1st.com/

chewable viagra 100mg | July 29, 2020 at 07:16 AM | Reply

chewable viagra 100mg https://10mgxviagra.com/

cheapest viagra 50 mg | July 29, 2020 at 10:14 PM | Reply

cheapest viagra 50 mg https://10mgxviagra.com/

prednisone 20mg tab | July 30, 2020 at 11:03 AM | Reply

prednisone 20mg tab https://bvsinfotech.com/

prednisone deltasone 20 mg tablet | July 30, 2020 at 03:55 PM | Reply

prednisone deltasone 20 mg tablet https://bvsinfotech.com/

prednisone 20 mg price | July 30, 2020 at 05:28 PM | Reply

prednisone 20 mg price https://bvsinfotech.com/

cheap cialis online canadian pharmacy | July 30, 2020 at 08:45 PM | Reply

cheap cialis online canadian pharmacy https://www.wisig.org/

best place to buy cialis online | July 31, 2020 at 03:18 AM | Reply

best place to buy cialis online https://www.wisig.org/

price of prednisone 5mg | July 31, 2020 at 04:42 AM | Reply

price of prednisone 5mg https://bvsinfotech.com/

where to buy generic cialis online forum | August 02, 2020 at 12:15 AM | Reply

where to buy generic cialis online forum https://www.wisig.org/

generic viagra 20mg pills erections | August 02, 2020 at 12:48 AM | Reply

generic viagra 20mg pills erections https://10mgxviagra.com/

https://naltrexoneonline.confrancisyalgomas.com | August 02, 2020 at 04:10 AM | Reply

https://naltrexoneonline.confrancisyalgomas.com https://naltrexoneonline.confrancisyalgomas.com/

low dose naltrexone for sale | August 02, 2020 at 08:42 AM | Reply

low dose naltrexone for sale https://naltrexoneonline.confrancisyalgomas.com/

bimatoprost generic usa | August 02, 2020 at 09:09 AM | Reply

bimatoprost generic usa https://www.jueriy.com/

buy online cialis pharmacy 20mg | August 02, 2020 at 04:23 PM | Reply

buy online cialis pharmacy 20mg https://www.wisig.org/

buying cialis online legal | August 02, 2020 at 07:17 PM | Reply

buying cialis online legal https://www.wisig.org/

naltrexone cost without insurance | August 02, 2020 at 07:49 PM | Reply

naltrexone cost without insurance https://naltrexoneonline.confrancisyalgomas.com/

where do you buy hydroxychloroquine | August 02, 2020 at 10:27 PM | Reply

where do you buy hydroxychloroquine https://chloroquine1st.com/

hydroxychloroquine at cvs | August 03, 2020 at 03:27 AM | Reply

hydroxychloroquine at cvs https://chloroquine1st.com/

can hydroxychloroquine be bought over the counter | August 03, 2020 at 07:43 PM | Reply

can hydroxychloroquine be bought over the counter https://chloroquine1st.com/

where can you buy chloroquine | August 04, 2020 at 10:31 AM | Reply

where can you buy chloroquine https://chloroquine1st.com/

prednisone 20mg tablets for dogs | August 04, 2020 at 06:20 PM | Reply

prednisone 20mg tablets for dogs https://bvsinfotech.com/

price of lumigan at walmart | August 05, 2020 at 03:26 PM | Reply

price of lumigan at walmart https://www.jueriy.com/

low dose naltrexone pills | August 06, 2020 at 02:50 AM | Reply

low dose naltrexone pills https://naltrexoneonline.confrancisyalgomas.com/

Leave a Comment