Kaynağa Gözat

修复密码中有单引号时的转义问题。 #255 #188

oldj 8 yıl önce
ebeveyn
işleme
46ad73d336
6 değiştirilmiş dosya ile 24 ekleme ve 10 silme
  1. 1 1
      .gitignore
  2. 14 0
      app/libs/safe-pswd.js
  3. 3 6
      app/server/apply.js
  4. 5 1
      app/server/sudo.js
  5. 0 1
      app/ui/bundle.js
  6. 1 1
      app/version.js

+ 1 - 1
.gitignore

@@ -5,7 +5,7 @@ src/build
 src/dist
 dist
 projectFilesBackup
-.DS_Store
+*.DS_Store
 tmp
 *.js.map
 

+ 14 - 0
app/libs/safe-pswd.js

@@ -0,0 +1,14 @@
+/**
+ * safe-pswd
+ * @author oldj
+ * @blog https://oldj.net
+ */
+
+'use strict'
+
+module.exports = pswd => {
+  return pswd
+    .replace(/\\/g, '\\\\')
+    //.replace(/'/g, "\\''")
+    .replace(/'/g, '\\x27')
+}

+ 3 - 6
app/server/apply.js

@@ -19,7 +19,7 @@ const md5File = require('md5-file')
 const applyAfter_Unix = require('./applyAfter_Unix')
 const platform = process.platform
 const svr = require('./svr')
-const version = require('../version').version.join('.')
+//const version = require('../version').version.join('.')
 
 let sudo_pswd = ''
 let lang = null
@@ -54,12 +54,8 @@ function apply_Unix (content, callback) {
           `cat "${tmp_fn}" > ${sys_hosts_path}`
           , `rm -rf ${tmp_fn}`
         ].join(' && ')
-      } else {
-
-        sudo_pswd = sudo_pswd
-          .replace(/'/g, '\\x27')
-          .replace(/\\/g, '\\\\')
 
+      } else {
         cmd = [
           `echo '${sudo_pswd}' | sudo -S chmod 777 ${sys_hosts_path}`
           , `cat "${tmp_fn}" > ${sys_hosts_path}`
@@ -71,6 +67,7 @@ function apply_Unix (content, callback) {
       return cmd
     })
     .then(cmd => {
+      //console.log('cmd: ' + cmd)
       exec(cmd, function (error, stdout, stderr) {
         // command output is in stdout
         if (!error) {

+ 5 - 1
app/server/sudo.js

@@ -7,14 +7,18 @@
 
 'use strict'
 
+const safePSWD = require('../libs/safe-pswd')
+
 module.exports = svr => {
 
   let _resolve
   let _reject
 
-  svr.once('sudo_pswd', (pswd) => {
+  svr.once('sudo_pswd', pswd => {
     svr.removeAllListeners('sudo_cancel')
+
     try {
+      pswd = safePSWD(pswd)
       _resolve(pswd)
     } catch (e) {
       console.log(e)

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 1
app/ui/bundle.js


+ 1 - 1
app/version.js

@@ -1 +1 @@
-exports.version = [3,3,7,5305];
+exports.version = [3,3,7,5306];

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor