blog.darkstar.work - a simple url encoder/decoder

 a simple url encoder/decoder
 http://blog.darkstar.work

Labels

Wirtschaft (150) Pressefreiheit (125) Österreich (120) IT (95) code (60) Staatsschulden (37) EZB (27) Pensionssystem (16)
Posts mit dem Label IT werden angezeigt. Alle Posts anzeigen
Posts mit dem Label IT werden angezeigt. Alle Posts anzeigen

2017-04-16

Chrome Browser execs "cmd.exe" on local machine :(

When Chrome browser execs cmd.exe as child process,
which popens McAfee as child,
so that McAfee's parent is cmd.exe
and McAfee's grandparent is Chrome,
I feel so really very strange!

An internet browser could write cookies to your harddisk,
a web browser could write cached data files to your harddrive,
a browser might read/write registry keys ( if proper implemented only to its registry area ) under Microsoft Windows,
but a browser should never ever start processes [ under Posix/unix a.k.a exec/popen/fork ] such as unsandboxed binary programs, (see WinAPI index)
that will running under users privileges with maximum users rights on local machine!

2017-04-09

Swisscom Auto Login

/data/misc/wifi/

wpa_supplicant.conf

ctrl_interface=/data/misc/wifi/sockets
driver_param=use_p2p_group_interface=1
update_config=1
device_name=Hol-U19
manufacturer=HUAWEI
model_name=Hol-U19
model_number=Hol-U19
serial_number=******
device_type=10-0050F204-5
os_version=01020300
config_methods=physical_display virtual_push_button
p2p_no_group_iface=1

network={
 ssid="Swisscom_Auto_Login"
 key_mgmt=WPA-EAP IEEE8021X
 eap=SIM
 sim_slot="0"
 imsi="1232072504805647@wlan.mnc007.mcc232.3gppnetwork.org"
}

network={
 ssid="Free_Swisscom_Auto_Login"
 key_mgmt=WPA-EAP IEEE8021X
 eap=SIM
}

network={
 ssid="Swisscom_Auto_Login"
 key_mgmt=WPA-EAP IEEE8021X
 eap=SIM
 sim_slot="0"
 imsi="1232072504805647@wlan.mnc007.mcc232.3gppnetwork.org"
 priority=1
}

network={
 ssid="Free_Swisscom_Auto_Login"
 key_mgmt=WPA-EAP IEEE8021X
 eap=SIM
}

hostapd.conf

interface=ap0
driver=nl80211
ctrl_interface=/data/misc/wifi/hostapd
ssid=Hol-U19_8639
channel=6
ieee80211n=1
hw_mode=g
ignore_broadcast_ssid=0
max_num_sta=5
eap_server=1
wps_state=2
config_methods=display physical_display push_button
device_name=AndroidAP
manufacturer=MediaTek Inc.
model_name=MTK Wireless Model
model_number=66xx
serial_number=1.0
device_type=10-0050F204-5
wpa=2
rsn_pairwise=CCMP
wpa_psk=f8e8dc3c535319f60c1166220c1b843e82aa5f6a4ad0854d65c92a7befd0017e

p2p_supplicant.conf

ctrl_interface=/data/misc/wifi/sockets
driver_param=use_p2p_group_interface=1
update_config=1
device_name=1466568
manufacturer=MediaTek Inc.
model_name=MTK Wireless Model
model_number=1.0
serial_number=******
device_type=10-0050F204-5
os_version=01020300
config_methods=virtual_push_button physical_display keypad
p2p_ssid_postfix=-1466568
persistent_reconnect=1
p2p_no_group_iface=1

2017-01-07

area23.mond.at [historic]


will be closed on 1st July.
area23 is still hosted by http://www.mond.at/, thanks to Franz Schaefer
   
 links:   codeguru  dict.leo  freshmeat  google  j2seapi  kernel.at  linuxdoc  ietf  selfhtml  slash dot   
 local services:   www.area23.at blog.area23.at lypress.eu Schnapsen Applet  


Zeittabelle lokale Netzwerke, TCP/IP und UNIX, wie mit Sputnik alles begann: [sputnik.wav]

1957 Der Satellit Sputnik wird von der UDSSR ins All befördert und löst in den USA den sogenannten "Sputnik-Schock" aus. Die USA gründen daraufhin die "ARPA" ("Advanced Research Project Agency").
1960 Studien und Forschungsarbeiten zu Paktenetzen, die LAN-tauglich sind
1962 TCPIP: Erste Ideen zur Paketschaltung reifen.
1969 Das Amerikanische Departmanet of Defense ("DoD") gründet eine eigene "Netzwerk-Abteilung" in der ARPA, diese beginnt mit dem Aufbau des ARPANET. Initial waren vier Super-Computer in den USA im ARPANET zusammengebunden. Unix Version 1 wird von Ken Thompson in den Bell Laboratories (einer Forschungs- organisation von AT&T) entwickelt. Diese erste Version lief auf einer PDP­7 und war zuerst in Assembler, danach in der Sprache B (entwickelt von Thompson selbst) geschrieben
1971 15 Knoten sind im ARPANET verbunden, als Protokoll wird das "Network Control Protocol" ("NCP") verwendet.
1973 Beginn der Idee eines universellen "Ethernet". Vater des Ethernet ist Robert Metcalfe (Xerox). Einige Vorläufer/Prototypen waren bereits gebaut worden, Ethernet entstand aus den Verbesserungen, die in diesen Tests herausgefunden wurden.
TCPIP: EMail kommt zum ersten Mal zum Einsatz. Ursprünglich wurde EMail für die Kommunikation der Leute, die mit dem Netz zusammenarbeiteten, konzipiert.
Robert Kahn und Vint Cerf (heute die "Väter des Internet" genannt) beginnen mit dem Umbau von NCP auf einen neuen, offenen Standard, der später TCP/IP genannt werden wird.
UNIX Version 5 wurde 1973 von Thompson und Dennis Ritchie bereits in C implementiert und lief auf einer PDP­11.
1974 Ethernet wird erfunden.
Ein Forschungsprogramm, "Internetting Project" genannt, wird ins Leben gerufen und das Netzwerksystem, das sich daraus entwickelte wurde später als das "Internet" bekannt. Das Protokollsystem, das zugrunde liegt, ist TCP/IP.

IBM definiert die "Systems Network Architecture", "SNA". SNA ist ein umfassendes hierachisches Netzwerksystem, das ursprünglich für Großrechner und "dumme" Terminals entwickelt wurde und später mit "peer-to-peer" Fähigkeiten erweitert wurde.
1976 Die CCITT definiert X.25 vulgo Datex-P, ein paketschaltendes WAN. Ethernet wird patentiert.
TCPIP: "Unix to Unix Copy" ("UUCP") ist das Transportmedium in den internationalen Netzen. Es ist ein Weitergabedienst für Dateien und Mails, kann aber auf Remote Rechnern auch Batch-Programme ausführen.
Mit Version 6 entsteht die erste UNIX Version, die weitere Verbreitung findet. Diese Version wurde als erste auf eine nicht­PDP Maschine portiert, auf eine Interdata 8/32 (1977). Der Source­ Code von Version 6 wurde allgemein verfügbar gemacht, vor allem Universitäten nutzten diese Möglichkeit.
1978 Unix Version 7 ist die letzte UNIX Version, die noch einen ziemlich einheitlichen Standard darstellte, und die Basis so ziemlich aller heute verfügbaren UNIX­Derivate ist, lief auf PDP11, Interdata 8/32 und VAX (als UNIX/32V) Nach Version 7 spaltete sich die Entwicklung von UNIX in drei Hauptrichtungen auf:

  • Forschungsgruppen der Bell Laboratories stellten den externen Vertrieb von UNIX ein und betrieben UNIX nur mehr als Forschungsprojekt. Sie befreiten sich damit vom Zwang eines kommerziellen Software­Vertreibers, kompatibel zu Vorgängerversionen bleiben zu müssen.
  • AT&T gründete für die Entwicklung kommerziell zu vertreibender UNIX Versionen die UNIX Support Group (USG), die später in das UNIX System Development Laboratory (USDL) und die AT&T Information Systems (ATTIS) überging.
  • Die dritte Hauptrichtung der Entwicklung von UNIX sind die Berkeley Software Distributions (BSD) der University of California at Berkeley.
  • 1979 Ethernet wird zum ersten Mal implementiert eigentlicher Beginn der Geschichte der LANs 3BSD ist von Version 7 abgeleitet, beinhaltet jedoch bereits virtuelle Speicherverwaltung und Demand Paging.
    1980 Beginn des IEEE 802 4.1BSD führte eine neue Shell (C­shell), terminalunabhängige Bildschirmtreiber und den Full­Screen Editor vi ein.
    1981 Token Ring wird erfunden
    1982 TCP/IP wird im ARPANET zum Standard, nachdem es ab 1980 Standard-Protokoll im militärischen Bereich wurde.
    In Europa wird das EUnet gegründet, das Europäische Unix Netzwerk. Damit kommt EMail auch nach Europa.
    System III ist die erste Version, die von USG vertrieben wird. System III war hauptsächlich von Version 7 abgeleitet; es beinhaltete aber bereits das Source Code Control System (SCCS ) und Accounting Routinen.
    1983 System V wird seit 1983 vertrieben und beinhaltet ein verbessertes Filesystem und einen verbesserten Terminaltreiber.
    Version 8
    4.2BSD beinhaltet ein schnelleres Filesystem, Interprozeßkommunikation über Sockets und TCP/IP, Remote Command Execution und Symbolic Links.
    1984 Das OSI 7 Schichten Modell wird erfunden
    245 Knoten im ARPANET.
    Umstieg im ARPANET von NCP auf TCP/IP.
    Aufgrund der ständig wachsenden Domains Einführung von DNS. Damit wurde die Verteilung der Last auf mehrere Rechenr möglich (hatte bislang ein einziger Rechner übernommen).
    System V, Release 2 wurde 1984 eingeführt und beinhaltet bereits Paging und Shared Memory
    1985 IEEE definiert die Normen 802.3 (aufbauend auf Ethernet) und 802.5 (aufbauend auf Token Ring)
    TCPIP: Symbolics.com wurde die erste registrierte Domain und wurde am 15. März zugewiesen.
    1986 Erweiterung des 802.3 auf Telefonverkabelung
    Start des NSFNET ("National Science Foundation Network") Beginn der Entmilitarisierung des ARPANET. Die NSFNET-Infrastruktur ist auch heute noch ein wichtiger Teil des Internet-Backbones.
    Das Exponentielles Wachstum des Internets beginnt.
    4.3BSD unterscheidet sich von seinem Vorgänger nicht so sehr in der Benutzerschnittstelle als in internen Änderungen.
    4.3BSD unterstützt TCP/IP subnets und routing. Einige Fehler in der Behandlung von symbolic links und der TCP/IP Implementierung wurden behoben.
    1987 System V, Release 3 wird seit 1987 vertrieben. Erstmals in einem UNIX System wurden Streams eingeführt.
    Version 9
    Im Jänner 1987 begann Andrew S. Tanenbaum mit der Entwicklung des nicht­kommerziellen UNIX Betriebsystem MINIX. MINIX wurde komplett neu geschrieben und enthält somit keine einzige Zeile vom original AT&T Quellcode
    1988 Der berühmte Internet-Wurm greift um sich und bringt das Netz in weiten Teilen zum Stillstand.
    Entwicklung des Internet Relay Chat (IRC).
    Der damalige US-Senator Al Gore liest den NSF-Bericht "Towards a National Research Network" und beginnt mit dem Aufbau von Hochgeschwindigkeitsnetzwerken, welche den Grundstein für einen späteren Daten-Superhighway legten.
    1989 System V, Release 4 ist die aktuelle Version von System V (1989) [AT&89].
    Diese Version beinhaltet das Remote File System (RFS) von AT&T, das Network File System (NFS) von Sun, das TCP/IP Kommunikationsprotokoll, Sockets aus den BSD UNIX Systemen, den Remote Procedure Call (RPC) Mechanismus und die External Data Representation (XDR) von Sun und Open Look (basierend auf dem X Windows System und NFS von Sun) als Benutzerschnittstelle.
    1990 FDDI
    ARPANET wird vollständig durch das NSFNET ersetzt, das Internet in seiner heutigen kommerziellen Form beginnt. Es wird nach wie vor nur von den Universitäten und Forschungseinrichtungen und einigen Enthusiasten verwendet.
    Ca 100.000 Knoten sind im Netz.
    Österreich wird an das NSFNET angeschlossen.
    Tim Berners-Lee - er gilt allgemein als Erfinder des "World Wide Web" oder kurz "Web" – schreibt den ersten Web-Browser. Dieser hat mit den heutigen allerdings nur die Funktionsprinzipien gemeinsam.
    1991 Gopher, der Vorläufer des WWW, wird erfunden. Ca 600.000 Knoten im Netz. NSFNET gibt das Internet, das bisher nur für Universitäten und Forschungseinrichtungen gedacht war, für den kommerziellen Bereich "frei". 1991 entschloß sich Linus Torvalds, ein junger Student an der Universität von Helsinki in Finnland, ausgehend von Minix, ein eigenes UNIX Betriebsystem zu entwickeln. Am 5. Oktober 1991 wurde die erste Version von Linux öffentlich freigegeben (Kernel Version 0.02).
    1992 DQDB
    Jean Armour Polly prägte den Begriff "Surfen im Internet".
    1993 ATM
    Das InterNIC wird gegründet und übernimmt die administrativen Aufgaben im Internet zentralisiert. "Mosaic X", der erste Web Browser, wird von Marc Andreesen (am National Center for Supercomputing Applications) erfunden. Mosaic kann Grafiken direkt in die Texte einbetten. Andreesen ist später Mitbegründer von Netscape, das die nicht-kommerziellen Mosaic-Systeme erweitert und auf viele Plattformen portiert.
    Ende 1993 gibt es ca 600 WebSites.
    1994 Eigentlicher Beginn des WWW wie man es heute kennt (HTTP/HTML).
    Ca 3 Mio Knoten im Netz.
    Netscape ist als eine der ersten Softwareprodukte im Internet gratis downloadbar.
    Weiterentwicklung von Linux bis schließlich die Kernel Version 1.0 fertiggestellt wird.
    1995 100 Mbps Ethernet
    Das Federal Networking Council (FNC) beschließt, dass der folgende Text unserer Definition des Wortes "Internet" entspricht. "Internet" bezieht sich auf das globale Informationssystem, das (I.) logisch durch einen weltweit einzigartigen Adressraum basierend auf das Internet Protokoll (IP) oder dessen folgenden Erweiterungen/Follow-Ons vernetzt ist; (II.) es ermöglicht Datenübertragungen durch die Verwendung des Transmission Control Protocol/Internet Protocol (TCP/IP) oder dessen folgenden Erweiterungen/Follow-Ons und/oder anderer IP-kompatibler Protokolle zu unterstützen; und (III.) entweder für öffentliche oder private Zwecke auf hoher Ebene Dienste basierend auf hier beschriebener Datenübertragung und diesbezüglicher Infrastruktur zur Verfügung stellt, verwendet oder zugänglich macht.
    Wichtige eigene Netzbetreiber steigen als "ISPs" in das Internet ein: AOL, CompuServe, Prodigy.
    1996 Mehr als 100.000 WebSites online.
    1998 1.000 Mbps Ethernet
    Mehr als 3,7 Mio WebSites online. Mehr als 150 Mio Internet-Benutzer.
    1999 Mehr als 10 Mio. WebSites online. 250-300 Mio Internet-Benutzer die Zahl ist nicht mehr exakt feststellbar. Linux version 2.2.16 (root@area23)
    (gcc version 2.95.2 19991024 (release)) #2
    199x Dezentralisierung der Domainname-Vergabe
    2001
    Heute
    10.000 Mbps Ethernet
    Kommerzielles WWW. Das WWW ist das Aushängeschild des Internet. Aber das eMail ist die eigentliche "Killer-Application", die jedes kommerziell erfolgreiche System benötigt.
    Einige statistische Daten:

    • Muttersprachen der Internet-Benutzer: Englisch 51%, Deutsch 7%, Japanisch 7%, dann folgen Spanisch, Chinesisch und Französisch.
    • Sprachen in den WebSites: 87% Englisch
    • Geschätzte 1 Billion(!) Dokumente im Internet verfügbar.
    • 18 Mio registrierte Domains (DNS), 9.5 Mio davon sind ".com"s. USA haben dei größte Anzahl an registrierten Domains, Deutschland ist auf Platz drei mit über einer Mio, Österreich unter den "Top Ten" mit 100.000.
    • Das Internet Software Consortium nimmt zweimal im Jahr eine Zählung der Host-Computer vor, und im Januar 2000 schätzte man 72,4 Millionen in der DNS eingetragene Hosts.
    • Messaging Online schätzt, dass es Ende 1999 569 Millionen EMail-Accounts gab, um 83% mehr als im Jahr zuvor. Jedoch benutzen nur 5 % der Beschäftigten und 6 % der Haushalte EMail.
    • Ca 200.000 aktuelle aktive NewsGroups.
















    IEEE802.3 CSMA/CD

    Since many local nets with access to the internet via standard gateway using common SNAT are all still based on IEEE802.3 with medium access control CSMA/CD (CSMA/CA CSMA/CR) this could have terrible risks in some cases.

    The topology before the gateway to the Internet and the backbone (provider) architecture / topology exactly after this gateway, as well as the topology after the 1st real Internet router are critical!
    If there is an internet exchange common backbone for all providers (that all regional or most providers share), this is the next critical area issue!

    http://www.ieee802.org/3












    2016-11-12

    War Putin am 19.-20. Oktober 2016 in Berlin?

    War russischer Bär im OktoBär 2016 in Bärlin? 

    19. Oktober 2016 aus russischer Sicht

    Der Kreml twittert ueber die Neueroeffnung des kulturellen orthodoxen russischen Zentrum in Paris
    https://twitter.com/KremlinRussia_E/status/788702146984304640

    Um etwa 10h Moskauer Zeit berichtet der Kreml ueber ein kurzes informelles Treffen von Putin mit  Dmitry Medvedev und Pavel Kolobkov:
    https://twitter.com/KremlinRussia_E/status/788786334555074568


    Dann am Abend war Putin - laut Kreml twitter Account - zu Gast in Berlin
    https://twitter.com/KremlinRussia_E/status/788818120110698497
    Pawel Anatoljewitsch Kolobkow ist ein russischer Degenfechter


    Deutsche Presse bestaetigt Putin Visite am 19.10.2016


    Die FAZ berichtet hier vom Treffen :
    http://www.faz.net/aktuell/politik/ausland/angela-merkel-empfaengt-wladimir-putin-in-berlin-14488176.html


    Kalender der deutschen Kanzlerin Angela Merkel 


    Laut Kalender der deutschen Kanzlerin Angela Merkel ist die einzige Referenz zu Russland einen Tag spaeter am 20. Oktober

    20.OKT UNTERWEGS
    Die Kanzlerin reist am Donnerstag zum Europäischen Rat nach Brüssel.Zunächst geht es um den Reflexionsprozess zur Zukunft der Europäischen Union. Der Ratsvorsitzende, der slowakische Premierminister Fico, berichtet über die Fortschritte bei der Umsetzung des Bratislava-Fahrplans. Zweites Thema ist Migration. Die Bundeskanzlerin berichtet dem Europäischen Rat in diesem Zusammenhang von ihrer Reise nach Afrika. Die Staats- und Regierungschefs sprechen auch über die Reform des Gemeinsamen Asylsystems und über die neue Europäische Grenz- und Küstenwache. Beim Abendessen geht es um die Beziehungen zu Russland. Hierbei wird auch Syrien eine Rolle spielen.
    https://www.bundeskanzlerin.de/Webs/BKin/DE/AngelaMerkel/Terminkalender/kalender_node.html?date=201610



    Deutsches Außenministerium - ein Mysterium. 

    Im Steinmeier Außenamt waren bis vor kurzem auf deren Webseiten auch noch Hinweise auf die Putin Visite ein Berlin; diese sind nun jetzt schnell wieder von den  Webseiten des Außenministerium verschwunden.


    War Putin in der zweiten Oktoberhaelfte 2016 jetzt In Berlin,  oder nicht? 


    כך So, nur so! 

    War russischer Bär im OktoBär 2016 in Bärlin?
    Oder
    Stellt euch vor, daas die Sachsen als einzige die Wahrheit erkannten

    http://m.bild.de/politik/ausland/wladimir-putin/das-schwierige-verhaeltnis-merkel-putin-48351696.bildMobile.html

    http://m.diepresse.com/home/politik/aussenpolitik/5104051/index.do

    http://m.bild.de/politik/ausland/wladimir-putin/das-schwierige-verhaeltnis-merkel-putin-48351696.bildMobile.html

    https://www.welt.de/politik/deutschland/article158902830/Putin-provoziert-Europa-mit-der-Wahl-seines-Tischnachbarn.html

    http://m.bild.de/politik/ausland/wladimir-putin/das-schwierige-verhaeltnis-merkel-putin-48351696.bildMobile.html

    http://m.spiegel.de/politik/deutschland/a-1117181.html#spRedirectedFrom=www&referrrer=https://www.google.at/-1117181.html#spRedirectedFrom=www&referrrer=https://www.google.at/


    2016-10-17

    Got many spams from magyardomain last days

    Delivered-To: heinrichelsigan@mail
    Received: by 10.103.128.150 with SMTP id b144csp183855vsd;
            Fri, 14 Oct 2016 07:42:20 -0700 (PDT)
    X-Received: by 10.28.133.202 with SMTP id h193mr5795470wmd.85.1476456140232;
            Fri, 14 Oct 2016 07:42:20 -0700 (PDT)
    Return-Path: 
    Received: from mail.dgbmail.eu (mailto.dgbmail.eu. [87.229.51.250])
            by mx.google.com with ESMTPS id hd9si25509736wjc.88.2016.10.14.07.42.19
            for 
            (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
            Fri, 14 Oct 2016 07:42:20 -0700 (PDT)
    Received-SPF: pass (google.com: best guess record for domain of root@mail.dgbmail.eu designates 87.229.51.250 as permitted sender) client-ip=87.229.51.250;
    Authentication-Results: mx.google.com;
           spf=pass (google.com: best guess record for domain of root@mail.dgbmail.eu designates 87.229.51.250 as permitted sender) smtp.mailfrom=root@mail.dgbmail.eu
    Received: from root by mail.dgbmail.eu with local (Exim 4.84) (envelope-from ) id 1bv3gh-0005R4-OW for heinrichelsigan@.com; Fri, 14 Oct 2016 16:42:19 +0200
    Received: from apache by mail.dataglobe.eu with local (Exim 4.86) (envelope-from [apache mail.dataglobe.eu=""]) id 1bv3g7-0003UM-Iu for heinrichelsigan@mail; Fri, 14 Oct 2016 14:41:43 +0000
    X-Provider-Server: no-user-x110
    X-Provider-Path: /MAGYARDOMAIN/WEB/metronic/theme_rtl/assets/global/plugins/ckeditor/plugins/flash/images
    To: heinrichelsigan@mail
    Subject: B@ng Me Tonight
    X-Provider-IP: 89.212.78.219
    Date: Fri, 14 Oct 2016 16:41:43 +0200
    From: Julie Owens [julie_owens clicks.net=""]
    Message-ID: [3e8a73cf1c642dcd2d9a3993a6814756 clicks.net=""]
    X-Priority: 3
    MIME-Version: 1.0
    Content-Type: multipart/alternative; boundary="b1_3e8a73cf1c642dcd2d9a3993a6814756"
    Content-Transfer-Encoding: 8bit
    Sender: apache mail.dataglobe.eu=""
    
    --b1_3e8a73cf1c642dcd2d9a3993a6814756
    Content-Type: text/plain; charset=us-ascii
    
    I apologize, but can we ... f@ck?
    
    Watch me m@sturbating on the sofa
    
    Spank my rack for your pleasure!
    
    [ http://woodandstonefloors.co.uk/css.php?i=142&dBTkDgan=VVmVWWkXRZp&Qn=Aeu&5=6njeQ ] My photos for your pleasure
    
    See you soon!
    
    
    --b1_3e8a73cf1c642dcd2d9a3993a6814756--
    

    Results returned from whois.arin.net:
    #
    # ARIN WHOIS data and services are subject to the Terms of Use
    # available at: https://www.arin.net/whois_tou.html
    
    87.229.51.250 is from Hungary (HU) in region Eastern Europe
    Input: 87.229.51.250
    canonical name: mailto.dgbmail.eu
    Registered Domain: dgbmail.eu
    
    87.229.51.250 is from Hungary (HU) in region Eastern Europe
    Whois query for 87.229.51.250...
    
    Domain dgbmail.eu
    
    Registrant:
    NOT DISCLOSED!
    Visit www.eurid.eu for webbased whois.
    
    Technical:
    Name Dataglobe Technical staff
    Organisation Dataglobe Zrt
    Language hu
    Phone +36.18088230
    Fax +36.19980206
    Email info@dataglobe.eu
    
    Registrar:
    Name Magyar Domain Ltd
    Website http://www.magyardomain.eu/
    
    Name servers:
    ns0.dataglobe.eu
    ns2.dataglobe.eu
    
    Please visit www.eurid.eu for more info.
    


    2016-09-15

    BND und die Massenüberwachung durch Deutschland

    Tja, laut Tweet von Edward Snowden heute
    https://twitter.com/Snowden/status/776446609794011137
    gibt es ein gewaltiges Problem mit Massenüberwachung in Deutschland durch den Staat.


    Netzpolitik berichtet hier auf Englisch darüber.
    https://netzpolitik.org/2016/secret-report-german-federal-intelligence-service-bnd-violates-laws-by-the-dozen/

    Laut fefe.de ist aber das de Maziere zu wenig
    http://blog.fefe.de/?ts=a92794ba

    und er will die Überwachung noch weiter ausbauen!


    2016-06-05

    A new approach on monetarisation, when remixing copy left

    Some years ago, I guess sometime between late 2009 and early 2014, I was so free to remix several artworks and popular scientific explanations from others founders to visualize relationships between subprime market crisis in the US and the problems of the countries of the € zone with all the rumor, demonstrations, civil unrests inside Europe. I mixed music from The KLF in (who called them self "Kopyright Liberation Front" and who excessivly remixed samples of other artists.)



    I didn't enable the monetization switch at YouTube on this remix video, because I didn't find it fair, that all gain would be transferred to me alone.
    Rather I would prefer a model, where every artists involced in this remix would receive shares from monetarisation proportionately to time his or her part was mixed in.

    2016-04-22

    AWSSDK Demo Sample in C# .NET

    This article just shows, how to use some basic functions of the Amazon WebServices SDK under C# .NET with Visual Studio 2013

    Pre-requesties: 



    /*******************************************************************************
    * Copyright 2009-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
    *
    * Licensed under the Apache License, Version 2.0 (the "License"). You may
    * not use this file except in compliance with the License. A copy of the
    * License is located at
    *
    * http://aws.amazon.com/apache2.0/
    *
    * or in the "license" file accompanying this file. This file is
    * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    * KIND, either express or implied. See the License for the specific
    * language governing permissions and limitations under the License.
    *******************************************************************************/

    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.Configuration;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading;

    using Amazon;
    using Amazon.EC2;
    using Amazon.EC2.Model;
    using Amazon.EC2.Util;

    using Amazon.IdentityManagement;
    using Amazon.IdentityManagement.Model;

    using Amazon.Auth.AccessControlPolicy;
    using Amazon.Auth.AccessControlPolicy.ActionIdentifiers;

    using Amazon.S3;
    using Amazon.S3.Model;
    using Amazon.S3.Util;

    namespace AwsEC2Sample1
    {
        /// <summary>
        /// This sample shows how to launch an Amazon EC2 instance with a PowerShell script that is executed when the
        /// instance becomes available and access Amazon S3.
        /// </summary>
        class Program
        {      

            static readonly string RESOURCDE_POSTFIX = DateTime.Now.Ticks.ToString();
            static readonly string SAMPLE_PREFIX = AWSConfigSettings.AWSSamplePrefix;
            static readonly string SAMPLE_NAME = SAMPLE_PREFIX +
                DateTime.Now.ToShortDateString() + "_" + DateTime.Now.ToShortTimeString().Replace(":", ".");
            static readonly string SAMPLE_LONG_UNIQUE_NAME = SAMPLE_PREFIX + RESOURCDE_POSTFIX;
            const bool CREATE_AND_SAVE_KEY_PAIR = true;


            public static void Main(string[] args)
            {

                string awsProfileName = AWSConfigSettings.AWSProfileName;

                AmazonEC2Config config = new AmazonEC2Config();
                config.ServiceURL = AWSConfigSettings.AWSServiceUrl;
                Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(awsProfileName);
                // AmazonEC2Client ec2Client = new AmazonEC2Client(credentials, config);
                AmazonEC2Client ec2Client = new AmazonEC2Client();

                var bucketName = SAMPLE_LONG_UNIQUE_NAME;           

                // Get latest 2012 Base AMI
                var imageId = ImageUtilities.FindImage(ec2Client, ImageUtilities.WINDOWS_2012_BASE).ImageId;
                Console.WriteLine("Using Image ID: {0}", imageId);

                // Create an IAM role
                var instanceProfileArn = CreateInstanceProfile();
                Console.WriteLine("Created Instance Profile: {0}", instanceProfileArn);

                Thread.Sleep(15000);

                // Check existing keypairs
                string keyPairName = SAMPLE_LONG_UNIQUE_NAME;

                var dkpRequest = new DescribeKeyPairsRequest();
                var dkpResponse = ec2Client.DescribeKeyPairs(dkpRequest);
                List<KeyPairInfo> myKeyPairs = dkpResponse.KeyPairs;
                foreach (KeyPairInfo item in myKeyPairs)
                {
                    Console.WriteLine("Existing key pair: " + item.KeyName);
                }

                // Create new KeyPair
                KeyPair newKeyPair = null;
                CreateKeyPairRequest newKeyRequest = new CreateKeyPairRequest() { KeyName = keyPairName };
                CreateKeyPairResponse ckpResponse = ec2Client.CreateKeyPair(newKeyRequest);
                // store the received new Key  
                newKeyPair = ckpResponse.KeyPair;
                Console.WriteLine();
                Console.WriteLine("New key: " + keyPairName);
                Console.WriteLine("fingerprint: " + newKeyPair.KeyFingerprint);
                Console.WriteLine();
                // Save the private key in a .pem file
                using (FileStream s = new FileStream(keyPairName + ".pem", FileMode.Create))
                {
                    using (StreamWriter writer = new StreamWriter(s))
                    {
                        writer.WriteLine(newKeyPair.KeyMaterial);
                        Console.WriteLine(newKeyPair.KeyMaterial);
                    }
                }

                string secGroupId = string.Empty;
                // Create new security Group
                try
                {
                    HttpStatusCode createSecGrCode = CreateSecurityGroup(ec2Client, ref secGroupId);
                }
                catch (AmazonEC2Exception ae)
                {
                    if (string.Equals(ae.ErrorCode, "InvalidGroup.Duplicate", StringComparison.InvariantCulture))
                        Console.WriteLine(ae.Message);
                    else throw;
                }

                // add ip ranges
                String ipSource = "0.0.0.0/0";
                List<String> ipRanges = new List<String>();
                ipRanges.Add(ipSource);

                List<IpPermission> ipPermissions = new List<IpPermission>();
                IpPermission tcpSSH = new IpPermission() { IpProtocol = "tcp", FromPort = 22, ToPort = 22, IpRanges = ipRanges };
                ipPermissions.Add(tcpSSH);
                IpPermission tcpHTTP = new IpPermission() { IpProtocol = "tcp", FromPort = 80, ToPort = 80, IpRanges = ipRanges };
                ipPermissions.Add(tcpHTTP);
                IpPermission tcpHTTPS = new IpPermission() { IpProtocol = "tcp", FromPort = 443, ToPort = 443, IpRanges = ipRanges };
                ipPermissions.Add(tcpHTTPS);
                IpPermission tcpMYSQL = new IpPermission() { IpProtocol = "tcp", FromPort = 3306, ToPort = 3306, IpRanges = ipRanges };
                ipPermissions.Add(tcpMYSQL);
                IpPermission tcpRDP = new IpPermission() { IpProtocol = "tcp", FromPort = 3389, ToPort = 3389, IpRanges = ipRanges };
                ipPermissions.Add(tcpRDP);

                try
                {
                    // Authorize the ports to be used.

                    AuthorizeSecurityGroupIngressRequest ipPermissionsRequest = new AuthorizeSecurityGroupIngressRequest();
                    ipPermissionsRequest.IpPermissions = ipPermissions;
                    ipPermissionsRequest.GroupName = SAMPLE_NAME;
                    if (!string.IsNullOrEmpty(secGroupId)) {
                        ipPermissionsRequest.GroupId = secGroupId;
                    }
                    AuthorizeSecurityGroupIngressResponse authResp = ec2Client.AuthorizeSecurityGroupIngress(ipPermissionsRequest);
                    
                    Console.WriteLine("Auth SecurityGroup Request HttpStatusCode " + authResp.HttpStatusCode + " ");
                    Console.WriteLine(authResp.ResponseMetadata);
                }
                catch (AmazonEC2Exception ae)
                {
                    if (String.Equals(ae.ErrorCode, "InvalidPermission.Duplicate", StringComparison.InvariantCulture))
                        Console.WriteLine(ae.Message);
                    else
                        throw;
                }

                // run ec2 instance request with existing or new generated keypair
                var runRequest = new RunInstancesRequest
                {
                    ImageId = imageId,
                    MinCount = 1,
                    MaxCount = 1,
                    KeyName = newKeyPair.KeyName, //keyPair.KeyName,
                    IamInstanceProfile = new IamInstanceProfileSpecification { Arn = instanceProfileArn },                           
                       
                    // Add the region for the S3 bucket and the name of the bucket to create
                    UserData = EncodeToBase64(
                        string.Format(
                            AWSConfigSettings.POWERSHELL_S3_BUCKET_SCRIPT,
                            AWSConfigSettings.AWSRegionEndpoint.SystemName,
                            bucketName)
                        )
                };

                // add secGroupId
                if (!string.IsNullOrEmpty(secGroupId)) {
                    runRequest.SecurityGroupIds.Add(secGroupId);
                }
               
                var instanceId = ec2Client.RunInstances(runRequest).Reservation.Instances[0].InstanceId;
                Console.WriteLine("Launch Instance {0}", instanceId);


                // Create the name tag
                ec2Client.CreateTags(new CreateTagsRequest
                {
                    Resources = new List<string> { instanceId },
                    Tags = new List<Amazon.EC2.Model.Tag> { new Amazon.EC2.Model.Tag { Key = "Name", Value = "Processor" } }
                });
                Console.WriteLine("Adding Name Tag to instance");

                // create ElastiCache Cluster
                try
                {
                    Amazon.ElastiCache.AmazonElastiCacheConfig eCacheConfig = new Amazon.ElastiCache.AmazonElastiCacheConfig();
                    eCacheConfig.ServiceURL = AWSConfigSettings.AWSServiceUrl;
                    Amazon.ElastiCache.AmazonElastiCacheClient eCacheClient = new Amazon.ElastiCache.AmazonElastiCacheClient();
                    // List<string> x = new List<string>();
                    // x.Add(secGroupId);
                    // Amazon.ElastiCache.Model.CreateCacheClusterRequest eCacheReq = new Amazon.ElastiCache.Model.CreateCacheClusterRequest(
                    //    "cache-cluster" + SAMPLE_NAME, 2, "cache.t2.medium", "memcached", x);
                    Amazon.ElastiCache.Model.CreateCacheClusterRequest eCacheReq = new Amazon.ElastiCache.Model.CreateCacheClusterRequest(
                                        "Christian", 2, "cache.t2.medium", "memcached", new List<string>());
                   
                    Amazon.ElastiCache.Model.CreateCacheClusterResponse eCacheResp = eCacheClient.CreateCacheCluster(eCacheReq);
                    Console.WriteLine("Cache Cluster Created" + eCacheResp.HttpStatusCode.ToString());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }

                // rds client
                Amazon.RDS.AmazonRDSConfig rdsConf = new Amazon.RDS.AmazonRDSConfig();
                rdsConf.ServiceURL = AWSConfigSettings.AWSServiceUrl;
                Amazon.RDS.AmazonRDSClient rdsClient = new Amazon.RDS.AmazonRDSClient();
               
                // create Database Cluster with aurora DB
                string dbClusterIdentifier = string.Empty;
                try
                {
                    Amazon.RDS.Model.DBCluster createdCluster =
                        CreateDBClusterRDS(rdsClient, SAMPLE_NAME, "aurora", "root", SAMPLE_LONG_UNIQUE_NAME, secGroupId, ref dbClusterIdentifier);
                    Console.WriteLine("Created DBCluster with Id " + createdCluster.DBClusterIdentifier);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }

                Console.WriteLine("Waiting for EC2 Instance to stop");
                // The script put in the user data will shutdown the instance when it is complete.  Wait
                // till the instance has stopped which signals the script is done so the instance can be terminated.
                Instance = null;
                var instanceDescribeRequest = new DescribeInstancesRequest { InstanceIds = new List<string> { instanceId } };
                do
                {
                    Thread.Sleep(10000);
                    instance = ec2Client.DescribeInstances(instanceDescribeRequest).Reservations[0].Instances[0];

                    if (instance.State.Name == "stopped")
                    {
                        // Demonstrate how to get the Administrator password using the keypair.
                        var passwordResponse = ec2Client.GetPasswordData(new GetPasswordDataRequest
                        {
                            InstanceId = instanceId
                        });

                        // Make sure we actually got a password
                        if (passwordResponse.PasswordData != null)
                        {
                            var password = passwordResponse.GetDecryptedPassword(newKeyPair.KeyMaterial);
                            Console.WriteLine("The Windows Administrator password is: {0}", password);
                        }
                    }
                } while (instance.State.Name == "pending" || instance.State.Name == "running");


                // Terminate instance
                Console.WriteLine("Terminate Instances " + instanceId.ToString());
                ec2Client.TerminateInstances(new TerminateInstancesRequest
                {
                    InstanceIds = new List<string>() { instanceId }
                });

                // Delete key pair created for sample.
                Console.WriteLine("Delete KeyPair " + newKeyPair.KeyName);
                ec2Client.DeleteKeyPair(new DeleteKeyPairRequest { KeyName = newKeyPair.KeyName });
               
                try
                {
                    var s3Client = new AmazonS3Client();
                    var listResponse = s3Client.ListObjects(new ListObjectsRequest
                    {
                        BucketName = bucketName
                    });
                    if (listResponse.S3Objects.Count > 0)
                    {
                        Console.WriteLine("Found results file {0} in S3 bucket {1}", listResponse.S3Objects[0].Key, bucketName);
                    }

                    // Delete bucket created for sample.
                    AmazonS3Util.DeleteS3BucketWithObjects(s3Client, bucketName);
                    Console.WriteLine("Deleted S3 bucket created for sample.");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }

                // delete DB Cluster
                try
                {
                    HttpStatusCode delClusterStatus = DeleteDBClusterRDS(rdsClient, dbClusterIdentifier);
                    Console.WriteLine("Delete Cluster Request with Id " + dbClusterIdentifier + " returned " + delClusterStatus.ToString());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }


                Thread.Sleep(1000);

                Console.WriteLine("Delete Instance Profile created for sample.");
                DeleteInstanceProfile();

                // delete Security Group

                try
                {
                    HttpStatusCode delSecGroupStatus = DeleteSecurityGroup(ec2Client, secGroupId);
                    Console.WriteLine("Delete SecurityGroup " + secGroupId + " returned " + delSecGroupStatus.ToString());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }


                Console.WriteLine("Instance terminated, push enter to exit the program");
                Console.Read();

            }


            /// <summary>
            /// CreateSecurityGroup
            /// </summary>
            /// <param name="ref ec2Client"></param>
            /// <param name="secGroupId"></param>
            /// <returns>HttpStatusCode</returns>
            static HttpStatusCode CreateSecurityGroup(AmazonEC2Client ec2Client, ref string secGroupId)
            {
                CreateSecurityGroupRequest securityGroupRequest = new CreateSecurityGroupRequest();
                securityGroupRequest.GroupName = SAMPLE_NAME;
                securityGroupRequest.Description = SAMPLE_LONG_UNIQUE_NAME;
                CreateSecurityGroupResponse secRes = ec2Client.CreateSecurityGroup(securityGroupRequest);
                Console.WriteLine("Created security Group with GroupId " + secRes.GroupId);

                secGroupId = secRes.GroupId;
                Console.WriteLine(secRes.ResponseMetadata);
                return secRes.HttpStatusCode;
            }

            /// <summary>
            /// CreateDBClusterRDS
            /// </summary>
            /// <param name="rdsClient"></param>
            /// <param name="databaseName"></param>
            /// <param name="databaseEngine"></param>
            /// <param name="MasterUsername"></param>
            /// <param name="MasterUserPassword"></param>
            /// <param name="secGroupId"></param>
            /// <param name="ref dbClusterIdentifier"></param>
            /// <returns></returns>
            static Amazon.RDS.Model.DBCluster CreateDBClusterRDS(Amazon.RDS.AmazonRDSClient rdsClient,
                string databaseName,
                string databaseEngine,
                string MasterUsername,
                string MasterUserPassword,
                string secGroupId, ref string dbClusterIdentifier)
            {
                Amazon.RDS.Model.CreateDBClusterRequest createClusterReq = new Amazon.RDS.Model.CreateDBClusterRequest();
                createClusterReq.DatabaseName = databaseName;
                createClusterReq.DBClusterIdentifier = dbClusterIdentifier;
                createClusterReq.Engine = databaseEngine;
                if (!string.IsNullOrEmpty(secGroupId))
                {
                    createClusterReq.VpcSecurityGroupIds.Add(secGroupId);
                }
                createClusterReq.MasterUserPassword = MasterUserPassword;
                createClusterReq.MasterUsername = MasterUsername;

                Amazon.RDS.Model.CreateDBClusterResponse createClusterResp = rdsClient.CreateDBCluster(createClusterReq);
                Amazon.RDS.Model.DBCluster createdCluster = createClusterResp.DBCluster;
                dbClusterIdentifier = createdCluster.DBClusterIdentifier;
                return createdCluster;
            }

            /// <summary>
            /// DeleteDBClusterRDS
            /// </summary>
            /// <param name="rdsClient">Amazon.RDS.AmazonRDSClient</param>
            /// <param name="dbClusterIdentifier">Identifier of RDS DatabaseCluster 2 delete</param>
            /// <returns>HttpStatusCode</returns>
            static HttpStatusCode DeleteDBClusterRDS(Amazon.RDS.AmazonRDSClient rdsClient, string dbClusterIdentifier)
            {
                if (!string.IsNullOrEmpty(dbClusterIdentifier))
                {
                    throw new ArgumentException("Null or Empty DBClusterIdentifier which is needed for Amazon.RDS.Model.DeleteDBClusterRequest", "string dbClusterIdentifier");
                }
                Console.WriteLine("Deleting DeleteDBClusterRDS with identifier " + dbClusterIdentifier);
                Amazon.RDS.Model.DeleteDBClusterRequest delClusterReq = new Amazon.RDS.Model.DeleteDBClusterRequest();
                delClusterReq.DBClusterIdentifier = dbClusterIdentifier;
                Amazon.RDS.Model.DeleteDBClusterResponse delClusterResp = rdsClient.DeleteDBCluster(delClusterReq);
                return delClusterResp.HttpStatusCode;
            }

            /// <summary>
            /// DeleteSecurityGroup
            /// </summary>
            /// <param name="ec2Client">EC2Client</param>
            /// <param name="securityGroupId">Identifier of SecurityGroup 2 delete</param>
            /// <returns>HttpStatusCode</returns>
            static HttpStatusCode DeleteSecurityGroup(AmazonEC2Client ec2Client, string securityGroupId)
            {
                if (!string.IsNullOrEmpty(securityGroupId))
                {
                    throw new ArgumentException("Null or Empty securityGroupId which is needed for Amazon.EC2.Model.DeleteSecurityGroupRequest", "string securityGroupId");
                }
                Console.WriteLine("Deleting SecurityGroup " + securityGroupId);
                DeleteSecurityGroupRequest delSecGroupReq = new DeleteSecurityGroupRequest();
                delSecGroupReq.GroupId = securityGroupId;
                DeleteSecurityGroupResponse delSecGroupResp = ec2Client.DeleteSecurityGroup(delSecGroupReq);
                return delSecGroupResp.HttpStatusCode;
            }

            /// <summary>
            /// Create instance profile & grant EC2 instance requesting S3 bucket
            /// </summary>
            /// <returns></returns>
            static string CreateInstanceProfile()
            {
                var roleName = SAMPLE_NAME;
                var client = new AmazonIdentityManagementServiceClient();
                client.CreateRole(new CreateRoleRequest
                {
                    RoleName = roleName,
                    AssumeRolePolicyDocument = @"{""Statement"":[{""Principal"":{""Service"":[""ec2.amazonaws.com""]},""Effect"":""Allow"",""Action"":[""sts:AssumeRole""]}]}"
                });

                var statement = new Amazon.Auth.AccessControlPolicy.Statement(
                    Amazon.Auth.AccessControlPolicy.Statement.StatementEffect.Allow);
                statement.Actions.Add(S3ActionIdentifiers.AllS3Actions);
                statement.Resources.Add(new Resource("*"));

                var policy = new Policy();
                policy.Statements.Add(statement);

                client.PutRolePolicy(new PutRolePolicyRequest
                {
                    RoleName = roleName,
                    PolicyName = "S3Access",
                    PolicyDocument = policy.ToJson()
                });

                var response = client.CreateInstanceProfile(new CreateInstanceProfileRequest
                {
                    InstanceProfileName = roleName
                });

                client.AddRoleToInstanceProfile(new AddRoleToInstanceProfileRequest
                {
                    InstanceProfileName = roleName,
                    RoleName = roleName
                });

                return response.InstanceProfile.Arn;
            }

            /// <summary>
            /// Delete the instance profile created for the sample.
            /// </summary>
            static void DeleteInstanceProfile()
            {
                var roleName = SAMPLE_NAME;
                var client = new AmazonIdentityManagementServiceClient();

                client.DeleteRolePolicy(new DeleteRolePolicyRequest
                {
                    RoleName = roleName,
                    PolicyName = "S3Access"
                });

                client.RemoveRoleFromInstanceProfile(new RemoveRoleFromInstanceProfileRequest
                {
                    InstanceProfileName = roleName,
                    RoleName = roleName
                });

                client.DeleteRole(new DeleteRoleRequest
                {
                    RoleName = roleName
                });

                client.DeleteInstanceProfile(new DeleteInstanceProfileRequest
                {
                    InstanceProfileName = roleName
                });
            }

            static string EncodeToBase64(string str)
            {
                byte[] toEncodeAsBytes = System.Text.Encoding.UTF8.GetBytes(str);
                string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
                return returnValue;
            }
        }

        /// <summary>
        /// AWSConfigSettings Helper Facade
        /// </summary>
        internal static class AWSConfigSettings
        {      
            const string PROTO = "https://";
            const string DOMAIN = "amazonaws.com"; //amazonaws.com
            const char DOT = '.';

            /// <summary>
            /// PowerShell script for creating S3 bucket and allowing write access to it
            /// </summary>
            internal const string POWERSHELL_S3_BUCKET_SCRIPT =
                 "<powershell>\n" +
                    "Import-Module \"C:\\Program Files (x86)\\AWS Tools\\PowerShell\\AWSPowerShell\\AWSPowerShell.psd1\"\n" +
                    "Set-DefaultAWSRegion {0}\n" +
                    "New-Item C:\\Windows\\Temp -type directory\n" +
                    "Add-Content -path C:\\Windows\\Temp\\s3-bucket-results.txt -value \"Results from lots of data processing\"\n" +
                    "New-S3Bucket -BucketName {1}\n" +
                    "Write-S3Object -BucketName {1} -File C:\\Windows\\Temp\\s3-bucket-results.txt -Key results.txt\n" +
                    "shutdown.exe /s\n" +
                "</powershell>";
          
            /// <summary>
            /// Gets AWSAppSettings from Configuration
            /// </summary>
            internal static NameValueCollection AWSAppSettings
            {
                get {
                    return System.Configuration.ConfigurationManager.AppSettings;
                }
            }

            /// <summary>
            /// Gets value stored at AWSAppSettings[key]
            /// </summary>
            /// <param name="key">key string from KeyValuePair of Configuration AppSettings</param>
            /// <returns>value string</returns>
            internal static string AWSConfigGetKey(string key)
            {
                string awsValue = null;
                foreach (var nextKey in AWSConfigSettings.AWSAppSettings.Keys)
                {
                    if (nextKey.ToString() == key)
                    {
                        awsValue = AWSConfigSettings.AWSAppSettings.Get(key);
                        if (!string.IsNullOrEmpty(awsValue))
                        {
                            return awsValue;
                        }
                        throw new ConfigurationErrorsException(
                            String.Format("AWSConfigSettings.AWSAppSettings[\"{0}\"] returns null or void Value", key),
                            new NullReferenceException(String.Format("AWSConfigSettings.AWSAppSettings[\"{0}\"] is \'\\0\' || \"\"", key))
                        );
                    }
                }

                throw new ConfigurationErrorsException(
                    String.Format("AWSConfigSettings.AWSAppSettings[\"{0}\"] contains no key {1} not found inside <configuration>[...]<appSettings>[...]", key, key),
                    new NullReferenceException(String.Format("AWSConfigSettings.AWSAppSettings[\"{0}\"] is \'\\0\' (null)", key))
                    );
            }

            /// <summary>
            /// Gets AWSProfileName from ConfigSettings
            /// </summary>
            public static string AWSProfileName
            {
                get {
                    return AWSConfigSettings.AWSConfigGetKey("AWSProfileName");
                }
            }

            /// <summary>
            /// Gets AWSRegion from ConfigSettings
            /// </summary>
            public static string AWSRegion
            {
                get
                {
                    string region = "eu-central-1";
                    try
                    {
                        region = AWSConfigSettings.AWSConfigGetKey("AWSRegion");
                    }
                    catch (Exception)
                    {
                        region = "ap-southeast-2";
                    }
                    return region;
                }
            }

            /// <summary>
            /// Gets Amazon.RegionEndpoint from ConfigSettings
            /// </summary>
            public static Amazon.RegionEndpoint AWSRegionEndpoint
            {
                get {
                    string compareRegion = AWSConfigSettings.AWSRegion.Replace("_", string.Empty).ToLower();
                    foreach (Amazon.RegionEndpoint endpoint in Amazon.RegionEndpoint.EnumerableAllRegions)
                    {
                        if ((endpoint.DisplayName.ToLower() == AWSConfigSettings.AWSRegion.Replace("_", string.Empty).ToLower()) ||
                            (endpoint.SystemName.ToLower() == AWSConfigSettings.AWSRegion.Replace("_", string.Empty).ToLower()) ||
                            (endpoint.ToString().ToLower() == AWSConfigSettings.AWSRegion.Replace("_", string.Empty).ToLower()))
                        {
                            return endpoint;
                        }
                    }
                    return Amazon.RegionEndpoint.EUWest1;
                }
            }

            /// <summary>
            /// Gets AWSServiceUrl from ConfigSettings
            /// </summary>
            public static String AWSServiceUrl
            {
                get {
                    string serviceUrl = String.Concat(
                        PROTO.ToString(),
                        AWSConfigSettings.AWSRegion,
                        ((DOMAIN[0] != DOT) ? DOT.ToString() : string.Empty),
                        DOMAIN.ToString()
                        );
                    return serviceUrl;
                }
            }

            /// <summary>
            /// Gets AWSServiceUri from ConfigSettings
            /// </summary>
            public static Uri AWSServiceUri
            {
                get {
                    return (new Uri(AWSConfigSettings.AWSServiceUrl, UriKind.Absolute));
                }
            }

            /// <summary>
            /// Gets AWSSamplePrefix from Configuration
            /// </summary>
            public static string AWSSamplePrefix
            {
                get
                {
                    return AWSConfigSettings.AWSConfigGetKey("AWSSamplePrefix");
                }

            }

            /// <summary>
            /// Gets AWSAccessKey from Configuration
            /// </summary>
            public static string AWSAccessKey
            {
                get {
                    return AWSConfigSettings.AWSConfigGetKey("AWSAccessKey");
                }
            }

            /// <summary>
            /// Gets AWSSecretKey from Configuration
            /// </summary>
            public static string AWSSecretKey
            {
                get
                {
                    return AWSConfigSettings.AWSConfigGetKey("AWSSecretKey");
                }
            }

        }

    }



    Ҁ and ү.