hiro yamamoto works

ESP8266 Web logger
RaspberryPi HiRes Audio
Mini Solar power system
当ブログ掲載内容は無保証です。利用は自己責任でお願いいたします。

 

カレンダー

2020
July
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

QRコード

検索



このブログを検索

カウンター

本日のアクセス
昨日のアクセス
総アクセス数

ブログサービス

Powered by

teacup.ブログ
RSS

SDWebSarverスケッチでSD内特定ファイルを開かせない方法

問題解決できました。

スケッチ例SDWebSarverではSDメモリ内のファイルが
webブラウザで見えてしまいます。
SDメモリから設定ファイルを読み込んでWiFi接続
する方法では、SDメモリ内のファイルがwebブラウザ
で見えてしまうのはセキュリティー上の重大な問題となり
ます。
クリックすると元のサイズで表示します
たぶん例外なく見えてしまうので、設定ファイルに書かれた
SSID、Passwordが見えてしまうことになります。
これは解決しないとせっかくの便利な機能が使えません。

解決方法を検討しました。
・ファイルの関連付け(?)を"image/png"とか指定する方法
→開けなくなるが、ページのソースから見えてしまう。NG
・指定したファイルの時はファイルを開く処理をしない方法
→開けない&見えない。OK(採用)

Webページの表示はこのようになります。
クリックすると元のサイズで表示します

関連投稿
ESP-WROOM-02マイコン SDメモリから設定ファイルを読み込ん
でWiFi接続。


変更内容
スケッチ例SDWebServer内の関数に4行書き加えています。
開かせないファイルは /setup/setup.txt です。
編集した関数を掲載しました。(追加部分は表示あり)

掲載都合で行数を減らすための編集をしてるので、
オリジナルと違うところがありますが動作は変わりません。

bool loadFromSdCard(String path) {
String dataType = "text/plain";
if (path.endsWith("/")) path += "index.htm";
if (path.endsWith(".src")) path = path.substring(0, path.lastIndexOf("."));
else if (path.endsWith(".htm")) dataType = "text/html";
else if (path.endsWith(".css")) dataType = "text/css";
else if (path.endsWith(".js")) dataType = "application/javascript";
else if (path.endsWith(".png")) dataType = "image/png";
else if (path.endsWith(".gif")) dataType = "image/gif";
else if (path.endsWith(".jpg")) dataType = "image/jpeg";
else if (path.endsWith(".ico")) dataType = "image/x-icon";
else if (path.endsWith(".xml")) dataType = "text/xml";
else if (path.endsWith(".pdf")) dataType = "application/pdf";
else if (path.endsWith(".zip")) dataType = "application/zip";//行数減のために省略編集したのでオリジナルと違っています。
if (path == "/setup/setup.txt") {//追加部分 setup.txtを開かせない
server.send(404, "text/plain", "");//追加部分
} else { //追加部分
File dataFile = SD.open(path.c_str());
if (dataFile.isDirectory()) {
path += "/index.htm";
dataType = "text/html";
dataFile = SD.open(path.c_str());
}
if (!dataFile) {
return false;
}
if (server.hasArg("download")) {
dataType = "application/octet-stream";
}
if (server.streamFile(dataFile, dataType) != dataFile.size()) {
DBG_OUTPUT_PORT.println("Sent less data than expected!");
}
dataFile.close();
return true;
}//追加部分
}


関数loadFromSdCard()部分の抜粋なので
これだけでは動作しません。

オリジナルのスケッチに追加部分をコピペするのが
良いと思います。

無保証自己責任でよろしくおねがいします。
0
投稿者:管理人

データロガーを温湿度計として使います。

自作データロガーをデジタル温湿度計として使っています。

肝心の温湿度表示が小さいので、直さないといけません。
クリックすると元のサイズで表示します

センサはAdafruit Si7021 Temperature & Humidity Sensor Breakout Boardです。
クリックすると元のサイズで表示します

センサ仕様
電源電圧:3.3 V or 5.0 V
3.3VレギュレーターとI2Cレベルシフタ搭載
計測範囲
湿度センサ:0〜80% RH
温度センサ:-10〜85℃
計測精度
湿度センサ:±3% RH(0〜80% RH)
温度センサ:±0.4℃(-10〜85℃)
I2Cインターフェース
寸法 :17.8 mm ×15.3 mm ×3.0 mm
センサ上部にある白い平らなものは、センサをきれいに保つ
ためのPTFEフィルタと書いてありました。

データロガー応用の温湿度計です。
家庭で使う温湿度計としては必要ない機能ですが
温湿度データをSDメモリへ記録しています。
ESP-WROOM-02マイコンを使っているので、
WiFi経由でデータへアクセスできます。

クリックすると元のサイズで表示します
0
投稿者:管理人
1 2 3 4 | 《前のページ | 次のページ》
/4 
 
AutoPage最新お知らせ