Добрый день мои хорошие
Несколько дней назад созрела мысль и на 90% реализовалась. Загвоздка в методе input (html).
И так имеем:
- Скрипт для выяснение локального IP
<script type="text/javascript">
// NOTE: window.RTCPeerConnection is "not a constructor" in FF22/23
var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (RTCPeerConnection) (function () {
var rtc = new RTCPeerConnection({iceServers:[]});
if (1 || window.mozRTCPeerConnection) { // FF [and now Chrome!] needs a channel/stream to proceed
rtc.createDataChannel('', {reliable:false});
};
rtc.onicecandidate = function (evt) {
// convert the candidate to SDP so we can run it through our general parser
// see https://twitter.com/lancestout/status/525796175425720320 for details
if (evt.candidate) grepSDP("a="+evt.candidate.candidate);
};
rtc.createOffer(function (offerDesc) {
grepSDP(offerDesc.sdp);
rtc.setLocalDescription(offerDesc);
}, function (e) { console.warn("offer failed", e); });
var addrs = Object.create(null);
addrs["0.0.0.0"] = false;
var addrss = Object.create(null);
addrss["0.0.0.0"] = false;
function updateDisplay(newAddr) {
if (newAddr in addrs) return;
else addrs[newAddr] = true;
var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });
if (displayAddrs[1]){
// document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";
document.getElementById('list').textContent = displayAddrs[1] || "n/a";}else{
document.getElementById('list').textContent = displayAddrs[0] || "n/a";}
}
function grepSDP(sdp) {
var hosts = [];
sdp.split('\r\n').forEach(function (line) { // c.f. http://tools.ietf.org/html/rfc4566#page-39
if (~line.indexOf("a=candidate")) { // http://tools.ietf.org/html/rfc4566#section-5.13
var parts = line.split(' '), // http://tools.ietf.org/html/rfc5245#section-15.1
addr = parts[4],
type = parts[7];
if (type === 'host') updateDisplay(addr);
} else if (~line.indexOf("c=")) { // http://tools.ietf.org/html/rfc4566#section-5.7
var parts = line.split(' '),
addr = parts[2];
updateDisplay(addr);
}
});
}
})(); else {
// document.getElementById('list').innerHTML = "<code>ifconfig | grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>";
document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";
}
</script>
- Форма авторизации с сайта для доступа в инет
<?php
$day_now=date('j');
$year_now=date('Y')-1900;
$mon_now=date('m')-1;
$ses1=$day_now.$mon_now.$year_now;
?>
<script type="text/javascript" src=/i/md5.js></script>
<form method=get action="/cgi-bin/stat.pl" onsubmit='pp.value=hex_md5(ses.value+" "+pp.value); return true'>
<input type=hidden name=ses value='<?php echo $ses1?>'>
<input type=hidden name=a value='98'>
<table class="text" style="color:424649l font-size:9px">
<tr><td align=center colspan=3><b>Auth</b></td></tr>
<tr><td align=left width='33%'>Login:</td><td><input type=text name=uu size=15 value='' tabindex=1></td>
<tr><td align=left width='33%'>Password:</td><td><input type=password name=pp size=15 value='' tabindex=2></td>
<tr><td align=center colspan=3><input type=submit value='Enter' tabindex=3></td></tr>
</table>
</form>
Никак не получается отправить узнанный IP через форму. Понятно, что результатом выполнения скрипта будет переменная, о которой сервер ничего не знает.
Вставить результат в форму тоже не получатся
<input type=text name=a value='<?php echo "<span id=list></span>"?>'>
и никакими другими способами тоже.
Подозреваю, что нужно преобразовать результат на стороне клиента в переменную и работать уже с ней. Но в скриптинге не силён
Милостиво прошу помощи в разрешении этой задачки