From: Stricted Date: Tue, 27 Oct 2015 09:19:49 +0000 (+0100) Subject: add copy&paste stuff X-Git-Url: https://git.stricted.de/?p=GitHub%2FStricted%2FSpeedportHybridControl.git;a=commitdiff_plain;h=491f6e3b541d504534328431ce949c5b03b9ec51 add copy&paste stuff --- diff --git a/SpeedportHybridControl.Implementations/Cryptography.cs b/SpeedportHybridControl.Implementations/Cryptography.cs new file mode 100644 index 0000000..1fccf90 --- /dev/null +++ b/SpeedportHybridControl.Implementations/Cryptography.cs @@ -0,0 +1,59 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace SpeedportHybridControl.Implementations { + public static class Cryptography { + private static string EncryptionKey = "FD25B8d0afB9DDB"; + private static byte[] salt = new byte[] { 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129 }; + + public static string Encrypt (string clearText) { + byte[] clearBytes = Encoding.Unicode.GetBytes(clearText); + string result; + using (Aes encryptor = Aes.Create()) { + if (Object.Equals(encryptor, null)) { + result = null; + return result; + } + + Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, salt); + encryptor.Key = pdb.GetBytes(32); + encryptor.IV = pdb.GetBytes(16); + using (MemoryStream ms = new MemoryStream()) { + using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write)) { + cs.Write(clearBytes, 0, clearBytes.Length); + cs.Close(); + } + clearText = Convert.ToBase64String(ms.ToArray()); + } + } + result = clearText; + return result; + } + + public static string Decrypt (string cipherText) { + byte[] cipherBytes = Convert.FromBase64String(cipherText); + string result; + using (Aes encryptor = Aes.Create()) { + if (Object.Equals(encryptor, null)) { + result = null; + return result; + } + + Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, salt); + encryptor.Key = pdb.GetBytes(32); + encryptor.IV = pdb.GetBytes(16); + using (MemoryStream ms = new MemoryStream()) { + using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write)) { + cs.Write(cipherBytes, 0, cipherBytes.Length); + cs.Close(); + } + cipherText = Encoding.Unicode.GetString(ms.ToArray()); + } + } + result = cipherText; + return result; + } + } +} diff --git a/SpeedportHybridControl.Implementations/DelegateCommand.cs b/SpeedportHybridControl.Implementations/DelegateCommand.cs new file mode 100644 index 0000000..9107ff7 --- /dev/null +++ b/SpeedportHybridControl.Implementations/DelegateCommand.cs @@ -0,0 +1,22 @@ +using System; +using System.Windows.Input; + +namespace SpeedportHybridControl.Implementations { + public class DelegateCommand : ICommand { + private Action _executeMethod; + + public DelegateCommand (Action executeMethod) { + _executeMethod = executeMethod; + } + + public bool CanExecute (object parameter) { + return true; + } + + public event EventHandler CanExecuteChanged; + + public void Execute (object parameter) { + _executeMethod.Invoke(); + } + } +} diff --git a/SpeedportHybridControl.Implementations/LogManager.cs b/SpeedportHybridControl.Implementations/LogManager.cs new file mode 100644 index 0000000..d8f83dd --- /dev/null +++ b/SpeedportHybridControl.Implementations/LogManager.cs @@ -0,0 +1,25 @@ +using System; +using System.Threading; +using System.IO; + +namespace SpeedportHybridControl.Implementations { + public class LogManager { + public static void WriteToLog (string value) { + DateTime time = DateTime.Now; + string format = "dd.MM.yyyy HH:mm:ss"; + + Console.WriteLine(string.Concat("[", time.ToString(format), "]: ", value)); + new Thread(() => { + try { + StreamWriter file = new StreamWriter("ErrorLog.txt", true); + file.WriteLine(string.Concat("[", time.ToString(format), "]: ", value)); + file.Close(); + } + catch (Exception ex) { + // nothing + Console.WriteLine(ex.Message); + } + }).Start(); + } + } +} diff --git a/SpeedportHybridControl.Implementations/Properties/AssemblyInfo.cs b/SpeedportHybridControl.Implementations/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6297064 --- /dev/null +++ b/SpeedportHybridControl.Implementations/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SpeedportHybridControl.Implementations")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SpeedportHybridControl.Implementations")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("bf9d21e9-4823-455c-9bda-e29c7ce1b0be")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SpeedportHybridControl.Implementations/SingletonFactory.cs b/SpeedportHybridControl.Implementations/SingletonFactory.cs new file mode 100644 index 0000000..aa87af7 --- /dev/null +++ b/SpeedportHybridControl.Implementations/SingletonFactory.cs @@ -0,0 +1,14 @@ +using System.Threading; + +namespace SpeedportHybridControl.Implementations { + public abstract class SingletonFactory where T : SingletonFactory, new() { + private static T _instance; + + public static T getInstance () { + if (_instance == null) + Interlocked.CompareExchange(ref _instance, new T(), null); + + return _instance; + } + } +} diff --git a/SpeedportHybridControl.Implementations/SpeedportHybridControl.Implementations.csproj b/SpeedportHybridControl.Implementations/SpeedportHybridControl.Implementations.csproj new file mode 100644 index 0000000..e2cfa21 --- /dev/null +++ b/SpeedportHybridControl.Implementations/SpeedportHybridControl.Implementations.csproj @@ -0,0 +1,78 @@ + + + + + Debug + AnyCPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE} + Library + Properties + SpeedportHybridControl.Implementations + SpeedportHybridControl.Implementations + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll + True + + + ..\packages\Noesis.Javascript.0.7.1.0\lib\net40\x86\Noesis.Javascript.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + + if not exist "$(TargetDir)x86" md "$(TargetDir)x86" + xcopy /s /y "$(SolutionDir)packages\Noesis.Javascript.0.7.1.0\NativeBinaries\net40\x86\*.*" "$(TargetDir)x86" + if not exist "$(TargetDir)amd64" md "$(TargetDir)amd64" + xcopy /s /y "$(SolutionDir)packages\Noesis.Javascript.0.7.1.0\NativeBinaries\net40\amd64\*.*" "$(TargetDir)amd64" + + + \ No newline at end of file diff --git a/SpeedportHybridControl.Implementations/packages.config b/SpeedportHybridControl.Implementations/packages.config new file mode 100644 index 0000000..bcb3ac5 --- /dev/null +++ b/SpeedportHybridControl.Implementations/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SpeedportHybridControl.Implementations/sjcl.cs b/SpeedportHybridControl.Implementations/sjcl.cs new file mode 100644 index 0000000..53b31e8 --- /dev/null +++ b/SpeedportHybridControl.Implementations/sjcl.cs @@ -0,0 +1,109 @@ +using Noesis.Javascript; + +namespace SpeedportHybridControl.Implementations { + class sjcl { + private string jssjcl; + public sjcl () { + jssjcl = string.Concat( + // embedded sjcl + "\"use strict\";function q(a){throw a;}var s=void 0,u=!1;var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return\"CORRUPT: \"+this.message};this.message=a},invalid:function(a){this.toString=function(){return\"INVALID: \"+this.message};this.message=a},bug:function(a){this.toString=function(){return\"BUG: \"+this.message};this.message=a},notReady:function(a){this.toString=function(){return\"NOT READY: \"+this.message};this.message=a}}};", + "\"undefined\"!==typeof module&&module.exports&&(module.exports=sjcl);\"function\"===typeof define&&define([],function(){return sjcl});", + "sjcl.cipher.aes=function(a){this.k[0][0][0]||this.D();var b,c,d,e,f=this.k[0][4],g=this.k[1];b=a.length;var h=1;4!==b&&(6!==b&&8!==b)&&q(new sjcl.exception.invalid(\"invalid aes key size\"));this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c&255]]};", + "sjcl.cipher.aes.prototype={encrypt:function(a){return w(this,a,0)},decrypt:function(a){return w(this,a,1)},k:[[[],[],[],[],[]],[[],[],[],[],[]]],D:function(){var a=this.k[0],b=this.k[1],c=a[4],d=b[4],e,f,g,h=[],l=[],k,n,m,p;for(e=0;0x100>e;e++)l[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=k||1,g=l[g]||1){m=g^g<<1^g<<2^g<<3^g<<4;m=m>>8^m&255^99;c[f]=m;d[m]=f;n=h[e=h[k=h[f]]];p=0x1010101*n^0x10001*e^0x101*k^0x1010100*f;n=0x101*h[m]^0x1010100*m;for(e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=p=p<<24^p>>>8}for(e=0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}};", + "function w(a,b,c){4!==b.length&&q(new sjcl.exception.invalid(\"invalid aes block size\"));var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,l,k,n=d.length/4-2,m,p=4,t=[0,0,0,0];h=a.k[c];a=h[0];var r=h[1],v=h[2],y=h[3],z=h[4];for(m=0;m>>24]^r[f>>16&255]^v[g>>8&255]^y[b&255]^d[p],l=a[f>>>24]^r[g>>16&255]^v[b>>8&255]^y[e&255]^d[p+1],k=a[g>>>24]^r[b>>16&255]^v[e>>8&255]^y[f&255]^d[p+2],b=a[b>>>24]^r[e>>16&255]^v[f>>8&255]^y[g&255]^d[p+3],p+=4,e=h,f=l,g=k;for(m=0;4>", + "m;m++)t[c?3&-m:m]=z[e>>>24]<<24^z[f>>16&255]<<16^z[g>>8&255]<<8^z[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return t}", + "sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.P(a.slice(b/32),32-(b&31)).slice(1);return c===s?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return u;var c=0,d;for(d=0;d>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};", + "sjcl.codec.utf8String={fromBits:function(a){var b=\"\",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d>>24),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+=\"=\";return d},toBits:function(a,b){a=a.replace(/\\s|=/g,\"\");var c=[],d,e=0,f=sjcl.codec.base64.J,g=0,h;b&&(f=f.substr(0,62)+\"-_\");for(d=0;dh&&q(new sjcl.exception.invalid(\"this isn't base64!\")),26>>e),g=h<<32-e):(e+=6,g^=h<<32-e);e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.D();a?(this.r=a.r.slice(0),this.o=a.o.slice(0),this.h=a.h):this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()};", + "sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.r=this.N.slice(0);this.o=[];this.h=0;return this},update:function(a){\"string\"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.o=sjcl.bitArray.concat(this.o,a);b=this.h;a=this.h=b+sjcl.bitArray.bitLength(a);for(b=512+b&-512;b<=a;b+=512)x(this,c.splice(0,16));return this},finalize:function(){var a,b=this.o,c=this.r,b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.h/", + "4294967296));for(b.push(this.h|0);b.length;)x(this,b.splice(0,16));this.reset();return c},N:[],b:[],D:function(){function a(a){return 0x100000000*(a-Math.floor(a))|0}var b=0,c=2,d;a:for(;64>b;c++){for(d=2;d*d<=c;d++)if(0===c%d)continue a;8>b&&(this.N[b]=a(Math.pow(c,0.5)));this.b[b]=a(Math.pow(c,1/3));b++}}};", + "function x(a,b){var c,d,e,f=b.slice(0),g=a.r,h=a.b,l=g[0],k=g[1],n=g[2],m=g[3],p=g[4],t=g[5],r=g[6],v=g[7];for(c=0;64>c;c++)16>c?d=f[c]:(d=f[c+1&15],e=f[c+14&15],d=f[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f[c&15]+f[c+9&15]|0),d=d+v+(p>>>6^p>>>11^p>>>25^p<<26^p<<21^p<<7)+(r^p&(t^r))+h[c],v=r,r=t,t=p,p=m+d|0,m=n,n=k,k=l,l=d+(k&n^m&(k^n))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;g[0]=g[0]+l|0;g[1]=g[1]+k|0;g[2]=g[2]+n|0;g[3]=g[3]+m|0;g[4]=g[4]+p|0;g[5]=g[5]+t|0;g[6]=g[6]+r|0;g[7]=g[7]+v|0}", + "sjcl.mode.ccm={name:\"ccm\",encrypt:function(a,b,c,d,e){var f,g=b.slice(0),h=sjcl.bitArray,l=h.bitLength(c)/8,k=h.bitLength(g)/8;e=e||64;d=d||[];7>l&&q(new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\"));for(f=2;4>f&&k>>>8*f;f++);f<15-l&&(f=15-l);c=h.clamp(c,8*(15-f));b=sjcl.mode.ccm.L(a,b,c,d,e,f);g=sjcl.mode.ccm.p(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),l=f.clamp(b,h-e),k=f.bitSlice(b,", + "h-e),h=(h-e)/8;7>g&&q(new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\"));for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));l=sjcl.mode.ccm.p(a,l,c,k,e,b);a=sjcl.mode.ccm.L(a,l.data,c,d,e,b);f.equal(l.tag,a)||q(new sjcl.exception.corrupt(\"ccm: tag doesn't match\"));return l.data},L:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,l=h.l;e/=8;(e%2||4>e||16=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c]));g=h.concat(g,d);for(d=0;de.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);return a.encrypt(f(d(f(h,", + "d(h))),g))},H:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};", + "sjcl.mode.gcm={name:\"gcm\",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;d=d||[];a=sjcl.mode.gcm.p(!0,a,f,d,c,e||128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];e<=h?(b=g.bitSlice(f,h-e),f=g.bitSlice(f,0,h-e)):(b=f,f=[]);a=sjcl.mode.gcm.p(u,a,f,d,c,e);g.equal(a.tag,b)||q(new sjcl.exception.corrupt(\"gcm: tag doesn't match\"));return a.data},Z:function(a,b){var c,d,e,f,g,h=sjcl.bitArray.l;e=[0,0,0,0];f=b.slice(0);", + "for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=h(e,f));g=0!==(f[3]&1);for(d=3;0>>1|(f[d-1]&1)<<31;f[0]>>>=1;g&&(f[0]^=-0x1f000000)}return e},g:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;de&&(a=b.hash(a));for(d=0;dd||0>c)&&q(sjcl.exception.invalid(\"invalid params to pbkdf2\"));\"string\"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));\"string\"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,l,k=[],n=sjcl.bitArray;for(l=1;32*k.length<(d||1);l++){e=f=a.encrypt(n.concat(b,[l]));for(g=1;gg;g++)e.push(0x100000000*Math.random()|0);for(g=0;g=1<this.j&&(this.j=f);this.F++;", + "this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.A=new sjcl.cipher.aes(this.b);for(d=0;4>d&&!(this.f[d]=this.f[d]+1|0,this.f[d]);d++);}for(d=0;d>>=1;this.c[g].update([d,this.C++,2,b,f,a.length].concat(a))}break;case \"string\":b===s&&(b=a.length);this.c[g].update([d,this.C++,3,b,f,a.length]);this.c[g].update(a);break;default:l=1}l&&q(new sjcl.exception.bug(\"random: addEntropy only supports number, array of numbers or string\"));this.i[g]+=b;this.d+=b;h===this.m&&(this.isReady()!==this.m&&C(\"seeded\",Math.max(this.j,this.d)),C(\"progress\",this.getProgress()))},isReady:function(a){a=this.I[a!==s?a:this.B];return this.j&&this.j>=a?this.i[0]>this.R&&", + "(new Date).valueOf()>this.O?this.u|this.t:this.t:this.d>=a?this.u|this.m:this.m},getProgress:function(a){a=this.I[a?a:this.B];return this.j>=a?1:this.d>a?1:this.d/a},startCollectors:function(){this.q||(this.a={loadTimeCollector:D(this,this.aa),mouseCollector:D(this,this.ba),keyboardCollector:D(this,this.$),accelerometerCollector:D(this,this.U),touchCollector:D(this,this.da)},window.addEventListener?(window.addEventListener(\"load\",this.a.loadTimeCollector,u),window.addEventListener(\"mousemove\",this.a.mouseCollector,", + "u),window.addEventListener(\"keypress\",this.a.keyboardCollector,u),window.addEventListener(\"devicemotion\",this.a.accelerometerCollector,u),window.addEventListener(\"touchmove\",this.a.touchCollector,u)):document.attachEvent?(document.attachEvent(\"onload\",this.a.loadTimeCollector),document.attachEvent(\"onmousemove\",this.a.mouseCollector),document.attachEvent(\"keypress\",this.a.keyboardCollector)):q(new sjcl.exception.bug(\"can't attach event\")),this.q=!0)},stopCollectors:function(){this.q&&(window.removeEventListener?", + "(window.removeEventListener(\"load\",this.a.loadTimeCollector,u),window.removeEventListener(\"mousemove\",this.a.mouseCollector,u),window.removeEventListener(\"keypress\",this.a.keyboardCollector,u),window.removeEventListener(\"devicemotion\",this.a.accelerometerCollector,u),window.removeEventListener(\"touchmove\",this.a.touchCollector,u)):document.detachEvent&&(document.detachEvent(\"onload\",this.a.loadTimeCollector),document.detachEvent(\"onmousemove\",this.a.mouseCollector),document.detachEvent(\"keypress\",", + "this.a.keyboardCollector)),this.q=u)},addEventListener:function(a,b){this.w[a][this.V++]=b},removeEventListener:function(a,b){var c,d,e=this.w[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;cb&&!(a.f[b]=a.f[b]+1|0,a.f[b]);b++);return a.A.encrypt(a.f)}function D(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);", + "a:try{var F,G,H,I;if(I=\"undefined\"!==typeof module){var J;if(J=module.exports){var K;try{K=require(\"crypto\")}catch(L){K=null}J=(G=K)&&G.randomBytes}I=J}if(I)F=G.randomBytes(128),F=new Uint32Array((new Uint8Array(F)).buffer),sjcl.random.addEntropy(F,1024,\"crypto['randomBytes']\");else if(\"undefined\"!==typeof window&&\"undefined\"!==typeof Uint32Array){H=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(H);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(H);", + "else break a;sjcl.random.addEntropy(H,1024,\"crypto['getRandomValues']\")}}catch(M){\"undefined\"!==typeof window&&window.console&&(console.log(\"There was an error collecting entropy from the browser:\"),console.log(M))}", + "sjcl.json={defaults:{v:1,iter:1E3,ks:128,ts:64,mode:\"ccm\",adata:\"\",cipher:\"aes\"},Y:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.e({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.e(f,c);c=f.adata;\"string\"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));\"string\"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||\"string\"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length||4<", + "f.iv.length)&&q(new sjcl.exception.invalid(\"json encrypt: invalid parameters\"));\"string\"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,f),a=g.key.slice(0,f.ks/32),f.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.publicKey&&(g=a.kem(),f.kemtag=g.tag,a=g.key.slice(0,f.ks/32));\"string\"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));\"string\"===typeof c&&(f.adata=c=sjcl.codec.utf8String.toBits(c));g=new sjcl.cipher[f.cipher](a);e.e(d,f);d.key=a;f.ct=sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return f},", + "encrypt:function(a,b,c,d){var e=sjcl.json,f=e.Y.apply(e,arguments);return e.encode(f)},X:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.e(e.e(e.e({},e.defaults),b),c,!0);var f,g;f=b.adata;\"string\"===typeof b.salt&&(b.salt=sjcl.codec.base64.toBits(b.salt));\"string\"===typeof b.iv&&(b.iv=sjcl.codec.base64.toBits(b.iv));(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||\"string\"===typeof a&&100>=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4= -65) { + return Brushes.DarkGreen; + } + else if (rsrp <= -66 && rsrp >= -83) { + return Brushes.Green; + } + else if (rsrp <= -84 && rsrp >= -95) { + + return Brushes.Yellow; + } + else if (rsrp <= -96 && rsrp >= -105) { + return Brushes.Orange; + } + else if (rsrp <= -106 && rsrp >= -125) { + return Brushes.Red; + } + else if (rsrp >= -126) { + return Brushes.DarkRed; + } + + return Brushes.Transparent; + } + + /** + * calculate the background color for rsrq + * see http://www.lte-anbieter.info/technik/rsrq.php + * + * @param int rsrp + * @return Brush + */ + public static Brush getRSRQColor (int rsrq) { + if (rsrq >= -3) { + return Brushes.DarkGreen; + } + else if (rsrq <= -4 && rsrq >= -6) { + return Brushes.Green; + } + else if (rsrq <= -7 && rsrq >= -8) { + return Brushes.Yellow; + } + else if (rsrq <= -9 && rsrq >= -11) { + return Brushes.Orange; + } + else if (rsrq <= -12 && rsrq >= -15) { + return Brushes.Red; + } + else if (rsrq <= -16 && rsrq >= -20) { + return Brushes.DarkRed; + } + + return Brushes.Transparent; + } + + /** + * check for update + */ + /* + public static bool checkUpdate () { + try { + XmlDocument xmlDocument = new XmlDocument(); + xmlDocument.Load("https://stricted.net/version.xml"); + + string version = xmlDocument.DocumentElement["version"].InnerText; + if (MainWindow.VERSION.Equals(version).Equals(false)) { + return true; + } + } + catch (Exception ex) { + Console.WriteLine(ex.Message); + } + + return false; + } + */ + + /** + * process login stuff + */ + /* + public static void login () { + try { + Application.Current.Dispatcher.BeginInvoke(new Action(() => { + MainWindow MainWindow = Application.Current.MainWindow as MainWindow; + + // LoginPage + LoginPage LoginPage = MainWindow.loginPage as LoginPage; + LoginPage.button1.Content = "Logout"; + LoginPage.PasswordCheckBox.Visibility = Visibility.Hidden; + LoginPage.tbip.Visibility = Visibility.Hidden; + LoginPage.diTextBlock.Visibility = Visibility.Hidden; + LoginPage.tbpw.Visibility = Visibility.Hidden; + LoginPage.PasswordBox.Visibility = Visibility.Hidden; + LoginPage.cbSave.Visibility = Visibility.Hidden; + + // MainWindow + MainWindow.btnLogin.Content = "Logout"; + + MainWindow.btnOverview.IsEnabled = true; + MainWindow.btnDsl.IsEnabled = true; + MainWindow.btnLteInfo.IsEnabled = true; + MainWindow.btnSyslog.IsEnabled = true; + MainWindow.btnTR181.IsEnabled = true; + MainWindow.btnPhone.IsEnabled = true; + MainWindow.btnLan.IsEnabled = true; + MainWindow.btnControls.IsEnabled = true; + })); + } + catch (Exception ex) { + Console.WriteLine(ex.Message); + } + } + */ + /** + * process logout stuff + */ + /* + public static void logout () { + try { + Application.Current.Dispatcher.BeginInvoke(new Action(() => { + MainWindow MainWindow = Application.Current.MainWindow as MainWindow; + + // LteInfoPage + LteInfoPage lteInfo = MainWindow.lteInfoPage as LteInfoPage; + if (Object.Equals(lteInfo._ltepopup, null).Equals(false)) { + lteInfo._ltepopup.StopTimer(); + lteInfo._ltepopup.Hide(); + lteInfo._ltepopup = null; + } + lteInfo.StopTimer(); + + // DslPage + DslPage dslInfo = MainWindow.dslPage as DslPage; + dslInfo.StopTimer(); + + // LoginPage + LoginPage LoginPage = MainWindow.loginPage as LoginPage; + LoginPage.PasswordBox.Visibility = Visibility.Visible; + LoginPage.tbip.Visibility = Visibility.Visible; + LoginPage.diTextBlock.Visibility = Visibility.Visible; + LoginPage.tbpw.Visibility = Visibility.Visible; + LoginPage.PasswordCheckBox.Visibility = Visibility.Visible; + LoginPage.button1.Content = "Login"; + LoginPage.cbSave.Visibility = Visibility.Visible; + LoginPage.PasswordBox.Focus(); + + // MainWindow + MainWindow.btnLogin.Content = "Login"; + MainWindow.frame.Content = MainWindow.loginPage; + MainWindow.changeColor(MainWindow.btnLogin); + + MainWindow.btnOverview.IsEnabled = false; + MainWindow.btnDsl.IsEnabled = false; + MainWindow.btnLteInfo.IsEnabled = false; + MainWindow.btnSyslog.IsEnabled = false; + MainWindow.btnTR181.IsEnabled = false; + MainWindow.btnPhone.IsEnabled = false; + MainWindow.btnLan.IsEnabled = false; + MainWindow.btnControls.IsEnabled = false; + })); + } + catch (Exception ex) { + Console.WriteLine(ex.Message); + } + } + */ + } +} diff --git a/SpeedportHybridControl.sln b/SpeedportHybridControl.sln index dadea7b..d8cbe8d 100644 --- a/SpeedportHybridControl.sln +++ b/SpeedportHybridControl.sln @@ -5,16 +5,32 @@ VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeedportHybridControl", "SpeedportHybridControl\SpeedportHybridControl.csproj", "{50680F1A-2AF6-4A6A-8491-602E2F51CAC6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeedportHybridControl.Implementations", "SpeedportHybridControl.Implementations\SpeedportHybridControl.Implementations.csproj", "{BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Debug|x86.ActiveCfg = Debug|Any CPU + {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Debug|x86.Build.0 = Debug|Any CPU {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Release|Any CPU.ActiveCfg = Release|Any CPU {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Release|Any CPU.Build.0 = Release|Any CPU + {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Release|x86.ActiveCfg = Release|Any CPU + {50680F1A-2AF6-4A6A-8491-602E2F51CAC6}.Release|x86.Build.0 = Release|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Debug|x86.Build.0 = Debug|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Release|Any CPU.Build.0 = Release|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Release|x86.ActiveCfg = Release|Any CPU + {BF9D21E9-4823-455C-9BDA-E29C7CE1B0BE}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SpeedportHybridControl/App.xaml b/SpeedportHybridControl/App.xaml index b1dc1a7..1858ec7 100644 --- a/SpeedportHybridControl/App.xaml +++ b/SpeedportHybridControl/App.xaml @@ -2,8 +2,11 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:SpeedportHybridControl" + xmlns:model="clr-namespace:SpeedportHybridControl.model" StartupUri="MainWindow.xaml"> - + + + diff --git a/SpeedportHybridControl/MainWindow.xaml b/SpeedportHybridControl/MainWindow.xaml index 54916cd..3118f5e 100644 --- a/SpeedportHybridControl/MainWindow.xaml +++ b/SpeedportHybridControl/MainWindow.xaml @@ -5,8 +5,38 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:SpeedportHybridControl" mc:Ignorable="d" - Title="MainWindow" Height="350" Width="525"> - - + Closing="Window_Closing" + SizeChanged="update_size" + Height="350" + Width="530" + MinHeight="350" + MinWidth="530" + Title="Speedport Hybrid Konfigurationsprogramm" + Icon="t-com icon.ico"> + + + + + + +