def license_stats(): listener.setuid(0) lo = ul.getMachineConnection() users = lo.search('univentionOpenvpnAccount=1') myname = listener.baseConfig['hostname'] me = lo.search('cn=%s' % myname) try: key = me[0][1]['univentionOpenvpnLicense'][0] except: key = "" listener.unsetuid() connected_users = userlist() c_connected_users = len(connected_users) c_users = len(users) c_licenced = univention_openvpn_common.maxvpnusers(0, key) try: l = univention_openvpn_common.license(0, key) valid = str(date.fromordinal(l['vdate'])) except: valid = "No valid license on this host" info = {"expiration": valid, "connected": c_connected_users, "total": c_users, "licenced": c_licenced} count = str(len(connected_users)) query = web.ctx.query if query: # jsonp queries = query.split('&') callback = queries[0].split('=')[1] return '%s({"draw": 1, "recordsTotal": %s, "recordsFiltered": %s, "info": %s});' % (callback, count, count, json.dumps(info)) else: return '{"info": %s}' % json.dumps(info)
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from os import system import univention.uldap as ul from univention_openvpn_common import maxvpnusers lo = ul.getMachineConnection() maxu = 5 lobs = lo.search("(univentionOpenvpnLicense=*)") for lob in lobs: key = lob[1].get("univentionOpenvpnLicense", [None])[0] mu = maxvpnusers(0, key) if mu > maxu: maxu = mu vpnusers = lo.search("(univentionOpenvpnAccount=1)") if len(vpnusers) > maxu: exit() vpnservers = lo.search("(&(objectClass=univentionOpenvpn)(univentionOpenvpnActive=1))") for (tmp, server) in vpnservers: name = server.get("cn", [None])[0] port = server.get("univentionOpenvpnPort", [None])[0] addr = server.get("univentionOpenvpnAddress", [None])[0] if not name or not port or not addr: continue