public boolean checkPermissions(IClient client, RequestFunction function, AMFDataList params) { boolean doesStreamExist = false; boolean authorized = false; String streamName; try { streamName = params.getString(PARAM1).split("\\?")[0]; } catch (Exception ex) { return false; } IMediaStream stream = client.getAppInstance().getStreams().getStream(streamName); getLogger().info("Checking stream Name: " + streamName); doesStreamExist = (stream != null); if (doesStreamExist) { authorized = false; } else { authorized = true; } // add other permission checking getLogger().info("Authorized: " + authorized); return authorized; }
public void onConnect(IClient iclient, RequestFunction requestfunction, AMFDataList amfdatalist) { String s = iclient.getQueryStr(); String s1 = "Unknown reason"; String s2 = null; boolean flag = false; if (s == null) s1 = "Query string null"; else if (s.length() == 0) { s1 = "Query string empty"; } else { Map map = URLUtils.parseQueryStr(s, true); s2 = URLUtils.getParamValue(map, "secureToken"); if (s2 == null) s1 = (new StringBuilder()) .append("Query string mising secureToken (") .append(s) .append(")") .toString(); } if (s2 == null && amfdatalist.size() > 3) { AMFData amfdata = amfdatalist.get(amfdatalist.size() - 1); if (amfdata.getType() == 2) { s2 = amfdatalist.getString(amfdatalist.size() - 1); s1 = "Unknown reason"; } } if (s2 != null) { SecureTokenManager securetokenmanager = SecureTokenManager.getInstance(iclient.getVHost()); Map map1 = securetokenmanager.getTokenList(); SecureToken securetoken = (SecureToken) map1.get(s2); if (securetoken == null) { s1 = (new StringBuilder()) .append("SecureToken not found (") .append(s2) .append(")") .toString(); } else { int i = securetoken.incUsageCount(); if (i == 1) { securetoken.setClient(iclient); securetokenmanager.registerClient(iclient, securetoken); iclient.acceptConnection("SecureToken valid"); flag = true; } else { IClient iclient1 = securetoken.getClient(); if (iclient1 != null) { s1 = (new StringBuilder()) .append("SecureToken already used by client (") .append(iclient1.getClientId()) .append(")") .toString(); SecureTokenDef securetokendef = securetoken.getSecureTokenDef(); if (securetokendef != null) { if (securetokendef.isDoKill()) iclient1.getVHost().removeClient(iclient1.getClientId()); if (securetokendef.isDoNotify()) { AMFDataObj amfdataobj = new AMFDataObj(); amfdataobj.put("status", new AMFDataItem("error")); amfdataobj.put("reason", new AMFDataItem(s1)); amfdataobj.put("clientId", new AMFDataItem(iclient.getClientId())); amfdataobj.put("ipAddress", new AMFDataItem(iclient.getIp())); amfdataobj.put("date", new AMFDataItem(new Date())); iclient1.call("onSecureToken", null, new Object[] {amfdataobj}); } } } else { s1 = (new StringBuilder()) .append("SecureToken usage count is wrong (") .append(securetoken.getUsageCount()) .append(")") .toString(); } } } } if (!flag) { iclient.rejectConnection(s1); // WMSLoggerFactory.getLogger(com/wowza/wms/plugin/security/ModuleSecureToken2).info((new // StringBuilder()).append("SecureToken: Connection refused // (").append(iclient.getClientId()).append("): ").append(s1).toString()); } }