private static string GetThumbnail(string shortName, WebClient wc) { try { byte[] jpeg = wc.DownloadData("http://" + BiServerInfo.GetWebserverIp() + ":" + BiServerInfo.port + "/image/" + shortName + "?&w=160&q=25"); return("data:image/jpg;base64," + Convert.ToBase64String(jpeg)); } catch { return(""); } }
public static void GenerateWebInterfaceLinkDocument(string outPath) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<!DOCTYPE html>"); sb.AppendLine("<html>"); sb.AppendLine(" <head>"); sb.AppendLine(" <title>Camera Configuration Links</title>"); sb.AppendLine(@" <style type=""text/css""> body { font-family: Arial; } table { border-collapse: collapse; } td, th { border-bottom: 1px solid #b5b5b5; padding: 2px 12px; } img { max-width: 120px; max-height: 120px; cursor: pointer; } </style>" ); sb.AppendLine(" </head>"); sb.AppendLine("<body>"); sb.AppendLine("<table><thead><tr><th>Camera Name</th><th>Short Name</th><th>Configuration URL</th><th>Snapshot</th></tr></thead><tbody>"); RegistryKey cameras = RegistryUtil.HKLM.OpenSubKey("SOFTWARE\\Perspective Software\\Blue Iris\\Cameras"); if (cameras == null) { MessageBox.Show("Could not find Blue Iris's camera list in the registry. Either you have no cameras configured or your Blue Iris version is not compatible."); return; } else { string[] cameraNames = cameras.GetSubKeyNames(); if (cameraNames.Length == 0) { MessageBox.Show("No cameras were found in Blue Iris's registry settings. Either you have no cameras configured or your Blue Iris version is not compatible."); return; } else { BiServerInfo.Reload(); if (!BiServerInfo.enabled) { MessageBox.Show("This function is not supported on your system. Possible reasons are that your Blue Iris version is incompatible, or your Blue Iris web server is not enabled."); return; } //BiUserInfo.Reload(); AdvWebClient wc = new AdvWebClient(); string session = null; try { wc.Proxy = null; try { UserInfo user = BiUserInfo.CreateTemporaryUser(); session = GetSecureAuthenticatedSession(wc, out bool isAdmin, user.name, user.GetDecodedPassword()); wc.CookieContainer.Add(new Cookie("session", session, "/", BiServerInfo.GetWebserverIp())); } catch (Exception ex) { Logger.Debug(ex); wc = null; } List <CameraInfo> camList = new List <CameraInfo>(cameraNames.Length); foreach (string cameraName in cameraNames) { RegistryKey cam = cameras.OpenSubKey(cameraName); string shortName = cam.GetValue("shortname").ToString(); string ip = cam.GetValue("ip").ToString(); if (string.IsNullOrWhiteSpace(ip)) { continue; } string port = cam.GetValue("ip_port").ToString(); bool https = cam.GetValue("https").ToString() != "0"; int index = int.Parse(cam.GetValue("pos").ToString()); CameraInfo ci = new CameraInfo(cameraName, shortName, ip, port, https, index); camList.Add(ci); } camList.Sort(new Comparison <CameraInfo>((c1, c2) => c1.index.CompareTo(c2.index))); foreach (CameraInfo ci in camList) { AddCameraLink(sb, ci, wc); } } finally { wc?.UploadString(CameraWebInterfaceLinker.GetJsonURL(), "{\"cmd\":\"logout\",\"session\":\"" + session + "\"}"); wc?.Dispose(); } } } sb.AppendLine("</tbody></table></body>"); sb.AppendLine("</html>"); File.WriteAllText(outPath, sb.ToString()); Process.Start(outPath); }
public static string GetJsonURL() { return("http://" + BiServerInfo.GetWebserverIp() + ":" + BiServerInfo.port + "/json"); }