Help
RSS
API
Feed
Maltego
Contact
Domain > simon-hardy.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-06-20
52.64.92.246
(
ClassC
)
2025-01-25
3.24.2.11
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: awselb/2.0Date: Sat, 25 Jan 2025 08:06:12 GMTContent-Type: text/htmlContent-Length: 134Connection: keep-aliveLocation: https://simon-hardy.com:443/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sat, 25 Jan 2025 08:06:12 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: Kestrel !DOCTYPE html>html langen>head> meta charsetutf-8 /> meta nameviewport contentwidthdevice-width, initial-scale1.0 /> title>Home - simon-hardy.com/title> link relpreconnect hrefhttps://fonts.googleapis.com /> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin /> link hrefhttps://fonts.googleapis.com/css2?familyComfortaa:wght@300;400;500;600;700&familyIndie+Flower&familyPlus+Jakarta+Sans:wght@300;400;500;600;700&displayswap relstylesheet> link relstylesheet href/lib/bootstrap/dist/css/bootstrap.min.css /> link relstylesheet href/css/site.css?vALNw2BezjXT2IhCBvaZJXhYh5ahwwFTgJJukTz9DEWk /> link relstylesheet href/SimonHardyDotComV3.styles.css?vncpYTTmezya-d59yV2yLKWg9p77k5O_7TPb7Hi5t3IA /> link href/css/prism.css relstylesheet /> script srchttps://kit.fontawesome.com/e89b0d7bef.js crossoriginanonymous>/script> link relapple-touch-icon sizes180x180 href/apple-touch-icon.png /> link relicon typeimage/png sizes32x32 href/favicon-32x32.png /> link relicon typeimage/png sizes16x16 href/favicon-16x16.png /> link relmanifest href/site.webmanifest /> script async src//www.instagram.com/embed.js>/script>/head>body> header> nav b-zqynooe2ds classnavbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3> div b-zqynooe2ds classcontainer-fluid> a classnavbar-brand href/>Simon Hardy/a> button b-zqynooe2ds classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target.navbar-collapse aria-controlsnavbarSupportedContent aria-expandedfalse aria-labelToggle navigation> span b-zqynooe2ds classnavbar-toggler-icon>/span> /button> /div> /nav> /header> div b-zqynooe2ds classcontainer> main b-zqynooe2ds rolemain classpb-3> div classmain-title>Simon Hardy/div>div classsocial-icons> a hrefhttps://www.facebook.com/simon.hardy.23 target_blank>i classfa-brands fa-facebook fa-beat style--fa-animation-iteration-count: 1;>/i>/a> a hrefhttps://www.instagram.com/simonhardy target_blank>i classfa-brands fa-instagram fa-beat style--fa-animation-iteration-count: 1; --fa-animation-delay: 1s>/i>/a> a hrefhttps://www.twitter.com/simon_hardy target_blank>i classfa-brands fa-twitter fa-beat style--fa-animation-iteration-count: 1; --fa-animation-delay: 2s>/i>/a> a hrefhttps://www.linkedin.com/in/simonhardy target_blank>i classfa-brands fa-linkedin fa-beat style--fa-animation-iteration-count: 1; --fa-animation-delay: 3s>/i>/a>/div>div classcontainer> div classrow> div classcol-lg-9 col-md-12> h1>Posts/h1> h2 b-o2kg5805lp> a b-o2kg5805lp href/post/image-url-references-using-primeng-editor> Image URL References using PrimeNG Editor /a>/h2>div b-o2kg5805lp> div b-o2kg5805lp> span b-o2kg5805lp classpermalink>a b-o2kg5805lp href/post/image-url-references-using-primeng-editor>Permalink/a>/span> span b-o2kg5805lp classspacer>|/span> span b-o2kg5805lp classtags> Tags: span b-o2kg5805lp classtag>development/span> /span> /div> div b-o2kg5805lp classdate>Posted: Thursday, 01 June 2017/div> div b-o2kg5805lp> span b-o2kg5805lp>Share:/span> !-- AddToAny BEGIN --> span b-o2kg5805lp> a b-o2kg5805lp hrefhttps://www.addtoany.com/share#urlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&titleImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/a2a.svg width24 height24 stylebackground-color:royalblue>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/facebook?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/facebook.svg width24 height24 stylebackground-color: rgb(35, 116, 225)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/twitter?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/twitter.svg width24 height24 stylebackground-color: rgb(29, 155, 240)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/linkedin?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/linkedin.svg width24 height24 stylebackground-color: rgb(0, 96, 151)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/reddit?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/reddit.svg width24 height24 stylebackground-color: rgb(255, 69, 0)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/whatsapp?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/whatsapp.svg width24 height24 stylebackground-color:green>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/google_gmail?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/gmail.svg width24 height24 stylebackground-color: rgb(217, 48, 37)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/email?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/email.svg width24 height24 stylebackground-color:darkorange>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/copy_link?linkurlhttp://simon-hardy.com:80/post/image-url-references-using-primeng-editor&linknameImage URL References using PrimeNG Editor target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/link.svg width24 height24 stylebackground-color:darkgrey>/a> /span> !-- AddToAny END --> /div>/div>div b-o2kg5805lp classextract>/div> div b-o2kg5805lp classcontent>p>Under the covers the PrimeNG Editor uses Quill (a hrefhttps://quilljs.com target_blank relnoopener>https://quilljs.com/a>), which is a JavaScript WYSIWYG editor. Quill itself has a shortcoming in that it only allows you to insert Base64 encoded images directly into the HTML source by default./p>p>To change this behaviour you can get a reference in the page to Quill and then override the Image button handler, however in Angular 2 we need to do this in the controller which is a bit different (though not much)./p>p>In the controller create an event handler for the PrimeNG Editors onInit event, which at its most basic will be a prompt:/p>pre classlanguage-javascript>code>editorInit(event) { const quill event.editor; const toolbar quill.getModule(toolbar); toolbar.addHandler(image, () > { const range quill.getSelection(); const value prompt(What is the image URL); quill.insertEmbed(range.index, image, value, ); });}/code>/pre>p> /p>p>Then in the view add the event handler to the control:/p>pre classlanguage-markup>code><p-editor namecontent formControlNamecontent style{height:320px} (onInit)editorInit($event) placeholderContent>/code>/pre>p>Now when you click the Insert Image button, you should be shown a prompt, which you can now replace with anything you like to capture the URL./p>/div> hr /> h2 b-o2kg5805lp> a b-o2kg5805lp href/post/install-docker-on-linux-mint-18> Install Docker on Linux Mint 18 /a>/h2>div b-o2kg5805lp> div b-o2kg5805lp> span b-o2kg5805lp classpermalink>a b-o2kg5805lp href/post/install-docker-on-linux-mint-18>Permalink/a>/span> span b-o2kg5805lp classspacer>|/span> span b-o2kg5805lp classtags> Tags: span b-o2kg5805lp classtag>docker/span> /span> /div> div b-o2kg5805lp classdate>Posted: Tuesday, 12 July 2016/div> div b-o2kg5805lp> span b-o2kg5805lp>Share:/span> !-- AddToAny BEGIN --> span b-o2kg5805lp> a b-o2kg5805lp hrefhttps://www.addtoany.com/share#urlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&titleInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/a2a.svg width24 height24 stylebackground-color:royalblue>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/facebook?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/facebook.svg width24 height24 stylebackground-color: rgb(35, 116, 225)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/twitter?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/twitter.svg width24 height24 stylebackground-color: rgb(29, 155, 240)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/linkedin?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/linkedin.svg width24 height24 stylebackground-color: rgb(0, 96, 151)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/reddit?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/reddit.svg width24 height24 stylebackground-color: rgb(255, 69, 0)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/whatsapp?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/whatsapp.svg width24 height24 stylebackground-color:green>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/google_gmail?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/gmail.svg width24 height24 stylebackground-color: rgb(217, 48, 37)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/email?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/email.svg width24 height24 stylebackground-color:darkorange>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/copy_link?linkurlhttp://simon-hardy.com:80/post/install-docker-on-linux-mint-18&linknameInstall Docker on Linux Mint 18 target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/link.svg width24 height24 stylebackground-color:darkgrey>/a> /span> !-- AddToAny END --> /div>/div>div b-o2kg5805lp classextract>/div> div b-o2kg5805lp classcontent>p>Happily this is largely the same as for Ubuntu 16.04 Xenial Xerus. The official steps are available a hrefhttps://docs.docker.com/engine/installation/linux/ubuntulinux/ target_blank relnoopener>here/a>./p>pre classlanguage-markup>code>sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates -ysudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609Dsudo echo deb https://apt.dockerproject.org/repo ubuntu-xenial main >> /etc/apt/sources.list.d/docker.listsudo apt-get updatesudo apt-get purge lxc-dockersudo apt-get install linux-image-extra-$(uname -r) -ysudo apt-get install docker-engine cgroup-lite apparmor -ysudo usermod -a -G docker $USERsudo service docker start/code>/pre>p>Happy Dockering!/p>/div> hr /> h2 b-o2kg5805lp> a b-o2kg5805lp href/post/running-the-nexus-3-docker-container-with-ssl> Running the Nexus 3 Docker Container with SSL /a>/h2>div b-o2kg5805lp> div b-o2kg5805lp> span b-o2kg5805lp classpermalink>a b-o2kg5805lp href/post/running-the-nexus-3-docker-container-with-ssl>Permalink/a>/span> span b-o2kg5805lp classspacer>|/span> span b-o2kg5805lp classtags> Tags: span b-o2kg5805lp classtag>docker/span> /span> /div> div b-o2kg5805lp classdate>Posted: Saturday, 18 June 2016/div> div b-o2kg5805lp> span b-o2kg5805lp>Share:/span> !-- AddToAny BEGIN --> span b-o2kg5805lp> a b-o2kg5805lp hrefhttps://www.addtoany.com/share#urlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&titleRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/a2a.svg width24 height24 stylebackground-color:royalblue>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/facebook?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/facebook.svg width24 height24 stylebackground-color: rgb(35, 116, 225)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/twitter?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/twitter.svg width24 height24 stylebackground-color: rgb(29, 155, 240)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/linkedin?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/linkedin.svg width24 height24 stylebackground-color: rgb(0, 96, 151)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/reddit?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/reddit.svg width24 height24 stylebackground-color: rgb(255, 69, 0)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/whatsapp?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/whatsapp.svg width24 height24 stylebackground-color:green>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/google_gmail?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/gmail.svg width24 height24 stylebackground-color: rgb(217, 48, 37)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/email?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/email.svg width24 height24 stylebackground-color:darkorange>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/copy_link?linkurlhttp://simon-hardy.com:80/post/running-the-nexus-3-docker-container-with-ssl&linknameRunning the Nexus 3 Docker Container with SSL target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/link.svg width24 height24 stylebackground-color:darkgrey>/a> /span> !-- AddToAny END --> /div>/div>div b-o2kg5805lp classextract>p>Well that was harder than it needed to be. Better write this down while its fresh./p>p>The container itself does not run with SSL, so you have to use a reverse proxy to do that for you./p>p>Heres how to do it.../p>/div> div b-o2kg5805lp classcontent>h2>Create a Docker Network/h2>p>Well use this to allow our Nexus container to talk to our NGINX SSL Proxy container./p>pre classlanguage-bash>code>docker network create my-nexus-network/code>/pre>h2>Run the Nexus Docker Container/h2>p>Nothing too fancy here:/p>pre classlanguage-bash>code>docker pull sonatype/nexus3docker run -d -p 8081:8081 --name nexus sonatype/nexus3 --netmy-nexus-network/code>/pre>p>em>strong>Note:/strong> You probably want to run a volume to hold the nexus repository data outside your container for ease of updating - and yknow reboots. Thats all explained a titleNexus 3 Dockerhub hrefhttps://hub.docker.com/r/sonatype/nexus3/ target_blank relnoopener>here/a> under Persistent Data.br>/em>/p>h2>Create an NGINX Proxy Container/h2>p>Copy your SSL .crt and .key files to your host machine along with this nginx.conf:/p>pre classlanguage-nginx>code>user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { log_format main $remote_addr - $remote_user $time_local $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; access_log /var/log/nginx/access.log main; proxy_send_timeout 120; proxy_read_timeout 300; proxy_buffering off; keepalive_timeout 5 5; tcp_nodelay on; server { listen 80; server_name your.domain.com; return 301 https://$server_name$request_uri; } server { listen *:443 ssl; server_name your.domain.com; # allow large uploads of files - refer to nginx documentation client_max_body_size 1024m; # optimize downloading files larger than 1G - refer to nginx doc before adjusting #proxy_max_temp_file_size 2048m ssl on; ssl_certificate /etc/nginx/ssl.crt; ssl_certificate_key /etc/nginx/ssl.key; location / { proxy_pass http://nexus:8081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } }}/code>/pre>p>From here, run:/p>pre classlanguage-markup>code>docker run --name nginx-proxy -v host-path-to/nginx.conf:/etc/nginx/nginx.conf:ro -v host-path-to/ssl.key:/etc/nginx/ssl.key:ro -v host-path-to/ssl.crt:/etc/nginx/ssl.crt:ro -p 443:443 -p 80:80 --netmy-nexus-network -d nginx/code>/pre>p>Thats it./p>h2>Key Points/h2>p>After much, much trying:/p>ol>li>Nexus seems to only work properly with an SSL reverse proxy on port 443 with redirects from port 80/li>li>Nexus seems to have to be at the root, there can be no subfolders/li>/ol>/div> hr /> h2 b-o2kg5805lp> a b-o2kg5805lp href/post/simple-steps-to-securing-your-ubuntu-linux-vps> Simple Steps to Securing Your Ubuntu Linux VPS /a>/h2>div b-o2kg5805lp> div b-o2kg5805lp> span b-o2kg5805lp classpermalink>a b-o2kg5805lp href/post/simple-steps-to-securing-your-ubuntu-linux-vps>Permalink/a>/span> span b-o2kg5805lp classspacer>|/span> span b-o2kg5805lp classtags> Tags: /span> /div> div b-o2kg5805lp classdate>Posted: Wednesday, 03 December 2014/div> div b-o2kg5805lp> span b-o2kg5805lp>Share:/span> !-- AddToAny BEGIN --> span b-o2kg5805lp> a b-o2kg5805lp hrefhttps://www.addtoany.com/share#urlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&titleSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/a2a.svg width24 height24 stylebackground-color:royalblue>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/facebook?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/facebook.svg width24 height24 stylebackground-color: rgb(35, 116, 225)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/twitter?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/twitter.svg width24 height24 stylebackground-color: rgb(29, 155, 240)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/linkedin?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/linkedin.svg width24 height24 stylebackground-color: rgb(0, 96, 151)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/reddit?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/reddit.svg width24 height24 stylebackground-color: rgb(255, 69, 0)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/whatsapp?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/whatsapp.svg width24 height24 stylebackground-color:green>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/google_gmail?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/gmail.svg width24 height24 stylebackground-color: rgb(217, 48, 37)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/email?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/email.svg width24 height24 stylebackground-color:darkorange>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/copy_link?linkurlhttp://simon-hardy.com:80/post/simple-steps-to-securing-your-ubuntu-linux-vps&linknameSimple Steps to Securing Your Ubuntu Linux VPS target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/link.svg width24 height24 stylebackground-color:darkgrey>/a> /span> !-- AddToAny END --> /div>/div>div b-o2kg5805lp classextract>p>Now Microsoft have announced that .NET will be officially supported on Linux platforms more of us Windows leaning folks will start to dabble in those platforms. Securing Linux servers is very different to what were used to and with no point and click interface to help guide us it is important to have a quickstart./p>p>These steps are aimed at newbies to the Linux shell to get started with a more secure VPS than you are given out of the box by your hosting provider. strong>Solely following these steps is not a silver bullet!/strong>/p>/div> div b-o2kg5805lp classcontent>h2>General Principles/h2>h3>Staying Up to Date/h3>p>Most of your dependencies will come through a hrefhttp://aptitude.alioth.debian.org/doc/en/ target_blank relnoopener>aptitude/a>, to update your local index of dependencies type:/p>pre classlanguage-bash>code>sudo apt-get update/code>/pre>p>Upgrading the dependencies themselves is done by entering:/p>pre classlanguage-bash>code>sudo apt-get upgrade -ysudo apt-get dist-upgrade -y/code>/pre>p>As with your smartphone, if you go outside of the aptitude channel make sure you trust the source you are downloading packages from./p>h3>Stopping Unused Services/h3>p>To display all running processes enter the following at the shell prompt:/p>pre classlanguage-bash>code>ps aux/code>/pre>p>You will get an output that appears like:/p>pre>USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDbr>root 1 0.0 0.4 33508 2268 ? Ss Nov30 0:02 /sbin/initbr>root 2 0.0 0.0 0 0 ? S Nov30 0:00 kthreaddbr>root 3 0.0 0.0 0 0 ? S Nov30 0:00 ksoftirqd/0br>root 5 0.0 0.0 0 0 ? S< Nov30 0:00 kworker/0:0Hbr>root 7 0.0 0.0 0 0 ? S Nov30 0:09 rcu_schedbr>root 8 0.0 0.0 0 0 ? R Nov30 0:07 rcuos/0br>root 9 0.0 0.0 0 0 ? S Nov30 0:00 rcu_bhbr>root 10 0.0 0.0 0 0 ? S Nov30 0:00 rcuob/0br>root 11 0.0 0.0 0 0 ? S Nov30 0:00 migration/0br>root 12 0.0 0.0 0 0 ? S Nov30 0:01 watchdog/0/pre>p>Some entries in the list will be just one off processes, some will be daemons. If any are running that you dont recognise you can look them up in a search engine and stop them using the command:/p>pre classlanguage-bash>code>kill <<PID>>/code>/pre>h2>Limiting Access/h2>p>The first steps you should take are to limit access to your new server./p>h3>UFW (Uncomplicated Firewall)/h3>p>The easiest way to limit access to the server is by utilising UFW, which is really just a wrapper around a hrefhttps://en.wikipedia.org/wiki/Iptables target_blank relnoopener>iptables/a> the Linux kernel firewall./p>p>If UFW is not already installed install it with:/p>pre classlanguage-bash>code>sudo apt-get install ufw -y/code>/pre>p>You are most probably connecting via SSH, so enable that:/p>pre classlanguage-bash>code>sudo ufw limit ssh/code>/pre>p>Instead of ssh you can put the port number you have switch SSH to./p>p>Next, enable ports for the services you are going to run on the server, for example http and https would be:/p>pre classlanguage-bash>code>sudo ufw allow httpsudo ufw allow https/code>/pre>p>To enable the firewall type:/p>pre classlanguage-bash>code>sudo ufw enable/code>/pre>p>Checking the status of UFW is as easy as:/p>pre classlanguage-bash>code>sudo ufw status/code>/pre>p>Youll notice that UFW has added rules for both IPv4 and IPv6./p>h3>Fail2ban/h3>p>If Fail2ban is not already installed install it with:/p>pre classlanguage-bash>code>sudo apt-get install fail2ban -y/code>/pre>p>Next you have to copy the jail configuration to create a local copy:/p>pre classlanguage-bash>code>sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local/code>/pre>p>At this point you might want to edit the configuration file to set parameters for the jail:/p>pre classlanguage-bash>code>sudo nano /etc/fail2ban/jail.local/code>/pre>p>This will launch the a hrefhttp://www.nano-editor.org/ target_blank relnoopener>nano editor/a>. Some settings you might want to change are:/p>pre classlanguage-bash>code>ignoreip 127.0.0.1/8 <<ADD YOUR STATIC IP HERE>>bantime <<THE NUMBER OF SECONDS TO BAN AN IP ADDRESS FOR>>findtime <<THE NUMBER OF SECONDS TO CACHE A BANNED IP FOR REMATCHING>>maxretry <<THE NUMBER OF FAILED LOGINS TO BAN AFTER>>/code>/pre>p>To exit and save use Ctrl+x, y and Enter./p>p>Next well integrate with the a hrefhttps://www.badips.com/ target_blank relnoopener>badips.com/a> service to track and map where any intrusions originate, in the shell type:/p>pre classlanguage-bash>code>wget -q -O - http://www.badips.com/get/key/code>/pre>p>This will return a json document with a key attribute, copy this attribute somewhere for future reference. The key will be associated with your VPS by badpis.com. Next execute the following command:/p>pre classlanguage-bash>code>sudo nano /etc/fail2ban/action.d/iptables-multiport.conf/code>/pre>p>Find the actionban option, which should look something like:/p>pre classlanguage-bash>code>actionban iptables -I fail2ban-<name> l -s <ip> -j <blocktype>/code>/pre>p>Change the option to read:/p>pre classlanguage-bash>code>actionban iptables -I fail2ban-<name> l -s <ip> -j <blocktype> wget -q -o /dev/null www.badips.com/add/<name>/<ip>/code>/pre>p> /p>p>You can review your badips.com stats page at https://www.badips.com/stats?key<key>. There are a few interesting reports available here, such as where attackers are originating their calls and the number of calls that are making it through to your VPS as opposed to those that are being dropped as malicious./p>p>Finally for Fail2ban, we will use a badips list to keep IPTables up to date with a list of malicious IPs. a hrefhttp://www.timokorthals.de/?p334 target_blank relnoopener>This post/a> by Timo Korthals details two approaches to this, we will be using the second one. Copy the script into a new shell script file called badips4iptables. If we wanted to execute the script once we would enter:/p>pre classlanguage-bash>code>sudo sh badips4iptables/code>/pre>p>We actually want the script to run on a schedule, so we will add this script to the daily a hrefhttps://en.wikipedia.org/wiki/Cron target_blank relnoopener>cron/a> folder to run this task daily, at the shell prompt enter:/p>pre classlanguage-bash>code>cp badips4iptables /etc/cron.daily//code>/pre>p>Now we want to ensure that the file has the right permissions:/p>pre classlanguage-bash>code>sudo chmod ugo+rx /etc/cron.daily/badips4iptables/code>/pre>p>To check that the script will now run execute the following command and check that badips4iptables is in the resulting list:/p>pre classlanguage-bash>code>run-parts --test /etc/cron.daily/code>/pre>h3>Use Key Authentication/h3>p>Usually when you fire up a VPS you are given a root user and a password. Even if you are assigned a key, such as with DigitalOcean, usually there will be a password generated and password authentication still accepted by the server./p>p>Generating a certificate on a Windows system is easy using a program such as PuTTYgen, which comes bundled with a hrefhttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html target_blank relnoopener>PuTTY/a>. Once you load PuTTYgen its as easy as clicking the Generate button, adding a passphrase to the Private Key and then saving both the Private Key and Public Key./p>p>em>Protip: If you are using a non-US layout keyboard steer clear of special characters that are in different positions, such as the on a GB keyboard, as may VPS terminals wont respect these./em>/p>p>To add the Public Key to the server, open the ~/.ssh/authorized_keys file from the shell by entering:/p>pre classlanguage-bash>code>sudo nano ~/.ssh/authorized_keys/code>/pre>p>Add the Public Key text from the file you saved (or from PuTTYgen itself if it is still open) as a single line in the file and save it by entering Ctrl+x, y, Enter./p>p>At this point it would be a good idea to exit your SSH session and attempt to reconnect using your Private Key. To do this, start PuTTY. In the dialog you want to enter your VPS IP address, navigate to Connection -> Data in the tree and enter your username (usually root) and finally navigate to Connection -> SSH -> Auth and load your Private Key file. Once you have done all of that, click Open and enter your Private Key passphrase in the terminal window. If you are successful you should see a shell prompt./p>p>To disable password authentication over SSH you need to edit the sshd_config file. To edit the file from the prompt enter:/p>pre classlanguage-bash>code>sudo nano /etc/ssh/sshd_config/code>/pre>p>Either find the line saying:/p>pre classlanguage-bash>code>PasswordAuthentication yes/code>/pre>p>And change it to, or add a new line:/p>pre classlanguage-bash>code>PasswordAuthentication no/code>/pre>p>To test that your SSH configuration is valid enter:/p>pre classlanguage-bash>code>sudo service ssh reload -t/code>/pre>p>If no errors are shown, reboot your VPS./p>h2>Further Steps/h2>h3>Intrusion Detection/h3>p>There are many options here such as a hrefhttp://www.tripwire.org/ target_blank relnoopener>Tripwire Open Source/a> that will monitor and alert file system changes./p>h3>File Permissions/h3>p>As in the Windows world it is not a good idea to give total access to administrative accounts on a Linux VPS. Especially if you are web hosting, ensure that the www-data (or similar) user does not have access to write or execute critical files on the system./p>/div> hr /> h2 b-o2kg5805lp> a b-o2kg5805lp href/post/backup-and-restore-from-sqlitenet> Backup and Restore from SQLite.Net /a>/h2>div b-o2kg5805lp> div b-o2kg5805lp> span b-o2kg5805lp classpermalink>a b-o2kg5805lp href/post/backup-and-restore-from-sqlitenet>Permalink/a>/span> span b-o2kg5805lp classspacer>|/span> span b-o2kg5805lp classtags> Tags: span b-o2kg5805lp classtag>c#/span> /span> /div> div b-o2kg5805lp classdate>Posted: Monday, 02 September 2013/div> div b-o2kg5805lp> span b-o2kg5805lp>Share:/span> !-- AddToAny BEGIN --> span b-o2kg5805lp> a b-o2kg5805lp hrefhttps://www.addtoany.com/share#urlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&titleBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/a2a.svg width24 height24 stylebackground-color:royalblue>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/facebook?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/facebook.svg width24 height24 stylebackground-color: rgb(35, 116, 225)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/twitter?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/twitter.svg width24 height24 stylebackground-color: rgb(29, 155, 240)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/linkedin?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/linkedin.svg width24 height24 stylebackground-color: rgb(0, 96, 151)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/reddit?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/reddit.svg width24 height24 stylebackground-color: rgb(255, 69, 0)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/whatsapp?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/whatsapp.svg width24 height24 stylebackground-color:green>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/google_gmail?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/gmail.svg width24 height24 stylebackground-color: rgb(217, 48, 37)>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/email?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/email.svg width24 height24 stylebackground-color:darkorange>/a> a b-o2kg5805lp hrefhttps://www.addtoany.com/add_to/copy_link?linkurlhttp://simon-hardy.com:80/post/backup-and-restore-from-sqlitenet&linknameBackup and Restore from SQLite.Net target_blank>img b-o2kg5805lp srchttps://static.addtoany.com/buttons/link.svg width24 height24 stylebackground-color:darkgrey>/a> /span> !-- AddToAny END --> /div>/div>div b-o2kg5805lp classextract>p>Without a server process to run maintenance tasks, applications that use SQLite to store data must perform those tasks themselves. Backup and restore is the most commonly needed of these tasks. So Ill cover how I do that here./p>/div> div b-o2kg5805lp classcontent>h2>Backup/h2>h3>API Support/h3>p>SQLite.net provides an API method on a SQLiteConnection object to perform the SQLite backup operation./p>p>In order to call this method you need to pass the following parameters: /p>ul>li>destination - An open SQLiteConnection for the destination database; /li>li>destinationName - main to backup to the main database file, temp to backup to the temporary database file, or the name specified after the AS keyword in an ATTACH statement for an attached database;/li>li>sourceName - main to backup from the main database file, temp to backup from the temporary database file, or the name specified after the AS keyword in an ATTACH statement for an attached database;/li>li>pages - the number of pages on disk to back up with every iteration of the algorithm, -1 will backup the whole database in one iteration;/li>li>callback - a function that is called between every iteration, returns true to continue, or false to stop the algorithm;/li>li>retryMilliseconds - number of milliseconds to wait before retrying a failed iteration of the algorithm./li>/ul>h3>Extending with IObservable<T> and IObserver<T>/h3>p>The following class wraps the iterative algorithm within an IObservable<SqliteBackupEvent> object. The SqliteBackupEvent class just contains the properties returned to the callback:/p>pre classlanguage-csharp>code>public class SqliteBackup : IObservable<SqliteBackupEvent>{ private readonly List<IObserver<SqliteBackupEvent>> _observers; public SqliteBackup() { _observers new List<IObserver<SqliteBackupEvent>>(); } public void Execute( string sourceConnectionString, string destinationConnectionString, int pagesToBackupInEachStep) { try { using (var srcConnection new SQLiteConnection(sourceConnectionString)) using (var destConnection new SQLiteConnection(destinationConnectionString)) { srcConnection.Open(); destConnection.Open(); // Need to use the main names as specified at // http://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupinit srcConnection.BackupDatabase(destConnection, main, main, pagesToBackupInEachStep, Callback, 10); destConnection.Close(); srcConnection.Close(); } } catch (Exception ex) { foreach (var observer in _observers) observer.OnError(ex); } foreach (var observer in _observers) observer.OnCompleted(); } protected virtual bool Callback( SQLiteConnection srcConnection, string srcName, SQLiteConnection destConnection, string destName, int pages, int remaining, int pageCount, bool retry) { var @event new SqliteBackupEvent(pages, remaining, pageCount, retry); foreach (var observer in _observers) observer.OnNext(@event); return true; } public IDisposable Subscribe(IObserver<SqliteBackupEvent> observer) { if (!_observers.Contains(observer)) _observers.Add(observer); return new Unsubscriber(_observers, observer); } private class Unsubscriber : IDisposable { private readonly List<IObserver<SqliteBackupEvent>> _observers; private readonly IObserver<SqliteBackupEvent> _observer; public Unsubscriber( List<IObserver<SqliteBackupEvent>> observers, IObserver<SqliteBackupEvent> observer) { this._observers observers; this._observer observer; } public void Dispose() { if (_observer ! null && _observers.Contains(_observer)) _observers.Remove(_observer); } }}/code>/pre>p>For completeness the SqliteBackupEvent class should be:/p>pre classlanguage-csharp>code>public class SqliteBackupEvent{ public int Pages { get; private set; } public int Remaining { get; private set; } public int PageCount { get; private set; } public bool Retry { get; private set; } public SqliteBackupEvent(int pages, int remaining, int pageCount, bool retry) { Pages pages; Remaining remaining; PageCount pageCount; Retry retry; }}/code>/pre>p> /p>p>This can be used to update a GUI or some other form of output, such as logging, with the status of the backup operation: /p>pre classlanguage-csharp>code>public class ConsoleWriterObserver : IObserver<SqliteBackupEvent>{ public void OnNext(SqliteBackupEvent value) { Console.WriteLine( {0} - {1} - {2} - {3}, value.Pages, value.PageCount, value.Remaining, value.Retry); } public void OnError(Exception error) { Console.WriteLine(error.Message); } public void OnCompleted() { Console.WriteLine(Complete); }}/code>/pre>p> /p>p>The use of these classes in your appilcation then becomes something like:/p>pre classlanguage-csharp>code>const string srcConnectionString @Data Source.\data.db;Version3;;const string destConnectionString @Data Source.\newdata.db;Version3;;var backup new SqliteBackup();using (var unsubscriber backup.Subscribe(new ConsoleWriterObserver())) backup.Execute(srcConnectionString, destConnectionString, 50);Console.ReadLine();/code>/pre>p> /p>h2>Summary/h2>p>I hope someone finds this useful, leave a comment if you have a better way of achieving this./p>/div> /div> div classcol-lg-3 col-md-0 instagram-pictures container> div classrow> div classcol-12>blockquote classinstagram-media data-instgrm-captioned data-instgrm-permalinkhttps://www.instagram.com/p/ByAgXrUhNe4/?utm_sourceig_embed&utm_campaignloading data-instgrm-version14 style background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);>div stylepadding:16px;> a hrefhttps://www.instagram.com/p/ByAgXrUhNe4/?utm_sourceig_embed&utm_campaignloading style background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%; target_blank> div style display: flex; flex-direction: row; align-items: center;> div stylebackground-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;>/div> div styledisplay: flex; flex-direction: column; flex-grow: 1; justify-content: center;> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;>/div> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;>/div>/div>/div>div stylepadding: 19% 0;>/div> div styledisplay:block; height:50px; margin:0 auto 12px; width:50px;>svg width50px height50px viewBox0 0 60 60 version1.1 xmlnshttps://www.w3.org/2000/svg xmlns:xlinkhttps://www.w3.org/1999/xlink>g strokenone stroke-width1 fillnone fill-ruleevenodd>g transformtranslate(-511.000000, -20.000000) fill#000000>g>path dM556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631>/path>/g>/g>/g>/svg>/div>div stylepadding-top: 8px;> div style color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;>View this post on Instagram/div>/div>div stylepadding: 12.5% 0;>/div> div styledisplay: flex; flex-direction: row; margin-bottom: 14px; align-items: center;>div> div stylebackground-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);>/div> div stylebackground-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;>/div> div stylebackground-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);>/div>/div>div stylemargin-left: 8px;> div style background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;>/div> div style width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)>/div>/div>div stylemargin-left: auto;> div style width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);>/div> div style background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);>/div> div style width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);>/div>/div>/div> div styledisplay: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;>/div> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;>/div>/div>/a>/div>/blockquote>/div> /div> div classrow> div classcol-12>blockquote classinstagram-media data-instgrm-captioned data-instgrm-permalinkhttps://www.instagram.com/p/ByAgAsUBA-M/?utm_sourceig_embed&utm_campaignloading data-instgrm-version14 style background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);>div stylepadding:16px;> a hrefhttps://www.instagram.com/p/ByAgAsUBA-M/?utm_sourceig_embed&utm_campaignloading style background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%; target_blank> div style display: flex; flex-direction: row; align-items: center;> div stylebackground-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;>/div> div styledisplay: flex; flex-direction: column; flex-grow: 1; justify-content: center;> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;>/div> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;>/div>/div>/div>div stylepadding: 19% 0;>/div> div styledisplay:block; height:50px; margin:0 auto 12px; width:50px;>svg width50px height50px viewBox0 0 60 60 version1.1 xmlnshttps://www.w3.org/2000/svg xmlns:xlinkhttps://www.w3.org/1999/xlink>g strokenone stroke-width1 fillnone fill-ruleevenodd>g transformtranslate(-511.000000, -20.000000) fill#000000>g>path dM556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631>/path>/g>/g>/g>/svg>/div>div stylepadding-top: 8px;> div style color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;>View this post on Instagram/div>/div>div stylepadding: 12.5% 0;>/div> div styledisplay: flex; flex-direction: row; margin-bottom: 14px; align-items: center;>div> div stylebackground-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);>/div> div stylebackground-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;>/div> div stylebackground-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);>/div>/div>div stylemargin-left: 8px;> div style background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;>/div> div style width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)>/div>/div>div stylemargin-left: auto;> div style width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);>/div> div style background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);>/div> div style width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);>/div>/div>/div> div styledisplay: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;>/div> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;>/div>/div>/a>/div>/blockquote>/div> /div> div classrow> div classcol-12>blockquote classinstagram-media data-instgrm-captioned data-instgrm-permalinkhttps://www.instagram.com/p/ByAf6M_h6EL/?utm_sourceig_embed&utm_campaignloading data-instgrm-version14 style background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);>div stylepadding:16px;> a hrefhttps://www.instagram.com/p/ByAf6M_h6EL/?utm_sourceig_embed&utm_campaignloading style background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%; target_blank> div style display: flex; flex-direction: row; align-items: center;> div stylebackground-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;>/div> div styledisplay: flex; flex-direction: column; flex-grow: 1; justify-content: center;> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;>/div> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;>/div>/div>/div>div stylepadding: 19% 0;>/div> div styledisplay:block; height:50px; margin:0 auto 12px; width:50px;>svg width50px height50px viewBox0 0 60 60 version1.1 xmlnshttps://www.w3.org/2000/svg xmlns:xlinkhttps://www.w3.org/1999/xlink>g strokenone stroke-width1 fillnone fill-ruleevenodd>g transformtranslate(-511.000000, -20.000000) fill#000000>g>path dM556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631>/path>/g>/g>/g>/svg>/div>div stylepadding-top: 8px;> div style color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;>View this post on Instagram/div>/div>div stylepadding: 12.5% 0;>/div> div styledisplay: flex; flex-direction: row; margin-bottom: 14px; align-items: center;>div> div stylebackground-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);>/div> div stylebackground-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;>/div> div stylebackground-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);>/div>/div>div stylemargin-left: 8px;> div style background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;>/div> div style width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)>/div>/div>div stylemargin-left: auto;> div style width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);>/div> div style background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);>/div> div style width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);>/div>/div>/div> div styledisplay: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;>/div> div style background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;>/div>/div>/a>/div>/blockquote>/div> /div> /div> /div>/div> /main> /div> footer b-zqynooe2ds classfooter px-4> div b-zqynooe2ds classcontainer> © 2022 - Simon Hardy - a href/Home/Privacy>Privacy/a> - a b-zqynooe2ds href# idopen_preferences_center>Change your cookie preferences/a> /div> /footer> !-- Cookie Consent by TermsFeed Privacy Policy and Consent Generator https://www.TermsFeed.com --> script typetext/javascript srchttps://www.termsfeed.com/public/cookie-consent/4.0.0/cookie-consent.js charsetUTF-8>/script> script typetext/javascript charsetUTF-8>document.addEventListener(DOMContentLoaded, function () { cookieconsent.run({ notice_banner_type: simple, consent_type: express, palette: light, language: en, page_load_consent_levels: strictly-necessary, notice_banner_reject_button_hide: false, preferences_center_close_button_hide: false, page_refresh_confirmation_buttons: false, website_privacy_policy_url: https://www.simon-hardy.com/privacy }); });/script> noscript>ePrivacy and GPDR Cookie Consent management by a b-zqynooe2ds hrefhttps://www.TermsFeed.com/ relnofollow>TermsFeed Privacy Policy and Consent Generator/a>/noscript> !-- End Cookie Consent by TermsFeed Privacy Policy and Consent Generator https://www.TermsFeed.com --> script src/lib/jquery/dist/jquery.min.js>/script> script src/lib/bootstrap/dist/js/bootstrap.bundle.min.js>/script> script src/js/site.js?vZuuafqFPrVRBKcjc9nVnUgldbE3hS3GG5WeZxe6SIR0>/script> script src/js/prism.js data-manual>/script> script typetext/javascript>Prism.highlightAll();/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]