Differences From
Artifact [b092edff32]:
8 8 pol_sec: secmode.t
9 9 pol_reg: bool
10 10 credmgd: bool
11 11 maxupsz: intptr
12 12 instance: lib.mem.ptr(int8)
13 13 overlord: &srv
14 14 ui_hue: uint16
15 + nranks: uint16
16 + maxinvites: uint16
15 17 }
16 18 local struct srv {
17 19 sources: lib.mem.ptr(lib.store.source)
18 20 webmgr: lib.net.mg_mgr
19 21 webcon: &lib.net.mg_connection
20 22 cfg: cfgcache
21 23 id: rawstring
................................................................................
644 646 self.sources(i).backend.actor_auth_pw ~= nil then
645 647 var aid,uid,newhnd = self.sources(i):actor_auth_pw(ip,user,pw)
646 648 if aid ~= 0 then
647 649 if uid == 0 then
648 650 lib.dbg('new user just logged in, creating account entry')
649 651 var kbuf: uint8[lib.crypt.const.maxdersz]
650 652 var na = lib.store.actor.mk(&kbuf[0])
653 + na.handle = newhnd.ptr
651 654 var newuid: uint64
652 655 if self.sources(i).backend.actor_create ~= nil then
653 656 newuid = self.sources(i):actor_create(&na)
654 657 else newuid = self:actor_create(&na) end
655 658
656 659 if self.sources(i).backend.actor_auth_register_uid ~= nil then
657 660 self.sources(i):actor_auth_register_uid(aid,newuid)
................................................................................
723 726 lib.net.mg_mgr_free(&self.webmgr)
724 727 for i=0,self.sources.ct do var src = self.sources.ptr + i
725 728 lib.report('closing data source ', src.id.ptr, '(', src.backend.id, ')')
726 729 src:close()
727 730 end
728 731 self.sources:free()
729 732 end
733 +
734 +terra cfgcache:cfint(name: rawstring, default: intptr)
735 + var str = self.overlord:conf_get(name)
736 + if str.ptr ~= nil then
737 + var i,ok = lib.math.decparse(str)
738 + if ok then default = i else
739 + lib.warn('invalid configuration setting ',name,'="',{str.ptr,str.ct},'", expected integer; using default value instead')
740 + end
741 + str:free()
742 + end
743 + return default
744 +end
745 +
746 +terra cfgcache:cfbool(name: rawstring, default: bool)
747 + var str = self.overlord:conf_get(name)
748 + if str.ptr ~= nil then
749 + if str:cmp(lib.str.plit 'true') or str:cmp(lib.str.plit 'on') or
750 + str:cmp(lib.str.plit 'yes') or str:cmp(lib.str.plit '1') then
751 + default = true
752 + elseif str:cmp(lib.str.plit 'false') or str:cmp(lib.str.plit 'off') or
753 + str:cmp(lib.str.plit 'no') or str:cmp(lib.str.plit '0') then
754 + default = false
755 + else
756 + lib.warn('invalid configuration setting ',name,'="',{str.ptr,str.ct},'", expected boolean; using default value instead')
757 + end
758 + str:free()
759 + end
760 + return default
761 +end
730 762
731 763 terra cfgcache:load()
732 764 self.instance = self.overlord:conf_get('instance-name')
733 765 self.secret = self.overlord:conf_get('server-secret')
734 766
735 - do self.pol_reg = false
736 - var sreg = self.overlord:conf_get('policy-self-register')
737 - if sreg:ref() then
738 - if lib.str.cmp(sreg.ptr, 'on') == 0
739 - then self.pol_reg = true
740 - else self.pol_reg = false
741 - end
742 - sreg:free()
743 - end end
767 + self.pol_reg = self:cfbool('policy-self-register', false)
744 768
745 769 do self.credmgd = false
746 770 var sreg = self.overlord:conf_get('credential-store')
747 771 if sreg:ref() then
748 772 if lib.str.cmp(sreg.ptr, 'managed') == 0
749 773 then self.credmgd = true
750 774 else self.credmgd = false
................................................................................
773 797 self.pol_sec = secmode.lockdown
774 798 elseif lib.str.cmp(smode.ptr, 'isolate') == 0 then
775 799 self.pol_sec = secmode.isolate
776 800 end
777 801 smode:free()
778 802 end
779 803
780 - self.ui_hue = config.default_ui_accent
781 - var shue = self.overlord:conf_get('ui-accent')
782 - if shue.ptr ~= nil then
783 - var hue,ok = lib.math.decparse(shue)
784 - if ok then self.ui_hue = hue end
785 - shue:free()
786 - end
804 + self.ui_hue = self:cfint('ui-accent',config.default_ui_accent)
805 + self.nranks = self:cfint('user-ranks',10)
806 + self.maxinvites = self:cfint('max-invites',64)
787 807 end
788 808
789 809 return {
790 810 overlord = srv;
791 811 convo = convo;
792 812 route = route;
793 813 secmode = secmode;
794 814 }