<!DOCTYPE html> <html lang="ha"> <head> <meta charset="UTF-8"> <title>Nishad - Raba Hotuna da Rubutu</title> <meta name="description" content="Nishad yana ba masu amfani damar raba hotuna da rubutu. Ziyarci shafin mu don samun sabbin abubuwa."> <meta name="keywords" content="Nishad, hotuna, rubutu, raba, shafin yanar gizo"> <meta name="robots" content="index, follow"> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<style>
body {
font-family: Arial, sans-serif;
}
header {
background-color: #4CAF50;
color: white;
text-align: center;
padding: 1em 0;
}
main {
padding: 20px;
}
#postForm {
margin-bottom: 20px;
}
#postsContainer {
display: flex;
flex-direction: column;
gap: 10px;
}
.post {
border: 1px solid #ccc;
padding: 10px;
background-color: #f9f9f9;
}
.likeButton, .editButton, .deleteButton, .commentButton {
background-color: #007bff;
color: white;
border: none;
padding: 5px 10px;
cursor: pointer;
margin-top: 10px;
margin-right: 5px;
}
.likeButton:hover, .editButton:hover, .deleteButton:hover, .commentButton:hover {
background-color: magenta;
}
.likeCount, .commentList {
margin-top: 5px;
font-weight: bold;
}
.commentInput {
display: none;
margin-top: 10px;
}
.comments {
margin-top: 10px;
}
.fileInput { display: none; } .fileInput { display: none; }
/* Gumaka*/
body { justify-content: center; / Tsara gumakan a tsakiya / align-items: center; / Tsara gumakan a tsakiya a tsaye / height: 100vh; / Tsawon jikin shafin / background: #f0f0f0; / Launin bango / margin: 0; / Cire margin / }
.icon-container {
display: flex; /* Amfani da flexbox don jera gumakan a layi guda */
gap: 20px; /* Sarari tsakanin gumakan */
}
.icon-container a {
text-decoration: none; /* Cire layin gado daga gumakan */
font-size: 40px; /* Girman gumakan */
}
.icon-container a:hover {
color: #007bff; /* Launin gumakan lokacin da aka hover */
}
/* i */
button {
background-image: linear-gradient(#dafa, rebeccapurple, dodgerblue, #badada);
}
i[class="fab fa-whatsapp"]
,[class="fa fa-phone"] {
width: 300;
height: 150;
color: #4CAF50;
background-image: linear-gradient(
cyan, rebeccapurple, blue, magenta ); }
i[class="fa fa-comment"]
,[class="fa fa-envelope"] {
color: #333;
width: 300;
height: 150;
background-image: linear-gradient(
cyan,
rebeccapurple,
blue, magenta
);
}
.icon-container {
display: flex;
gap: 15px; /* Domin tsari mai kyau */
}
.icon-container a { text-decoration: none; color: #333; / Launin gumakan / transition: transform 0.3s ease; / Motsin yana canza tsawon lokaci / }
.icon-container a:hover { transform: scale(1.2); / Wadannan gumakan suna girma idan aka zabe su / text-shadow: 0 0 10px rgba(0, 0, 0, 0.3); / Don ƙarin haske idan ana zaban / }
/ Optional: Motsi a hankali a lokacin da shafin ya loda / .icon-container a { animation: float 2s infinite ease-in-out; / Motsi na madauki / }
@keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-20px); / Motsi sama / } 100% { transform: translateY(0px); } } / A /
a { background-image: linear-gradient(
cyan,
rebeccapurple,
blue, magenta
);
}
</style>
</head> <body>
<div class="ad"> <h2>Tallace-tallace na Kai</h2> <a href="https://example.com" target="_blank"> <img src="Hotuna/Muhammadu.jpg" alt="Tallace-tallace" style="width: 100%; max-width: 300px;"> </a> </div>
<header>
<h1>Shafin Raba Hotuna da Rubutu</h1>
</header>
<h2>Maraba da Nishad!</h2> <p>Wannan shafin yana ba ku damar raba hotuna da rubutu tare da sauran masu amfani.</p>
<main> <form id="postForm"> <button type="button" class="chooseFileButton" onclick="document.getElementById('postImage').click()" style="font-size: 19px;"> <i style="font-size: 40px;" class="material-icons">camera</i><h1> Ɗauki Hoton</h1></button> <input type="file" id="postImage" name="camera" accept="image/" capture="camera" class="fileInput"> <button type="button" class="chooseFileButton" onclick="document.getElementById('postImage').click()" style="font-size: 19px;"> <i style="font-size: 40px;" class="material-icons">attachment</i><h1> Zaɓi Hoton</h1></button> <input type="file" id="postImage" accept="image/" class="fileInput"> <textarea id="postContent" placeholder="Rubuta abin da kake so..." required></textarea><button type="submit"><i style="font-size: 40px;;" class="material-icons">send</i></button> </form> <div id="postsContainer"></div> </main>
<script>
document.getElementById('postForm').addEventListener('submit', function(event) {
event.preventDefault();
const postContent = document.getElementById('postContent').value;
const postImage = document.getElementById('postImage').files[0];
const postDiv = document.createElement('div');
postDiv.classList.add('post');
const imageElement = document.createElement('img');
if (postImage) {
const reader = new <a href="/wiki/FileReader/">FileReader</a>();
reader.onload = function(e) {
imageElement.src = e.target.result;
imageElement.style.maxWidth = "100%";
postDiv.appendChild(imageElement);
};
reader.readAsDataURL(postImage);
}
const contentElement = document.createElement('p');
contentElement.textContent = postContent;
postDiv.appendChild(contentElement);
// Like button and count
const likeButton = document.createElement('button');
likeButton.innerHTML = '<i style="font-size:50px;" class="fa fa-thumbs-up"></i>'; // Gunki na "Like" tare da rubutu
likeButton.classList.add('likeButton');
const likeCount = document.createElement('div');
likeCount.classList.add('likeCount');
likeCount.textContent = 'Likes: 0';
let likes = 0; // Initialize likes count
likeButton.onclick = function() {
likes = (likes === 0) ? 1 : 0; // Toggle likes
likeCount.textContent = 'Likes: ' + likes; // Update likes count
};
postDiv.appendChild(likeButton);
postDiv.appendChild(likeCount);
// Comment section
const commentButton = document.createElement('button');
commentButton.innerHTML = '<i style="color: white;" class="fa fa-comment">Comment</i>';
commentButton.classList.add('commentButton');
postDiv.appendChild(commentButton);
const commentInput = document.createElement('input');
commentInput.type = 'text';
commentInput.placeholder = 'Rubuta sharhi...';
commentInput.classList.add('commentInput');
postDiv.appendChild(commentInput);
const commentList = document.createElement('div');
commentList.classList.add('comments');
postDiv.appendChild(commentList);
commentButton.onclick = function() {
commentInput.style.display = (commentInput.style.display === 'none' || commentInput.style.display === '') ? 'block' : 'none';
};
commentInput.addEventListener('keypress', function(event) {
if (event.key === 'Enter' && commentInput.value !== '') {
const commentElement = document.createElement('div');
commentElement.textContent = commentInput.value;
commentList.appendChild(commentElement);
commentInput.value = '';
}
});
// Edit button
const editButton = document.createElement('button');
editButton.textContent = '🛠️️ Gyara';
editButton.classList.add('editButton');
postDiv.appendChild(editButton);
editButton.onclick = function() {
contentElement.contentEditable = true;
contentElement.focus();
contentElement.addEventListener('blur', function() {
contentElement.contentEditable = false;
});
};
// Delete button
const deleteButton = document.createElement('button');
deleteButton.innerHTML = '<i class="fa fa-trash">Share</i>';
deleteButton.classList.add('deleteButton');
postDiv.appendChild(deleteButton);
deleteButton.onclick = function() {
postDiv.remove();
};
document.getElementById('postsContainer').prepend(postDiv);
document.getElementById('postForm').reset();
});
</script>
<h1>Domin Ƙarinn bayani</h1> <div class="icon-container"> <a href="mailto:yuktamyuktam1@gmail.com" aria-label="Email yuktamyuktam1@gmail.com"<i class="fa fa-envelope"></i> Email</a> <a href="tel:+218920517942" aria-label="Call phone +218920517942"><i class="fa fa-phone"></i> Call phone</a> <a href="smsto:+218920517942?body=message_text" aria-label="Send SMS to +218920517942"> <i class="fa fa-comment"></i> Message text </a> <a href="whatsapp://send?text=message_text&phone=+218920517942" aria-label="Send WhatsApp message to +218920517942"><i class="fab fa-whatsapp"></i> WhatsApp</a>
</body> </html>
Comments
Get:
/bin/nc: invalid option -- 'X'
when I try to connect.
nc -h shows no x-option!
Basically anything which will let you connect via. an HTTP proxy will work, you simply treat your PageKite hostname as the name of an HTTP proxy on port 443.
ProxyCommand /usr/bin/corkscrew %h 443 %h %p
nc: Proxy error: "HTTP/1.1 400 Bad request"
When I changed pagekite to listen on port 22, it worked.
Note that there are two port settings that matter. One is the port setting on your local computer, where the ssh daemon is listening. Usually that is 22, but sometimes people move it. The other is the "virtual port" which is sent in the HTTP CONNECT request to PageKite - that can be anything.
For example:
# If sshd listens on port 23 instead of 22
# SSH clients connect to foo.pagekite.me:22
pagekite localhost:23 raw://foo.pagekite.me
# config file: backend=raw-22:foo.pagekite.me:localhost:23:SECRET
# If sshd listens on the standard port 22
# SSH clients connect to foo.pagekite.me:23
pagekite localhost:22 raw://foo.pagekite.me:23
# config file: backend=raw-23:foo.pagekite.me:localhost:22:SECRET
Hope this helps!
Indeed it worked now, using your examples as references. I must have screwed up somewhere.
Thanks for your help!
I see no mention of this limitation, how can I avoid it?
I have seen this when pagekite is installed on a Linux host as well as a Mac host.
ssh_exchange_identification: Connection closed by remote host
ProxyCommand /bin/nc --proxy-type http --proxy %h:443 %h %p
When I follow the guide and do a:
$ pagekite.py --add 22 ssh:user.pagekite.me
on the server, I can connect with:
$ ssh user.pagekite.me
from my Linux client. Nothing more necessary. No port or anything on the client to specify.
Don't know if it is mentioned here. Couldn't gather that from the guide so I wrote it down for anybody having trouble to connect.
ssh://foo.pagekite.me:2222
does seem to do what I need when specified on the command line.
$ pagekite.py --add 22 ssh:user.pagekite.me
$ pagekite.py user.pagekite.me
>>> Hello! This is pagekite.py v0.5.6a. [CTRL+C = Stop]
Connecting to front-end 173.230.155.164:443 ...
- Protocols: http http2 http3 https websocket irc finger httpfinger raw
- Protocols: minecraft
- Ports: 79 80 443 843 2222 3000 4545 5222 5223 5269 5670 6667 8000 8080
- Ports: 8081 9292 25565
- Raw ports: 22 virtual
Quota: You have 17458.23 MB, 13 days and 6 connections left.
~<> Flying localhost:22 as ssh://user.pagekite.me:22/ (HTTP proxied)
<< pagekite.py [flying] Kites are flying and all is well.
$ ssh user.pagekite.me
ssh_exchange_identification: Connection closed by remote host
Of course i changed the user.pagekite.me with my own kite.
Question is how to connect with the client behind a (squid) proxy server..
ssh to a normal host through squid is also working (with corkscrew).
I can connect to the pagekite host from the proxy server, but can't figure out how to chain the PorxyCommand. Aslo tried tunneling with nc with no success.
thanks,
Bob
What am I doing wrong?
Connecting to foo.pagekite.me:22 via ssh
Connecting via proxy: foo.pagekite.me:443
Connection Lost
Failed to connect to HTTP Proxy.
Could you explain to me where I should set up a password(and user?) for kite when I connecting via ssh?
Can't figure out this.
Thank you in advance !
-----
Sashas-MacBook-Pro:~ Swift$ ssh foo.pagekite.me
Swift@foo.pagekite.me's password: "What is the password?"
Permission denied, please try again.
SSH worked flawlessly the first time, but we restarted the system and consistently get:
nc: Proxy error: "HTTP/1.0 503 Unavailable"
ssh_exchange_identification: Connection closed by remote host
the system claims to connect successfully to the front-end at 173.230.155.164:443
We can't figure out why it won't connect. any assistance would be great!
thanks,
Mathew
sshd[27863]: Unable to negotiate with 127.0.0.1 port 54484: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 [preauth]
is there any solution on the way?
Thanks, Michael
Looks like the ConnectBot solution doesn't work anymore.
Can't install it on Android 14 (Samsung Galaxy S23) because it's built for an older version of Android.
The patch submitted on gcode is gone, and that solution is 11 years old by now.
Is there a way to use the mosy recent version of ConnectBot?
Or does anyone have an alternative solution to SSH into pagekite using an Android phone?